SHOEISHA iD

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

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

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

従来型システムとの比較で学ぶ「スマートコントラクト」の仕組み~ブロックチェーン/スマートコントラクトの技術要素と特徴

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

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

 本連載は、ブロックチェーンにこれから取り組まれる方や、ブロックチェーンに詳しい仲間を増やしたいが説明に苦慮されている方などを想定し、ブロックチェーンを使いこなすための勘所を紹介します。連載の第2回は、スマートコントラクトの実行プラットフォームとしてのブロックチェーンの特徴を解説します。実際にはブロックチェーンの機能はプロダクト間(例えば、EthereumやHyperledger Fabricなど)で差異があり、各プロダクトが固有の特徴を持ちますが、ブロックチェーンという技術カテゴリにおいて一般的に当てはまる内容に焦点を当てます。まとめとしてスマートコントラクトを従来型システムと比較したときの差別化ポイントに言及します。

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

開発者にとってのスマートコントラクト

 開発者の方にとってスマートコントラクトがどんなものか、この後で解説するブロックチェーンの技術要素やそれを使ったデータ構造の仕組みなどから考えるよりも、まずは、すでにご存じと思われるオブジェクト指向言語のクラスやインスタンスなどとの類比で考える方がよいかもしれません。とくに、スマートコントラクトの開発を中心に置くなら後者が役立つかもしれず、ブロックチェーンの解説に入る前のここでそのイメージを示します。

 スマートコントラクトは、何らかのプログラミング言語でプログラムコード書いて実装するもので、これはオブジェクト指向言語でいうクラスに相当します。クラスと同様に、スマートコントラクトはAPIと内部状態(データやプロパティー)の格納領域を持つことができます。APIには、データを参照するためのメソッド(いわゆるgetメソッド)と、内部状態を変更するための更新メソッド(いわゆるsetメソッド)が定義できます(なお、スマートコントラクトには処理上の制約があり、基本的にはAPIの引数から計算した値で内部状態を変更する程度のことしかできないと考えてください。この理由も今後の連載で解説します)。

 スマートコントラクトのコードはコンパイルして実行イメージに変換する必要があります。この実行イメージをブロックチェーンに書き込む(デプロイする)と、スマートコントラクトを呼び出して実行できるようになります。これは、クラスのインスタンス化に相当します。なお、スマートコントラクトもコンストラクタを持つことができ、デプロイ時に呼び出されることで内部状態の格納領域がブロックチェーン上に生成されます。補足として、スマートコントラクトはデプロイのたびに別々に認識される実体が作られることに注意してください。これはクラスのインスタンスが別々に認識される実体であることと同じです。

 スマートコントラクトを実行するには、デプロイで実体化された先に対してAPI呼び出しを行います。参照系のAPI呼び出しは即時に結果を得ることができますが、更新系APIの呼び出しは非同期的に処理されます(この理由を知るにはブロックチェーンの仕組みを知らなければならず、以降で解説します)。

 ただし、スマートコントラクトをシステム機能の粒度的な観点で見た場合、単なるクラスというよりはマイクロサービスに近しい位置づけです。スマートコントラクトは、マイクロサービスのように自身のインターフェースを介して完全に独立したひとつのサービス機能を提供するものです。例えばNFTは、スマートコントラクトによるデジタル的な唯一無二の価値表現とその交換の機能を提供するひとつの独立したサービスです。

 それでは、ブロックチェーンの技術要素を確認しながら、スマートコントラクトの実行プラットフォームであるブロックチェーンの特徴を整理していきます。

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

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

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

メールバックナンバー

次のページ
ブロックチェーンの技術要素とその特徴

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング