コードは法か?スマート・コントラクトの解説
イーサリアムと分散型金融 (DeFi) のスマート・コントラクトを通じて、「コードは法である」という概念を探求します。この動画では、スマート・コントラクトとは何か、その仕組み、そしてコードが最終的な裁定者となるべきかという哲学的な問いについて解説します。
Date published: 2020年11月18日
ファインマティクスによる解説動画です。イーサリアム上のスマート・コントラクトを通じて「コードは法である」という概念を探求し、スマート・コントラクトとは何か、その仕組み、従来のコントラクトに対する利点、そしてなぜそれが分散型金融 (DeFi) の構成要素であるのかを解説します。
このトランスクリプトは、ファインマティクスによって公開された元の動画のトランスクリプト (opens in a new tab)のアクセシブルなコピーです。読みやすさのために軽く編集されています。
はじめに (0:00)
テクノロジーを使ってルールを強制する「コードは法である」という表現を聞いたことがありますか?その場合、弁護士は必要なのでしょうか?あるいは、コードが私たちの行動を規定する完全な自動化された世界に住むことができるかもしれません。現在のスマート・コントラクトの発展により、この未来的なシナリオは私たちが考えるよりも近いかもしれません。
スマート・コントラクトは、自動的かつ決定論的な方法で実行できるコードの一部です。スマート・コントラクトのコードは通常、トラストレスで安全なものにするためにブロックチェーン上に保存され、実行されます。スマート・コントラクトはまた、資金を受け取り、保存し、送信する機能を持ち、他のスマート・コントラクトを呼び出すことさえできます。これらは「もし〜ならば〜する (if-then)」というセマンティクスに従うため、プログラミングが比較的簡単です。
スマート・コントラクトは、意思決定から人的要因を排除することを目的としています。人的要因は、標準的な従来のコントラクトにおいて、最もエラーが発生しやすく信頼性の低い要素であることがしばしば証明されています。
自動販売機は、いくつかの類似点があるため、スマート・コントラクトの良い例えとしてよく挙げられます。一般的な自動販売機は、入力に基づいて特定のアクションと状態の遷移を許可するようにプログラムされています。また、完全に決定論的な方法で機能します。例えば、2ドルのコーラを買いたいのに1ドルしか持っていない場合、何度試しても飲み物を手に入れることはできません。一方、3ドルを入れると、機械はコーラと適切なお釣りを渡してくれます。お釣りでさえ、どの硬貨が利用可能で、機械がどの硬貨を先に処分したいかに基づいて、事前に定義されプログラムされた方法で選択されます。
スマート・コントラクトは、ブロックチェーン上で利用可能な情報のみに依存することができます。例えば、「トークンAを10個くれたら、トークンBを10個あげる」といった具合です。あるいは、ETHやS&P 500の価格など、外部のデータソースに依存することもできます。後者の例では、現実世界のデータを信頼しなければならないため、スマート・コントラクトはより難しくなります。必要な信頼はオラクルサービスを使用することで最小限に抑えることができますが、オラクルサービス自体も信頼する必要があります。特定のインセンティブを使用することで、オラクルが正しいデータを提供する可能性を高めるプロジェクトがすでにいくつか存在します。チェーンリンクは、このカテゴリーで明らかに際立っているプロジェクトです。
イーサリアムのスマート・コントラクト (3:09)
イーサリアムは、スマート・コントラクトをサポートし、プログラマーが独自のスマート・コントラクトを実装できるようにするブロックチェーンです。スマート・コントラクトは、その目的のために特別に作成されたSolidityと呼ばれるプログラミング言語で記述できます。イーサリアムでは、デプロイされたすべてのスマート・コントラクトはイミュータブルです。つまり、一度デプロイされると変更できないため、後で説明する特定のリスクが生じます。
イーサリアム上のスマート・コントラクトは分散型でもあります。つまり、コントラクトを制御する単一のマシンは存在しません。実際、イーサリアムのネットワーク上のすべてのノードは、まったく同じ状態で同じコントラクトを保存しています。イーサリアムは現在、最も人気のある汎用スマート・コントラクトプラットフォームですが、唯一のものではなく、Cardano、Tezos、EOS、Tronなどの競合が存在します。ただし、それらすべてが同じ特性を共有しているわけではありません。
スマート・コントラクトの定義 (4:23)
「スマート・コントラクト」という用語は、1990年代初頭に有名な暗号学者のニック・サボによって作られました。この名前は、最も自己説明的というわけではありませんが定着し、特にブロックチェーン業界で一般的に使用されています。スマート・コントラクトの利点を理解するために、仮想のスマート・コントラクトと従来の領域における同等のものを比較してみましょう。
スマート・コントラクトの例 (4:46)
次のようなコントラクトを作成したいとします。アリスがX個のトークンAを送信し、ボブが同じ数のトークンBを送信した場合、トークンはスワップされます。つまり、アリスはボブのトークンを受け取り、ボブはアリスのトークンを受け取ります。
スマート・コントラクトが存在しない世界で、アリスがボブを信頼せず、ボブがアリスを信頼せずにこれを達成する1つの方法は、第三者とエスクローのコントラクトを作成することです。第三者はアリスからトークンAを収集し、ボブから同じ数のトークンBが届くのを待ち、アリスとボブにそれぞれスワップされたトークンを送信します。
スマート・コントラクトの問題点 (5:45)
このアプローチには、アリスとボブが直面する可能性のあるいくつかの問題がすでに示されています。
- 仲介者の信頼 — アリスとボブから資金を受け取った後、第三者がトークンを持ち逃げしないという保証はありません。私たちは仲介者の評判と潜在的な保険に頼らざるを得ません。
- 非決定論的な結果 — 何か問題が発生した場合、潜在的な訴訟が解決される管轄区域など、複数の要因によって異なる結果が生じる可能性があります。
一方、スマート・コントラクトは完全に自動化された決定論的な方法で機能し、トークンを預けるという初期基準を満たしたときに、両当事者が確実に資金を受け取れるようにします。スマート・コントラクトはまた、それ自体の内部に資金を保持することができますが、これは従来の世界では達成不可能なことです。
スピード (6:47)
仲介者によっては、アリスとボブはトークンの移行を決済するために数日または数週間待たなければならない場合があります。日曜日にトークンをスワップしたいのに、仲介者が営業していない場合はどうなるでしょうか?スマート・コントラクトを使用すれば、このような問題はなくなり、初期基準が満たされてから数秒後にコントラクトを履行することができます。
コスト (7:16)
従来のコントラクトは、利益を上げなければならない仲介者のために高額になるだけでなく、コントラクトに問題があった場合の仲裁や執行などの隠れたコストの大きなリスクもあります。
再利用性ももう一つの利点です。アリスとボブのトークンのスワップを担当する同じスマート・コントラクトを、トークンをスワップしたい他の誰でも使用することができます。従来の世界では、全員が別々のコントラクトに署名し、仲介者にそれぞれの料金を支払う必要があります。
詐欺 (7:58)
詐欺はもう一つの隠れたコストであり、今回は仲介者自身にとってのコストです。仲介者は、スワップを開始する前に、アリスとボブの両方のトークンが正当なものであることを確認する必要があります。従来の金融では詐欺が非常に一般的であり、ほとんどの企業には詐欺の防止のみに取り組む巨大なチームがあります。スマート・コントラクトを使用すると、トークンはブロックチェーン上で検証でき、デジタル署名により、アリスとボブの両方がトークンを使用する資格があるかどうかがすぐに明らかになります。
ユースケース (8:42)
スマート・コントラクトには、決済や分散型金融 (DeFi) からサプライチェーンやクラウドファンディングに至るまで、増え続けるユースケースがあります。スマート・コントラクトはまた、分散型アプリケーション (dapp) の基本的な構成要素でもあります。
DeFi (9:07)
分散型金融 (DeFi) は、スマート・コントラクトに大きく依存している新しい業界の1つです。この分野ですでに構築されているものには、次のようなものがあります。
- 分散型ステーブルコイン — スマート・コントラクトと特定のインセンティブを巧みに利用することで、現実世界にドルを保管することなく、米ドルにペッグされたステーブルコインを作成できます。MakerDAOは、これを可能にするプロジェクトの1つです。
- 自動化された流動性提供 — 一連のスマート・コントラクトにより、ユーザーは完全にパーミッションレスかつ分散型の方法で流動性を提供し、トークンをスワップすることができます。ユニスワップやKyber Networkは、そのようなプロトコルの良い例です。
クラウドファンディングとサプライチェーン (10:05)
もう1つのユースケースは、サプライチェーンの透明性を高めることであり、ここではOriginTrailのようなプロトコルが活躍します。クラウドファンディングに関しては、特定の目標が達成され、コミュニティによって検証されるとすぐに資金のロックを解除するコントラクトを想像することができます。
未来のスマート・コントラクト (10:29)
スマート・コントラクトがライドシェアリングやアパートの賃貸などを促進できるとしたらどうでしょうか?慈善活動についてはどうでしょう?仲介者を介さずに、最も必要としている人々に直接お金を送る、完全に自動化された基金を想像することができます。例えば、その基金は特定の地域がハリケーンに見舞われたと判断し、世界のその地域に資金を振り向けることができます。今のところ、それはかなり不可能に聞こえますが、このようなことを実現するために必要なすべての要素は、まさに今構築されているところです。
スマート・コントラクトのユースケースはほぼ無限ですが、それらすべてを達成する前に、いくつかの問題に取り組む必要があります。
- バグ — スマート・コントラクトに関する主なリスクの1つは、他のすべてのソフトウェアにつきまとうものです。最良の例はDAOハッキングであり、攻撃者がスマート・コントラクトから資金を流出させることができたため、数百万ドル相当のイーサが失われる結果となりました。これによりイーサリアムはハード・フォークを引き起こし、イーサリアムコミュニティに多くの意見の不一致を生み出しました。DAOハッキング以来、イーサリアムコミュニティは多くの追加のセキュリティ対策を考案してきました。最近では、人気のあるスマート・コントラクトのほとんどすべてが、多くの場合複数のチームによるセキュリティ監査を受けています。また、特定のコントラクトが常に期待される方法で動作することを証明するために、形式的検証手法を使用する傾向もあります。
- プロトコルの変更 — スマート・コントラクトにバグがなく、監査を受けていたとしても、プラットフォームレベルの変更が問題を引き起こさないとは保証できません。プロトコル自体のアップグレードにより、特定のスマート・コントラクトが予期しない動作をし始める可能性があります。
- 現実世界のデータ — オラクルサービスは、現実世界からブロックチェーンに情報を取得する信頼できる方法を提供できます。しかし、アパートや車を借りて、誤って損害を与えてしまったと想像してみてください。人間の介入なしに、スマート・コントラクトがどうやってそれを知ることができるでしょうか?現実世界で起こる予期せぬ出来事が、スマート・コントラクトにどのように可視化されるのか想像しにくい例は複数あります。
上記に加えて、規制や税金に関するリスクもありますが、これらはすべて最終的には解決可能です。
弁護士を置き換えることはできるか? (13:58)
では、実際に弁護士をコードに置き換えることはできるのでしょうか?完全にはできません。少なくとも今は無理です。将来的には、特に金融分野において、ますます多くのコントラクトが自動化されるでしょう。しかし、完全に自動化された世界であっても、弁護士はコードに変換できる貴重な知識を提供することができます。また、暗号資産の業界を取り巻く規制上の課題も多く、弁護士はしばらくの間非常に忙しくなるでしょう。それでも、もし私が弁護士なら、将来大きな役割を果たすことになるスマート・コントラクトとコーディングについて学び始めるでしょう。
まとめ (14:53)
スマート・コントラクトの長所:
- 完全に自動化されている
- 決定論的な結果
- トラストレス
- 高速、正確、そして安全
- 費用対効果が高く透明性がある
スマート・コントラクトの短所:
- ソフトウェアのバグ
- プロトコルの変更
- 規制と税金の不確実性
スマート・コントラクトには特定のリスクが伴いますが、私たちはまだ非常に初期の段階にあり、現在の問題のほとんどは解決可能です。