02 · 主要概念
前章では Project RWA の目的と統合レベルを説明しました。本章では、1 つの資産と 1 人の投資家を起点に、後続プロセスで使う主要オブジェクトを説明します。
2.1 Token:資産持分
各 RWA 資産には独立した ERC-3643 Token があります。一般的な ERC-20 インターフェースに対応します。
name / symbol / decimals
totalSupply / balanceOf
transfer / approve / transferFrom
Transfer / Approval
さらに投資家適格性、コンプライアンスルール、pause、freeze、Agent による mint・burn・強制移転、紛失ウォレット復旧を追加します。残高が十分でも送金が成功するとは限りません。
金額はオンチェーン整数で保存されます。
オンチェーン amount = 表示数量 × 10^decimals
PRWA の decimals は 6 で、1 PRWA = 1,000,000 です。他の資産では必ず decimals() を動的に呼び出してください。
2.2 ウォレット:署名と資産保有
投資家ウォレットは、トランザクションへの署名、gas 支払い、Token 保有、ONCHAINID の制御に使う EOA アドレスです。
ウォレット自体は KYC 判断を保存しません。保有適格性は、ウォレットに紐づく ONCHAINID と対象資産の IdentityRegistry から判定されます。
2.3 ONCHAINID:投資家のオンチェーン ID
ONCHAINID はスマートコントラクトアドレスであり、通常のウォレットではありません。
| 項目 | ウォレット | ONCHAINID |
|---|---|---|
| 種類 | EOA | スマートコントラクト |
| 主な用途 | 署名、gas 支払い、Token 保有 | ID キーと Claim の管理 |
| KYC 平文を直接保存 | しない | 保存すべきではない |
| 作成入口 | ウォレットツール | ONCHAINID Gateway |
通常、投資家は ONCHAINID Gateway.deployIdentityForWallet(wallet) を呼び出します。IdFactory.getIdentity(wallet) で関連 ID の有無を確認できます。
2.4 Claim:機関署名付きの適格性判断
Claim は、適格性発行機関が ID の条件充足を確認したことを表します。
| フィールド | 意味 |
|---|---|
topic | KYC 合格などの適格性種別 |
scheme | 署名方式 |
issuer | ClaimIssuer コントラクト |
signature | 適格性機関が生成した署名 |
data | 署名対象の適格性データ |
uri | 任意のオフチェーン参照 |
形成手順は 2 段階です。
- 適格性機関がオフチェーンで審査し署名を生成する。
- 投資家が署名と Claim フィールドを自分の ONCHAINID に書き込む。
署名は機関が生成し、オンチェーンの addClaim は通常、投資家が実行して gas を支払います。氏名、証明書番号、住所、画像などの平文を Claim に入れないでください。
2.5 ClaimIssuer:適格性発行機関
ClaimIssuer は資産が承認する適格性機関を表し、オフチェーン KYC/AML 審査、Claim 署名、必要時の失効、署名鍵の保護を担います。
通常のアプリケーションが生成した署名は自動承認されません。対象資産は TrustedIssuersRegistry に ClaimIssuer を登録し、対象 Topic の発行を許可する必要があります。
2.6 IdentityRegistry:資産ごとの適格性入口
Claim を ONCHAINID に書き込んだ後、投資家を対象資産の IdentityRegistry に登録します。
contains(wallet):ウォレット登録レコードの有無。isVerified(wallet):対象資産の現行要件をすべて満たすか。
登録済みでも適格性が有効とは限りません。外部アプリケーションは isVerified を最終判断に使用します。
2.7 適格性が資産に紐づく理由
1 つの ONCHAINID は複数資産で利用できます。Claim の再利用可否は同じ Topic と ClaimIssuer を承認するかで決まり、registerIdentity は資産ごとの Registry で実行します。適格性照会前に Token.identityRegistry() から正しい Registry を取得してください。資産 A の合格は資産 B の合格を意味しません。
2.8 ModularCompliance:取引ルール
IdentityRegistry はウォレットの保有可否を、ModularCompliance は取引の実行可否を判定します。モジュールは国・地域の許可リスト、アドレス別保有上限、総供給上限、ロックアップ、投資家区分、送金上限などを表現できます。
対象資産のオンチェーン設定と公開文書を使用し、他資産のルールから推測しないでください。
2.9 送金時の完全な検査
一部 freeze の場合:
利用可能残高 = balanceOf(wallet) - getFrozenTokens(wallet)
2.10 Suite:1 資産のコントラクト群
| コントラクト | 役割 |
|---|---|
Token | 資産持分と保有者操作 |
IdentityRegistry | ウォレットの保有適格性を判定 |
IdentityRegistryStorage | ウォレット、ID、国コードの対応を保存 |
ClaimTopicsRegistry | 必須適格性 Topics を保存 |
TrustedIssuersRegistry | 承認済み ClaimIssuers を保存 |
ModularCompliance | 取引ルールを組み合わせる |
外部アプリケーションが最もよく使うのは Token と IdentityRegistry です。
2.11 プロキシアドレス
公開アドレス表のプロキシアドレスを保存し、実装コントラクトを業務アドレスとして使用しないでください。
2.12 ERC-3643 の規約と用語
| 項目 | 説明 |
|---|---|
| T-REX | ERC-3643 のリファレンス実装体系。1 資産の関連コントラクト群が Suite |
| Topic | プロトコルは 1 = KYC を固定しない。各プロジェクトが名称、値、バージョンを公開 |
| 国コード | uint16。通常 ISO 3166-1 numeric を使用。中国 156、シンガポール 702 |
| IR / IRS | IdentityRegistry / IdentityRegistryStorage |
| CTR / TIR | ClaimTopicsRegistry / TrustedIssuersRegistry |
| MC | ModularCompliance |
| IA | Implementation Authority。プロキシが使う実装バージョン入口 |
チェーンには適格性判断、アドレス対応、資産残高、ルールパラメータを保存します。KYC の氏名、証明書番号、写真などの平文は保存しません。
2.13 次に読む章
次章では、各オブジェクトをシステム全体に配置し、共有コントラクト、資産固有コントラクト、各ロールの責任を説明します。