bitFlyer Blockchain miyabi
出典 miyabi マニュアル https://blockchain.bitflyer.com/miyabi/index.html#features
アーキテクチャ
- UTXO ベースのブロックチェーンではない
- world-state ベースのブロックチェーン
- コンソーシアム・ベースの許可されたプライベート・ブロックチェーン
必要な資格情報を持つコンソーシアムの既知のノードとメンバーのみが特定の miyabi ネットワークに参加 - コンセンサス・ノードはBFK2コンセンサス・アルゴリズムを使用
トランザクションの内容と順序、およびブロック内での実行結果について合意します(コンセンサスを作成) - BFK2 はビザンチン・フォルト・トレランス(BFT)を実現し、トランザクションのファイナリティを保証
1/3以下のノードの miyabi がビザンチン・ノードである場合、コミットされたブロックはすべてのノードで共有され、改ざんされることはありません(ファイナリティ) - スマート・コントラクトをサポート
- 2 つのレイヤーのバリデーション
スマート・コントラクト・アナライザーとコンパイラーが潜在的なシンタックス・イシューをチェック
トランザクション・バリデーターがあり、トランザクションが事前定義された一連のルールに準拠しているかどうかを確認
分散型ステートマシン
- 各ノードが参加して次の state を決定する分散型 state machine
- 同じ初期状態を共有する。
- 同じ順序で実行された同じトランザクション一式を共有する。
- 全てのノードが整合性を侵害することなく物理的に分散可能である。
- miyabi のノードの動き
ピア・ツー・ピア・ネットワークがトランザクションを受信すると、トランザクションはブロックにバンドルされて実行されます。
その後、新しいブロックがブロックチェーンに追加されます。
ブロック内のトランザクションの順序とトランザクションの実行結果は、BFK2 の想定に従って一貫していることが保証されています。
ノードの役割
ノードは miyabi プログラムを実行しているインスタンス
主な機能
- トランザクション受信
- 他のピア・ノードとの情報の共有(トランザクションとブロックを含む)
- トランザクションの実行とワールドステートの更新
- 公開 API と管理 API の公開
- コンセンサスアルゴリズムの実行(コンセンサスノードのみ)
公開API
- miyabi のメタデータ
- world state
- ブロック
- トランザクション
- API を介してノードにトランザクションを送信できる
ノードの動作
トランザクションの送信
ユーザーは API を介してノードにトランザクションを送信
- 受信したトランザクションを内部トランザクション・メモリストレージ(メモリプール)に格納
- 受け取ったトランザクションとブロックをノード間で共有するためにインベントリ・プロトコルを利用
ブロックの生成
- コンセンサス・ノードの 1 つがメモリプールから一連のトランザクションを取得して実行し、ブロックの「プロポーザル」を作成
- 他のノードがコンセンサスのメカニズムによってこのプロポーザルに同意
プロポーザルが受け入れられるとブロックがネットワークによって追加され、state が更新 - コミットされたブロック内のトランザクションの順序は、ネットワーク全体で一貫していることが保証
BFK2 のスケッチ
- 確定したブロックは、インベントリ・プロトコルを介して全ノードへ伝えられます。
- アプリケーション・ノードは、コアノードがブロックをブロックチェーンに追加してはじめて、ローカルにブロックを追加
- アプリケーションノードは、コンセンサス作成の複雑性を増すことなく miyabi の性能を向上
コンセンサスアルゴリズム: BFK2
BFK2 は miyabi のために設計されたコンセンサスアルゴリズム
- セキュリティ:無効なプロポーザルではコンセンサスに達することができないようにします
- ライブネス:最終的にコンセンサスに達することができるようにします
- ファイナリティー:達成されたコンセンサスは取り消しまたは修正できません
ワールドステートの構造
miyabi ブロックチェーンは分散型 state machine を管理
ユーザーはトランザクションによってのみ world state を更新
ブロックチェーンの構造
出典 miyabi マニュアル https://blockchain.bitflyer.com/miyabi/index.html#features
トライアル環境 miyabi プレイグラウンド
miyabi への接続方法
クライアント環境から以下の3つの方法でmiyabiを利用できます。
① SDKを使ってAPIを呼び出す
② CLIを使ってコマンドラインからmiyabiを利用する
③ GUIを使ってmiyabiの一部の機能を使ってみる
miyabi GUIへのアクセス方法
miyabiのブランドサイト上にある[miyabiを体験]ボタンを押す。
全ユーザ共通の秘密鍵で利用するTrial Modeは申し込み不要。