Programmabilityとは?
Programmabilityは、暗号資産がコードで記述されたルールに従えるという考え方です。トリガーで資金を移動させたり、分割したり、ストリーミングしたり、ロックしたりといった処理を、人の仲介なしに実行できます。価値に対する自動支払いと「もし〜なら〜」の仕組みが組み合わさったイメージです。
「Programmabilityは何でもありを意味する」というのは正しくありません。コードはガス制限や厳格な検査などブロックチェーンのルール内で動作します。コードがある操作を許可しなければ、チェーンもその操作を行いません。
Programmabilityの仕組み
簡単な手順説明:例えば、毎月1日に家賃をルームメイト間で分割したいとします。
- ステップ1:コントラクト上の関数を呼び出すトランザクションを送信します。
- ステップ2:ネットワークはその関数をスマートコントラクトに記述されたとおり正確に実行します。不正な裏取引は入りません。
- ステップ3:ルールが満たされれば残高が更新され送金が行われます。満たされなければ、何も起きなかったかのように取り消されます。
- ステップ4:代替可能なトークンの場合、送金は ERC 20 標準に従うため、すべてのウォレットやアプリが正しく扱えます。
- ステップ5:イベントが操作を記録するので、ダッシュボードやボットが反応できます。領収書を送ったり次の手順を開始したりすることが可能です。
これが流れです。コードがルールを決め、チェーンがそれを守らせます。
Programmabilityが重要な理由
つまり何が言いたいかというと、価値を動かすコードは実際に使える強力な機能だからです。
- 利点:支払い、ローン、取引、返金、ロイヤルティなどを自動化して、寝ている間でも処理できます。
- 視点:DeFi、ゲーム、クリエイター向けツールなどに新たな可能性をもたらしますが、バグは悪用につながるため、過度の宣伝よりも慎重さが重要です。
- 利用例:dApps、DAOs、NFTドロップ、定期実行や一括処理を行う日常使いのウォレットなどで目にするでしょう。
実績ある標準やテンプレートを使いましょう。NFTでは定番が ERC 721 です。本当に必要なカスタム部分だけを追加してください。
Programmabilityの主な特徴
動作のポイント:
- 決定論的:同じ入力はすべてのノードで同じ出力になります。
- 合成可能性:コントラクトは他のコントラクトを呼び出せ、レゴのように組み合わせてより大きなシステムを素早く作れます。
- パーミッションレス:誰でもコードを書いてデプロイでき、他者がそれに接続できます。
- 透明性:ロジックや取引が公開されているので、推測ではなく検証できます。
- 原子的性質:すべてのステップがまとめて成功するか、まったく実行されないため中途半端な状態が生じません。
バリエーション
同じ考え方の異なる形:
- フル:ほぼあらゆるロジックを表現できる汎用言語。
- スクリプト型:命令が限定されていてシンプルで考えやすい。
- オンチェーン:ロジックがチェーン上で実行され、検証性が高くなります。
- オフチェーン:ボットやキーパーが外部の監視からチェーン上のアクションをトリガーします。
デプロイされたコードと過去の取引はimmutableな台帳に残ります。アップグレードが必要なら、最初からプロキシやタイムロックで対応できる設計にしておきましょう。
例
音楽dAppが再生回数に応じてロイヤリティを毎分複数のウォレットへストリーミングし、すべてを一度のコントラクト呼び出しで行うケース。
豆知識
ヴィタリックはかつて、ゲームのナーフがきっかけで、どの会社も変えられないルールに従うお金を想像したと語っています。それがEthereumの着想の一つになりました。パッチノートから生まれたProgrammableな通貨は印象的です。
まとめ
Programmabilityはお金にやるべきことを指示でき、それが毎回実行されます。単純な考えですが、大きな影響をもたらします。
