@hyperlane-xyz/aleo-sdk 31.2.1 → 32.0.1

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.
Files changed (43) hide show
  1. package/dist/clients/provider.d.ts +0 -38
  2. package/dist/clients/provider.d.ts.map +1 -1
  3. package/dist/clients/provider.js +2 -247
  4. package/dist/clients/provider.js.map +1 -1
  5. package/dist/clients/signer.d.ts +0 -31
  6. package/dist/clients/signer.d.ts.map +1 -1
  7. package/dist/clients/signer.js +1 -424
  8. package/dist/clients/signer.js.map +1 -1
  9. package/dist/testing/utils.d.ts +3 -4
  10. package/dist/testing/utils.d.ts.map +1 -1
  11. package/dist/testing/utils.js.map +1 -1
  12. package/dist/tests/5_ism_artifacts.e2e-test.js +2 -7
  13. package/dist/tests/5_ism_artifacts.e2e-test.js.map +1 -1
  14. package/dist/tests/6_hook_artifacts.e2e-test.js +56 -33
  15. package/dist/tests/6_hook_artifacts.e2e-test.js.map +1 -1
  16. package/dist/tests/7a_warp_native_artifacts.e2e-test.js +40 -4
  17. package/dist/tests/7a_warp_native_artifacts.e2e-test.js.map +1 -1
  18. package/dist/tests/7b_warp_collateral_artifacts.e2e-test.js +40 -4
  19. package/dist/tests/7b_warp_collateral_artifacts.e2e-test.js.map +1 -1
  20. package/dist/tests/7c_warp_synthetic_artifacts.e2e-test.js +40 -4
  21. package/dist/tests/7c_warp_synthetic_artifacts.e2e-test.js.map +1 -1
  22. package/dist/tests/8_mailbox_artifacts.e2e-test.js.map +1 -1
  23. package/dist/tests/warp-artifact-test-suite.d.ts +4 -0
  24. package/dist/tests/warp-artifact-test-suite.d.ts.map +1 -1
  25. package/dist/tests/warp-artifact-test-suite.js +39 -19
  26. package/dist/tests/warp-artifact-test-suite.js.map +1 -1
  27. package/package.json +4 -4
  28. package/dist/tests/1_interchain_security.e2e-test.d.ts +0 -2
  29. package/dist/tests/1_interchain_security.e2e-test.d.ts.map +0 -1
  30. package/dist/tests/1_interchain_security.e2e-test.js +0 -162
  31. package/dist/tests/1_interchain_security.e2e-test.js.map +0 -1
  32. package/dist/tests/2_core.e2e-test.d.ts +0 -2
  33. package/dist/tests/2_core.e2e-test.d.ts.map +0 -1
  34. package/dist/tests/2_core.e2e-test.js +0 -108
  35. package/dist/tests/2_core.e2e-test.js.map +0 -1
  36. package/dist/tests/3_post_dispatch.e2e-test.d.ts +0 -2
  37. package/dist/tests/3_post_dispatch.e2e-test.d.ts.map +0 -1
  38. package/dist/tests/3_post_dispatch.e2e-test.js +0 -108
  39. package/dist/tests/3_post_dispatch.e2e-test.js.map +0 -1
  40. package/dist/tests/4_warp.e2e-test.d.ts +0 -2
  41. package/dist/tests/4_warp.e2e-test.d.ts.map +0 -1
  42. package/dist/tests/4_warp.e2e-test.js +0 -526
  43. package/dist/tests/4_warp.e2e-test.js.map +0 -1
