RWA(Real World Asset、現実世界資産)は、Web3と従来の金融の深い融合において重要な方向性となりつつあります。従来のDeFiと比較して、RWAプロトコルはチェーン上の資産流通だけでなく、債券、株式、不動産、設備、収益権などの現実世界資産を直接マッピングし、その安全性の境界も「コードの安全性」から「権利の確定、コンプライアンス管理、オフチェーン実行」へと拡大しています。
監査の観点から見ると、RWAの核心的な課題は単に資金の盗難防止だけでなく、コードのロジック、ビジネスルールと現実の法律上の権利が一致していることをどう保証するかにあります。たとえば、一度の権限変更が資産の凍結に対応し、一度の強制送金が実世界の債権の帰属に影響を与える可能性もあります。
本稿では、プロトコルファミリーの分類、標準の実装、そして安全監査の実践を通じて、RWAプロトコルのコアモジュール、一般的なリスク、監査の重点ポイントを体系的に整理し、開発者や監査担当者が現実世界資産のマッピングに向けた安全手法を迅速に構築できるよう支援します。
※ページの都合上、本文はコアフレーム、重要モジュール、結論を優先して掲載します。全文を確認したい場合はGitHub:取得へ。
コード監査の観点から、RWAプロトコルと一般的なDeFiとの最大の違いは三つあります。
第一に、資産の本質が異なる:コードはあくまで「マッピング」の層に過ぎない。
第二に、権限と役割がより密接かつ敏感。
第三に、ビジネスフローがオンチェーンとオフチェーンをまたぐ。
従来のDeFiでは、一つの取引のライフサイクルはほぼ完全にスマートコントラクトにより管理され、呼び出し、計算、状態更新がすべてチェーン上で完結します。
一方、RWAでは、一般的な流れは次の通りです:
ユーザがチェーン上でredeem()やforcedTransfer()を呼び出す→コントラクトが状態を更新しイベントを記録→オフチェーンシステムが通知を受けて、実資産の引き渡しや名義変更、清算を実行→結果を何らかの方法でフィードバック(またはオフチェーンに留める)
典型的なRWAプロジェクトにおいて、安全監査の目的はもはや「資金がハッカーに盗まれるのを防ぐ」だけではなく、少なくとも以下の三つの底線を守ることです。
正確性と安全性:コード自体に誤りがあってはならない。
一致性:コードの挙動がプロジェクトの声明ルールと合致している。
可監査性:将来問題が発生した際に、チェーン上の証拠が明確に説明できる。
本稿では、安全監査の観点からRWAを論じます。
開発者にとっては、「監査から逆算した設計仕様書」として役立つ。
監査担当者にとっては、「RWA監査ガイドライン+チェックリスト」として利用できる。
また、既存の「スマートコントラクト監査」の経験に加え、RWAのプロトコル構造と監査の重点ポイントに関する専門知識も付加します。
目的は、開発者がRWAプロトコルを設計・実装する際にターゲットを絞った安全性を確保し、監査人がRWAプロジェクトに臨む際に、単なるオンチェーン部分だけでなく、現実世界資産のマッピングシナリオに特化した体系的な方法論を持つことです。
この文章では、以下のことには触れません。
各国の規制条文や判例の詳細な議論(必要に応じて「こうした制約が存在する」と言及する程度)
SolidityやERC標準のゼロからの解説(一般的なDeFi/NFT監査経験を前提とする)
プロジェクトの「良し悪し」をTokenomicsの観点から評価しない。コードとRWAモデルの安全性・信頼性・一貫性にのみ焦点を当てる。
安全監査のビジネス観点から、まず以下の四つのカテゴリに大まかに分類します。
証券 / 株式 / 債券型RWA
不動産 / 不動産型RWA
実物 / 設備 / 商品バッチ型RWA
収益権 / 構造化 / 分割所有権型RWA
2.2.1 コンプライアンス証券標準
この標準群は、「規制された証券/証券化商品」をオンチェーンで発行・流通させる方法を解決し、KYC、譲渡制限、強制操作などの規制要件を満たすことを目的とします。
2.2.2 不動産/不動産標準
不動産RWAの核心的難点は、「トークンの発行方法」ではなく、「不動産情報を構造化し、安全にコントラクトに格納する方法」にあります。
2.2.3 物理設備/実物交換標準
この標準は、Token/NFTと現物の紐付けや、交換・利用・抹消のフローをどう実現するか、という二つの課題を解決します。
2.2.4 構造化資産/汎用RWAインターフェース標準
こちらは、「複雑な資産構造」や「統一インターフェース」の問題に焦点を当てた標準群です。
どのカテゴリに属していても、比較的完成度の高いRWAプロトコルのコード構造には、以下のモジュール群が多く見られます。
Tokenコアモジュール
権限・役割モジュール
コンプライアンス/ホワイトリストモジュール
赎回/清算モジュール
メタデータ/資産情報モジュール
アップグレード・ガバナンスモジュール
第一歩:ビジネス資料を読む。資産タイプと標準を特定。
第二歩:コード内で「キーワードを検索」。
第三歩:アーキテクチャ図を作成。
本章では、コードレベルまで深掘りし、現在主流のRWA標準の解剖を行います。
ERC-1400 (UniversalToken)はConsenSysが開発したもので、ERC1400標準に基づく証券型トークンの発行・管理プラットフォームです。分割管理(Partition)、保有(Hold)メカニズム、証明書検証、ファンド発行・トークン交換などの機能を持ち、規制に準拠した証券トークンの発行、取引、管理を目的としています。細粒度の権限制御と規制機能を備えています。
全体のフレームワークは六つのコアモジュールに分かれます。
コア:ERC1400コントラクトは証券トークンの基本ロジックを担い、発行、償還、送金、そして重要な分割帳簿(Partition)を管理。
役割管理(Roles):RBAC(役割ベースアクセス制御)を実現。
検証器(Validator)モジュール:ホワイトリスト管理、ブラックリストフィルタ、証明書署名検証、取引一時停止制御などのコンプライアンスロジックを担う。
拡張:特定ビジネスシナリオ向けの完成品実装。
ユーザ拡張:送信者・受信者フック(Hooks)を通じてトークンのプログラム性を付与。
ツールコントラクト:DomainAware、ERC1820、バッチ操作ツールなどのユーティリティを提供。
2.1 主要データ構造の詳細解説
2.1.1 トークン基本情報
ERC20のメタデータに加え、証券的意味合いのパラメータを導入。
granularity(粒度):最小取引単位(分割可能)
isControllable:規制当局や発行者が必要に応じて強制移転・償還できるかどうか
isIssuable:新規発行可能かどうか
migrated:コントラクトのアップグレード時に新バージョンに移行させる仕組み
2.1.2 分割(Partition)- ERC1400の革新的設計
分割(Partition)メカニズムは、ERC1400の最も革新的な設計の一つです。これにより、一つのトークンコントラクト内のトークンを複数の独立した分割に分け、それぞれが独立した残高と供給量を持つ。
2.1.3 オペレーター(Operator)権限体系
ERC1400は三層のオペレーター権限体系を採用し、柔軟性と安全性のバランスを取っています。
第一層はグローバルコントローラー(Global Controllers):これらのアドレスは、証券発行者や規制当局、その他特定の権限を持つエンティティを代表。
第二層はユーザが許可したオペレーター(Authorized Operators):ERC20のapproveに似るが、より広範な権限を持つ。
第三層は分割オペレーター(Partition Operators):ERC1400特有の詳細な権限制御。
2.1.4 ドキュメント管理システム
ERC1400はERC1643のドキュメント管理標準を統合し、「オンチェーンでの権利確定とオフチェーンでの証拠保存」の法的コンプライアンス課題を解決。
主要な要素は、ドキュメントURI、ハッシュ、タイムスタンプ。
ドキュメントの設定・削除は制御者に限定され、公式ドキュメントの管理を保証。
実務では重要情報の格納に利用。
2.2 コア機能モジュールの分析
2.2.1 発行(Issuance)
証券のライフサイクルの出発点であり、ERC1400は柔軟かつ安全な発行メカニズムを設計。
発行は、MinterまたはOwner役割を持ち、かつ発行可能フラグがONのときのみ実行可能。二重制約により発行権のコントロールを確保。
発行はシンプルな発行と分割発行の二方式。
シンプルはデフォルト分割に追加し、複雑な分類を不要とするシナリオに適用。
分割発行は、どの分割に追加するかを指定可能。
実世界の証券トークン化では、以下のようなシナリオに対応:
IPO / STOの新規発行
プライベート・プレースメント
ストックオプション(ESOP)
配当(株式配当)
2.2.2 償還(Redemption)
証券のライフサイクルの重要なフェーズであり、資産の退出・消滅・供給量の縮小を意味します。
ERC1400は四つの異なる償還パスを実装し、多様なビジネスニーズに対応。
自発的にトークンを破棄する基本償還
承認されたオペレーターによる償還
指定分割の償還
すべての償還は検証とコンプライアンスを経由し、フックや検証器を通じて規制に準拠。
実世界の証券化では、以下のシナリオに対応:
株式買戻し
会社清算分配
債券の満期償還
コンプライアンス違反による強制回収
2.2.3 送金(Transfer)とコンプライアンス
送金は証券取引の核心機能であり、ERC1400は多層の送金メカニズムを設計。
デフォルトの分割送金
明示的な分割操作
送金中のコンプライアンス検査は多層的。
実世界の証券化では:
セカンダリーマーケット取引
DVP(Delivery Versus Payment)
預託口座の再調整
国境越えの規制対応
2.3 拡張フック(Hooks)システム - プラグイン可能なコンプライアンスモジュール
送金メカニズムの検査は、ERC1400のフックシステムに依存。
2.3.1 送信者フック(Sender Hook)
送信前に呼ばれるフックで、ユーザが登録可能。取引量制限や税金自動控除、監査ログ、インサイダー取引監視などに利用。
2.3.2 検証器(Validator)フック
全体のコンプライアンスの中核。ERC1820に登録されたグローバルフックで、KYC/AMLホワイトリスト、制裁リスト、緊急停止、悪意の買収防止、オフチェーン承認証明書検証など。
2.3.3 受取側フック(Recipient Hook)
受取後に呼ばれ、受取側が登録可能。自動配当再投資、預託口座の自動記帳、投票権登録、ETFの申込・償還などに利用。
本章では、コード実装の観点から、UniversalTokenライブラリ内の拡張モジュールの具体的な技術的詳細と設計選択を深掘りします。
3.1 ERC1400TokensValidator - コンプライアンスエンジンの実装
3.1.1 証明書検証メカニズム
ERC1400TokensValidatorの最も特徴的な機能の一つ。オフチェーンの承認とオンチェーンの実行を結びつける仕組みです。複雑なコンプライアンス判断はオフチェーンで行い、オンチェーンでは承認結果の真偽だけを検証。
証明書検証は二つのモード:NonceベースとSaltベース。
3.1.2 ホワイトリスト・ブラックリストの動的管理
RBACに基づき、OpenZeppelinの役割管理ライブラリと連携し、ホワイトリスト・ブラックリストを管理。
3.1.3 Hold機能:条件付き資金ロック
Holdは、資金を実際に移動させずにロックできる仕組み。状態遷移の設計と三層の残高追跡システムにより実現。
六つの状態とそれに対応する操作権限を持つ状態機械。
3.1.4 粒度制御の細粒化管理
ERC1400TokensValidatorは、ERC1400の粒度(Granularity)を超え、各分割ごとに設定可能。これにより、伝統的な市場の「ロットサイズ」に対応。
3.2 ERC1400TokensChecker - 送金検査器
純粋なクエリ(View)インターフェースを提供し、ガスを消費せずに取引の可否をシミュレーション。
3.3 ERC20HoldableToken - 軽量版Hold実装
複雑な分割構造不要なシナリオ向け。ERC20互換で、spendableBalance(利用可能残高)を導入。
3.4 ERC1400HoldableTokenとERC1400HoldableCertificateToken - 組み合わせ型トークンコントラクト
3.4.1 ERC1400HoldableToken - 標準的コンプライアンス型
KYC/AMLに対応し、リアルタイム署名不要なシナリオに適用。
特徴:ホワイトリストのみ。
設定:コンストラクタでValidatorに登録し、certificateActivatedはNone。allowlist、blocklist、holdsは有効。
3.4.2 ERC1400HoldableCertificateToken - 厳格規制型
リアルタイムの二次取引審査が必要なシナリオ向き。
特徴:取引ごとに審査。
設定:NonceBasedまたはSaltBased証明書モードをサポートし、certificateSignerを設定。
比較ポイント:
シナリオ選択ガイド:
デジタル法定通貨・決済(Digital Fiat & Payment Settlement)
SPVを用いたプライベートエクイティ
規制された公開証券(STO)
ERC-1400の役割管理は、単純な階層構造ではなく、多層の権限ガバナンスモデルを構築。
4.1 コアガバナンス層:所有者とコントローラー
システムの「頭脳」。ルール策定と例外処理を担う。
コントラクト所有者(Owner)
役割:システムの最高管理者。システムパラメータ設定の最終権限。
実装例:Ownable.solやERC1400.solのonlyOwner修飾子。
コントローラー(Controller)
役割:規制コンプライアンスのオンチェーン実体。
実装例:ERC1400.solの_controllerリスト、onlyTokenController。
4.2 資産発行層:ミンターとオラクル
資産のライフサイクル管理の「心臓部」。
ミンター(Minter)
役割:証券供給の中核権限。
実装例:MinterRole.solとonlyMinter修飾子。
価格オラクル(PriceOracle)
役割:ファンド発行時の公正な第三者。
実装例:FundIssuer.solのonlyPriceOracle。
トークンコントローラー(TokenController)
役割:ファンドマネージャーのように、資産の発行ルールや手数料、ライフサイクルを管理。
実装例:FundIssuer.solの_tokenControllers。
4.3 運用実行層:オペレーターと取引実行者
日常の価値流通を担う。
オペレーター(Operator)
役割:最も活発な役割。所有者の代理として日常の送金操作を実行。
実装例:ERC1400のisOperatorロジック。
取引実行者(TradeExecuter)
役割:Atomic SwapやDVP取引において、Holdの公証人として、条件を満たせばロック済みの注文を強制実行し資産を移転。
実装例:ERC1400TokensValidatorやSwapsのHoldロジック。
4.4 コンプライアンス・リスク管理層:証明書署名者とホワイトリスト管理者
リスクを識別し、規制に準拠させる免疫システム。
証明書署名者(CertificateSigner)
役割:オフチェーンの規制とオンチェーンの橋渡し。
実装例:ERC1400TokensValidatorの署名検証ロジック。
ホワイトリスト/ブラックリスト管理者(AllowlistAdmin/BlocklistAdmin)
役割:規制の第一線。
実装例:AllowlistedRole、BlocklistedRole。
一時停止(Pauser)
役割:市場の「サーキットブレーカー」。
実装例:Pausableのpause/unpause。
ERC-1400標準群は、単一のトークン標準だけでなく、ツールコントラクトのエコシステムも提供し、RWAの実用化における相互運用性、安全性、効率性の課題を解決します。
5.1 ERC1820登録表
サービスの動的発見を実現。ERC1820はグローバルインターフェース登録表で、コントラクト間の「相手を見つける」仕組みを解決。ERC-1400のアーキテクチャでは、コントラクトが動的に拡張コントラクトを発見・呼び出すための橋渡し役。
5.2 EIP-712ドメイン分離
署名の安全性を確保。EIP-712は構造化データの署名フォーマットを定義し、証明書検証の技術基盤。これにより、単純なメッセージ署名よりも高い安全性とユーザビリティを実現。
5.3 バッチ操作ツール
証券の発行や管理は大量のバッチ操作を伴うことが多い。数百の投資家に証券を発行したり、数千の株主に配当を送る場合、逐一操作は時間とコストがかかる。ERC-1400はこれを効率化。
5.4 資金発行ツール
ファンドの資金配分を効率化。FundIssuerは、従来のファンド申込・分配の流れをオンチェーンで実現し、周期的な発行管理や遅延決済モデルを採用。
5.5 原子交換とDVP(Swaps)
安全な二次市場取引を支援。Swapsコントラクトにより、DVPや原子交換を実現。
監査の観点から、ERC-3643は三つのコアに分かれます。
資産層(Token Contract)
身分層(Identity Registry)
コンプライアンス層(Compliance)
また、Proxy-Implementationパターンを採用し、アップグレードや拡張を可能にしています。工場(Factory)コントラクトや権限管理(Roles)コントラクトも導入。
ERC-3643のデータは複数のコンポーネントに分散し、相互に参照し合う。
トークンコントラクトのコンプライアンス指標
IdentityRegistryの登録ネットワーク
Complianceのモジュールリスト
ERC-3643は、transferをオーバーライドし、三つのチェックを挿入。
凍結状態の確認(_frozen、_frozenTokens)
他コントラクトや規制の検証
コンプライアンスフックの呼び出し
これにより、法的規制に対応した強制操作も可能。
強制送金(Forced Transfer)
部分凍結(Freeze Partial Tokens)
リカバリーアドレス(Recovery Address)
Identity RegistryのisVerified(address)は、ユーザのアドレスではなく、証明書や資格の有無を検証。
created、destroyed、transferred関数を通じて状態同期と通知。
ERC-3643の柔軟性は、登録システムの設計に由来。
TrustedIssuersRegistry:信頼されたClaim発行者のホワイトリスト管理。
ClaimTopicsRegistry:必要な証明書タイプの管理(AND条件で連結)、これがisVerifiedの起点。
従来のDefaultComplianceやBasicComplianceを含む、旧式のコンプライアンス体系も併存。
ERC-3643の権限体系は、システム管理とビジネス操作に分かれる。
Owner:システムの主導者。Registryのバインド・解除、コンプライアンスモジュールの追加・削除、アップグレード。
Agent:日常運用者。Rolesライブラリのアドレス集合を管理し、mint、burn、forcedTransfer、freezeを実行。
3.4 ツールコントラクト
展開と管理を容易にするためのツール群。
TREXFactory:CREATE2を用いたコントラクト展開。
TREXImplementationAuthority:アップグレード管理。特殊な代理パターンを採用。
用途:REITs、抵当を用いたステーブルコイン借入、クロスボーダー取引。
用途:共有レンタルプラットフォーム、高価物流追跡、車載金融。
用途:KYC対応の流動性プール、証券型トークン発行(STO)、AML・資金凍結。
四、安全なコーディング実践 無論、RWAの資産構造や標準に関わらず、厳格なコード実装はコンプライアンスとビジネス革新の土台です。
多くのRWAプロトコルでは、「管理者がいるかどうか」ではなく、「どの管理者がどの程度できるか」が重要。
一般的な役割例:所有者、ガバナンスマルチシグ、アップグレード管理者、コンプライアンス管理者、KYC/ホワイトリスト管理者、凍結管理者、資産登録/登録管理者、赎回管理者、オラクル管理者、リスクパラメータ管理者、財務/金庫管理者など。
開発者向け:
役割-権限マトリクスを最初に描く。
明確な権限フレームワークを実装。
職責分離を徹底し、スーパー管理者の一人勝ちを避ける。
監査担当者向け:
高リスク関数をリストアップ。
権限マトリクスと照合。
状態遷移は、トークンや資産がどの状態にあり、どの条件で遷移し、どの操作が許可・禁止されるかを定義。
不変条件は、呼び出し順や操作に関わらず常に成立すべき制約。これが破られると設計や実装の重大な問題。
良い書き方は:
ビジネスから状態遷移を導き、enumやフラグに落とす。
各外部呼び出しに前提条件を明示。
重要な不変条件をコード内に記述。
監査の観点では:
ライフサイクルと不変条件をドキュメントから抽出し、コードと照合。
全ての遷移パスを列挙し、抜け道やバイパスがないか検証。
繰り返し呼び出しや交差呼び出しによる不変条件の破壊をチェック。
RWAの特徴は、オンチェーンはあくまでマッピングであり、実資産はオフチェーンに存在すること。
開発者は資産関係を明確にし、誤解を避ける。
監査は、変数が何を表すのか一目でわかるように。
設計の原則:
「帳簿変数」と「設定・中間変数」を区別。
「このトークンはどの資産に対応しているか」を明示。
すべての資産変動に明確な閉ループを持たせる。
監査では、次の二つのパターンで問題が露呈。
「合わない」
「区別できない」
これらは直ちに攻撃に直結しないが、長期的にはリスク増。
ほとんどのRWAは、Proxyパターン(Transparent/UUPS)とマルチシグやガバナンスを併用してアップグレード管理。
実装時の注意点:
アップグレード粒度の確認。
初期化と管理者入口の固定。
アップグレード前後の状態互換性。
監査では、リスクの過小評価に注意。
「今は安全でも、将来のアップグレードで安全性が崩れる可能性」
「論理的に問題ないと見えても、弱いアップグレード権限により破壊されるリスク」
したがって、実装だけでなく、以下も確認:
誰がアップグレード権を持つか(マルチシグ/Timelock)
アップグレードの透明性(提案・投票・遅延)
バックドアの有無(直接実装を書き換え可能か)
RWAでは、イベントは単なるデータ取得のためだけでなく、将来の監査・証拠・紛争解決・規制報告の基盤。
開発者は、次の点に注意。
重要な操作には必ずイベントを記録(発行、破棄、送金、凍結、解凍、強制送金)
ホワイトリスト・ブラックリストの変化、KYC結果の更新
償還リクエストの作成・処理・完了・拒否
アップグレードやパラメータ変更、役割変更
監査側は、イベントの抜けや不備を見逃さない。
3.34M 人気度
4.19M 人気度
53.2K 人気度
116.85M 人気度
5.37M 人気度
リンクによる実世界資産:プロトコルファミリーから安全実践への展開
RWA(Real World Asset、現実世界資産)は、Web3と従来の金融の深い融合において重要な方向性となりつつあります。従来のDeFiと比較して、RWAプロトコルはチェーン上の資産流通だけでなく、債券、株式、不動産、設備、収益権などの現実世界資産を直接マッピングし、その安全性の境界も「コードの安全性」から「権利の確定、コンプライアンス管理、オフチェーン実行」へと拡大しています。
監査の観点から見ると、RWAの核心的な課題は単に資金の盗難防止だけでなく、コードのロジック、ビジネスルールと現実の法律上の権利が一致していることをどう保証するかにあります。たとえば、一度の権限変更が資産の凍結に対応し、一度の強制送金が実世界の債権の帰属に影響を与える可能性もあります。
本稿では、プロトコルファミリーの分類、標準の実装、そして安全監査の実践を通じて、RWAプロトコルのコアモジュール、一般的なリスク、監査の重点ポイントを体系的に整理し、開発者や監査担当者が現実世界資産のマッピングに向けた安全手法を迅速に構築できるよう支援します。
※ページの都合上、本文はコアフレーム、重要モジュール、結論を優先して掲載します。全文を確認したい場合はGitHub:取得へ。
一、序論:コード監査の視点から見るRWA
1.1 RWAプロトコル導入の複合的安全性と監査の課題
コード監査の観点から、RWAプロトコルと一般的なDeFiとの最大の違いは三つあります。
第一に、資産の本質が異なる:コードはあくまで「マッピング」の層に過ぎない。
第二に、権限と役割がより密接かつ敏感。
第三に、ビジネスフローがオンチェーンとオフチェーンをまたぐ。
従来のDeFiでは、一つの取引のライフサイクルはほぼ完全にスマートコントラクトにより管理され、呼び出し、計算、状態更新がすべてチェーン上で完結します。
一方、RWAでは、一般的な流れは次の通りです:
ユーザがチェーン上でredeem()やforcedTransfer()を呼び出す→コントラクトが状態を更新しイベントを記録→オフチェーンシステムが通知を受けて、実資産の引き渡しや名義変更、清算を実行→結果を何らかの方法でフィードバック(またはオフチェーンに留める)
1.2 RWA監査の核心的使命
典型的なRWAプロジェクトにおいて、安全監査の目的はもはや「資金がハッカーに盗まれるのを防ぐ」だけではなく、少なくとも以下の三つの底線を守ることです。
正確性と安全性:コード自体に誤りがあってはならない。
一致性:コードの挙動がプロジェクトの声明ルールと合致している。
可監査性:将来問題が発生した際に、チェーン上の証拠が明確に説明できる。
1.3 本稿の視点と範囲
本稿では、安全監査の観点からRWAを論じます。
開発者にとっては、「監査から逆算した設計仕様書」として役立つ。
監査担当者にとっては、「RWA監査ガイドライン+チェックリスト」として利用できる。
また、既存の「スマートコントラクト監査」の経験に加え、RWAのプロトコル構造と監査の重点ポイントに関する専門知識も付加します。
目的は、開発者がRWAプロトコルを設計・実装する際にターゲットを絞った安全性を確保し、監査人がRWAプロジェクトに臨む際に、単なるオンチェーン部分だけでなく、現実世界資産のマッピングシナリオに特化した体系的な方法論を持つことです。
この文章では、以下のことには触れません。
各国の規制条文や判例の詳細な議論(必要に応じて「こうした制約が存在する」と言及する程度)
SolidityやERC標準のゼロからの解説(一般的なDeFi/NFT監査経験を前提とする)
プロジェクトの「良し悪し」をTokenomicsの観点から評価しない。コードとRWAモデルの安全性・信頼性・一貫性にのみ焦点を当てる。
二、RWAプロトコルとコードモジュールの概要
2.1 ビジネス観点から:まずどのタイプのRWAかを判断
安全監査のビジネス観点から、まず以下の四つのカテゴリに大まかに分類します。
証券 / 株式 / 債券型RWA
不動産 / 不動産型RWA
実物 / 設備 / 商品バッチ型RWA
収益権 / 構造化 / 分割所有権型RWA
2.2 標準から実装へ:RWAの代表的プロトコル族の「十分な理解」
2.2.1 コンプライアンス証券標準
この標準群は、「規制された証券/証券化商品」をオンチェーンで発行・流通させる方法を解決し、KYC、譲渡制限、強制操作などの規制要件を満たすことを目的とします。
2.2.2 不動産/不動産標準
不動産RWAの核心的難点は、「トークンの発行方法」ではなく、「不動産情報を構造化し、安全にコントラクトに格納する方法」にあります。
2.2.3 物理設備/実物交換標準
この標準は、Token/NFTと現物の紐付けや、交換・利用・抹消のフローをどう実現するか、という二つの課題を解決します。
2.2.4 構造化資産/汎用RWAインターフェース標準
こちらは、「複雑な資産構造」や「統一インターフェース」の問題に焦点を当てた標準群です。
2.3 典型的なRWAコントラクトアーキテクチャ
どのカテゴリに属していても、比較的完成度の高いRWAプロトコルのコード構造には、以下のモジュール群が多く見られます。
Tokenコアモジュール
権限・役割モジュール
コンプライアンス/ホワイトリストモジュール
赎回/清算モジュール
メタデータ/資産情報モジュール
アップグレード・ガバナンスモジュール
2.4 RWAの迅速な特定手順
第一歩:ビジネス資料を読む。資産タイプと標準を特定。
第二歩:コード内で「キーワードを検索」。
第三歩:アーキテクチャ図を作成。
三、プロトコル族の深層解剖:主流RWA標準のコンプライアンスモデル
本章では、コードレベルまで深掘りし、現在主流のRWA標準の解剖を行います。
I. 証券型RWA:ERC-1400 (UniversalToken)の深層分析
1、コントラクト全体のアーキテクチャ
ERC-1400 (UniversalToken)はConsenSysが開発したもので、ERC1400標準に基づく証券型トークンの発行・管理プラットフォームです。分割管理(Partition)、保有(Hold)メカニズム、証明書検証、ファンド発行・トークン交換などの機能を持ち、規制に準拠した証券トークンの発行、取引、管理を目的としています。細粒度の権限制御と規制機能を備えています。
全体のフレームワークは六つのコアモジュールに分かれます。
コア:ERC1400コントラクトは証券トークンの基本ロジックを担い、発行、償還、送金、そして重要な分割帳簿(Partition)を管理。
役割管理(Roles):RBAC(役割ベースアクセス制御)を実現。
検証器(Validator)モジュール:ホワイトリスト管理、ブラックリストフィルタ、証明書署名検証、取引一時停止制御などのコンプライアンスロジックを担う。
拡張:特定ビジネスシナリオ向けの完成品実装。
ユーザ拡張:送信者・受信者フック(Hooks)を通じてトークンのプログラム性を付与。
ツールコントラクト:DomainAware、ERC1820、バッチ操作ツールなどのユーティリティを提供。
2、ERC1400 (UniversalToken)のコアコントラクト深掘り
2.1 主要データ構造の詳細解説
2.1.1 トークン基本情報
ERC20のメタデータに加え、証券的意味合いのパラメータを導入。
granularity(粒度):最小取引単位(分割可能)
isControllable:規制当局や発行者が必要に応じて強制移転・償還できるかどうか
isIssuable:新規発行可能かどうか
migrated:コントラクトのアップグレード時に新バージョンに移行させる仕組み
2.1.2 分割(Partition)- ERC1400の革新的設計
分割(Partition)メカニズムは、ERC1400の最も革新的な設計の一つです。これにより、一つのトークンコントラクト内のトークンを複数の独立した分割に分け、それぞれが独立した残高と供給量を持つ。
2.1.3 オペレーター(Operator)権限体系
ERC1400は三層のオペレーター権限体系を採用し、柔軟性と安全性のバランスを取っています。
第一層はグローバルコントローラー(Global Controllers):これらのアドレスは、証券発行者や規制当局、その他特定の権限を持つエンティティを代表。
第二層はユーザが許可したオペレーター(Authorized Operators):ERC20のapproveに似るが、より広範な権限を持つ。
第三層は分割オペレーター(Partition Operators):ERC1400特有の詳細な権限制御。
2.1.4 ドキュメント管理システム
ERC1400はERC1643のドキュメント管理標準を統合し、「オンチェーンでの権利確定とオフチェーンでの証拠保存」の法的コンプライアンス課題を解決。
主要な要素は、ドキュメントURI、ハッシュ、タイムスタンプ。
ドキュメントの設定・削除は制御者に限定され、公式ドキュメントの管理を保証。
実務では重要情報の格納に利用。
2.2 コア機能モジュールの分析
2.2.1 発行(Issuance)
証券のライフサイクルの出発点であり、ERC1400は柔軟かつ安全な発行メカニズムを設計。
発行は、MinterまたはOwner役割を持ち、かつ発行可能フラグがONのときのみ実行可能。二重制約により発行権のコントロールを確保。
発行はシンプルな発行と分割発行の二方式。
シンプルはデフォルト分割に追加し、複雑な分類を不要とするシナリオに適用。
分割発行は、どの分割に追加するかを指定可能。
実世界の証券トークン化では、以下のようなシナリオに対応:
IPO / STOの新規発行
プライベート・プレースメント
ストックオプション(ESOP)
配当(株式配当)
2.2.2 償還(Redemption)
証券のライフサイクルの重要なフェーズであり、資産の退出・消滅・供給量の縮小を意味します。
ERC1400は四つの異なる償還パスを実装し、多様なビジネスニーズに対応。
自発的にトークンを破棄する基本償還
承認されたオペレーターによる償還
指定分割の償還
すべての償還は検証とコンプライアンスを経由し、フックや検証器を通じて規制に準拠。
実世界の証券化では、以下のシナリオに対応:
株式買戻し
会社清算分配
債券の満期償還
コンプライアンス違反による強制回収
2.2.3 送金(Transfer)とコンプライアンス
送金は証券取引の核心機能であり、ERC1400は多層の送金メカニズムを設計。
デフォルトの分割送金
明示的な分割操作
送金中のコンプライアンス検査は多層的。
実世界の証券化では:
セカンダリーマーケット取引
DVP(Delivery Versus Payment)
預託口座の再調整
国境越えの規制対応
2.3 拡張フック(Hooks)システム - プラグイン可能なコンプライアンスモジュール
送金メカニズムの検査は、ERC1400のフックシステムに依存。
2.3.1 送信者フック(Sender Hook)
送信前に呼ばれるフックで、ユーザが登録可能。取引量制限や税金自動控除、監査ログ、インサイダー取引監視などに利用。
2.3.2 検証器(Validator)フック
全体のコンプライアンスの中核。ERC1820に登録されたグローバルフックで、KYC/AMLホワイトリスト、制裁リスト、緊急停止、悪意の買収防止、オフチェーン承認証明書検証など。
2.3.3 受取側フック(Recipient Hook)
受取後に呼ばれ、受取側が登録可能。自動配当再投資、預託口座の自動記帳、投票権登録、ETFの申込・償還などに利用。
3、拡張コントラクトモジュールの詳細解説
本章では、コード実装の観点から、UniversalTokenライブラリ内の拡張モジュールの具体的な技術的詳細と設計選択を深掘りします。
3.1 ERC1400TokensValidator - コンプライアンスエンジンの実装
3.1.1 証明書検証メカニズム
ERC1400TokensValidatorの最も特徴的な機能の一つ。オフチェーンの承認とオンチェーンの実行を結びつける仕組みです。複雑なコンプライアンス判断はオフチェーンで行い、オンチェーンでは承認結果の真偽だけを検証。
証明書検証は二つのモード:NonceベースとSaltベース。
3.1.2 ホワイトリスト・ブラックリストの動的管理
RBACに基づき、OpenZeppelinの役割管理ライブラリと連携し、ホワイトリスト・ブラックリストを管理。
3.1.3 Hold機能:条件付き資金ロック
Holdは、資金を実際に移動させずにロックできる仕組み。状態遷移の設計と三層の残高追跡システムにより実現。
六つの状態とそれに対応する操作権限を持つ状態機械。
3.1.4 粒度制御の細粒化管理
ERC1400TokensValidatorは、ERC1400の粒度(Granularity)を超え、各分割ごとに設定可能。これにより、伝統的な市場の「ロットサイズ」に対応。
3.2 ERC1400TokensChecker - 送金検査器
純粋なクエリ(View)インターフェースを提供し、ガスを消費せずに取引の可否をシミュレーション。
3.3 ERC20HoldableToken - 軽量版Hold実装
複雑な分割構造不要なシナリオ向け。ERC20互換で、spendableBalance(利用可能残高)を導入。
3.4 ERC1400HoldableTokenとERC1400HoldableCertificateToken - 組み合わせ型トークンコントラクト
3.4.1 ERC1400HoldableToken - 標準的コンプライアンス型
KYC/AMLに対応し、リアルタイム署名不要なシナリオに適用。
特徴:ホワイトリストのみ。
設定:コンストラクタでValidatorに登録し、certificateActivatedはNone。allowlist、blocklist、holdsは有効。
3.4.2 ERC1400HoldableCertificateToken - 厳格規制型
リアルタイムの二次取引審査が必要なシナリオ向き。
特徴:取引ごとに審査。
設定:NonceBasedまたはSaltBased証明書モードをサポートし、certificateSignerを設定。
比較ポイント:
シナリオ選択ガイド:
デジタル法定通貨・決済(Digital Fiat & Payment Settlement)
SPVを用いたプライベートエクイティ
規制された公開証券(STO)
4、役割管理モジュール
ERC-1400の役割管理は、単純な階層構造ではなく、多層の権限ガバナンスモデルを構築。
4.1 コアガバナンス層:所有者とコントローラー
システムの「頭脳」。ルール策定と例外処理を担う。
コントラクト所有者(Owner)
役割:システムの最高管理者。システムパラメータ設定の最終権限。
実装例:Ownable.solやERC1400.solのonlyOwner修飾子。
コントローラー(Controller)
役割:規制コンプライアンスのオンチェーン実体。
実装例:ERC1400.solの_controllerリスト、onlyTokenController。
4.2 資産発行層:ミンターとオラクル
資産のライフサイクル管理の「心臓部」。
ミンター(Minter)
役割:証券供給の中核権限。
実装例:MinterRole.solとonlyMinter修飾子。
価格オラクル(PriceOracle)
役割:ファンド発行時の公正な第三者。
実装例:FundIssuer.solのonlyPriceOracle。
トークンコントローラー(TokenController)
役割:ファンドマネージャーのように、資産の発行ルールや手数料、ライフサイクルを管理。
実装例:FundIssuer.solの_tokenControllers。
4.3 運用実行層:オペレーターと取引実行者
日常の価値流通を担う。
オペレーター(Operator)
役割:最も活発な役割。所有者の代理として日常の送金操作を実行。
実装例:ERC1400のisOperatorロジック。
取引実行者(TradeExecuter)
役割:Atomic SwapやDVP取引において、Holdの公証人として、条件を満たせばロック済みの注文を強制実行し資産を移転。
実装例:ERC1400TokensValidatorやSwapsのHoldロジック。
4.4 コンプライアンス・リスク管理層:証明書署名者とホワイトリスト管理者
リスクを識別し、規制に準拠させる免疫システム。
証明書署名者(CertificateSigner)
役割:オフチェーンの規制とオンチェーンの橋渡し。
実装例:ERC1400TokensValidatorの署名検証ロジック。
ホワイトリスト/ブラックリスト管理者(AllowlistAdmin/BlocklistAdmin)
役割:規制の第一線。
実装例:AllowlistedRole、BlocklistedRole。
一時停止(Pauser)
役割:市場の「サーキットブレーカー」。
実装例:Pausableのpause/unpause。
5、ツールコントラクト:システムの相互運用性と利便性向上
ERC-1400標準群は、単一のトークン標準だけでなく、ツールコントラクトのエコシステムも提供し、RWAの実用化における相互運用性、安全性、効率性の課題を解決します。
5.1 ERC1820登録表
サービスの動的発見を実現。ERC1820はグローバルインターフェース登録表で、コントラクト間の「相手を見つける」仕組みを解決。ERC-1400のアーキテクチャでは、コントラクトが動的に拡張コントラクトを発見・呼び出すための橋渡し役。
5.2 EIP-712ドメイン分離
署名の安全性を確保。EIP-712は構造化データの署名フォーマットを定義し、証明書検証の技術基盤。これにより、単純なメッセージ署名よりも高い安全性とユーザビリティを実現。
5.3 バッチ操作ツール
証券の発行や管理は大量のバッチ操作を伴うことが多い。数百の投資家に証券を発行したり、数千の株主に配当を送る場合、逐一操作は時間とコストがかかる。ERC-1400はこれを効率化。
5.4 資金発行ツール
ファンドの資金配分を効率化。FundIssuerは、従来のファンド申込・分配の流れをオンチェーンで実現し、周期的な発行管理や遅延決済モデルを採用。
5.5 原子交換とDVP(Swaps)
安全な二次市場取引を支援。Swapsコントラクトにより、DVPや原子交換を実現。
II. 証券型RWA:ERC-3643 (T-REX)の深層分析
1、コントラクト全体のアーキテクチャ
監査の観点から、ERC-3643は三つのコアに分かれます。
資産層(Token Contract)
身分層(Identity Registry)
コンプライアンス層(Compliance)
また、Proxy-Implementationパターンを採用し、アップグレードや拡張を可能にしています。工場(Factory)コントラクトや権限管理(Roles)コントラクトも導入。
2、ERC-3643 (T-REX)のコアコントラクト深掘り
2.1 主要データ構造の詳細解説
ERC-3643のデータは複数のコンポーネントに分散し、相互に参照し合う。
トークンコントラクトのコンプライアンス指標
IdentityRegistryの登録ネットワーク
Complianceのモジュールリスト
2.2 コア機能モジュールの分析
ERC-3643は、transferをオーバーライドし、三つのチェックを挿入。
凍結状態の確認(_frozen、_frozenTokens)
他コントラクトや規制の検証
コンプライアンスフックの呼び出し
これにより、法的規制に対応した強制操作も可能。
強制送金(Forced Transfer)
部分凍結(Freeze Partial Tokens)
リカバリーアドレス(Recovery Address)
Identity RegistryのisVerified(address)は、ユーザのアドレスではなく、証明書や資格の有無を検証。
created、destroyed、transferred関数を通じて状態同期と通知。
3、拡張コントラクトの詳細解説
3.1 レジストリ体系
ERC-3643の柔軟性は、登録システムの設計に由来。
TrustedIssuersRegistry:信頼されたClaim発行者のホワイトリスト管理。
ClaimTopicsRegistry:必要な証明書タイプの管理(AND条件で連結)、これがisVerifiedの起点。
3.2 レガシーコンプライアンス
従来のDefaultComplianceやBasicComplianceを含む、旧式のコンプライアンス体系も併存。
3.3 役割管理
ERC-3643の権限体系は、システム管理とビジネス操作に分かれる。
Owner:システムの主導者。Registryのバインド・解除、コンプライアンスモジュールの追加・削除、アップグレード。
Agent:日常運用者。Rolesライブラリのアドレス集合を管理し、mint、burn、forcedTransfer、freezeを実行。
3.4 ツールコントラクト
展開と管理を容易にするためのツール群。
TREXFactory:CREATE2を用いたコントラクト展開。
TREXImplementationAuthority:アップグレード管理。特殊な代理パターンを採用。
III. 垂直シナリオと拡張標準の簡単解説
1、不動産RWA:ERC-6065 (Real Estate Token)
用途:REITs、抵当を用いたステーブルコイン借入、クロスボーダー取引。
2、IoT・実物資産:ERC-4519
用途:共有レンタルプラットフォーム、高価物流追跡、車載金融。
3、汎用コンプライアンス標準:ERC-7943 (uRWA)
用途:KYC対応の流動性プール、証券型トークン発行(STO)、AML・資金凍結。
四、安全なコーディング実践 無論、RWAの資産構造や標準に関わらず、厳格なコード実装はコンプライアンスとビジネス革新の土台です。
3.1 権限と役割の設計:誰が何をできるかを明確に
多くのRWAプロトコルでは、「管理者がいるかどうか」ではなく、「どの管理者がどの程度できるか」が重要。
一般的な役割例:所有者、ガバナンスマルチシグ、アップグレード管理者、コンプライアンス管理者、KYC/ホワイトリスト管理者、凍結管理者、資産登録/登録管理者、赎回管理者、オラクル管理者、リスクパラメータ管理者、財務/金庫管理者など。
開発者向け:
役割-権限マトリクスを最初に描く。
明確な権限フレームワークを実装。
職責分離を徹底し、スーパー管理者の一人勝ちを避ける。
監査担当者向け:
高リスク関数をリストアップ。
権限マトリクスと照合。
3.2 状態遷移と不変条件:ビジネスライフサイクルをコードに落とし込む
状態遷移は、トークンや資産がどの状態にあり、どの条件で遷移し、どの操作が許可・禁止されるかを定義。
不変条件は、呼び出し順や操作に関わらず常に成立すべき制約。これが破られると設計や実装の重大な問題。
良い書き方は:
ビジネスから状態遷移を導き、enumやフラグに落とす。
各外部呼び出しに前提条件を明示。
重要な不変条件をコード内に記述。
監査の観点では:
ライフサイクルと不変条件をドキュメントから抽出し、コードと照合。
全ての遷移パスを列挙し、抜け道やバイパスがないか検証。
繰り返し呼び出しや交差呼び出しによる不変条件の破壊をチェック。
3.3 資産マッピングと帳簿整合性:オンチェーンとオフチェーンの資産「数値が合うか」
RWAの特徴は、オンチェーンはあくまでマッピングであり、実資産はオフチェーンに存在すること。
開発者は資産関係を明確にし、誤解を避ける。
監査は、変数が何を表すのか一目でわかるように。
設計の原則:
「帳簿変数」と「設定・中間変数」を区別。
「このトークンはどの資産に対応しているか」を明示。
すべての資産変動に明確な閉ループを持たせる。
監査では、次の二つのパターンで問題が露呈。
「合わない」
「区別できない」
これらは直ちに攻撃に直結しないが、長期的にはリスク増。
3.4 アップグレードと代理モデル:未来の自分に備える
ほとんどのRWAは、Proxyパターン(Transparent/UUPS)とマルチシグやガバナンスを併用してアップグレード管理。
実装時の注意点:
アップグレード粒度の確認。
初期化と管理者入口の固定。
アップグレード前後の状態互換性。
監査では、リスクの過小評価に注意。
「今は安全でも、将来のアップグレードで安全性が崩れる可能性」
「論理的に問題ないと見えても、弱いアップグレード権限により破壊されるリスク」
したがって、実装だけでなく、以下も確認:
誰がアップグレード権を持つか(マルチシグ/Timelock)
アップグレードの透明性(提案・投票・遅延)
バックドアの有無(直接実装を書き換え可能か)
3.5 イベントとログ:未来の証拠と規制対応
RWAでは、イベントは単なるデータ取得のためだけでなく、将来の監査・証拠・紛争解決・規制報告の基盤。
開発者は、次の点に注意。
重要な操作には必ずイベントを記録(発行、破棄、送金、凍結、解凍、強制送金)
ホワイトリスト・ブラックリストの変化、KYC結果の更新
償還リクエストの作成・処理・完了・拒否
アップグレードやパラメータ変更、役割変更
監査側は、イベントの抜けや不備を見逃さない。