SHOEISHA iD

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

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

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

ブロックチェーンのシステム開発の前に考慮すべき、スマートコントラクトの処理の制約とは

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載は、ブロックチェーンにこれから取り組まれる方や、ブロックチェーンに詳しい仲間を増やしたいが説明に苦慮されている方などを想定し、ブロックチェーンを使いこなすための勘所を紹介します。連載の第4回は、スマートコントラクトの処理上の制約と、ブロックチェーンを用いたシステム構成の中でノードを運用する意味について解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

スマートコントラクトの処理の制約

 連載第3回で解説した通り、スマートコントラクトのメソッドはブロックチェーンネットワーク上のどのノードからでも呼び出して実行することができます。これを実現するために、スマートコントラクトには決定的(deterministic)と呼ばれる処理上の制約が課されます。決定的とは、入力がある値に決まったら、処理の経路も決まって、常に同じ出力結果に至るような処理のことを表します。スマートコントラクトのメソッドは、入力として呼び出しの引数とそのときのスマートコントラクトの状態(これはブロックチェーンでデータ共有されている)とが決まると、どのノードで実行されたとしても、出力として全く同一の結果を返すということです。

 決定的という制約上、スマートコントラクトにはできないことが生まれます。例として、ランダム値に依存する処理や、ノードの外側にあるWebサーバーとやり取りすることなどがあります。Webサーバー上の情報は時々刻々変化しているかもしれませんし、通信エラーになる可能性もありますので、処理の経路と処理結果をひとつに決定することはできません。ノードの外側とはブロックチェーンの外にある世界の全てです(一般にオフチェーンといいます)。スマートコントラクトはブロックチェーンという隔離された世界(一般にオンチェーンといいます)に閉じ込められており、スマートコントラクトに対して開かれている窓はメソッドの引数のみです。

 また、スマートコントラクトの実行環境という面では、何らかのサンドボックス内で実行されるのが通常です。これは、一般論的にWebブラウザなどのそれと同じ考え方で、ブロックチェーンの内外のさまざまな影響から個々のスマートコントラクトを隔離するためです。スマートコントラクトのサンドボックス環境は、プロダクトにより仮想マシンやコンテナといった形で提供されます。

 なんといってもスマートコントラクトは、ブロックチェーンの非中央集権という特徴を踏まえた機能なのです。従来のクライアント・サーバーシステムでは、特定のサーバーで処理の実行やデータの保持を行う構造のゆえに、そのサーバーを運営する事業者への中央集権化を回避できませんが、ブロックチェーンはそれを回避することを目標として、スマートコントラクトに制約を持たせることで非中央集権を実現し、従来型システムとの差別化を実現しています。

分散(distributed)と非中央主権(decentralized)

 ブロックチェーンの文脈では、分散(distributed)と非中央集権(decentralized)は、ニュアンスの違いを明確に認識しておくとよい単語であると考えられます。日本語への翻訳において、両者が「分散」という同一訳にされてしまうことがあるようですが、本来は避けるべきことです。distributedとdecentralizedはそれぞれ使われる文脈が違います。distributedはあるものごと(例えば、システムの構造)を対象として「散らばっている」こと、decentralized は権力を対象として「集中ではなく分散されている」ことに対して使われます。

 したがって、対称軸をシステム構造と権力とで別々に考えることができ、構造上centralized なシステムの権力はcentralized(中央集権)となるものの、構造上distributedなシステムの権力は必ずしもそうではなく、centralized(中央集権)とdecentralized (非中央集権)のどちらの場合もあります(図1)。例えば、従来の分散システム(Hadoopなど)は基本的にcentralizedな運用が前提ですが、新たな分散システムであるブロックチェーンはcentralizedでもdecentralizedでも運用できます(例えば、単一組織のプライベートネットワークのような形態はcentralized、Ethereumのパブリックネットワークのような形態はdecentralized)。なお、図示において、誤解を与えない方法でcentralizedとdistributedの表現はなんとかできても、decentralizedの表現は難しいようです。あなたも図示の方法を考えてみてはいかがでしょうか。

図1 非中央主権(decentralized)の図示は難しい
図1 非中央主権(decentralized)の図示は難しい

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
オフチェーンデータとブロックチェーンのオラクル

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
開発者のためのブロックチェーン活用ガイド連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16067 2022/06/30 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング