EIP-712 とは? 署名付き注文があなたの資金を守る仕組み
EIP-712 を使うと、中身の読めない16進数ではなく、読める構造化データに署名できます。ノンカストディアル取引を安全かつ検証可能にする仕組みを解説します。
ノンカストディアルの取引は、どれもひとつの行為の上に成り立っています。メッセージへの署名です。EIP-712 は、その署名を安心して渡せるものにする Ethereum の規格です。読める、範囲が限られている、改ざんできない。暗号学の専門用語なしで、仕組みを説明します。
EIP-712 が解決した問題
初期の暗号資産の署名は危険でした。ウォレットが差し出してくるのは、読めない16進数の塊。10ドルの取引を認めているのか、ウォレットを空にする許可を出しているのか、知るすべがありません。いわゆるブラインド署名です。悪意あるアプリは、まさにそこを突いてきました。
EIP-712 は型付きの構造化データに署名させることで、これを解決しました。項目に名前が付いたメッセージなので、ウォレットがふつうの言葉で表示できます。0x9fa3... ではなく、承認する前に実際の注文、つまりトークン、価格、数量、売買の向きが見えるのです。
取引で何に署名しているのか
Pots Market のようなノンカストディアルのプラットフォームで注文を出すと、ウォレットに構造化された注文が表示され、あなたはそれに秘密鍵で署名します。その署名が認めるのはその注文だけで、ほかには何も認めません。
Order
token: YES (Will event X happen?)
side: BUY
price: 0.62
size: 100
maker: 0xYourAddress
安全を支えている性質は3つです。
- 読める:本当の条件が見えるので、別のものに署名させられることがありません。
- 範囲が限られている:署名が有効なのはこの注文の項目だけ。どれかひとつでも変えれば、署名は無効になります。
- ドメインに紐づく:EIP-712 には「ドメイン」(チェーン、コントラクト、アプリ)が含まれるので、あるコントラクト向けの署名を別のコントラクトで使い回すことはできません。
なぜ取引がノンカストディアルになるのか
注文はあなたの鍵で署名され、オンチェーンで検証されるので、どんな仲介者も書き換えられません。アプリは署名済みの注文を決済用のコントラクトへ届けますが、価格を変えることも、売買を逆にすることも、数量を水増しすることもできません。どこか一か所いじれば署名が壊れるからです。資金を預かることもなく、決済はオンチェーンで直接行われます。これがモデル全体をノンカストディアルにしています。
Pots Market では、注文は Polygon 上の Polymarket の監査済み CTF Exchange で決済され、それぞれにオンチェーンの帰属コードが付きます。だから、正しく経由したと信じるのではなく、自分で確かめられます。
それでも気をつけたいこと
EIP-712 が守るのは注文であって、ウォレット全体ではありません。
- 署名の画面は毎回読む。 規格のおかげで条件は見えるようになっています。実際に目を通しましょう。
- ドメインを確認する。 コントラクトやアプリが、取引するつもりの場所と一致しているかを見ます。
- 古い承認は取り消す。 トークンの承認は注文の署名とは別物です。定期的に見直してください。
まとめ
EIP-712 は、危険なブラインド署名を、読めて改ざんできない承認に変えました。資産を預けずに取引できるのは、この地味な規格のおかげです。自分が意図したとおりのものに署名し、それをチェーンが守らせる。全体の中でどう位置づけられるかは、Pots Market のセキュリティモデルで確認できます。