@iamnotdou/ccp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +29 -0
- package/dist/auditor/attest.js +141 -0
- package/dist/auditor/attest.js.map +1 -0
- package/dist/cli.js +1006 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.js +35 -0
- package/dist/client.js.map +1 -0
- package/dist/config.js +31 -0
- package/dist/config.js.map +1 -0
- package/dist/contracts/abis.js +2212 -0
- package/dist/contracts/abis.js.map +1 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/demo.js +218 -0
- package/dist/demo.js.map +1 -0
- package/dist/ens/subnames.js +33 -0
- package/dist/ens/subnames.js.map +1 -0
- package/dist/ens/textRecords.js +111 -0
- package/dist/ens/textRecords.js.map +1 -0
- package/dist/hcs/listener.js +50 -0
- package/dist/hcs/listener.js.map +1 -0
- package/dist/hcs/publisher.js +126 -0
- package/dist/hcs/publisher.js.map +1 -0
- package/dist/hedera/mirrorNode.js +75 -0
- package/dist/hedera/mirrorNode.js.map +1 -0
- package/dist/ledger/cosigner.js +79 -0
- package/dist/ledger/cosigner.js.map +1 -0
- package/dist/mcp.js +648 -0
- package/dist/mcp.js.map +1 -0
- package/dist/setup.js +222 -0
- package/dist/setup.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abis.js","sourceRoot":"","sources":["../../src/contracts/abis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,GACpB,MAAM,WAAW,CAAC"}
|
package/dist/demo.js
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CCP Full Demo Scenario
|
|
3
|
+
*
|
|
4
|
+
* Demonstrates the complete Containment Certificate Protocol flow
|
|
5
|
+
* with Hedera (settlement), Ledger (containment), and ENS (identity).
|
|
6
|
+
*
|
|
7
|
+
* Flow:
|
|
8
|
+
* 1. Auditor audits containment → stakes → signs attestation (Ledger)
|
|
9
|
+
* 2. Operator publishes certificate (Ledger-signed) → HCS event
|
|
10
|
+
* 3. Counterparty resolves agent ENS name → queries registry → verifies
|
|
11
|
+
* 4. Agent makes small payment (agent-only signature)
|
|
12
|
+
* 5. Agent makes large payment (Ledger co-signs)
|
|
13
|
+
* 6. Agent tries to exceed limit → BLOCKED (the cage holds)
|
|
14
|
+
* 7. Show full HCS event timeline via Mirror Node
|
|
15
|
+
*
|
|
16
|
+
* Usage: ccp demo (or: npm run demo)
|
|
17
|
+
* Requires: .env with Hedera testnet credentials + deployed contracts
|
|
18
|
+
*/
|
|
19
|
+
import "dotenv/config";
|
|
20
|
+
import { formatUnits, keccak256, encodePacked } from "viem";
|
|
21
|
+
import { publicClient, getWalletClient } from "./client.js";
|
|
22
|
+
import { addresses, keys, hederaConfig } from "./config.js";
|
|
23
|
+
import { CCPRegistryABI, SpendingLimitABI, ReserveVaultABI, AuditorStakingABI, } from "./contracts/index.js";
|
|
24
|
+
import { attestCertificate } from "./auditor/attest.js";
|
|
25
|
+
import { ledgerSignCertificate, executeWithLedgerCosign } from "./ledger/cosigner.js";
|
|
26
|
+
import { publishCertificatePublished, publishAgentTransaction, publishTransactionBlocked, } from "./hcs/publisher.js";
|
|
27
|
+
import { discoverAgent } from "./ens/textRecords.js";
|
|
28
|
+
import { printEventTimeline } from "./hedera/mirrorNode.js";
|
|
29
|
+
// ─── Constants ───
|
|
30
|
+
const CONTAINMENT_BOUND = 50000000000n; // $50,000 USDC (6 decimals)
|
|
31
|
+
const AUDITOR_STAKE = 1500000000n; // $1,500 USDC
|
|
32
|
+
const SMALL_PAYMENT = 500000000n; // $500 USDC
|
|
33
|
+
const LARGE_PAYMENT = 7000000000n; // $7,000 USDC (above cosign threshold)
|
|
34
|
+
const OVER_LIMIT = 45000000000n; // $45,000 USDC (would exceed period limit)
|
|
35
|
+
async function main() {
|
|
36
|
+
console.log("╔══════════════════════════════════════════════╗");
|
|
37
|
+
console.log("║ CCP — Containment Certificate Protocol ║");
|
|
38
|
+
console.log("║ Demo: Hedera × Ledger × ENS ║");
|
|
39
|
+
console.log("╚══════════════════════════════════════════════╝\n");
|
|
40
|
+
const operatorWallet = getWalletClient(keys.operator);
|
|
41
|
+
const agentWallet = getWalletClient(keys.agent);
|
|
42
|
+
// Compute certificate hash (proper keccak256)
|
|
43
|
+
const certHash = keccak256(encodePacked(["address", "address", "uint256", "string"], [agentWallet.account.address, operatorWallet.account.address, BigInt(Date.now()), "ccp-v0.2"]));
|
|
44
|
+
// ════════════════════════════════════════════════
|
|
45
|
+
// Phase 1: Auditor Audit + Stake + Attest
|
|
46
|
+
// ════════════════════════════════════════════════
|
|
47
|
+
console.log("━━━ Phase 1: Auditor Audit & Attestation ━━━\n");
|
|
48
|
+
const { signature: auditorSig, auditResult } = await attestCertificate(certHash, addresses.spendingLimit, addresses.reserveVault, CONTAINMENT_BOUND, AUDITOR_STAKE);
|
|
49
|
+
console.log(`\n Audit result: ${auditResult.certClass}`);
|
|
50
|
+
console.log(` Auditor signature: ${auditorSig.slice(0, 20)}...`);
|
|
51
|
+
// ════════════════════════════════════════════════
|
|
52
|
+
// Phase 2: Operator Publishes Certificate
|
|
53
|
+
// ════════════════════════════════════════════════
|
|
54
|
+
console.log("\n━━━ Phase 2: Certificate Publication (Ledger-signed) ━━━\n");
|
|
55
|
+
const operatorSig = await ledgerSignCertificate(certHash);
|
|
56
|
+
// Build PublishParams struct
|
|
57
|
+
const publishParams = {
|
|
58
|
+
certHash,
|
|
59
|
+
agent: agentWallet.account.address,
|
|
60
|
+
certificateClass: 2, // C2
|
|
61
|
+
expiresAt: Math.floor(Date.now() / 1000) + 60 * 24 * 3600, // 60 days
|
|
62
|
+
containmentBound: CONTAINMENT_BOUND,
|
|
63
|
+
reserveVault: addresses.reserveVault,
|
|
64
|
+
spendingLimit: addresses.spendingLimit,
|
|
65
|
+
ipfsUri: "ipfs://QmCCPDemoCertificate",
|
|
66
|
+
};
|
|
67
|
+
const publishTx = await operatorWallet.writeContract({
|
|
68
|
+
address: addresses.registry,
|
|
69
|
+
abi: CCPRegistryABI,
|
|
70
|
+
functionName: "publish",
|
|
71
|
+
args: [publishParams, operatorSig, [auditorSig]],
|
|
72
|
+
});
|
|
73
|
+
await publicClient.waitForTransactionReceipt({ hash: publishTx });
|
|
74
|
+
console.log(` Certificate published: ${publishTx}`);
|
|
75
|
+
// Publish to HCS (non-fatal)
|
|
76
|
+
try {
|
|
77
|
+
await publishCertificatePublished(certHash, agentWallet.account.address, operatorWallet.account.address, "C2", formatUnits(CONTAINMENT_BOUND, 6));
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
console.log(` [HCS] Event skipped: ${e.message?.slice(0, 60)}`);
|
|
81
|
+
}
|
|
82
|
+
// Verify on-chain
|
|
83
|
+
const isValid = await publicClient.readContract({
|
|
84
|
+
address: addresses.registry,
|
|
85
|
+
abi: CCPRegistryABI,
|
|
86
|
+
functionName: "isValid",
|
|
87
|
+
args: [certHash],
|
|
88
|
+
});
|
|
89
|
+
console.log(` Certificate valid: ${isValid}`);
|
|
90
|
+
// ════════════════════════════════════════════════
|
|
91
|
+
// Phase 3: Counterparty Verifies via ENS
|
|
92
|
+
// ════════════════════════════════════════════════
|
|
93
|
+
console.log("\n━━━ Phase 3: Counterparty Verification (ENS → Registry) ━━━\n");
|
|
94
|
+
// In production: counterparty resolves agent's ENS name
|
|
95
|
+
// For demo: simulate the discovery flow
|
|
96
|
+
console.log(" [Counterparty] Discovering agent via ENS...");
|
|
97
|
+
// Try ENS resolution with timeout (Sepolia RPC can be slow)
|
|
98
|
+
try {
|
|
99
|
+
const ensTimeout = new Promise((_, reject) => setTimeout(() => reject(new Error("timeout")), 5000));
|
|
100
|
+
const discovery = await Promise.race([discoverAgent("alpha.ccpdemo.eth"), ensTimeout]);
|
|
101
|
+
console.log(` ENS discovery:`, discovery);
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
console.log(` [ENS] Skipped (${e.message?.slice(0, 30)}) — using direct registry query`);
|
|
105
|
+
}
|
|
106
|
+
// Direct registry verification (always works)
|
|
107
|
+
const [acceptable, foundCert] = await publicClient.readContract({
|
|
108
|
+
address: addresses.registry,
|
|
109
|
+
abi: CCPRegistryABI,
|
|
110
|
+
functionName: "verify",
|
|
111
|
+
args: [agentWallet.account.address, 1, 100000000000n], // minClass=C1, maxLoss=$100k
|
|
112
|
+
});
|
|
113
|
+
console.log(` Registry verify: acceptable=${acceptable}, certHash=${foundCert.slice(0, 18)}...`);
|
|
114
|
+
// Check auditor stake
|
|
115
|
+
const auditorWallet = getWalletClient(keys.auditor);
|
|
116
|
+
const stake = await publicClient.readContract({
|
|
117
|
+
address: addresses.auditorStaking,
|
|
118
|
+
abi: AuditorStakingABI,
|
|
119
|
+
functionName: "getStake",
|
|
120
|
+
args: [auditorWallet.account.address, certHash],
|
|
121
|
+
});
|
|
122
|
+
console.log(` Auditor stake: ${formatUnits(stake, 6)} USDC`);
|
|
123
|
+
// Check reserve
|
|
124
|
+
const reserveBalance = await publicClient.readContract({
|
|
125
|
+
address: addresses.reserveVault,
|
|
126
|
+
abi: ReserveVaultABI,
|
|
127
|
+
functionName: "getReserveBalance",
|
|
128
|
+
});
|
|
129
|
+
console.log(` Reserve balance: ${formatUnits(reserveBalance, 6)} USDC`);
|
|
130
|
+
console.log(` → VERIFICATION PASSED. Accepting transaction.\n`);
|
|
131
|
+
// ════════════════════════════════════════════════
|
|
132
|
+
// Phase 4: Agent Pays (Small — No Cosign)
|
|
133
|
+
// ════════════════════════════════════════════════
|
|
134
|
+
console.log("━━━ Phase 4: Small Payment ($500 — Agent Only) ━━━\n");
|
|
135
|
+
const counterpartyAddr = "0x000000000000000000000000000000000000dEaD";
|
|
136
|
+
const smallTx = await agentWallet.writeContract({
|
|
137
|
+
address: addresses.spendingLimit,
|
|
138
|
+
abi: SpendingLimitABI,
|
|
139
|
+
functionName: "execute",
|
|
140
|
+
args: [counterpartyAddr, SMALL_PAYMENT, "0x"],
|
|
141
|
+
});
|
|
142
|
+
await publicClient.waitForTransactionReceipt({ hash: smallTx });
|
|
143
|
+
console.log(` Transaction: ${smallTx}`);
|
|
144
|
+
const [spent1] = await publicClient.readContract({
|
|
145
|
+
address: addresses.spendingLimit,
|
|
146
|
+
abi: SpendingLimitABI,
|
|
147
|
+
functionName: "getSpentInPeriod",
|
|
148
|
+
});
|
|
149
|
+
console.log(` Period spent: ${formatUnits(spent1, 6)} / ${formatUnits(50000000000n, 6)} USDC`);
|
|
150
|
+
try {
|
|
151
|
+
await publishAgentTransaction(agentWallet.account.address, counterpartyAddr, formatUnits(SMALL_PAYMENT, 6), false, formatUnits(spent1, 6), "50000");
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
console.log(" [HCS] Event skipped");
|
|
155
|
+
}
|
|
156
|
+
// ════════════════════════════════════════════════
|
|
157
|
+
// Phase 5: Agent Pays (Large — Ledger Co-Signs)
|
|
158
|
+
// ════════════════════════════════════════════════
|
|
159
|
+
console.log("\n━━━ Phase 5: Large Payment ($7,000 — Ledger Co-Sign) ━━━\n");
|
|
160
|
+
const largeTx = await executeWithLedgerCosign(counterpartyAddr, LARGE_PAYMENT, addresses.spendingLimit);
|
|
161
|
+
const [spent2] = await publicClient.readContract({
|
|
162
|
+
address: addresses.spendingLimit,
|
|
163
|
+
abi: SpendingLimitABI,
|
|
164
|
+
functionName: "getSpentInPeriod",
|
|
165
|
+
});
|
|
166
|
+
console.log(` Period spent: ${formatUnits(spent2, 6)} / ${formatUnits(50000000000n, 6)} USDC`);
|
|
167
|
+
try {
|
|
168
|
+
await publishAgentTransaction(agentWallet.account.address, counterpartyAddr, formatUnits(LARGE_PAYMENT, 6), true, formatUnits(spent2, 6), "50000");
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
console.log(" [HCS] Event skipped");
|
|
172
|
+
}
|
|
173
|
+
// ════════════════════════════════════════════════
|
|
174
|
+
// Phase 6: Agent Exceeds Limit — BLOCKED
|
|
175
|
+
// ════════════════════════════════════════════════
|
|
176
|
+
console.log("\n━━━ Phase 6: Over-Limit Payment ($45,000 — BLOCKED) ━━━\n");
|
|
177
|
+
try {
|
|
178
|
+
await executeWithLedgerCosign(counterpartyAddr, OVER_LIMIT, addresses.spendingLimit);
|
|
179
|
+
console.log(" ERROR: Should have been blocked!");
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
console.log(" ✗ TRANSACTION BLOCKED — Containment held!");
|
|
183
|
+
console.log(` Reason: ${error.message?.slice(0, 100)}`);
|
|
184
|
+
try {
|
|
185
|
+
await publishTransactionBlocked(agentWallet.account.address, formatUnits(OVER_LIMIT, 6), "EXCEEDS_PERIODIC_LIMIT", formatUnits(spent2, 6), "50000");
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
console.log(" [HCS] Event skipped");
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
const remaining = await publicClient.readContract({
|
|
192
|
+
address: addresses.spendingLimit,
|
|
193
|
+
abi: SpendingLimitABI,
|
|
194
|
+
functionName: "getRemainingAllowance",
|
|
195
|
+
});
|
|
196
|
+
console.log(` Remaining allowance: ${formatUnits(remaining, 6)} USDC`);
|
|
197
|
+
// ════════════════════════════════════════════════
|
|
198
|
+
// Phase 7: Show HCS Event Timeline
|
|
199
|
+
// ════════════════════════════════════════════════
|
|
200
|
+
console.log("\n━━━ Phase 7: Event Timeline (Hedera Consensus Service) ━━━");
|
|
201
|
+
if (hederaConfig.hcsTopicId) {
|
|
202
|
+
await printEventTimeline(hederaConfig.hcsTopicId);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
console.log(" [HCS] No topic ID configured — skipping timeline display");
|
|
206
|
+
}
|
|
207
|
+
// ════════════════════════════════════════════════
|
|
208
|
+
console.log("\n╔══════════════════════════════════════════════╗");
|
|
209
|
+
console.log("║ Demo Complete ║");
|
|
210
|
+
console.log("║ ║");
|
|
211
|
+
console.log("║ The cage held. The agent could not exceed ║");
|
|
212
|
+
console.log("║ its containment bound — even with Ledger ║");
|
|
213
|
+
console.log("║ co-signature. Smart contract limits are ║");
|
|
214
|
+
console.log("║ absolute. That is the CCP thesis. ║");
|
|
215
|
+
console.log("╚══════════════════════════════════════════════╝\n");
|
|
216
|
+
}
|
|
217
|
+
main().catch(console.error);
|
|
218
|
+
//# sourceMappingURL=demo.js.map
|
package/dist/demo.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the subname registration data for an agent fleet.
|
|
3
|
+
* This returns the data needed to register subnames via ENS contracts.
|
|
4
|
+
*/
|
|
5
|
+
export function buildFleetSubnames(operatorName, agents) {
|
|
6
|
+
return agents.map((agent) => ({
|
|
7
|
+
label: agent.label,
|
|
8
|
+
fullName: `${agent.label}.${operatorName}`,
|
|
9
|
+
agentAddress: agent.address,
|
|
10
|
+
textRecords: {
|
|
11
|
+
"ccp.certificate": agent.certHash,
|
|
12
|
+
"ccp.class": agent.certClass,
|
|
13
|
+
"ccp.bound": agent.containmentBound,
|
|
14
|
+
"ccp.chain": agent.chainId,
|
|
15
|
+
"ccp.registry": agent.registryAddress,
|
|
16
|
+
"ccp.role": "agent",
|
|
17
|
+
},
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build auditor ENS text records.
|
|
22
|
+
*/
|
|
23
|
+
export function buildAuditorTextRecords(params) {
|
|
24
|
+
return {
|
|
25
|
+
"ccp.role": "auditor",
|
|
26
|
+
"ccp.specialization": params.specialization,
|
|
27
|
+
"ccp.attestation_count": params.attestationCount.toString(),
|
|
28
|
+
"ccp.challenge_count": params.challengeCount.toString(),
|
|
29
|
+
"ccp.active_stake": params.activeStake,
|
|
30
|
+
"ccp.staking_address": params.stakingAddress,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=subnames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subnames.js","sourceRoot":"","sources":["../../src/ens/subnames.ts"],"names":[],"mappings":"AA0BA;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,MAQE;IAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,YAAY,EAAE;QAC1C,YAAY,EAAE,KAAK,CAAC,OAAO;QAC3B,WAAW,EAAE;YACX,iBAAiB,EAAE,KAAK,CAAC,QAAQ;YACjC,WAAW,EAAE,KAAK,CAAC,SAAS;YAC5B,WAAW,EAAE,KAAK,CAAC,gBAAgB;YACnC,WAAW,EAAE,KAAK,CAAC,OAAO;YAC1B,cAAc,EAAE,KAAK,CAAC,eAAe;YACrC,UAAU,EAAE,OAAO;SACpB;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAMvC;IACC,OAAO;QACL,UAAU,EAAE,SAAS;QACrB,oBAAoB,EAAE,MAAM,CAAC,cAAc;QAC3C,uBAAuB,EAAE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QAC3D,qBAAqB,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE;QACvD,kBAAkB,EAAE,MAAM,CAAC,WAAW;QACtC,qBAAqB,EAAE,MAAM,CAAC,cAAc;KAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { createPublicClient, http } from "viem";
|
|
2
|
+
import { sepolia } from "viem/chains";
|
|
3
|
+
import { normalize } from "viem/ens";
|
|
4
|
+
import { ensConfig } from "../config.js";
|
|
5
|
+
// ENS lives on Ethereum Sepolia (testnet) while CCP contracts live on Hedera.
|
|
6
|
+
// ENS is the cross-chain discovery layer: ENS name → text records → Hedera addresses.
|
|
7
|
+
const ensClient = createPublicClient({
|
|
8
|
+
chain: sepolia,
|
|
9
|
+
transport: http(ensConfig.rpcUrl),
|
|
10
|
+
});
|
|
11
|
+
// ─── CCP-specific ENS text record keys ───
|
|
12
|
+
export const CCP_TEXT_KEYS = {
|
|
13
|
+
CERTIFICATE: "ccp.certificate", // Active cert hash
|
|
14
|
+
CLASS: "ccp.class", // C1, C2, C3
|
|
15
|
+
BOUND: "ccp.bound", // Containment bound in USDC
|
|
16
|
+
CHAIN: "ccp.chain", // Chain ID where registry lives (296 = Hedera testnet)
|
|
17
|
+
REGISTRY: "ccp.registry", // Registry contract address
|
|
18
|
+
RESERVE: "ccp.reserve", // ReserveVault address
|
|
19
|
+
EXPIRES: "ccp.expires", // Certificate expiry timestamp
|
|
20
|
+
// Auditor-specific
|
|
21
|
+
ROLE: "ccp.role", // "operator", "auditor", "agent"
|
|
22
|
+
SPECIALIZATION: "ccp.specialization", // Audit scope
|
|
23
|
+
ATTESTATION_COUNT: "ccp.attestation_count",
|
|
24
|
+
CHALLENGE_COUNT: "ccp.challenge_count",
|
|
25
|
+
ACTIVE_STAKE: "ccp.active_stake",
|
|
26
|
+
LATEST_ATTESTATION: "ccp.latest_attestation",
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Read all CCP text records from an ENS name.
|
|
30
|
+
* This is the entry point for the verification flow:
|
|
31
|
+
* ENS name → text records → certificate hash + chain → query Hedera registry
|
|
32
|
+
*/
|
|
33
|
+
export async function getCCPTextRecords(ensName) {
|
|
34
|
+
const name = normalize(ensName);
|
|
35
|
+
const records = {};
|
|
36
|
+
const keys = [
|
|
37
|
+
{ key: CCP_TEXT_KEYS.CERTIFICATE, field: "certificate" },
|
|
38
|
+
{ key: CCP_TEXT_KEYS.CLASS, field: "class" },
|
|
39
|
+
{ key: CCP_TEXT_KEYS.BOUND, field: "bound" },
|
|
40
|
+
{ key: CCP_TEXT_KEYS.CHAIN, field: "chain" },
|
|
41
|
+
{ key: CCP_TEXT_KEYS.REGISTRY, field: "registry" },
|
|
42
|
+
{ key: CCP_TEXT_KEYS.RESERVE, field: "reserve" },
|
|
43
|
+
{ key: CCP_TEXT_KEYS.EXPIRES, field: "expires" },
|
|
44
|
+
{ key: CCP_TEXT_KEYS.ROLE, field: "role" },
|
|
45
|
+
{ key: CCP_TEXT_KEYS.SPECIALIZATION, field: "specialization" },
|
|
46
|
+
{ key: CCP_TEXT_KEYS.ATTESTATION_COUNT, field: "attestationCount" },
|
|
47
|
+
{ key: CCP_TEXT_KEYS.CHALLENGE_COUNT, field: "challengeCount" },
|
|
48
|
+
];
|
|
49
|
+
for (const { key, field } of keys) {
|
|
50
|
+
try {
|
|
51
|
+
const value = await ensClient.getEnsText({ name, key });
|
|
52
|
+
if (value)
|
|
53
|
+
records[field] = value;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Record not set — skip
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return records;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Resolve an ENS name to an Ethereum address.
|
|
63
|
+
*/
|
|
64
|
+
export async function resolveENS(ensName) {
|
|
65
|
+
try {
|
|
66
|
+
const address = await ensClient.getEnsAddress({ name: normalize(ensName) });
|
|
67
|
+
return address;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Reverse resolve an address to an ENS name.
|
|
75
|
+
*/
|
|
76
|
+
export async function reverseResolveENS(address) {
|
|
77
|
+
try {
|
|
78
|
+
const name = await ensClient.getEnsName({ address });
|
|
79
|
+
return name;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Full CCP discovery flow from ENS name:
|
|
87
|
+
* 1. Resolve name → address
|
|
88
|
+
* 2. Read CCP text records (cert hash, chain, registry)
|
|
89
|
+
* 3. Return everything needed to query the Hedera registry
|
|
90
|
+
*/
|
|
91
|
+
export async function discoverAgent(ensName) {
|
|
92
|
+
console.log(` [ENS] Resolving ${ensName}...`);
|
|
93
|
+
const address = await resolveENS(ensName);
|
|
94
|
+
const records = await getCCPTextRecords(ensName);
|
|
95
|
+
console.log(` [ENS] Address: ${address || "not found"}`);
|
|
96
|
+
console.log(` [ENS] Certificate: ${records.certificate || "none"}`);
|
|
97
|
+
console.log(` [ENS] Class: ${records.class || "unknown"}`);
|
|
98
|
+
console.log(` [ENS] Chain: ${records.chain || "unknown"}`);
|
|
99
|
+
return {
|
|
100
|
+
ensName,
|
|
101
|
+
address,
|
|
102
|
+
certHash: records.certificate,
|
|
103
|
+
certClass: records.class,
|
|
104
|
+
chainId: records.chain ? parseInt(records.chain) : undefined,
|
|
105
|
+
registryAddress: records.registry,
|
|
106
|
+
reserveAddress: records.reserve,
|
|
107
|
+
containmentBound: records.bound,
|
|
108
|
+
role: records.role,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=textRecords.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textRecords.js","sourceRoot":"","sources":["../../src/ens/textRecords.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Client, TopicMessageQuery, TopicId, AccountId, PrivateKey } from "@hashgraph/sdk";
|
|
2
|
+
import { hederaConfig } from "../config.js";
|
|
3
|
+
/**
|
|
4
|
+
* Subscribe to CCP events on an HCS topic.
|
|
5
|
+
* Uses Hedera Mirror Node for historical + live messages.
|
|
6
|
+
*/
|
|
7
|
+
export function subscribeToCCPEvents(topicIdStr, onEvent) {
|
|
8
|
+
const client = hederaConfig.network === "testnet" ? Client.forTestnet() : Client.forMainnet();
|
|
9
|
+
if (hederaConfig.hcsAccountId && hederaConfig.hcsPrivateKeyDer) {
|
|
10
|
+
client.setOperator(AccountId.fromString(hederaConfig.hcsAccountId), PrivateKey.fromStringDer(hederaConfig.hcsPrivateKeyDer));
|
|
11
|
+
}
|
|
12
|
+
else if (hederaConfig.accountId && hederaConfig.privateKey) {
|
|
13
|
+
const rawKey = hederaConfig.privateKey.startsWith("0x")
|
|
14
|
+
? hederaConfig.privateKey.slice(2)
|
|
15
|
+
: hederaConfig.privateKey;
|
|
16
|
+
client.setOperator(AccountId.fromString(hederaConfig.accountId), PrivateKey.fromStringECDSA(rawKey));
|
|
17
|
+
}
|
|
18
|
+
const topicId = TopicId.fromString(topicIdStr);
|
|
19
|
+
new TopicMessageQuery()
|
|
20
|
+
.setTopicId(topicId)
|
|
21
|
+
.subscribe(client, null, (message) => {
|
|
22
|
+
const content = Buffer.from(message.contents).toString("utf8");
|
|
23
|
+
try {
|
|
24
|
+
const event = JSON.parse(content);
|
|
25
|
+
const seqNum = message.sequenceNumber.toNumber();
|
|
26
|
+
const timestamp = message.consensusTimestamp.toDate();
|
|
27
|
+
onEvent(event, seqNum, timestamp);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
console.warn(" [HCS] Failed to parse message:", content.slice(0, 100));
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
console.log(` [HCS] Subscribed to topic ${topicIdStr}`);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Fetch historical CCP events from the Mirror Node REST API.
|
|
37
|
+
*/
|
|
38
|
+
export async function fetchCCPHistory(topicIdStr) {
|
|
39
|
+
const baseUrl = hederaConfig.network === "testnet"
|
|
40
|
+
? "https://testnet.mirrornode.hedera.com"
|
|
41
|
+
: "https://mainnet.mirrornode.hedera.com";
|
|
42
|
+
const url = `${baseUrl}/api/v1/topics/${topicIdStr}/messages?order=asc&limit=100`;
|
|
43
|
+
const response = await fetch(url);
|
|
44
|
+
const data = (await response.json());
|
|
45
|
+
return data.messages.map((msg) => {
|
|
46
|
+
const decoded = Buffer.from(msg.message, "base64").toString("utf8");
|
|
47
|
+
return JSON.parse(decoded);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/hcs/listener.ts"],"names":[],"mappings":"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"}
|