SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

開発者のためのブロックチェーン活用ガイド

ブロックチェーンの「スマートコントラクト」の実行の仕組みとノードの役割とは

開発者のためのブロックチェーン活用ガイド 第3回

ステップ3 スマートコントラクトの参照メソッドを呼び出して実行する

 シナリオのステップ3の参照メソッドの呼び出しと実行は、更新メソッドとは異なり単純です。前述の通り、各ノードはスマートコントラクトのコードと、内部状態として検証済みの正しいデータを持っているので、それらを使うだけです。参照メソッドでは内部状態を単に返すか、状態更新が起きないような値の加工といった処理が可能です(図6)。

 以上で冒頭に記載したスマートコントラクトの実行シナリオは終了です。

図6 参照メソッドの呼び出し
図6 参照メソッドの呼び出し

まとめ

 スマートコントラクトのメソッドを呼び出して実行するには、ブロックチェーンネットワークにアクセスするためのノードが必要です。自分のノードを新たにブロックチェーンネットワークに参加させるには、ブートストラップノードに接続してブロックチェーンのP2Pネットワークの構成員にしてもらう必要があります。その後、新しいノードは最新のブロックチェーンのデータとの同期を行います。同期の際、P2Pで接続している他のノードからデータを取り寄せ、正しさの検証を行った上で保存します。

 スマートコントラクトの更新メソッド呼び出しでは、トランザクションを組み立て、それをノードからブロックチェーンネットワークに送信します。トランザクションはブロックチェーンネットワークを構成するすべてのノードに伝搬していきます。このとき、各ノードでは、ブロックへの格納待ちのトランザクションとしてひとまずキューイングします。トランザクションがブロックに格納されるまでには一定の時間がかかるため、更新メソッドは原則的に非同期処理です。

 スマートコントラクトの更新メソッドの実行は、当該メソッドの呼び出しトランザクションが新しいブロックに格納されることに相当します。更新メソッドの実行タイミングは、ブロック作成ノードで新たなブロックが作られるとき、および、ブロック作成ノードではない他のノードが新たなブロックを受信し、その正しさを検証するときです。ブロックチェーン的な考え方では、正しさというのは自分で検証することで、決して他人任せにするようなことではありません。つまり、スマートコントラクトはブロックチェーンネットワーク上のすべてのノードで全く同じように実行され、処理に伴う状態更新も同じ結果に到達します。

 スマートコントラクトの参照メソッドの呼び出しと実行は、ノード自身が持っている検証済みのスマートコントラクトコードと内部状態を使って即座に結果を返します。

 スマートコントラクトが以上のように実行できるのは、ブロックチェーンネットワーク上のすべてのノードがデータを共有しているためです。共有対象にはブロックとトランザクションはもちろん、スマートコントラクトのコードと内部状態も含まれます。これにより、どのノードでもブロックに格納されたトランザクションからスマートコントラクトの実行を再生することができ、実行にともなう内部状態更新の正しさを独自検証することができます。このような仕組みにより、ブロックチェーンの耐改ざん性などの特徴がスマートコントラクトの実行プラットフォームとしても実現されています。

 次回は、スマートコントラクトの処理上の制約と、ブロックチェーンを用いたシステム構成の中でノードを運用する意味について解説する予定です。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
開発者のためのブロックチェーン活用ガイド連載記事一覧

もっと読む

この記事の著者

木下 学(NTTデータ先端技術株式会社)(キノシタ マナブ)

 ソフトウェアソリューション事業本部 デジタルソリューション事業部 データエンジニアリング担当 2014年入社。2017年からブロックチェーンを担当。 現在、NTTデータグループにおける全世界横断のブロックチェーンチームの一員として、ブロックチェーンを用いたシステム開発や技術検証を中心に、教育プログ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/15872 2022/05/19 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー