【技術者向けテックノート03】ERCと署名規格は何を標準化しているのか
はじめに
ステーブルコイン、トークン化預金、トークン化資産、AIエージェント決済を実装しようとすると、ERC-20、EIP-712、ERC-2612、ERC-3009といった番号が次々に登場する。番号を覚えるだけでは、それらが何を共通化し、何を共通化していないのかは見えてこない。
ERCは、異なるウォレット、アプリケーション、スマートコントラクトが同じ資産や署名を扱うための共通インターフェースである。しかし、法的権利、発行残高の裏付け、顧客管理、業務運用、事故時の責任まで自動的に標準化するわけではない。
本号では、トークンの状態モデルと署名による認可モデルを一つの流れとして整理する。特に、ERC-20のAllowance、EIP-712のDomain Separator、ERC-2612のPermit、ERC-3009のAuthorizationの違いを、コード、JSON、シーケンス、リプレイ対策まで落として理解する。
本号の目次
1.最初に結論
2.EIPとERCは何が違うのか
3.規格のStatusをどう読むか
4.トークン規格を状態モデルで整理する
5.ERC-20の標準機能
6.ここから有料:AllowanceとApproveの実装リスク
7.ERC-721とERC-1155
8.ERC-4626のVaultモデル
9.ERC-3643と規制対応トークン
10.EIP-712の構造化署名
11.ERC-2612 Permit
12.ERC-3009 Transfer With Authorization
13.Permit2とRelayer
14.署名再利用・Front-running・失効
15.金融ユースケース別の規格選定
16.PoCアーキテクチャと実装例
17.実装チェックリスト
18.まとめ・参考資料
1.最初に結論
本号の結論は、次の七点である。
· ERCはアプリケーション間の共通インターフェースであり、金融商品の法的性質や業務運用を自動的に決めるものではない。
· ERC-20、ERC-721、ERC-1155、ERC-4626は、異なる資産状態モデルを標準化している。
· ERC-20のapprove / transferFromは柔軟だが、Allowanceの残存、変更競合、無制限承認というリスクがある。
· EIP-712は意味のある構造化データを署名できるが、それだけではReplay Attackを防げない。
· ERC-2612は署名でAllowanceを更新し、ERC-3009は署名でTransferそのものを認可する。
· 規制対応トークンではERC-20互換だけでは不十分で、Identity Registry、Compliance、Freeze、Recovery等が必要になる。
· 規格選定ではStatus、実装採用、Wallet対応、Nonce、期限、権限、運用監視を一体で評価する。

番号が付いていることと、Finalであること、広く実装されていること、金融要件に適合することは、それぞれ別の問題である。
2.EIPとERCは何が違うのか
EIP(Ethereum Improvement Proposal)は、Ethereumの新機能、標準、プロセスを提案・記録する設計文書である。EIP-1は、EIPを「技術仕様とその理由を示す文書」と位置付け、コミュニティ内での合意形成と反対意見の記録を著者の責任としている。
Standards Track EIPには、Core、Networking、Interface、ERCなどのCategoryがある。ERCはEthereum Request for Commentsの略として使われ、主にアプリケーションレベルの規約を扱う。トークン規格や署名、Wallet機能などがここに含まれる。

3.規格のStatusをどう読むか
EIPのStatusは、仕様の成熟度を示す。Draftは議論・変更の可能性がある状態、Reviewは最終レビュー、Finalは確定した標準である。StagnantやWithdrawnは、停止または撤回された提案である。

2026年7月時点で、ERC-20、ERC-721、ERC-1155、ERC-4626、ERC-3643、EIP-712、ERC-2612は公式ページ上でFinalである。一方、ERC-3009はDraftである。Draftでも実装採用される場合があるため、Statusだけで利用可否を決めず、実装互換性と変更リスクを評価する。
4.トークン規格を状態モデルで整理する

トークン規格は「何をチェーン上の状態として持つか」によって分類すると理解しやすい。

「RWAだからERC-721」「金融商品だからERC-20」と機械的に決めるのは危険である。個別性、分割可能性、複数銘柄、原資産と持分の換算関係を先に定義し、その後で規格を選ぶ。
5.ERC-20の標準機能
ERC-20は、同質で分割可能なTokenを扱うための最も基本的なInterfaceである。WalletやExchange、Smart Contractが異なるTokenを共通の方法で扱えるように、残高照会、移転、第三者への支出権限を標準化する。
Code 1 Core ERC-20 interface
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
ERC-20が共通化するのはInterfaceであり、Mint、Burn、Freeze、Pause、Allowlist、Clawback、裏付資産、償還、顧客IDとの対応を必須化するものではない。金融Tokenでは、これらを追加実装または別Contractで構成する。

ここから先では、ERC-20のAllowanceリスク、個別資産・Vault・規制対応Token、構造化署名、Permit、Authorization、Replay対策を、コードとシーケンスに落として解説する。
ここから先は
¥ 980
この記事が気に入ったらチップで応援してみませんか?
