スマートコントラクト、dAppsの定義について考える

いろいろな記事を見ているとイーサリアムでスマートコントラクトという言葉の使われ方に違和感を感じることがあるので、dAppsの定義も含めて自分なりに考えをまとめることにしました。

イーサリアムは公式ページにもBlockchain Application Platformとあるように、ブロックチェーン上でアプリケーション(アプリ)を動かすためのプラットフォームである。開発者がプログラムをブロックチェーン上にアップロードし、主にユーザーの送金をトリガーとして動き、ブロックチェーン上で状態管理することができる。

スマートコントラクトの定義

スマートコントラクトとは、人の仲介なく自動的に契約を履行する仕組みを指す。現実世界でよく例にあげられるのは自動販売機である。お金を入れると自動的に商品が出てくる。

つまりスマートコントラクトは、ブロックチェーンやイーサリアムに限るものではない。更に言うと開発者がプログラムで自作できるかどうかも関係がない。プラットフォームにあらかじめ組み込まれた機能で、開発者がカスタマイズできなくとも、契約の履行を自動で行うものであれば、それはスマートコントラクトと言えるだろう。

いろいろな記事を読んでいると、イーサリアムのブロックチェーン上で動くプログラム全般をスマートコントラクトと表現しているケースが見受けられるが、私はそれは適切でないように思う。あくまで契約の履行の役割を果たすプログラムのみスマートコントラクトと呼ぶべきではないだろうか。

dAppsの定義

単にプログラムと呼ぶものとアプリと呼ぶものの境界は難しいが、一般的にアプリはプログラムの集合で、ユーザーのニーズを満たす規模のものを指すだろう。

dAppsはDecentralized Applicationsの略で、ブロックチェーンが非中央集権で動くことにちなんだネーミングである。dAppsはブロックチェーン上のプログラムが組み合わさって、ユーザーのニーズを満たすものと考えれば良いのではないか。

イーサリアムでは、スマートコントラクトもトークンもプログラムで実現する。スマートコントラクトやトークンだけで、ユーザーのニーズを満たすには規模が小さいように思うので、これらは単にプログラムと呼んだほうが良いかもしれない。

ゲームのようにスマートコントラクトやトークン、その他のプログラムを内包して1つの形を取るものもある。このようにプログラムが組み合わさってゲームというユーザーのニーズを満たす規模のものはアプリと呼ぶにふさわしいように思う。さらにアプリを構成するプログラムがすべて、もしくは重要な機能の大半はブロックチェーン上にあるものはdAppsと呼ぶにふさわしいように思う。

まとめ

  • イーサリアムでブロックチェーン上で動くプログラムをスマートコントラクトと呼ぶ節があるが、それは単にプログラムと呼ぶべきではないか?
  • そのプログラムの中で契約の履行の役割を担うものをスマートコントラクトと呼ぶべきではないか?
  • プログラムの集合によってユーザーのニーズを満たすものをアプリと呼び、それがブロックチェーン上のプログラムのみで構成されるなdAppsと呼ぶにふさわしいのではないか?

仮想通貨投資はZaifのコイン積立だけで十分だと思う理由