@hyperlane-xyz/sdk 1.5.7-beta1 → 3.0.0-beta0
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/chainMetadata.d.ts +3 -0
- package/dist/consts/chainMetadata.d.ts.map +1 -1
- package/dist/consts/chainMetadata.js +99 -11
- package/dist/consts/chainMetadata.js.map +1 -1
- package/dist/consts/chains.d.ts +3 -0
- package/dist/consts/chains.d.ts.map +1 -1
- package/dist/consts/chains.js +8 -0
- package/dist/consts/chains.js.map +1 -1
- package/dist/consts/environments/index.d.ts +1135 -407
- package/dist/consts/environments/index.d.ts.map +1 -1
- package/dist/consts/environments/index.js +1 -6
- package/dist/consts/environments/index.js.map +1 -1
- package/dist/consts/environments/mainnet.json +827 -131
- package/dist/consts/environments/testnet.json +362 -19
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +73 -59
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/contracts/contracts.d.ts +8 -3
- package/dist/contracts/contracts.d.ts.map +1 -1
- package/dist/contracts/contracts.js +39 -9
- package/dist/contracts/contracts.js.map +1 -1
- package/dist/core/CoreDeployer.hardhat-test.js +62 -10
- package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +1 -0
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/HyperlaneCoreChecker.js +1 -1
- package/dist/core/HyperlaneCoreChecker.js.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.js +19 -16
- package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/core/MultiProtocolCore.test.js +53 -2
- package/dist/core/MultiProtocolCore.test.js.map +1 -1
- package/dist/core/TestCoreDeployer.d.ts +1 -5
- package/dist/core/TestCoreDeployer.d.ts.map +1 -1
- package/dist/core/TestCoreDeployer.js +0 -20
- package/dist/core/TestCoreDeployer.js.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.d.ts +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.js +9 -4
- package/dist/core/adapters/SealevelCoreAdapter.js.map +1 -1
- package/dist/core/testHyperlaneDeploy.hardhat-test.js +5 -1
- package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts +1 -0
- package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.js +25 -2
- package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +9 -4
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +85 -66
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneProxyFactoryDeployer.js +8 -4
- package/dist/deploy/HyperlaneProxyFactoryDeployer.js.map +1 -1
- package/dist/deploy/proxy.d.ts +1 -0
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +8 -1
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
- package/dist/deploy/verify/ContractVerifier.js +7 -2
- package/dist/deploy/verify/ContractVerifier.js.map +1 -1
- package/dist/gas/HyperlaneIgp.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgp.js +1 -0
- package/dist/gas/HyperlaneIgp.js.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.js +15 -5
- package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.js +2 -1
- package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.d.ts +12 -2
- package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.js +99 -13
- package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
- package/dist/hook/contracts.d.ts +4 -1
- package/dist/hook/contracts.d.ts.map +1 -1
- package/dist/hook/contracts.js +4 -1
- package/dist/hook/contracts.js.map +1 -1
- package/dist/hook/types.d.ts +24 -2
- package/dist/hook/types.d.ts.map +1 -1
- package/dist/hook/types.js +3 -0
- package/dist/hook/types.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts +3 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +3 -3
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +87 -26
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/types.d.ts +24 -7
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js +33 -1
- package/dist/ism/types.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +92 -92
- package/dist/metadata/matchingList.d.ts +12 -12
- package/dist/metadata/matchingList.d.ts.map +1 -1
- package/dist/metadata/matchingList.js +1 -5
- package/dist/metadata/matchingList.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +4 -1
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/middleware/account/accounts.hardhat-test.js +5 -1
- package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js +5 -1
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js.map +1 -1
- package/dist/middleware/query/InterchainQuery.d.ts.map +1 -1
- package/dist/middleware/query/InterchainQuery.js +1 -0
- package/dist/middleware/query/InterchainQuery.js.map +1 -1
- package/dist/middleware/query/queries.hardhat-test.js +5 -1
- package/dist/middleware/query/queries.hardhat-test.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +1 -1
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +1 -1
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/router/HyperlaneRouterChecker.d.ts +5 -1
- package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterChecker.js +41 -6
- package/dist/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/router/RouterApps.d.ts +7 -1
- package/dist/router/RouterApps.d.ts.map +1 -1
- package/dist/router/RouterApps.js +17 -0
- package/dist/router/RouterApps.js.map +1 -1
- package/dist/router/types.d.ts +12 -1
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +5 -1
- package/dist/router/types.js.map +1 -1
- package/dist/test/testUtils.d.ts +1 -1
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +15 -37
- package/dist/test/testUtils.js.map +1 -1
- package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/SealevelTokenAdapter.js +13 -1
- package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -1
- package/dist/token/config.d.ts +6 -3
- package/dist/token/config.d.ts.map +1 -1
- package/dist/token/config.js +11 -3
- package/dist/token/config.js.map +1 -1
- package/dist/token/contracts.d.ts +2 -2
- package/dist/token/contracts.d.ts.map +1 -1
- package/dist/token/deploy.d.ts +1 -1
- package/dist/token/deploy.d.ts.map +1 -1
- package/dist/token/deploy.js +21 -2
- package/dist/token/deploy.js.map +1 -1
- package/package.json +3 -3
- package/dist/consts/environments/testnet-sealevel.json +0 -19
- package/logos/black/base.svg +0 -12
- package/logos/black/polygonzkevm.svg +0 -49
- package/logos/black/scroll.svg +0 -66
- package/logos/color/base.svg +0 -18
- package/logos/color/polygonzkevm.svg +0 -22
- package/logos/color/scroll.svg +0 -36
|
@@ -1,31 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TestCoreDeployer = void 0;
|
|
4
|
-
const core_1 = require("@hyperlane-xyz/core");
|
|
5
4
|
const chains_1 = require("../consts/chains");
|
|
6
|
-
const HyperlaneIsmFactory_1 = require("../ism/HyperlaneIsmFactory");
|
|
7
5
|
const testUtils_1 = require("../test/testUtils");
|
|
8
6
|
const HyperlaneCoreDeployer_1 = require("./HyperlaneCoreDeployer");
|
|
9
7
|
const TestCoreApp_1 = require("./TestCoreApp");
|
|
10
|
-
const contracts_1 = require("./contracts");
|
|
11
|
-
const testCoreFactories = {
|
|
12
|
-
...contracts_1.coreFactories,
|
|
13
|
-
mailbox: new core_1.TestMailbox__factory(),
|
|
14
|
-
interchainGasPaymaster: new core_1.TestInterchainGasPaymaster__factory(),
|
|
15
|
-
testIsm: new core_1.TestMultisigIsm__factory(),
|
|
16
|
-
};
|
|
17
8
|
class TestCoreDeployer extends HyperlaneCoreDeployer_1.HyperlaneCoreDeployer {
|
|
18
|
-
constructor(multiProvider) {
|
|
19
|
-
const ismFactory = new HyperlaneIsmFactory_1.HyperlaneIsmFactory({}, multiProvider);
|
|
20
|
-
super(multiProvider, ismFactory);
|
|
21
|
-
this.multiProvider = multiProvider;
|
|
22
|
-
}
|
|
23
|
-
// deploy a test ISM instead of a real ISM
|
|
24
|
-
async deployIsm(chain) {
|
|
25
|
-
const testIsm = await this.deployContractFromFactory(chain, testCoreFactories.testIsm, 'testIsm', []);
|
|
26
|
-
await testIsm.setAccept(true);
|
|
27
|
-
return testIsm.address;
|
|
28
|
-
}
|
|
29
9
|
async deploy() {
|
|
30
10
|
return super.deploy((0, testUtils_1.testCoreConfig)(chains_1.TestChains));
|
|
31
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestCoreDeployer.js","sourceRoot":"","sources":["../../src/core/TestCoreDeployer.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"TestCoreDeployer.js","sourceRoot":"","sources":["../../src/core/TestCoreDeployer.ts"],"names":[],"mappings":";;;AAAA,6CAA8C;AAE9C,iDAAmD;AAGnD,mEAAgE;AAChE,+CAA4C;AAG5C,MAAa,gBAAiB,SAAQ,6CAAqB;IACzD,KAAK,CAAC,MAAM;QACV,OAAO,KAAK,CAAC,MAAM,CAAC,IAAA,0BAAc,EAAC,mBAAU,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,yBAAW,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;CACF;AARD,4CAQC"}
|
|
@@ -28,6 +28,6 @@ export declare class SealevelCoreAdapter extends BaseSealevelAdapter implements
|
|
|
28
28
|
static deriveMailboxDispatchedMessagePda(mailboxProgramId: string | PublicKey, uniqueMessageAccount: string | PublicKey): PublicKey;
|
|
29
29
|
static deriveMailboxDispatchAuthorityPda(programId: string | PublicKey): PublicKey;
|
|
30
30
|
static deriveMailboxProcessAuthorityPda(mailboxProgramId: string | PublicKey, recipient: string | PublicKey): PublicKey;
|
|
31
|
-
static deriveMailboxMessageProcessedPda(mailboxProgramId: string | PublicKey, messageId:
|
|
31
|
+
static deriveMailboxMessageProcessedPda(mailboxProgramId: string | PublicKey, messageId: HexString): PublicKey;
|
|
32
32
|
}
|
|
33
33
|
//# sourceMappingURL=SealevelCoreAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SealevelCoreAdapter.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/SealevelCoreAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"SealevelCoreAdapter.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/SealevelCoreAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EACL,OAAO,EACP,SAAS,EAIV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAEL,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKvC,qBAAa,mBACX,SAAQ,mBACR,YAAW,YAAY;aAGL,SAAS,EAAE,SAAS;aACpB,aAAa,EAAE,qBAAqB;aACpC,SAAS,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;gBAF/B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,qBAAqB,EACpC,SAAS,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;IAKjD,iBAAiB,CACf,QAAQ,EAAE,uBAAuB,GAChC,KAAK,CAAC;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,WAAW,EAAE,SAAS,CAAA;KAAE,CAAC;IAiBpD,uBAAuB,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,SAAS,EACtB,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAoBhB,MAAM,CAAC,wBAAwB,CAC7B,IAAI,EAAE,MAAM,EAAE,GACb,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAepD,MAAM,CAAC,qBAAqB,CAC1B,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,SAAS;IAIZ,MAAM,CAAC,sBAAsB,CAC3B,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,SAAS;IAIZ,MAAM,CAAC,iCAAiC,CACtC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,oBAAoB,EAAE,MAAM,GAAG,SAAS,GACvC,SAAS;IAaZ,MAAM,CAAC,iCAAiC,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,SAAS;IAOZ,MAAM,CAAC,gCAAgC,CACrC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,SAAS;IAaZ,MAAM,CAAC,gCAAgC,CACrC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,SAAS,EAAE,SAAS,GACnB,SAAS;CAYb"}
|
|
@@ -18,15 +18,14 @@ class SealevelCoreAdapter extends MultiProtocolApp_1.BaseSealevelAdapter {
|
|
|
18
18
|
if (sourceTx.type !== ProviderType_1.ProviderType.SolanaWeb3) {
|
|
19
19
|
throw new Error(`Unsupported provider type for SealevelCoreAdapter ${sourceTx.type}`);
|
|
20
20
|
}
|
|
21
|
-
const
|
|
22
|
-
const logs = receipt.meta?.logMessages;
|
|
21
|
+
const logs = sourceTx.receipt.meta?.logMessages;
|
|
23
22
|
if (!logs)
|
|
24
23
|
throw new Error('Transaction logs required to check message delivery');
|
|
25
24
|
const parsedLogs = SealevelCoreAdapter.parseMessageDispatchLogs(logs);
|
|
26
25
|
if (!parsedLogs.length)
|
|
27
26
|
throw new Error('Message dispatch log not found');
|
|
28
27
|
return parsedLogs.map(({ destination, messageId }) => ({
|
|
29
|
-
messageId:
|
|
28
|
+
messageId: (0, utils_1.ensure0x)(messageId),
|
|
30
29
|
destination: this.multiProvider.getChainName(destination),
|
|
31
30
|
}));
|
|
32
31
|
}
|
|
@@ -86,7 +85,13 @@ class SealevelCoreAdapter extends MultiProtocolApp_1.BaseSealevelAdapter {
|
|
|
86
85
|
], mailboxProgramId);
|
|
87
86
|
}
|
|
88
87
|
static deriveMailboxMessageProcessedPda(mailboxProgramId, messageId) {
|
|
89
|
-
return super.derivePda([
|
|
88
|
+
return super.derivePda([
|
|
89
|
+
'hyperlane',
|
|
90
|
+
'-',
|
|
91
|
+
'processed_message',
|
|
92
|
+
'-',
|
|
93
|
+
Buffer.from((0, utils_1.strip0x)(messageId), 'hex'),
|
|
94
|
+
], mailboxProgramId);
|
|
90
95
|
}
|
|
91
96
|
}
|
|
92
97
|
exports.SealevelCoreAdapter = SealevelCoreAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SealevelCoreAdapter.js","sourceRoot":"","sources":["../../../src/core/adapters/SealevelCoreAdapter.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE5C,
|
|
1
|
+
{"version":3,"file":"SealevelCoreAdapter.js","sourceRoot":"","sources":["../../../src/core/adapters/SealevelCoreAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ const hardhat_1 = require("hardhat");
|
|
|
7
7
|
const core_1 = require("@hyperlane-xyz/core");
|
|
8
8
|
const utils_1 = require("@hyperlane-xyz/utils");
|
|
9
9
|
const chains_1 = require("../consts/chains");
|
|
10
|
+
const HyperlaneProxyFactoryDeployer_1 = require("../deploy/HyperlaneProxyFactoryDeployer");
|
|
11
|
+
const HyperlaneIsmFactory_1 = require("../ism/HyperlaneIsmFactory");
|
|
10
12
|
const MultiProvider_1 = require("../providers/MultiProvider");
|
|
11
13
|
const TestCoreDeployer_1 = require("./TestCoreDeployer");
|
|
12
14
|
const localChain = chains_1.Chains.test1;
|
|
@@ -17,7 +19,9 @@ describe('TestCoreDeployer', async () => {
|
|
|
17
19
|
beforeEach(async () => {
|
|
18
20
|
const [signer] = await hardhat_1.ethers.getSigners();
|
|
19
21
|
const multiProvider = MultiProvider_1.MultiProvider.createTestMultiProvider({ signer });
|
|
20
|
-
const
|
|
22
|
+
const ismFactoryDeployer = new HyperlaneProxyFactoryDeployer_1.HyperlaneProxyFactoryDeployer(multiProvider);
|
|
23
|
+
const ismFactory = new HyperlaneIsmFactory_1.HyperlaneIsmFactory(await ismFactoryDeployer.deploy(multiProvider.mapKnownChains(() => ({}))), multiProvider);
|
|
24
|
+
const deployer = new TestCoreDeployer_1.TestCoreDeployer(multiProvider, ismFactory);
|
|
21
25
|
testCoreApp = await deployer.deployApp();
|
|
22
26
|
const recipient = await new core_1.TestRecipient__factory(signer).deploy();
|
|
23
27
|
localMailbox = testCoreApp.getContracts(localChain).mailbox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testHyperlaneDeploy.hardhat-test.js","sourceRoot":"","sources":["../../src/core/testHyperlaneDeploy.hardhat-test.ts"],"names":[],"mappings":";;AAAA,qCAAmC;AACnC,qCAAmC;AACnC,+BAA8B;AAE9B,qCAAiC;AAEjC,8CAA0E;AAC1E,gDAAwD;AAExD,6CAA0C;AAC1C,8DAA2D;AAG3D,yDAAsD;AAEtD,MAAM,UAAU,GAAG,eAAM,CAAC,KAAK,CAAC;AAChC,MAAM,WAAW,GAAG,eAAM,CAAC,KAAK,CAAC;AACjC,MAAM,OAAO,GAAG,YAAY,CAAC;AAE7B,QAAQ,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;IACtC,IAAI,WAAwB,EAC1B,YAAyB,EACzB,aAA0B,EAC1B,eAAgC,CAAC;IAEnC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,gBAAM,CAAC,UAAU,EAAE,CAAC;QAE3C,MAAM,aAAa,GAAG,6BAAa,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"testHyperlaneDeploy.hardhat-test.js","sourceRoot":"","sources":["../../src/core/testHyperlaneDeploy.hardhat-test.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -23,8 +23,8 @@ export declare enum MailboxViolationType {
|
|
|
23
23
|
}
|
|
24
24
|
export interface MailboxViolation extends CheckerViolation {
|
|
25
25
|
type: CoreViolationType.Mailbox;
|
|
26
|
+
subType: MailboxViolationType;
|
|
26
27
|
contract: Mailbox;
|
|
27
|
-
mailboxType: MailboxViolationType;
|
|
28
28
|
}
|
|
29
29
|
export interface MailboxMultisigIsmViolation extends MailboxViolation {
|
|
30
30
|
actual: Address;
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,SAAS,CAAC;IACtB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;CACxC;AAED,oBAAY,oBAAoB;IAC9B,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAChC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,SAAS,CAAC;IACtB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;CACxC;AAED,oBAAY,oBAAoB;IAC9B,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAChC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,2BAA4B,SAAQ,gBAAgB;IACnE,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB;IAClE,IAAI,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;IAC1C,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC"}
|
|
@@ -24,5 +24,6 @@ export declare abstract class HyperlaneAppChecker<App extends HyperlaneApp<any>,
|
|
|
24
24
|
protected checkOwnership(chain: ChainName, owner: Address, ownableOverrides?: Record<string, Address>): Promise<void>;
|
|
25
25
|
expectViolations(violationCounts: Record<string, number>): void;
|
|
26
26
|
expectEmpty(): void;
|
|
27
|
+
logViolationsTable(): void;
|
|
27
28
|
}
|
|
28
29
|
//# sourceMappingURL=HyperlaneAppChecker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneAppChecker.d.ts","sourceRoot":"","sources":["../../src/deploy/HyperlaneAppChecker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAA+B,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,OAAO,
|
|
1
|
+
{"version":3,"file":"HyperlaneAppChecker.d.ts","sourceRoot":"","sources":["../../src/deploy/HyperlaneAppChecker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAA+B,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,OAAO,EAMR,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAuB,MAAM,SAAS,CAAC;AAC7D,OAAO,EAGL,gBAAgB,EAKjB,MAAM,SAAS,CAAC;AAEjB,8BAAsB,mBAAmB,CACvC,GAAG,SAAS,YAAY,CAAC,GAAG,CAAC,EAC7B,MAAM;IAEN,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC;gBAGtC,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC;IAQ7B,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9C,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAsB9B,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAIzC,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BtD,YAAY,CAChB,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC;IAkDhB,OAAO,CAAC,sBAAsB;IAOxB,aAAa,CACjB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,sBAAsB,EAAE,MAAM,EAAE,EAChC,yBAAyB,GAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAiB,GACjE,OAAO,CAAC,IAAI,CAAC;IAiBV,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;cAKrD,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,OAAO,EACd,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC;IAmBhB,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAgB/D,WAAW,IAAI,IAAI;IAKnB,kBAAkB,IAAI,IAAI;CAmB3B"}
|
|
@@ -16,14 +16,17 @@ class HyperlaneAppChecker {
|
|
|
16
16
|
}
|
|
17
17
|
async check() {
|
|
18
18
|
Object.keys(this.configMap)
|
|
19
|
-
.filter((
|
|
19
|
+
.filter((chain) => this.multiProvider.getChainMetadata(chain).protocol ===
|
|
20
|
+
utils_2.ProtocolType.Ethereum && !this.app.chains().includes(chain))
|
|
20
21
|
.forEach((chain) => this.addViolation({
|
|
21
22
|
type: types_1.ViolationType.NotDeployed,
|
|
22
23
|
chain,
|
|
23
24
|
expected: '',
|
|
24
25
|
actual: '',
|
|
25
26
|
}));
|
|
26
|
-
return Promise.all(
|
|
27
|
+
return Promise.all(
|
|
28
|
+
// this.app.chains() will only return Ethereum chains that can be interacted with.
|
|
29
|
+
this.app.chains().map((chain) => this.checkChain(chain)));
|
|
27
30
|
}
|
|
28
31
|
addViolation(violation) {
|
|
29
32
|
this.violations.push(violation);
|
|
@@ -148,6 +151,26 @@ class HyperlaneAppChecker {
|
|
|
148
151
|
const count = this.violations.length;
|
|
149
152
|
(0, utils_2.assert)(count === 0, `Found ${count} violations`);
|
|
150
153
|
}
|
|
154
|
+
logViolationsTable() {
|
|
155
|
+
const violations = this.violations;
|
|
156
|
+
if (violations.length > 0) {
|
|
157
|
+
// eslint-disable-next-line no-console
|
|
158
|
+
console.table(violations, [
|
|
159
|
+
'chain',
|
|
160
|
+
'remote',
|
|
161
|
+
'name',
|
|
162
|
+
'type',
|
|
163
|
+
'subType',
|
|
164
|
+
'actual',
|
|
165
|
+
'expected',
|
|
166
|
+
'description',
|
|
167
|
+
]);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// eslint-disable-next-line no-console
|
|
171
|
+
console.info(`${module} Checker found no violations`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
151
174
|
}
|
|
152
175
|
exports.HyperlaneAppChecker = HyperlaneAppChecker;
|
|
153
176
|
//# sourceMappingURL=HyperlaneAppChecker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneAppChecker.js","sourceRoot":"","sources":["../../src/deploy/HyperlaneAppChecker.ts"],"names":[],"mappings":";;;AAAA,4CAA6C;AAE7C,8CAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"HyperlaneAppChecker.js","sourceRoot":"","sources":["../../src/deploy/HyperlaneAppChecker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Debugger } from 'debug';
|
|
2
|
-
import { Contract, ethers } from 'ethers';
|
|
2
|
+
import { Contract, PopulatedTransaction, ethers } from 'ethers';
|
|
3
3
|
import { MailboxClient, Ownable, ProxyAdmin, TimelockController, TransparentUpgradeableProxy } from '@hyperlane-xyz/core';
|
|
4
4
|
import { Address } from '@hyperlane-xyz/utils';
|
|
5
5
|
import { HyperlaneAddressesMap, HyperlaneContracts, HyperlaneContractsMap, HyperlaneFactories } from '../contracts/types';
|
|
6
6
|
import { HyperlaneIsmFactory } from '../ism/HyperlaneIsmFactory';
|
|
7
|
+
import { IsmConfig } from '../ism/types';
|
|
7
8
|
import { MultiProvider } from '../providers/MultiProvider';
|
|
8
9
|
import { MailboxClientConfig } from '../router/types';
|
|
9
10
|
import { ChainMap, ChainName } from '../types';
|
|
@@ -18,24 +19,27 @@ export declare abstract class HyperlaneDeployer<Config, Factories extends Hyperl
|
|
|
18
19
|
protected readonly multiProvider: MultiProvider;
|
|
19
20
|
protected readonly factories: Factories;
|
|
20
21
|
protected readonly options?: DeployerOptions | undefined;
|
|
22
|
+
protected readonly recoverVerificationInputs: boolean;
|
|
21
23
|
verificationInputs: ChainMap<ContractVerificationInput[]>;
|
|
22
24
|
cachedAddresses: HyperlaneAddressesMap<any>;
|
|
23
25
|
deployedContracts: HyperlaneContractsMap<Factories>;
|
|
24
26
|
startingBlockNumbers: ChainMap<number | undefined>;
|
|
25
27
|
protected logger: Debugger;
|
|
26
28
|
protected chainTimeoutMs: number;
|
|
27
|
-
constructor(multiProvider: MultiProvider, factories: Factories, options?: DeployerOptions | undefined);
|
|
29
|
+
constructor(multiProvider: MultiProvider, factories: Factories, options?: DeployerOptions | undefined, recoverVerificationInputs?: boolean);
|
|
28
30
|
cacheAddressesMap(addressesMap: HyperlaneAddressesMap<any>): void;
|
|
29
31
|
checkConfig(_: ChainMap<Config>): Promise<void>;
|
|
30
32
|
abstract deployContracts(chain: ChainName, config: Config): Promise<HyperlaneContracts<Factories>>;
|
|
31
33
|
deploy(configMap: ChainMap<Config>): Promise<HyperlaneContractsMap<Factories>>;
|
|
32
|
-
protected addDeployedContracts(chain: ChainName, contracts: HyperlaneContracts<any
|
|
34
|
+
protected addDeployedContracts(chain: ChainName, contracts: HyperlaneContracts<any>, verificationInputs?: ContractVerificationInput[]): void;
|
|
35
|
+
protected addVerificationArtifacts(chain: ChainName, artifacts: ContractVerificationInput[]): void;
|
|
33
36
|
protected runIf<T>(chain: ChainName, address: string, fn: () => Promise<T>, label?: string): Promise<T | undefined>;
|
|
34
37
|
protected runIfOwner<T>(chain: ChainName, ownable: Ownable, fn: () => Promise<T>): Promise<T | undefined>;
|
|
35
38
|
protected runIfAdmin<T>(chain: ChainName, proxy: Contract, signerAdminFn: () => Promise<T>, proxyAdminOwnerFn: (proxyAdmin: ProxyAdmin) => Promise<T>): Promise<T | undefined>;
|
|
39
|
+
protected configureIsm<C extends Ownable>(chain: ChainName, contract: C, config: IsmConfig, getIsm: (contract: C) => Promise<Address>, setIsm: (contract: C, ism: Address) => Promise<PopulatedTransaction>): Promise<void>;
|
|
40
|
+
protected configureHook<C extends Ownable>(chain: ChainName, contract: C, targetHook: Address, getHook: (contract: C) => Promise<Address>, setHook: (contract: C, hook: Address) => Promise<PopulatedTransaction>): Promise<void>;
|
|
36
41
|
protected initMailboxClient(local: ChainName, client: MailboxClient, config: MailboxClientConfig): Promise<void>;
|
|
37
42
|
protected deployContractFromFactory<F extends ethers.ContractFactory>(chain: ChainName, factory: F, contractName: string, constructorArgs: Parameters<F['deploy']>, initializeArgs?: Parameters<Awaited<ReturnType<F['deploy']>>['initialize']>): Promise<ReturnType<F['deploy']>>;
|
|
38
|
-
protected addVerificationArtifact(chain: ChainName, artifact: ContractVerificationInput): void;
|
|
39
43
|
deployContract<K extends keyof Factories>(chain: ChainName, contractName: K, constructorArgs: Parameters<Factories[K]['deploy']>, initializeArgs?: Parameters<Awaited<ReturnType<Factories[K]['deploy']>>['initialize']>): Promise<HyperlaneContracts<Factories>[K]>;
|
|
40
44
|
protected changeAdmin(chain: ChainName, proxy: TransparentUpgradeableProxy, admin: string): Promise<void>;
|
|
41
45
|
protected upgradeAndInitialize<C extends ethers.Contract>(chain: ChainName, proxy: TransparentUpgradeableProxy, implementation: C, initializeArgs: Parameters<C['initialize']>): Promise<void>;
|
|
@@ -43,6 +47,7 @@ export declare abstract class HyperlaneDeployer<Config, Factories extends Hyperl
|
|
|
43
47
|
deployTimelock(chain: ChainName, timelockConfig: UpgradeConfig['timelock']): Promise<TimelockController>;
|
|
44
48
|
writeCache<K extends keyof Factories>(chain: ChainName, contractName: K, address: Address): void;
|
|
45
49
|
readCache<F extends ethers.ContractFactory>(chain: ChainName, factory: F, contractName: string): Awaited<ReturnType<F['deploy']>> | undefined;
|
|
50
|
+
recoverVerificationArtifacts<C extends ethers.Contract>(chain: ChainName, contractName: string, cachedContract: C, constructorArgs: Parameters<C['deploy']>, initializeArgs?: Parameters<C['initialize']>): Promise<ContractVerificationInput[]>;
|
|
46
51
|
/**
|
|
47
52
|
* Deploys the Implementation and Proxy for a given contract
|
|
48
53
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneDeployer.d.ts","sourceRoot":"","sources":["../../src/deploy/HyperlaneDeployer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAS,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"HyperlaneDeployer.d.ts","sourceRoot":"","sources":["../../src/deploy/HyperlaneDeployer.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,10 +9,11 @@ const HyperlaneIsmFactory_1 = require("../ism/HyperlaneIsmFactory");
|
|
|
9
9
|
const proxy_1 = require("./proxy");
|
|
10
10
|
const utils_2 = require("./verify/utils");
|
|
11
11
|
class HyperlaneDeployer {
|
|
12
|
-
constructor(multiProvider, factories, options) {
|
|
12
|
+
constructor(multiProvider, factories, options, recoverVerificationInputs = false) {
|
|
13
13
|
this.multiProvider = multiProvider;
|
|
14
14
|
this.factories = factories;
|
|
15
15
|
this.options = options;
|
|
16
|
+
this.recoverVerificationInputs = recoverVerificationInputs;
|
|
16
17
|
this.verificationInputs = {};
|
|
17
18
|
this.cachedAddresses = {};
|
|
18
19
|
this.deployedContracts = {};
|
|
@@ -28,7 +29,9 @@ class HyperlaneDeployer {
|
|
|
28
29
|
}
|
|
29
30
|
async deploy(configMap) {
|
|
30
31
|
const configChains = Object.keys(configMap);
|
|
31
|
-
const
|
|
32
|
+
const ethereumConfigChains = configChains.filter((chain) => this.multiProvider.getChainMetadata(chain).protocol ===
|
|
33
|
+
utils_1.ProtocolType.Ethereum);
|
|
34
|
+
const targetChains = this.multiProvider.intersect(ethereumConfigChains, true).intersection;
|
|
32
35
|
this.logger(`Start deploy to ${targetChains}`);
|
|
33
36
|
for (const chain of targetChains) {
|
|
34
37
|
const signerUrl = await this.multiProvider.tryGetExplorerAddressUrl(chain);
|
|
@@ -45,11 +48,20 @@ class HyperlaneDeployer {
|
|
|
45
48
|
}
|
|
46
49
|
return this.deployedContracts;
|
|
47
50
|
}
|
|
48
|
-
addDeployedContracts(chain, contracts) {
|
|
51
|
+
addDeployedContracts(chain, contracts, verificationInputs) {
|
|
49
52
|
this.deployedContracts[chain] = {
|
|
50
53
|
...this.deployedContracts[chain],
|
|
51
54
|
...contracts,
|
|
52
55
|
};
|
|
56
|
+
if (verificationInputs)
|
|
57
|
+
this.addVerificationArtifacts(chain, verificationInputs);
|
|
58
|
+
}
|
|
59
|
+
addVerificationArtifacts(chain, artifacts) {
|
|
60
|
+
this.verificationInputs[chain] = this.verificationInputs[chain] || [];
|
|
61
|
+
artifacts.forEach((artifact) => {
|
|
62
|
+
this.verificationInputs[chain].push(artifact);
|
|
63
|
+
});
|
|
64
|
+
// TODO: deduplicate
|
|
53
65
|
}
|
|
54
66
|
async runIf(chain, address, fn, label = 'address') {
|
|
55
67
|
const signer = await this.multiProvider.getSignerAddress(chain);
|
|
@@ -79,75 +91,70 @@ class HyperlaneDeployer {
|
|
|
79
91
|
return this.runIf(chain, admin, () => signerAdminFn(), 'admin');
|
|
80
92
|
}
|
|
81
93
|
}
|
|
82
|
-
async
|
|
83
|
-
this.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
// set interchain security module if not already set (and configured)
|
|
98
|
-
if (config.interchainSecurityModule) {
|
|
99
|
-
let configuredIsm;
|
|
100
|
-
if (typeof config.interchainSecurityModule === 'string') {
|
|
101
|
-
configuredIsm = config.interchainSecurityModule;
|
|
102
|
-
}
|
|
103
|
-
else if (this.options?.ismFactory) {
|
|
104
|
-
const matches = await (0, HyperlaneIsmFactory_1.moduleMatchesConfig)(local, currentIsm, config.interchainSecurityModule, this.multiProvider, this.options.ismFactory.chainMap[local]);
|
|
105
|
-
if (matches) {
|
|
106
|
-
// when the ISM recursively matches the IsmConfig, we don't need to deploy a new ISM
|
|
107
|
-
this.logger(`ISM matches config for chain ${local}, skipping deploy`);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
const ism = await this.options.ismFactory.deploy(local, config.interchainSecurityModule);
|
|
111
|
-
configuredIsm = ism.address;
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
throw new Error('No ISM factory provided');
|
|
94
|
+
async configureIsm(chain, contract, config, getIsm, setIsm) {
|
|
95
|
+
if (this.options?.ismFactory === undefined) {
|
|
96
|
+
throw new Error('No ISM factory provided');
|
|
97
|
+
}
|
|
98
|
+
const ismFactory = this.options.ismFactory;
|
|
99
|
+
const configuredIsm = await getIsm(contract);
|
|
100
|
+
const matches = await (0, HyperlaneIsmFactory_1.moduleMatchesConfig)(chain, configuredIsm, config, this.multiProvider, ismFactory.getContracts(chain));
|
|
101
|
+
if (!matches) {
|
|
102
|
+
await this.runIfOwner(chain, contract, async () => {
|
|
103
|
+
const targetIsm = await ismFactory.deploy(chain, config);
|
|
104
|
+
this.logger(`Set ISM on ${chain}`);
|
|
105
|
+
await this.multiProvider.sendTransaction(chain, setIsm(contract, targetIsm.address));
|
|
106
|
+
if (targetIsm.address !== (await getIsm(contract))) {
|
|
107
|
+
throw new Error(`Set ISM failed on ${chain}`);
|
|
115
108
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async configureHook(chain, contract, targetHook, getHook, setHook) {
|
|
113
|
+
const configuredHook = await getHook(contract);
|
|
114
|
+
if (!(0, utils_1.eqAddress)(targetHook, configuredHook)) {
|
|
115
|
+
await this.runIfOwner(chain, contract, async () => {
|
|
116
|
+
this.logger(`Set hook on ${chain} to ${targetHook}, currently is ${configuredHook}`);
|
|
117
|
+
await this.multiProvider.sendTransaction(chain, setHook(contract, targetHook));
|
|
118
|
+
const actualHook = await getHook(contract);
|
|
119
|
+
if (!(0, utils_1.eqAddress)(targetHook, actualHook)) {
|
|
120
|
+
throw new Error(`Set hook failed on ${chain}, wanted ${targetHook}, got ${actualHook}`);
|
|
119
121
|
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async initMailboxClient(local, client, config) {
|
|
126
|
+
this.logger(`Initializing mailbox client (if not already) on ${local}...`);
|
|
127
|
+
if (config.hook) {
|
|
128
|
+
await this.configureHook(local, client, config.hook, (_client) => _client.hook(), (_client, _hook) => _client.populateTransaction.setHook(_hook));
|
|
129
|
+
}
|
|
130
|
+
if (config.interchainSecurityModule) {
|
|
131
|
+
await this.configureIsm(local, client, config.interchainSecurityModule, (_client) => _client.interchainSecurityModule(), (_client, _module) => _client.populateTransaction.setInterchainSecurityModule(_module));
|
|
132
|
+
}
|
|
122
133
|
this.logger(`Connection client on ${local} initialized...`);
|
|
123
134
|
}
|
|
124
135
|
async deployContractFromFactory(chain, factory, contractName, constructorArgs, initializeArgs) {
|
|
125
136
|
const cachedContract = this.readCache(chain, factory, contractName);
|
|
126
137
|
if (cachedContract) {
|
|
138
|
+
if (this.recoverVerificationInputs) {
|
|
139
|
+
const recoveredInputs = await this.recoverVerificationArtifacts(chain, contractName, cachedContract, constructorArgs, initializeArgs);
|
|
140
|
+
this.addVerificationArtifacts(chain, recoveredInputs);
|
|
141
|
+
}
|
|
127
142
|
return cachedContract;
|
|
128
143
|
}
|
|
129
|
-
const signer = this.multiProvider.getSigner(chain);
|
|
130
|
-
const overrides = this.multiProvider.getTransactionOverrides(chain);
|
|
131
144
|
this.logger(`Deploy ${contractName} on ${chain}`);
|
|
132
|
-
const contract = await factory
|
|
133
|
-
.connect(signer)
|
|
134
|
-
.deploy(...constructorArgs, overrides);
|
|
135
|
-
await this.multiProvider.handleTx(chain, contract.deployTransaction);
|
|
145
|
+
const contract = await this.multiProvider.handleDeploy(chain, factory, constructorArgs);
|
|
136
146
|
if (initializeArgs) {
|
|
137
147
|
this.logger(`Initialize ${contractName} on ${chain}`);
|
|
148
|
+
const overrides = this.multiProvider.getTransactionOverrides(chain);
|
|
138
149
|
const initTx = await contract.initialize(...initializeArgs, overrides);
|
|
139
150
|
await this.multiProvider.handleTx(chain, initTx);
|
|
140
151
|
}
|
|
141
152
|
const verificationInput = (0, utils_2.getContractVerificationInput)(contractName, contract, factory.bytecode);
|
|
142
|
-
this.
|
|
153
|
+
this.addVerificationArtifacts(chain, [verificationInput]);
|
|
143
154
|
return contract;
|
|
144
155
|
}
|
|
145
|
-
addVerificationArtifact(chain, artifact) {
|
|
146
|
-
this.verificationInputs[chain] = this.verificationInputs[chain] || [];
|
|
147
|
-
this.verificationInputs[chain].push(artifact);
|
|
148
|
-
}
|
|
149
156
|
async deployContract(chain, contractName, constructorArgs, initializeArgs) {
|
|
150
|
-
const contract =
|
|
157
|
+
const contract = await this.deployContractFromFactory(chain, this.factories[contractName], contractName.toString(), constructorArgs, initializeArgs);
|
|
151
158
|
this.writeCache(chain, contractName, contract.address);
|
|
152
159
|
return contract;
|
|
153
160
|
}
|
|
@@ -173,15 +180,12 @@ class HyperlaneDeployer {
|
|
|
173
180
|
await this.runIfAdmin(chain, proxy, () => this.multiProvider.handleTx(chain, proxy.upgradeToAndCall(implementation.address, initData, overrides)), (proxyAdmin) => this.multiProvider.handleTx(chain, proxyAdmin.upgradeAndCall(proxy.address, implementation.address, initData, overrides)));
|
|
174
181
|
}
|
|
175
182
|
async deployProxy(chain, implementation, proxyAdmin, initializeArgs) {
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
proxyAdmin,
|
|
183
|
-
initData,
|
|
184
|
-
];
|
|
183
|
+
const isProxied = await (0, proxy_1.isProxy)(this.multiProvider.getProvider(chain), implementation.address);
|
|
184
|
+
if (isProxied) {
|
|
185
|
+
// if the implementation is already a proxy, do not deploy a new proxy
|
|
186
|
+
return implementation;
|
|
187
|
+
}
|
|
188
|
+
const constructorArgs = (0, proxy_1.proxyConstructorArgs)(implementation, proxyAdmin, initializeArgs);
|
|
185
189
|
const proxy = await this.deployContractFromFactory(chain, new core_1.TransparentUpgradeableProxy__factory(), 'TransparentUpgradeableProxy', constructorArgs);
|
|
186
190
|
return implementation.attach(proxy.address);
|
|
187
191
|
}
|
|
@@ -214,15 +218,30 @@ class HyperlaneDeployer {
|
|
|
214
218
|
}
|
|
215
219
|
return undefined;
|
|
216
220
|
}
|
|
221
|
+
async recoverVerificationArtifacts(chain, contractName, cachedContract, constructorArgs, initializeArgs) {
|
|
222
|
+
const provider = this.multiProvider.getProvider(chain);
|
|
223
|
+
const isProxied = await (0, proxy_1.isProxy)(provider, cachedContract.address);
|
|
224
|
+
let implementation;
|
|
225
|
+
if (isProxied) {
|
|
226
|
+
implementation = await (0, proxy_1.proxyImplementation)(provider, cachedContract.address);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
implementation = cachedContract.address;
|
|
230
|
+
}
|
|
231
|
+
const implementationInput = (0, utils_2.buildVerificationInput)(contractName, implementation, cachedContract.interface.encodeDeploy(constructorArgs));
|
|
232
|
+
if (!isProxied) {
|
|
233
|
+
return [implementationInput];
|
|
234
|
+
}
|
|
235
|
+
const admin = await (0, proxy_1.proxyAdmin)(provider, cachedContract.address);
|
|
236
|
+
const proxyArgs = (0, proxy_1.proxyConstructorArgs)(cachedContract.attach(implementation), admin, initializeArgs);
|
|
237
|
+
const proxyInput = (0, utils_2.buildVerificationInput)('TransparentUpgradeableProxy', cachedContract.address, core_1.TransparentUpgradeableProxy__factory.createInterface().encodeDeploy(proxyArgs));
|
|
238
|
+
return [implementationInput, proxyInput];
|
|
239
|
+
}
|
|
217
240
|
/**
|
|
218
241
|
* Deploys the Implementation and Proxy for a given contract
|
|
219
242
|
*
|
|
220
243
|
*/
|
|
221
244
|
async deployProxiedContract(chain, contractName, proxyAdmin, constructorArgs, initializeArgs) {
|
|
222
|
-
const cachedContract = this.readCache(chain, this.factories[contractName], contractName.toString());
|
|
223
|
-
if (cachedContract) {
|
|
224
|
-
return cachedContract;
|
|
225
|
-
}
|
|
226
245
|
// Try to initialize the implementation even though it may not be necessary
|
|
227
246
|
const implementation = await this.deployContract(chain, contractName, constructorArgs, initializeArgs);
|
|
228
247
|
// Initialize the proxy the same way
|