【exe whitepaper】iotaまとめ資料
TRANSCRIPT
Blockchain EXE Whitepaper
みんなでブロックチェーン資料を読もう!
〜IOTA編〜
IOTAとは
2016年7月にローンチされた暗号通貨
送金手数料が無料なのでマイクロペイメントが可能。IoT機器間の送金ネットワークとして期待。
IOTAの読み方は「アイオータ」
1
IOTAの特徴
IOTA Bitcoin
構造
DAG(Tangle) Blockchain
データの更新方法 Proof of Work
データの更新者 送金者自身 マイナー
送金手数料 無料 有料
スケーラビリティ 有り 無し
量子コンピュータ耐性有り(Winternitz署名を採用)
無し
日本円レート(2018/1/9現在)
1IOTA = 0.0004円(取引所はM(メガ)単位で取引)
1BTC = 1,735,441円
発行上限と現在の枚数(2018/1/9現在)
上限:約2,780 兆 IOTA現在:上限と同じ
上限:約2,100 万 BTC現在:約1,679 万 BTC
2
私なりのTangleの理解
・ブロックサイズの上限は1MB
・ブロックの生成タイミングは約10分間隔
・莫大な計算問題を各マイナーに強いる
→二重支払いを抑止。一方でスケール出来ない
もう入れない・・・
Blockchainの特徴
ブロックなんて取っ払ったら、スケール問題解決するよ!!!
それやって、二重支払い防げるの?
ホワイトペーパー読めばOK(激ムズ)
3
IOTAのホワイトペーパーについて
タイトルが「The Tangle」と書いてあるとおり、IOTAのベースとなるTangleがいかに二重支払いを解決するかの数学的理論がメイン。 1章:システムの紹介と説明
2章:荷重 等
3章:システムの安定性とカット集合
3.1章:通常どれくらい早く累積荷重が成長するか?
4章:起こりうる攻撃シナリオ
4.1章:パラサイトチェーン攻撃と新しいチップ選択アルゴリズム
4.2章:分裂攻撃
5章:量子計算への耐性
エンジニアリング的な内容が知りたければ、下記のAbmushiさんの記事とか参考になります! IOTA:【入門】トランザクション大解剖!ウォレットは裏で何をやっているか。
https://qiita.com/ABmushi/items/e271ff05884a7d47658d
IOTA【技術解説】署名と承認。 - 改訂版https://qiita.com/ABmushi/items/422d1bf94be0c919583a
もっと詳しく知りたい方は、IOTAコミュニティに参加しよう(Discord)↓登録方法https://iotafan.jp/community/how_to_join-20170905
3章、4章が難解・・・
4
メモ:1.システムの紹介と説明
Full Node
Light Wallet Light Wallet Light Wallet
Full Node
Light Wallet Light Wallet Light Wallet
Tangleを同期 Tangleを同期 Tangleを同期
IOTAは、Full NodeとLight Walletで構成されている(Bitcoinに近い構成)。参考)https://iotasupport.com/walletknowledgebase.shtml
これがいわゆるウォレット。
IoT間のマイクロペイメント
もこれを組み込むイメージ。
Full Node
・Tangleのデータを持ち、他ノードと同期する必要がある。・発行されたTXの検証を行ない、2重支払いしているTXは排除している。・承認すべき2つのTXを特定のアルゴリズムで抽出 (現在はMCMCがベース)。・TXを発行する際、Bitcoin同様PoWを行なう。
Light Wallet・Full Nodeに接続し、承認すべき2つのTXを取得。・TXを発行する際、Bitcoin同様PoWを行なう。
※WPで「ノード」はFull Nodeの事を指している。(Light Walletは言及してない)
5
補足:ノードを立てるモチベーション
ノードの信頼性を確認する必要が無い 企業がIOTAを活用する際、第三者のノードではなく自前で用意する事で信頼出来るノードかどうかを時間をかけて検証する必要が無い。
ローカルネットワーク上でやり取りが可能 常時オンラインの必要性がない。(他ノードと同期を取る時だけオンラインになれば良い)
ネットワーク遅延が発生しにくく、高速で処理が可能。
※参考)http://www.tangleblog.com/2017/06/27/incentive-run-fullnode-iota/
(私的意見)企業が活用する際は、企業や企業連合がそれぞれノードを立てて、各デバイスが各ノードに紐付く事があるべき姿と考える。 企業がノードを立てて、専用のIoTデバイスを販売して利益を得るアプローチもある。
IoT間のマイクロペイメントを実現するだけなら、Full Nodeではなく、Light Wallet
を組み込むだけで良い。では、Full Nodeを立てるモチベーションは何か?
(BitcoinであればBTCのインセンティブがあるが、IOTAにはそれが無い)
6
メモ:1.システムの紹介と説明
トランザクションの発行には、既に発行済のトランザクションを2つ承認する必要がある。
全てのトランザクションによって、間接的または直接的に承認されるジェネシストランザクションが存在する。 全トークンはジェネシストランザクションで作られた
サイト:Tangleにおけるトランザクションを指す グラフ理論におけるノード。IOTAのノードと混同を避けるための別名では無いか?
特定のノードが怠けすぎの場合は、隣人のノードによって外される。 ここで言う怠けすぎのノードとは、メンテナンスや同期をしっかりやっていないノードを指す。
7
メモ:2.荷重 等
荷重:ノードがトランザクションに投資した仕事量に比例(3の累乗値)→しかし、現在の実装上は一律「1」になっている。※以降の章では、各荷重は「1」と仮定する。
チップ:未承認のトランザクションの事。
累積荷重:自身の荷重と直接的・間接的なトランザクションの荷重の合計。
高さ:ジェネシスまでの最長パスの長さ。
深さ:チップまでの最長パスの長さ。
スコア:自身の荷重+直接/間接承認したトランザクションの荷重の合計。
【トランザクションFに関して】荷重:3累積荷重:10(A+B+C+D+E+F)高さ:2(F→G→Genesis)深さ:2(F→E→C 等)スコア:4(F+G)
【疑問】何故、荷重に3の
累乗値が用いられるのか?
8
メモ:3.システムの安定性とカット集合(※3.1章は次のターンで)
時点 t におけるシステムのチップの合計数を L(t) とした場合、L(t)が∞に発散しないか(=安定性があるか)を数式から検証している。→チップの残数に応じた2つの状態でそれぞれ検証
WPでは≈1.45hとなっているがおそらく誤記
9
メモ:3.システムの安定性とカット集合(※3.1章は次のターンで)
IOTAのノードは3種類に分類出来る。 誠実なノード:IRI(IOTA Reference Implementation)と呼ばれるソフトウェアを使って実行されるノード。コミュニティで合意の取れた統一プロトコルのみ(MCMC戦略等)を使用している。
攻撃者:出し抜いて二重支払いを達成しようとしている。(パラサイトチェーン攻撃、分裂攻撃等)
怠惰なノード:プロトコルやTangleのアップデートの対応をサボる。
攻撃者がいかなる手段を用いても二重支払い出来ないことを4章で数学的に証明している。
10
メモ:3.1. 通常どれくらい早く累積荷重が成長するか?
低負荷状態(λ(txの生成速度)=2)の場合 下記のように累積荷重は2ずつ(λの値と同じ)増加する
高負荷状態(λ=10,000)の場合 適応期間終了後、生成チップが全てのtxを間接承認する状態となるため、以降はλ分増加する。
※下記は、「ムラなく直前のチップを承認」を前提とした最善手(実際はこれよりも累積荷重の上昇は遅い)
時点t+1txが2つ生成(黄)各赤の累積荷重は3(+2)
時点t+2txが2つ生成(緑)各赤の累積荷重は5(+2)
時点t+3txが2つ生成(青)各赤の累積荷重は7(+2)
時点t+1txが1万個生成(黄)赤(左上)の累積荷重は3(+2)
時点t+2txが1万個生成(緑)赤(左上)の累積荷重は7(+4)
時点t+3txが1万個生成(青)赤(左上)の累積荷重は15(+8)
時点t+14txが1万個生成(紫)生成チップは全て赤(左上)を間接承認
10,000個
11
メモ:4.起こりうる攻撃シナリオ
大規模な計算パワーを持つマシンを使って、 攻撃パターン1:全計算能力で二重支払いのtxそのものの荷重を大きくする。→荷重を一律「1」にすれば、防げる。
攻撃パターン2:二重支払いのtxを承認するtxを大量に発行する。→防ぐ手立て無し→攻撃者の計算パワーに負けないようにみんな(誠実なノード)頑張ろう!
MCMCでも無理
12
メモ:4.1. パラサイトチェーン攻撃と新しいチップ選択アルゴリズム
チップをランダムで選択するアルゴリズムの場合、攻撃者が計算パワーを持っていなくても、二重支払いが成功する危険がある。(パラサイトチェーン攻撃)
MCMCは、チップ選択において累積荷重が重い方を選択しやすくするアルゴリズム。これによりパラサイトチェーン攻撃を防げる。
メインのタングル①AさんからBさんに支払い後、
対価(商品)をもらう。
②①と同じトークンのtxを発行し、それを自身でこつこつ承認。
③チップ選択がランダムの場合、メインのタングルからもたまに承認される。
④パラサイトチェーンがメインのタングルに合流し、同じ内容のtxが2つ存在することになる。
13
メモ:4.2. 分裂攻撃
メインのタングルを2つに分裂させ、2つのtxの累積荷重を同じ値に調整されれば、MCMCでも防げない。(分裂攻撃) 分裂させるのは至難ではある。(そこまで頻発する攻撃では無い)
MCMCをより深い位置から行えば、累積荷重が同じ値でも選択される確率に差が大きくなる。
メインのタングル
分裂タングル1
分裂タングル2
①AさんからBさんに支払い後、
対価(商品)をもらう。
② ①と同じトークンのtxを発行
し、タングルを2つに分裂させる
③2つのtxの累積荷重が近い値となるようにバランス調整。
14
メモ:5.量子計算への耐性
Bitcoinのブロック生成は、現在2^68回のハッシュをチェックする必要がある。 量子コンピュータは古典コンピュータの√N回で済むようなので、約170億(2^34)倍も効率が良い。
IOTAは荷重に上限を設けている→3^8 ナンス値を見つけるタスクが膨大にならないようになっている
敵対者が量子コンピュータを利用したとしてもBitcoinより恩恵が無い
15