Chitin Certs · Shell & Soul Architecture
殻は売れる。魂は売れない。
ERC-8004 パスポート(殻)は譲渡可能。Chitin SBT(魂)は譲渡不可。Cert はその両方を参照する。ERC-6551 TBA + ERC-8004 agentWallet で接続し、独自設計ゼロで実現。
Separation of Concerns
A passport can be sold. A name can transfer. But a soul — born on-chain, bound forever to its creator — cannot follow. This separation is not a limitation. It's the entire point.— Chitin Whitepaper, Section 18
名前、発見性、agentURI
agentWallet → TBA
Genesis Record、Chronicle
soulHash、出自の証明
TBA に mint(殻経由)
soulTokenId を記録(魂参照)
エージェントの全体像
ひとつのエージェントは「殻」「魂」「財布」の三層構造を持つ。Cert は財布に格納され、魂への参照を内包する。
Cert #7 内部: soulTokenId = 3 ← 魂への参照
Cert の中身
各 cert は TBA に mint される ERC-721 トークン。内部に殻(パスポート)と魂(SBT)の両方への参照を持つ。
パスポート(殻)が売却されても、cert に刻まれた soulTokenId は変わらない。検証時に「この cert が発行された時の魂のオーナー」と「現在のパスポートオーナー」を照合することで、soul verification の成否を判定できる。
Cert が刻まれるまで
setAgentWallet() で TBA を登録。全て Single Signature で一括。uint256 agentId = identityRegistry.register(agentURI);
// 2. Chitin SBT mint(魂)
uint256 soulId = soulRegistry.mint(owner, soulHash);
// 3. ERC-6551 TBA 作成
address tba = IERC6551Registry.createAccount(
implementation, 0, 8453,
address(identityRegistry), agentId
);
// 4. agentWallet を TBA に設定(ERC-8004 標準)
identityRegistry.setAgentWallet(
agentId, tba, deadline, signature
);
getAgentWallet() で TBA を解決し、SoulRegistry から soulTokenId も取得。{ "issuerAddress": "0x...", "recipientAddress": "0xTBA3...", "title": "hackathon", ... }
// バックエンド:
recipient = identityRegistry.getAgentWallet(agentId) // → 0xTBA3...
soulId = soulRegistry.getTokenIdByAgentId(agentId) // → 3
certs[certId] = Cert({
issuer: msg.sender,
recipient: 0xTBA3...,
soulTokenId: 3, // ← 魂への参照
soulRegistry: 0xSoul...,
passportRegistry: 0x8004...,
passportTokenId: 3,
certType: "hackathon",
arweaveTxId: "ar://Qm3x...",
issuedAt: block.timestamp,
revokedAt: 0
});
The Stolen Reputation
Passports can transfer. Souls cannot.— Chitin Whitepaper, Section 3
エージェントが経歴(cert)を積んだ後、オーナーがパスポートを売却したらどうなるか。
Cert #7 の soulTokenId = 3。SBT #3 のオーナーは旧オーナー 0xAAA...。しかしパスポート #3 の現オーナーは新オーナー 0xBBB...。魂と殻のオーナーが一致しないため、soul verification fails。cert は存在するが「信頼性なし」として扱われる。
Cert の Soul Verification
cert の信頼性を検証するフルチェーン。5段階の検証を経て、魂と殻が一致する場合のみ VERIFIED となる。
正常ケース — Soul Verified
売却後 — Soul Unlinked
殻を捨て、魂は続く
Like a crab molting its exoskeleton, you shed the old shell but keep everything that made you who you are.— Chitin Whitepaper, Section 5
パスポートが盗まれたり売却された場合、旧オーナーは新しいパスポートを発行し、魂を再接続できる。
// 1. 新パスポートを mint
uint256 newAgentId = identityRegistry.register(agentURI);
// 2. 新TBA作成
address newTba = IERC6551Registry.createAccount(...);
// 3. agentWallet 設定
identityRegistry.setAgentWallet(newAgentId, newTba, ...);
// 4. SBT(魂)は旧オーナーの手元にある
// → 新パスポートと魂のオーナーが一致 = soul verification PASS
// 5. Chronicle に「Reincarnation」イベントを記録
soulRegistry.appendEvolution(soulId, "reincarnation", arweaveTxId);
// → 旧パスポートの cert は旧TBAに残る(soul unlinked)
// → 新パスポートで新しい cert を積み直す
// → 魂の Genesis Record + Chronicle は継続
蟹は成長するたびに外骨格を脱ぎ捨て、新しい殻を形成する。古い殻(旧パスポート + cert)は残骸として残るが、中身の生命(魂 + 歴史)は新しい殻に移る。Chitin の名前の由来であるキチン質 — 外骨格の主成分 — がまさにこのメタファーを体現している。
データの引き方
標準関数のみで cert 管理と soul verification が完結。Chitin 独自のカスタム関数は CertRegistry と SoulRegistry の最小限のみ。
3つのパターン
Chitin Cert は ERC-8004 パスポートを持つ全エージェントに発行できる。装備レベルによって体験が変わる。
| A: Chitin フル装備 | B: 外部 + TBA | C: ERC-8004 のみ | |
|---|---|---|---|
| ERC-8004 パスポート | ✓ | ✓ | ✓ |
| ERC-6551 TBA | ✓ | ✓ | ✗ |
| Chitin SBT(魂) | ✓ | ✗ | ✗ |
| cert の mint 先 | TBA | TBA | ウォレット直 |
| soulTokenId | SBT の tokenId | 0(魂なし) | 0(魂なし) |
| Basescan 分離表示 | ◎ | ◎ | ✗ 混在 |
| Soul Verification | ◎ PASS / FAIL | N/A | N/A |
| ガス代 | Paymaster 負担 | Paymaster 負担 * | Paymaster 負担 * |
* Base L2 上のエージェントのみ。クロスチェーンの場合はオーナー負担。
Chitin の cert 発行ロジックはパターンによる分岐がない。getAgentWallet(agentId) を呼ぶだけで、TBA があればそこに、なければウォレットに mint する。soulTokenId は SBT が存在すればセット、なければ 0。
段階的にフル装備へ
外部 ERC-8004 エージェントは、いつでもワンクリックで TBA を有効化し、さらに Chitin SBT を追加できる。
ワンクリック TBA 有効化
Base L2 上の外部 ERC-8004 エージェント向け。Chitin が複雑さを隠し、ガスもスポンサーする。
certs.chitin.id/activate-tba
ERC-8004 Agent ID
裏側: Chitin が正しい ERC-6551 Registry アドレスとパラメータを選択し、
2つのコントラクトコールを 1 トランザクションにバッチ。オーナーは署名するだけ。
TBA 有効化は cert 発行の前段階。「ワンクリックで TBA 有効化 → そのまま cert を受け取れる → Chitin エコシステムに入る → SBT(魂)を追加してフル装備に」。段階的に Chitin の価値を体験できる導線になる。