@chainlink/ccip-sdk 0.95.0 → 0.96.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 +2 -2
- package/dist/all-chains.d.ts +23 -0
- package/dist/all-chains.d.ts.map +1 -0
- package/dist/all-chains.js +24 -0
- package/dist/all-chains.js.map +1 -0
- package/dist/api/index.d.ts +15 -12
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +20 -16
- package/dist/api/index.js.map +1 -1
- package/dist/api/types.d.ts +25 -29
- package/dist/api/types.d.ts.map +1 -1
- package/dist/aptos/index.d.ts +33 -8
- package/dist/aptos/index.d.ts.map +1 -1
- package/dist/aptos/index.js +74 -41
- package/dist/aptos/index.js.map +1 -1
- package/dist/chain.d.ts +220 -41
- package/dist/chain.d.ts.map +1 -1
- package/dist/chain.js +105 -15
- package/dist/chain.js.map +1 -1
- package/dist/errors/codes.d.ts +2 -0
- package/dist/errors/codes.d.ts.map +1 -1
- package/dist/errors/codes.js +2 -0
- package/dist/errors/codes.js.map +1 -1
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/errors/recovery.d.ts.map +1 -1
- package/dist/errors/recovery.js +2 -0
- package/dist/errors/recovery.js.map +1 -1
- package/dist/errors/specialized.d.ts +12 -6
- package/dist/errors/specialized.d.ts.map +1 -1
- package/dist/errors/specialized.js +19 -7
- package/dist/errors/specialized.js.map +1 -1
- package/dist/evm/extra-args.d.ts +25 -0
- package/dist/evm/extra-args.d.ts.map +1 -0
- package/dist/evm/extra-args.js +328 -0
- package/dist/evm/extra-args.js.map +1 -0
- package/dist/evm/gas.d.ts.map +1 -1
- package/dist/evm/gas.js +7 -12
- package/dist/evm/gas.js.map +1 -1
- package/dist/evm/index.d.ts +70 -24
- package/dist/evm/index.d.ts.map +1 -1
- package/dist/evm/index.js +72 -91
- package/dist/evm/index.js.map +1 -1
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +16 -2
- package/dist/execution.js.map +1 -1
- package/dist/extra-args.d.ts +103 -4
- package/dist/extra-args.d.ts.map +1 -1
- package/dist/extra-args.js +28 -3
- package/dist/extra-args.js.map +1 -1
- package/dist/gas.d.ts +6 -3
- package/dist/gas.d.ts.map +1 -1
- package/dist/gas.js +14 -6
- package/dist/gas.js.map +1 -1
- package/dist/index.d.ts +10 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/requests.d.ts +17 -9
- package/dist/requests.d.ts.map +1 -1
- package/dist/requests.js +17 -9
- package/dist/requests.js.map +1 -1
- package/dist/selectors.d.ts.map +1 -1
- package/dist/selectors.js +12 -0
- package/dist/selectors.js.map +1 -1
- package/dist/solana/index.d.ts +70 -15
- package/dist/solana/index.d.ts.map +1 -1
- package/dist/solana/index.js +72 -16
- package/dist/solana/index.js.map +1 -1
- package/dist/sui/index.d.ts +37 -9
- package/dist/sui/index.d.ts.map +1 -1
- package/dist/sui/index.js +40 -11
- package/dist/sui/index.js.map +1 -1
- package/dist/ton/index.d.ts +65 -19
- package/dist/ton/index.d.ts.map +1 -1
- package/dist/ton/index.js +155 -25
- package/dist/ton/index.js.map +1 -1
- package/dist/ton/send.d.ts +52 -0
- package/dist/ton/send.d.ts.map +1 -0
- package/dist/ton/send.js +166 -0
- package/dist/ton/send.js.map +1 -0
- package/dist/types.d.ts +102 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +15 -3
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +19 -6
- package/dist/utils.js.map +1 -1
- package/package.json +12 -7
- package/src/all-chains.ts +26 -0
- package/src/api/index.ts +26 -25
- package/src/api/types.ts +25 -30
- package/src/aptos/index.ts +79 -43
- package/src/chain.ts +274 -46
- package/src/errors/codes.ts +2 -0
- package/src/errors/index.ts +1 -1
- package/src/errors/recovery.ts +2 -0
- package/src/errors/specialized.ts +24 -7
- package/src/evm/extra-args.ts +377 -0
- package/src/evm/gas.ts +14 -13
- package/src/evm/index.ts +76 -125
- package/src/execution.ts +18 -2
- package/src/extra-args.ts +108 -4
- package/src/gas.ts +16 -9
- package/src/index.ts +12 -9
- package/src/requests.ts +17 -9
- package/src/selectors.ts +12 -0
- package/src/solana/index.ts +72 -16
- package/src/sui/index.ts +40 -11
- package/src/ton/index.ts +192 -27
- package/src/ton/send.ts +222 -0
- package/src/types.ts +103 -1
- package/src/utils.ts +19 -6
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import { Result, concat, dataSlice, encodeBase58, getAddress, hexlify, toBeHex, toBigInt, toNumber, zeroPadValue, } from 'ethers';
|
|
2
|
+
import { EVMExtraArgsV1Tag, EVMExtraArgsV2Tag, GenericExtraArgsV3Tag, SVMExtraArgsV1Tag, SuiExtraArgsV1Tag, } from "../extra-args.js";
|
|
3
|
+
import { getAddressBytes, getDataBytes } from "../utils.js";
|
|
4
|
+
import { DEFAULT_GAS_LIMIT, defaultAbiCoder } from "./const.js";
|
|
5
|
+
// ABI type strings for extra args encoding
|
|
6
|
+
const EVMExtraArgsV1ABI = 'tuple(uint256 gasLimit)';
|
|
7
|
+
const EVMExtraArgsV2ABI = 'tuple(uint256 gasLimit, bool allowOutOfOrderExecution)';
|
|
8
|
+
const SVMExtraArgsV1ABI = 'tuple(uint32 computeUnits, uint64 accountIsWritableBitmap, bool allowOutOfOrderExecution, bytes32 tokenReceiver, bytes32[] accounts)';
|
|
9
|
+
const SuiExtraArgsV1ABI = 'tuple(uint256 gasLimit, bool allowOutOfOrderExecution, bytes32 tokenReceiver, bytes32[] receiverObjectIds)';
|
|
10
|
+
/**
|
|
11
|
+
* Converts an ethers Result to a plain object.
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
function resultToObject(o) {
|
|
15
|
+
if (o instanceof Promise)
|
|
16
|
+
return o.then(resultToObject);
|
|
17
|
+
if (!(o instanceof Result))
|
|
18
|
+
return o;
|
|
19
|
+
if (o.length === 0)
|
|
20
|
+
return o.toArray();
|
|
21
|
+
try {
|
|
22
|
+
const obj = o.toObject();
|
|
23
|
+
if (!Object.keys(obj).every((k) => /^_+\d*$/.test(k)))
|
|
24
|
+
return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, resultToObject(v)]));
|
|
25
|
+
}
|
|
26
|
+
catch (_) {
|
|
27
|
+
// fallthrough
|
|
28
|
+
}
|
|
29
|
+
return o.toArray().map(resultToObject);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Encodes GenericExtraArgsV3 using tightly packed binary format.
|
|
33
|
+
*
|
|
34
|
+
* Binary format:
|
|
35
|
+
* - tag (4 bytes): 0x302326cb
|
|
36
|
+
* - gasLimit (4 bytes): uint32 big-endian
|
|
37
|
+
* - blockConfirmations (2 bytes): uint16 big-endian
|
|
38
|
+
* - ccvsLength (1 byte): uint8
|
|
39
|
+
* - For each CCV:
|
|
40
|
+
* - ccvAddressLength (1 byte): 0 or 20
|
|
41
|
+
* - ccvAddress (0 or 20 bytes)
|
|
42
|
+
* - ccvArgsLength (2 bytes): uint16 big-endian
|
|
43
|
+
* - ccvArgs (variable)
|
|
44
|
+
* - executorLength (1 byte): 0 or 20
|
|
45
|
+
* - executor (0 or 20 bytes)
|
|
46
|
+
* - executorArgsLength (2 bytes): uint16 big-endian
|
|
47
|
+
* - executorArgs (variable)
|
|
48
|
+
* - tokenReceiverLength (1 byte): uint8
|
|
49
|
+
* - tokenReceiver (variable)
|
|
50
|
+
* - tokenArgsLength (2 bytes): uint16 big-endian
|
|
51
|
+
* - tokenArgs (variable)
|
|
52
|
+
*/
|
|
53
|
+
function encodeExtraArgsV3(args) {
|
|
54
|
+
const parts = [];
|
|
55
|
+
// Tag (4 bytes)
|
|
56
|
+
parts.push(getDataBytes(GenericExtraArgsV3Tag));
|
|
57
|
+
// gasLimit (4 bytes, uint32 big-endian)
|
|
58
|
+
parts.push(getDataBytes(toBeHex(args.gasLimit, 4)));
|
|
59
|
+
// blockConfirmations (2 bytes, uint16 big-endian)
|
|
60
|
+
parts.push(getDataBytes(toBeHex(args.blockConfirmations, 2)));
|
|
61
|
+
// ccvsLength (1 byte)
|
|
62
|
+
parts.push(new Uint8Array([args.ccvs.length]));
|
|
63
|
+
// For each CCV
|
|
64
|
+
for (let i = 0; i < args.ccvs.length; i++) {
|
|
65
|
+
const ccvAddress = args.ccvs[i];
|
|
66
|
+
const ccvArgsBytes = getDataBytes(args.ccvArgs[i] ?? '0x');
|
|
67
|
+
if (ccvAddress && ccvAddress !== '' && ccvAddress !== '0x') {
|
|
68
|
+
// ccvAddressLength = 20
|
|
69
|
+
parts.push(new Uint8Array([20]));
|
|
70
|
+
// ccvAddress (20 bytes)
|
|
71
|
+
parts.push(getDataBytes(ccvAddress));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// ccvAddressLength = 0
|
|
75
|
+
parts.push(new Uint8Array([0]));
|
|
76
|
+
}
|
|
77
|
+
// ccvArgsLength (2 bytes, uint16 big-endian)
|
|
78
|
+
parts.push(getDataBytes(toBeHex(ccvArgsBytes.length, 2)));
|
|
79
|
+
// ccvArgs (variable)
|
|
80
|
+
if (ccvArgsBytes.length > 0) {
|
|
81
|
+
parts.push(ccvArgsBytes);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// executorLength (1 byte)
|
|
85
|
+
if (args.executor && args.executor !== '' && args.executor !== '0x') {
|
|
86
|
+
parts.push(new Uint8Array([20]));
|
|
87
|
+
parts.push(getDataBytes(args.executor));
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
parts.push(new Uint8Array([0]));
|
|
91
|
+
}
|
|
92
|
+
// Convert BytesLike fields to Uint8Array
|
|
93
|
+
const executorArgsBytes = getDataBytes(args.executorArgs);
|
|
94
|
+
const tokenReceiverBytes = getDataBytes(args.tokenReceiver);
|
|
95
|
+
const tokenArgsBytes = getDataBytes(args.tokenArgs);
|
|
96
|
+
// executorArgsLength (2 bytes, uint16 big-endian)
|
|
97
|
+
parts.push(getDataBytes(toBeHex(executorArgsBytes.length, 2)));
|
|
98
|
+
// executorArgs (variable)
|
|
99
|
+
if (executorArgsBytes.length > 0) {
|
|
100
|
+
parts.push(executorArgsBytes);
|
|
101
|
+
}
|
|
102
|
+
// tokenReceiverLength (1 byte)
|
|
103
|
+
parts.push(new Uint8Array([tokenReceiverBytes.length]));
|
|
104
|
+
// tokenReceiver (variable)
|
|
105
|
+
if (tokenReceiverBytes.length > 0) {
|
|
106
|
+
parts.push(tokenReceiverBytes);
|
|
107
|
+
}
|
|
108
|
+
// tokenArgsLength (2 bytes, uint16 big-endian)
|
|
109
|
+
parts.push(getDataBytes(toBeHex(tokenArgsBytes.length, 2)));
|
|
110
|
+
// tokenArgs (variable)
|
|
111
|
+
if (tokenArgsBytes.length > 0) {
|
|
112
|
+
parts.push(tokenArgsBytes);
|
|
113
|
+
}
|
|
114
|
+
return hexlify(concat(parts));
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Decodes GenericExtraArgsV3 from tightly packed binary format.
|
|
118
|
+
* @param data - Bytes to decode (without the tag prefix).
|
|
119
|
+
* @returns Decoded GenericExtraArgsV3 or undefined if parsing fails.
|
|
120
|
+
*/
|
|
121
|
+
function decodeExtraArgsV3(data) {
|
|
122
|
+
let offset = 0;
|
|
123
|
+
// gasLimit (4 bytes, uint32 big-endian)
|
|
124
|
+
if (offset + 4 > data.length)
|
|
125
|
+
return undefined;
|
|
126
|
+
const gasLimit = toBigInt(data.subarray(offset, offset + 4));
|
|
127
|
+
offset += 4;
|
|
128
|
+
// blockConfirmations (2 bytes, uint16 big-endian)
|
|
129
|
+
if (offset + 2 > data.length)
|
|
130
|
+
return undefined;
|
|
131
|
+
const blockConfirmations = toNumber(data.subarray(offset, offset + 2));
|
|
132
|
+
offset += 2;
|
|
133
|
+
// ccvsLength (1 byte)
|
|
134
|
+
if (offset + 1 > data.length)
|
|
135
|
+
return undefined;
|
|
136
|
+
const ccvsLength = data[offset];
|
|
137
|
+
offset += 1;
|
|
138
|
+
const ccvs = [];
|
|
139
|
+
const ccvArgs = [];
|
|
140
|
+
// For each CCV
|
|
141
|
+
for (let i = 0; i < ccvsLength; i++) {
|
|
142
|
+
// ccvAddressLength (1 byte)
|
|
143
|
+
if (offset + 1 > data.length)
|
|
144
|
+
return undefined;
|
|
145
|
+
const ccvAddrLen = data[offset];
|
|
146
|
+
offset += 1;
|
|
147
|
+
// ccvAddress (0 or 20 bytes)
|
|
148
|
+
if (ccvAddrLen === 20) {
|
|
149
|
+
if (offset + 20 > data.length)
|
|
150
|
+
return undefined;
|
|
151
|
+
ccvs.push(getAddress(hexlify(data.slice(offset, offset + 20))));
|
|
152
|
+
offset += 20;
|
|
153
|
+
}
|
|
154
|
+
else if (ccvAddrLen === 0) {
|
|
155
|
+
ccvs.push('');
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
return undefined; // Invalid address length
|
|
159
|
+
}
|
|
160
|
+
// ccvArgsLength (2 bytes, uint16 big-endian)
|
|
161
|
+
if (offset + 2 > data.length)
|
|
162
|
+
return undefined;
|
|
163
|
+
const ccvArgsLen = toNumber(data.subarray(offset, offset + 2));
|
|
164
|
+
offset += 2;
|
|
165
|
+
// ccvArgs (variable)
|
|
166
|
+
if (offset + ccvArgsLen > data.length)
|
|
167
|
+
return undefined;
|
|
168
|
+
ccvArgs.push(hexlify(data.slice(offset, offset + ccvArgsLen)));
|
|
169
|
+
offset += ccvArgsLen;
|
|
170
|
+
}
|
|
171
|
+
// executorLength (1 byte)
|
|
172
|
+
if (offset + 1 > data.length)
|
|
173
|
+
return undefined;
|
|
174
|
+
const executorLen = data[offset];
|
|
175
|
+
offset += 1;
|
|
176
|
+
// executor (0 or 20 bytes)
|
|
177
|
+
let executor = '';
|
|
178
|
+
if (executorLen === 20) {
|
|
179
|
+
if (offset + 20 > data.length)
|
|
180
|
+
return undefined;
|
|
181
|
+
executor = getAddress(hexlify(data.slice(offset, offset + 20)));
|
|
182
|
+
offset += 20;
|
|
183
|
+
}
|
|
184
|
+
else if (executorLen !== 0) {
|
|
185
|
+
return undefined; // Invalid executor length
|
|
186
|
+
}
|
|
187
|
+
// executorArgsLength (2 bytes, uint16 big-endian)
|
|
188
|
+
if (offset + 2 > data.length)
|
|
189
|
+
return undefined;
|
|
190
|
+
const executorArgsLen = toNumber(data.subarray(offset, offset + 2));
|
|
191
|
+
offset += 2;
|
|
192
|
+
// executorArgs (variable)
|
|
193
|
+
if (offset + executorArgsLen > data.length)
|
|
194
|
+
return undefined;
|
|
195
|
+
const executorArgs = hexlify(data.slice(offset, offset + executorArgsLen));
|
|
196
|
+
offset += executorArgsLen;
|
|
197
|
+
// tokenReceiverLength (1 byte)
|
|
198
|
+
if (offset + 1 > data.length)
|
|
199
|
+
return undefined;
|
|
200
|
+
const tokenReceiverLen = data[offset];
|
|
201
|
+
offset += 1;
|
|
202
|
+
// tokenReceiver (variable)
|
|
203
|
+
if (offset + tokenReceiverLen > data.length)
|
|
204
|
+
return undefined;
|
|
205
|
+
const tokenReceiverBytes = data.slice(offset, offset + tokenReceiverLen);
|
|
206
|
+
offset += tokenReceiverLen;
|
|
207
|
+
// Convert tokenReceiver bytes to string
|
|
208
|
+
let tokenReceiver;
|
|
209
|
+
if (tokenReceiverLen === 0) {
|
|
210
|
+
tokenReceiver = '';
|
|
211
|
+
}
|
|
212
|
+
else if (tokenReceiverLen === 20) {
|
|
213
|
+
// 20 bytes = EVM address, return checksummed
|
|
214
|
+
tokenReceiver = getAddress(hexlify(tokenReceiverBytes));
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
// Other lengths: return as hex string
|
|
218
|
+
tokenReceiver = hexlify(tokenReceiverBytes);
|
|
219
|
+
}
|
|
220
|
+
// tokenArgsLength (2 bytes, uint16 big-endian)
|
|
221
|
+
if (offset + 2 > data.length)
|
|
222
|
+
return undefined;
|
|
223
|
+
const tokenArgsLen = toNumber(data.subarray(offset, offset + 2));
|
|
224
|
+
offset += 2;
|
|
225
|
+
// tokenArgs (variable)
|
|
226
|
+
if (offset + tokenArgsLen > data.length)
|
|
227
|
+
return undefined;
|
|
228
|
+
const tokenArgs = hexlify(data.slice(offset, offset + tokenArgsLen));
|
|
229
|
+
offset += tokenArgsLen;
|
|
230
|
+
return {
|
|
231
|
+
gasLimit,
|
|
232
|
+
blockConfirmations,
|
|
233
|
+
ccvs,
|
|
234
|
+
ccvArgs,
|
|
235
|
+
executor,
|
|
236
|
+
executorArgs,
|
|
237
|
+
tokenReceiver,
|
|
238
|
+
tokenArgs,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Decodes extra arguments from a CCIP message.
|
|
243
|
+
* @param extraArgs - Encoded extra arguments bytes.
|
|
244
|
+
* @returns Decoded extra arguments with tag, or undefined if unknown format.
|
|
245
|
+
*/
|
|
246
|
+
export function decodeExtraArgs(extraArgs) {
|
|
247
|
+
const data = getDataBytes(extraArgs), tag = dataSlice(data, 0, 4);
|
|
248
|
+
switch (tag) {
|
|
249
|
+
case EVMExtraArgsV1Tag: {
|
|
250
|
+
const args = defaultAbiCoder.decode([EVMExtraArgsV1ABI], dataSlice(data, 4));
|
|
251
|
+
return { ...resultToObject(args[0]), _tag: 'EVMExtraArgsV1' };
|
|
252
|
+
}
|
|
253
|
+
case EVMExtraArgsV2Tag: {
|
|
254
|
+
const args = defaultAbiCoder.decode([EVMExtraArgsV2ABI], dataSlice(data, 4));
|
|
255
|
+
return { ...resultToObject(args[0]), _tag: 'EVMExtraArgsV2' };
|
|
256
|
+
}
|
|
257
|
+
case GenericExtraArgsV3Tag: {
|
|
258
|
+
const parsed = decodeExtraArgsV3(data.slice(4));
|
|
259
|
+
if (!parsed)
|
|
260
|
+
return undefined;
|
|
261
|
+
return { ...parsed, _tag: 'GenericExtraArgsV3' };
|
|
262
|
+
}
|
|
263
|
+
case SVMExtraArgsV1Tag: {
|
|
264
|
+
const args = defaultAbiCoder.decode([SVMExtraArgsV1ABI], dataSlice(data, 4));
|
|
265
|
+
const parsed = resultToObject(args[0]);
|
|
266
|
+
parsed.tokenReceiver = encodeBase58(parsed.tokenReceiver);
|
|
267
|
+
parsed.accounts = parsed.accounts.map((a) => encodeBase58(a));
|
|
268
|
+
return { ...parsed, _tag: 'SVMExtraArgsV1' };
|
|
269
|
+
}
|
|
270
|
+
case SuiExtraArgsV1Tag: {
|
|
271
|
+
const args = defaultAbiCoder.decode([SuiExtraArgsV1ABI], dataSlice(data, 4));
|
|
272
|
+
const parsed = resultToObject(args[0]);
|
|
273
|
+
return {
|
|
274
|
+
...parsed,
|
|
275
|
+
_tag: 'SuiExtraArgsV1',
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
default:
|
|
279
|
+
return undefined;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Encodes extra arguments for a CCIP message.
|
|
284
|
+
* @param args - Extra arguments to encode.
|
|
285
|
+
* @returns Encoded extra arguments as hex string.
|
|
286
|
+
*/
|
|
287
|
+
export function encodeExtraArgs(args) {
|
|
288
|
+
if (!args)
|
|
289
|
+
return '0x';
|
|
290
|
+
if ('blockConfirmations' in args) {
|
|
291
|
+
// GenericExtraArgsV3 - tightly packed binary encoding
|
|
292
|
+
return encodeExtraArgsV3(args);
|
|
293
|
+
}
|
|
294
|
+
else if ('computeUnits' in args) {
|
|
295
|
+
return concat([
|
|
296
|
+
SVMExtraArgsV1Tag,
|
|
297
|
+
defaultAbiCoder.encode([SVMExtraArgsV1ABI], [
|
|
298
|
+
{
|
|
299
|
+
...args,
|
|
300
|
+
tokenReceiver: getAddressBytes(args.tokenReceiver),
|
|
301
|
+
accounts: args.accounts.map((a) => getAddressBytes(a)),
|
|
302
|
+
},
|
|
303
|
+
]),
|
|
304
|
+
]);
|
|
305
|
+
}
|
|
306
|
+
else if ('receiverObjectIds' in args) {
|
|
307
|
+
return concat([
|
|
308
|
+
SuiExtraArgsV1Tag,
|
|
309
|
+
defaultAbiCoder.encode([SuiExtraArgsV1ABI], [
|
|
310
|
+
{
|
|
311
|
+
...args,
|
|
312
|
+
tokenReceiver: zeroPadValue(getAddressBytes(args.tokenReceiver), 32),
|
|
313
|
+
receiverObjectIds: args.receiverObjectIds.map((a) => getDataBytes(a)),
|
|
314
|
+
},
|
|
315
|
+
]),
|
|
316
|
+
]);
|
|
317
|
+
}
|
|
318
|
+
else if ('allowOutOfOrderExecution' in args) {
|
|
319
|
+
if (args.gasLimit == null)
|
|
320
|
+
args.gasLimit = DEFAULT_GAS_LIMIT;
|
|
321
|
+
return concat([EVMExtraArgsV2Tag, defaultAbiCoder.encode([EVMExtraArgsV2ABI], [args])]);
|
|
322
|
+
}
|
|
323
|
+
else if (args.gasLimit != null) {
|
|
324
|
+
return concat([EVMExtraArgsV1Tag, defaultAbiCoder.encode([EVMExtraArgsV1ABI], [args])]);
|
|
325
|
+
}
|
|
326
|
+
return '0x';
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=extra-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extra-args.js","sourceRoot":"","sources":["../../src/evm/extra-args.ts"],"names":[],"mappings":"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"}
|
package/dist/evm/gas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../src/evm/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAWxB,MAAM,QAAQ,CAAA;AAIf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../src/evm/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAWxB,MAAM,QAAQ,CAAA;AAIf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AA+DxC,KAAK,mBAAmB,GAAG,IAAI,CAC7B,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7D,SAAS,GAAG,UAAU,CACvB,GAAG;IAEF,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,EACpC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,OAAO,GACR,EAAE,mBAAmB,mBAmDrB"}
|
package/dist/evm/gas.js
CHANGED
|
@@ -11,30 +11,25 @@ const ccipReceive = FunctionFragment.from({
|
|
|
11
11
|
inputs: RouterABI.find((v) => v.type === 'function' && v.name === 'routeMessage').inputs.slice(0, 1),
|
|
12
12
|
outputs: [],
|
|
13
13
|
});
|
|
14
|
-
const transferFragment = interfaces.Token.getFunction('transfer');
|
|
15
14
|
/**
|
|
16
15
|
* Finds suitable token balance slot by simulating a fake transfer between 2 non-existent accounts,
|
|
17
16
|
* with state overrides for the holders' balance, which reverts if override slot is wrong
|
|
18
17
|
*/
|
|
19
|
-
const findBalancesSlot = memoize(async function findBalancesSlot_(token, provider) {
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const calldata = concat([
|
|
24
|
-
transferFragment.selector,
|
|
25
|
-
defaultAbiCoder.encode(transferFragment.inputs, [fakeRecipient, fakeAmount]),
|
|
26
|
-
]);
|
|
18
|
+
const findBalancesSlot = memoize(async function findBalancesSlot_(token, provider, holder = getAddress(hexlify(randomBytes(20))), recipient = getAddress(hexlify(randomBytes(20)))) {
|
|
19
|
+
const contract = new Contract(token, interfaces.Token, provider);
|
|
20
|
+
const fakeAmount = (await contract.totalSupply()) + 1n;
|
|
21
|
+
const calldata = interfaces.Token.encodeFunctionData('transfer', [recipient, fakeAmount]);
|
|
27
22
|
let firstErr;
|
|
28
23
|
// try range(0..15), but start with most probable 0 (common ERC20) and 9 (USDC)
|
|
29
24
|
for (const slot of [0, 9, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15]) {
|
|
30
25
|
try {
|
|
31
26
|
await provider.send('eth_estimateGas', [
|
|
32
|
-
{ from:
|
|
27
|
+
{ from: holder, to: token, data: calldata },
|
|
33
28
|
'latest',
|
|
34
29
|
{
|
|
35
30
|
[token]: {
|
|
36
31
|
stateDiff: {
|
|
37
|
-
[solidityPackedKeccak256(['uint256', 'uint256'], [
|
|
32
|
+
[solidityPackedKeccak256(['uint256', 'uint256'], [holder, slot])]: toBeHex(fakeAmount, 32),
|
|
38
33
|
},
|
|
39
34
|
},
|
|
40
35
|
},
|
|
@@ -64,7 +59,7 @@ export async function estimateExecGas({ provider, router, receiver, message, })
|
|
|
64
59
|
destAmounts[token] = currentBalance;
|
|
65
60
|
}
|
|
66
61
|
destAmounts[token] += amount;
|
|
67
|
-
const balancesSlot = await findBalancesSlot(token, provider);
|
|
62
|
+
const balancesSlot = await findBalancesSlot(token, provider, receiver, router);
|
|
68
63
|
stateOverrides[token] = {
|
|
69
64
|
stateDiff: {
|
|
70
65
|
[solidityPackedKeccak256(['uint256', 'uint256'], [receiver, balancesSlot])]: toBeHex(destAmounts[token], 32),
|
package/dist/evm/gas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/evm/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,SAAS,EACT,OAAO,EACP,WAAW,EACX,uBAAuB,EACvB,OAAO,EACP,YAAY,GACb,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAGvC,OAAO,QAAQ,MAAM,8BAA8B,CAAA;AACnD,OAAO,SAAS,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE3D,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC;IACxC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,aAAa;IACnB,eAAe,EAAE,YAAY;IAC7B,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAE,CAAC,MAAM,CAAC,KAAK,CAC7F,CAAC,EACD,CAAC,CACF;IACD,OAAO,EAAE,EAAE;CACZ,CAAC,CAAA;AAGF
|
|
1
|
+
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/evm/gas.ts"],"names":[],"mappings":"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"}
|
package/dist/evm/index.d.ts
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { type BytesLike, type JsonRpcApiProvider, type Log, type TransactionReceipt } from 'ethers';
|
|
2
2
|
import type { PickDeep } from 'type-fest';
|
|
3
3
|
import { type ChainContext, type GetBalanceOpts, type LogFilter, type TokenPoolRemote, Chain } from '../chain.ts';
|
|
4
|
-
import
|
|
4
|
+
import type { ExtraArgs } from '../extra-args.ts';
|
|
5
5
|
import type { LeafHasher } from '../hasher/common.ts';
|
|
6
6
|
import { type CCIPExecution, type CCIPMessage, type CCIPRequest, type ChainTransaction, type CommitReport, type ExecutionReceipt, type Lane, type NetworkInfo, type OffchainTokenData, type WithLogger, ChainFamily } from '../types.ts';
|
|
7
7
|
import type { UnsignedEVMTx } from './types.ts';
|
|
8
8
|
export type { UnsignedEVMTx };
|
|
9
|
-
declare const EVMExtraArgsV1 = "tuple(uint256 gasLimit)";
|
|
10
|
-
declare const EVMExtraArgsV2 = "tuple(uint256 gasLimit, bool allowOutOfOrderExecution)";
|
|
11
|
-
declare const SVMExtraArgsV1 = "tuple(uint32 computeUnits, uint64 accountIsWritableBitmap, bool allowOutOfOrderExecution, bytes32 tokenReceiver, bytes32[] accounts)";
|
|
12
|
-
declare const SuiExtraArgsV1 = "tuple(uint256 gasLimit, bool allowOutOfOrderExecution, bytes32 tokenReceiver, bytes32[] receiverObjectIds)";
|
|
13
9
|
/**
|
|
14
10
|
* EVM chain implementation supporting Ethereum-compatible networks.
|
|
15
11
|
*/
|
|
@@ -66,6 +62,8 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
66
62
|
* Decodes a CCIP message from a log event.
|
|
67
63
|
* @param log - Log event with topics and data.
|
|
68
64
|
* @returns Decoded CCIPMessage or undefined if not a valid CCIP message.
|
|
65
|
+
* @throws {@link CCIPLogDataInvalidError} if log data is not valid bytes
|
|
66
|
+
* @throws {@link CCIPMessageDecodeError} if message cannot be decoded
|
|
69
67
|
*/
|
|
70
68
|
static decodeMessage(log: {
|
|
71
69
|
topics?: readonly string[];
|
|
@@ -76,6 +74,8 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
76
74
|
* @param log - Log event with topics and data.
|
|
77
75
|
* @param lane - Lane info (required for CCIP v1.5 and earlier).
|
|
78
76
|
* @returns Array of CommitReport or undefined if not a valid commit event.
|
|
77
|
+
* @throws {@link CCIPLogDataInvalidError} if log data is not valid bytes
|
|
78
|
+
* @throws {@link CCIPVersionRequiresLaneError} if CCIP v1.5 event but no lane provided
|
|
79
79
|
*/
|
|
80
80
|
static decodeCommits(log: {
|
|
81
81
|
topics?: readonly string[];
|
|
@@ -85,6 +85,7 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
85
85
|
* Decodes an execution receipt from a log event.
|
|
86
86
|
* @param log - Log event with topics and data.
|
|
87
87
|
* @returns ExecutionReceipt or undefined if not a valid execution event.
|
|
88
|
+
* @throws {@link CCIPLogDataInvalidError} if log data is not valid bytes
|
|
88
89
|
*/
|
|
89
90
|
static decodeReceipt(log: {
|
|
90
91
|
topics?: readonly string[];
|
|
@@ -95,14 +96,23 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
95
96
|
* @param extraArgs - Encoded extra arguments bytes.
|
|
96
97
|
* @returns Decoded extra arguments with tag, or undefined if unknown format.
|
|
97
98
|
*/
|
|
98
|
-
static decodeExtraArgs(extraArgs: BytesLike): (EVMExtraArgsV1 & {
|
|
99
|
-
_tag:
|
|
100
|
-
}) | (
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
_tag:
|
|
104
|
-
}) | (
|
|
105
|
-
_tag:
|
|
99
|
+
static decodeExtraArgs(extraArgs: BytesLike): (import("../extra-args.ts").EVMExtraArgsV1 & {
|
|
100
|
+
_tag: "EVMExtraArgsV1";
|
|
101
|
+
}) | (import("../extra-args.ts").EVMExtraArgsV1 & {
|
|
102
|
+
allowOutOfOrderExecution: boolean;
|
|
103
|
+
} & {
|
|
104
|
+
_tag: "EVMExtraArgsV2";
|
|
105
|
+
}) | (import("../extra-args.ts").GenericExtraArgsV3 & {
|
|
106
|
+
_tag: "GenericExtraArgsV3";
|
|
107
|
+
}) | (import("../extra-args.ts").SVMExtraArgsV1 & {
|
|
108
|
+
_tag: "SVMExtraArgsV1";
|
|
109
|
+
}) | (import("../extra-args.ts").EVMExtraArgsV1 & {
|
|
110
|
+
allowOutOfOrderExecution: boolean;
|
|
111
|
+
} & {
|
|
112
|
+
tokenReceiver: string;
|
|
113
|
+
receiverObjectIds: string[];
|
|
114
|
+
} & {
|
|
115
|
+
_tag: "SuiExtraArgsV1";
|
|
106
116
|
}) | undefined;
|
|
107
117
|
/**
|
|
108
118
|
* Encodes extra arguments for a CCIP message.
|
|
@@ -114,6 +124,7 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
114
124
|
* Converts bytes to a checksummed EVM address.
|
|
115
125
|
* @param bytes - Bytes to convert (must be 20 bytes or 32 bytes with leading zeros).
|
|
116
126
|
* @returns Checksummed EVM address.
|
|
127
|
+
* @throws {@link CCIPAddressInvalidEvmError} if bytes cannot be converted to a valid EVM address
|
|
117
128
|
*/
|
|
118
129
|
static getAddress(bytes: BytesLike): string;
|
|
119
130
|
/**
|
|
@@ -124,11 +135,18 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
124
135
|
* Gets lane configuration from an OnRamp contract.
|
|
125
136
|
* @param onRamp - OnRamp contract address.
|
|
126
137
|
* @returns Lane configuration.
|
|
138
|
+
* @throws {@link CCIPContractTypeInvalidError} if contract doesn't have destChainSelector
|
|
127
139
|
*/
|
|
128
140
|
getLaneForOnRamp(onRamp: string): Promise<Lane>;
|
|
129
|
-
/**
|
|
141
|
+
/**
|
|
142
|
+
* {@inheritDoc Chain.getRouterForOnRamp}
|
|
143
|
+
* @throws {@link CCIPVersionUnsupportedError} if OnRamp version is not supported
|
|
144
|
+
*/
|
|
130
145
|
getRouterForOnRamp(onRamp: string, destChainSelector: bigint): Promise<string>;
|
|
131
|
-
/**
|
|
146
|
+
/**
|
|
147
|
+
* {@inheritDoc Chain.getRouterForOffRamp}
|
|
148
|
+
* @throws {@link CCIPVersionUnsupportedError} if OffRamp version is not supported
|
|
149
|
+
*/
|
|
132
150
|
getRouterForOffRamp(offRamp: string, sourceChainSelector: bigint): Promise<string>;
|
|
133
151
|
/** {@inheritDoc Chain.getNativeTokenForRouter} */
|
|
134
152
|
getNativeTokenForRouter(router: string): Promise<string>;
|
|
@@ -136,9 +154,15 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
136
154
|
getOffRampsForRouter(router: string, sourceChainSelector: bigint): Promise<string[]>;
|
|
137
155
|
/** {@inheritDoc Chain.getOnRampForRouter} */
|
|
138
156
|
getOnRampForRouter(router: string, destChainSelector: bigint): Promise<string>;
|
|
139
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* {@inheritDoc Chain.getOnRampForOffRamp}
|
|
159
|
+
* @throws {@link CCIPVersionUnsupportedError} if OffRamp version is not supported
|
|
160
|
+
*/
|
|
140
161
|
getOnRampForOffRamp(offRamp: string, sourceChainSelector: bigint): Promise<string>;
|
|
141
|
-
/**
|
|
162
|
+
/**
|
|
163
|
+
* {@inheritDoc Chain.getCommitStoreForOffRamp}
|
|
164
|
+
* @throws {@link CCIPVersionUnsupportedError} if OffRamp version is not supported
|
|
165
|
+
*/
|
|
142
166
|
getCommitStoreForOffRamp(offRamp: string): Promise<string>;
|
|
143
167
|
/** {@inheritDoc Chain.getTokenForTokenPool} */
|
|
144
168
|
getTokenForTokenPool(tokenPool: string): Promise<string>;
|
|
@@ -155,6 +179,8 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
155
179
|
* @param lane - Lane configuration.
|
|
156
180
|
* @param ctx - Context object containing logger.
|
|
157
181
|
* @returns Leaf hasher function.
|
|
182
|
+
* @throws {@link CCIPSourceChainUnsupportedError} if source chain is not EVM for v1.2/v1.5
|
|
183
|
+
* @throws {@link CCIPHasherVersionUnsupportedError} if lane version is not supported
|
|
158
184
|
*/
|
|
159
185
|
static getDestLeafHasher({ sourceChainSelector, destChainSelector, onRamp, version }: Lane, ctx?: WithLogger): LeafHasher;
|
|
160
186
|
/**
|
|
@@ -163,13 +189,18 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
163
189
|
* @returns OnRamp contract address.
|
|
164
190
|
*/
|
|
165
191
|
_getSomeOnRampFor(router: string): Promise<string>;
|
|
166
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* {@inheritDoc Chain.getTokenAdminRegistryFor}
|
|
194
|
+
* @throws {@link CCIPContractNotRouterError} if address is not a Router, OnRamp, or OffRamp
|
|
195
|
+
*/
|
|
167
196
|
getTokenAdminRegistryFor(address: string): Promise<string>;
|
|
168
197
|
/**
|
|
169
198
|
* Gets the FeeQuoter contract address for a given Router or Ramp.
|
|
170
199
|
* @internal
|
|
171
200
|
* @param address - Router or Ramp contract address.
|
|
172
201
|
* @returns FeeQuoter contract address.
|
|
202
|
+
* @throws {@link CCIPContractNotRouterError} if address is not a Router, OnRamp, or OffRamp
|
|
203
|
+
* @throws {@link CCIPVersionFeatureUnavailableError} if contract version is below v1.6
|
|
173
204
|
*/
|
|
174
205
|
getFeeQuoterFor(address: string): Promise<string>;
|
|
175
206
|
/** {@inheritDoc Chain.getFee} */
|
|
@@ -180,16 +211,25 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
180
211
|
* generation), followed by a ccipSend TransactionRequest
|
|
181
212
|
*/
|
|
182
213
|
generateUnsignedSendMessage(opts: Parameters<Chain['generateUnsignedSendMessage']>[0]): Promise<UnsignedEVMTx>;
|
|
183
|
-
/**
|
|
214
|
+
/**
|
|
215
|
+
* {@inheritDoc Chain.sendMessage}
|
|
216
|
+
* @throws {@link CCIPWalletInvalidError} if wallet is not a valid Signer
|
|
217
|
+
*/
|
|
184
218
|
sendMessage(opts: Parameters<Chain['sendMessage']>[0]): Promise<CCIPRequest>;
|
|
185
219
|
/** {@inheritDoc Chain.getOffchainTokenData} */
|
|
186
220
|
getOffchainTokenData(request: CCIPRequest): Promise<OffchainTokenData[]>;
|
|
187
221
|
/**
|
|
188
222
|
* {@inheritDoc Chain.generateUnsignedExecuteReport}
|
|
189
223
|
* @returns array containing one unsigned `manuallyExecute` TransactionRequest object
|
|
224
|
+
* @throws {@link CCIPVersionUnsupportedError} if OffRamp version is not supported
|
|
190
225
|
*/
|
|
191
226
|
generateUnsignedExecuteReport({ offRamp, execReport, ...opts }: Parameters<Chain['generateUnsignedExecuteReport']>[0]): Promise<UnsignedEVMTx>;
|
|
192
|
-
/**
|
|
227
|
+
/**
|
|
228
|
+
* {@inheritDoc Chain.executeReport}
|
|
229
|
+
* @throws {@link CCIPWalletInvalidError} if wallet is not a valid Signer
|
|
230
|
+
* @throws {@link CCIPExecTxNotConfirmedError} if execution transaction fails to confirm
|
|
231
|
+
* @throws {@link CCIPExecTxRevertedError} if execution transaction reverts
|
|
232
|
+
*/
|
|
193
233
|
executeReport(opts: Parameters<Chain['executeReport']>[0]): Promise<CCIPExecution>;
|
|
194
234
|
/**
|
|
195
235
|
* Parses raw data into typed structures.
|
|
@@ -206,21 +246,27 @@ export declare class EVMChain extends Chain<typeof ChainFamily.EVM> {
|
|
|
206
246
|
getSupportedTokens(registry: string, opts?: {
|
|
207
247
|
page?: number;
|
|
208
248
|
}): Promise<string[]>;
|
|
209
|
-
/**
|
|
249
|
+
/**
|
|
250
|
+
* {@inheritDoc Chain.getRegistryTokenConfig}
|
|
251
|
+
* @throws {@link CCIPTokenNotConfiguredError} if token is not configured in registry
|
|
252
|
+
*/
|
|
210
253
|
getRegistryTokenConfig(registry: string, token: string): Promise<{
|
|
211
254
|
administrator: string;
|
|
212
255
|
pendingAdministrator?: string;
|
|
213
256
|
tokenPool?: string;
|
|
214
257
|
}>;
|
|
215
|
-
/** {@inheritDoc Chain.
|
|
216
|
-
|
|
258
|
+
/** {@inheritDoc Chain.getTokenPoolConfig} */
|
|
259
|
+
getTokenPoolConfig(tokenPool: string): Promise<{
|
|
217
260
|
token: string;
|
|
218
261
|
router: string;
|
|
219
262
|
typeAndVersion: string;
|
|
220
263
|
}>;
|
|
221
264
|
/** {@inheritDoc Chain.getTokenPoolRemotes} */
|
|
222
265
|
getTokenPoolRemotes(tokenPool: string, remoteChainSelector?: bigint): Promise<Record<string, TokenPoolRemote>>;
|
|
223
|
-
/**
|
|
266
|
+
/**
|
|
267
|
+
* {@inheritDoc Chain.getFeeTokens}
|
|
268
|
+
* @throws {@link CCIPVersionUnsupportedError} if OnRamp version is not supported
|
|
269
|
+
*/
|
|
224
270
|
getFeeTokens(router: string): Promise<{
|
|
225
271
|
[k: string]: {
|
|
226
272
|
decimals: number;
|