@@ -1,526 +0,0 @@
1
- import { Account, AleoKeyProvider, AleoNetworkClient, Field, NetworkRecordProvider, Program, ProgramManager, U128, } from '@provablehq/sdk';
2
- import { expect } from 'chai';
3
- import { step } from 'mocha-steps';
4
- import { AltVM } from '@hyperlane-xyz/provider-sdk';
5
- import { ensure0x, rootLogger } from '@hyperlane-xyz/utils';
6
- import { hyp_synthetic, token_registry } from '../artifacts.js';
7
- import { AleoSigner } from '../clients/signer.js';
8
- import { ALEO_NATIVE_DENOM, fromAleoAddress, stringToU128, } from '../utils/helper.js';
9
- describe('4. aleo sdk warp e2e tests', async function () {
10
- this.timeout(100_000);
11
- let signer;
12
- let mailboxAddress;
13
- let collateralDenom;
14
- let nativeTokenAddress;
15
- let collateralTokenAddress;
16
- let syntheticTokenAddress;
17
- const domainId = 1234;
18
- before(async () => {
19
- const localnetRpc = 'http://localhost:3030';
20
- // test private key with funds
21
- const privateKey = 'APrivateKey1zkp8CZNn3yeCseEtxuVPbDCwSyhGW6yZKUYKfgXmcpoGPWH';
22
- signer = await AleoSigner.connectWithSigner([localnetRpc], privateKey, {
23
- metadata: {
24
- chainId: 1,
25
- },
26
- });
27
- const aleoAccount = new Account({
28
- privateKey,
29
- });
30
- const aleoClient = new AleoNetworkClient(localnetRpc);
31
- const keyProvider = new AleoKeyProvider();
32
- keyProvider.useCache(true);
33
- const networkRecordProvider = new NetworkRecordProvider(aleoAccount, aleoClient);
34
- const programManager = new ProgramManager(localnetRpc, keyProvider, networkRecordProvider);
35
- programManager.setAccount(aleoAccount);
36
- collateralDenom = '1field';
37
- try {
38
- const tx = await programManager.buildDevnodeDeploymentTransaction({
39
- program: token_registry,
40
- priorityFee: 0,
41
- privateFee: false,
42
- });
43
- const txId = await programManager.networkClient.submitTransaction(tx);
44
- await aleoClient.waitForTransactionConfirmation(txId);
45
- }
46
- catch (e) {
47
- rootLogger.warn('Token registry deployment skipped:', e.message);
48
- }
49
- await signer.sendAndConfirmTransaction({
50
- programName: 'token_registry.aleo',
51
- functionName: 'register_token',
52
- priorityFee: 0,
53
- privateFee: false,
54
- inputs: [
55
- collateralDenom,
56
- `${stringToU128('test').toString()}u128`,
57
- `${stringToU128('test').toString()}u128`,
58
- `6u8`,
59
- `100000000u128`,
60
- `false`,
61
- `aleo1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq3ljyzc`,
62
- ],
63
- });
64
- await signer.sendAndConfirmTransaction({
65
- programName: 'token_registry.aleo',
66
- functionName: 'mint_public',
67
- priorityFee: 0,
68
- privateFee: false,
69
- inputs: [
70
- collateralDenom,
71
- signer.getSignerAddress(),
72
- `100000000u128`,
73
- `0u32`,
74
- ],
75
- });
76
- const mailbox = await signer.createMailbox({
77
- domainId: domainId,
78
- });
79
- mailboxAddress = mailbox.mailboxAddress;
80
- });
81
- step('create new native token', async () => {
82
- // ARRANGE
83
- // ACT
84
- const txResponse = await signer.createNativeToken({
85
- mailboxAddress,
86
- });
87
- // ASSERT
88
- expect(txResponse.tokenAddress).to.be.not.empty;
89
- const token = await signer.getToken({
90
- tokenAddress: txResponse.tokenAddress,
91
- });
92
- expect(token).not.to.be.undefined;
93
- expect(token.owner).to.equal(signer.getSignerAddress());
94
- expect(token.mailboxAddress).to.equal(mailboxAddress);
95
- expect(token.denom).to.be.empty;
96
- expect(token.name).to.be.empty;
97
- expect(token.symbol).to.be.empty;
98
- expect(token.decimals).to.equal(0);
99
- expect(token.ismAddress).to.be.empty;
100
- expect(token.tokenType).to.equal(AltVM.TokenType.native);
101
- nativeTokenAddress = txResponse.tokenAddress;
102
- });
103
- step('create new collateral token', async () => {
104
- // ARRANGE
105
- // ACT
106
- const txResponse = await signer.createCollateralToken({
107
- mailboxAddress,
108
- collateralDenom,
109
- });
110
- // ASSERT
111
- expect(txResponse.tokenAddress).to.be.not.empty;
112
- const token = await signer.getToken({
113
- tokenAddress: txResponse.tokenAddress,
114
- });
115
- expect(token).not.to.be.undefined;
116
- expect(token.owner).to.equal(signer.getSignerAddress());
117
- expect(token.mailboxAddress).to.equal(mailboxAddress);
118
- expect(token.denom).to.equal(collateralDenom);
119
- expect(token.name).to.be.equal('test');
120
- expect(token.symbol).to.be.equal('test');
121
- expect(token.decimals).to.equal(6);
122
- expect(token.ismAddress).to.be.empty;
123
- expect(token.tokenType).to.equal(AltVM.TokenType.collateral);
124
- collateralTokenAddress = txResponse.tokenAddress;
125
- });
126
- step('create new synthetic token', async () => {
127
- // ARRANGE
128
- // ACT
129
- const txResponse = await signer.createSyntheticToken({
130
- mailboxAddress,
131
- name: 'test',
132
- denom: 'test',
133
- decimals: 6,
134
- });
135
- // ASSERT
136
- expect(txResponse.tokenAddress).to.be.not.empty;
137
- const token = await signer.getToken({
138
- tokenAddress: txResponse.tokenAddress,
139
- });
140
- const denom = Field.fromBytesLe(Program.fromString(hyp_synthetic.replaceAll(`hyp_synthetic.aleo`, fromAleoAddress(txResponse.tokenAddress).programId))
141
- .address()
142
- .toBytesLe()).toString();
143
- expect(token).not.to.be.undefined;
144
- expect(token.owner).to.equal(signer.getSignerAddress());
145
- expect(token.mailboxAddress).to.equal(mailboxAddress);
146
- expect(token.denom).to.equal(denom);
147
- expect(token.name).to.be.equal('test');
148
- expect(token.symbol).to.be.equal('test');
149
- expect(token.decimals).to.equal(6);
150
- expect(token.ismAddress).to.be.empty;
151
- expect(token.tokenType).to.equal(AltVM.TokenType.synthetic);
152
- syntheticTokenAddress = txResponse.tokenAddress;
153
- });
154
- step('set token ISM', async () => {
155
- // ARRANGE
156
- let token = await signer.getToken({
157
- tokenAddress: collateralTokenAddress,
158
- });
159
- expect(token.ismAddress).to.be.empty;
160
- const { ismAddress } = await signer.createNoopIsm({});
161
- // ACT
162
- await signer.setTokenIsm({
163
- tokenAddress: collateralTokenAddress,
164
- ismAddress,
165
- });
166
- // ASSERT
167
- token = await signer.getToken({
168
- tokenAddress: collateralTokenAddress,
169
- });
170
- expect(token.ismAddress).to.equal(ismAddress);
171
- });
172
- step('set token Hook', async () => {
173
- // ARRANGE
174
- let token = await signer.getToken({
175
- tokenAddress: collateralTokenAddress,
176
- });
177
- expect(token.hookAddress).to.be.empty;
178
- const { hookAddress } = await signer.createNoopHook({
179
- mailboxAddress,
180
- });
181
- // ACT
182
- await signer.setTokenHook({
183
- tokenAddress: collateralTokenAddress,
184
- hookAddress,
185
- });
186
- // ASSERT
187
- token = await signer.getToken({
188
- tokenAddress: collateralTokenAddress,
189
- });
190
- expect(token.hookAddress).to.equal(hookAddress);
191
- });
192
- step('set token owner', async () => {
193
- // ARRANGE
194
- let token = await signer.getToken({
195
- tokenAddress: syntheticTokenAddress,
196
- });
197
- expect(token.owner).to.equal(signer.getSignerAddress());
198
- const newOwner = new Account().address().to_string();
199
- // ACT
200
- await signer.setTokenOwner({
201
- tokenAddress: syntheticTokenAddress,
202
- newOwner,
203
- });
204
- // ASSERT
205
- token = await signer.getToken({
206
- tokenAddress: syntheticTokenAddress,
207
- });
208
- expect(token.owner).to.equal(newOwner);
209
- });
210
- step('enroll remote router', async () => {
211
- // ARRANGE
212
- let remoteRouters = await signer.getRemoteRouters({
213
- tokenAddress: nativeTokenAddress,
214
- });
215
- expect(remoteRouters.remoteRouters).to.have.lengthOf(0);
216
- const receiverAddress = '0xe98b09dff7176053c651a4dc025af3e4f6a442415e9b85dd076ac0ff66b4b1ed';
217
- const gas = '200000';
218
- // ACT
219
- await signer.enrollRemoteRouter({
220
- tokenAddress: nativeTokenAddress,
221
- remoteRouter: {
222
- receiverDomainId: domainId,
223
- receiverAddress,
224
- gas,
225
- },
226
- });
227
- // ASSERT
228
- remoteRouters = await signer.getRemoteRouters({
229
- tokenAddress: nativeTokenAddress,
230
- });
231
- expect(remoteRouters.remoteRouters).to.have.lengthOf(1);
232
- const remoteRouter = remoteRouters.remoteRouters[0];
233
- expect(remoteRouter.receiverDomainId).to.equal(domainId);
234
- expect(remoteRouter.receiverAddress).to.equal(receiverAddress);
235
- expect(remoteRouter.gas).to.equal(gas);
236
- });
237
- step('quote remote transfer', async () => {
238
- // ARRANGE
239
- const { hookAddress } = await signer.createInterchainGasPaymasterHook({
240
- mailboxAddress,
241
- });
242
- await signer.setDestinationGasConfig({
243
- hookAddress,
244
- destinationGasConfig: {
245
- remoteDomainId: domainId,
246
- gasOracle: {
247
- tokenExchangeRate: '1000',
248
- gasPrice: '1000',
249
- },
250
- gasOverhead: '50000',
251
- },
252
- });
253
- await signer.setRequiredHook({
254
- mailboxAddress,
255
- hookAddress,
256
- });
257
- // ACT
258
- const quote = await signer.quoteRemoteTransfer({
259
- tokenAddress: nativeTokenAddress,
260
- destinationDomainId: domainId,
261
- });
262
- // ASSERT
263
- expect(quote.denom).to.equal(ALEO_NATIVE_DENOM);
264
- expect(quote.amount).to.equal(25n);
265
- });
266
- step('quote remote transfer with custom hook', async () => {
267
- // ARRANGE
268
- const { hookAddress: noopHook } = await signer.createNoopHook({
269
- mailboxAddress,
270
- });
271
- await signer.setRequiredHook({
272
- mailboxAddress,
273
- hookAddress: noopHook,
274
- });
275
- const { hookAddress } = await signer.createInterchainGasPaymasterHook({
276
- mailboxAddress,
277
- });
278
- await signer.setDestinationGasConfig({
279
- hookAddress,
280
- destinationGasConfig: {
281
- remoteDomainId: domainId,
282
- gasOracle: {
283
- tokenExchangeRate: '1000',
284
- gasPrice: '1000',
285
- },
286
- gasOverhead: '50000',
287
- },
288
- });
289
- // ACT
290
- const quote = await signer.quoteRemoteTransfer({
291
- tokenAddress: nativeTokenAddress,
292
- destinationDomainId: domainId,
293
- customHookAddress: hookAddress,
294
- });
295
- // ASSERT
296
- expect(quote.denom).to.equal(ALEO_NATIVE_DENOM);
297
- expect(quote.amount).to.equal(25n);
298
- });
299
- step('quote remote transfer with custom hook and metadata', async () => {
300
- // ARRANGE
301
- const { hookAddress: noopHook } = await signer.createNoopHook({
302
- mailboxAddress,
303
- });
304
- await signer.setRequiredHook({
305
- mailboxAddress,
306
- hookAddress: noopHook,
307
- });
308
- const { hookAddress } = await signer.createInterchainGasPaymasterHook({
309
- mailboxAddress,
310
- });
311
- await signer.setDestinationGasConfig({
312
- hookAddress,
313
- destinationGasConfig: {
314
- remoteDomainId: domainId,
315
- gasOracle: {
316
- tokenExchangeRate: '1000',
317
- gasPrice: '1000',
318
- },
319
- gasOverhead: '50000',
320
- },
321
- });
322
- // ACT
323
- const quote = await signer.quoteRemoteTransfer({
324
- tokenAddress: nativeTokenAddress,
325
- destinationDomainId: domainId,
326
- customHookAddress: hookAddress,
327
- customHookMetadata: ensure0x(Buffer.from(U128.fromString('400000u128').toBytesLe()).toString('hex')),
328
- });
329
- // ASSERT
330
- expect(quote.denom).to.equal(ALEO_NATIVE_DENOM);
331
- expect(quote.amount).to.equal(45n);
332
- });
333
- step('remote transfer', async () => {
334
- // ARRANGE
335
- const { ismAddress } = await signer.createNoopIsm({});
336
- const { hookAddress } = await signer.createMerkleTreeHook({
337
- mailboxAddress,
338
- });
339
- const { hookAddress: noopHook } = await signer.createNoopHook({
340
- mailboxAddress,
341
- });
342
- await signer.setDefaultIsm({
343
- mailboxAddress,
344
- ismAddress,
345
- });
346
- await signer.setDefaultHook({
347
- mailboxAddress,
348
- hookAddress,
349
- });
350
- await signer.setRequiredHook({
351
- mailboxAddress,
352
- hookAddress: noopHook,
353
- });
354
- let mailbox = await signer.getMailbox({
355
- mailboxAddress,
356
- });
357
- expect(mailbox.nonce).to.equal(0);
358
- const recipient = '0xe98b09dff7176053c651a4dc025af3e4f6a442415e9b85dd076ac0ff66b4b1ed';
359
- // ACT
360
- await signer.remoteTransfer({
361
- tokenAddress: nativeTokenAddress,
362
- destinationDomainId: domainId,
363
- recipient,
364
- amount: '1000000',
365
- gasLimit: '200000',
366
- maxFee: {
367
- denom: ALEO_NATIVE_DENOM,
368
- amount: '100',
369
- },
370
- });
371
- // ASSERT
372
- mailbox = await signer.getMailbox({
373
- mailboxAddress,
374
- });
375
- expect(mailbox.nonce).to.equal(1);
376
- const supply = await signer.getBridgedSupply({
377
- tokenAddress: nativeTokenAddress,
378
- });
379
- expect(supply).to.equal(1000000n);
380
- });
381
- step('remote transfer with custom hook', async () => {
382
- // ARRANGE
383
- const { ismAddress } = await signer.createNoopIsm({});
384
- const { hookAddress } = await signer.createMerkleTreeHook({
385
- mailboxAddress,
386
- });
387
- const { hookAddress: noopHook } = await signer.createNoopHook({
388
- mailboxAddress,
389
- });
390
- await signer.setDefaultIsm({
391
- mailboxAddress,
392
- ismAddress,
393
- });
394
- await signer.setDefaultHook({
395
- mailboxAddress,
396
- hookAddress,
397
- });
398
- await signer.setRequiredHook({
399
- mailboxAddress,
400
- hookAddress: noopHook,
401
- });
402
- const { hookAddress: igp } = await signer.createInterchainGasPaymasterHook({
403
- mailboxAddress,
404
- });
405
- await signer.setDestinationGasConfig({
406
- hookAddress: igp,
407
- destinationGasConfig: {
408
- remoteDomainId: domainId,
409
- gasOracle: {
410
- tokenExchangeRate: '1000',
411
- gasPrice: '1000',
412
- },
413
- gasOverhead: '50000',
414
- },
415
- });
416
- let mailbox = await signer.getMailbox({
417
- mailboxAddress,
418
- });
419
- expect(mailbox.nonce).to.equal(1);
420
- const recipient = '0xe98b09dff7176053c651a4dc025af3e4f6a442415e9b85dd076ac0ff66b4b1ed';
421
- // ACT
422
- await signer.remoteTransfer({
423
- tokenAddress: nativeTokenAddress,
424
- destinationDomainId: domainId,
425
- recipient,
426
- amount: '1000000',
427
- gasLimit: '200000',
428
- maxFee: {
429
- denom: ALEO_NATIVE_DENOM,
430
- amount: '100',
431
- },
432
- customHookAddress: igp,
433
- });
434
- // ASSERT
435
- mailbox = await signer.getMailbox({
436
- mailboxAddress,
437
- });
438
- expect(mailbox.nonce).to.equal(2);
439
- const supply = await signer.getBridgedSupply({
440
- tokenAddress: nativeTokenAddress,
441
- });
442
- expect(supply).to.equal(2000000n);
443
- });
444
- step('remote transfer with custom hook and metadata', async () => {
445
- // ARRANGE
446
- const { ismAddress } = await signer.createNoopIsm({});
447
- const { hookAddress } = await signer.createMerkleTreeHook({
448
- mailboxAddress,
449
- });
450
- const { hookAddress: noopHook } = await signer.createNoopHook({
451
- mailboxAddress,
452
- });
453
- await signer.setDefaultIsm({
454
- mailboxAddress,
455
- ismAddress,
456
- });
457
- await signer.setDefaultHook({
458
- mailboxAddress,
459
- hookAddress,
460
- });
461
- await signer.setRequiredHook({
462
- mailboxAddress,
463
- hookAddress: noopHook,
464
- });
465
- const { hookAddress: igp } = await signer.createInterchainGasPaymasterHook({
466
- mailboxAddress,
467
- });
468
- await signer.setDestinationGasConfig({
469
- hookAddress: igp,
470
- destinationGasConfig: {
471
- remoteDomainId: domainId,
472
- gasOracle: {
473
- tokenExchangeRate: '1000',
474
- gasPrice: '1000',
475
- },
476
- gasOverhead: '50000',
477
- },
478
- });
479
- let mailbox = await signer.getMailbox({
480
- mailboxAddress,
481
- });
482
- expect(mailbox.nonce).to.equal(2);
483
- const recipient = '0xe98b09dff7176053c651a4dc025af3e4f6a442415e9b85dd076ac0ff66b4b1ed';
484
- // ACT
485
- await signer.remoteTransfer({
486
- tokenAddress: nativeTokenAddress,
487
- destinationDomainId: domainId,
488
- recipient,
489
- amount: '1000000',
490
- gasLimit: '200000',
491
- maxFee: {
492
- denom: ALEO_NATIVE_DENOM,
493
- amount: '100',
494
- },
495
- customHookAddress: igp,
496
- customHookMetadata: ensure0x(Buffer.from(U128.fromString('400000u128').toBytesLe()).toString('hex')),
497
- });
498
- // ASSERT
499
- mailbox = await signer.getMailbox({
500
- mailboxAddress,
501
- });
502
- expect(mailbox.nonce).to.equal(3);
503
- const supply = await signer.getBridgedSupply({
504
- tokenAddress: nativeTokenAddress,
505
- });
506
- expect(supply).to.equal(3000000n);
507
- });
508
- step('unenroll remote router', async () => {
509
- // ARRANGE
510
- let remoteRouters = await signer.getRemoteRouters({
511
- tokenAddress: nativeTokenAddress,
512
- });
513
- expect(remoteRouters.remoteRouters).to.have.lengthOf(1);
514
- // ACT
515
- await signer.unenrollRemoteRouter({
516
- tokenAddress: nativeTokenAddress,
517
- receiverDomainId: domainId,
518
- });
519
- // ASSERT
520
- remoteRouters = await signer.getRemoteRouters({
521
- tokenAddress: nativeTokenAddress,
522
- });
523
- expect(remoteRouters.remoteRouters).to.have.lengthOf(0);
524
- });
525
- });
526
- //# sourceMappingURL=4_warp.e2e-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"4_warp.e2e-test.js","sourceRoot":"","sources":["../../src/tests/4_warp.e2e-test.ts"],"names":[],"mappings":"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"}