@hyperlane-xyz/sdk 1.4.2 → 1.4.3-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/agentStartBlocks.d.ts +3 -0
- package/dist/consts/agentStartBlocks.d.ts.map +1 -0
- package/dist/consts/agentStartBlocks.js +28 -0
- package/dist/consts/agentStartBlocks.js.map +1 -0
- package/dist/consts/bytecode.js +1 -1
- package/dist/consts/bytecode.js.map +1 -1
- package/dist/consts/chainMetadata.js +3 -3
- package/dist/consts/chains.d.ts +1 -1
- package/dist/consts/chains.d.ts.map +1 -1
- package/dist/consts/chains.js +2 -2
- package/dist/consts/chains.js.map +1 -1
- package/dist/consts/environments/index.d.ts +40 -2
- package/dist/consts/environments/index.d.ts.map +1 -1
- package/dist/consts/environments/index.js.map +1 -1
- package/dist/consts/environments/mainnet.json +27 -9
- package/dist/consts/environments/testnet.json +36 -18
- package/dist/contracts.d.ts +5 -5
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +12 -23
- package/dist/contracts.js.map +1 -1
- package/dist/core/CoreDeployer.hardhat-test.js +33 -42
- package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts +1 -1
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +12 -25
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/HyperlaneCore.test.js +4 -13
- package/dist/core/HyperlaneCore.test.js.map +1 -1
- package/dist/core/HyperlaneCoreChecker.d.ts +0 -1
- package/dist/core/HyperlaneCoreChecker.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreChecker.js +79 -137
- package/dist/core/HyperlaneCoreChecker.js.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.d.ts +1 -2
- package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.js +45 -71
- package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/core/TestCoreApp.js +35 -45
- package/dist/core/TestCoreApp.js.map +1 -1
- package/dist/core/TestCoreDeployer.js +14 -27
- package/dist/core/TestCoreDeployer.js.map +1 -1
- package/dist/core/contracts.d.ts +1 -1
- package/dist/core/contracts.d.ts.map +1 -1
- package/dist/core/events.d.ts +1 -1
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/testHyperlaneDeploy.hardhat-test.js +23 -32
- package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
- package/dist/core/types.d.ts +4 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +2 -3
- package/dist/core/types.js.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts +3 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.js +105 -83
- package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +5 -1
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +179 -183
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/proxy.d.ts +9 -0
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +11 -26
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/deploy/types.d.ts +18 -2
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/deploy/types.js +3 -1
- package/dist/deploy/types.js.map +1 -1
- package/dist/deploy/verify/ContractVerifier.js +122 -131
- package/dist/deploy/verify/ContractVerifier.js.map +1 -1
- package/dist/deploy/verify/types.d.ts +3 -3
- package/dist/deploy/verify/types.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.d.ts +0 -4
- package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.js +101 -121
- package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.js +74 -77
- package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
- package/dist/gas/contracts.d.ts +4 -3
- package/dist/gas/contracts.d.ts.map +1 -1
- package/dist/gas/contracts.js +2 -1
- package/dist/gas/contracts.js.map +1 -1
- package/dist/gas/token-prices.d.ts +5 -5
- package/dist/gas/token-prices.d.ts.map +1 -1
- package/dist/gas/token-prices.js +37 -54
- package/dist/gas/token-prices.js.map +1 -1
- package/dist/gas/token-prices.test.js +11 -20
- package/dist/gas/token-prices.test.js.map +1 -1
- package/dist/gas/types.d.ts +5 -2
- package/dist/gas/types.d.ts.map +1 -1
- package/dist/gas/types.js +2 -2
- package/dist/gas/types.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.js +69 -88
- package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
- package/dist/hook/contracts.d.ts +4 -4
- package/dist/hook/contracts.d.ts.map +1 -1
- package/dist/hook/contracts.js +5 -1
- package/dist/hook/contracts.js.map +1 -1
- package/dist/hook/types.d.ts +3 -3
- package/dist/hook/types.d.ts.map +1 -1
- package/dist/hook/types.js +1 -1
- package/dist/hook/types.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +14 -23
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +215 -194
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactoryDeployer.js +18 -34
- package/dist/ism/HyperlaneIsmFactoryDeployer.js.map +1 -1
- package/dist/ism/contracts.d.ts +1 -1
- package/dist/ism/contracts.d.ts.map +1 -1
- package/dist/ism/types.d.ts +5 -5
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js +1 -1
- package/dist/ism/types.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +9 -4
- package/dist/metadata/agentConfig.d.ts.map +1 -1
- package/dist/metadata/agentConfig.js +26 -8
- package/dist/metadata/agentConfig.js.map +1 -1
- package/dist/metadata/agentConfig.test.d.ts +2 -0
- package/dist/metadata/agentConfig.test.d.ts.map +1 -0
- package/dist/metadata/agentConfig.test.js +33 -0
- package/dist/metadata/agentConfig.test.js.map +1 -0
- package/dist/metadata/chainMetadata.test.js +27 -9
- package/dist/metadata/chainMetadata.test.js.map +1 -1
- package/dist/metadata/chainMetadataTypes.d.ts +3 -3
- package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
- package/dist/metadata/chainMetadataTypes.js +3 -4
- package/dist/metadata/chainMetadataTypes.js.map +1 -1
- package/dist/metadata/deploymentArtifacts.d.ts +2 -2
- package/dist/metadata/deploymentArtifacts.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccountChecker.js +4 -1
- package/dist/middleware/account/InterchainAccountChecker.js.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.d.ts +12 -6
- package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.js +34 -63
- package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
- package/dist/middleware/account/accounts.hardhat-test.js +21 -30
- package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
- package/dist/middleware/account/contracts.d.ts +4 -3
- package/dist/middleware/account/contracts.d.ts.map +1 -1
- package/dist/middleware/account/contracts.js +2 -1
- package/dist/middleware/account/contracts.js.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerApp.js +129 -151
- package/dist/middleware/liquidity-layer/LiquidityLayerApp.js.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts +2 -2
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js +85 -107
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js.map +1 -1
- package/dist/middleware/liquidity-layer/contracts.d.ts +4 -3
- package/dist/middleware/liquidity-layer/contracts.d.ts.map +1 -1
- package/dist/middleware/liquidity-layer/contracts.js +2 -1
- package/dist/middleware/liquidity-layer/contracts.js.map +1 -1
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js +41 -46
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js.map +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.d.ts +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.d.ts.map +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.js +13 -24
- package/dist/middleware/query/InterchainQueryDeployer.js.map +1 -1
- package/dist/middleware/query/contracts.d.ts +4 -3
- package/dist/middleware/query/contracts.d.ts.map +1 -1
- package/dist/middleware/query/contracts.js +2 -1
- package/dist/middleware/query/contracts.js.map +1 -1
- package/dist/middleware/query/queries.hardhat-test.js +23 -32
- package/dist/middleware/query/queries.hardhat-test.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +2 -2
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +63 -84
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/providers/RetryProvider.d.ts +1 -1
- package/dist/providers/RetryProvider.d.ts.map +1 -1
- package/dist/providers/RetryProvider.js +2 -16
- package/dist/providers/RetryProvider.js.map +1 -1
- package/dist/router/GasRouterDeployer.js +18 -32
- package/dist/router/GasRouterDeployer.js.map +1 -1
- package/dist/router/HyperlaneRouterChecker.d.ts +0 -1
- package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterChecker.js +37 -51
- package/dist/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/router/HyperlaneRouterDeployer.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterDeployer.js +89 -107
- package/dist/router/HyperlaneRouterDeployer.js.map +1 -1
- package/dist/router/ProxiedRouterChecker.d.ts +3 -2
- package/dist/router/ProxiedRouterChecker.d.ts.map +1 -1
- package/dist/router/ProxiedRouterChecker.js +15 -17
- package/dist/router/ProxiedRouterChecker.js.map +1 -1
- package/dist/router/ProxiedRouterDeployer.d.ts +2 -2
- package/dist/router/ProxiedRouterDeployer.d.ts.map +1 -1
- package/dist/router/ProxiedRouterDeployer.js +27 -28
- package/dist/router/ProxiedRouterDeployer.js.map +1 -1
- package/dist/router/RouterApps.d.ts.map +1 -1
- package/dist/router/RouterApps.js +4 -15
- package/dist/router/RouterApps.js.map +1 -1
- package/dist/router/types.d.ts +14 -9
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +7 -2
- package/dist/router/types.js.map +1 -1
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +21 -24
- package/dist/test/testUtils.js.map +1 -1
- package/dist/types.d.ts +5 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/MultiGeneric.js +2 -4
- package/dist/utils/MultiGeneric.js.map +1 -1
- package/dist/utils/fetch.js +8 -16
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/number.js +2 -2
- package/dist/utils/number.js.map +1 -1
- package/dist/utils/objects.d.ts +2 -2
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/wagmi.js +1 -2
- package/dist/utils/wagmi.js.map +1 -1
- package/package.json +10 -9
package/dist/contracts.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.appFromAddressesMapHelper = exports.filterOwnableContracts = exports.connectContractsMap = exports.connectContracts = exports.attachContractsMap = exports.attachContracts = exports.filterAddressesMap = exports.serializeContracts = exports.serializeContractsMap = void 0;
|
|
13
4
|
const objects_1 = require("./utils/objects");
|
|
@@ -57,20 +48,18 @@ function connectContractsMap(contractsMap, multiProvider) {
|
|
|
57
48
|
return (0, objects_1.objMap)(contractsMap, (chain, contracts) => connectContracts(contracts, multiProvider.getSignerOrProvider(chain)));
|
|
58
49
|
}
|
|
59
50
|
exports.connectContractsMap = connectContractsMap;
|
|
60
|
-
function filterOwnableContracts(contracts) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return (0, objects_1.objFilter)(contracts, (name, contract) => isOwnableContracts[name]);
|
|
73
|
-
});
|
|
51
|
+
async function filterOwnableContracts(contracts) {
|
|
52
|
+
const isOwnable = async (_, contract) => {
|
|
53
|
+
try {
|
|
54
|
+
await contract.owner();
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
catch (_) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const isOwnableContracts = await (0, objects_1.promiseObjAll)((0, objects_1.objMap)(contracts, isOwnable));
|
|
62
|
+
return (0, objects_1.objFilter)(contracts, (name, contract) => isOwnableContracts[name]);
|
|
74
63
|
}
|
|
75
64
|
exports.filterOwnableContracts = filterOwnableContracts;
|
|
76
65
|
function appFromAddressesMapHelper(addressesMap, factories, multiProvider) {
|
package/dist/contracts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -24,81 +15,81 @@ const testUtils_1 = require("../test/testUtils");
|
|
|
24
15
|
const HyperlaneCore_1 = require("./HyperlaneCore");
|
|
25
16
|
const HyperlaneCoreChecker_1 = require("./HyperlaneCoreChecker");
|
|
26
17
|
const HyperlaneCoreDeployer_1 = require("./HyperlaneCoreDeployer");
|
|
27
|
-
describe('core', () =>
|
|
18
|
+
describe('core', async () => {
|
|
28
19
|
let multiProvider;
|
|
29
20
|
let deployer;
|
|
30
21
|
let core;
|
|
31
22
|
let contracts;
|
|
32
23
|
let coreConfig;
|
|
33
24
|
let ismFactory;
|
|
34
|
-
before(() =>
|
|
35
|
-
const [signer] =
|
|
25
|
+
before(async () => {
|
|
26
|
+
const [signer] = await hardhat_1.ethers.getSigners();
|
|
36
27
|
multiProvider = MultiProvider_1.MultiProvider.createTestMultiProvider({ signer });
|
|
37
28
|
const ismFactoryDeployer = new HyperlaneIsmFactoryDeployer_1.HyperlaneIsmFactoryDeployer(multiProvider);
|
|
38
|
-
const ismFactories =
|
|
29
|
+
const ismFactories = await ismFactoryDeployer.deploy(chains_1.TestChains);
|
|
39
30
|
ismFactory = new HyperlaneIsmFactory_1.HyperlaneIsmFactory(ismFactories, multiProvider);
|
|
40
|
-
})
|
|
41
|
-
beforeEach(() =>
|
|
42
|
-
const [signer] =
|
|
31
|
+
});
|
|
32
|
+
beforeEach(async () => {
|
|
33
|
+
const [signer] = await hardhat_1.ethers.getSigners();
|
|
43
34
|
// This is kind of awkward and really these tests shouldn't live here
|
|
44
35
|
multiProvider = MultiProvider_1.MultiProvider.createTestMultiProvider({ signer });
|
|
45
36
|
coreConfig = (0, testUtils_1.testCoreConfig)(chains_1.TestChains);
|
|
46
|
-
})
|
|
47
|
-
it('deploys', () =>
|
|
37
|
+
});
|
|
38
|
+
it('deploys', async () => {
|
|
48
39
|
deployer = new HyperlaneCoreDeployer_1.HyperlaneCoreDeployer(multiProvider, ismFactory);
|
|
49
|
-
contracts =
|
|
40
|
+
contracts = await deployer.deploy(coreConfig);
|
|
50
41
|
core = new HyperlaneCore_1.HyperlaneCore(contracts, multiProvider);
|
|
51
|
-
})
|
|
52
|
-
describe('failure modes', () =>
|
|
53
|
-
beforeEach(() =>
|
|
42
|
+
});
|
|
43
|
+
describe('failure modes', async () => {
|
|
44
|
+
beforeEach(async () => {
|
|
54
45
|
deployer = new HyperlaneCoreDeployer_1.HyperlaneCoreDeployer(multiProvider, ismFactory);
|
|
55
46
|
const stub = sinon_1.default.stub(deployer, 'deployContracts');
|
|
56
47
|
stub.withArgs('test3', sinon_1.default.match.any).rejects();
|
|
57
48
|
// @ts-ignore
|
|
58
49
|
deployer.deployContracts.callThrough();
|
|
59
50
|
try {
|
|
60
|
-
|
|
51
|
+
await deployer.deploy(coreConfig);
|
|
61
52
|
// eslint-disable-next-line no-empty
|
|
62
53
|
}
|
|
63
54
|
catch (e) { }
|
|
64
|
-
})
|
|
65
|
-
afterEach(() =>
|
|
55
|
+
});
|
|
56
|
+
afterEach(async () => {
|
|
66
57
|
sinon_1.default.restore();
|
|
67
|
-
})
|
|
68
|
-
it('persists partial failure', () =>
|
|
58
|
+
});
|
|
59
|
+
it('persists partial failure', async () => {
|
|
69
60
|
(0, chai_1.expect)(deployer.deployedContracts).to.have.keys(['test1', 'test2']);
|
|
70
|
-
})
|
|
71
|
-
it('can be resumed from partial (chain) failure', () =>
|
|
61
|
+
});
|
|
62
|
+
it('can be resumed from partial (chain) failure', async () => {
|
|
72
63
|
sinon_1.default.restore(); // restore normal deployer behavior and test3 will be deployed
|
|
73
|
-
const result =
|
|
64
|
+
const result = await deployer.deploy(coreConfig);
|
|
74
65
|
(0, chai_1.expect)(result).to.have.keys(['test1', 'test2', 'test3']);
|
|
75
66
|
(0, chai_1.expect)(result.test3).to.have.keys(Object.keys(result.test2));
|
|
76
|
-
})
|
|
77
|
-
it('can be resumed from partial contracts', () =>
|
|
67
|
+
});
|
|
68
|
+
it('can be resumed from partial contracts', async () => {
|
|
78
69
|
sinon_1.default.restore(); // restore normal deployer behavior
|
|
79
70
|
//@ts-ignore operand not optional, ignore for this test
|
|
80
71
|
delete deployer.deployedContracts.test2.multisigIsm;
|
|
81
72
|
//@ts-ignore operand not optional, ignore for this test
|
|
82
73
|
delete deployer.deployedContracts.test2.mailbox;
|
|
83
|
-
const result =
|
|
74
|
+
const result = await deployer.deploy(coreConfig);
|
|
84
75
|
(0, chai_1.expect)(result.test2).to.have.keys(Object.keys(result.test1));
|
|
85
76
|
(0, chai_1.expect)(result.test3).to.have.keys(Object.keys(result.test1));
|
|
86
|
-
})
|
|
87
|
-
it('times out ', () =>
|
|
77
|
+
});
|
|
78
|
+
it('times out ', async () => {
|
|
88
79
|
// @ts-ignore
|
|
89
80
|
deployer.chainTimeoutMs = 1;
|
|
90
81
|
try {
|
|
91
|
-
|
|
82
|
+
await deployer.deploy(coreConfig);
|
|
92
83
|
}
|
|
93
84
|
catch (e) {
|
|
94
85
|
// TODO: figure out how to test specific error case
|
|
95
86
|
// expect(e.message).to.include('Timed out in 1ms');
|
|
96
87
|
}
|
|
97
|
-
})
|
|
98
|
-
})
|
|
99
|
-
it('checks', () =>
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
it('checks', async () => {
|
|
100
91
|
const checker = new HyperlaneCoreChecker_1.HyperlaneCoreChecker(multiProvider, core, coreConfig, ismFactory);
|
|
101
|
-
|
|
102
|
-
})
|
|
103
|
-
})
|
|
92
|
+
await checker.check();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
104
95
|
//# sourceMappingURL=CoreDeployer.hardhat-test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreDeployer.hardhat-test.js","sourceRoot":"","sources":["../../src/core/CoreDeployer.hardhat-test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CoreDeployer.hardhat-test.js","sourceRoot":"","sources":["../../src/core/CoreDeployer.hardhat-test.ts"],"names":[],"mappings":";;;;;AAAA,qCAAmC;AACnC,+BAA8B;AAC9B,qCAAiC;AACjC,kDAA0B;AAE1B,6CAA8C;AAE9C,oEAAiE;AACjE,oFAAiF;AACjF,8DAA2D;AAC3D,iDAAmD;AAGnD,mDAAgD;AAChD,iEAA8D;AAC9D,mEAAgE;AAIhE,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;IAC1B,IAAI,aAA4B,CAAC;IACjC,IAAI,QAA+B,CAAC;IACpC,IAAI,IAAmB,CAAC;IACxB,IAAI,SAA+C,CAAC;IACpD,IAAI,UAAgC,CAAC;IACrC,IAAI,UAA+B,CAAC;IACpC,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,gBAAM,CAAC,UAAU,EAAE,CAAC;QAC3C,aAAa,GAAG,6BAAa,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,kBAAkB,GAAG,IAAI,yDAA2B,CAAC,aAAa,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,mBAAU,CAAC,CAAC;QACjE,UAAU,GAAG,IAAI,yCAAmB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,gBAAM,CAAC,UAAU,EAAE,CAAC;QAC3C,qEAAqE;QACrE,aAAa,GAAG,6BAAa,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,UAAU,GAAG,IAAA,0BAAc,EAAC,mBAAU,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACvB,QAAQ,GAAG,IAAI,6CAAqB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAChE,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,GAAG,IAAI,6BAAa,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QACnC,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,QAAQ,GAAG,IAAI,6CAAqB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAClD,aAAa;YACb,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YAEvC,IAAI;gBACF,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAClC,oCAAoC;aACrC;YAAC,OAAO,CAAM,EAAE,GAAE;QACrB,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,eAAK,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,IAAA,aAAM,EAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,eAAK,CAAC,OAAO,EAAE,CAAC,CAAC,8DAA8D;YAC/E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACjD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,IAAA,aAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,eAAK,CAAC,OAAO,EAAE,CAAC,CAAC,mCAAmC;YAEpD,uDAAuD;YACvD,OAAO,QAAQ,CAAC,iBAAiB,CAAC,KAAM,CAAC,WAAW,CAAC;YACrD,uDAAuD;YACvD,OAAO,QAAQ,CAAC,iBAAiB,CAAC,KAAM,CAAC,OAAO,CAAC;YAEjD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACjD,IAAA,aAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,IAAA,aAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1B,aAAa;YACb,QAAQ,CAAC,cAAc,GAAG,CAAC,CAAC;YAC5B,IAAI;gBACF,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;aACnC;YAAC,OAAO,CAAM,EAAE;gBACf,mDAAmD;gBACnD,oDAAoD;aACrD;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACtB,MAAM,OAAO,GAAG,IAAI,2CAAoB,CACtC,aAAa,EACb,IAAI,EACJ,UAAU,EACV,UAAU,CACX,CAAC;QACF,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -7,7 +7,7 @@ import { HyperlaneAddressesMap } from '../contracts';
|
|
|
7
7
|
import { MultiProvider } from '../providers/MultiProvider';
|
|
8
8
|
import { ChainName } from '../types';
|
|
9
9
|
import { CoreFactories } from './contracts';
|
|
10
|
-
export
|
|
10
|
+
export type DispatchedMessage = {
|
|
11
11
|
id: string;
|
|
12
12
|
message: string;
|
|
13
13
|
parsed: types.ParsedMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneCore.d.ts","sourceRoot":"","sources":["../../src/core/HyperlaneCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,OAAO,EAAoB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAS,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,oBAAoB,EAErB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAA6B,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAC;AAE3D,
|
|
1
|
+
{"version":3,"file":"HyperlaneCore.d.ts","sourceRoot":"","sources":["../../src/core/HyperlaneCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,OAAO,EAAoB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAS,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,oBAAoB,EAErB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAA6B,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAEF,qBAAa,aAAc,SAAQ,YAAY,CAAC,aAAa,CAAC;IAC5D,MAAM,CAAC,eAAe,CAAC,GAAG,SAAS,oBAAoB,EACrD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,aAAa,GAC3B,aAAa;IAQhB,MAAM,CAAC,gBAAgB,CACrB,YAAY,EAAE,qBAAqB,CAAC,GAAG,CAAC,EACxC,aAAa,EAAE,aAAa,GAC3B,aAAa;IAShB,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG;QACpD,gBAAgB,EAAE,SAAS,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC;KAClB;IAQD,SAAS,CAAC,qBAAqB,CAC7B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;cAiBlB,0BAA0B,CACxC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC;IAYhB,wBAAwB,CACtB,QAAQ,EAAE,MAAM,CAAC,eAAe,GAC/B,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;IAK9B,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,CAAC,eAAe,GAC/B,OAAO,CAAC,IAAI,CAAC;IAQhB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,GAAG,iBAAiB,EAAE;IAI5E,MAAM,CAAC,qBAAqB,CAC1B,QAAQ,EAAE,MAAM,CAAC,eAAe,GAC/B,iBAAiB,EAAE;CAqBvB"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.HyperlaneCore = void 0;
|
|
13
4
|
const core_1 = require("@hyperlane-xyz/core");
|
|
@@ -46,28 +37,24 @@ class HyperlaneCore extends HyperlaneApp_1.HyperlaneApp {
|
|
|
46
37
|
});
|
|
47
38
|
});
|
|
48
39
|
}
|
|
49
|
-
waitForMessageWasProcessed(message) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
}));
|
|
59
|
-
return;
|
|
40
|
+
async waitForMessageWasProcessed(message) {
|
|
41
|
+
const id = utils_1.utils.messageId(message.message);
|
|
42
|
+
const { mailbox } = this.getDestination(message);
|
|
43
|
+
await utils_1.utils.pollAsync(async () => {
|
|
44
|
+
const delivered = await mailbox.delivered(id);
|
|
45
|
+
if (!delivered) {
|
|
46
|
+
throw new Error(`Message ${id} not yet processed`);
|
|
47
|
+
}
|
|
60
48
|
});
|
|
49
|
+
return;
|
|
61
50
|
}
|
|
62
51
|
waitForMessageProcessing(sourceTx) {
|
|
63
52
|
const messages = HyperlaneCore.getDispatchedMessages(sourceTx);
|
|
64
53
|
return Promise.all(messages.map((msg) => this.waitForProcessReceipt(msg)));
|
|
65
54
|
}
|
|
66
|
-
waitForMessageProcessed(sourceTx) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
yield Promise.all(messages.map((msg) => this.waitForMessageWasProcessed(msg)));
|
|
70
|
-
});
|
|
55
|
+
async waitForMessageProcessed(sourceTx) {
|
|
56
|
+
const messages = HyperlaneCore.getDispatchedMessages(sourceTx);
|
|
57
|
+
await Promise.all(messages.map((msg) => this.waitForMessageWasProcessed(msg)));
|
|
71
58
|
}
|
|
72
59
|
// Redundant with static method but keeping for backwards compatibility
|
|
73
60
|
getDispatchedMessages(sourceTx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneCore.js","sourceRoot":"","sources":["../../src/core/HyperlaneCore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HyperlaneCore.js","sourceRoot":"","sources":["../../src/core/HyperlaneCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
const MultiProvider_1 = require("../providers/MultiProvider");
|
|
13
4
|
const HyperlaneCore_1 = require("./HyperlaneCore");
|
|
14
5
|
describe('HyperlaneCore', () => {
|
|
15
6
|
describe('fromEnvironment', () => {
|
|
16
|
-
it('creates an object for mainnet', () =>
|
|
7
|
+
it('creates an object for mainnet', async () => {
|
|
17
8
|
const multiProvider = new MultiProvider_1.MultiProvider();
|
|
18
9
|
HyperlaneCore_1.HyperlaneCore.fromEnvironment('mainnet', multiProvider);
|
|
19
|
-
})
|
|
20
|
-
it('creates an object for testnet', () =>
|
|
10
|
+
});
|
|
11
|
+
it('creates an object for testnet', async () => {
|
|
21
12
|
const multiProvider = new MultiProvider_1.MultiProvider();
|
|
22
13
|
HyperlaneCore_1.HyperlaneCore.fromEnvironment('testnet', multiProvider);
|
|
23
|
-
})
|
|
14
|
+
});
|
|
24
15
|
});
|
|
25
16
|
});
|
|
26
17
|
//# sourceMappingURL=HyperlaneCore.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneCore.test.js","sourceRoot":"","sources":["../../src/core/HyperlaneCore.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HyperlaneCore.test.js","sourceRoot":"","sources":["../../src/core/HyperlaneCore.test.ts"],"names":[],"mappings":";;AAAA,8DAA2D;AAE3D,mDAAgD;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,aAAa,GAAG,IAAI,6BAAa,EAAE,CAAC;YAC1C,6BAAa,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,aAAa,GAAG,IAAI,6BAAa,EAAE,CAAC;YAC1C,6BAAa,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -8,7 +8,6 @@ export declare class HyperlaneCoreChecker extends HyperlaneAppChecker<HyperlaneC
|
|
|
8
8
|
readonly ismFactory: HyperlaneIsmFactory;
|
|
9
9
|
constructor(multiProvider: MultiProvider, app: HyperlaneCore, configMap: ChainMap<CoreConfig>, ismFactory: HyperlaneIsmFactory);
|
|
10
10
|
checkChain(chain: ChainName): Promise<void>;
|
|
11
|
-
checkTimelockController(chain: ChainName): Promise<void>;
|
|
12
11
|
checkDomainOwnership(chain: ChainName): Promise<void>;
|
|
13
12
|
checkMailbox(chain: ChainName): Promise<void>;
|
|
14
13
|
checkBytecodes(chain: ChainName): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneCoreChecker.d.ts","sourceRoot":"","sources":["../../src/core/HyperlaneCoreChecker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EACL,mBAAmB,EAGpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,UAAU,EAKX,MAAM,SAAS,CAAC;AAEjB,qBAAa,oBAAqB,SAAQ,mBAAmB,CAC3D,aAAa,EACb,UAAU,CACX;IAKG,QAAQ,CAAC,UAAU,EAAE,mBAAmB;gBAHxC,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,EACtB,UAAU,EAAE,mBAAmB;IAKpC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"HyperlaneCoreChecker.d.ts","sourceRoot":"","sources":["../../src/core/HyperlaneCoreChecker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EACL,mBAAmB,EAGpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,UAAU,EAKX,MAAM,SAAS,CAAC;AAEjB,qBAAa,oBAAqB,SAAQ,mBAAmB,CAC3D,aAAa,EACb,UAAU,CACX;IAKG,QAAQ,CAAC,UAAU,EAAE,mBAAmB;gBAHxC,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,EACtB,UAAU,EAAE,mBAAmB;IAKpC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3C,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrD,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B7C,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C/C,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CA6B9D"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.HyperlaneCoreChecker = void 0;
|
|
13
4
|
const ethers_1 = require("ethers");
|
|
@@ -22,144 +13,95 @@ class HyperlaneCoreChecker extends HyperlaneAppChecker_1.HyperlaneAppChecker {
|
|
|
22
13
|
super(multiProvider, app, configMap);
|
|
23
14
|
this.ismFactory = ismFactory;
|
|
24
15
|
}
|
|
25
|
-
checkChain(chain) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
16
|
+
async checkChain(chain) {
|
|
17
|
+
const config = this.configMap[chain];
|
|
18
|
+
// skip chains that are configured to be removed
|
|
19
|
+
if (config.remove) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
await this.checkDomainOwnership(chain);
|
|
23
|
+
await this.checkProxiedContracts(chain);
|
|
24
|
+
await this.checkMailbox(chain);
|
|
25
|
+
await this.checkBytecodes(chain);
|
|
26
|
+
await this.checkValidatorAnnounce(chain);
|
|
27
|
+
if (config.upgrade) {
|
|
28
|
+
await this.checkUpgrade(chain, config.upgrade);
|
|
29
|
+
}
|
|
39
30
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (minDelay !== config.upgradeTimelockDelay) {
|
|
51
|
-
this.addViolation({
|
|
52
|
-
type: types_1.CoreViolationType.TimelockController,
|
|
53
|
-
chain,
|
|
54
|
-
actual: minDelay,
|
|
55
|
-
expected: config.upgradeTimelockDelay,
|
|
56
|
-
contract: timelockController,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
const roles = {
|
|
60
|
-
executor: yield timelockController.EXECUTOR_ROLE(),
|
|
61
|
-
proposer: yield timelockController.PROPOSER_ROLE(),
|
|
62
|
-
canceller: yield timelockController.CANCELLER_ROLE(),
|
|
63
|
-
// see https://docs.openzeppelin.com/contracts/4.x/api/governance#TimelockController-constructor-uint256-address---address---address-
|
|
64
|
-
// admin: await timelockController.TIMELOCK_ADMIN_ROLE(),
|
|
65
|
-
};
|
|
66
|
-
for (const [label, role] of Object.entries(roles)) {
|
|
67
|
-
const ownerHasRole = yield timelockController.hasRole(role, config.owner);
|
|
68
|
-
if (!ownerHasRole) {
|
|
69
|
-
this.addViolation({
|
|
70
|
-
type: `${types_1.CoreViolationType.TimelockController} owner ${config.owner} missing role ${label}`,
|
|
71
|
-
chain,
|
|
72
|
-
actual: false,
|
|
73
|
-
expected: true,
|
|
74
|
-
contract: timelockController,
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
});
|
|
31
|
+
async checkDomainOwnership(chain) {
|
|
32
|
+
const config = this.configMap[chain];
|
|
33
|
+
let ownableOverrides = {};
|
|
34
|
+
if (config.upgrade) {
|
|
35
|
+
const timelockController = this.app.getAddresses(chain).timelockController;
|
|
36
|
+
ownableOverrides = {
|
|
37
|
+
proxyAdmin: timelockController,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return this.checkOwnership(chain, config.owner, ownableOverrides);
|
|
80
41
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
42
|
+
async checkMailbox(chain) {
|
|
43
|
+
const contracts = this.app.getContracts(chain);
|
|
44
|
+
const mailbox = contracts.mailbox;
|
|
45
|
+
const localDomain = await mailbox.localDomain();
|
|
46
|
+
utils_1.utils.assert(localDomain === this.multiProvider.getDomainId(chain));
|
|
47
|
+
const actualIsm = await mailbox.defaultIsm();
|
|
48
|
+
const config = this.configMap[chain];
|
|
49
|
+
const matches = await (0, HyperlaneIsmFactory_1.moduleMatchesConfig)(chain, actualIsm, config.defaultIsm, this.ismFactory.multiProvider, this.ismFactory.getContracts(chain));
|
|
50
|
+
if (!matches) {
|
|
51
|
+
const violation = {
|
|
52
|
+
type: types_1.CoreViolationType.Mailbox,
|
|
53
|
+
mailboxType: types_1.MailboxViolationType.DefaultIsm,
|
|
54
|
+
contract: mailbox,
|
|
55
|
+
chain,
|
|
56
|
+
actual: actualIsm,
|
|
57
|
+
expected: config.defaultIsm,
|
|
58
|
+
};
|
|
59
|
+
this.addViolation(violation);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async checkBytecodes(chain) {
|
|
63
|
+
const contracts = this.app.getContracts(chain);
|
|
64
|
+
const mailbox = contracts.mailbox;
|
|
65
|
+
const localDomain = await mailbox.localDomain();
|
|
66
|
+
const implementation = await (0, proxy_1.proxyImplementation)(this.multiProvider.getProvider(chain), mailbox.address);
|
|
67
|
+
await this.checkBytecode(chain, 'Mailbox implementation', implementation, [
|
|
68
|
+
bytecode_1.BytecodeHash.MAILBOX_WITHOUT_LOCAL_DOMAIN_BYTE_CODE_HASH,
|
|
69
|
+
bytecode_1.BytecodeHash.MAILBOX_WITHOUT_LOCAL_DOMAIN_NONZERO_PAUSE_BYTE_CODE_HASH,
|
|
70
|
+
], (bytecode) =>
|
|
71
|
+
// This is obviously super janky but basically we are searching
|
|
72
|
+
// for the ocurrences of localDomain in the bytecode and remove
|
|
73
|
+
// that to compare, but some coincidental ocurrences of
|
|
74
|
+
// localDomain in the bytecode should be not be removed which
|
|
75
|
+
// are just done via an offset guard
|
|
76
|
+
bytecode.replaceAll(ethers_1.utils.defaultAbiCoder
|
|
77
|
+
.encode(['uint32'], [localDomain])
|
|
78
|
+
.slice(2), (match, offset) => (offset > 8000 ? match : '')));
|
|
79
|
+
await this.checkBytecode(chain, 'Mailbox proxy', contracts.mailbox.address, [bytecode_1.BytecodeHash.TRANSPARENT_PROXY_BYTECODE_HASH]);
|
|
80
|
+
await this.checkBytecode(chain, 'ProxyAdmin', contracts.proxyAdmin.address, [bytecode_1.BytecodeHash.PROXY_ADMIN_BYTECODE_HASH]);
|
|
93
81
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
82
|
+
async checkValidatorAnnounce(chain) {
|
|
83
|
+
const validators = new Set();
|
|
84
|
+
const remotes = Object.keys(this.configMap).filter((c) => c !== chain);
|
|
85
|
+
const remoteOriginValidators = remotes.map((remote) => (0, HyperlaneIsmFactory_1.collectValidators)(chain, this.configMap[remote].defaultIsm));
|
|
86
|
+
remoteOriginValidators.map((set) => {
|
|
87
|
+
[...set].map((v) => validators.add(v));
|
|
88
|
+
});
|
|
89
|
+
const validatorAnnounce = this.app.getContracts(chain).validatorAnnounce;
|
|
90
|
+
const announcedValidators = await validatorAnnounce.getAnnouncedValidators();
|
|
91
|
+
[...validators].forEach((validator) => {
|
|
92
|
+
const matches = announcedValidators.filter((x) => utils_1.utils.eqAddress(x, validator));
|
|
93
|
+
if (matches.length == 0) {
|
|
104
94
|
const violation = {
|
|
105
|
-
type: types_1.CoreViolationType.
|
|
106
|
-
mailboxType: types_1.MailboxViolationType.DefaultIsm,
|
|
107
|
-
contract: mailbox,
|
|
95
|
+
type: types_1.CoreViolationType.ValidatorAnnounce,
|
|
108
96
|
chain,
|
|
109
|
-
|
|
110
|
-
|
|
97
|
+
validator,
|
|
98
|
+
actual: false,
|
|
99
|
+
expected: true,
|
|
111
100
|
};
|
|
112
101
|
this.addViolation(violation);
|
|
113
102
|
}
|
|
114
103
|
});
|
|
115
104
|
}
|
|
116
|
-
checkBytecodes(chain) {
|
|
117
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
-
const contracts = this.app.getContracts(chain);
|
|
119
|
-
const mailbox = contracts.mailbox;
|
|
120
|
-
const localDomain = yield mailbox.localDomain();
|
|
121
|
-
const implementation = yield (0, proxy_1.proxyImplementation)(this.multiProvider.getProvider(chain), mailbox.address);
|
|
122
|
-
yield this.checkBytecode(chain, 'Mailbox implementation', implementation, [
|
|
123
|
-
bytecode_1.BytecodeHash.MAILBOX_WITHOUT_LOCAL_DOMAIN_BYTE_CODE_HASH,
|
|
124
|
-
bytecode_1.BytecodeHash.MAILBOX_WITHOUT_LOCAL_DOMAIN_NONZERO_PAUSE_BYTE_CODE_HASH,
|
|
125
|
-
], (bytecode) =>
|
|
126
|
-
// This is obviously super janky but basically we are searching
|
|
127
|
-
// for the ocurrences of localDomain in the bytecode and remove
|
|
128
|
-
// that to compare, but some coincidental ocurrences of
|
|
129
|
-
// localDomain in the bytecode should be not be removed which
|
|
130
|
-
// are just done via an offset guard
|
|
131
|
-
bytecode.replaceAll(ethers_1.utils.defaultAbiCoder
|
|
132
|
-
.encode(['uint32'], [localDomain])
|
|
133
|
-
.slice(2), (match, offset) => (offset > 8000 ? match : '')));
|
|
134
|
-
yield this.checkBytecode(chain, 'Mailbox proxy', contracts.mailbox.address, [bytecode_1.BytecodeHash.TRANSPARENT_PROXY_BYTECODE_HASH]);
|
|
135
|
-
yield this.checkBytecode(chain, 'ProxyAdmin', contracts.proxyAdmin.address, [bytecode_1.BytecodeHash.PROXY_ADMIN_BYTECODE_HASH]);
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
checkValidatorAnnounce(chain) {
|
|
139
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
-
const validators = new Set();
|
|
141
|
-
const remotes = Object.keys(this.configMap).filter((c) => c !== chain);
|
|
142
|
-
const remoteOriginValidators = remotes.map((remote) => (0, HyperlaneIsmFactory_1.collectValidators)(chain, this.configMap[remote].defaultIsm));
|
|
143
|
-
remoteOriginValidators.map((set) => {
|
|
144
|
-
[...set].map((v) => validators.add(v));
|
|
145
|
-
});
|
|
146
|
-
const validatorAnnounce = this.app.getContracts(chain).validatorAnnounce;
|
|
147
|
-
const announcedValidators = yield validatorAnnounce.getAnnouncedValidators();
|
|
148
|
-
[...validators].forEach((validator) => {
|
|
149
|
-
const matches = announcedValidators.filter((x) => utils_1.utils.eqAddress(x, validator));
|
|
150
|
-
if (matches.length == 0) {
|
|
151
|
-
const violation = {
|
|
152
|
-
type: types_1.CoreViolationType.ValidatorAnnounce,
|
|
153
|
-
chain,
|
|
154
|
-
validator,
|
|
155
|
-
actual: false,
|
|
156
|
-
expected: true,
|
|
157
|
-
};
|
|
158
|
-
this.addViolation(violation);
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
105
|
}
|
|
164
106
|
exports.HyperlaneCoreChecker = HyperlaneCoreChecker;
|
|
165
107
|
//# sourceMappingURL=HyperlaneCoreChecker.js.map
|