中級

あとから中身のプログラムを差し替えられるスマートコントラクトの設計手法。

詳細説明

通常、スマートコントラクトは一度デプロイ(公開)すると変更できません。これは安心材料である一方、「バグが見つかっても直せない」という不便さも生みます。そこで考案されたのが「アップグレード可能プロキシ(upgradeable proxy)」です。

表向きの窓口(プロキシ)は固定しておき、実際の処理を行う中身(ロジック)を別の場所に置いて、あとから差し替えられるようにする設計です。住所(アドレス)を変えずに機能を更新できます。便利な反面、大きな問題もあります。「中身を差し替えられる」ということは、「管理者が、ユーザーの知らないうちに、ルールを書き換えられる」ということでもあるからです。極端に言えば、ある日突然、コントラクトの動作がまったく別物になる可能性すらあります。

たとえ話

建物の住所はそのままに、中の店舗だけをこっそり入れ替えられる仕組みを想像してください。あなたが信頼して通っていたパン屋が、看板も住所もそのままなのに、ある朝とつぜん中身が別の店になっている──アップグレード可能プロキシには、そういう「すり替え」のリスクが潜んでいます。

CAWでの役割

CAWは、このアップグレード可能プロキシを「一切使わない」と明言しています。つまりCAWのスマートコントラクトは、デプロイされたその瞬間の姿のまま、永遠に変わりません。誰も──開発者ですら──ルールをあとから書き換えられない。これは「信頼できる管理者がいる」のではなく「そもそも書き換える手段が存在しない」という、トラストレスな設計の徹底です。

関連用語