agentwallet-sdk 4.0.4 → 5.0.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/index.js +2 -0
- package/package.json +6 -59
- package/README.md +0 -207
- package/dist/__tests__/identity.did.test.d.ts +0 -2
- package/dist/__tests__/identity.did.test.d.ts.map +0 -1
- package/dist/__tests__/identity.did.test.js +0 -56
- package/dist/__tests__/identity.did.test.js.map +0 -1
- package/dist/__tests__/staking.test.d.ts +0 -2
- package/dist/__tests__/staking.test.d.ts.map +0 -1
- package/dist/__tests__/staking.test.js +0 -70
- package/dist/__tests__/staking.test.js.map +0 -1
- package/dist/__tests__/verify.test.d.ts +0 -2
- package/dist/__tests__/verify.test.d.ts.map +0 -1
- package/dist/__tests__/verify.test.js +0 -57
- package/dist/__tests__/verify.test.js.map +0 -1
- package/dist/abi.d.ts +0 -47
- package/dist/abi.d.ts.map +0 -1
- package/dist/abi.js +0 -257
- package/dist/abi.js.map +0 -1
- package/dist/bridge/abis.d.ts +0 -64
- package/dist/bridge/abis.d.ts.map +0 -1
- package/dist/bridge/abis.js +0 -131
- package/dist/bridge/abis.js.map +0 -1
- package/dist/bridge/client.d.ts +0 -50
- package/dist/bridge/client.d.ts.map +0 -1
- package/dist/bridge/client.js +0 -232
- package/dist/bridge/client.js.map +0 -1
- package/dist/bridge/index.d.ts +0 -3
- package/dist/bridge/index.d.ts.map +0 -1
- package/dist/bridge/index.js +0 -5
- package/dist/bridge/index.js.map +0 -1
- package/dist/bridge/types.d.ts +0 -53
- package/dist/bridge/types.d.ts.map +0 -1
- package/dist/bridge/types.js +0 -55
- package/dist/bridge/types.js.map +0 -1
- package/dist/identity/did.d.ts +0 -66
- package/dist/identity/did.d.ts.map +0 -1
- package/dist/identity/did.js +0 -186
- package/dist/identity/did.js.map +0 -1
- package/dist/identity/erc8004.d.ts +0 -150
- package/dist/identity/erc8004.d.ts.map +0 -1
- package/dist/identity/erc8004.js +0 -382
- package/dist/identity/erc8004.js.map +0 -1
- package/dist/identity/index.d.ts +0 -3
- package/dist/identity/index.d.ts.map +0 -1
- package/dist/identity/index.js +0 -3
- package/dist/identity/index.js.map +0 -1
- package/dist/index.d.ts +0 -7190
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -372
- package/dist/index.js.map +0 -1
- package/dist/plugins/elizaos.d.ts +0 -40
- package/dist/plugins/elizaos.d.ts.map +0 -1
- package/dist/plugins/elizaos.js +0 -91
- package/dist/plugins/elizaos.js.map +0 -1
- package/dist/policy/SpendingPolicy.d.ts +0 -32
- package/dist/policy/SpendingPolicy.d.ts.map +0 -1
- package/dist/policy/SpendingPolicy.js +0 -157
- package/dist/policy/SpendingPolicy.js.map +0 -1
- package/dist/staking/AgentStakingPool.d.ts +0 -100
- package/dist/staking/AgentStakingPool.d.ts.map +0 -1
- package/dist/staking/AgentStakingPool.js +0 -298
- package/dist/staking/AgentStakingPool.js.map +0 -1
- package/dist/staking/index.d.ts +0 -2
- package/dist/staking/index.d.ts.map +0 -1
- package/dist/staking/index.js +0 -2
- package/dist/staking/index.js.map +0 -1
- package/dist/swap/SwapModule.d.ts +0 -45
- package/dist/swap/SwapModule.d.ts.map +0 -1
- package/dist/swap/SwapModule.js +0 -146
- package/dist/swap/SwapModule.js.map +0 -1
- package/dist/swap/abi.d.ts +0 -51
- package/dist/swap/abi.d.ts.map +0 -1
- package/dist/swap/abi.js +0 -120
- package/dist/swap/abi.js.map +0 -1
- package/dist/swap/index.d.ts +0 -4
- package/dist/swap/index.d.ts.map +0 -1
- package/dist/swap/index.js +0 -6
- package/dist/swap/index.js.map +0 -1
- package/dist/swap/types.d.ts +0 -17
- package/dist/swap/types.d.ts.map +0 -1
- package/dist/swap/types.js +0 -19
- package/dist/swap/types.js.map +0 -1
- package/dist/types.d.ts +0 -9
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -11
- package/dist/types.js.map +0 -1
- package/dist/verify/index.d.ts +0 -2
- package/dist/verify/index.d.ts.map +0 -1
- package/dist/verify/index.js +0 -2
- package/dist/verify/index.js.map +0 -1
- package/dist/verify/verifyAgent.d.ts +0 -42
- package/dist/verify/verifyAgent.d.ts.map +0 -1
- package/dist/verify/verifyAgent.js +0 -216
- package/dist/verify/verifyAgent.js.map +0 -1
- package/dist/x402/budget.d.ts +0 -44
- package/dist/x402/budget.d.ts.map +0 -1
- package/dist/x402/budget.js +0 -115
- package/dist/x402/budget.js.map +0 -1
- package/dist/x402/chains/abstract/index.d.ts +0 -107
- package/dist/x402/chains/abstract/index.d.ts.map +0 -1
- package/dist/x402/chains/abstract/index.js +0 -192
- package/dist/x402/chains/abstract/index.js.map +0 -1
- package/dist/x402/client.d.ts +0 -46
- package/dist/x402/client.d.ts.map +0 -1
- package/dist/x402/client.js +0 -207
- package/dist/x402/client.js.map +0 -1
- package/dist/x402/index.d.ts +0 -6
- package/dist/x402/index.d.ts.map +0 -1
- package/dist/x402/index.js +0 -10
- package/dist/x402/index.js.map +0 -1
- package/dist/x402/middleware.d.ts +0 -37
- package/dist/x402/middleware.d.ts.map +0 -1
- package/dist/x402/middleware.js +0 -67
- package/dist/x402/middleware.js.map +0 -1
- package/dist/x402/types.d.ts +0 -8
- package/dist/x402/types.d.ts.map +0 -1
- package/dist/x402/types.js +0 -11
- package/dist/x402/types.js.map +0 -1
package/dist/bridge/client.js
DELETED
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
// BridgeModule — CCTP V2 cross-chain USDC bridge for AgentWallet
|
|
3
|
-
// Non-custodial: all signing is done locally via the agent's WalletClient.
|
|
4
|
-
import { createPublicClient, http, keccak256, pad, getContract, } from 'viem';
|
|
5
|
-
import { base, mainnet, optimism, arbitrum } from 'viem/chains';
|
|
6
|
-
import { TokenMessengerV2Abi, MessageTransmitterV2Abi, ERC20BridgeAbi, } from './abis.js';
|
|
7
|
-
import { CCTP_DOMAIN_IDS, BRIDGE_CHAIN_IDS, USDC_CONTRACT, TOKEN_MESSENGER_V2, MESSAGE_TRANSMITTER_V2, FINALITY_THRESHOLD, CIRCLE_ATTESTATION_API, MAX_ATTESTATION_POLLS, ATTESTATION_POLL_INTERVAL_MS, } from './types.js';
|
|
8
|
-
const VIEM_CHAINS = { base, ethereum: mainnet, optimism, arbitrum };
|
|
9
|
-
export class BridgeModule {
|
|
10
|
-
constructor(walletClient, fromChain = 'base', options = {}) {
|
|
11
|
-
if (!walletClient.account) {
|
|
12
|
-
throw new BridgeError('NO_WALLET_CLIENT', 'WalletClient must have an account attached. Use privateKeyToAccount() or similar to attach a signer.');
|
|
13
|
-
}
|
|
14
|
-
this.walletClient = walletClient;
|
|
15
|
-
this.fromChain = fromChain;
|
|
16
|
-
this.fromRpcUrl = options.rpcUrl;
|
|
17
|
-
this.publicClient = createPublicClient({
|
|
18
|
-
chain: VIEM_CHAINS[fromChain],
|
|
19
|
-
transport: http(options.rpcUrl),
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
async bridge(amount, toChain, options = {}) {
|
|
23
|
-
const startMs = Date.now();
|
|
24
|
-
this.validateBridgeParams(amount, toChain);
|
|
25
|
-
const account = this.walletClient.account;
|
|
26
|
-
const recipient = options.destinationAddress ?? account.address;
|
|
27
|
-
const minFinalityThreshold = options.minFinalityThreshold ?? FINALITY_THRESHOLD.FAST;
|
|
28
|
-
const maxFee = options.maxFee ?? 0n;
|
|
29
|
-
const attestationApiUrl = options.attestationApiUrl ?? CIRCLE_ATTESTATION_API;
|
|
30
|
-
await this.approveUsdc(amount);
|
|
31
|
-
const burnResult = await this.depositForBurn(amount, toChain, recipient, minFinalityThreshold, maxFee);
|
|
32
|
-
const attestation = await this.pollForAttestation(burnResult.messageHash, this.fromChain, attestationApiUrl);
|
|
33
|
-
const mintTxHash = await this.receiveMessage(burnResult.messageBytes, attestation, toChain, options.destinationRpcUrl);
|
|
34
|
-
return {
|
|
35
|
-
burnTxHash: burnResult.burnTxHash,
|
|
36
|
-
mintTxHash,
|
|
37
|
-
amount,
|
|
38
|
-
fromChain: this.fromChain,
|
|
39
|
-
toChain,
|
|
40
|
-
recipient,
|
|
41
|
-
nonce: burnResult.nonce,
|
|
42
|
-
elapsedMs: Date.now() - startMs,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
async burn(amount, toChain, options = {}) {
|
|
46
|
-
this.validateBridgeParams(amount, toChain);
|
|
47
|
-
const account = this.walletClient.account;
|
|
48
|
-
const recipient = options.destinationAddress ?? account.address;
|
|
49
|
-
const minFinalityThreshold = options.minFinalityThreshold ?? FINALITY_THRESHOLD.FAST;
|
|
50
|
-
const maxFee = options.maxFee ?? 0n;
|
|
51
|
-
await this.approveUsdc(amount);
|
|
52
|
-
return this.depositForBurn(amount, toChain, recipient, minFinalityThreshold, maxFee);
|
|
53
|
-
}
|
|
54
|
-
async waitForAttestation(messageHash, apiUrl = CIRCLE_ATTESTATION_API) {
|
|
55
|
-
return this.pollForAttestation(messageHash, this.fromChain, apiUrl);
|
|
56
|
-
}
|
|
57
|
-
async mint(messageBytes, attestation, toChain, destinationRpcUrl) {
|
|
58
|
-
return this.receiveMessage(messageBytes, attestation, toChain, destinationRpcUrl);
|
|
59
|
-
}
|
|
60
|
-
async getUsdcBalance() {
|
|
61
|
-
const account = this.walletClient.account;
|
|
62
|
-
const usdc = getContract({
|
|
63
|
-
address: USDC_CONTRACT[this.fromChain],
|
|
64
|
-
abi: ERC20BridgeAbi,
|
|
65
|
-
client: this.publicClient,
|
|
66
|
-
});
|
|
67
|
-
return usdc.read.balanceOf([account.address]);
|
|
68
|
-
}
|
|
69
|
-
async getUsdcAllowance() {
|
|
70
|
-
const account = this.walletClient.account;
|
|
71
|
-
const usdc = getContract({
|
|
72
|
-
address: USDC_CONTRACT[this.fromChain],
|
|
73
|
-
abi: ERC20BridgeAbi,
|
|
74
|
-
client: this.publicClient,
|
|
75
|
-
});
|
|
76
|
-
return usdc.read.allowance([account.address, TOKEN_MESSENGER_V2[this.fromChain]]);
|
|
77
|
-
}
|
|
78
|
-
async approveUsdc(amount) {
|
|
79
|
-
const account = this.walletClient.account;
|
|
80
|
-
const spender = TOKEN_MESSENGER_V2[this.fromChain];
|
|
81
|
-
const usdcAddress = USDC_CONTRACT[this.fromChain];
|
|
82
|
-
const usdc = getContract({ address: usdcAddress, abi: ERC20BridgeAbi, client: this.publicClient });
|
|
83
|
-
const currentAllowance = await usdc.read.allowance([account.address, spender]);
|
|
84
|
-
if (currentAllowance >= amount)
|
|
85
|
-
return;
|
|
86
|
-
const usdcWrite = getContract({
|
|
87
|
-
address: usdcAddress,
|
|
88
|
-
abi: ERC20BridgeAbi,
|
|
89
|
-
client: { public: this.publicClient, wallet: this.walletClient },
|
|
90
|
-
});
|
|
91
|
-
const approveTxHash = await usdcWrite.write.approve([spender, amount], {
|
|
92
|
-
account,
|
|
93
|
-
chain: VIEM_CHAINS[this.fromChain],
|
|
94
|
-
});
|
|
95
|
-
const approveReceipt = await this.publicClient.waitForTransactionReceipt({ hash: approveTxHash });
|
|
96
|
-
if (approveReceipt.status !== 'success') {
|
|
97
|
-
throw new BridgeError('INSUFFICIENT_ALLOWANCE', `USDC approve failed (tx: ${approveTxHash}).`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
async depositForBurn(amount, toChain, recipient, minFinalityThreshold, maxFee) {
|
|
101
|
-
const account = this.walletClient.account;
|
|
102
|
-
const destinationDomain = CCTP_DOMAIN_IDS[toChain];
|
|
103
|
-
const messengerAddress = TOKEN_MESSENGER_V2[this.fromChain];
|
|
104
|
-
const usdcAddress = USDC_CONTRACT[this.fromChain];
|
|
105
|
-
const mintRecipient = pad(recipient, { size: 32 });
|
|
106
|
-
const destinationCaller = pad('0x0', { size: 32 });
|
|
107
|
-
const messenger = getContract({
|
|
108
|
-
address: messengerAddress,
|
|
109
|
-
abi: TokenMessengerV2Abi,
|
|
110
|
-
client: { public: this.publicClient, wallet: this.walletClient },
|
|
111
|
-
});
|
|
112
|
-
let burnTxHash;
|
|
113
|
-
try {
|
|
114
|
-
burnTxHash = await messenger.write.depositForBurn([amount, destinationDomain, mintRecipient, usdcAddress, destinationCaller, maxFee, minFinalityThreshold], { account, chain: VIEM_CHAINS[this.fromChain] });
|
|
115
|
-
}
|
|
116
|
-
catch (err) {
|
|
117
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
118
|
-
throw new BridgeError('BURN_FAILED', `CCTP depositForBurn failed: ${msg}.`);
|
|
119
|
-
}
|
|
120
|
-
const receipt = await this.publicClient.waitForTransactionReceipt({ hash: burnTxHash });
|
|
121
|
-
if (receipt.status !== 'success') {
|
|
122
|
-
throw new BridgeError('BURN_FAILED', `depositForBurn transaction reverted (tx: ${burnTxHash}).`);
|
|
123
|
-
}
|
|
124
|
-
const { messageBytes, messageHash, nonce } = this.extractMessageSent(receipt);
|
|
125
|
-
return { burnTxHash, nonce, messageHash, messageBytes, sourceDomain: CCTP_DOMAIN_IDS[this.fromChain], destinationDomain };
|
|
126
|
-
}
|
|
127
|
-
extractMessageSent(receipt) {
|
|
128
|
-
const MESSAGE_SENT_TOPIC = '0x8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036';
|
|
129
|
-
for (const log of receipt.logs) {
|
|
130
|
-
if (log.topics[0]?.toLowerCase() === MESSAGE_SENT_TOPIC.toLowerCase()) {
|
|
131
|
-
const rawData = log.data;
|
|
132
|
-
if (rawData.length < 130)
|
|
133
|
-
continue;
|
|
134
|
-
const dataHex = rawData.slice(2);
|
|
135
|
-
const lengthHex = dataHex.slice(64, 128);
|
|
136
|
-
const messageLength = parseInt(lengthHex, 16);
|
|
137
|
-
if (messageLength === 0)
|
|
138
|
-
continue;
|
|
139
|
-
const messageBytesHex = dataHex.slice(128, 128 + messageLength * 2);
|
|
140
|
-
const messageBytes = ('0x' + messageBytesHex);
|
|
141
|
-
const messageHash = keccak256(messageBytes);
|
|
142
|
-
const nonceBytesHex = messageBytesHex.slice(24, 40);
|
|
143
|
-
const nonce = BigInt('0x' + nonceBytesHex);
|
|
144
|
-
return { messageBytes, messageHash, nonce };
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
throw new BridgeError('BURN_FAILED', 'Could not find MessageSent event in burn transaction receipt.');
|
|
148
|
-
}
|
|
149
|
-
async pollForAttestation(messageHash, fromChain, apiUrl) {
|
|
150
|
-
const sourceDomain = CCTP_DOMAIN_IDS[fromChain];
|
|
151
|
-
const url = `${apiUrl}/v2/messages/${sourceDomain}/${messageHash}`;
|
|
152
|
-
for (let attempt = 0; attempt < MAX_ATTESTATION_POLLS; attempt++) {
|
|
153
|
-
let response;
|
|
154
|
-
try {
|
|
155
|
-
const res = await fetch(url, { headers: { Accept: 'application/json' } });
|
|
156
|
-
if (!res.ok) {
|
|
157
|
-
if (res.status === 404) {
|
|
158
|
-
await this.sleep(ATTESTATION_POLL_INTERVAL_MS);
|
|
159
|
-
continue;
|
|
160
|
-
}
|
|
161
|
-
const body = await res.text().catch(() => '');
|
|
162
|
-
throw new BridgeError('ATTESTATION_ERROR', `Circle API returned HTTP ${res.status}: ${body}.`);
|
|
163
|
-
}
|
|
164
|
-
response = await res.json();
|
|
165
|
-
}
|
|
166
|
-
catch (err) {
|
|
167
|
-
if (err instanceof BridgeError)
|
|
168
|
-
throw err;
|
|
169
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
170
|
-
throw new BridgeError('ATTESTATION_ERROR', `Failed to reach Circle IRIS API: ${msg}.`);
|
|
171
|
-
}
|
|
172
|
-
if (response.status === 'complete' && response.attestation)
|
|
173
|
-
return response.attestation;
|
|
174
|
-
if (response.status === 'error') {
|
|
175
|
-
throw new BridgeError('ATTESTATION_ERROR', `Circle attestation failed: ${response.error ?? 'unknown error'}.`);
|
|
176
|
-
}
|
|
177
|
-
await this.sleep(ATTESTATION_POLL_INTERVAL_MS);
|
|
178
|
-
}
|
|
179
|
-
throw new BridgeError('ATTESTATION_TIMEOUT', `Attestation not received after ${MAX_ATTESTATION_POLLS} attempts. Message hash: ${messageHash}.`);
|
|
180
|
-
}
|
|
181
|
-
async receiveMessage(messageBytes, attestation, toChain, destinationRpcUrl) {
|
|
182
|
-
const account = this.walletClient.account;
|
|
183
|
-
const transmitterAddress = MESSAGE_TRANSMITTER_V2[toChain];
|
|
184
|
-
const destChain = VIEM_CHAINS[toChain];
|
|
185
|
-
const destPublicClient = createPublicClient({ chain: destChain, transport: http(destinationRpcUrl) });
|
|
186
|
-
const transmitter = getContract({
|
|
187
|
-
address: transmitterAddress,
|
|
188
|
-
abi: MessageTransmitterV2Abi,
|
|
189
|
-
client: { public: destPublicClient, wallet: this.walletClient },
|
|
190
|
-
});
|
|
191
|
-
let mintTxHash;
|
|
192
|
-
try {
|
|
193
|
-
mintTxHash = await transmitter.write.receiveMessage([messageBytes, attestation], { account, chain: destChain });
|
|
194
|
-
}
|
|
195
|
-
catch (err) {
|
|
196
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
197
|
-
throw new BridgeError('MINT_FAILED', `CCTP receiveMessage failed on ${toChain}: ${msg}.`);
|
|
198
|
-
}
|
|
199
|
-
const mintReceipt = await destPublicClient.waitForTransactionReceipt({ hash: mintTxHash });
|
|
200
|
-
if (mintReceipt.status !== 'success') {
|
|
201
|
-
throw new BridgeError('MINT_FAILED', `receiveMessage reverted on ${toChain} (tx: ${mintTxHash}).`);
|
|
202
|
-
}
|
|
203
|
-
return mintTxHash;
|
|
204
|
-
}
|
|
205
|
-
validateBridgeParams(amount, toChain) {
|
|
206
|
-
if (amount <= 0n) {
|
|
207
|
-
throw new BridgeError('INVALID_AMOUNT', `Bridge amount must be greater than 0. Received: ${amount}.`);
|
|
208
|
-
}
|
|
209
|
-
if (!(toChain in CCTP_DOMAIN_IDS)) {
|
|
210
|
-
throw new BridgeError('UNSUPPORTED_CHAIN', `Chain '${toChain}' is not supported.`);
|
|
211
|
-
}
|
|
212
|
-
if (toChain === this.fromChain) {
|
|
213
|
-
throw new BridgeError('UNSUPPORTED_CHAIN', `Source and destination chains must be different.`);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
sleep(ms) {
|
|
217
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
export class BridgeError extends Error {
|
|
221
|
-
constructor(code, message) {
|
|
222
|
-
super(`[BridgeModule:${code}] ${message}`);
|
|
223
|
-
this.code = code;
|
|
224
|
-
this.name = 'BridgeError';
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
export function createBridge(walletClient, fromChain = 'base', options = {}) {
|
|
228
|
-
return new BridgeModule(walletClient, fromChain, options);
|
|
229
|
-
}
|
|
230
|
-
export { CCTP_DOMAIN_IDS, BRIDGE_CHAIN_IDS, USDC_CONTRACT, TOKEN_MESSENGER_V2, MESSAGE_TRANSMITTER_V2, FINALITY_THRESHOLD, };
|
|
231
|
-
//# sourceMappingURL=client.js.map
|
|
232
|
-
//# sourceMappingURL=client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/bridge/client.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge/index.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { BridgeModule, BridgeError, createBridge, CCTP_DOMAIN_IDS, BRIDGE_CHAIN_IDS, USDC_CONTRACT, TOKEN_MESSENGER_V2, MESSAGE_TRANSMITTER_V2, FINALITY_THRESHOLD, } from './client.js';
|
|
2
|
-
export { TokenMessengerV2Abi, MessageTransmitterV2Abi, ERC20BridgeAbi } from './abis.js';
|
|
3
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,GAAG,MAAM,aAAa,CAAC;AACzL,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/bridge/index.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
export { BridgeModule, BridgeError, createBridge, CCTP_DOMAIN_IDS, BRIDGE_CHAIN_IDS, USDC_CONTRACT, TOKEN_MESSENGER_V2, MESSAGE_TRANSMITTER_V2, FINALITY_THRESHOLD, } from './client.js';
|
|
3
|
-
export { TokenMessengerV2Abi, MessageTransmitterV2Abi, ERC20BridgeAbi } from './abis.js';
|
|
4
|
-
//# sourceMappingURL=index.js.map
|
|
5
|
-
//# sourceMappingURL=index.js.map
|
package/dist/bridge/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,GAAG,MAAM,aAAa,CAAC;AACzL,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACzF,iCAAiC"}
|
package/dist/bridge/types.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/** CCTP V2 domain IDs (Circle's internal chain identifiers) */
|
|
2
|
-
export declare const CCTP_DOMAIN_IDS: {
|
|
3
|
-
ethereum: number;
|
|
4
|
-
optimism: number;
|
|
5
|
-
arbitrum: number;
|
|
6
|
-
base: number;
|
|
7
|
-
};
|
|
8
|
-
/** EVM chain IDs for supported bridge chains */
|
|
9
|
-
export declare const BRIDGE_CHAIN_IDS: {
|
|
10
|
-
ethereum: number;
|
|
11
|
-
optimism: number;
|
|
12
|
-
arbitrum: number;
|
|
13
|
-
base: number;
|
|
14
|
-
};
|
|
15
|
-
/** USDC contract addresses per chain */
|
|
16
|
-
export declare const USDC_CONTRACT: {
|
|
17
|
-
base: string;
|
|
18
|
-
ethereum: string;
|
|
19
|
-
optimism: string;
|
|
20
|
-
arbitrum: string;
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* CCTP V2 TokenMessengerV2 addresses (source chain — where burn happens).
|
|
24
|
-
*/
|
|
25
|
-
export declare const TOKEN_MESSENGER_V2: {
|
|
26
|
-
base: string;
|
|
27
|
-
ethereum: string;
|
|
28
|
-
optimism: string;
|
|
29
|
-
arbitrum: string;
|
|
30
|
-
};
|
|
31
|
-
/** CCTP V2 MessageTransmitterV2 addresses (destination chain — where mint happens) */
|
|
32
|
-
export declare const MESSAGE_TRANSMITTER_V2: {
|
|
33
|
-
base: string;
|
|
34
|
-
ethereum: string;
|
|
35
|
-
optimism: string;
|
|
36
|
-
arbitrum: string;
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* CCTP V2 minFinalityThreshold values.
|
|
40
|
-
* - FAST (0): ~12 seconds. Circle fast attestation.
|
|
41
|
-
* - FINALIZED (1000): Full on-chain finality.
|
|
42
|
-
*/
|
|
43
|
-
export declare const FINALITY_THRESHOLD: {
|
|
44
|
-
FAST: number;
|
|
45
|
-
FINALIZED: number;
|
|
46
|
-
};
|
|
47
|
-
/** Circle IRIS attestation API base URL */
|
|
48
|
-
export declare const CIRCLE_ATTESTATION_API = "https://iris-api.circle.com";
|
|
49
|
-
/** Max attestation polling attempts before timeout */
|
|
50
|
-
export declare const MAX_ATTESTATION_POLLS = 60;
|
|
51
|
-
/** Polling interval for attestation (milliseconds) */
|
|
52
|
-
export declare const ATTESTATION_POLL_INTERVAL_MS = 5000;
|
|
53
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/bridge/types.ts"],"names":[],"mappings":"AACA,+DAA+D;AAC/D,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC;AACF,gDAAgD;AAChD,eAAO,MAAM,gBAAgB;;;;;CAK5B,CAAC;AACF,wCAAwC;AACxC,eAAO,MAAM,aAAa;;;;;CAKzB,CAAC;AACF;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;CAK9B,CAAC;AACF,sFAAsF;AACtF,eAAO,MAAM,sBAAsB;;;;;CAKlC,CAAC;AACF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;CAG9B,CAAC;AACF,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,gCAAgC,CAAC;AACpE,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,sDAAsD;AACtD,eAAO,MAAM,4BAA4B,OAAO,CAAC"}
|
package/dist/bridge/types.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
/** CCTP V2 domain IDs (Circle's internal chain identifiers) */
|
|
3
|
-
export const CCTP_DOMAIN_IDS = {
|
|
4
|
-
ethereum: 0,
|
|
5
|
-
optimism: 2,
|
|
6
|
-
arbitrum: 3,
|
|
7
|
-
base: 6,
|
|
8
|
-
};
|
|
9
|
-
/** EVM chain IDs for supported bridge chains */
|
|
10
|
-
export const BRIDGE_CHAIN_IDS = {
|
|
11
|
-
ethereum: 1,
|
|
12
|
-
optimism: 10,
|
|
13
|
-
arbitrum: 42161,
|
|
14
|
-
base: 8453,
|
|
15
|
-
};
|
|
16
|
-
/** USDC contract addresses per chain */
|
|
17
|
-
export const USDC_CONTRACT = {
|
|
18
|
-
base: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
19
|
-
ethereum: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
20
|
-
optimism: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',
|
|
21
|
-
arbitrum: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* CCTP V2 TokenMessengerV2 addresses (source chain — where burn happens).
|
|
25
|
-
*/
|
|
26
|
-
export const TOKEN_MESSENGER_V2 = {
|
|
27
|
-
base: '0x8FD3bCdFd9987D7F3C86b67D2f25Dd4e82C80b2B',
|
|
28
|
-
ethereum: '0xbd3fa81b58ba92a82136038b25adec7066af3155',
|
|
29
|
-
optimism: '0x28Bc09B4EFdA1E348a97cA91F16CC43adFF2f50d',
|
|
30
|
-
arbitrum: '0x19330d10D9Cc8751218eaf51E8885D058642E08A',
|
|
31
|
-
};
|
|
32
|
-
/** CCTP V2 MessageTransmitterV2 addresses (destination chain — where mint happens) */
|
|
33
|
-
export const MESSAGE_TRANSMITTER_V2 = {
|
|
34
|
-
base: '0xE737e5cEBEEBa77EFE7EcB0cd46C6b9c1Ce1e8b3',
|
|
35
|
-
ethereum: '0xE737e5cEBEEBa77EFE7EcB0cd46C6b9c1Ce1e8b3',
|
|
36
|
-
optimism: '0xE737e5cEBEEBa77EFE7EcB0cd46C6b9c1Ce1e8b3',
|
|
37
|
-
arbitrum: '0xE737e5cEBEEBa77EFE7EcB0cd46C6b9c1Ce1e8b3',
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* CCTP V2 minFinalityThreshold values.
|
|
41
|
-
* - FAST (0): ~12 seconds. Circle fast attestation.
|
|
42
|
-
* - FINALIZED (1000): Full on-chain finality.
|
|
43
|
-
*/
|
|
44
|
-
export const FINALITY_THRESHOLD = {
|
|
45
|
-
FAST: 0,
|
|
46
|
-
FINALIZED: 1000,
|
|
47
|
-
};
|
|
48
|
-
/** Circle IRIS attestation API base URL */
|
|
49
|
-
export const CIRCLE_ATTESTATION_API = 'https://iris-api.circle.com';
|
|
50
|
-
/** Max attestation polling attempts before timeout */
|
|
51
|
-
export const MAX_ATTESTATION_POLLS = 60;
|
|
52
|
-
/** Polling interval for attestation (milliseconds) */
|
|
53
|
-
export const ATTESTATION_POLL_INTERVAL_MS = 5000;
|
|
54
|
-
//# sourceMappingURL=types.js.map
|
|
55
|
-
//# sourceMappingURL=types.js.map
|
package/dist/bridge/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/bridge/types.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;CACV,CAAC;AACF,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,IAAI;CACb,CAAC;AACF,wCAAwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,IAAI,EAAE,4CAA4C;IAClD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACzD,CAAC;AACF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,IAAI,EAAE,4CAA4C;IAClD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACzD,CAAC;AACF,sFAAsF;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,IAAI,EAAE,4CAA4C;IAClD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACzD,CAAC;AACF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,IAAI;CAClB,CAAC;AACF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AACpE,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,sDAAsD;AACtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AACjD,iCAAiC"}
|
package/dist/identity/did.d.ts
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent DID + Verifiable Credentials
|
|
3
|
-
*
|
|
4
|
-
* Derives deterministic did:key identifiers from agent private keys and issues
|
|
5
|
-
* W3C-compliant Verifiable Credentials. Zero external registry — fully self-sovereign.
|
|
6
|
-
*
|
|
7
|
-
* DID format: did:key:z6Mk... (multibase base58btc-encoded ed25519 public key)
|
|
8
|
-
* VC format: W3C VC Data Model v1.1 with Ed25519Signature2020 proof
|
|
9
|
-
*/
|
|
10
|
-
import type { Hex } from 'viem';
|
|
11
|
-
export interface AgentDID {
|
|
12
|
-
did: string;
|
|
13
|
-
publicKeyHex: string;
|
|
14
|
-
/** Multibase-encoded public key (base58btc, z-prefix) */
|
|
15
|
-
publicKeyMultibase: string;
|
|
16
|
-
}
|
|
17
|
-
export interface DIDDocument {
|
|
18
|
-
'@context': string[];
|
|
19
|
-
id: string;
|
|
20
|
-
verificationMethod: VerificationMethod[];
|
|
21
|
-
authentication: string[];
|
|
22
|
-
assertionMethod: string[];
|
|
23
|
-
capabilityDelegation: string[];
|
|
24
|
-
capabilityInvocation: string[];
|
|
25
|
-
}
|
|
26
|
-
export interface VerificationMethod {
|
|
27
|
-
id: string;
|
|
28
|
-
type: string;
|
|
29
|
-
controller: string;
|
|
30
|
-
publicKeyMultibase: string;
|
|
31
|
-
}
|
|
32
|
-
export interface VerifiableCredential {
|
|
33
|
-
'@context': string[];
|
|
34
|
-
id: string;
|
|
35
|
-
type: string[];
|
|
36
|
-
issuer: string;
|
|
37
|
-
issuanceDate: string;
|
|
38
|
-
credentialSubject: Record<string, unknown>;
|
|
39
|
-
proof: CredentialProof;
|
|
40
|
-
}
|
|
41
|
-
export interface CredentialProof {
|
|
42
|
-
type: string;
|
|
43
|
-
created: string;
|
|
44
|
-
verificationMethod: string;
|
|
45
|
-
proofPurpose: string;
|
|
46
|
-
proofValue: string;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Derive a deterministic did:key from a wallet's private key.
|
|
50
|
-
* The ed25519 public key is derived from the private key, then multibase-encoded.
|
|
51
|
-
*/
|
|
52
|
-
export declare function deriveAgentDID(privateKey: Hex): AgentDID;
|
|
53
|
-
/**
|
|
54
|
-
* Export a W3C DID Document for an AgentDID.
|
|
55
|
-
*/
|
|
56
|
-
export declare function exportDIDDocument(did: AgentDID): DIDDocument;
|
|
57
|
-
/**
|
|
58
|
-
* Issue a W3C Verifiable Credential signed with Ed25519Signature2020.
|
|
59
|
-
*/
|
|
60
|
-
export declare function issueCredential(issuerDID: AgentDID, privateKey: Hex, claims: Record<string, unknown>): VerifiableCredential;
|
|
61
|
-
/**
|
|
62
|
-
* Verify a Verifiable Credential's Ed25519 signature.
|
|
63
|
-
* Returns true if the signature is valid and matches the issuer's DID.
|
|
64
|
-
*/
|
|
65
|
-
export declare function verifyCredential(vc: VerifiableCredential): boolean;
|
|
66
|
-
//# sourceMappingURL=did.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../../src/identity/did.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAOhC,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;IACzC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAyDD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,GAAG,GAAG,QAAQ,CAaxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAqB5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,QAAQ,EACnB,UAAU,EAAE,GAAG,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,oBAAoB,CAyCtB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,oBAAoB,GAAG,OAAO,CA2BlE"}
|
package/dist/identity/did.js
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent DID + Verifiable Credentials
|
|
3
|
-
*
|
|
4
|
-
* Derives deterministic did:key identifiers from agent private keys and issues
|
|
5
|
-
* W3C-compliant Verifiable Credentials. Zero external registry — fully self-sovereign.
|
|
6
|
-
*
|
|
7
|
-
* DID format: did:key:z6Mk... (multibase base58btc-encoded ed25519 public key)
|
|
8
|
-
* VC format: W3C VC Data Model v1.1 with Ed25519Signature2020 proof
|
|
9
|
-
*/
|
|
10
|
-
import * as ed from '@noble/ed25519';
|
|
11
|
-
import { sha512 } from '@noble/hashes/sha512';
|
|
12
|
-
import { sha256 } from '@noble/hashes/sha256';
|
|
13
|
-
// @noble/ed25519 v2 requires setting sha512 sync
|
|
14
|
-
ed.etc.sha512Sync = (...m) => sha512(ed.etc.concatBytes(...m));
|
|
15
|
-
// ─── Base58btc encoding (multibase) ──────────────────────────────────────────
|
|
16
|
-
const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
17
|
-
function base58Encode(bytes) {
|
|
18
|
-
let num = BigInt('0x' + Buffer.from(bytes).toString('hex'));
|
|
19
|
-
const result = [];
|
|
20
|
-
while (num > 0n) {
|
|
21
|
-
const mod = num % 58n;
|
|
22
|
-
result.unshift(BASE58_ALPHABET[Number(mod)]);
|
|
23
|
-
num = num / 58n;
|
|
24
|
-
}
|
|
25
|
-
// Leading zeros
|
|
26
|
-
for (let i = 0; i < bytes.length && bytes[i] === 0; i++) {
|
|
27
|
-
result.unshift('1');
|
|
28
|
-
}
|
|
29
|
-
return result.join('');
|
|
30
|
-
}
|
|
31
|
-
function base58Decode(str) {
|
|
32
|
-
let num = 0n;
|
|
33
|
-
for (const char of str) {
|
|
34
|
-
const idx = BASE58_ALPHABET.indexOf(char);
|
|
35
|
-
if (idx === -1)
|
|
36
|
-
throw new Error(`Invalid base58 character: ${char}`);
|
|
37
|
-
num = num * 58n + BigInt(idx);
|
|
38
|
-
}
|
|
39
|
-
const rawHex = num.toString(16);
|
|
40
|
-
const hex = rawHex.length % 2 ? "0" + rawHex : rawHex;
|
|
41
|
-
const bytes = new Uint8Array(hex.length / 2);
|
|
42
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
43
|
-
bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
|
|
44
|
-
}
|
|
45
|
-
// Re-add leading zero bytes
|
|
46
|
-
const leadingZeros = str.split('').findIndex(c => c !== '1');
|
|
47
|
-
const prefix = new Uint8Array(leadingZeros === -1 ? str.length : leadingZeros);
|
|
48
|
-
return new Uint8Array([...prefix, ...bytes]);
|
|
49
|
-
}
|
|
50
|
-
// ─── Multicodec prefix for ed25519-pub (0xed01) ──────────────────────────────
|
|
51
|
-
const ED25519_PUB_MULTICODEC = new Uint8Array([0xed, 0x01]);
|
|
52
|
-
function pubkeyToMultibase(pubkey) {
|
|
53
|
-
const prefixed = new Uint8Array([...ED25519_PUB_MULTICODEC, ...pubkey]);
|
|
54
|
-
return 'z' + base58Encode(prefixed);
|
|
55
|
-
}
|
|
56
|
-
function multibaseToPubkey(multibase) {
|
|
57
|
-
if (!multibase.startsWith('z'))
|
|
58
|
-
throw new Error('Expected base58btc multibase (z prefix)');
|
|
59
|
-
const decoded = base58Decode(multibase.slice(1));
|
|
60
|
-
// Strip the 2-byte multicodec prefix
|
|
61
|
-
return decoded.slice(2);
|
|
62
|
-
}
|
|
63
|
-
// ─── Core Functions ───────────────────────────────────────────────────────────
|
|
64
|
-
/**
|
|
65
|
-
* Derive a deterministic did:key from a wallet's private key.
|
|
66
|
-
* The ed25519 public key is derived from the private key, then multibase-encoded.
|
|
67
|
-
*/
|
|
68
|
-
export function deriveAgentDID(privateKey) {
|
|
69
|
-
// Strip 0x prefix, get raw bytes
|
|
70
|
-
const privKeyBytes = new Uint8Array(Buffer.from(privateKey.startsWith('0x') ? privateKey.slice(2) : privateKey, 'hex'));
|
|
71
|
-
// Derive ed25519 public key
|
|
72
|
-
const pubkey = ed.getPublicKey(privKeyBytes);
|
|
73
|
-
const publicKeyHex = Buffer.from(pubkey).toString('hex');
|
|
74
|
-
const publicKeyMultibase = pubkeyToMultibase(pubkey);
|
|
75
|
-
const did = `did:key:${publicKeyMultibase}`;
|
|
76
|
-
return { did, publicKeyHex, publicKeyMultibase };
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Export a W3C DID Document for an AgentDID.
|
|
80
|
-
*/
|
|
81
|
-
export function exportDIDDocument(did) {
|
|
82
|
-
const vmId = `${did.did}#${did.publicKeyMultibase}`;
|
|
83
|
-
return {
|
|
84
|
-
'@context': [
|
|
85
|
-
'https://www.w3.org/ns/did/v1',
|
|
86
|
-
'https://w3id.org/security/suites/ed25519-2020/v1',
|
|
87
|
-
],
|
|
88
|
-
id: did.did,
|
|
89
|
-
verificationMethod: [
|
|
90
|
-
{
|
|
91
|
-
id: vmId,
|
|
92
|
-
type: 'Ed25519VerificationKey2020',
|
|
93
|
-
controller: did.did,
|
|
94
|
-
publicKeyMultibase: did.publicKeyMultibase,
|
|
95
|
-
},
|
|
96
|
-
],
|
|
97
|
-
authentication: [vmId],
|
|
98
|
-
assertionMethod: [vmId],
|
|
99
|
-
capabilityDelegation: [vmId],
|
|
100
|
-
capabilityInvocation: [vmId],
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Issue a W3C Verifiable Credential signed with Ed25519Signature2020.
|
|
105
|
-
*/
|
|
106
|
-
export function issueCredential(issuerDID, privateKey, claims) {
|
|
107
|
-
const privKeyBytes = new Uint8Array(Buffer.from(privateKey.startsWith('0x') ? privateKey.slice(2) : privateKey, 'hex'));
|
|
108
|
-
const now = new Date().toISOString();
|
|
109
|
-
const credId = `urn:uuid:${generateUUID()}`;
|
|
110
|
-
const vc = {
|
|
111
|
-
'@context': [
|
|
112
|
-
'https://www.w3.org/2018/credentials/v1',
|
|
113
|
-
'https://w3id.org/security/suites/ed25519-2020/v1',
|
|
114
|
-
],
|
|
115
|
-
id: credId,
|
|
116
|
-
type: ['VerifiableCredential', 'AgentCredential'],
|
|
117
|
-
issuer: issuerDID.did,
|
|
118
|
-
issuanceDate: now,
|
|
119
|
-
credentialSubject: {
|
|
120
|
-
id: issuerDID.did,
|
|
121
|
-
...claims,
|
|
122
|
-
},
|
|
123
|
-
};
|
|
124
|
-
// Sign the canonical form of the credential body
|
|
125
|
-
const vcBytes = new TextEncoder().encode(canonicalize(vc));
|
|
126
|
-
const hash = sha256(vcBytes);
|
|
127
|
-
const sig = ed.sign(hash, privKeyBytes);
|
|
128
|
-
const proofValue = 'z' + base58Encode(sig);
|
|
129
|
-
const vmId = `${issuerDID.did}#${issuerDID.publicKeyMultibase}`;
|
|
130
|
-
return {
|
|
131
|
-
...vc,
|
|
132
|
-
proof: {
|
|
133
|
-
type: 'Ed25519Signature2020',
|
|
134
|
-
created: now,
|
|
135
|
-
verificationMethod: vmId,
|
|
136
|
-
proofPurpose: 'assertionMethod',
|
|
137
|
-
proofValue,
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Verify a Verifiable Credential's Ed25519 signature.
|
|
143
|
-
* Returns true if the signature is valid and matches the issuer's DID.
|
|
144
|
-
*/
|
|
145
|
-
export function verifyCredential(vc) {
|
|
146
|
-
try {
|
|
147
|
-
const { proof, ...vcBody } = vc;
|
|
148
|
-
// Extract public key from the verificationMethod DID
|
|
149
|
-
// Format: did:key:z6Mk...#z6Mk...
|
|
150
|
-
const vmParts = proof.verificationMethod.split('#');
|
|
151
|
-
const didPart = vmParts[0];
|
|
152
|
-
const keyPart = vmParts[1] ?? didPart.replace('did:key:', '');
|
|
153
|
-
const pubkey = multibaseToPubkey(keyPart);
|
|
154
|
-
// Verify the issuer DID matches
|
|
155
|
-
const expectedDID = `did:key:${keyPart}`;
|
|
156
|
-
if (vc.issuer !== expectedDID)
|
|
157
|
-
return false;
|
|
158
|
-
// Re-compute the canonical hash
|
|
159
|
-
const vcBytes = new TextEncoder().encode(canonicalize(vcBody));
|
|
160
|
-
const hash = sha256(vcBytes);
|
|
161
|
-
// Decode the signature
|
|
162
|
-
const sigBytes = base58Decode(proof.proofValue.slice(1)); // strip 'z' prefix
|
|
163
|
-
return ed.verify(sigBytes, hash, pubkey);
|
|
164
|
-
}
|
|
165
|
-
catch {
|
|
166
|
-
return false;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
170
|
-
/** Deterministic JSON serialization for consistent signing */
|
|
171
|
-
function canonicalize(obj) {
|
|
172
|
-
if (typeof obj !== 'object' || obj === null)
|
|
173
|
-
return JSON.stringify(obj);
|
|
174
|
-
if (Array.isArray(obj))
|
|
175
|
-
return '[' + obj.map(canonicalize).join(',') + ']';
|
|
176
|
-
const keys = Object.keys(obj).sort();
|
|
177
|
-
return '{' + keys.map(k => JSON.stringify(k) + ':' + canonicalize(obj[k])).join(',') + '}';
|
|
178
|
-
}
|
|
179
|
-
function generateUUID() {
|
|
180
|
-
const bytes = crypto.getRandomValues(new Uint8Array(16));
|
|
181
|
-
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
182
|
-
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
183
|
-
const hex = Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
184
|
-
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
185
|
-
}
|
|
186
|
-
//# sourceMappingURL=did.js.map
|