Quorum
Whitepaperを読む
メモした部分だけ抜粋するよ
概要
private transactionは二つの機能によって実現するよ
秘匿化:encryptionによってtransaction情報が暗号化されるよ
Tomato.icon<具体的にどの部分が暗号化されるのん?
private storage:プライベートトランザクションに関係するnodeのみ当該contract codeを実行可能
これによってstate databaseの分離が可能
Tomato.icon<一度private contractに載ってしまった情報をpublicに戻すことはできないの?
管理者とregulatorはprivate/public両方ともすべてのデータを保持することで監査性を維持
Tomato.icon<フルノードの二つが死んだらどうやって証明するんや?
Tomato.icon<中央DBとの違いは何?という疑問になりそう
Consensus
二つの方法を採用できる:RaftとIstanbul BFT
Raft:中央管理者による管理を認める方法
Raft nodeの中から選ばれたリーダーがブロックを作成する
Tomato.icon<どうやって選ばれるんですか
各Folowerはそのブロックの中にトランザクションを入れるだけ
その後大半のRaft Nodeから承認されればブロックが完成
Tomato.icon<承認方法は?リーダー以外も参加するの?
PoW要らないから早いブロック生成が可能
リーダーによるfraudの可能性はある
Istanbul BFT:2/3のvalidatorによる承認が必要な方法
proposerがtransactionを入れたblock情報をpre-prepareとしてvalidatorに投げる
各validatorはpre-prepareからprepareへステータスを変更してブロードキャスト
2/3のバリデータからprepareメッセージが来たらcommitメッセージへ変更
Tomato.icon<誰がどのprepareメッセージについて指示を与えているのかがかかれていないので謎だらけ
Tomato.icon<最初にcommitを投げるvalidatorはどうやって決まるのじゃ?
2/3のvalidatorからcommitメッセージが届いたらcommittedへステータスが変更されて承認が完了する
Data Privacy
暗号化とセグメント化の二要素によってプライバシー問題を解決(上述)
暗号化:トランザクション(全員が見ることのできるもの)の内容を暗号化
セグメント化:各プレイヤーの持っているstate情報をprivateはばらばらにすること
トランザクションの流れ図
https://gyazo.com/45b90bead02fc126c8f5e8350652fbda
Tomato.icon<この図は全体的に謎が多い
Private TransactionはDappを通じて行われる
Tomato.icon<どういうDappなのか説明がない、、、
Private TransactionはEVMに送られる前に各ノード内でdecryptionが行われ、ストレージに保管される
EVMはencryption/Decriptionを行う必要がない
Tomato.icon<EVMでは何を起動させている?
Tomato.icon<これってcontract起動させてない事にならないか。。。?
Transactionデータ自体は256hashの暗号化されたものとして登録される一方で、同時にトランザクションの中には宛先の公開鍵が含まれる。
Tomato.icon<ホワイトペーパーみたところEther送付量は暗号化されないのか、、、?
Tomato.icon<Private TransactionとPraivate Contractとの関係性はなんだ?
Tomato.icon<stateとして持っていないことと、contractが呼び出せないこととはなにが違うのだ?
Private Stateについてはvalidationは行われない。consensusはStorageRoot RPC APIのアプリケーションレイヤーで実施
Tomato.icon<やべ、validationとconsensusとの違いってなんだったっけ・・・?
必要に応じてconsensusの証拠を互いに表示することも可能
Private transactionはブロック構成に一切影響を与えない
それゆえ、private transactionに係るnodeはpublic chainにsyncしていればOK
Tomato.icon<なぜpublicだけでprivateの正当性も保障されているんだ?Appの効果が謎、、、?