@hyperlane-xyz/sdk 22.0.0 → 23.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.
Files changed (157) hide show
  1. package/dist/consts/igp.d.ts +1 -0
  2. package/dist/consts/igp.d.ts.map +1 -1
  3. package/dist/consts/igp.js +8 -3
  4. package/dist/consts/igp.js.map +1 -1
  5. package/dist/consts/multisigIsm.d.ts.map +1 -1
  6. package/dist/consts/multisigIsm.js +23 -148
  7. package/dist/consts/multisigIsm.js.map +1 -1
  8. package/dist/contracts/contracts.d.ts.map +1 -1
  9. package/dist/contracts/contracts.js +2 -0
  10. package/dist/contracts/contracts.js.map +1 -1
  11. package/dist/core/HyperlaneCore.d.ts +24 -0
  12. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  13. package/dist/core/HyperlaneCore.js +38 -3
  14. package/dist/core/HyperlaneCore.js.map +1 -1
  15. package/dist/core/MultiProtocolCore.d.ts.map +1 -1
  16. package/dist/core/MultiProtocolCore.js +3 -0
  17. package/dist/core/MultiProtocolCore.js.map +1 -1
  18. package/dist/core/adapters/AleoCoreAdapter.d.ts +22 -0
  19. package/dist/core/adapters/AleoCoreAdapter.d.ts.map +1 -0
  20. package/dist/core/adapters/AleoCoreAdapter.js +33 -0
  21. package/dist/core/adapters/AleoCoreAdapter.js.map +1 -0
  22. package/dist/deploy/proxy.d.ts +2 -0
  23. package/dist/deploy/proxy.d.ts.map +1 -1
  24. package/dist/deploy/proxy.js +10 -4
  25. package/dist/deploy/proxy.js.map +1 -1
  26. package/dist/deploy/proxy.test.js +44 -1
  27. package/dist/deploy/proxy.test.js.map +1 -1
  28. package/dist/gas/utils.d.ts.map +1 -1
  29. package/dist/gas/utils.js +11 -8
  30. package/dist/gas/utils.js.map +1 -1
  31. package/dist/index.d.ts +7 -9
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +5 -7
  34. package/dist/index.js.map +1 -1
  35. package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts +1 -3
  36. package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts.map +1 -1
  37. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +6 -96
  38. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  39. package/dist/ism/multisig.js +2 -2
  40. package/dist/ism/multisig.js.map +1 -1
  41. package/dist/ism/utils.d.ts +1 -0
  42. package/dist/ism/utils.d.ts.map +1 -1
  43. package/dist/ism/utils.js +4 -1
  44. package/dist/ism/utils.js.map +1 -1
  45. package/dist/metadata/agentConfig.d.ts +16 -16
  46. package/dist/metadata/blockExplorer.d.ts.map +1 -1
  47. package/dist/metadata/blockExplorer.js +2 -0
  48. package/dist/metadata/blockExplorer.js.map +1 -1
  49. package/dist/middleware/account/InterchainAccount.d.ts +21 -1
  50. package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
  51. package/dist/middleware/account/InterchainAccount.js +120 -8
  52. package/dist/middleware/account/InterchainAccount.js.map +1 -1
  53. package/dist/middleware/account/InterchainAccount.test.d.ts +2 -0
  54. package/dist/middleware/account/InterchainAccount.test.d.ts.map +1 -0
  55. package/dist/middleware/account/InterchainAccount.test.js +279 -0
  56. package/dist/middleware/account/InterchainAccount.test.js.map +1 -0
  57. package/dist/middleware/account/types.d.ts +37 -3
  58. package/dist/middleware/account/types.d.ts.map +1 -1
  59. package/dist/middleware/account/types.js +8 -3
  60. package/dist/middleware/account/types.js.map +1 -1
  61. package/dist/providers/MultiProvider.d.ts +26 -4
  62. package/dist/providers/MultiProvider.d.ts.map +1 -1
  63. package/dist/providers/MultiProvider.js +59 -5
  64. package/dist/providers/MultiProvider.js.map +1 -1
  65. package/dist/providers/transactions/submitter/IcaTxSubmitter.d.ts.map +1 -1
  66. package/dist/providers/transactions/submitter/IcaTxSubmitter.js +4 -1
  67. package/dist/providers/transactions/submitter/IcaTxSubmitter.js.map +1 -1
  68. package/dist/test/testUtils.d.ts +9 -2
  69. package/dist/test/testUtils.d.ts.map +1 -1
  70. package/dist/test/testUtils.js +99 -3
  71. package/dist/test/testUtils.js.map +1 -1
  72. package/dist/token/Token.d.ts.map +1 -1
  73. package/dist/token/Token.js +21 -0
  74. package/dist/token/Token.js.map +1 -1
  75. package/dist/token/adapters/AleoTokenAdapter.d.ts +60 -0
  76. package/dist/token/adapters/AleoTokenAdapter.d.ts.map +1 -0
  77. package/dist/token/adapters/AleoTokenAdapter.js +190 -0
  78. package/dist/token/adapters/AleoTokenAdapter.js.map +1 -0
  79. package/dist/token/adapters/EvmTokenAdapter.d.ts +26 -9
  80. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  81. package/dist/token/adapters/EvmTokenAdapter.js +36 -31
  82. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  83. package/dist/token/adapters/ITokenAdapter.d.ts +5 -2
  84. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
  85. package/dist/token/adapters/utils.d.ts +7 -0
  86. package/dist/token/adapters/utils.d.ts.map +1 -0
  87. package/dist/token/adapters/utils.js +4 -0
  88. package/dist/token/adapters/utils.js.map +1 -0
  89. package/dist/utils/gas.d.ts +29 -0
  90. package/dist/utils/gas.d.ts.map +1 -0
  91. package/dist/utils/gas.js +34 -0
  92. package/dist/utils/gas.js.map +1 -0
  93. package/package.json +11 -11
  94. package/dist/core/HyperlaneRelayer.d.ts +0 -600
  95. package/dist/core/HyperlaneRelayer.d.ts.map +0 -1
  96. package/dist/core/HyperlaneRelayer.js +0 -257
  97. package/dist/core/HyperlaneRelayer.js.map +0 -1
  98. package/dist/ism/metadata/aggregation.d.ts +0 -23
  99. package/dist/ism/metadata/aggregation.d.ts.map +0 -1
  100. package/dist/ism/metadata/aggregation.js +0 -92
  101. package/dist/ism/metadata/aggregation.js.map +0 -1
  102. package/dist/ism/metadata/aggregation.test.d.ts +0 -2
  103. package/dist/ism/metadata/aggregation.test.d.ts.map +0 -1
  104. package/dist/ism/metadata/aggregation.test.js +0 -37
  105. package/dist/ism/metadata/aggregation.test.js.map +0 -1
  106. package/dist/ism/metadata/arbL2ToL1.d.ts +0 -25
  107. package/dist/ism/metadata/arbL2ToL1.d.ts.map +0 -1
  108. package/dist/ism/metadata/arbL2ToL1.hardhat-test.d.ts +0 -2
  109. package/dist/ism/metadata/arbL2ToL1.hardhat-test.d.ts.map +0 -1
  110. package/dist/ism/metadata/arbL2ToL1.hardhat-test.js +0 -167
  111. package/dist/ism/metadata/arbL2ToL1.hardhat-test.js.map +0 -1
  112. package/dist/ism/metadata/arbL2ToL1.js +0 -133
  113. package/dist/ism/metadata/arbL2ToL1.js.map +0 -1
  114. package/dist/ism/metadata/builder.d.ts +0 -23
  115. package/dist/ism/metadata/builder.d.ts.map +0 -1
  116. package/dist/ism/metadata/builder.hardhat-test.d.ts +0 -2
  117. package/dist/ism/metadata/builder.hardhat-test.d.ts.map +0 -1
  118. package/dist/ism/metadata/builder.hardhat-test.js +0 -137
  119. package/dist/ism/metadata/builder.hardhat-test.js.map +0 -1
  120. package/dist/ism/metadata/builder.js +0 -87
  121. package/dist/ism/metadata/builder.js.map +0 -1
  122. package/dist/ism/metadata/ccipread.d.ts +0 -12
  123. package/dist/ism/metadata/ccipread.d.ts.map +0 -1
  124. package/dist/ism/metadata/ccipread.hardhat-test.d.ts +0 -2
  125. package/dist/ism/metadata/ccipread.hardhat-test.d.ts.map +0 -1
  126. package/dist/ism/metadata/ccipread.hardhat-test.js +0 -98
  127. package/dist/ism/metadata/ccipread.hardhat-test.js.map +0 -1
  128. package/dist/ism/metadata/ccipread.js +0 -73
  129. package/dist/ism/metadata/ccipread.js.map +0 -1
  130. package/dist/ism/metadata/decode.d.ts +0 -3
  131. package/dist/ism/metadata/decode.d.ts.map +0 -1
  132. package/dist/ism/metadata/decode.js +0 -34
  133. package/dist/ism/metadata/decode.js.map +0 -1
  134. package/dist/ism/metadata/multisig.d.ts +0 -57
  135. package/dist/ism/metadata/multisig.d.ts.map +0 -1
  136. package/dist/ism/metadata/multisig.js +0 -186
  137. package/dist/ism/metadata/multisig.js.map +0 -1
  138. package/dist/ism/metadata/multisig.test.d.ts +0 -2
  139. package/dist/ism/metadata/multisig.test.d.ts.map +0 -1
  140. package/dist/ism/metadata/multisig.test.js +0 -56
  141. package/dist/ism/metadata/multisig.test.js.map +0 -1
  142. package/dist/ism/metadata/null.d.ts +0 -15
  143. package/dist/ism/metadata/null.d.ts.map +0 -1
  144. package/dist/ism/metadata/null.js +0 -20
  145. package/dist/ism/metadata/null.js.map +0 -1
  146. package/dist/ism/metadata/routing.d.ts +0 -22
  147. package/dist/ism/metadata/routing.d.ts.map +0 -1
  148. package/dist/ism/metadata/routing.js +0 -72
  149. package/dist/ism/metadata/routing.js.map +0 -1
  150. package/dist/ism/metadata/types.d.ts +0 -20
  151. package/dist/ism/metadata/types.d.ts.map +0 -1
  152. package/dist/ism/metadata/types.js +0 -2
  153. package/dist/ism/metadata/types.js.map +0 -1
  154. package/dist/ism/metadata/types.test.d.ts +0 -5
  155. package/dist/ism/metadata/types.test.d.ts.map +0 -1
  156. package/dist/ism/metadata/types.test.js +0 -2
  157. package/dist/ism/metadata/types.test.js.map +0 -1
