@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.
- package/dist/consts/igp.d.ts +1 -0
- package/dist/consts/igp.d.ts.map +1 -1
- package/dist/consts/igp.js +8 -3
- package/dist/consts/igp.js.map +1 -1
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +23 -148
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/contracts/contracts.d.ts.map +1 -1
- package/dist/contracts/contracts.js +2 -0
- package/dist/contracts/contracts.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts +24 -0
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +38 -3
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/MultiProtocolCore.d.ts.map +1 -1
- package/dist/core/MultiProtocolCore.js +3 -0
- package/dist/core/MultiProtocolCore.js.map +1 -1
- package/dist/core/adapters/AleoCoreAdapter.d.ts +22 -0
- package/dist/core/adapters/AleoCoreAdapter.d.ts.map +1 -0
- package/dist/core/adapters/AleoCoreAdapter.js +33 -0
- package/dist/core/adapters/AleoCoreAdapter.js.map +1 -0
- package/dist/deploy/proxy.d.ts +2 -0
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +10 -4
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/deploy/proxy.test.js +44 -1
- package/dist/deploy/proxy.test.js.map +1 -1
- package/dist/gas/utils.d.ts.map +1 -1
- package/dist/gas/utils.js +11 -8
- package/dist/gas/utils.js.map +1 -1
- package/dist/index.d.ts +7 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -7
- package/dist/index.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts +1 -3
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +6 -96
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/multisig.js +2 -2
- package/dist/ism/multisig.js.map +1 -1
- package/dist/ism/utils.d.ts +1 -0
- package/dist/ism/utils.d.ts.map +1 -1
- package/dist/ism/utils.js +4 -1
- package/dist/ism/utils.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +16 -16
- package/dist/metadata/blockExplorer.d.ts.map +1 -1
- package/dist/metadata/blockExplorer.js +2 -0
- package/dist/metadata/blockExplorer.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts +21 -1
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +120 -8
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.test.d.ts +2 -0
- package/dist/middleware/account/InterchainAccount.test.d.ts.map +1 -0
- package/dist/middleware/account/InterchainAccount.test.js +279 -0
- package/dist/middleware/account/InterchainAccount.test.js.map +1 -0
- package/dist/middleware/account/types.d.ts +37 -3
- package/dist/middleware/account/types.d.ts.map +1 -1
- package/dist/middleware/account/types.js +8 -3
- package/dist/middleware/account/types.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +26 -4
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +59 -5
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/providers/transactions/submitter/IcaTxSubmitter.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/IcaTxSubmitter.js +4 -1
- package/dist/providers/transactions/submitter/IcaTxSubmitter.js.map +1 -1
- package/dist/test/testUtils.d.ts +9 -2
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +99 -3
- package/dist/test/testUtils.js.map +1 -1
- package/dist/token/Token.d.ts.map +1 -1
- package/dist/token/Token.js +21 -0
- package/dist/token/Token.js.map +1 -1
- package/dist/token/adapters/AleoTokenAdapter.d.ts +60 -0
- package/dist/token/adapters/AleoTokenAdapter.d.ts.map +1 -0
- package/dist/token/adapters/AleoTokenAdapter.js +190 -0
- package/dist/token/adapters/AleoTokenAdapter.js.map +1 -0
- package/dist/token/adapters/EvmTokenAdapter.d.ts +26 -9
- package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.js +36 -31
- package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
- package/dist/token/adapters/ITokenAdapter.d.ts +5 -2
- package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/utils.d.ts +7 -0
- package/dist/token/adapters/utils.d.ts.map +1 -0
- package/dist/token/adapters/utils.js +4 -0
- package/dist/token/adapters/utils.js.map +1 -0
- package/dist/utils/gas.d.ts +29 -0
- package/dist/utils/gas.d.ts.map +1 -0
- package/dist/utils/gas.js +34 -0
- package/dist/utils/gas.js.map +1 -0
- package/package.json +11 -11
- package/dist/core/HyperlaneRelayer.d.ts +0 -600
- package/dist/core/HyperlaneRelayer.d.ts.map +0 -1
- package/dist/core/HyperlaneRelayer.js +0 -257
- package/dist/core/HyperlaneRelayer.js.map +0 -1
- package/dist/ism/metadata/aggregation.d.ts +0 -23
- package/dist/ism/metadata/aggregation.d.ts.map +0 -1
- package/dist/ism/metadata/aggregation.js +0 -92
- package/dist/ism/metadata/aggregation.js.map +0 -1
- package/dist/ism/metadata/aggregation.test.d.ts +0 -2
- package/dist/ism/metadata/aggregation.test.d.ts.map +0 -1
- package/dist/ism/metadata/aggregation.test.js +0 -37
- package/dist/ism/metadata/aggregation.test.js.map +0 -1
- package/dist/ism/metadata/arbL2ToL1.d.ts +0 -25
- package/dist/ism/metadata/arbL2ToL1.d.ts.map +0 -1
- package/dist/ism/metadata/arbL2ToL1.hardhat-test.d.ts +0 -2
- package/dist/ism/metadata/arbL2ToL1.hardhat-test.d.ts.map +0 -1
- package/dist/ism/metadata/arbL2ToL1.hardhat-test.js +0 -167
- package/dist/ism/metadata/arbL2ToL1.hardhat-test.js.map +0 -1
- package/dist/ism/metadata/arbL2ToL1.js +0 -133
- package/dist/ism/metadata/arbL2ToL1.js.map +0 -1
- package/dist/ism/metadata/builder.d.ts +0 -23
- package/dist/ism/metadata/builder.d.ts.map +0 -1
- package/dist/ism/metadata/builder.hardhat-test.d.ts +0 -2
- package/dist/ism/metadata/builder.hardhat-test.d.ts.map +0 -1
- package/dist/ism/metadata/builder.hardhat-test.js +0 -137
- package/dist/ism/metadata/builder.hardhat-test.js.map +0 -1
- package/dist/ism/metadata/builder.js +0 -87
- package/dist/ism/metadata/builder.js.map +0 -1
- package/dist/ism/metadata/ccipread.d.ts +0 -12
- package/dist/ism/metadata/ccipread.d.ts.map +0 -1
- package/dist/ism/metadata/ccipread.hardhat-test.d.ts +0 -2
- package/dist/ism/metadata/ccipread.hardhat-test.d.ts.map +0 -1
- package/dist/ism/metadata/ccipread.hardhat-test.js +0 -98
- package/dist/ism/metadata/ccipread.hardhat-test.js.map +0 -1
- package/dist/ism/metadata/ccipread.js +0 -73
- package/dist/ism/metadata/ccipread.js.map +0 -1
- package/dist/ism/metadata/decode.d.ts +0 -3
- package/dist/ism/metadata/decode.d.ts.map +0 -1
- package/dist/ism/metadata/decode.js +0 -34
- package/dist/ism/metadata/decode.js.map +0 -1
- package/dist/ism/metadata/multisig.d.ts +0 -57
- package/dist/ism/metadata/multisig.d.ts.map +0 -1
- package/dist/ism/metadata/multisig.js +0 -186
- package/dist/ism/metadata/multisig.js.map +0 -1
- package/dist/ism/metadata/multisig.test.d.ts +0 -2
- package/dist/ism/metadata/multisig.test.d.ts.map +0 -1
- package/dist/ism/metadata/multisig.test.js +0 -56
- package/dist/ism/metadata/multisig.test.js.map +0 -1
- package/dist/ism/metadata/null.d.ts +0 -15
- package/dist/ism/metadata/null.d.ts.map +0 -1
- package/dist/ism/metadata/null.js +0 -20
- package/dist/ism/metadata/null.js.map +0 -1
- package/dist/ism/metadata/routing.d.ts +0 -22
- package/dist/ism/metadata/routing.d.ts.map +0 -1
- package/dist/ism/metadata/routing.js +0 -72
- package/dist/ism/metadata/routing.js.map +0 -1
- package/dist/ism/metadata/types.d.ts +0 -20
- package/dist/ism/metadata/types.d.ts.map +0 -1
- package/dist/ism/metadata/types.js +0 -2
- package/dist/ism/metadata/types.js.map +0 -1
- package/dist/ism/metadata/types.test.d.ts +0 -5
- package/dist/ism/metadata/types.test.d.ts.map +0 -1
- package/dist/ism/metadata/types.test.js +0 -2
- 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 +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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ccipread.hardhat-test.d.ts","sourceRoot":"","sources":["../../../src/ism/metadata/ccipread.hardhat-test.ts"],"names":[],"mappings":""}
|