スマートコントラクトとは、ブロックチェーンにデプロイされたプログラムであり、固定されたルールに従って資金を保有し動かすものです。実行は決定論的で——同じ入力は常に同じ結果を生みます——ネットワーク上のすべてのノードがその実行を検証し、間に企業も担当者も入りません。オンチェーンで行うことのほとんどはスマートコントラクトです。トークン、スワップ、レンディング市場、そしてプロトコルがあなたの残高を動かせるようにする承認も同様です。カウンターパーティがコードそのものであるため、説得することも異議を申し立てることもできません。だからこそ欠陥は、サポートチケットではなく空にされた金庫という形で現れます。EVMチェーンではスマートコントラクトと呼び、Solanaではプログラムと呼び、TONに至ってはあなたのウォレットさえコントラクトとしてモデル化しますが、仕組みはどこでも同じです。ウォレットもその上に築かれています。WATS Hot WalletはEVMチェーンではERC-4337のpaymasterコントラクトを、SolanaとTONでは同等の手数料支払者を用いており、あらゆる手数料が各チェーンのネイティブガスコインではなく単一のトークンATSで課金されます。
お金を動かすコード
スマートコントラクトとは、ブロックチェーンにデプロイされたプログラムで、固定されたルールに従って資金を保有し動かすものです。いったんデプロイされると決定論的に実行され——同じ入力は常に同じ結果を生みます——ネットワーク上のすべてのノードがその実行を検証し、間に企業も担当者も入りません。トークン、スワップ、レンディング市場はすべてスマートコントラクトです。つまり、それ自体がカウンターパーティであるコードなのです。
重要なのは最後の一節です。銀行を使うとき、あなたに対して債務を負うのは組織であり、その請求権は法制度に支えられています。スマートコントラクトを使うとき、合意のすべてはコードです。説得もできなければ、異議を申し立てることもできません。この性質こそがWeb3を成立させており、同時にその失敗をこれほど容赦のないものにしています。
自動販売機——正直版
古典的なたとえでは、スマートコントラクトは自動販売機だと言われます。硬貨を入れれば菓子が出てきて、店員は要りません。ルールそのものがサービスなのです。この部分は正確で、決定論をうまく捉えています。機械が「今日はあなたが気に入らない」と決めることはできません。
このたとえが隠しているのは次の点です。誰でも機械を設置でき、硬貨を受け取り始める前に検査官が確認することもありません。コントラクトは初日から誤っていることも、意図的に敵対的であることもあります。さらにこの機械は本物のお金を保管しています。プールやレンディング市場はユーザーの資金をコントラクト自身の内部に保持するため、欠陥がもたらすのは詰まった菓子ではなく空にされた金庫です。そして自動販売機と違い、コントラクトは互いを呼び出します。この構成可能性(コンポーザビリティ)こそDeFiを支える強みであり——同時に、壊れた一台がそこに配線されたすべての機械を道連れにしうるということでもあります。
あなたが毎日触れているものは何か
暗号資産を少しでも使ったことがあるなら、あなたはスマートコントラクトを使っています。しかも通常は1回のトランザクションにつき複数です。
- トークンはコントラクトです。ERC-20の「残高」は、ウォレットの中に置かれたコインではありません。トークンコントラクトの内部台帳にあるエントリであり、アドレスから金額へのマッピングです。トークンを送るとは、そのコントラクトに2つのエントリを更新するよう頼むことです。
- スワップはコントラクトです。DEXのプールは2種類のトークンを保有し、取引を数式で値付けするコントラクトです。板もなければ、向こう側にトレーディングデスクもありません。
- 承認とは、あなたがコントラクトを設定する行為です。DEXがあなたのトークンを動かせるようになる前に、あなたはトークンコントラクトに対して、いくらまで引き出してよいかを伝えます——オンチェーンに記録されるallowanceです。この許可は取引そのものより長く生き続けるため、理解しておく価値があります。トークン承認とPermitの解説が、あなたが何を与えているのかをそのまま扱っています。
一部のチェーンでは、あなたのウォレットさえコントラクトです——ここから、主要なエコシステムの違いに話を進めましょう。
EVM、Solana、TONのコントラクトはどう違うのか
考え方はどこでも同じ——ネットワークが検証する決定論的なコード——ですが、アーキテクチャの違いはユーザーとして体感できる形で現れます。
| EVMチェーン | Solana | TON | |
|---|---|---|---|
| 一般的な呼び名 | スマートコントラクト | プログラム | コントラクト(アクター) |
| 状態がどこにあるか | コードとストレージが一つのアドレスに一緒に置かれる | コードはプログラムに、状態は各トランザクションに渡される別々のアカウントに | 各コントラクトが自身の状態を保持し、非同期メッセージで他のコントラクトと通信する |
| トークンモデル | 1つのERC-20コントラクトがすべての保有者の残高を記録する | SPLトークンプログラムが保有者ごとのトークンアカウントを管理する | 各保有者のjetton残高はそれぞれの小さな子コントラクトに存在する |
| デフォルトでアップグレード可能か | いいえ——プロキシを使わない限りバイトコードは不変 | はい——アップグレード権限が放棄されるまで | コントラクト自身のコードが許す場合のみ |
TONはこのモデルを最も遠くまで推し進めています。あなたのウォレットを含め、チェーン上のすべてが、他のコントラクトとメッセージをやり取りするコントラクトです。
スマートコントラクトはデプロイ後に変更できるのか
EVMチェーンでは、デプロイされたバイトコードそのものを編集することはできません。しかし、あなたが触れるものの多くはプロキシの背後にあります。あなたは固定のアドレスを呼び出し、そのアドレスがすべての呼び出しを別個の実装コントラクトへ転送します——そして管理者はプロキシを新しいコードに向け直せます。アドレスは同じままですが、その背後のルールは同じままである必要はありません。
つまり「不変(イミュータブル)」とは、実のところ鍵についての問いです。アップグレード権限を握っているのは誰か——チームメンバーによるマルチシグか、公開の遅延を強制するタイムロックか、ガバナンス投票か、それとも権限が焼却されコードが最終形になったために誰でもないのか。どちらの答えが自動的に正しいわけでもありません。アップグレード可能であればチームはバグを修正できますが、それは同時に、合意があなたの足元で変わりうるということでもあります。実際には、多くの大規模プロトコルはその中間にあります——アップグレード可能だが、タイムロックとマルチシグの背後にある、という形です。
スマートコントラクトのバグはなぜこれほど重大なのか
コードがカウンターパーティであるため、バグはサポートチケットではありません。背後にお金が置かれた開いた扉です。送金を巻き戻す不正対策部門は存在せず、ほとんどのチェーンでは、扉が開いている間に現実を一時停止できる者もいません。
このパターンはこの技術そのものと同じくらい古いものです。2016年、初期のEthereumの投資コントラクトであるThe DAOの再入可能性(リエントランシー)バグにより、攻撃者はその資金の大部分を抜き取ることができました。その余波は深刻で、Ethereumはそれを取り消すためにハードフォークを行い、その過程でEthereum Classicが分岐しました。エコシステム全体のロックされたトークンを保有するブリッジコントラクトも、同じ根本的な理由——巨額の価値が、コードだけに守られている——から、暗号資産史上最大級の損失を生んできました。
監査を受ければコントラクトは安全になるのか
より安全にはなります——安全になるわけではありません。監査とは、セキュリティエンジニアがある時点のあるバージョンのコードを対象に行う有償のレビューです。既知のバグの類型やずさんな書き方は見つけられますが、コードが正しいことを証明するものではなく、将来のアップグレードを対象にもせず、監査人が見たことのないプロトコルと組み合わされたときの挙動も考慮していません。十分に監査されたプロトコルでも、実際に攻撃を受けてきました。
ユーザーにとっての実践的な読み方はこうです。監査を受けておりかつ時間と預けられた価値によって実戦で試されているコントラクトを選ぶ。監査を受けていない新しいコントラクトは実験として扱う。トークン承認は必要最小限に保つ。そして、カウンターパーティのコードが勝ち取った信頼を超える額は決して預けない。
WATSはどこに位置するか
WATS Hot Walletでは、スマートコントラクトというレールが手数料モデルそのものになっています。あなたが署名するすべてのトランザクション——送金であれ、コントラクト呼び出しであれ——は、チェーンのネイティブガスではなく単一のトークンATSで課金されます。EVMではERC-4337のpaymasterを、SolanaとTONでは同等の手数料支払者/relayerを経由します。ATSはLayerZeroのOFTなので、一つの残高がEVM、Solana、TONにわたって機能し、集められたATSは100Mから30Mのフロアに向けてバーンされます。ノンカストディアルのままです——鍵を保有するのはあなたで、WATSは鍵を決して保有しません——そしてWATSは、ネイティブガスの代わりに課金されるERC-4337とOFTの単一トークン手数料を、そのバーンと組み合わせた最初にして唯一のウォレットです。
スマートコントラクトは暗号資産の風変わりな片隅ではありません。トークンを動かすたびにあなたが署名しているものであり、その向こう側にあるコードこそが、あなたの資金とそれを書いた誰かとの間に立つ唯一の存在です。あなたの手元に残る要素は2つ——何を承認するか、そして鍵をどこに置くかです。承認は与える前に見直し、預ける額はコードが勝ち取った信頼に見合わせること。そのうえで、あなたに代わって資金を動かせないウォレットから署名し、鍵の側を自分のものに保つことです。WATS Hot Walletは、対応する8つのチェーン——Ethereum、Arbitrum、Optimism、Base、Polygon、BNB Chain、Solana、TON——のすべてでまさにそれを実現しています。鍵を保有するのはユーザーで、WATSは決して鍵を保有せず、手数料の側は本稿が説明したのと同じ技術の上で動いています。各チェーンのネイティブガスの代わりにATSで課金する、ERC-4337のpaymasterコントラクトです。
よくある質問
トークンは本当にスマートコントラクトなのですか?
はい。EVMチェーンでは、ERC-20トークンはストレージがアドレスと残高を対応づけるコントラクトです。あなたのトークンはその台帳のエントリであって、ウォレットの中にある物体ではありません。SolanaではSPLトークンプログラムが保有者ごとのトークンアカウントを管理し、TONでは各保有者のjetton残高がそれぞれの小さな子コントラクトに存在します。いずれの場合も、トークンを送るとはプログラムに記録の更新を頼むことです。
スマートコントラクトはデプロイ後に変更できますか?
場合によります。EVMチェーンではデプロイされたバイトコードは不変ですが、多くのプロジェクトはプロキシを使います。ユーザーは固定のアドレスを呼び出し、そこから管理者が差し替え可能な実装コントラクトへ転送されます。Solanaのプログラムは、アップグレード権限が放棄されるまではデフォルトでアップグレード可能です。したがって本当の問いは、アップグレードの鍵を誰が握っているか——マルチシグか、タイムロックか、ガバナンス投票か、あるいは誰でもないのか——です。不変性の主張を信じる前に、そこを確認してください。
監査済みのスマートコントラクトは安全に使えますか?
より安全ではありますが、安全ではありません。監査はある時点のあるバージョンのコードのレビューであり、既知のバグの類型は見つけますが、正しさを証明せず、後のアップグレードも対象にせず、他のプロトコルとのあらゆる相互作用を検証するわけでもありません。十分に監査されたコントラクトでも攻撃を受けてきました。監査は複数あるシグナルの一つとして扱い——本番稼働の期間、守られている価値の大きさ、管理者の鍵がどれほどの権限を持つかと併せて判断し——それに応じてリスク量を調整してください。
スマートコントラクトを操作するにはチェーンのネイティブコインが必要ですか?
通常は必要です。ネットワークはガスを自身のコインで決済するため、ETHが0のウォレットは、どんなトークンを保有していてもEthereumのコントラクトを呼び出せません。それ自体がスマートコントラクトであるpaymasterはこれを変えます。WATS Hot Walletが具体例で、Ethereum、Arbitrum、Optimism、Base、Polygon、BNB ChainではERC-4337のpaymasterを、SolanaとTONでは同等の手数料支払者を使います。そのため、ネットワークは下層で依然としてネイティブガスを受け取りながら、あらゆる手数料が単一のトークンATSで課金されます。ATSはLayerZeroのOFTなので、一つの残高で8つのチェーンすべてをカバーでき、チェーンごとのガス用残高を補充し続ける必要がありません。これは割引ではありません。ブロックスペースのコストは同じで、変わるのはそれを支払うトークンだけです。
スマートコントラクトを使うことは、資金の管理権を手放すことを意味しますか?
いいえ。コントラクトを呼び出すとは、あなたが自分の鍵で指示に署名することであり、コントラクトはその署名と、すでに与えられているトークン承認が許す範囲のことしかできません。だからこそ、承認を必要最小限に保つことは、どんな監査バッジよりも重要です。最も大切なのは鍵があなたのものであり続けることです。WATS Hot Walletは完全にノンカストディアルで、鍵を保有するのはユーザーであり、WATSは鍵を決して保有しません。WATS NFC Metal Cardも秘密鍵を保存しません——WATSのアプリ内に存在する鍵に対して、タップして認証するだけです。あなたが実際に引き受けるリスクは、署名元のウォレットではなく、コントラクトのコードとそれに与えた許可(allowance)です。