@@ -1,167 +0,0 @@
1
- import { ChildToParentMessageStatus } from '@arbitrum/sdk';
2
- import { expect } from 'chai';
3
- import { BigNumber } from 'ethers';
4
- import hre from 'hardhat';
5
- import sinon from 'sinon';
6
- import { ArbL2ToL1Hook__factory, ArbL2ToL1Ism__factory, MockArbBridge__factory, MockArbSys__factory, } from '@hyperlane-xyz/core';
7
- import { bytes32ToAddress, objMap, } from '@hyperlane-xyz/utils';
8
- import { testChains } from '../../consts/testChains.js';
9
- import { TestCoreDeployer } from '../../core/TestCoreDeployer.js';
10
- import { TestRecipientDeployer } from '../../core/TestRecipientDeployer.js';
11
- import { HyperlaneProxyFactoryDeployer } from '../../deploy/HyperlaneProxyFactoryDeployer.js';
12
- import { EvmHookModule } from '../../hook/EvmHookModule.js';
13
- import { HookType } from '../../hook/types.js';
14
- import { MultiProvider } from '../../providers/MultiProvider.js';
15
- import { EvmIsmReader } from '../EvmIsmReader.js';
16
- import { HyperlaneIsmFactory } from '../HyperlaneIsmFactory.js';
17
- import { ArbL2ToL1MetadataBuilder } from './arbL2ToL1.js';
18
- describe('ArbL2ToL1MetadataBuilder', () => {
19
- const origin = 'test4';
20
- const destination = 'test2';
21
- let core;
22
- let ismFactory;
23
- let hookConfig;
24
- let arbL2ToL1Hook;
25
- let arbL2ToL1Ism;
26
- let arbBridge;
27
- let testRecipients;
28
- let proxyFactoryAddresses;
29
- let factoryContracts;
30
- let relayer;
31
- let metadataBuilder;
32
- let context;
33
- function setArbitrumBridgeStatus(status) {
34
- sinon
35
- .stub(metadataBuilder, 'getArbitrumBridgeStatus')
36
- .callsFake(async () => {
37
- return status;
38
- });
39
- }
40
- before(async () => {
41
- [relayer] = await hre.ethers.getSigners();
42
- const multiProvider = MultiProvider.createTestMultiProvider({
43
- signer: relayer,
44
- });
45
- const ismFactoryDeployer = new HyperlaneProxyFactoryDeployer(multiProvider);
46
- const contractsMap = await ismFactoryDeployer.deploy(multiProvider.mapKnownChains(() => ({})));
47
- ismFactory = new HyperlaneIsmFactory(contractsMap, multiProvider);
48
- const coreDeployer = new TestCoreDeployer(multiProvider, ismFactory);
49
- const recipientDeployer = new TestRecipientDeployer(multiProvider);
50
- testRecipients = objMap(await recipientDeployer.deploy(Object.fromEntries(testChains.map((c) => [c, {}]))), (_, { testRecipient }) => testRecipient);
51
- core = await coreDeployer.deployApp();
52
- const mockArbSys = await multiProvider.handleDeploy(origin, new MockArbSys__factory(), []);
53
- hookConfig = {
54
- test4: {
55
- type: HookType.ARB_L2_TO_L1,
56
- arbSys: mockArbSys.address,
57
- destinationChain: destination,
58
- childHook: {
59
- type: HookType.INTERCHAIN_GAS_PAYMASTER,
60
- beneficiary: relayer.address,
61
- owner: relayer.address,
62
- oracleKey: relayer.address,
63
- overhead: {
64
- [destination]: 200000,
65
- },
66
- oracleConfig: {
67
- [destination]: {
68
- gasPrice: '20',
69
- tokenExchangeRate: '10000000000',
70
- },
71
- },
72
- },
73
- },
74
- };
75
- factoryContracts = contractsMap.test4;
76
- proxyFactoryAddresses = Object.keys(factoryContracts).reduce((acc, key) => {
77
- acc[key] =
78
- contractsMap[origin][key].address;
79
- return acc;
80
- }, {});
81
- arbBridge = await multiProvider.handleDeploy(origin, new MockArbBridge__factory(), []);
82
- hookConfig.test4.bridge = arbBridge.address;
83
- const hookModule = await EvmHookModule.create({
84
- chain: origin,
85
- config: hookConfig.test4,
86
- proxyFactoryFactories: proxyFactoryAddresses,
87
- coreAddresses: core.getAddresses(origin),
88
- multiProvider,
89
- });
90
- const hookAddress = hookModule.serialize().deployedHook;
91
- arbL2ToL1Hook = ArbL2ToL1Hook__factory.connect(hookAddress, relayer);
92
- metadataBuilder = new ArbL2ToL1MetadataBuilder(core);
93
- });
94
- describe('#build', () => {
95
- let metadata;
96
- beforeEach(async () => {
97
- const testRecipient = testRecipients[destination];
98
- arbL2ToL1Ism = ArbL2ToL1Ism__factory.connect(bytes32ToAddress(await arbL2ToL1Hook.ism()), relayer);
99
- await testRecipient.setInterchainSecurityModule(arbL2ToL1Ism.address);
100
- const { dispatchTx, message } = await core.sendMessage(origin, destination, testRecipient.address, '0xdeadbeef', arbL2ToL1Hook.address);
101
- const derivedIsm = await new EvmIsmReader(core.multiProvider, destination).deriveIsmConfig(arbL2ToL1Ism.address);
102
- context = {
103
- hook: { ...hookConfig[origin], address: arbL2ToL1Hook.address },
104
- ism: derivedIsm,
105
- message,
106
- dispatchTx,
107
- };
108
- sinon
109
- .stub(metadataBuilder, 'getArbitrumOutboxProof')
110
- .callsFake(async () => {
111
- await arbBridge.setL2ToL1Sender(arbL2ToL1Hook.address);
112
- return [];
113
- });
114
- });
115
- it(`should build valid metadata using direct executeTransaction call`, async () => {
116
- setArbitrumBridgeStatus(ChildToParentMessageStatus.CONFIRMED);
117
- metadata = await metadataBuilder.build(context);
118
- await arbL2ToL1Ism.verify(metadata, context.message.message);
119
- });
120
- it(`should throw an error if the message has already been relayed`, async () => {
121
- setArbitrumBridgeStatus(ChildToParentMessageStatus.EXECUTED);
122
- try {
123
- await metadataBuilder.build(context);
124
- expect.fail('Expected an error to be thrown');
125
- }
126
- catch (error) {
127
- expect(error.message).to.include('Arbitrum L2ToL1 message has already been executed');
128
- }
129
- await expect(arbL2ToL1Ism.verify(metadata, context.message.message)).to.be.revertedWith('ArbL2ToL1Ism: invalid message id');
130
- });
131
- it(`should throw an error if the challenge period hasn't passed`, async () => {
132
- setArbitrumBridgeStatus(ChildToParentMessageStatus.UNCONFIRMED);
133
- // stub waiting period to 10 blocks
134
- sinon
135
- .stub(metadataBuilder, 'getWaitingBlocksUntilReady')
136
- .callsFake(async () => {
137
- return BigNumber.from(10); // test waiting period
138
- });
139
- try {
140
- await metadataBuilder.build(context);
141
- expect.fail('Expected an error to be thrown');
142
- }
143
- catch (error) {
144
- expect(error.message).to.include("Arbitrum L2ToL1 message isn't ready for relay. Wait 10 blocks until the challenge period before relaying again");
145
- }
146
- await expect(arbL2ToL1Ism.verify(metadata, context.message.message)).to.be.revertedWith('ArbL2ToL1Ism: invalid message id');
147
- });
148
- it(`should build valid metadata if already preverified by 3rd party relayer`, async () => {
149
- setArbitrumBridgeStatus(ChildToParentMessageStatus.CONFIRMED);
150
- const calldata = await metadataBuilder.buildArbitrumBridgeCalldata(context);
151
- metadata = ArbL2ToL1MetadataBuilder.encodeArbL2ToL1Metadata(calldata);
152
- await arbBridge.executeTransaction(calldata.proof, calldata.position, calldata.caller, calldata.destination, calldata.arbBlockNum, calldata.ethBlockNum, calldata.timestamp, BigNumber.from(0), // msg.value
153
- calldata.data);
154
- metadata = await metadataBuilder.build(context);
155
- await arbL2ToL1Ism.verify(metadata, context.message.message);
156
- });
157
- it(`should decode metadata`, async () => {
158
- setArbitrumBridgeStatus(ChildToParentMessageStatus.CONFIRMED);
159
- metadata = await metadataBuilder.build(context);
160
- ArbL2ToL1MetadataBuilder.decode(metadata, context);
161
- });
162
- });
163
- afterEach(() => {
164
- sinon.restore();
165
- });
166
- });
167
- //# sourceMappingURL=arbL2ToL1.hardhat-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arbL2ToL1.hardhat-test.js","sourceRoot":"","sources":["../../../src/ism/metadata/arbL2ToL1.hardhat-test.ts"],"names":[],"mappings":"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"}
@@ -1,133 +0,0 @@
1
- import { ArbitrumProvider, ChildToParentMessageReader, ChildToParentMessageStatus, } from '@arbitrum/sdk';
2
- import { BigNumber, providers, utils } from 'ethers';
3
- import { AbstractMessageIdAuthorizedIsm__factory, ArbSys__factory, IOutbox__factory, } from '@hyperlane-xyz/core';
4
- import { assert, rootLogger } from '@hyperlane-xyz/utils';
5
- import { findMatchingLogEvents } from '../../utils/logUtils.js';
6
- import { IsmType } from '../types.js';
7
- const ArbSys = ArbSys__factory.createInterface();
8
- export class ArbL2ToL1MetadataBuilder {
9
- core;
10
- logger;
11
- constructor(core, logger = rootLogger.child({
12
- module: 'ArbL2ToL1MetadataBuilder',
13
- })) {
14
- this.core = core;
15
- this.logger = logger;
16
- }
17
- async build(context) {
18
- assert(context.ism.type === IsmType.ARB_L2_TO_L1, 'Invalid ISM type');
19
- this.logger.debug({ context }, 'Building ArbL2ToL1 metadata');
20
- // if the executeTransaction call is already successful, we can call with null metadata
21
- const ism = AbstractMessageIdAuthorizedIsm__factory.connect(context.ism.address, this.core.multiProvider.getSigner(context.message.parsed.destination));
22
- const verified = await ism.isVerified(context.message.id);
23
- if (verified) {
24
- this.logger.debug('Message is already verified, relaying without metadata...');
25
- return '0x';
26
- }
27
- // else build the metadata for outbox.executeTransaction call
28
- const metadata = await this.buildArbitrumBridgeCalldata(context);
29
- return ArbL2ToL1MetadataBuilder.encodeArbL2ToL1Metadata(metadata);
30
- }
31
- async buildArbitrumBridgeCalldata(context) {
32
- const matchingL2TxEvent = findMatchingLogEvents(context.dispatchTx.logs, ArbSys, 'L2ToL1Tx').find((log) => {
33
- const calldata = log.args.data;
34
- const messageIdHex = context.message.id.slice(2);
35
- return calldata && calldata.includes(messageIdHex);
36
- });
37
- assert(matchingL2TxEvent, 'No matching L2ToL1Tx event found');
38
- this.logger.debug({ matchingL2TxEvent }, 'Found matching L2ToL1Tx event');
39
- if (matchingL2TxEvent) {
40
- const [caller, destination, hash, position, arbBlockNum, ethBlockNum, timestamp, callvalue, data,] = matchingL2TxEvent.args;
41
- const l2ToL1TxEvent = {
42
- caller,
43
- destination,
44
- hash,
45
- position,
46
- arbBlockNum,
47
- ethBlockNum,
48
- timestamp,
49
- callvalue,
50
- data,
51
- };
52
- const reader = new ChildToParentMessageReader(this.core.multiProvider.getProvider(context.hook.destinationChain), l2ToL1TxEvent);
53
- const originChainMetadata = this.core.multiProvider.getChainMetadata(context.message.parsed.origin);
54
- if (typeof originChainMetadata.chainId == 'string') {
55
- throw new Error(`Invalid chainId for ${originChainMetadata.name}: ${originChainMetadata.chainId}`);
56
- }
57
- const baseProvider = new providers.JsonRpcProvider(originChainMetadata.rpcUrls[0].http);
58
- const arbProvider = new ArbitrumProvider(baseProvider, {
59
- name: originChainMetadata.name,
60
- chainId: originChainMetadata.chainId,
61
- });
62
- const status = await this.getArbitrumBridgeStatus(reader, arbProvider);
63
- // need to wait for the challenge period to pass before relaying
64
- if (status == ChildToParentMessageStatus.UNCONFIRMED) {
65
- const waitingPeriod = await this.getWaitingBlocksUntilReady(reader, arbProvider);
66
- throw new Error(`Arbitrum L2ToL1 message isn't ready for relay. Wait ${waitingPeriod} blocks until the challenge period before relaying again.`);
67
- }
68
- else if (status == ChildToParentMessageStatus.EXECUTED) {
69
- throw new Error('Arbitrum L2ToL1 message has already been executed');
70
- }
71
- const outboxProof = await this.getArbitrumOutboxProof(reader, arbProvider);
72
- const metadata = {
73
- ...l2ToL1TxEvent,
74
- proof: outboxProof,
75
- };
76
- return metadata;
77
- }
78
- else {
79
- throw new Error('Error in building calldata for Arbitrum native bridge call');
80
- }
81
- }
82
- // waiting period left until the challenge period is over
83
- async getWaitingBlocksUntilReady(reader, provider) {
84
- const firstBlock = await reader.getFirstExecutableBlock(provider);
85
- if (!firstBlock) {
86
- throw new Error('No first executable block found');
87
- }
88
- const currentBlock = BigNumber.from(await provider.getBlockNumber());
89
- if (currentBlock.gt(firstBlock)) {
90
- throw new Error('First executable block is in the past');
91
- }
92
- const waitingPeriod = firstBlock.sub(currentBlock);
93
- return waitingPeriod;
94
- }
95
- async getArbitrumBridgeStatus(reader, provider) {
96
- return reader.status(provider);
97
- }
98
- async getArbitrumOutboxProof(reader, provider) {
99
- const proof = (await reader.getOutboxProof(provider)) ?? [];
100
- if (!proof) {
101
- throw new Error('No outbox proof found');
102
- }
103
- return 'proof' in proof ? proof.proof : proof;
104
- }
105
- static decode(metadata, _) {
106
- const abiCoder = new utils.AbiCoder();
107
- const outboxInterface = IOutbox__factory.createInterface();
108
- const executeTransactionInputs = outboxInterface.functions['executeTransaction(bytes32[],uint256,address,address,uint256,uint256,uint256,uint256,bytes)'].inputs;
109
- const executeTransactionTypes = executeTransactionInputs
110
- .map((input) => input.type)
111
- .filter((_, index, array) => index !== array.length - 2); // remove callvalue from types (because the ArbL2ToL1Ism doesn't allow it)
112
- const decoded = abiCoder.decode(executeTransactionTypes, metadata);
113
- return Object.fromEntries(Object.keys({}).map((key, i) => [key, decoded[i]]));
114
- }
115
- static encodeArbL2ToL1Metadata(metadata) {
116
- const abiCoder = new utils.AbiCoder();
117
- const outboxInterface = IOutbox__factory.createInterface();
118
- const executeTransactionInputs = outboxInterface.functions['executeTransaction(bytes32[],uint256,address,address,uint256,uint256,uint256,uint256,bytes)'].inputs;
119
- const executeTransactionTypes = executeTransactionInputs.map((input) => input.type);
120
- return abiCoder.encode(executeTransactionTypes, [
121
- metadata.proof,
122
- metadata.position,
123
- metadata.caller,
124
- metadata.destination,
125
- metadata.arbBlockNum,
126
- metadata.ethBlockNum,
127
- metadata.timestamp,
128
- metadata.callvalue,
129
- metadata.data,
130
- ]);
131
- }
132
- }
133
- //# sourceMappingURL=arbL2ToL1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arbL2ToL1.js","sourceRoot":"","sources":["../../../src/ism/metadata/arbL2ToL1.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import { HyperlaneCore } from '../../core/HyperlaneCore.js';
2
- import { MultiProvider } from '../../providers/MultiProvider.js';
3
- import { AggregationMetadataBuilder } from './aggregation.js';
4
- import { ArbL2ToL1MetadataBuilder } from './arbL2ToL1.js';
5
- import { OffchainLookupMetadataBuilder } from './ccipread.js';
6
- import { MultisigMetadataBuilder } from './multisig.js';
7
- import { NullMetadataBuilder } from './null.js';
8
- import { DynamicRoutingMetadataBuilder } from './routing.js';
9
- import type { MetadataBuilder, MetadataContext, StructuredMetadata } from './types.js';
10
- export declare class BaseMetadataBuilder implements MetadataBuilder {
11
- nullMetadataBuilder: NullMetadataBuilder;
12
- multisigMetadataBuilder: MultisigMetadataBuilder;
13
- aggregationMetadataBuilder: AggregationMetadataBuilder;
14
- routingMetadataBuilder: DynamicRoutingMetadataBuilder;
15
- arbL2ToL1MetadataBuilder: ArbL2ToL1MetadataBuilder;
16
- ccipReadMetadataBuilder: OffchainLookupMetadataBuilder;
17
- multiProvider: MultiProvider;
18
- protected logger: import("pino").default.Logger<never>;
19
- constructor(core: HyperlaneCore);
20
- build(context: MetadataContext, maxDepth?: number): Promise<string>;
21
- static decode(metadata: string, context: MetadataContext): StructuredMetadata;
22
- }
23
- //# sourceMappingURL=builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/ism/metadata/builder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAM5D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,qBAAa,mBAAoB,YAAW,eAAe;IAClD,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,sBAAsB,EAAE,6BAA6B,CAAC;IACtD,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,uBAAuB,EAAE,6BAA6B,CAAC;IAEvD,aAAa,EAAE,aAAa,CAAC;IACpC,SAAS,CAAC,MAAM,uCAAuD;gBAE3D,IAAI,EAAE,aAAa;IAWzB,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IA0ErE,MAAM,CAAC,MAAM,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,GACvB,kBAAkB;CAGtB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=builder.hardhat-test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.hardhat-test.d.ts","sourceRoot":"","sources":["../../../src/ism/metadata/builder.hardhat-test.ts"],"names":[],"mappings":""}
@@ -1,137 +0,0 @@
1
- import hre from 'hardhat';
2
- import sinon from 'sinon';
3
- import { MerkleTreeHook__factory, } from '@hyperlane-xyz/core';
4
- import { BaseValidator, addressToBytes32, eqAddress, objMap, randomElement, } from '@hyperlane-xyz/utils';
5
- import { testChains } from '../../consts/testChains.js';
6
- import { TestCoreDeployer } from '../../core/TestCoreDeployer.js';
7
- import { TestRecipientDeployer } from '../../core/TestRecipientDeployer.js';
8
- import { HyperlaneProxyFactoryDeployer } from '../../deploy/HyperlaneProxyFactoryDeployer.js';
9
- import { EvmHookModule } from '../../hook/EvmHookModule.js';
10
- import { HookType } from '../../hook/types.js';
11
- import { MultiProvider } from '../../providers/MultiProvider.js';
12
- import { EvmIsmReader } from '../EvmIsmReader.js';
13
- import { randomIsmConfig } from '../HyperlaneIsmFactory.hardhat-test.js';
14
- import { HyperlaneIsmFactory } from '../HyperlaneIsmFactory.js';
15
- import { BaseMetadataBuilder } from './builder.js';
16
- import { decodeIsmMetadata } from './decode.js';
17
- const MAX_ISM_DEPTH = 5;
18
- const MAX_NUM_VALIDATORS = 10;
19
- const NUM_RUNS = 16;
20
- describe('BaseMetadataBuilder', () => {
21
- let core;
22
- let ismFactory;
23
- const merkleHooks = {};
24
- let testRecipients;
25
- let proxyFactoryAddresses;
26
- let factoryContracts;
27
- let relayer;
28
- let validators;
29
- let metadataBuilder;
30
- before(async () => {
31
- [relayer, ...validators] = await hre.ethers.getSigners();
32
- const multiProvider = MultiProvider.createTestMultiProvider({
33
- signer: relayer,
34
- });
35
- const ismFactoryDeployer = new HyperlaneProxyFactoryDeployer(multiProvider);
36
- const contractsMap = await ismFactoryDeployer.deploy(multiProvider.mapKnownChains(() => ({})));
37
- ismFactory = new HyperlaneIsmFactory(contractsMap, multiProvider);
38
- const coreDeployer = new TestCoreDeployer(multiProvider, ismFactory);
39
- const recipientDeployer = new TestRecipientDeployer(multiProvider);
40
- testRecipients = objMap(await recipientDeployer.deploy(Object.fromEntries(testChains.map((c) => [c, {}]))), (_, { testRecipient }) => testRecipient);
41
- core = await coreDeployer.deployApp();
42
- const hookConfig = objMap(core.chainMap, () => ({
43
- type: HookType.MERKLE_TREE,
44
- }));
45
- // deploy hooks
46
- for (const chain of Object.keys(hookConfig)) {
47
- factoryContracts = contractsMap[chain];
48
- proxyFactoryAddresses = Object.keys(factoryContracts).reduce((acc, key) => {
49
- acc[key] =
50
- contractsMap[chain][key].address;
51
- return acc;
52
- }, {});
53
- const hookModule = await EvmHookModule.create({
54
- chain,
55
- config: hookConfig[chain],
56
- proxyFactoryFactories: proxyFactoryAddresses,
57
- coreAddresses: core.getAddresses(chain),
58
- multiProvider,
59
- });
60
- const hookAddress = hookModule.serialize().deployedHook;
61
- const merkleHook = MerkleTreeHook__factory.connect(hookAddress, multiProvider.getProvider(chain));
62
- merkleHooks[multiProvider.getDomainId(chain)] = merkleHook;
63
- }
64
- metadataBuilder = new BaseMetadataBuilder(core);
65
- sinon
66
- .stub(metadataBuilder.multisigMetadataBuilder, 'getS3Checkpoints')
67
- .callsFake(async (multisigAddresses, match) => {
68
- const merkleHook = merkleHooks[match.origin];
69
- const checkpoint = {
70
- root: await merkleHook.root(),
71
- merkle_tree_hook_address: addressToBytes32(merkleHook.address),
72
- index: match.index,
73
- mailbox_domain: match.origin,
74
- };
75
- const checkpointWithId = {
76
- checkpoint,
77
- message_id: match.messageId,
78
- };
79
- const digest = BaseValidator.messageHash(checkpoint, match.messageId);
80
- const checkpoints = [];
81
- for (const validator of multisigAddresses) {
82
- const signature = await validators
83
- .find((s) => eqAddress(s.address, validator))
84
- .signMessage(digest);
85
- checkpoints.push({ value: checkpointWithId, signature });
86
- }
87
- return checkpoints;
88
- });
89
- });
90
- // FIXME: migrate to mocha rules: eslint-disable-next-line jest/no-disabled-tests
91
- describe.skip('#build', () => {
92
- let origin;
93
- let destination;
94
- let context;
95
- let metadata;
96
- beforeEach(async () => {
97
- origin = randomElement(testChains);
98
- destination = randomElement(testChains.filter((c) => c !== origin));
99
- const testRecipient = testRecipients[destination];
100
- const addresses = validators
101
- .map((s) => s.address)
102
- .slice(0, MAX_NUM_VALIDATORS);
103
- const config = randomIsmConfig(MAX_ISM_DEPTH, addresses, relayer.address);
104
- const deployedIsm = await ismFactory.deploy({
105
- destination,
106
- config,
107
- mailbox: core.getAddresses(destination).mailbox,
108
- });
109
- await testRecipient.setInterchainSecurityModule(deployedIsm.address);
110
- const merkleHookAddress = merkleHooks[core.multiProvider.getDomainId(origin)].address;
111
- const { dispatchTx, message } = await core.sendMessage(origin, destination, testRecipient.address, '0xdeadbeef', merkleHookAddress);
112
- const derivedIsm = await new EvmIsmReader(core.multiProvider, destination).deriveIsmConfig(deployedIsm.address);
113
- context = {
114
- hook: {
115
- type: HookType.MERKLE_TREE,
116
- address: merkleHookAddress,
117
- },
118
- ism: derivedIsm,
119
- message,
120
- dispatchTx,
121
- };
122
- metadata = await metadataBuilder.build(context, MAX_ISM_DEPTH);
123
- });
124
- for (let i = 0; i < NUM_RUNS; i++) {
125
- it(`should build valid metadata for random ism config (${i})`, async () => {
126
- // must call process for trusted relayer to be able to verify
127
- await core
128
- .getContracts(destination)
129
- .mailbox.process(metadata, context.message.message);
130
- });
131
- it(`should decode metadata for random ism config (${i})`, async () => {
132
- decodeIsmMetadata(metadata, context);
133
- });
134
- }
135
- });
136
- });
137
- //# sourceMappingURL=builder.hardhat-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.hardhat-test.js","sourceRoot":"","sources":["../../../src/ism/metadata/builder.hardhat-test.ts"],"names":[],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- import { assert, deepFind, rootLogger, } from '@hyperlane-xyz/utils';
2
- import { HookType, } from '../../hook/types.js';
3
- import { IsmType } from '../types.js';
4
- import { AggregationMetadataBuilder } from './aggregation.js';
5
- import { ArbL2ToL1MetadataBuilder } from './arbL2ToL1.js';
6
- import { OffchainLookupMetadataBuilder } from './ccipread.js';
7
- import { decodeIsmMetadata } from './decode.js';
8
- import { MultisigMetadataBuilder } from './multisig.js';
9
- import { NullMetadataBuilder } from './null.js';
10
- import { DynamicRoutingMetadataBuilder } from './routing.js';
11
- export class BaseMetadataBuilder {
12
- nullMetadataBuilder;
13
- multisigMetadataBuilder;
14
- aggregationMetadataBuilder;
15
- routingMetadataBuilder;
16
- arbL2ToL1MetadataBuilder;
17
- ccipReadMetadataBuilder;
18
- multiProvider;
19
- logger = rootLogger.child({ module: 'BaseMetadataBuilder' });
20
- constructor(core) {
21
- this.multisigMetadataBuilder = new MultisigMetadataBuilder(core);
22
- this.aggregationMetadataBuilder = new AggregationMetadataBuilder(this);
23
- this.routingMetadataBuilder = new DynamicRoutingMetadataBuilder(this);
24
- this.nullMetadataBuilder = new NullMetadataBuilder(core.multiProvider);
25
- this.arbL2ToL1MetadataBuilder = new ArbL2ToL1MetadataBuilder(core);
26
- this.ccipReadMetadataBuilder = new OffchainLookupMetadataBuilder(core);
27
- this.multiProvider = core.multiProvider;
28
- }
29
- // assumes that all post dispatch hooks are included in dispatchTx logs
30
- async build(context, maxDepth = 10) {
31
- this.logger.debug({ context, maxDepth }, `Building ${context.ism.type} metadata`);
32
- assert(maxDepth > 0, 'Max depth reached');
33
- const { ism, hook } = context;
34
- switch (ism.type) {
35
- case IsmType.TRUSTED_RELAYER:
36
- case IsmType.TEST_ISM:
37
- case IsmType.OP_STACK:
38
- case IsmType.PAUSABLE:
39
- return this.nullMetadataBuilder.build({ ...context, ism });
40
- case IsmType.MERKLE_ROOT_MULTISIG:
41
- case IsmType.MESSAGE_ID_MULTISIG:
42
- case IsmType.STORAGE_MERKLE_ROOT_MULTISIG:
43
- case IsmType.STORAGE_MESSAGE_ID_MULTISIG:
44
- if (typeof hook === 'string') {
45
- throw new Error('Hook context must be an object (for multisig ISM)');
46
- }
47
- // eslint-disable-next-line no-case-declarations
48
- const merkleTreeHook = deepFind(hook, (v) => v.type === HookType.MERKLE_TREE && !!v.address);
49
- assert(merkleTreeHook, 'Merkle tree hook context not found');
50
- return this.multisigMetadataBuilder.build({
51
- ...context,
52
- ism,
53
- hook: merkleTreeHook,
54
- });
55
- case IsmType.ROUTING:
56
- case IsmType.FALLBACK_ROUTING:
57
- case IsmType.AMOUNT_ROUTING:
58
- case IsmType.INTERCHAIN_ACCOUNT_ROUTING:
59
- return this.routingMetadataBuilder.build({
60
- ...context,
61
- ism,
62
- }, maxDepth);
63
- case IsmType.AGGREGATION:
64
- case IsmType.STORAGE_AGGREGATION:
65
- return this.aggregationMetadataBuilder.build({ ...context, ism }, maxDepth);
66
- case IsmType.ARB_L2_TO_L1: {
67
- const hookConfig = hook;
68
- return this.arbL2ToL1MetadataBuilder.build({
69
- ...context,
70
- ism,
71
- hook: hookConfig,
72
- });
73
- }
74
- case IsmType.OFFCHAIN_LOOKUP:
75
- return this.ccipReadMetadataBuilder.build({
76
- ...context,
77
- ism,
78
- });
79
- default:
80
- throw new Error(`Unsupported ISM: ${JSON.stringify(ism)}`);
81
- }
82
- }
83
- static decode(metadata, context) {
84
- return decodeIsmMetadata(metadata, context);
85
- }
86
- }
87
- //# sourceMappingURL=builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/ism/metadata/builder.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { WithAddress } from '@hyperlane-xyz/utils';
2
- import { HyperlaneCore } from '../../core/HyperlaneCore.js';
3
- import { OffchainLookupIsmConfig } from '../types.js';
4
- import type { MetadataBuilder, MetadataContext } from './types.js';
5
- export declare class OffchainLookupMetadataBuilder implements MetadataBuilder {
6
- readonly type: "offchainLookupIsm";
7
- private core;
8
- constructor(core: HyperlaneCore);
9
- build(context: MetadataContext<WithAddress<OffchainLookupIsmConfig>>): Promise<string>;
10
- }
11
- export declare function offchainLookupRequestMessageHash(sender: string, callData: string, urlTemplate: string): string;
12
- //# sourceMappingURL=ccipread.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ccipread.d.ts","sourceRoot":"","sources":["../../../src/ism/metadata/ccipread.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAY,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAW,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnE,qBAAa,6BAA8B,YAAW,eAAe;IACnE,QAAQ,CAAC,IAAI,sBAA2B;IACxC,OAAO,CAAC,IAAI,CAAgB;gBAEhB,IAAI,EAAE,aAAa;IAIzB,KAAK,CACT,OAAO,EAAE,eAAe,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,GAC7D,OAAO,CAAC,MAAM,CAAC;CAoFnB;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,CAKR"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ccipread.hardhat-test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ccipread.hardhat-test.d.ts","sourceRoot":"","sources":["../../../src/ism/metadata/ccipread.hardhat-test.ts"],"names":[],"mappings":""}