@chainlink/ccip-sdk 0.91.1 → 0.92.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/README.md +127 -80
- package/dist/aptos/hasher.d.ts.map +1 -1
- package/dist/aptos/hasher.js +7 -6
- package/dist/aptos/hasher.js.map +1 -1
- package/dist/aptos/index.d.ts +7 -2
- package/dist/aptos/index.d.ts.map +1 -1
- package/dist/aptos/index.js +29 -20
- package/dist/aptos/index.js.map +1 -1
- package/dist/aptos/logs.d.ts +5 -3
- package/dist/aptos/logs.d.ts.map +1 -1
- package/dist/aptos/logs.js +64 -27
- package/dist/aptos/logs.js.map +1 -1
- package/dist/aptos/token.d.ts.map +1 -1
- package/dist/aptos/token.js +2 -1
- package/dist/aptos/token.js.map +1 -1
- package/dist/aptos/types.js +6 -6
- package/dist/aptos/types.js.map +1 -1
- package/dist/chain.d.ts +36 -11
- package/dist/chain.d.ts.map +1 -1
- package/dist/chain.js +34 -2
- package/dist/chain.js.map +1 -1
- package/dist/commits.d.ts +2 -3
- package/dist/commits.d.ts.map +1 -1
- package/dist/commits.js +19 -8
- package/dist/commits.js.map +1 -1
- package/dist/errors/CCIPError.d.ts +48 -0
- package/dist/errors/CCIPError.d.ts.map +1 -0
- package/dist/errors/CCIPError.js +65 -0
- package/dist/errors/CCIPError.js.map +1 -0
- package/dist/errors/codes.d.ts +120 -0
- package/dist/errors/codes.d.ts.map +1 -0
- package/dist/errors/codes.js +156 -0
- package/dist/errors/codes.js.map +1 -0
- package/dist/errors/index.d.ts +26 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +51 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/recovery.d.ts +6 -0
- package/dist/errors/recovery.d.ts.map +1 -0
- package/dist/errors/recovery.js +118 -0
- package/dist/errors/recovery.js.map +1 -0
- package/dist/errors/specialized.d.ts +637 -0
- package/dist/errors/specialized.d.ts.map +1 -0
- package/dist/errors/specialized.js +1298 -0
- package/dist/errors/specialized.js.map +1 -0
- package/dist/errors/utils.d.ts +11 -0
- package/dist/errors/utils.d.ts.map +1 -0
- package/dist/errors/utils.js +61 -0
- package/dist/errors/utils.js.map +1 -0
- package/dist/evm/abi/CommitStore_1_5.js +1 -1
- package/dist/evm/abi/LockReleaseTokenPool_1_5.js +1 -1
- package/dist/evm/abi/OffRamp_1_5.js +1 -1
- package/dist/evm/abi/OnRamp_1_5.js +1 -1
- package/dist/evm/abi/PriceRegistry_1_2.d.ts +443 -0
- package/dist/evm/abi/PriceRegistry_1_2.d.ts.map +1 -0
- package/dist/evm/abi/PriceRegistry_1_2.js +439 -0
- package/dist/evm/abi/PriceRegistry_1_2.js.map +1 -0
- package/dist/evm/const.d.ts +1 -0
- package/dist/evm/const.d.ts.map +1 -1
- package/dist/evm/const.js +2 -0
- package/dist/evm/const.js.map +1 -1
- package/dist/evm/hasher.d.ts.map +1 -1
- package/dist/evm/hasher.js +7 -6
- package/dist/evm/hasher.js.map +1 -1
- package/dist/evm/index.d.ts +9 -13
- package/dist/evm/index.d.ts.map +1 -1
- package/dist/evm/index.js +85 -68
- package/dist/evm/index.js.map +1 -1
- package/dist/evm/logs.d.ts.map +1 -1
- package/dist/evm/logs.js +47 -16
- package/dist/evm/logs.js.map +1 -1
- package/dist/evm/messages.d.ts +7 -6
- package/dist/evm/messages.d.ts.map +1 -1
- package/dist/evm/offchain.js +1 -1
- package/dist/evm/offchain.js.map +1 -1
- package/dist/evm/types.d.ts +10 -0
- package/dist/evm/types.d.ts.map +1 -0
- package/dist/evm/types.js +2 -0
- package/dist/evm/types.js.map +1 -0
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +9 -5
- package/dist/execution.js.map +1 -1
- package/dist/extra-args.d.ts.map +1 -1
- package/dist/extra-args.js +4 -3
- package/dist/extra-args.js.map +1 -1
- package/dist/gas.d.ts.map +1 -1
- package/dist/gas.js +3 -2
- package/dist/gas.js.map +1 -1
- package/dist/hasher/hasher.d.ts.map +1 -1
- package/dist/hasher/hasher.js +2 -1
- package/dist/hasher/hasher.js.map +1 -1
- package/dist/hasher/merklemulti.d.ts.map +1 -1
- package/dist/hasher/merklemulti.js +9 -8
- package/dist/hasher/merklemulti.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/offchain.d.ts.map +1 -1
- package/dist/offchain.js +5 -8
- package/dist/offchain.js.map +1 -1
- package/dist/requests.d.ts +1 -1
- package/dist/requests.d.ts.map +1 -1
- package/dist/requests.js +37 -43
- package/dist/requests.js.map +1 -1
- package/dist/selectors.d.ts.map +1 -1
- package/dist/selectors.js +22 -0
- package/dist/selectors.js.map +1 -1
- package/dist/solana/cleanup.d.ts +2 -2
- package/dist/solana/cleanup.d.ts.map +1 -1
- package/dist/solana/cleanup.js +2 -3
- package/dist/solana/cleanup.js.map +1 -1
- package/dist/solana/exec.d.ts.map +1 -1
- package/dist/solana/exec.js +12 -12
- package/dist/solana/exec.js.map +1 -1
- package/dist/solana/hasher.d.ts.map +1 -1
- package/dist/solana/hasher.js +6 -5
- package/dist/solana/hasher.js.map +1 -1
- package/dist/solana/index.d.ts +30 -13
- package/dist/solana/index.d.ts.map +1 -1
- package/dist/solana/index.js +96 -143
- package/dist/solana/index.js.map +1 -1
- package/dist/solana/logs.d.ts +15 -0
- package/dist/solana/logs.d.ts.map +1 -0
- package/dist/solana/logs.js +106 -0
- package/dist/solana/logs.js.map +1 -0
- package/dist/solana/offchain.d.ts.map +1 -1
- package/dist/solana/offchain.js +6 -5
- package/dist/solana/offchain.js.map +1 -1
- package/dist/solana/patchBorsh.d.ts.map +1 -1
- package/dist/solana/patchBorsh.js +3 -2
- package/dist/solana/patchBorsh.js.map +1 -1
- package/dist/solana/send.d.ts.map +1 -1
- package/dist/solana/send.js +8 -7
- package/dist/solana/send.js.map +1 -1
- package/dist/solana/utils.d.ts +7 -8
- package/dist/solana/utils.d.ts.map +1 -1
- package/dist/solana/utils.js +23 -11
- package/dist/solana/utils.js.map +1 -1
- package/dist/sui/discovery.d.ts +18 -0
- package/dist/sui/discovery.d.ts.map +1 -0
- package/dist/sui/discovery.js +116 -0
- package/dist/sui/discovery.js.map +1 -0
- package/dist/sui/events.d.ts +36 -0
- package/dist/sui/events.d.ts.map +1 -0
- package/dist/sui/events.js +179 -0
- package/dist/sui/events.js.map +1 -0
- package/dist/sui/hasher.d.ts.map +1 -1
- package/dist/sui/hasher.js +6 -5
- package/dist/sui/hasher.js.map +1 -1
- package/dist/sui/index.d.ts +69 -41
- package/dist/sui/index.d.ts.map +1 -1
- package/dist/sui/index.js +402 -65
- package/dist/sui/index.js.map +1 -1
- package/dist/sui/manuallyExec/encoder.d.ts +8 -0
- package/dist/sui/manuallyExec/encoder.d.ts.map +1 -0
- package/dist/sui/manuallyExec/encoder.js +76 -0
- package/dist/sui/manuallyExec/encoder.js.map +1 -0
- package/dist/sui/manuallyExec/index.d.ts +37 -0
- package/dist/sui/manuallyExec/index.d.ts.map +1 -0
- package/dist/sui/manuallyExec/index.js +81 -0
- package/dist/sui/manuallyExec/index.js.map +1 -0
- package/dist/sui/objects.d.ts +46 -0
- package/dist/sui/objects.d.ts.map +1 -0
- package/dist/sui/objects.js +259 -0
- package/dist/sui/objects.js.map +1 -0
- package/dist/ton/bindings/offramp.d.ts +48 -0
- package/dist/ton/bindings/offramp.d.ts.map +1 -0
- package/dist/ton/bindings/offramp.js +63 -0
- package/dist/ton/bindings/offramp.js.map +1 -0
- package/dist/ton/bindings/onramp.d.ts +40 -0
- package/dist/ton/bindings/onramp.d.ts.map +1 -0
- package/dist/ton/bindings/onramp.js +51 -0
- package/dist/ton/bindings/onramp.js.map +1 -0
- package/dist/ton/bindings/router.d.ts +47 -0
- package/dist/ton/bindings/router.d.ts.map +1 -0
- package/dist/ton/bindings/router.js +51 -0
- package/dist/ton/bindings/router.js.map +1 -0
- package/dist/ton/exec.d.ts +18 -0
- package/dist/ton/exec.d.ts.map +1 -0
- package/dist/ton/exec.js +28 -0
- package/dist/ton/exec.js.map +1 -0
- package/dist/ton/hasher.d.ts +27 -0
- package/dist/ton/hasher.d.ts.map +1 -0
- package/dist/ton/hasher.js +134 -0
- package/dist/ton/hasher.js.map +1 -0
- package/dist/ton/index.d.ts +247 -0
- package/dist/ton/index.d.ts.map +1 -0
- package/dist/ton/index.js +781 -0
- package/dist/ton/index.js.map +1 -0
- package/dist/ton/logs.d.ts +26 -0
- package/dist/ton/logs.d.ts.map +1 -0
- package/dist/ton/logs.js +126 -0
- package/dist/ton/logs.js.map +1 -0
- package/dist/ton/types.d.ts +37 -0
- package/dist/ton/types.d.ts.map +1 -0
- package/dist/ton/types.js +92 -0
- package/dist/ton/types.js.map +1 -0
- package/dist/ton/utils.d.ts +67 -0
- package/dist/ton/utils.d.ts.map +1 -0
- package/dist/ton/utils.js +425 -0
- package/dist/ton/utils.js.map +1 -0
- package/dist/types.d.ts +4 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +10 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +52 -17
- package/dist/utils.js.map +1 -1
- package/package.json +12 -10
- package/src/aptos/hasher.ts +10 -6
- package/src/aptos/index.ts +50 -31
- package/src/aptos/logs.ts +85 -29
- package/src/aptos/token.ts +5 -1
- package/src/aptos/types.ts +6 -6
- package/src/chain.ts +83 -12
- package/src/commits.ts +23 -11
- package/src/errors/CCIPError.ts +86 -0
- package/src/errors/codes.ts +179 -0
- package/src/errors/index.ts +175 -0
- package/src/errors/recovery.ts +170 -0
- package/src/errors/specialized.ts +1655 -0
- package/src/errors/utils.ts +73 -0
- package/src/evm/abi/CommitStore_1_5.ts +1 -1
- package/src/evm/abi/LockReleaseTokenPool_1_5.ts +1 -1
- package/src/evm/abi/OffRamp_1_5.ts +1 -1
- package/src/evm/abi/OnRamp_1_5.ts +1 -1
- package/src/evm/abi/PriceRegistry_1_2.ts +438 -0
- package/src/evm/const.ts +2 -0
- package/src/evm/hasher.ts +7 -6
- package/src/evm/index.ts +104 -86
- package/src/evm/logs.ts +64 -16
- package/src/evm/messages.ts +14 -14
- package/src/evm/offchain.ts +1 -1
- package/src/evm/types.ts +11 -0
- package/src/execution.ts +13 -9
- package/src/extra-args.ts +4 -3
- package/src/gas.ts +10 -3
- package/src/hasher/hasher.ts +2 -1
- package/src/hasher/merklemulti.ts +18 -8
- package/src/index.ts +14 -2
- package/src/offchain.ts +10 -14
- package/src/requests.ts +51 -53
- package/src/selectors.ts +23 -0
- package/src/solana/cleanup.ts +2 -4
- package/src/solana/exec.ts +13 -13
- package/src/solana/hasher.ts +9 -5
- package/src/solana/index.ts +126 -200
- package/src/solana/logs.ts +155 -0
- package/src/solana/offchain.ts +10 -7
- package/src/solana/patchBorsh.ts +3 -2
- package/src/solana/send.ts +14 -7
- package/src/solana/utils.ts +31 -17
- package/src/sui/discovery.ts +163 -0
- package/src/sui/events.ts +328 -0
- package/src/sui/hasher.ts +6 -5
- package/src/sui/index.ts +528 -80
- package/src/sui/manuallyExec/encoder.ts +88 -0
- package/src/sui/manuallyExec/index.ts +137 -0
- package/src/sui/objects.ts +358 -0
- package/src/ton/bindings/offramp.ts +96 -0
- package/src/ton/bindings/onramp.ts +72 -0
- package/src/ton/bindings/router.ts +65 -0
- package/src/ton/exec.ts +44 -0
- package/src/ton/hasher.ts +184 -0
- package/src/ton/index.ts +989 -0
- package/src/ton/logs.ts +157 -0
- package/src/ton/types.ts +143 -0
- package/src/ton/utils.ts +514 -0
- package/src/types.ts +6 -2
- package/src/utils.ts +58 -23
- package/tsconfig.json +2 -1
package/dist/solana/utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Buffer } from 'buffer';
|
|
2
1
|
import { eventDiscriminator } from '@coral-xyz/anchor';
|
|
3
2
|
import { ComputeBudgetProgram, PublicKey, SendTransactionError, TransactionMessage, VersionedTransaction, } from '@solana/web3.js';
|
|
4
3
|
import { dataLength, dataSlice, hexlify } from 'ethers';
|
|
4
|
+
import { CCIPSolanaComputeUnitsExceededError, CCIPTransactionNotFinalizedError, } from "../errors/index.js";
|
|
5
5
|
import { getDataBytes, sleep } from "../utils.js";
|
|
6
6
|
/**
|
|
7
7
|
* Generates a hex-encoded discriminator for a Solana event.
|
|
@@ -11,14 +11,6 @@ import { getDataBytes, sleep } from "../utils.js";
|
|
|
11
11
|
export function hexDiscriminator(eventName) {
|
|
12
12
|
return hexlify(eventDiscriminator(eventName));
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Converts bytes to a Node.js Buffer.
|
|
16
|
-
* @param bytes - Bytes to convert.
|
|
17
|
-
* @returns Node.js Buffer.
|
|
18
|
-
*/
|
|
19
|
-
export function bytesToBuffer(bytes) {
|
|
20
|
-
return Buffer.from(getDataBytes(bytes).buffer);
|
|
21
|
-
}
|
|
22
14
|
/**
|
|
23
15
|
* Waits for a Solana transaction to reach finalized status.
|
|
24
16
|
* @param connection - Solana connection instance.
|
|
@@ -35,7 +27,7 @@ export async function waitForFinalization(connection, signature, intervalMs = 50
|
|
|
35
27
|
}
|
|
36
28
|
await sleep(intervalMs);
|
|
37
29
|
}
|
|
38
|
-
throw new
|
|
30
|
+
throw new CCIPTransactionNotFinalizedError(signature);
|
|
39
31
|
}
|
|
40
32
|
/**
|
|
41
33
|
* Converts a camelCase string to snake_case.
|
|
@@ -279,7 +271,7 @@ export async function simulateAndSendTxs(ctx, wallet, { instructions, mainIndex,
|
|
|
279
271
|
computeUnitLimit = Math.ceil(simulated * 1.1);
|
|
280
272
|
}
|
|
281
273
|
else {
|
|
282
|
-
throw new
|
|
274
|
+
throw new CCIPSolanaComputeUnitsExceededError(simulated, computeUnits);
|
|
283
275
|
}
|
|
284
276
|
break;
|
|
285
277
|
}
|
|
@@ -311,4 +303,24 @@ export async function simulateAndSendTxs(ctx, wallet, { instructions, mainIndex,
|
|
|
311
303
|
}
|
|
312
304
|
return mainHash;
|
|
313
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* Convert TokenPool's rate limit to RateLimiterState object
|
|
308
|
+
*/
|
|
309
|
+
export function convertRateLimiter(input) {
|
|
310
|
+
if (!input.cfg.enabled)
|
|
311
|
+
return null;
|
|
312
|
+
const tokens = BigInt(input.tokens.toString());
|
|
313
|
+
const out = {
|
|
314
|
+
capacity: BigInt(input.cfg.capacity.toString()),
|
|
315
|
+
rate: BigInt(input.cfg.rate.toString()),
|
|
316
|
+
get tokens() {
|
|
317
|
+
const cur = tokens + this.rate * BigInt(Math.floor(Date.now() / 1000) - input.lastUpdated.toNumber());
|
|
318
|
+
if (cur < this.capacity)
|
|
319
|
+
return cur;
|
|
320
|
+
else
|
|
321
|
+
return this.capacity;
|
|
322
|
+
},
|
|
323
|
+
};
|
|
324
|
+
return out;
|
|
325
|
+
}
|
|
314
326
|
//# sourceMappingURL=utils.js.map
|
package/dist/solana/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/solana/utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/solana/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SuiClient } from '@mysten/sui/client';
|
|
2
|
+
/**
|
|
3
|
+
* Discovers the CCIP package ID associated with a given Sui onramp package.
|
|
4
|
+
*
|
|
5
|
+
* @param client - sui client
|
|
6
|
+
* @param onramp - sui onramp package id
|
|
7
|
+
* @returns ccip package id
|
|
8
|
+
*/
|
|
9
|
+
export declare const discoverCCIP: (client: SuiClient, onramp: string) => Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Gets the Sui offramp package ID associated with a given CCIP package ID.
|
|
12
|
+
*
|
|
13
|
+
* @param client - Sui client
|
|
14
|
+
* @param ccip - Sui CCIP Package Id
|
|
15
|
+
* @returns Sui offramp package id
|
|
16
|
+
*/
|
|
17
|
+
export declare const discoverOfframp: (client: SuiClient, ccip: string) => Promise<string>;
|
|
18
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/sui/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AASnD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAU,QAAQ,SAAS,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAuBpF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,QAAQ,SAAS,EAAE,MAAM,MAAM,oBAkHpE,CAAA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { Transaction } from '@mysten/sui/transactions';
|
|
2
|
+
import { normalizeSuiAddress } from '@mysten/sui/utils';
|
|
3
|
+
import { hexlify } from 'ethers';
|
|
4
|
+
import { CCIPError } from "../errors/CCIPError.js";
|
|
5
|
+
import { CCIPErrorCode } from "../errors/codes.js";
|
|
6
|
+
import { bytesToBuffer } from "../utils.js";
|
|
7
|
+
/**
|
|
8
|
+
* Discovers the CCIP package ID associated with a given Sui onramp package.
|
|
9
|
+
*
|
|
10
|
+
* @param client - sui client
|
|
11
|
+
* @param onramp - sui onramp package id
|
|
12
|
+
* @returns ccip package id
|
|
13
|
+
*/
|
|
14
|
+
export const discoverCCIP = async (client, onramp) => {
|
|
15
|
+
const tx = new Transaction();
|
|
16
|
+
tx.moveCall({
|
|
17
|
+
target: `${onramp}::onramp::get_ccip_package_id`,
|
|
18
|
+
});
|
|
19
|
+
const inspectResult = await client.devInspectTransactionBlock({
|
|
20
|
+
sender: normalizeSuiAddress('0x0'),
|
|
21
|
+
transactionBlock: tx,
|
|
22
|
+
});
|
|
23
|
+
const returnValues = inspectResult.results?.[0]?.returnValues;
|
|
24
|
+
if (!returnValues || returnValues.length === 0) {
|
|
25
|
+
throw new CCIPError(CCIPErrorCode.UNKNOWN, 'No return values from dev inspect');
|
|
26
|
+
}
|
|
27
|
+
const [valueBytes] = returnValues[0];
|
|
28
|
+
if (!valueBytes) {
|
|
29
|
+
throw new CCIPError(CCIPErrorCode.UNKNOWN, 'Unable to decode CCIP package id from return values');
|
|
30
|
+
}
|
|
31
|
+
return normalizeSuiAddress(hexlify(bytesToBuffer(valueBytes)));
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Gets the Sui offramp package ID associated with a given CCIP package ID.
|
|
35
|
+
*
|
|
36
|
+
* @param client - Sui client
|
|
37
|
+
* @param ccip - Sui CCIP Package Id
|
|
38
|
+
* @returns Sui offramp package id
|
|
39
|
+
*/
|
|
40
|
+
export const discoverOfframp = async (client, ccip) => {
|
|
41
|
+
// Get CCIP publish tx info
|
|
42
|
+
// Get the owner cap created in that tx.
|
|
43
|
+
// Get owner of the ownercap object.
|
|
44
|
+
// Get objects owned by that owner.
|
|
45
|
+
// Trough each of the objects owned by that owner, get the original transaction that created them.
|
|
46
|
+
// Take any of the objects created by that transaction, check its info to find the OffRamp package.
|
|
47
|
+
const ccipObject = await client.getObject({
|
|
48
|
+
id: ccip,
|
|
49
|
+
options: {
|
|
50
|
+
showPreviousTransaction: true,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
// Get the tx that created the ownercap object.
|
|
54
|
+
const ccipCreationTxDigest = ccipObject.data?.previousTransaction;
|
|
55
|
+
if (!ccipCreationTxDigest) {
|
|
56
|
+
throw new CCIPError(CCIPErrorCode.UNKNOWN, 'Could not find previous transaction for CCIP object');
|
|
57
|
+
}
|
|
58
|
+
const ccipCreationTx = await client.getTransactionBlock({
|
|
59
|
+
digest: ccipCreationTxDigest,
|
|
60
|
+
options: {
|
|
61
|
+
showEffects: true,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
const ccipCreatedObjects = ccipCreationTx.effects?.created?.map((obj) => obj.reference.objectId);
|
|
65
|
+
if (!ccipCreatedObjects || ccipCreatedObjects.length === 0) {
|
|
66
|
+
throw new CCIPError(CCIPErrorCode.UNKNOWN, 'No created objects found in creation transaction');
|
|
67
|
+
}
|
|
68
|
+
const ccipObjectsData = await Promise.all(ccipCreatedObjects.map((objId) => client.getObject({
|
|
69
|
+
id: objId,
|
|
70
|
+
options: {
|
|
71
|
+
showType: true,
|
|
72
|
+
showContent: true,
|
|
73
|
+
showOwner: true,
|
|
74
|
+
},
|
|
75
|
+
})));
|
|
76
|
+
const ownerCapObject = ccipObjectsData.find((objData) => objData.data?.type?.includes('::ownable::OwnerCap'));
|
|
77
|
+
if (!ownerCapObject) {
|
|
78
|
+
throw new CCIPError(CCIPErrorCode.UNKNOWN, 'OwnerCap object not found among created objects');
|
|
79
|
+
}
|
|
80
|
+
const ownerCapOwner = ownerCapObject.data?.owner;
|
|
81
|
+
if (!ownerCapOwner) {
|
|
82
|
+
throw new CCIPError(CCIPErrorCode.UNKNOWN, 'Could not find owner of the OwnerCap object');
|
|
83
|
+
}
|
|
84
|
+
if (typeof ownerCapOwner === 'string' || !('AddressOwner' in ownerCapOwner)) {
|
|
85
|
+
throw new CCIPError(CCIPErrorCode.UNKNOWN, 'OwnerCap object does not have an AddressOwner');
|
|
86
|
+
}
|
|
87
|
+
const ownerCapOwnerObjects = await client.getOwnedObjects({
|
|
88
|
+
owner: ownerCapOwner['AddressOwner'],
|
|
89
|
+
});
|
|
90
|
+
const fullObjectsInfo = await Promise.all(ownerCapOwnerObjects.data.map((obj) => client.getObject({
|
|
91
|
+
id: obj.data?.objectId || '',
|
|
92
|
+
options: {
|
|
93
|
+
showType: true,
|
|
94
|
+
},
|
|
95
|
+
})));
|
|
96
|
+
const ownerCapPackageIds = fullObjectsInfo
|
|
97
|
+
.filter((objData) => objData.data?.type?.includes('::ownable::OwnerCap'))
|
|
98
|
+
.map((obj) => obj.data?.type?.split('::')[0]);
|
|
99
|
+
const packagesInfo = await Promise.all(ownerCapPackageIds.map((pkgId) => client.getNormalizedMoveModulesByPackage({
|
|
100
|
+
package: pkgId || '',
|
|
101
|
+
})));
|
|
102
|
+
const offrampPkgs = packagesInfo
|
|
103
|
+
.filter((pkg) => {
|
|
104
|
+
return Object.values(pkg).some((module) => module.name === 'offramp');
|
|
105
|
+
})
|
|
106
|
+
.flatMap((pkg) => Object.values(pkg))
|
|
107
|
+
.filter((module) => module.name === 'offramp');
|
|
108
|
+
if (offrampPkgs.length === 0) {
|
|
109
|
+
throw new CCIPError(CCIPErrorCode.UNKNOWN, 'Could not find OffRamp package among OwnerCap packages');
|
|
110
|
+
}
|
|
111
|
+
if (offrampPkgs.length > 1) {
|
|
112
|
+
throw new CCIPError(CCIPErrorCode.UNKNOWN, 'Multiple OffRamp packages found; unable to uniquely identify OffRamp package');
|
|
113
|
+
}
|
|
114
|
+
return normalizeSuiAddress(offrampPkgs[0].address);
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/sui/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { SuiClient } from '@mysten/sui/client';
|
|
2
|
+
import type { SuiGraphQLClient } from '@mysten/sui/graphql';
|
|
3
|
+
/**
|
|
4
|
+
* Commit event data structure from Sui blockchain.
|
|
5
|
+
*/
|
|
6
|
+
export type CommitEvent = {
|
|
7
|
+
unblessed_merkle_roots: {
|
|
8
|
+
max_seq_nr: string;
|
|
9
|
+
merkle_root: string;
|
|
10
|
+
min_seq_nr: string;
|
|
11
|
+
on_ramp_address: string;
|
|
12
|
+
source_chain_selector: string;
|
|
13
|
+
}[];
|
|
14
|
+
};
|
|
15
|
+
type EventNode<T = unknown> = {
|
|
16
|
+
timestamp: string;
|
|
17
|
+
contents: {
|
|
18
|
+
json: T;
|
|
19
|
+
};
|
|
20
|
+
transaction?: {
|
|
21
|
+
effects: {
|
|
22
|
+
checkpoint: {
|
|
23
|
+
sequenceNumber: number;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
digest: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Sui RPC does not support querying events by time range and event type
|
|
31
|
+
* Sui GraphQL does not support querying events by time range directly, but does with checkpoints
|
|
32
|
+
* This function combines both to get events of a specific type within a time range
|
|
33
|
+
*/
|
|
34
|
+
export declare function getSuiEventsInTimeRange<T>(client: SuiClient, graphqlClient: SuiGraphQLClient, type: string, startTime: Date, endTime: Date): Promise<EventNode<T>[]>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/sui/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAI3D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,sBAAsB,EAAE;QACtB,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,eAAe,EAAE,MAAM,CAAA;QACvB,qBAAqB,EAAE,MAAM,CAAA;KAC9B,EAAE,CAAA;CACJ,CAAA;AA2ID,KAAK,SAAS,CAAC,CAAC,GAAG,OAAO,IAAI;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,CAAC,CAAA;KACR,CAAA;IACD,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE;YACP,UAAU,EAAE;gBACV,cAAc,EAAE,MAAM,CAAA;aACvB,CAAA;SACF,CAAA;QACD,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;CACF,CAAA;AAgID;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,gBAAgB,EAC/B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,GACZ,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAoBzB"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { CCIPDataFormatUnsupportedError } from "../errors/index.js";
|
|
2
|
+
async function getTransactionDigestsInTimeRange(client, startTime, endTime) {
|
|
3
|
+
const filter = {
|
|
4
|
+
TimeRange: {
|
|
5
|
+
startTime: startTime.getTime().toString(),
|
|
6
|
+
endTime: endTime.getTime().toString(),
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
// Get first event (ascending order)
|
|
10
|
+
const firstEvents = await client.queryEvents({
|
|
11
|
+
query: filter,
|
|
12
|
+
limit: 1,
|
|
13
|
+
order: 'ascending',
|
|
14
|
+
});
|
|
15
|
+
if (!firstEvents.data || firstEvents.data.length === 0) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const firstDigest = firstEvents.data[0].id.txDigest;
|
|
19
|
+
// Get last event (descending order)
|
|
20
|
+
const lastEvents = await client.queryEvents({
|
|
21
|
+
query: filter,
|
|
22
|
+
limit: 1,
|
|
23
|
+
order: 'descending',
|
|
24
|
+
});
|
|
25
|
+
const lastDigest = lastEvents.data[0].id.txDigest;
|
|
26
|
+
return { firstDigest, lastDigest };
|
|
27
|
+
}
|
|
28
|
+
async function getCheckpointsFromTransactions(graphqlClient, firstDigest, lastDigest) {
|
|
29
|
+
const query = `
|
|
30
|
+
query GetTransactionCheckpoints($firstDigest: String!, $lastDigest: String!) {
|
|
31
|
+
first: transaction(digest: $firstDigest) {
|
|
32
|
+
digest
|
|
33
|
+
effects {
|
|
34
|
+
checkpoint {
|
|
35
|
+
sequenceNumber
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
last: transaction(digest: $lastDigest) {
|
|
40
|
+
digest
|
|
41
|
+
effects {
|
|
42
|
+
checkpoint {
|
|
43
|
+
sequenceNumber
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
`;
|
|
49
|
+
const result = await graphqlClient.query({
|
|
50
|
+
query,
|
|
51
|
+
variables: {
|
|
52
|
+
firstDigest,
|
|
53
|
+
lastDigest,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
if (result.errors) {
|
|
57
|
+
throw new CCIPDataFormatUnsupportedError(`Error fetching transaction checkpoints: ${JSON.stringify(result.errors, null, 2)}`);
|
|
58
|
+
}
|
|
59
|
+
if (!result.data?.first) {
|
|
60
|
+
throw new CCIPDataFormatUnsupportedError('First transaction not found in GraphQL response');
|
|
61
|
+
}
|
|
62
|
+
const startCheckpoint = parseInt(result.data.first.effects.checkpoint.sequenceNumber);
|
|
63
|
+
// If the last transaction is not found (too recent), use current checkpoint
|
|
64
|
+
let endCheckpoint;
|
|
65
|
+
if (!result.data.last) {
|
|
66
|
+
const latestCheckpointQuery = `
|
|
67
|
+
query GetLatestCheckpoint {
|
|
68
|
+
checkpoints(last: 1) {
|
|
69
|
+
nodes {
|
|
70
|
+
sequenceNumber
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
const latestResult = await graphqlClient.query({
|
|
76
|
+
query: latestCheckpointQuery,
|
|
77
|
+
variables: {},
|
|
78
|
+
});
|
|
79
|
+
if (!latestResult.data) {
|
|
80
|
+
throw new CCIPDataFormatUnsupportedError('Failed to fetch latest checkpoint');
|
|
81
|
+
}
|
|
82
|
+
endCheckpoint = parseInt(latestResult.data.checkpoints.nodes[0].sequenceNumber);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
endCheckpoint = parseInt(result.data.last.effects.checkpoint.sequenceNumber);
|
|
86
|
+
}
|
|
87
|
+
return { startCheckpoint, endCheckpoint };
|
|
88
|
+
}
|
|
89
|
+
async function fetchEventsWithCheckpointRange(graphqlClient, type, startCheckpoint, endCheckpoint) {
|
|
90
|
+
const allEvents = [];
|
|
91
|
+
let cursor = undefined;
|
|
92
|
+
let hasNextPage = true;
|
|
93
|
+
while (hasNextPage) {
|
|
94
|
+
const query = `
|
|
95
|
+
query FetchEvents($type: String!, $after: String, $afterCheckpoint: UInt53!, $beforeCheckpoint: UInt53!) {
|
|
96
|
+
events(
|
|
97
|
+
filter: {
|
|
98
|
+
type: $type
|
|
99
|
+
afterCheckpoint: $afterCheckpoint
|
|
100
|
+
beforeCheckpoint: $beforeCheckpoint
|
|
101
|
+
}
|
|
102
|
+
after: $after
|
|
103
|
+
first: 50
|
|
104
|
+
) {
|
|
105
|
+
nodes {
|
|
106
|
+
sender {
|
|
107
|
+
address
|
|
108
|
+
}
|
|
109
|
+
timestamp
|
|
110
|
+
contents {
|
|
111
|
+
json
|
|
112
|
+
}
|
|
113
|
+
transaction {
|
|
114
|
+
effects {
|
|
115
|
+
checkpoint {
|
|
116
|
+
sequenceNumber
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
digest
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
pageInfo {
|
|
123
|
+
hasNextPage
|
|
124
|
+
endCursor
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
`;
|
|
129
|
+
const result = await graphqlClient.query({
|
|
130
|
+
query,
|
|
131
|
+
variables: {
|
|
132
|
+
type,
|
|
133
|
+
after: cursor,
|
|
134
|
+
afterCheckpoint: startCheckpoint,
|
|
135
|
+
beforeCheckpoint: endCheckpoint + 1, // beforeCheckpoint is exclusive
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
139
|
+
if (result.errors) {
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
141
|
+
throw new CCIPDataFormatUnsupportedError(`GraphQL errors: ${JSON.stringify(result.errors, null, 2)}`);
|
|
142
|
+
}
|
|
143
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
144
|
+
if (!result.data) {
|
|
145
|
+
throw new CCIPDataFormatUnsupportedError('No data returned from GraphQL query');
|
|
146
|
+
}
|
|
147
|
+
const { nodes, pageInfo, } = result.data.events;
|
|
148
|
+
for (const node of nodes) {
|
|
149
|
+
allEvents.push({
|
|
150
|
+
timestamp: node.timestamp,
|
|
151
|
+
contents: {
|
|
152
|
+
json: (node.contents?.json || node),
|
|
153
|
+
},
|
|
154
|
+
transaction: node.transaction,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
hasNextPage = pageInfo.hasNextPage;
|
|
158
|
+
cursor = pageInfo.endCursor ?? undefined;
|
|
159
|
+
if (!hasNextPage) {
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return allEvents;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Sui RPC does not support querying events by time range and event type
|
|
167
|
+
* Sui GraphQL does not support querying events by time range directly, but does with checkpoints
|
|
168
|
+
* This function combines both to get events of a specific type within a time range
|
|
169
|
+
*/
|
|
170
|
+
export async function getSuiEventsInTimeRange(client, graphqlClient, type, startTime, endTime) {
|
|
171
|
+
const digests = await getTransactionDigestsInTimeRange(client, startTime, endTime);
|
|
172
|
+
if (!digests) {
|
|
173
|
+
return [];
|
|
174
|
+
}
|
|
175
|
+
const checkpoints = await getCheckpointsFromTransactions(graphqlClient, digests.firstDigest, digests.lastDigest);
|
|
176
|
+
const events = await fetchEventsWithCheckpointRange(graphqlClient, type, checkpoints.startCheckpoint, checkpoints.endCheckpoint);
|
|
177
|
+
return events;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/sui/events.ts"],"names":[],"mappings":"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"}
|
package/dist/sui/hasher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasher.d.ts","sourceRoot":"","sources":["../../src/sui/hasher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hasher.d.ts","sourceRoot":"","sources":["../../src/sui/hasher.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAyB,MAAM,qBAAqB,CAAA;AAC5E,OAAO,EAAoB,KAAK,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,EACpE,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,EACN,OAAO,GACR,EAAE;IACD,mBAAmB,EAAE,MAAM,CAAA;IAC3B,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,CAAC,CAAA;CACX,GAAG,UAAU,CAAC,CAAC,CAAC,CAUhB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,gBAAgB,GAAG,oBAAoB,EAChD,YAAY,EAAE,MAAM,GACnB,MAAM,CA2CR;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,qBAAqB,MAAM,EAC3B,mBAAmB,MAAM,EACzB,QAAQ,MAAM,KACb,MAOF,CAAA"}
|
package/dist/sui/hasher.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { concat, id, keccak256, zeroPadValue } from 'ethers';
|
|
2
2
|
import { encodeNumber, encodeRawBytes } from "../aptos/utils.js";
|
|
3
|
+
import { CCIPExtraArgsInvalidError, CCIPSuiHasherVersionUnsupportedError } from "../errors/index.js";
|
|
3
4
|
import { decodeExtraArgs } from "../extra-args.js";
|
|
4
5
|
import { LEAF_DOMAIN_SEPARATOR } from "../hasher/common.js";
|
|
5
6
|
import { CCIPVersion } from "../types.js";
|
|
@@ -15,7 +16,7 @@ export function getSuiLeafHasher({ sourceChainSelector, destChainSelector, onRam
|
|
|
15
16
|
metadataHash = hashSuiMetadata(sourceChainSelector, destChainSelector, onRamp);
|
|
16
17
|
return ((message) => hashV16SuiMessage(message, metadataHash));
|
|
17
18
|
default:
|
|
18
|
-
throw new
|
|
19
|
+
throw new CCIPSuiHasherVersionUnsupportedError(version);
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
/**
|
|
@@ -33,16 +34,16 @@ export function hashV16SuiMessage(message, metadataHash) {
|
|
|
33
34
|
else {
|
|
34
35
|
const parsedArgs = decodeExtraArgs(message.extraArgs);
|
|
35
36
|
if (!parsedArgs || parsedArgs._tag !== 'SuiExtraArgsV1')
|
|
36
|
-
throw new
|
|
37
|
+
throw new CCIPExtraArgsInvalidError('Sui', message.extraArgs);
|
|
37
38
|
({ tokenReceiver, gasLimit } = parsedArgs);
|
|
38
39
|
}
|
|
39
40
|
const innerHash = concat([
|
|
40
|
-
encodeNumber(message.
|
|
41
|
+
encodeNumber(message.messageId),
|
|
41
42
|
zeroPadValue(message.receiver, 32),
|
|
42
|
-
encodeNumber(message.
|
|
43
|
+
encodeNumber(message.sequenceNumber),
|
|
43
44
|
encodeNumber(gasLimit),
|
|
44
45
|
zeroPadValue(tokenReceiver, 32),
|
|
45
|
-
encodeNumber(message.
|
|
46
|
+
encodeNumber(message.nonce),
|
|
46
47
|
]);
|
|
47
48
|
const tokenHash = concat([
|
|
48
49
|
encodeNumber(message.tokenAmounts.length),
|
package/dist/sui/hasher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasher.js","sourceRoot":"","sources":["../../src/sui/hasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAmB,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC5E,OAAO,EAA2C,WAAW,EAAE,MAAM,aAAa,CAAA;AAGlF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAsC,EACpE,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,EACN,OAAO,GAMR;IACC,IAAI,YAAoB,CAAA;IACxB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,IAAI;YACnB,YAAY,GAAG,eAAe,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAA;YAC9E,OAAO,CAAC,CAAC,OAA6C,EAAU,EAAE,CAChE,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAkB,CAAA;QAC9D;YACE,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"hasher.js","sourceRoot":"","sources":["../../src/sui/hasher.ts"],"names":[],"mappings":"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"}
|