@hyperlane-xyz/sdk 13.2.0 → 13.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +36 -0
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/core/CoreDeployer.hardhat-test.js +5 -0
- package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
- package/dist/core/CosmosNativeCoreModule.d.ts.map +1 -1
- package/dist/core/CosmosNativeCoreModule.js +0 -1
- package/dist/core/CosmosNativeCoreModule.js.map +1 -1
- package/dist/core/EvmCoreModule.d.ts.map +1 -1
- package/dist/core/EvmCoreModule.hardhat-test.js +1 -2
- package/dist/core/EvmCoreModule.hardhat-test.js.map +1 -1
- package/dist/core/EvmCoreModule.js +7 -7
- package/dist/core/EvmCoreModule.js.map +1 -1
- package/dist/core/EvmCoreReader.d.ts.map +1 -1
- package/dist/core/EvmCoreReader.js +1 -1
- package/dist/core/EvmCoreReader.js.map +1 -1
- package/dist/core/EvmIcaModule.d.ts +3 -4
- package/dist/core/EvmIcaModule.d.ts.map +1 -1
- package/dist/core/EvmIcaModule.hardhat-test.js +25 -2
- package/dist/core/EvmIcaModule.hardhat-test.js.map +1 -1
- package/dist/core/EvmIcaModule.js +13 -11
- package/dist/core/EvmIcaModule.js.map +1 -1
- package/dist/core/HyperlaneRelayer.d.ts +20 -5
- package/dist/core/HyperlaneRelayer.d.ts.map +1 -1
- package/dist/core/types.d.ts +2801 -1286
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +0 -1
- package/dist/core/types.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +2 -1
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +11 -8
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/proxy.d.ts +1 -1
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +4 -5
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/gas/token-prices.d.ts.map +1 -1
- package/dist/gas/token-prices.js +23 -4
- package/dist/gas/token-prices.js.map +1 -1
- package/dist/ica/EvmIcaReader.d.ts +2 -5
- package/dist/ica/EvmIcaReader.d.ts.map +1 -1
- package/dist/ica/EvmIcaReader.hardhat-test.js +2 -7
- package/dist/ica/EvmIcaReader.hardhat-test.js.map +1 -1
- package/dist/ica/EvmIcaReader.js +10 -44
- package/dist/ica/EvmIcaReader.js.map +1 -1
- package/dist/ica/types.d.ts +965 -47
- package/dist/ica/types.d.ts.map +1 -1
- package/dist/ica/types.js +7 -22
- package/dist/ica/types.js.map +1 -1
- package/dist/index.d.ts +19 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -14
- package/dist/index.js.map +1 -1
- package/dist/ism/EvmIsmModule.hardhat-test.js +0 -5
- package/dist/ism/EvmIsmModule.hardhat-test.js.map +1 -1
- package/dist/ism/EvmIsmReader.d.ts +4 -1
- package/dist/ism/EvmIsmReader.d.ts.map +1 -1
- package/dist/ism/EvmIsmReader.js +66 -42
- package/dist/ism/EvmIsmReader.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts +0 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +4 -11
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/metadata/arbL2ToL1.hardhat-test.js +0 -1
- package/dist/ism/metadata/arbL2ToL1.hardhat-test.js.map +1 -1
- package/dist/ism/metadata/builder.d.ts +2 -2
- package/dist/ism/metadata/builder.d.ts.map +1 -1
- package/dist/ism/metadata/builder.hardhat-test.js +0 -1
- package/dist/ism/metadata/builder.hardhat-test.js.map +1 -1
- package/dist/ism/metadata/builder.js +3 -4
- package/dist/ism/metadata/builder.js.map +1 -1
- package/dist/ism/metadata/ccipread.d.ts +4 -4
- package/dist/ism/metadata/ccipread.d.ts.map +1 -1
- package/dist/ism/metadata/ccipread.hardhat-test.js +5 -37
- package/dist/ism/metadata/ccipread.hardhat-test.js.map +1 -1
- package/dist/ism/metadata/ccipread.js +4 -4
- package/dist/ism/metadata/ccipread.js.map +1 -1
- package/dist/ism/metadata/routing.d.ts.map +1 -1
- package/dist/ism/metadata/routing.js +8 -11
- package/dist/ism/metadata/routing.js.map +1 -1
- package/dist/ism/types.d.ts +59 -19
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js +17 -12
- package/dist/ism/types.js.map +1 -1
- package/dist/ism/utils.d.ts.map +1 -1
- package/dist/ism/utils.js +7 -5
- package/dist/ism/utils.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +3 -9
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/middleware/account/InterchainAccountChecker.d.ts +3 -6
- package/dist/middleware/account/InterchainAccountChecker.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccountChecker.js +2 -17
- package/dist/middleware/account/InterchainAccountChecker.js.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.d.ts +3 -8
- package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.js +11 -31
- package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
- package/dist/middleware/account/accounts.hardhat-test.js +10 -1
- package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
- package/dist/middleware/account/contracts.d.ts +1 -4
- package/dist/middleware/account/contracts.d.ts.map +1 -1
- package/dist/middleware/account/contracts.js +1 -4
- package/dist/middleware/account/contracts.js.map +1 -1
- package/dist/middleware/account/types.d.ts +2 -2
- package/dist/providers/transactions/submitter/builder/types.d.ts +10 -10
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts +2 -3
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js +20 -16
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js.map +1 -1
- package/dist/providers/transactions/transformer/ethersV5/types.d.ts +3 -3
- package/dist/providers/transactions/transformer/types.d.ts +3 -3
- package/dist/router/EvmRouterReader.d.ts +18 -0
- package/dist/router/EvmRouterReader.d.ts.map +1 -0
- package/dist/router/EvmRouterReader.js +60 -0
- package/dist/router/EvmRouterReader.js.map +1 -0
- package/dist/router/HyperlaneRouterChecker.d.ts +3 -0
- package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterChecker.js +14 -4
- package/dist/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/router/types.d.ts +79 -31
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +13 -4
- package/dist/router/types.js.map +1 -1
- package/dist/token/EvmERC20WarpModule.d.ts +13 -0
- package/dist/token/EvmERC20WarpModule.d.ts.map +1 -1
- package/dist/token/EvmERC20WarpModule.hardhat-test.js +354 -9
- package/dist/token/EvmERC20WarpModule.hardhat-test.js.map +1 -1
- package/dist/token/EvmERC20WarpModule.js +210 -9
- package/dist/token/EvmERC20WarpModule.js.map +1 -1
- package/dist/token/EvmERC20WarpRouteReader.d.ts +7 -11
- package/dist/token/EvmERC20WarpRouteReader.d.ts.map +1 -1
- package/dist/token/EvmERC20WarpRouteReader.js +98 -47
- package/dist/token/EvmERC20WarpRouteReader.js.map +1 -1
- package/dist/token/TokenMetadataMap.d.ts +1 -2
- package/dist/token/TokenMetadataMap.d.ts.map +1 -1
- package/dist/token/TokenMetadataMap.js +2 -20
- package/dist/token/TokenMetadataMap.js.map +1 -1
- package/dist/token/TokenStandard.d.ts.map +1 -1
- package/dist/token/TokenStandard.js +3 -0
- package/dist/token/TokenStandard.js.map +1 -1
- package/dist/token/config.d.ts +25 -0
- package/dist/token/config.d.ts.map +1 -1
- package/dist/token/config.js +25 -0
- package/dist/token/config.js.map +1 -1
- package/dist/token/configUtils.d.ts.map +1 -1
- package/dist/token/configUtils.js +13 -3
- package/dist/token/configUtils.js.map +1 -1
- package/dist/token/contracts.d.ts +37 -31
- package/dist/token/contracts.d.ts.map +1 -1
- package/dist/token/contracts.js +8 -1
- package/dist/token/contracts.js.map +1 -1
- package/dist/token/deploy.d.ts +12 -5
- package/dist/token/deploy.d.ts.map +1 -1
- package/dist/token/deploy.js +137 -5
- package/dist/token/deploy.js.map +1 -1
- package/dist/token/types.d.ts +2720 -101
- package/dist/token/types.d.ts.map +1 -1
- package/dist/token/types.js +76 -5
- package/dist/token/types.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/decimals.d.ts +4 -0
- package/dist/utils/decimals.d.ts.map +1 -0
- package/dist/utils/decimals.js +26 -0
- package/dist/utils/decimals.js.map +1 -0
- package/package.json +12 -8
|
@@ -1,18 +1,27 @@
|
|
|
1
|
+
// import { expect } from 'chai';
|
|
2
|
+
import { compareVersions } from 'compare-versions';
|
|
3
|
+
import { UINT_256_MAX } from 'starknet';
|
|
1
4
|
import { zeroAddress } from 'viem';
|
|
2
|
-
import { GasRouter__factory, MailboxClient__factory, TokenRouter__factory, } from '@hyperlane-xyz/core';
|
|
5
|
+
import { GasRouter__factory, IERC20__factory, MailboxClient__factory, MovableCollateralRouter__factory, ProxyAdmin__factory, TokenRouter__factory, } from '@hyperlane-xyz/core';
|
|
3
6
|
import { buildArtifact as coreBuildArtifact } from '@hyperlane-xyz/core/buildArtifact.js';
|
|
4
|
-
import { addressToBytes32, assert, deepEquals, difference, eqAddress, isObjEmpty, objMap, rootLogger, } from '@hyperlane-xyz/utils';
|
|
7
|
+
import { addressToBytes32, assert, deepEquals, difference, eqAddress, isObjEmpty, normalizeAddressEvm, objMap, promiseObjAll, rootLogger, } from '@hyperlane-xyz/utils';
|
|
5
8
|
import { transferOwnershipTransactions } from '../contracts/contracts.js';
|
|
6
9
|
import { HyperlaneModule, } from '../core/AbstractHyperlaneModule.js';
|
|
7
|
-
import { proxyAdminUpdateTxs } from '../deploy/proxy.js';
|
|
10
|
+
import { isInitialized, proxyAdmin, proxyAdminUpdateTxs, } from '../deploy/proxy.js';
|
|
8
11
|
import { ContractVerifier } from '../deploy/verify/ContractVerifier.js';
|
|
9
12
|
import { ExplorerLicenseType } from '../deploy/verify/types.js';
|
|
10
13
|
import { EvmHookModule } from '../hook/EvmHookModule.js';
|
|
11
14
|
import { EvmIsmModule } from '../ism/EvmIsmModule.js';
|
|
15
|
+
import { resolveRouterMapConfig } from '../router/types.js';
|
|
12
16
|
import { extractIsmAndHookFactoryAddresses } from '../utils/ism.js';
|
|
13
17
|
import { EvmERC20WarpRouteReader } from './EvmERC20WarpRouteReader.js';
|
|
14
18
|
import { HypERC20Deployer } from './deploy.js';
|
|
15
|
-
import { HypTokenRouterConfigSchema, derivedHookAddress, derivedIsmAddress, } from './types.js';
|
|
19
|
+
import { HypTokenRouterConfigSchema, VERSION_ERROR_MESSAGE, contractVersionMatchesDependency, derivedHookAddress, derivedIsmAddress, isMovableCollateralTokenConfig, } from './types.js';
|
|
20
|
+
const getAllowedRebalancingBridgesByDomain = (allowedRebalancingBridgesByDomain) => {
|
|
21
|
+
return objMap(allowedRebalancingBridgesByDomain, (_domainId, allowedRebalancingBridges) => {
|
|
22
|
+
return new Set(allowedRebalancingBridges.map((bridgeConfig) => normalizeAddressEvm(bridgeConfig.bridge)));
|
|
23
|
+
});
|
|
24
|
+
};
|
|
16
25
|
export class EvmERC20WarpModule extends HyperlaneModule {
|
|
17
26
|
multiProvider;
|
|
18
27
|
ccipContractCache;
|
|
@@ -61,7 +70,7 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
61
70
|
* 1. createOwnershipUpdateTxs() must always be LAST because no updates possible after ownership transferred
|
|
62
71
|
* 2. createRemoteRoutersUpdateTxs() must always be BEFORE createSetDestinationGasUpdateTxs() because gas enumeration depends on domains
|
|
63
72
|
*/
|
|
64
|
-
transactions.push(...(await this.createIsmUpdateTxs(actualConfig, expectedConfig)), ...(await this.createHookUpdateTxs(actualConfig, expectedConfig)), ...this.createEnrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createUnenrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createSetDestinationGasUpdateTxs(actualConfig, expectedConfig), ...this.createOwnershipUpdateTxs(actualConfig, expectedConfig), ...proxyAdminUpdateTxs(this.chainId, this.args.addresses.deployedTokenRoute, actualConfig, expectedConfig));
|
|
73
|
+
transactions.push(...(await this.upgradeWarpRouteImplementationTx(actualConfig, expectedConfig)), ...(await this.createIsmUpdateTxs(actualConfig, expectedConfig)), ...(await this.createHookUpdateTxs(actualConfig, expectedConfig)), ...this.createEnrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createUnenrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createSetDestinationGasUpdateTxs(actualConfig, expectedConfig), ...this.createAddRebalancersUpdateTxs(actualConfig, expectedConfig), ...this.createRemoveRebalancersUpdateTxs(actualConfig, expectedConfig), ...(await this.createAddAllowedBridgesUpdateTxs(actualConfig, expectedConfig)), ...this.createRemoveBridgesTxs(actualConfig, expectedConfig), ...this.createOwnershipUpdateTxs(actualConfig, expectedConfig), ...proxyAdminUpdateTxs(this.chainId, this.args.addresses.deployedTokenRoute, actualConfig, expectedConfig));
|
|
65
74
|
return transactions;
|
|
66
75
|
}
|
|
67
76
|
/**
|
|
@@ -128,6 +137,137 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
128
137
|
});
|
|
129
138
|
return updateTransactions;
|
|
130
139
|
}
|
|
140
|
+
createAddRebalancersUpdateTxs(actualConfig, expectedConfig) {
|
|
141
|
+
actualConfig.type;
|
|
142
|
+
if (!isMovableCollateralTokenConfig(expectedConfig) ||
|
|
143
|
+
!isMovableCollateralTokenConfig(actualConfig)) {
|
|
144
|
+
return [];
|
|
145
|
+
}
|
|
146
|
+
if (!expectedConfig.allowedRebalancers) {
|
|
147
|
+
return [];
|
|
148
|
+
}
|
|
149
|
+
const formattedExpectedRebalancers = new Set(expectedConfig.allowedRebalancers.map(normalizeAddressEvm));
|
|
150
|
+
const formattedActualRebalancers = new Set((actualConfig.allowedRebalancers ?? []).map(normalizeAddressEvm));
|
|
151
|
+
const rebalancersToAdd = Array.from(difference(formattedExpectedRebalancers, formattedActualRebalancers));
|
|
152
|
+
if (rebalancersToAdd.length === 0) {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
return rebalancersToAdd.map((rebalancerToAdd) => ({
|
|
156
|
+
chainId: this.chainId,
|
|
157
|
+
annotation: `Adding rebalancer role to "${rebalancerToAdd}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
|
|
158
|
+
to: this.args.addresses.deployedTokenRoute,
|
|
159
|
+
data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('addRebalancer(address)', [rebalancerToAdd]),
|
|
160
|
+
}));
|
|
161
|
+
}
|
|
162
|
+
createRemoveRebalancersUpdateTxs(actualConfig, expectedConfig) {
|
|
163
|
+
actualConfig.type;
|
|
164
|
+
if (!isMovableCollateralTokenConfig(expectedConfig) ||
|
|
165
|
+
!isMovableCollateralTokenConfig(actualConfig)) {
|
|
166
|
+
return [];
|
|
167
|
+
}
|
|
168
|
+
if (!expectedConfig.allowedRebalancers) {
|
|
169
|
+
return [];
|
|
170
|
+
}
|
|
171
|
+
const formattedExpectedRebalancers = new Set(expectedConfig.allowedRebalancers.map(normalizeAddressEvm));
|
|
172
|
+
const formattedActualRebalancers = new Set((actualConfig.allowedRebalancers ?? []).map(normalizeAddressEvm));
|
|
173
|
+
const rebalancersToRemove = Array.from(difference(formattedActualRebalancers, formattedExpectedRebalancers));
|
|
174
|
+
if (rebalancersToRemove.length === 0) {
|
|
175
|
+
return [];
|
|
176
|
+
}
|
|
177
|
+
return rebalancersToRemove.map((rebalancerToRemove) => ({
|
|
178
|
+
chainId: this.chainId,
|
|
179
|
+
annotation: `Removing rebalancer role from "${rebalancerToRemove}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
|
|
180
|
+
to: this.args.addresses.deployedTokenRoute,
|
|
181
|
+
data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('removeRebalancer(address)', [rebalancerToRemove]),
|
|
182
|
+
}));
|
|
183
|
+
}
|
|
184
|
+
async getAllowedBridgesApprovalTxs(actualConfig, expectedConfig) {
|
|
185
|
+
if (!isMovableCollateralTokenConfig(expectedConfig) ||
|
|
186
|
+
!isMovableCollateralTokenConfig(actualConfig)) {
|
|
187
|
+
return [];
|
|
188
|
+
}
|
|
189
|
+
if (!expectedConfig.allowedRebalancingBridges) {
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
192
|
+
const tokensToApproveByAllowedBridge = Object.values(expectedConfig.allowedRebalancingBridges).reduce((acc, allowedBridgesConfigs) => {
|
|
193
|
+
allowedBridgesConfigs.forEach((bridgeConfig) => {
|
|
194
|
+
acc[bridgeConfig.bridge] ??= [];
|
|
195
|
+
acc[bridgeConfig.bridge].push(...(bridgeConfig.approvedTokens ?? []));
|
|
196
|
+
});
|
|
197
|
+
return acc;
|
|
198
|
+
},
|
|
199
|
+
// allowed bridge -> tokens to approve
|
|
200
|
+
{});
|
|
201
|
+
const filteredTokensToApproveByAllowedBridge = await promiseObjAll(objMap(tokensToApproveByAllowedBridge, async (bridge, tokens) => {
|
|
202
|
+
const filteredApprovals = [];
|
|
203
|
+
for (const token of tokens) {
|
|
204
|
+
const instance = IERC20__factory.connect(token, this.multiProvider.getProvider(this.chainId));
|
|
205
|
+
const allowance = await instance.allowance(this.args.addresses.deployedTokenRoute, bridge);
|
|
206
|
+
if (allowance.toBigInt() !== UINT_256_MAX) {
|
|
207
|
+
filteredApprovals.push(token);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return filteredApprovals;
|
|
211
|
+
}));
|
|
212
|
+
return Object.entries(filteredTokensToApproveByAllowedBridge).flatMap(([bridge, tokensToApprove]) => tokensToApprove.map((tokenToApprove) => ({
|
|
213
|
+
chainId: this.chainId,
|
|
214
|
+
annotation: `Approving allowed bridge "${bridge}" to spend token "${tokenToApprove}" on behalf of "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
|
|
215
|
+
to: this.args.addresses.deployedTokenRoute,
|
|
216
|
+
data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('approveTokenForBridge(address,address)', [tokenToApprove, bridge]),
|
|
217
|
+
})));
|
|
218
|
+
}
|
|
219
|
+
async createAddAllowedBridgesUpdateTxs(actualConfig, expectedConfig) {
|
|
220
|
+
if (!isMovableCollateralTokenConfig(expectedConfig) ||
|
|
221
|
+
!isMovableCollateralTokenConfig(actualConfig)) {
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
if (!expectedConfig.allowedRebalancingBridges) {
|
|
225
|
+
return [];
|
|
226
|
+
}
|
|
227
|
+
const actualAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, actualConfig.allowedRebalancingBridges ?? {}));
|
|
228
|
+
const expectedAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, expectedConfig.allowedRebalancingBridges));
|
|
229
|
+
const rebalancingBridgesToAddByDomain = objMap(expectedAllowedBridges, (domain, bridges) => {
|
|
230
|
+
const actualBridges = actualAllowedBridges[domain] ?? new Set();
|
|
231
|
+
return Array.from(difference(bridges, actualBridges));
|
|
232
|
+
});
|
|
233
|
+
const bridgesToAllow = Object.entries(rebalancingBridgesToAddByDomain).flatMap(([domain, allowedBridgesToAdd]) => {
|
|
234
|
+
return allowedBridgesToAdd.map((bridgeToAdd) => {
|
|
235
|
+
return {
|
|
236
|
+
chainId: this.chainId,
|
|
237
|
+
annotation: `Adding allowed bridge "${bridgeToAdd}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
|
|
238
|
+
to: this.args.addresses.deployedTokenRoute,
|
|
239
|
+
data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('addBridge(uint32,address)', [domain, bridgeToAdd]),
|
|
240
|
+
};
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
const approvalTxs = await this.getAllowedBridgesApprovalTxs(actualConfig, expectedConfig);
|
|
244
|
+
return [...bridgesToAllow, ...approvalTxs];
|
|
245
|
+
}
|
|
246
|
+
createRemoveBridgesTxs(actualConfig, expectedConfig) {
|
|
247
|
+
if (!isMovableCollateralTokenConfig(expectedConfig) ||
|
|
248
|
+
!isMovableCollateralTokenConfig(actualConfig)) {
|
|
249
|
+
return [];
|
|
250
|
+
}
|
|
251
|
+
if (!expectedConfig.allowedRebalancingBridges) {
|
|
252
|
+
return [];
|
|
253
|
+
}
|
|
254
|
+
const actualAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, actualConfig.allowedRebalancingBridges ?? {}));
|
|
255
|
+
const expectedAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, expectedConfig.allowedRebalancingBridges));
|
|
256
|
+
const rebalancingBridgesToAddByDomain = objMap(actualAllowedBridges, (domain, bridges) => {
|
|
257
|
+
const expectedBridges = expectedAllowedBridges[domain] ?? new Set();
|
|
258
|
+
return Array.from(difference(bridges, expectedBridges));
|
|
259
|
+
});
|
|
260
|
+
return Object.entries(rebalancingBridgesToAddByDomain).flatMap(([domain, allowedBridgesToAdd]) => {
|
|
261
|
+
return allowedBridgesToAdd.map((bridgeToAdd) => {
|
|
262
|
+
return {
|
|
263
|
+
chainId: this.chainId,
|
|
264
|
+
annotation: `Removing allowed bridge "${bridgeToAdd}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
|
|
265
|
+
to: this.args.addresses.deployedTokenRoute,
|
|
266
|
+
data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('removeBridge(uint32,address)', [domain, bridgeToAdd]),
|
|
267
|
+
};
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
}
|
|
131
271
|
/**
|
|
132
272
|
* Create a transaction to update the remote routers for the Warp Route contract.
|
|
133
273
|
*
|
|
@@ -141,9 +281,9 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
141
281
|
return [];
|
|
142
282
|
}
|
|
143
283
|
assert(actualConfig.destinationGas, 'actualDestinationGas is undefined');
|
|
144
|
-
assert(expectedConfig.destinationGas, '
|
|
145
|
-
const
|
|
146
|
-
const
|
|
284
|
+
assert(expectedConfig.destinationGas, 'expectedDestinationGas is undefined');
|
|
285
|
+
const actualDestinationGas = resolveRouterMapConfig(this.multiProvider, actualConfig.destinationGas);
|
|
286
|
+
const expectedDestinationGas = resolveRouterMapConfig(this.multiProvider, expectedConfig.destinationGas);
|
|
147
287
|
if (!deepEquals(actualDestinationGas, expectedDestinationGas)) {
|
|
148
288
|
const contractToUpdate = GasRouter__factory.connect(this.args.addresses.deployedTokenRoute, this.multiProvider.getProvider(this.domainId));
|
|
149
289
|
// Convert { 1: 2, 2: 3, ... } to [{ 1: 2 }, { 2: 3 }]
|
|
@@ -296,6 +436,50 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
296
436
|
const { deployedHook } = hookModule.serialize();
|
|
297
437
|
return { deployedHook, updateTransactions };
|
|
298
438
|
}
|
|
439
|
+
/**
|
|
440
|
+
* Creates a transaction to upgrade the Warp Route implementation if the package version is below specified version.
|
|
441
|
+
*
|
|
442
|
+
* @param actualConfig - The current on-chain configuration
|
|
443
|
+
* @param expectedConfig - The expected configuration
|
|
444
|
+
* @returns An array of transactions to upgrade the implementation if needed
|
|
445
|
+
*/
|
|
446
|
+
async upgradeWarpRouteImplementationTx(actualConfig, expectedConfig) {
|
|
447
|
+
const updateTransactions = [];
|
|
448
|
+
// This should be impossible since we try catch the call to `PACKAGE_VERSION`
|
|
449
|
+
// in `EvmERC20WarpRouteReader.fetchPackageVersion`
|
|
450
|
+
assert(actualConfig.contractVersion, 'Actual contract version is undefined');
|
|
451
|
+
// Only upgrade if the user specifies a version
|
|
452
|
+
if (!expectedConfig.contractVersion) {
|
|
453
|
+
return [];
|
|
454
|
+
}
|
|
455
|
+
const comparisonValue = compareVersions(expectedConfig.contractVersion, actualConfig.contractVersion);
|
|
456
|
+
// Expected version is lower than actual version, no upgrade is possible
|
|
457
|
+
if (comparisonValue === -1) {
|
|
458
|
+
throw new Error(`Expected contract version ${expectedConfig.contractVersion} is lower than actual contract version ${actualConfig.contractVersion}`);
|
|
459
|
+
}
|
|
460
|
+
// Versions are the same, no upgrade needed
|
|
461
|
+
if (comparisonValue === 0) {
|
|
462
|
+
return [];
|
|
463
|
+
}
|
|
464
|
+
// You can only upgrade to the contract version (see `PackageVersioned`)
|
|
465
|
+
// defined by the @hyperlane-xyz/core package
|
|
466
|
+
assert(contractVersionMatchesDependency(expectedConfig.contractVersion), VERSION_ERROR_MESSAGE);
|
|
467
|
+
this.logger.info(`Upgrading Warp Route implementation on ${this.args.chain} from ${actualConfig.contractVersion} to ${expectedConfig.contractVersion}`);
|
|
468
|
+
const deployer = new HypERC20Deployer(this.multiProvider);
|
|
469
|
+
const constructorArgs = await deployer.constructorArgs(this.chainName, expectedConfig);
|
|
470
|
+
const implementation = await deployer.deployContract(this.chainName, expectedConfig.type, constructorArgs);
|
|
471
|
+
const provider = this.multiProvider.getProvider(this.domainId);
|
|
472
|
+
const proxyAddress = this.args.addresses.deployedTokenRoute;
|
|
473
|
+
const proxyAdminAddress = await proxyAdmin(provider, proxyAddress);
|
|
474
|
+
assert(await isInitialized(provider, proxyAddress), 'Proxy is not initialized');
|
|
475
|
+
updateTransactions.push({
|
|
476
|
+
chainId: this.chainId,
|
|
477
|
+
annotation: `Upgrading Warp Route implementation on ${this.args.chain}`,
|
|
478
|
+
to: proxyAdminAddress,
|
|
479
|
+
data: ProxyAdmin__factory.createInterface().encodeFunctionData('upgrade', [proxyAddress, implementation.address]),
|
|
480
|
+
});
|
|
481
|
+
return updateTransactions;
|
|
482
|
+
}
|
|
299
483
|
/**
|
|
300
484
|
* Deploys the Warp Route.
|
|
301
485
|
*
|
|
@@ -317,11 +501,28 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
317
501
|
chain,
|
|
318
502
|
config,
|
|
319
503
|
}, ccipContractCache, contractVerifier);
|
|
504
|
+
const actualConfig = await warpModule.read();
|
|
320
505
|
if (config.remoteRouters && !isObjEmpty(config.remoteRouters)) {
|
|
321
|
-
const enrollRemoteTxs = await warpModule.
|
|
506
|
+
const enrollRemoteTxs = await warpModule.createEnrollRemoteRoutersUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
|
|
322
507
|
const onlyTxIndex = 0;
|
|
323
508
|
await multiProvider.sendTransaction(chain, enrollRemoteTxs[onlyTxIndex]);
|
|
324
509
|
}
|
|
510
|
+
if (isMovableCollateralTokenConfig(config) &&
|
|
511
|
+
config.allowedRebalancers &&
|
|
512
|
+
config.allowedRebalancers.length !== 0) {
|
|
513
|
+
const addRebalancerTxs = await warpModule.createAddRebalancersUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
|
|
514
|
+
for (const tx of addRebalancerTxs) {
|
|
515
|
+
await multiProvider.sendTransaction(chain, tx);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
if (isMovableCollateralTokenConfig(config) &&
|
|
519
|
+
config.allowedRebalancingBridges &&
|
|
520
|
+
!isObjEmpty(config.allowedRebalancingBridges)) {
|
|
521
|
+
const addBridgesTxs = await warpModule.createAddAllowedBridgesUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
|
|
522
|
+
for (const tx of addBridgesTxs) {
|
|
523
|
+
await multiProvider.sendTransaction(chain, tx);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
325
526
|
return warpModule;
|
|
326
527
|
}
|
|
327
528
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvmERC20WarpModule.js","sourceRoot":"","sources":["../../src/token/EvmERC20WarpModule.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EvmERC20WarpModule.js","sourceRoot":"","sources":["../../src/token/EvmERC20WarpModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@ import { ContractVerifier } from '../deploy/verify/ContractVerifier.js';
|
|
|
3
3
|
import { EvmHookReader } from '../hook/EvmHookReader.js';
|
|
4
4
|
import { EvmIsmReader } from '../ism/EvmIsmReader.js';
|
|
5
5
|
import { MultiProvider } from '../providers/MultiProvider.js';
|
|
6
|
-
import {
|
|
6
|
+
import { EvmRouterReader } from '../router/EvmRouterReader.js';
|
|
7
|
+
import { DestinationGas } from '../router/types.js';
|
|
7
8
|
import { ChainName, ChainNameOrId, DeployedOwnableConfig } from '../types.js';
|
|
8
|
-
import { HyperlaneReader } from '../utils/HyperlaneReader.js';
|
|
9
9
|
import { TokenType } from './config.js';
|
|
10
10
|
import { DerivedTokenRouterConfig, HypTokenConfig, HypTokenRouterVirtualConfig, TokenMetadata, XERC20TokenMetadata } from './types.js';
|
|
11
|
-
export declare class EvmERC20WarpRouteReader extends
|
|
11
|
+
export declare class EvmERC20WarpRouteReader extends EvmRouterReader {
|
|
12
12
|
protected readonly multiProvider: MultiProvider;
|
|
13
13
|
protected readonly chain: ChainNameOrId;
|
|
14
14
|
protected readonly concurrency: number;
|
|
@@ -34,13 +34,6 @@ export declare class EvmERC20WarpRouteReader extends HyperlaneReader {
|
|
|
34
34
|
* @returns The derived token type, which can be one of: collateralVault, collateral, native, or synthetic.
|
|
35
35
|
*/
|
|
36
36
|
deriveTokenType(warpRouteAddress: Address): Promise<TokenType>;
|
|
37
|
-
/**
|
|
38
|
-
* Fetches the base metadata for a Warp Route contract.
|
|
39
|
-
*
|
|
40
|
-
* @param routerAddress - The address of the Warp Route contract.
|
|
41
|
-
* @returns The base metadata for the Warp Route contract, including the mailbox, owner, hook, and ism.
|
|
42
|
-
*/
|
|
43
|
-
fetchMailboxClientConfig(routerAddress: Address): Promise<DerivedMailboxClientConfig>;
|
|
44
37
|
fetchXERC20Config(xERC20Address: Address, warpRouteAddress: Address): Promise<XERC20TokenMetadata>;
|
|
45
38
|
/**
|
|
46
39
|
* Fetches the metadata for a token address.
|
|
@@ -52,15 +45,18 @@ export declare class EvmERC20WarpRouteReader extends HyperlaneReader {
|
|
|
52
45
|
fetchTokenConfig(type: TokenType, warpRouteAddress: Address): Promise<HypTokenConfig>;
|
|
53
46
|
private deriveHypXERC20TokenConfig;
|
|
54
47
|
private deriveHypXERC20LockboxTokenConfig;
|
|
48
|
+
private deriveHypCollateralCctpTokenConfig;
|
|
55
49
|
private deriveHypCollateralTokenConfig;
|
|
56
50
|
private deriveHypCollateralFiatTokenConfig;
|
|
57
51
|
private deriveHypCollateralVaultTokenConfig;
|
|
58
52
|
private deriveHypCollateralVaultRebaseTokenConfig;
|
|
59
53
|
private deriveHypSyntheticTokenConfig;
|
|
60
54
|
private deriveHypNativeTokenConfig;
|
|
55
|
+
private deriveOpL2TokenConfig;
|
|
56
|
+
private deriveOpL1TokenConfig;
|
|
61
57
|
private deriveHypSyntheticRebaseConfig;
|
|
62
58
|
fetchERC20Metadata(tokenAddress: Address): Promise<TokenMetadata>;
|
|
63
|
-
|
|
59
|
+
fetchPackageVersion(address: Address): Promise<string>;
|
|
64
60
|
fetchProxyAdminConfig(tokenAddress: Address): Promise<DeployedOwnableConfig>;
|
|
65
61
|
fetchDestinationGas(warpRouteAddress: Address): Promise<DestinationGas>;
|
|
66
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvmERC20WarpRouteReader.d.ts","sourceRoot":"","sources":["../../src/token/EvmERC20WarpRouteReader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EvmERC20WarpRouteReader.d.ts","sourceRoot":"","sources":["../../src/token/EvmERC20WarpRouteReader.ts"],"names":[],"mappings":"AAqBA,OAAO,EACL,OAAO,EASR,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAKxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAG9E,OAAO,EAA2B,SAAS,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAGL,wBAAwB,EACxB,cAAc,EAEd,2BAA2B,EAI3B,aAAa,EACb,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAGpB,qBAAa,uBAAwB,SAAQ,eAAe;IAgBxD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa;IACvC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAjBxC,SAAS,CAAC,QAAQ,CAAC,MAAM,uCAEtB;IAIH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAC7C,SAAS,EACT,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CACvD,CAAC;IACF,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;gBAGd,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,aAAa,EACpB,WAAW,GAAE,MAA0C,EAC1E,gBAAgB,CAAC,EAAE,gBAAgB;IAwCrC;;;;;;OAMG;IACG,qBAAqB,CACzB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,wBAAwB,CAAC;IA0E9B,4BAA4B,CAChC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,2BAA2B,CAAC;IA8BvC;;;;;OAKG;IACG,eAAe,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;IAuG9D,iBAAiB,CACrB,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,mBAAmB,CAAC;IAqC/B;;;;;;OAMG;IACG,gBAAgB,CACpB,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,cAAc,CAAC;YAcZ,0BAA0B;YAsB1B,iCAAiC;YAsBjC,kCAAkC;YAwBlC,8BAA8B;YAqB9B,kCAAkC;YAYlC,mCAAmC;YAYnC,yCAAyC;YAYzC,6BAA6B;YAW7B,0BAA0B;YAoB1B,qBAAqB;YAmBrB,qBAAqB;YAsBrB,8BAA8B;IAuBtC,kBAAkB,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAWjE,mBAAmB,CAAC,OAAO,EAAE,OAAO;IAoBpC,qBAAqB,CACzB,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,qBAAqB,CAAC;IAkB3B,mBAAmB,CACvB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,cAAc,CAAC;CAqB3B"}
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import { BigNumber, Contract
|
|
2
|
-
import { HypERC20Collateral__factory, HypERC20__factory, HypERC4626Collateral__factory, HypERC4626OwnerCollateral__factory, HypERC4626__factory, HypXERC20Lockbox__factory, HypXERC20__factory, IFiatToken__factory, IXERC20__factory, ProxyAdmin__factory, TokenRouter__factory, } from '@hyperlane-xyz/core';
|
|
1
|
+
import { BigNumber, Contract } from 'ethers';
|
|
2
|
+
import { HypERC20Collateral__factory, HypERC20__factory, HypERC4626Collateral__factory, HypERC4626OwnerCollateral__factory, HypERC4626__factory, HypXERC20Lockbox__factory, HypXERC20__factory, IFiatToken__factory, IXERC20__factory, MovableCollateralRouter__factory, OpL1NativeTokenBridge__factory, OpL2NativeTokenBridge__factory, PackageVersioned__factory, ProxyAdmin__factory, TokenBridgeCctp__factory, TokenRouter__factory, } from '@hyperlane-xyz/core';
|
|
3
3
|
import { buildArtifact as coreBuildArtifact } from '@hyperlane-xyz/core/buildArtifact.js';
|
|
4
|
-
import {
|
|
4
|
+
import { arrayToObject, assert, getLogLevel, isZeroishAddress, objFilter, objMap, promiseObjAll, rootLogger, } from '@hyperlane-xyz/utils';
|
|
5
5
|
import { DEFAULT_CONTRACT_READ_CONCURRENCY } from '../consts/concurrency.js';
|
|
6
6
|
import { ContractVerifier } from '../deploy/verify/ContractVerifier.js';
|
|
7
|
-
import { ExplorerLicenseType } from '../deploy/verify/types.js';
|
|
8
|
-
import { VerifyContractTypes } from '../deploy/verify/types.js';
|
|
7
|
+
import { ExplorerLicenseType, VerifyContractTypes, } from '../deploy/verify/types.js';
|
|
9
8
|
import { EvmHookReader } from '../hook/EvmHookReader.js';
|
|
10
9
|
import { EvmIsmReader } from '../ism/EvmIsmReader.js';
|
|
11
|
-
import {
|
|
12
|
-
import { HyperlaneReader } from '../utils/HyperlaneReader.js';
|
|
10
|
+
import { EvmRouterReader } from '../router/EvmRouterReader.js';
|
|
13
11
|
import { isProxy, proxyAdmin, proxyImplementation } from './../deploy/proxy.js';
|
|
14
12
|
import { NON_ZERO_SENDER_ADDRESS, TokenType } from './config.js';
|
|
15
|
-
import { HypTokenConfigSchema, } from './types.js';
|
|
13
|
+
import { HypTokenConfigSchema, isMovableCollateralTokenConfig, } from './types.js';
|
|
16
14
|
import { getExtraLockBoxConfigs } from './xerc20.js';
|
|
17
|
-
export class EvmERC20WarpRouteReader extends
|
|
15
|
+
export class EvmERC20WarpRouteReader extends EvmRouterReader {
|
|
18
16
|
multiProvider;
|
|
19
17
|
chain;
|
|
20
18
|
concurrency;
|
|
@@ -40,8 +38,11 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
|
|
|
40
38
|
[TokenType.collateral]: this.deriveHypCollateralTokenConfig.bind(this),
|
|
41
39
|
[TokenType.collateralFiat]: this.deriveHypCollateralFiatTokenConfig.bind(this),
|
|
42
40
|
[TokenType.collateralVault]: this.deriveHypCollateralVaultTokenConfig.bind(this),
|
|
41
|
+
[TokenType.collateralCctp]: this.deriveHypCollateralCctpTokenConfig.bind(this),
|
|
43
42
|
[TokenType.collateralVaultRebase]: this.deriveHypCollateralVaultRebaseTokenConfig.bind(this),
|
|
44
43
|
[TokenType.native]: this.deriveHypNativeTokenConfig.bind(this),
|
|
44
|
+
[TokenType.nativeOpL2]: this.deriveOpL2TokenConfig.bind(this),
|
|
45
|
+
[TokenType.nativeOpL1]: this.deriveOpL1TokenConfig.bind(this),
|
|
45
46
|
[TokenType.synthetic]: this.deriveHypSyntheticTokenConfig.bind(this),
|
|
46
47
|
[TokenType.syntheticRebase]: this.deriveHypSyntheticRebaseConfig.bind(this),
|
|
47
48
|
[TokenType.nativeScaled]: null,
|
|
@@ -62,19 +63,48 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
|
|
|
62
63
|
async deriveWarpRouteConfig(warpRouteAddress) {
|
|
63
64
|
// Derive the config type
|
|
64
65
|
const type = await this.deriveTokenType(warpRouteAddress);
|
|
65
|
-
const mailboxClientConfig = await this.fetchMailboxClientConfig(warpRouteAddress);
|
|
66
66
|
const tokenConfig = await this.fetchTokenConfig(type, warpRouteAddress);
|
|
67
|
-
const
|
|
67
|
+
const routerConfig = await this.readRouterConfig(warpRouteAddress);
|
|
68
68
|
// if the token has not been deployed as a proxy do not derive the config
|
|
69
69
|
// inevm warp routes are an example
|
|
70
70
|
const proxyAdmin = (await isProxy(this.provider, warpRouteAddress))
|
|
71
71
|
? await this.fetchProxyAdminConfig(warpRouteAddress)
|
|
72
72
|
: undefined;
|
|
73
73
|
const destinationGas = await this.fetchDestinationGas(warpRouteAddress);
|
|
74
|
+
let allowedRebalancers;
|
|
75
|
+
let allowedRebalancingBridges;
|
|
76
|
+
if (isMovableCollateralTokenConfig(tokenConfig)) {
|
|
77
|
+
const movableToken = MovableCollateralRouter__factory.connect(warpRouteAddress, this.provider);
|
|
78
|
+
try {
|
|
79
|
+
allowedRebalancers = await MovableCollateralRouter__factory.connect(warpRouteAddress, this.provider).allowedRebalancers();
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
// If this crashes it probably is because the token implementation has not been updated to be a movable collateral
|
|
83
|
+
this.logger.error(`Failed to get configured rebalancers for token at "${warpRouteAddress}" on chain ${this.chain}`, error);
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const knownDomains = await movableToken.domains();
|
|
87
|
+
const allowedBridgesByDomain = await promiseObjAll(objMap(arrayToObject(knownDomains.map((domain) => domain.toString())), (domain) => movableToken.allowedBridges(domain)));
|
|
88
|
+
allowedRebalancingBridges = objFilter(objMap(allowedBridgesByDomain, (_domain, bridges) => bridges.map((bridge) => ({ bridge }))),
|
|
89
|
+
// Remove domains that do not have allowed bridges
|
|
90
|
+
(_domain, bridges) => bridges.length !== 0);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
// If this crashes it probably is because the token implementation has not been updated to be a movable collateral
|
|
94
|
+
this.logger.error(`Failed to get allowed rebalancer bridges for token at "${warpRouteAddress}" on chain ${this.chain}`, error);
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
...routerConfig,
|
|
98
|
+
...tokenConfig,
|
|
99
|
+
allowedRebalancers,
|
|
100
|
+
allowedRebalancingBridges,
|
|
101
|
+
proxyAdmin,
|
|
102
|
+
destinationGas,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
74
105
|
return {
|
|
75
|
-
...
|
|
106
|
+
...routerConfig,
|
|
76
107
|
...tokenConfig,
|
|
77
|
-
remoteRouters,
|
|
78
108
|
proxyAdmin,
|
|
79
109
|
destinationGas,
|
|
80
110
|
};
|
|
@@ -185,33 +215,6 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
|
|
|
185
215
|
this.setSmartProviderLogLevel(getLogLevel()); // returns to original level defined by rootLogger
|
|
186
216
|
}
|
|
187
217
|
}
|
|
188
|
-
/**
|
|
189
|
-
* Fetches the base metadata for a Warp Route contract.
|
|
190
|
-
*
|
|
191
|
-
* @param routerAddress - The address of the Warp Route contract.
|
|
192
|
-
* @returns The base metadata for the Warp Route contract, including the mailbox, owner, hook, and ism.
|
|
193
|
-
*/
|
|
194
|
-
async fetchMailboxClientConfig(routerAddress) {
|
|
195
|
-
const warpRoute = HypERC20Collateral__factory.connect(routerAddress, this.provider);
|
|
196
|
-
const [mailbox, owner, hook, ism] = await Promise.all([
|
|
197
|
-
warpRoute.mailbox(),
|
|
198
|
-
warpRoute.owner(),
|
|
199
|
-
warpRoute.hook(),
|
|
200
|
-
warpRoute.interchainSecurityModule(),
|
|
201
|
-
]);
|
|
202
|
-
const derivedIsm = eqAddress(ism, constants.AddressZero)
|
|
203
|
-
? constants.AddressZero
|
|
204
|
-
: await this.evmIsmReader.deriveIsmConfig(ism);
|
|
205
|
-
const derivedHook = eqAddress(hook, constants.AddressZero)
|
|
206
|
-
? constants.AddressZero
|
|
207
|
-
: await this.evmHookReader.deriveHookConfig(hook);
|
|
208
|
-
return {
|
|
209
|
-
mailbox,
|
|
210
|
-
owner,
|
|
211
|
-
hook: derivedHook,
|
|
212
|
-
interchainSecurityModule: derivedIsm,
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
218
|
async fetchXERC20Config(xERC20Address, warpRouteAddress) {
|
|
216
219
|
// fetch the limits if possible
|
|
217
220
|
const rateLimitsABI = [
|
|
@@ -254,6 +257,7 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
|
|
|
254
257
|
throw new Error(`Provided unsupported token type "${type}" when fetching token metadata on chain "${this.chain}" at address "${warpRouteAddress}"`);
|
|
255
258
|
}
|
|
256
259
|
const config = await deriveFunction(warpRouteAddress);
|
|
260
|
+
config.contractVersion = await this.fetchPackageVersion(warpRouteAddress);
|
|
257
261
|
return HypTokenConfigSchema.parse(config);
|
|
258
262
|
}
|
|
259
263
|
async deriveHypXERC20TokenConfig(hypTokenAddress) {
|
|
@@ -285,6 +289,20 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
|
|
|
285
289
|
xERC20: xERC20Metadata.xERC20,
|
|
286
290
|
};
|
|
287
291
|
}
|
|
292
|
+
async deriveHypCollateralCctpTokenConfig(hypToken) {
|
|
293
|
+
const collateralConfig = await this.deriveHypCollateralTokenConfig(hypToken);
|
|
294
|
+
const tokenBridge = TokenBridgeCctp__factory.connect(hypToken, this.provider);
|
|
295
|
+
const messageTransmitter = await tokenBridge.messageTransmitter();
|
|
296
|
+
const tokenMessenger = await tokenBridge.tokenMessenger();
|
|
297
|
+
const urls = await tokenBridge.urls();
|
|
298
|
+
return {
|
|
299
|
+
...collateralConfig,
|
|
300
|
+
type: TokenType.collateralCctp,
|
|
301
|
+
messageTransmitter,
|
|
302
|
+
tokenMessenger,
|
|
303
|
+
urls,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
288
306
|
async deriveHypCollateralTokenConfig(hypToken) {
|
|
289
307
|
const hypCollateralTokenInstance = HypERC20Collateral__factory.connect(hypToken, this.provider);
|
|
290
308
|
const collateralTokenAddress = await hypCollateralTokenInstance.wrappedToken();
|
|
@@ -337,6 +355,30 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
|
|
|
337
355
|
isNft: false,
|
|
338
356
|
};
|
|
339
357
|
}
|
|
358
|
+
async deriveOpL2TokenConfig(_address) {
|
|
359
|
+
const config = await this.deriveHypNativeTokenConfig(_address);
|
|
360
|
+
const contract = OpL2NativeTokenBridge__factory.connect(_address, this.multiProvider.getProvider(this.chain));
|
|
361
|
+
const l2Bridge = await contract.l2Bridge();
|
|
362
|
+
return {
|
|
363
|
+
...config,
|
|
364
|
+
type: TokenType.nativeOpL2,
|
|
365
|
+
l2Bridge,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
async deriveOpL1TokenConfig(_address) {
|
|
369
|
+
const config = await this.deriveHypNativeTokenConfig(_address);
|
|
370
|
+
const contract = OpL1NativeTokenBridge__factory.connect(_address, this.multiProvider.getProvider(this.chain));
|
|
371
|
+
const urls = await contract.urls();
|
|
372
|
+
const portal = await contract.opPortal();
|
|
373
|
+
return {
|
|
374
|
+
...config,
|
|
375
|
+
type: TokenType.nativeOpL1,
|
|
376
|
+
urls,
|
|
377
|
+
portal,
|
|
378
|
+
// assume version 1 for now
|
|
379
|
+
version: 1,
|
|
380
|
+
};
|
|
381
|
+
}
|
|
340
382
|
async deriveHypSyntheticRebaseConfig(hypTokenAddress) {
|
|
341
383
|
const hypERC4626 = HypERC4626__factory.connect(hypTokenAddress, this.provider);
|
|
342
384
|
const [erc20TokenMetadata, collateralDomainId] = await Promise.all([
|
|
@@ -359,13 +401,22 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
|
|
|
359
401
|
]);
|
|
360
402
|
return { name, symbol, decimals, isNft: false };
|
|
361
403
|
}
|
|
362
|
-
async
|
|
363
|
-
const
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
404
|
+
async fetchPackageVersion(address) {
|
|
405
|
+
const contractWithVersion = PackageVersioned__factory.connect(address, this.provider);
|
|
406
|
+
try {
|
|
407
|
+
return await contractWithVersion.PACKAGE_VERSION();
|
|
408
|
+
}
|
|
409
|
+
catch (err) {
|
|
410
|
+
if (err.code && err.code === 'CALL_EXCEPTION') {
|
|
411
|
+
// PACKAGE_VERSION was introduced in @hyperlane-xyz/core@5.4.0
|
|
412
|
+
// See https://github.com/hyperlane-xyz/hyperlane-monorepo/releases/tag/%40hyperlane-xyz%2Fcore%405.4.0
|
|
413
|
+
// The real version of a contract without this function is below 5.4.0
|
|
414
|
+
return '5.3.9';
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
throw err;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
369
420
|
}
|
|
370
421
|
async fetchProxyAdminConfig(tokenAddress) {
|
|
371
422
|
const proxyAdminAddress = await proxyAdmin(this.provider, tokenAddress);
|