More Related Content
Similar to EXE #3:ブロックチェーンのデータ構造とアクセス制御
Similar to EXE #3:ブロックチェーンのデータ構造とアクセス制御 (20)
More from blockchainexe (20)
EXE #3:ブロックチェーンのデータ構造とアクセス制御
- 4. ブロックチェーンのデータにおける課題 1/2
Copyright(C)2017 trident-arts All Rights Reserved.
現在のDappsの個人情報はブロックチェーンの外のWEBシステムのDBに格納されている
“分散データベースシステム”としてスタートラインに立っていない
セキュリティは?プライバシーの保護は?利用者のアプリケーションに対する考えは?
node
node
node
node
利用者 WEBシステム ブロックチェーン
アプリケーション
個人情報
【Dappsイメージ】
- 7. 【ポイント】
Ethereumベースでのアクセスコントロール実現:node編
Copyright(C)2017 trident-arts All Rights Reserved.
node単位での秘匿性を実現可能
JPモルガンが開発したQuorum(Go Ethereum ベースのOSS)にて実装されている
各nodeがパブリックとプライベートのデータを持つ
プライベートのデータには、“許可したnode”でのみ実行されたコントラクトの結果が保存される
nodeA
public private
Contract Contract
nodeB
public private
Contract Contract
Contract
nodeC
public private
Contract
Contract
Contract
• 通常のコントラクトで、結果
は各nodeに保存
Contract
• node1, 2で実行され、結果
はnode1, 2にのみ保存
Contract
• node2, 3で実行され、結果
はnode2, 3にのみ保存
- 8. Ethereumベースでのアクセスコントロール実現:Data編
Copyright(C)2017 trident-arts All Rights Reserved.
各Dataは、データ本体に加えて、アクセス制御に必要な項目を含めた構造で定義される
データの参照・更新は、トランザクション実行者のユーザIDから実行可否が判断される
node
Dataに対し、ユーザ単位でのアクセス制御を実現可能
コントラクトのコードにて、個別に実装が必要となる
Data
作成者のユーザID
参照可能ID情報
更新可能ID情報
【ポイント】
データ本体
• データオーナーとして、フルコント
ロール可能とする
• 許可されたユーザIDやグループ
ID(※)のリストで、ユーザIDで権
限有無を判断可能な情報
※:ユーザIDをまとめたグループ
作成者のユーザID
参照可能ID情報
更新可能ID情報
- 11. Solidityで書くアクセスコントロールのコントラクトコード:Common Patterns
Copyright(C)2017 trident-arts All Rights Reserved.
Common Patterns:Restricting Access(アクセス制限)
関数修飾子“modifier”を利用することで、Functionの実行前後に、任意の処理を実行させ
ることが可能
実行前に条件チェックを実行することで、アクセス制御を行う
Common Patterns:State Machine(ステートマシン)
関数修飾子“modifier”を使用するのは同じ
コントラクトに状態を持たせ、状態によりFunctionの振舞いを制限したり、変化させる
アクセス制限との組み合わせで、より複雑な制御が可能
実装サンプルでは、“アクセス制限“のパターンのみを使用
参考サイト)https://solidity.readthedocs.io/en/develop/common-patterns.html