@hyperlane-xyz/sdk 1.0.0-beta2 → 1.0.0-beta4
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/chainConnectionConfigs.d.ts +24 -13
- package/dist/consts/chainConnectionConfigs.d.ts.map +1 -1
- package/dist/consts/chainConnectionConfigs.js +139 -26
- package/dist/consts/chainConnectionConfigs.js.map +1 -1
- package/dist/consts/chainMetadata.d.ts +26 -80
- package/dist/consts/chainMetadata.d.ts.map +1 -1
- package/dist/consts/chainMetadata.js +97 -481
- package/dist/consts/chainMetadata.js.map +1 -1
- package/dist/consts/chains.d.ts +16 -18
- package/dist/consts/chains.d.ts.map +1 -1
- package/dist/consts/chains.js +15 -29
- package/dist/consts/chains.js.map +1 -1
- package/dist/consts/environments/index.d.ts +1221 -177
- package/dist/consts/environments/index.d.ts.map +1 -1
- package/dist/consts/environments/index.js +10 -4
- package/dist/consts/environments/index.js.map +1 -1
- package/dist/consts/environments/mainnet.json +600 -56
- package/dist/consts/environments/test.json +96 -27
- package/dist/consts/environments/testnet2.json +610 -66
- package/dist/consts/metamask.d.ts +17 -0
- package/dist/consts/metamask.d.ts.map +1 -0
- package/dist/consts/metamask.js +50 -0
- package/dist/consts/metamask.js.map +1 -0
- package/dist/contracts.d.ts +1 -2
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts +1232 -182
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +30 -20
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/TestCoreApp.d.ts +12 -6
- package/dist/core/TestCoreApp.d.ts.map +1 -1
- package/dist/core/TestCoreApp.js +9 -7
- package/dist/core/TestCoreApp.js.map +1 -1
- package/dist/core/TestCoreDeployer.d.ts +5 -5
- package/dist/core/TestCoreDeployer.d.ts.map +1 -1
- package/dist/core/TestCoreDeployer.js +44 -12
- package/dist/core/TestCoreDeployer.js.map +1 -1
- package/dist/core/contracts.d.ts +22 -10
- package/dist/core/contracts.d.ts.map +1 -1
- package/dist/core/contracts.js +8 -8
- package/dist/core/contracts.js.map +1 -1
- package/dist/core/events.d.ts +2 -1
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/message.d.ts +21 -6
- package/dist/core/message.d.ts.map +1 -1
- package/dist/core/message.js +34 -9
- package/dist/core/message.js.map +1 -1
- package/dist/core/testHyperlaneDeploy.hardhat-test.js +6 -6
- package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts +2 -2
- package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.js +3 -7
- package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +12 -7
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +40 -65
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/core/HyperlaneCoreChecker.d.ts +7 -3
- package/dist/deploy/core/HyperlaneCoreChecker.d.ts.map +1 -1
- package/dist/deploy/core/HyperlaneCoreChecker.js +127 -41
- package/dist/deploy/core/HyperlaneCoreChecker.js.map +1 -1
- package/dist/deploy/core/HyperlaneCoreDeployer.d.ts +19 -16
- package/dist/deploy/core/HyperlaneCoreDeployer.d.ts.map +1 -1
- package/dist/deploy/core/HyperlaneCoreDeployer.js +71 -50
- package/dist/deploy/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/deploy/core/types.d.ts +28 -15
- package/dist/deploy/core/types.d.ts.map +1 -1
- package/dist/deploy/core/types.js +12 -8
- package/dist/deploy/core/types.js.map +1 -1
- package/dist/deploy/middleware/LiquidityLayerApp.d.ts +12 -4
- package/dist/deploy/middleware/LiquidityLayerApp.d.ts.map +1 -1
- package/dist/deploy/middleware/LiquidityLayerApp.js +87 -14
- package/dist/deploy/middleware/LiquidityLayerApp.js.map +1 -1
- package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts +17 -6
- package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts.map +1 -1
- package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js +50 -20
- package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js.map +1 -1
- package/dist/deploy/middleware/TokenBridgeApp.d.ts +26 -0
- package/dist/deploy/middleware/TokenBridgeApp.d.ts.map +1 -0
- package/dist/deploy/middleware/TokenBridgeApp.js +115 -0
- package/dist/deploy/middleware/TokenBridgeApp.js.map +1 -0
- package/dist/deploy/middleware/TokenBridgeRouterDeployer.d.ts +33 -0
- package/dist/deploy/middleware/TokenBridgeRouterDeployer.d.ts.map +1 -0
- package/dist/deploy/middleware/TokenBridgeRouterDeployer.js +93 -0
- package/dist/deploy/middleware/TokenBridgeRouterDeployer.js.map +1 -0
- package/dist/deploy/middleware/V2CompatibilityMiddlewareDeployer.d.ts +17 -0
- package/dist/deploy/middleware/V2CompatibilityMiddlewareDeployer.d.ts.map +1 -0
- package/dist/deploy/middleware/V2CompatibilityMiddlewareDeployer.js +42 -0
- package/dist/deploy/middleware/V2CompatibilityMiddlewareDeployer.js.map +1 -0
- package/dist/deploy/middleware/deploy.d.ts.map +1 -1
- package/dist/deploy/middleware/deploy.js +2 -10
- package/dist/deploy/middleware/deploy.js.map +1 -1
- package/dist/deploy/proxy.d.ts +6 -7
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +10 -18
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/deploy/router/HyperlaneRouterChecker.d.ts +1 -0
- package/dist/deploy/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/deploy/router/HyperlaneRouterChecker.js +9 -0
- package/dist/deploy/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/deploy/router/HyperlaneRouterDeployer.d.ts.map +1 -1
- package/dist/deploy/router/HyperlaneRouterDeployer.js +15 -17
- package/dist/deploy/router/HyperlaneRouterDeployer.js.map +1 -1
- package/dist/domains.d.ts +1 -1
- package/dist/domains.d.ts.map +1 -1
- package/dist/events.js +16 -16
- package/dist/events.js.map +1 -1
- package/dist/gas/calculator.d.ts.map +1 -1
- package/dist/gas/calculator.js +6 -11
- package/dist/gas/calculator.js.map +1 -1
- package/dist/gas/calculator.test.js +9 -6
- package/dist/gas/calculator.test.js.map +1 -1
- package/dist/index.d.ts +11 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -11
- package/dist/index.js.map +1 -1
- package/dist/middleware/accounts.test.d.ts +2 -0
- package/dist/middleware/accounts.test.d.ts.map +1 -0
- package/dist/middleware/accounts.test.js +61 -0
- package/dist/middleware/accounts.test.js.map +1 -0
- package/dist/middleware/liquidity-layer.hardhat-test.js +47 -20
- package/dist/middleware/liquidity-layer.hardhat-test.js.map +1 -1
- package/dist/middleware/queries.test.d.ts +2 -0
- package/dist/middleware/queries.test.d.ts.map +1 -0
- package/dist/middleware/queries.test.js +69 -0
- package/dist/middleware/queries.test.js.map +1 -0
- package/dist/middleware/tokenbridge.hardhat-test.d.ts +2 -0
- package/dist/middleware/tokenbridge.hardhat-test.d.ts.map +1 -0
- package/dist/middleware/tokenbridge.hardhat-test.js +89 -0
- package/dist/middleware/tokenbridge.hardhat-test.js.map +1 -0
- package/dist/middleware.d.ts +6 -1
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +5 -1
- package/dist/middleware.js.map +1 -1
- package/dist/providers/ChainConnection.d.ts +1 -1
- package/dist/providers/ChainConnection.d.ts.map +1 -1
- package/dist/providers/ChainConnection.js +3 -2
- package/dist/providers/ChainConnection.js.map +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/proxy.d.ts +4 -2
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +1 -1
- package/dist/proxy.js.map +1 -1
- package/dist/router.d.ts +1 -2
- package/dist/router.d.ts.map +1 -1
- package/dist/test/envSubsetDeployer/app.js +2 -2
- package/dist/test/envSubsetDeployer/app.js.map +1 -1
- package/dist/tokenBridge.d.ts +10 -0
- package/dist/tokenBridge.d.ts.map +1 -0
- package/dist/tokenBridge.js +9 -0
- package/dist/tokenBridge.js.map +1 -0
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/objects.d.ts +1 -0
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/objects.js +5 -1
- package/dist/utils/objects.js.map +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.TokenBridgeApp = void 0;
|
|
16
|
+
const cross_fetch_1 = __importDefault(require("cross-fetch"));
|
|
17
|
+
const ethers_1 = require("ethers");
|
|
18
|
+
const core_1 = require("@hyperlane-xyz/core");
|
|
19
|
+
const HyperlaneApp_1 = require("../../HyperlaneApp");
|
|
20
|
+
const chains_1 = require("../../consts/chains");
|
|
21
|
+
const objects_1 = require("../../utils/objects");
|
|
22
|
+
const TokenBridgeRouterDeployer_1 = require("./TokenBridgeRouterDeployer");
|
|
23
|
+
const CircleBridgeInterface = core_1.ICircleBridge__factory.createInterface();
|
|
24
|
+
const CircleBridgeAdapterInterface = core_1.CircleBridgeAdapter__factory.createInterface();
|
|
25
|
+
const BridgedTokenTopic = CircleBridgeAdapterInterface.getEventTopic(CircleBridgeAdapterInterface.getEvent('BridgedToken'));
|
|
26
|
+
class TokenBridgeApp extends HyperlaneApp_1.HyperlaneApp {
|
|
27
|
+
constructor(contractsMap, multiProvider, bridgeAdapterConfigs) {
|
|
28
|
+
super(contractsMap, multiProvider);
|
|
29
|
+
this.contractsMap = contractsMap;
|
|
30
|
+
this.multiProvider = multiProvider;
|
|
31
|
+
this.bridgeAdapterConfigs = bridgeAdapterConfigs;
|
|
32
|
+
}
|
|
33
|
+
circleBridgeAdapterConfig() {
|
|
34
|
+
return (0, objects_1.objMap)(this.bridgeAdapterConfigs, (_chain, config) => config.find((_) => _.type === TokenBridgeRouterDeployer_1.BridgeAdapterType.Circle));
|
|
35
|
+
}
|
|
36
|
+
fetchCircleMessageTransactions(chain) {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
const cc = this.multiProvider.getChainConnection(chain);
|
|
39
|
+
const params = new URLSearchParams({
|
|
40
|
+
module: 'logs',
|
|
41
|
+
action: 'getLogs',
|
|
42
|
+
address: this.getContracts(chain).circleBridgeAdapter.address,
|
|
43
|
+
topic0: BridgedTokenTopic,
|
|
44
|
+
});
|
|
45
|
+
const req = yield (0, cross_fetch_1.default)(`${cc.getApiUrl()}?${params}`);
|
|
46
|
+
const response = yield req.json();
|
|
47
|
+
return response.result.map((_) => _.transactionHash).flat();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
parseCircleMessages(chain, txHash) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const connection = this.multiProvider.getChainConnection(chain);
|
|
53
|
+
const receipt = yield connection.provider.getTransactionReceipt(txHash);
|
|
54
|
+
const matchingLogs = receipt.logs
|
|
55
|
+
.map((_) => {
|
|
56
|
+
try {
|
|
57
|
+
return [CircleBridgeInterface.parseLog(_)];
|
|
58
|
+
}
|
|
59
|
+
catch (_a) {
|
|
60
|
+
try {
|
|
61
|
+
return [CircleBridgeAdapterInterface.parseLog(_)];
|
|
62
|
+
}
|
|
63
|
+
catch (_b) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
.flat();
|
|
69
|
+
if (matchingLogs.length == 0)
|
|
70
|
+
return [];
|
|
71
|
+
const message = matchingLogs.find((_) => _.name === 'MessageSent').args
|
|
72
|
+
.message;
|
|
73
|
+
const nonce = matchingLogs.find((_) => _.name === 'BridgedToken').args
|
|
74
|
+
.nonce;
|
|
75
|
+
const remoteChain = message.chain === chains_1.Chains.fuji ? chains_1.Chains.goerli : chains_1.Chains.fuji;
|
|
76
|
+
return [
|
|
77
|
+
{
|
|
78
|
+
chain,
|
|
79
|
+
// @ts-ignore
|
|
80
|
+
remoteChain,
|
|
81
|
+
txHash,
|
|
82
|
+
message,
|
|
83
|
+
nonce,
|
|
84
|
+
domain: 0,
|
|
85
|
+
nonceHash: ethers_1.ethers.utils.solidityKeccak256(['uint32', 'uint256'], [0, nonce]),
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
attemptCircleAttestationSubmission(message) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
const connection = this.multiProvider.getChainConnection(message.remoteChain);
|
|
93
|
+
const transmitter = core_1.ICircleMessageTransmitter__factory.connect(this.circleBridgeAdapterConfig()[message.remoteChain]
|
|
94
|
+
.messageTransmitterAddress, connection.signer);
|
|
95
|
+
const alreadyProcessed = yield transmitter.usedNonces(message.nonceHash);
|
|
96
|
+
if (alreadyProcessed) {
|
|
97
|
+
console.log(`Message sent on ${message.txHash} was already processed`);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const messageHash = ethers_1.ethers.utils.keccak256(message.message);
|
|
101
|
+
const attestationsB = yield (0, cross_fetch_1.default)(`https://iris-api-sandbox.circle.com/attestations/${messageHash}`);
|
|
102
|
+
const attestations = yield attestationsB.json();
|
|
103
|
+
if (attestations.status !== 'complete') {
|
|
104
|
+
console.log(`Attestations not available for message nonce ${message.nonce} on ${message.txHash}`);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
console.log(`Ready to submit attestations for message ${message.nonce}`);
|
|
108
|
+
const tx = yield transmitter.receiveMessage(message.message, attestations.attestation);
|
|
109
|
+
console.log(`Submitted attestations in ${yield connection.getTxUrl(tx)}`);
|
|
110
|
+
yield connection.handleTx(tx);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.TokenBridgeApp = TokenBridgeApp;
|
|
115
|
+
//# sourceMappingURL=TokenBridgeApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenBridgeApp.js","sourceRoot":"","sources":["../../../src/deploy/middleware/TokenBridgeApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CircleBridgeAdapter, TokenBridgeRouter } from '@hyperlane-xyz/core';
|
|
2
|
+
import { HyperlaneCore } from '../../core/HyperlaneCore';
|
|
3
|
+
import { TokenBridgeContracts, TokenBridgeFactories } from '../../middleware';
|
|
4
|
+
import { MultiProvider } from '../../providers/MultiProvider';
|
|
5
|
+
import { ChainMap, ChainName } from '../../types';
|
|
6
|
+
import { HyperlaneRouterDeployer } from '../router/HyperlaneRouterDeployer';
|
|
7
|
+
import { RouterConfig } from '../router/types';
|
|
8
|
+
export declare enum BridgeAdapterType {
|
|
9
|
+
Circle = "Circle"
|
|
10
|
+
}
|
|
11
|
+
export interface CircleBridgeAdapterConfig {
|
|
12
|
+
type: BridgeAdapterType.Circle;
|
|
13
|
+
circleBridgeAddress: string;
|
|
14
|
+
messageTransmitterAddress: string;
|
|
15
|
+
usdcAddress: string;
|
|
16
|
+
circleDomainMapping: {
|
|
17
|
+
hyperlaneDomain: number;
|
|
18
|
+
circleDomain: number;
|
|
19
|
+
}[];
|
|
20
|
+
}
|
|
21
|
+
export declare type BridgeAdapterConfig = CircleBridgeAdapterConfig;
|
|
22
|
+
export declare type TokenBridgeConfig = RouterConfig & {
|
|
23
|
+
bridgeAdapterConfigs: BridgeAdapterConfig[];
|
|
24
|
+
};
|
|
25
|
+
export declare class TokenBridgeDeployer<Chain extends ChainName> extends HyperlaneRouterDeployer<Chain, TokenBridgeConfig, TokenBridgeContracts, TokenBridgeFactories> {
|
|
26
|
+
protected core: HyperlaneCore<Chain>;
|
|
27
|
+
protected create2salt: string;
|
|
28
|
+
constructor(multiProvider: MultiProvider<Chain>, configMap: ChainMap<Chain, TokenBridgeConfig>, core: HyperlaneCore<Chain>, create2salt?: string);
|
|
29
|
+
enrollRemoteRouters(contractsMap: ChainMap<Chain, TokenBridgeContracts>): Promise<void>;
|
|
30
|
+
deployContracts(chain: Chain, config: TokenBridgeConfig): Promise<TokenBridgeContracts>;
|
|
31
|
+
deployCircleBridgeAdapter(chain: Chain, adapterConfig: CircleBridgeAdapterConfig, owner: string, router: TokenBridgeRouter): Promise<CircleBridgeAdapter>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=TokenBridgeRouterDeployer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenBridgeRouterDeployer.d.ts","sourceRoot":"","sources":["../../../src/deploy/middleware/TokenBridgeRouterDeployer.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EAEnB,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EAErB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,MAAM,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACtB,EAAE,CAAC;CACL;AAED,oBAAY,mBAAmB,GAAG,yBAAyB,CAAC;AAE5D,oBAAY,iBAAiB,GAAG,YAAY,GAAG;IAC7C,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C,CAAC;AAEF,qBAAa,mBAAmB,CAC9B,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,CACrB;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,WAAW;gBAHrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,EACnC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAC1B,WAAW,SAA4B;IAK7C,mBAAmB,CACvB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IAcV,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,oBAAoB,CAAC;IA+B1B,yBAAyB,CAC7B,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,yBAAyB,EACxC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,mBAAmB,CAAC;CA2DhC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TokenBridgeDeployer = exports.BridgeAdapterType = void 0;
|
|
13
|
+
const ethers_1 = require("ethers");
|
|
14
|
+
const core_1 = require("@hyperlane-xyz/core");
|
|
15
|
+
const middleware_1 = require("../../middleware");
|
|
16
|
+
const objects_1 = require("../../utils/objects");
|
|
17
|
+
const HyperlaneRouterDeployer_1 = require("../router/HyperlaneRouterDeployer");
|
|
18
|
+
var BridgeAdapterType;
|
|
19
|
+
(function (BridgeAdapterType) {
|
|
20
|
+
BridgeAdapterType["Circle"] = "Circle";
|
|
21
|
+
})(BridgeAdapterType = exports.BridgeAdapterType || (exports.BridgeAdapterType = {}));
|
|
22
|
+
class TokenBridgeDeployer extends HyperlaneRouterDeployer_1.HyperlaneRouterDeployer {
|
|
23
|
+
constructor(multiProvider, configMap, core, create2salt = 'TokenBridgeDeployerSalt') {
|
|
24
|
+
super(multiProvider, configMap, middleware_1.tokenBridgeFactories, {});
|
|
25
|
+
this.core = core;
|
|
26
|
+
this.create2salt = create2salt;
|
|
27
|
+
}
|
|
28
|
+
enrollRemoteRouters(contractsMap) {
|
|
29
|
+
const _super = Object.create(null, {
|
|
30
|
+
enrollRemoteRouters: { get: () => super.enrollRemoteRouters }
|
|
31
|
+
});
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
// Enroll the TokenBridgeRouter with each other
|
|
34
|
+
yield _super.enrollRemoteRouters.call(this, contractsMap);
|
|
35
|
+
// Enroll the circle adapters with each other
|
|
36
|
+
yield _super.enrollRemoteRouters.call(this, (0, objects_1.objMap)(contractsMap, (_chain, contracts) => ({
|
|
37
|
+
router: contracts.circleBridgeAdapter,
|
|
38
|
+
})));
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// Custom contract deployment logic can go here
|
|
42
|
+
// If no custom logic is needed, call deployContract for the router
|
|
43
|
+
deployContracts(chain, config) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const initCalldata = core_1.TokenBridgeRouter__factory.createInterface().encodeFunctionData('initialize', [config.owner, config.connectionManager, config.interchainGasPaymaster]);
|
|
46
|
+
const router = yield this.deployContract(chain, 'router', [], {
|
|
47
|
+
create2Salt: this.create2salt,
|
|
48
|
+
initCalldata,
|
|
49
|
+
});
|
|
50
|
+
const bridgeAdapters = {};
|
|
51
|
+
for (const adapterConfig of config.bridgeAdapterConfigs) {
|
|
52
|
+
if (adapterConfig.type === BridgeAdapterType.Circle) {
|
|
53
|
+
bridgeAdapters.circleBridgeAdapter =
|
|
54
|
+
yield this.deployCircleBridgeAdapter(chain, adapterConfig, config.owner, router);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return Object.assign(Object.assign({}, bridgeAdapters), { router });
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
deployCircleBridgeAdapter(chain, adapterConfig, owner, router) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
const cc = this.multiProvider.getChainConnection(chain);
|
|
63
|
+
const initCalldata = core_1.CircleBridgeAdapter__factory.createInterface().encodeFunctionData('initialize', [
|
|
64
|
+
owner,
|
|
65
|
+
adapterConfig.circleBridgeAddress,
|
|
66
|
+
adapterConfig.messageTransmitterAddress,
|
|
67
|
+
router.address,
|
|
68
|
+
]);
|
|
69
|
+
const circleBridgeAdapter = yield this.deployContract(chain, 'circleBridgeAdapter', [], {
|
|
70
|
+
create2Salt: this.create2salt,
|
|
71
|
+
initCalldata,
|
|
72
|
+
});
|
|
73
|
+
if ((yield circleBridgeAdapter.tokenSymbolToAddress('USDC')) ===
|
|
74
|
+
ethers_1.ethers.constants.AddressZero) {
|
|
75
|
+
this.logger(`Set USDC token contract`);
|
|
76
|
+
yield cc.handleTx(circleBridgeAdapter.addToken(adapterConfig.usdcAddress, 'USDC'));
|
|
77
|
+
}
|
|
78
|
+
// Set domain mappings
|
|
79
|
+
for (const { circleDomain, hyperlaneDomain, } of adapterConfig.circleDomainMapping) {
|
|
80
|
+
const expectedCircleDomain = yield circleBridgeAdapter.hyperlaneDomainToCircleDomain(hyperlaneDomain);
|
|
81
|
+
if (expectedCircleDomain === circleDomain)
|
|
82
|
+
continue;
|
|
83
|
+
this.logger(`Set circle domain ${circleDomain} for hyperlane domain ${hyperlaneDomain}`);
|
|
84
|
+
yield cc.handleTx(circleBridgeAdapter.addDomain(hyperlaneDomain, circleDomain));
|
|
85
|
+
}
|
|
86
|
+
this.logger('Set CircleTokenBridgeAdapter on Router');
|
|
87
|
+
yield cc.handleTx(router.setTokenBridgeAdapter(adapterConfig.type, circleBridgeAdapter.address));
|
|
88
|
+
return circleBridgeAdapter;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.TokenBridgeDeployer = TokenBridgeDeployer;
|
|
93
|
+
//# sourceMappingURL=TokenBridgeRouterDeployer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenBridgeRouterDeployer.js","sourceRoot":"","sources":["../../../src/deploy/middleware/TokenBridgeRouterDeployer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAgC;AAEhC,8CAK6B;AAG7B,iDAI0B;AAG1B,iDAA6C;AAC7C,+EAA4E;AAG5E,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;AACnB,CAAC,EAFW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAE5B;AAmBD,MAAa,mBAEX,SAAQ,iDAKT;IACC,YACE,aAAmC,EACnC,SAA6C,EACnC,IAA0B,EAC1B,cAAc,yBAAyB;QAEjD,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,iCAAoB,EAAE,EAAE,CAAC,CAAC;QAHhD,SAAI,GAAJ,IAAI,CAAsB;QAC1B,gBAAW,GAAX,WAAW,CAA4B;IAGnD,CAAC;IAEK,mBAAmB,CACvB,YAAmD;;;;;YAEnD,+CAA+C;YAC/C,MAAM,OAAM,mBAAmB,YAAC,YAAY,CAAC,CAAC;YAE9C,6CAA6C;YAC7C,MAAM,OAAM,mBAAmB,YAC7B,IAAA,gBAAM,EAAC,YAAY,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;gBAC3C,MAAM,EAAE,SAAS,CAAC,mBAAoB;aACvC,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;KAAA;IAED,+CAA+C;IAC/C,mEAAmE;IAC7D,eAAe,CACnB,KAAY,EACZ,MAAyB;;YAEzB,MAAM,YAAY,GAChB,iCAA0B,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAC7D,YAAY,EACZ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,sBAAsB,CAAC,CACxE,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC5D,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY;aACb,CAAC,CAAC;YAEH,MAAM,cAAc,GAAkC,EAAE,CAAC;YAEzD,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,oBAAoB,EAAE;gBACvD,IAAI,aAAa,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM,EAAE;oBACnD,cAAc,CAAC,mBAAmB;wBAChC,MAAM,IAAI,CAAC,yBAAyB,CAClC,KAAK,EACL,aAAa,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CACP,CAAC;iBACL;aACF;YAED,uCACK,cAAc,KACjB,MAAM,IACN;QACJ,CAAC;KAAA;IAEK,yBAAyB,CAC7B,KAAY,EACZ,aAAwC,EACxC,KAAa,EACb,MAAyB;;YAEzB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,YAAY,GAChB,mCAA4B,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAC/D,YAAY,EACZ;gBACE,KAAK;gBACL,aAAa,CAAC,mBAAmB;gBACjC,aAAa,CAAC,yBAAyB;gBACvC,MAAM,CAAC,OAAO;aACf,CACF,CAAC;YACJ,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,cAAc,CACnD,KAAK,EACL,qBAAqB,EACrB,EAAE,EACF;gBACE,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY;aACb,CACF,CAAC;YAEF,IACE,CAAC,MAAM,mBAAmB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACxD,eAAM,CAAC,SAAS,CAAC,WAAW,EAC5B;gBACA,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBACvC,MAAM,EAAE,CAAC,QAAQ,CACf,mBAAmB,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAChE,CAAC;aACH;YACD,sBAAsB;YACtB,KAAK,MAAM,EACT,YAAY,EACZ,eAAe,GAChB,IAAI,aAAa,CAAC,mBAAmB,EAAE;gBACtC,MAAM,oBAAoB,GACxB,MAAM,mBAAmB,CAAC,6BAA6B,CACrD,eAAe,CAChB,CAAC;gBACJ,IAAI,oBAAoB,KAAK,YAAY;oBAAE,SAAS;gBAEpD,IAAI,CAAC,MAAM,CACT,qBAAqB,YAAY,yBAAyB,eAAe,EAAE,CAC5E,CAAC;gBACF,MAAM,EAAE,CAAC,QAAQ,CACf,mBAAmB,CAAC,SAAS,CAAC,eAAe,EAAE,YAAY,CAAC,CAC7D,CAAC;aACH;YAED,IAAI,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;YACtD,MAAM,EAAE,CAAC,QAAQ,CACf,MAAM,CAAC,qBAAqB,CAC1B,aAAa,CAAC,IAAI,EAClB,mBAAmB,CAAC,OAAO,CAC5B,CACF,CAAC;YACF,OAAO,mBAAmB,CAAC;QAC7B,CAAC;KAAA;CACF;AAnID,kDAmIC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HyperlaneCore } from '../../core/HyperlaneCore';
|
|
2
|
+
import { V2CompatibilityContracts, V2CompatibilityFactories } from '../../middleware';
|
|
3
|
+
import { MultiProvider } from '../../providers/MultiProvider';
|
|
4
|
+
import { ChainMap, ChainName } from '../../types';
|
|
5
|
+
import { HyperlaneRouterDeployer } from '../router/HyperlaneRouterDeployer';
|
|
6
|
+
import { RouterConfig } from '../router/types';
|
|
7
|
+
export declare type V2CompatibilityConfig = RouterConfig & {
|
|
8
|
+
v1Domains: number[];
|
|
9
|
+
v2Domains: number[];
|
|
10
|
+
};
|
|
11
|
+
export declare class V2CompatibilityRouterDeployer<Chain extends ChainName> extends HyperlaneRouterDeployer<Chain, V2CompatibilityConfig, V2CompatibilityContracts, V2CompatibilityFactories> {
|
|
12
|
+
protected core: HyperlaneCore<Chain>;
|
|
13
|
+
protected create2salt: string;
|
|
14
|
+
constructor(multiProvider: MultiProvider<Chain>, configMap: ChainMap<Chain, V2CompatibilityConfig>, core: HyperlaneCore<Chain>, create2salt?: string);
|
|
15
|
+
deployContracts(chain: Chain, config: V2CompatibilityConfig): Promise<V2CompatibilityContracts>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=V2CompatibilityMiddlewareDeployer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"V2CompatibilityMiddlewareDeployer.d.ts","sourceRoot":"","sources":["../../../src/deploy/middleware/V2CompatibilityMiddlewareDeployer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EAEzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAY,qBAAqB,GAAG,YAAY,GAAG;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,qBAAa,6BAA6B,CACxC,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,CACzB;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,WAAW;gBAHrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,EACvC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAC1B,WAAW,SAAa;IAO9B,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,wBAAwB,CAAC;CAoBrC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.V2CompatibilityRouterDeployer = void 0;
|
|
13
|
+
const core_1 = require("@hyperlane-xyz/core");
|
|
14
|
+
const middleware_1 = require("../../middleware");
|
|
15
|
+
const HyperlaneRouterDeployer_1 = require("../router/HyperlaneRouterDeployer");
|
|
16
|
+
class V2CompatibilityRouterDeployer extends HyperlaneRouterDeployer_1.HyperlaneRouterDeployer {
|
|
17
|
+
constructor(multiProvider, configMap, core, create2salt = 'asdasdsd') {
|
|
18
|
+
super(multiProvider, configMap, middleware_1.v2CompatibilityFactories, {});
|
|
19
|
+
this.core = core;
|
|
20
|
+
this.create2salt = create2salt;
|
|
21
|
+
}
|
|
22
|
+
// Custom contract deployment logic can go here
|
|
23
|
+
// If no custom logic is needed, call deployContract for the router
|
|
24
|
+
deployContracts(chain, config) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
const initCalldata = core_1.V2CompatibilityRouter__factory.createInterface().encodeFunctionData('initialize', [config.owner, config.connectionManager, config.interchainGasPaymaster]);
|
|
27
|
+
const router = yield this.deployContract(chain, 'router', [], {
|
|
28
|
+
create2Salt: this.create2salt + 'router',
|
|
29
|
+
initCalldata,
|
|
30
|
+
});
|
|
31
|
+
this.logger(`Set domain mapping`, config.v1Domains, config.v2Domains);
|
|
32
|
+
yield this.multiProvider
|
|
33
|
+
.getChainConnection(chain)
|
|
34
|
+
.handleTx(router.mapDomains(config.v1Domains, config.v2Domains));
|
|
35
|
+
return {
|
|
36
|
+
router,
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.V2CompatibilityRouterDeployer = V2CompatibilityRouterDeployer;
|
|
42
|
+
//# sourceMappingURL=V2CompatibilityMiddlewareDeployer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"V2CompatibilityMiddlewareDeployer.js","sourceRoot":"","sources":["../../../src/deploy/middleware/V2CompatibilityMiddlewareDeployer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAqE;AAGrE,iDAI0B;AAG1B,+EAA4E;AAQ5E,MAAa,6BAEX,SAAQ,iDAKT;IACC,YACE,aAAmC,EACnC,SAAiD,EACvC,IAA0B,EAC1B,cAAc,UAAU;QAElC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,qCAAwB,EAAE,EAAE,CAAC,CAAC;QAHpD,SAAI,GAAJ,IAAI,CAAsB;QAC1B,gBAAW,GAAX,WAAW,CAAa;IAGpC,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IAC7D,eAAe,CACnB,KAAY,EACZ,MAA6B;;YAE7B,MAAM,YAAY,GAChB,qCAA8B,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACjE,YAAY,EACZ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,sBAAsB,CAAC,CACxE,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC5D,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,QAAQ;gBACxC,YAAY;aACb,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,IAAI,CAAC,aAAa;iBACrB,kBAAkB,CAAC,KAAK,CAAC;iBACzB,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAEnE,OAAO;gBACL,MAAM;aACP,CAAC;QACJ,CAAC;KAAA;CACF;AA1CD,sEA0CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/deploy/middleware/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EAGzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAY,uBAAuB,GAAG,YAAY,CAAC;AAEnD,qBAAa,yBAAyB,CACpC,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,CAC3B;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,WAAW;gBAHrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,EACzC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAC1B,WAAW,SAAa;IAO9B,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/deploy/middleware/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EAGzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAY,uBAAuB,GAAG,YAAY,CAAC;AAEnD,qBAAa,yBAAyB,CACpC,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,CAC3B;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,WAAW;gBAHrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,EACzC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAC1B,WAAW,SAAa;IAO9B,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,0BAA0B,CAAC;CAcvC;AAED,oBAAY,qBAAqB,GAAG,YAAY,CAAC;AAEjD,qBAAa,uBAAuB,CAClC,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,CACzB;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IAEpC,SAAS,CAAC,WAAW;gBAJrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,EACvC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAE1B,WAAW,SAAa;IAO9B,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,wBAAwB,CAAC;CAcrC"}
|
|
@@ -23,11 +23,7 @@ class InterchainAccountDeployer extends HyperlaneRouterDeployer_1.HyperlaneRoute
|
|
|
23
23
|
// If no custom logic is needed, call deployContract for the router
|
|
24
24
|
deployContracts(chain, config) {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
const initCalldata = core_1.InterchainAccountRouter__factory.createInterface().encodeFunctionData('initialize', [
|
|
27
|
-
config.mailbox,
|
|
28
|
-
config.interchainGasPaymaster,
|
|
29
|
-
config.interchainSecurityModule,
|
|
30
|
-
]);
|
|
26
|
+
const initCalldata = core_1.InterchainAccountRouter__factory.createInterface().encodeFunctionData('initialize', [config.owner, config.connectionManager, config.interchainGasPaymaster]);
|
|
31
27
|
const router = yield this.deployContract(chain, 'router', [], {
|
|
32
28
|
create2Salt: this.create2salt + 'router',
|
|
33
29
|
initCalldata,
|
|
@@ -51,11 +47,7 @@ class InterchainQueryDeployer extends HyperlaneRouterDeployer_1.HyperlaneRouterD
|
|
|
51
47
|
// If no custom logic is needed, call deployContract for the router
|
|
52
48
|
deployContracts(chain, config) {
|
|
53
49
|
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
-
const initCalldata = core_1.InterchainQueryRouter__factory.createInterface().encodeFunctionData('initialize
|
|
55
|
-
config.mailbox,
|
|
56
|
-
config.interchainGasPaymaster,
|
|
57
|
-
config.interchainSecurityModule,
|
|
58
|
-
]);
|
|
50
|
+
const initCalldata = core_1.InterchainQueryRouter__factory.createInterface().encodeFunctionData('initialize', [config.owner, config.connectionManager, config.interchainGasPaymaster]);
|
|
59
51
|
const router = yield this.deployContract(chain, 'router', [], {
|
|
60
52
|
create2Salt: this.create2salt + 'router',
|
|
61
53
|
initCalldata,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/deploy/middleware/deploy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAG6B;AAG7B,iDAO0B;AAG1B,+EAA4E;AAK5E,MAAa,yBAEX,SAAQ,iDAKT;IACC,YACE,aAAmC,EACnC,SAAmD,EACzC,IAA0B,EAC1B,cAAc,UAAU;QAElC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,uCAA0B,EAAE,EAAE,CAAC,CAAC;QAHtD,SAAI,GAAJ,IAAI,CAAsB;QAC1B,gBAAW,GAAX,WAAW,CAAa;IAGpC,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IAC7D,eAAe,CACnB,KAAY,EACZ,MAA+B;;YAE/B,MAAM,YAAY,GAChB,uCAAgC,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACnE,YAAY,EACZ
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/deploy/middleware/deploy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAG6B;AAG7B,iDAO0B;AAG1B,+EAA4E;AAK5E,MAAa,yBAEX,SAAQ,iDAKT;IACC,YACE,aAAmC,EACnC,SAAmD,EACzC,IAA0B,EAC1B,cAAc,UAAU;QAElC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,uCAA0B,EAAE,EAAE,CAAC,CAAC;QAHtD,SAAI,GAAJ,IAAI,CAAsB;QAC1B,gBAAW,GAAX,WAAW,CAAa;IAGpC,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IAC7D,eAAe,CACnB,KAAY,EACZ,MAA+B;;YAE/B,MAAM,YAAY,GAChB,uCAAgC,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACnE,YAAY,EACZ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,sBAAsB,CAAC,CACxE,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC5D,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,QAAQ;gBACxC,YAAY;aACb,CAAC,CAAC;YACH,OAAO;gBACL,MAAM;aACP,CAAC;QACJ,CAAC;KAAA;CACF;AApCD,8DAoCC;AAID,MAAa,uBAEX,SAAQ,iDAKT;IACC,YACE,aAAmC,EACnC,SAAiD,EACvC,IAA0B;IACpC,0DAA0D;IAChD,cAAc,UAAU;QAElC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,qCAAwB,EAAE,EAAE,CAAC,CAAC;QAJpD,SAAI,GAAJ,IAAI,CAAsB;QAE1B,gBAAW,GAAX,WAAW,CAAa;IAGpC,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IAC7D,eAAe,CACnB,KAAY,EACZ,MAA6B;;YAE7B,MAAM,YAAY,GAChB,qCAA8B,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACjE,YAAY,EACZ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,sBAAsB,CAAC,CACxE,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC5D,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,QAAQ;gBACxC,YAAY;aACb,CAAC,CAAC;YACH,OAAO;gBACL,MAAM;aACP,CAAC;QACJ,CAAC;KAAA;CACF;AArCD,0DAqCC"}
|
package/dist/deploy/proxy.d.ts
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import type { types } from '@hyperlane-xyz/utils';
|
|
3
|
-
import {
|
|
3
|
+
import { BeaconProxyAddresses } from '../proxy';
|
|
4
4
|
import { ChainName } from '../types';
|
|
5
5
|
import { CheckerViolation } from './types';
|
|
6
|
-
export interface
|
|
7
|
-
type:
|
|
6
|
+
export interface UpgradeBeaconViolation extends CheckerViolation {
|
|
7
|
+
type: BeaconProxyAddresses['kind'];
|
|
8
8
|
data: {
|
|
9
|
-
|
|
9
|
+
proxiedAddress: BeaconProxyAddresses;
|
|
10
10
|
name: string;
|
|
11
11
|
};
|
|
12
12
|
actual: string;
|
|
13
13
|
expected: string;
|
|
14
14
|
}
|
|
15
|
-
export declare function
|
|
16
|
-
export declare function
|
|
17
|
-
export declare function proxyViolation<Chain extends ChainName>(chain: Chain, name: string, proxyAddresses: TransparentProxyAddresses, actual: types.Address): ProxyViolation;
|
|
15
|
+
export declare function upgradeBeaconImplementation(provider: ethers.providers.Provider, beacon: types.Address): Promise<types.Address>;
|
|
16
|
+
export declare function upgradeBeaconViolation<Chain extends ChainName>(chain: Chain, name: string, proxiedAddress: BeaconProxyAddresses, actual: types.Address): UpgradeBeaconViolation;
|
|
18
17
|
//# sourceMappingURL=proxy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/deploy/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/deploy/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,EAAE;QACJ,cAAc,EAAE,oBAAoB,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,MAAM,EAAE,KAAK,CAAC,OAAO,GACpB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAIxB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,SAAS,EAC5D,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,oBAAoB,EACpC,MAAM,EAAE,KAAK,CAAC,OAAO,GACpB,sBAAsB,CAWxB"}
|
package/dist/deploy/proxy.js
CHANGED
|
@@ -9,35 +9,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.upgradeBeaconViolation = exports.upgradeBeaconImplementation = void 0;
|
|
13
13
|
const ethers_1 = require("ethers");
|
|
14
|
-
function
|
|
14
|
+
function upgradeBeaconImplementation(provider, beacon) {
|
|
15
15
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
//
|
|
17
|
-
const storageValue = yield provider.getStorageAt(
|
|
16
|
+
// TODO: This should check the correct upgrade beacon controller
|
|
17
|
+
const storageValue = yield provider.getStorageAt(beacon, 0);
|
|
18
18
|
return ethers_1.ethers.utils.getAddress(storageValue.slice(26));
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
|
-
exports.
|
|
22
|
-
function
|
|
23
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
// Hardcoded storage slot for admin per EIP-1967
|
|
25
|
-
const storageValue = yield provider.getStorageAt(proxy, '0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103');
|
|
26
|
-
return ethers_1.ethers.utils.getAddress(storageValue.slice(26));
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
exports.proxyAdmin = proxyAdmin;
|
|
30
|
-
function proxyViolation(chain, name, proxyAddresses, actual) {
|
|
21
|
+
exports.upgradeBeaconImplementation = upgradeBeaconImplementation;
|
|
22
|
+
function upgradeBeaconViolation(chain, name, proxiedAddress, actual) {
|
|
31
23
|
return {
|
|
32
24
|
chain,
|
|
33
|
-
type:
|
|
25
|
+
type: proxiedAddress.kind,
|
|
34
26
|
actual,
|
|
35
|
-
expected:
|
|
27
|
+
expected: proxiedAddress.implementation,
|
|
36
28
|
data: {
|
|
37
29
|
name,
|
|
38
|
-
|
|
30
|
+
proxiedAddress,
|
|
39
31
|
},
|
|
40
32
|
};
|
|
41
33
|
}
|
|
42
|
-
exports.
|
|
34
|
+
exports.upgradeBeaconViolation = upgradeBeaconViolation;
|
|
43
35
|
//# sourceMappingURL=proxy.js.map
|
package/dist/deploy/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/deploy/proxy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAgC;AAmBhC,SAAsB,
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/deploy/proxy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAgC;AAmBhC,SAAsB,2BAA2B,CAC/C,QAAmC,EACnC,MAAqB;;QAErB,gEAAgE;QAChE,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CAAA;AAPD,kEAOC;AAED,SAAgB,sBAAsB,CACpC,KAAY,EACZ,IAAY,EACZ,cAAoC,EACpC,MAAqB;IAErB,OAAO;QACL,KAAK;QACL,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,MAAM;QACN,QAAQ,EAAE,cAAc,CAAC,cAAc;QACvC,IAAI,EAAE;YACJ,IAAI;YACJ,cAAc;SACf;KACF,CAAC;AACJ,CAAC;AAhBD,wDAgBC"}
|
|
@@ -8,6 +8,7 @@ export declare class HyperlaneRouterChecker<Chain extends ChainName, App extends
|
|
|
8
8
|
checkOwnership(chain: Chain): Promise<void>;
|
|
9
9
|
checkChain(chain: Chain): Promise<void>;
|
|
10
10
|
checkEnrolledRouters(chain: Chain): Promise<void>;
|
|
11
|
+
checkConnectionManager(chain: Chain): Promise<void>;
|
|
11
12
|
ownables(chain: Chain): Ownable[];
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=HyperlaneRouterChecker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneRouterChecker.d.ts","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterChecker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,sBAAsB,CACjC,KAAK,SAAS,SAAS,EACvB,GAAG,SAAS,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,EAC1C,MAAM,SAAS,YAAY,EAC3B,SAAS,SAAS,eAAe,CACjC,SAAQ,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC;IAC/C,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"HyperlaneRouterChecker.d.ts","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterChecker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,sBAAsB,CACjC,KAAK,SAAS,SAAS,EACvB,GAAG,SAAS,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,EAC1C,MAAM,SAAS,YAAY,EAC3B,SAAS,SAAS,eAAe,CACjC,SAAQ,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC;IAC/C,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAajD,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE;CAGlC"}
|
|
@@ -23,6 +23,7 @@ class HyperlaneRouterChecker extends HyperlaneAppChecker_1.HyperlaneAppChecker {
|
|
|
23
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
24
|
yield this.checkEnrolledRouters(chain);
|
|
25
25
|
yield this.checkOwnership(chain);
|
|
26
|
+
yield this.checkConnectionManager(chain);
|
|
26
27
|
});
|
|
27
28
|
}
|
|
28
29
|
checkEnrolledRouters(chain) {
|
|
@@ -36,6 +37,14 @@ class HyperlaneRouterChecker extends HyperlaneAppChecker_1.HyperlaneAppChecker {
|
|
|
36
37
|
})));
|
|
37
38
|
});
|
|
38
39
|
}
|
|
40
|
+
checkConnectionManager(chain) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const router = this.app.getContracts(chain).router;
|
|
43
|
+
const expectedConnectionManager = this.configMap[chain].connectionManager;
|
|
44
|
+
const routerConnectionManager = yield router.abacusConnectionManager();
|
|
45
|
+
utils_1.utils.assert(expectedConnectionManager === routerConnectionManager, `Incorrect ConnectionManager for ${chain}. Expected ${expectedConnectionManager}, found ${routerConnectionManager}`);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
39
48
|
ownables(chain) {
|
|
40
49
|
return [this.app.getContracts(chain).router];
|
|
41
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneRouterChecker.js","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterChecker.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAA6C;AAG7C,8DAA2D;AAG3D,gEAA6D;AAI7D,MAAa,sBAKX,SAAQ,yCAAuC;IAC/C,cAAc,CAAC,KAAY;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEK,UAAU,CAAC,KAAY;;YAC3B,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"HyperlaneRouterChecker.js","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterChecker.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAA6C;AAG7C,8DAA2D;AAG3D,gEAA6D;AAI7D,MAAa,sBAKX,SAAQ,yCAAuC;IAC/C,cAAc,CAAC,KAAY;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEK,UAAU,CAAC,KAAY;;YAC3B,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;KAAA;IAEK,oBAAoB,CAAC,KAAY;;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YAEnD,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAO,WAAW,EAAE,EAAE;gBACrD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;gBAC/D,MAAM,aAAa,GAAG,6BAAa,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACpD,aAAK,CAAC,MAAM,CAAC,OAAO,KAAK,aAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YACzE,CAAC,CAAA,CAAC,CACH,CAAC;QACJ,CAAC;KAAA;IAEK,sBAAsB,CAAC,KAAY;;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YACnD,MAAM,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC;YAE1E,MAAM,uBAAuB,GAAG,MAAM,MAAM,CAAC,uBAAuB,EAAE,CAAC;YAEvE,aAAK,CAAC,MAAM,CACV,yBAAyB,KAAK,uBAAuB,EACrD,mCAAmC,KAAK,cAAc,yBAAyB,WAAW,uBAAuB,EAAE,CACpH,CAAC;QACJ,CAAC;KAAA;IAED,QAAQ,CAAC,KAAY;QACnB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF;AA9CD,wDA8CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneRouterDeployer.d.ts","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterDeployer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HyperlaneRouterDeployer.d.ts","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterDeployer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,8BAAsB,uBAAuB,CAC3C,KAAK,SAAS,SAAS,EACvB,MAAM,SAAS,YAAY,EAC3B,SAAS,SAAS,eAAe,EACjC,SAAS,SAAS,eAAe,CACjC,SAAQ,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;gBAE5D,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAClC,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,eAAe;IAQrB,oBAAoB,CACxB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAmCV,mBAAmB,CACvB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,GAC7C,OAAO,CAAC,IAAI,CAAC;IA+CV,iBAAiB,CACrB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAsBV,MAAM,CACV,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,GACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CASvC"}
|
|
@@ -14,7 +14,6 @@ const debug_1 = require("debug");
|
|
|
14
14
|
const ethers_1 = require("ethers");
|
|
15
15
|
const utils_1 = require("@hyperlane-xyz/utils");
|
|
16
16
|
const chainMetadata_1 = require("../../consts/chainMetadata");
|
|
17
|
-
const domains_1 = require("../../domains");
|
|
18
17
|
const objects_1 = require("../../utils/objects");
|
|
19
18
|
const HyperlaneDeployer_1 = require("../HyperlaneDeployer");
|
|
20
19
|
class HyperlaneRouterDeployer extends HyperlaneDeployer_1.HyperlaneDeployer {
|
|
@@ -26,12 +25,13 @@ class HyperlaneRouterDeployer extends HyperlaneDeployer_1.HyperlaneDeployer {
|
|
|
26
25
|
this.logger(`Initializing connection clients (if not already)...`);
|
|
27
26
|
yield (0, objects_1.promiseObjAll)((0, objects_1.objMap)(contractsMap, (local, contracts) => __awaiter(this, void 0, void 0, function* () {
|
|
28
27
|
const chainConnection = this.multiProvider.getChainConnection(local);
|
|
29
|
-
// set
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
// set hyperlane connection manager if not already set
|
|
29
|
+
if (
|
|
30
|
+
// TODO rename ACM methods in router contract
|
|
31
|
+
(yield contracts.router.abacusConnectionManager()) ===
|
|
32
|
+
ethers_1.ethers.constants.AddressZero) {
|
|
33
|
+
this.logger(`Set abacus connection manager on ${local}`);
|
|
34
|
+
yield chainConnection.handleTx(contracts.router.setAbacusConnectionManager(this.configMap[local].connectionManager));
|
|
35
35
|
}
|
|
36
36
|
// set interchain gas paymaster if not already set (and configured)
|
|
37
37
|
const interchainGasPaymaster = this.configMap[local].interchainGasPaymaster;
|
|
@@ -54,28 +54,26 @@ class HyperlaneRouterDeployer extends HyperlaneDeployer_1.HyperlaneDeployer {
|
|
|
54
54
|
const deployedChains = Object.keys(contractsMap);
|
|
55
55
|
for (const [chain, contracts] of Object.entries(contractsMap)) {
|
|
56
56
|
const local = chain;
|
|
57
|
-
this.logger({ local });
|
|
58
57
|
const chainConnection = this.multiProvider.getChainConnection(local);
|
|
59
58
|
// only enroll chains which are deployed
|
|
60
59
|
const deployedRemoteChains = this.multiProvider
|
|
61
60
|
.remoteChains(local)
|
|
62
61
|
.filter((c) => deployedChains.includes(c));
|
|
63
|
-
this.logger({ deployedRemoteChains });
|
|
64
62
|
const enrollEntries = yield Promise.all(deployedRemoteChains.map((remote) => __awaiter(this, void 0, void 0, function* () {
|
|
65
63
|
const remoteDomain = chainMetadata_1.chainMetadata[remote].id;
|
|
66
64
|
const current = yield contracts.router.routers(remoteDomain);
|
|
67
65
|
const expected = utils_1.utils.addressToBytes32(contractsMap[remote].router.address);
|
|
68
|
-
return current !== expected ? [
|
|
66
|
+
return current !== expected ? [remote, expected] : undefined;
|
|
69
67
|
})));
|
|
70
68
|
const entries = enrollEntries.filter((entry) => entry !== undefined);
|
|
71
|
-
|
|
72
|
-
const domains = entries.map(([id]) => id);
|
|
69
|
+
const domains = entries.map(([chain]) => chainMetadata_1.chainMetadata[chain].id);
|
|
73
70
|
const addresses = entries.map(([, address]) => address);
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
if (domains.length > 0) {
|
|
72
|
+
yield _super.runIfOwner.call(this, local, contracts.router, () => __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
this.logger(`Enroll remote (${domains}) routers on ${local}`);
|
|
74
|
+
yield chainConnection.handleTx(contracts.router.enrollRemoteRouters(domains, addresses, chainConnection.overrides));
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
79
77
|
}
|
|
80
78
|
});
|
|
81
79
|
}
|