@hyperlane-xyz/sdk 42.0.0 → 43.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +12 -0
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/core/types.d.ts +47 -1635
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +2 -2
- package/dist/core/types.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +1 -1
- package/dist/deploy/proxy.d.ts +8 -40
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +4 -4
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/deploy/types.d.ts +1 -19
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/fee/EvmTokenFeeDeployer.d.ts.map +1 -1
- package/dist/fee/EvmTokenFeeDeployer.hardhat-test.js +68 -0
- package/dist/fee/EvmTokenFeeDeployer.hardhat-test.js.map +1 -1
- package/dist/fee/EvmTokenFeeDeployer.js +18 -10
- package/dist/fee/EvmTokenFeeDeployer.js.map +1 -1
- package/dist/fee/EvmTokenFeeModule.d.ts.map +1 -1
- package/dist/fee/EvmTokenFeeModule.hardhat-test.js +18 -8
- package/dist/fee/EvmTokenFeeModule.hardhat-test.js.map +1 -1
- package/dist/fee/EvmTokenFeeModule.js +8 -1
- package/dist/fee/EvmTokenFeeModule.js.map +1 -1
- package/dist/fee/EvmTokenFeeReader.d.ts +2 -2
- package/dist/fee/EvmTokenFeeReader.d.ts.map +1 -1
- package/dist/fee/EvmTokenFeeReader.js.map +1 -1
- package/dist/fee/feeConfigMapping.d.ts.map +1 -1
- package/dist/fee/feeConfigMapping.js +1 -0
- package/dist/fee/feeConfigMapping.js.map +1 -1
- package/dist/fee/types.d.ts +147 -646
- package/dist/fee/types.d.ts.map +1 -1
- package/dist/fee/types.js +26 -17
- package/dist/fee/types.js.map +1 -1
- package/dist/fork/types.d.ts +125 -1924
- package/dist/fork/types.d.ts.map +1 -1
- package/dist/fork/types.js +3 -3
- package/dist/fork/types.js.map +1 -1
- package/dist/gas/oracle/types.d.ts +5 -56
- package/dist/gas/oracle/types.d.ts.map +1 -1
- package/dist/hook/EvmHookModule.d.ts.map +1 -1
- package/dist/hook/EvmHookModule.hardhat-test.js +12 -1
- package/dist/hook/EvmHookModule.hardhat-test.js.map +1 -1
- package/dist/hook/EvmHookModule.js +3 -0
- package/dist/hook/EvmHookModule.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.d.ts +12 -0
- package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.hardhat-test.d.ts +2 -0
- package/dist/hook/HyperlaneHookDeployer.hardhat-test.d.ts.map +1 -0
- package/dist/hook/HyperlaneHookDeployer.hardhat-test.js +322 -0
- package/dist/hook/HyperlaneHookDeployer.hardhat-test.js.map +1 -0
- package/dist/hook/HyperlaneHookDeployer.js +262 -5
- package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
- package/dist/hook/types.d.ts +44 -319
- package/dist/hook/types.d.ts.map +1 -1
- package/dist/hook/types.js +18 -11
- package/dist/hook/types.js.map +1 -1
- package/dist/ica/types.d.ts +35 -900
- package/dist/ica/types.d.ts.map +1 -1
- package/dist/ica/types.js +1 -1
- package/dist/ica/types.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ism/EvmIsmModule.d.ts +1 -1
- package/dist/ism/EvmIsmModule.d.ts.map +1 -1
- package/dist/ism/EvmIsmModule.hardhat-test.js +35 -1
- package/dist/ism/EvmIsmModule.hardhat-test.js.map +1 -1
- package/dist/ism/EvmIsmModule.js +15 -11
- package/dist/ism/EvmIsmModule.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts +3 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +61 -3
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +42 -6
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/types.d.ts +48 -330
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js +8 -10
- package/dist/ism/types.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +537 -10384
- package/dist/metadata/agentConfig.d.ts.map +1 -1
- package/dist/metadata/agentConfig.js +14 -16
- package/dist/metadata/agentConfig.js.map +1 -1
- package/dist/metadata/chainMetadataTypes.d.ts +70 -4678
- package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
- package/dist/metadata/chainMetadataTypes.js +5 -5
- package/dist/metadata/chainMetadataTypes.js.map +1 -1
- package/dist/metadata/customZodTypes.d.ts +5 -5
- package/dist/metadata/customZodTypes.d.ts.map +1 -1
- package/dist/metadata/customZodTypes.js +4 -5
- package/dist/metadata/customZodTypes.js.map +1 -1
- package/dist/metadata/deploymentArtifacts.d.ts +1 -13
- package/dist/metadata/deploymentArtifacts.d.ts.map +1 -1
- package/dist/metadata/matchingList.d.ts +12 -40
- package/dist/metadata/matchingList.d.ts.map +1 -1
- package/dist/metadata/warpRouteConfig.d.ts +8 -114
- package/dist/metadata/warpRouteConfig.d.ts.map +1 -1
- package/dist/metadata/warpRouteConfig.js +3 -3
- package/dist/metadata/warpRouteConfig.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +12 -8
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.test.js +22 -3
- package/dist/middleware/account/InterchainAccount.test.js.map +1 -1
- package/dist/middleware/account/icaCalls.d.ts +13 -145
- package/dist/middleware/account/icaCalls.d.ts.map +1 -1
- package/dist/middleware/account/types.d.ts +11 -105
- package/dist/middleware/account/types.d.ts.map +1 -1
- package/dist/predicate/PredicateApiClient.d.ts +1 -11
- package/dist/predicate/PredicateApiClient.d.ts.map +1 -1
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +3 -2
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/providers/transactions/submitter/builder/types.d.ts +13 -280
- package/dist/providers/transactions/submitter/builder/types.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/builder/types.js +2 -4
- package/dist/providers/transactions/submitter/builder/types.js.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts +2 -0
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js +15 -7
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.test.d.ts +2 -0
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.test.d.ts.map +1 -0
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.test.js +145 -0
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.test.js.map +1 -0
- package/dist/providers/transactions/submitter/ethersV5/types.d.ts +30 -102
- package/dist/providers/transactions/submitter/ethersV5/types.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/types.js +3 -21
- package/dist/providers/transactions/submitter/ethersV5/types.js.map +1 -1
- package/dist/providers/transactions/submitter/types.d.ts +5 -51
- package/dist/providers/transactions/submitter/types.d.ts.map +1 -1
- package/dist/providers/transactions/types.d.ts +1 -9
- package/dist/providers/transactions/types.d.ts.map +1 -1
- package/dist/router/types.d.ts +33 -819
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +4 -4
- package/dist/router/types.js.map +1 -1
- package/dist/rpc/evm/EvmEventLogsReader.d.ts +19 -27
- package/dist/rpc/evm/EvmEventLogsReader.d.ts.map +1 -1
- package/dist/rpc/evm/EvmEventLogsReader.js +23 -0
- package/dist/rpc/evm/EvmEventLogsReader.js.map +1 -1
- package/dist/rpc/evm/EvmEventLogsReader.test.js +53 -1
- package/dist/rpc/evm/EvmEventLogsReader.test.js.map +1 -1
- package/dist/signers/turnkeyClient.d.ts +1 -15
- package/dist/signers/turnkeyClient.d.ts.map +1 -1
- package/dist/timelock/types.d.ts +8 -32
- package/dist/timelock/types.d.ts.map +1 -1
- package/dist/token/EvmWarpRouteReader.d.ts.map +1 -1
- package/dist/token/EvmWarpRouteReader.js +36 -19
- package/dist/token/EvmWarpRouteReader.js.map +1 -1
- package/dist/token/EvmWarpRouteReader.test.js +219 -2
- package/dist/token/EvmWarpRouteReader.test.js.map +1 -1
- package/dist/token/EvmXERC20Reader.d.ts +9 -21
- package/dist/token/EvmXERC20Reader.d.ts.map +1 -1
- package/dist/token/EvmXERC20Reader.js +24 -48
- package/dist/token/EvmXERC20Reader.js.map +1 -1
- package/dist/token/EvmXERC20Reader.test.js +97 -0
- package/dist/token/EvmXERC20Reader.test.js.map +1 -1
- package/dist/token/ITokenMetadata.d.ts +12 -130
- package/dist/token/ITokenMetadata.d.ts.map +1 -1
- package/dist/token/ITokenMetadata.js +2 -2
- package/dist/token/ITokenMetadata.js.map +1 -1
- package/dist/token/TokenConnection.d.ts +3 -35
- package/dist/token/TokenConnection.d.ts.map +1 -1
- package/dist/token/configUtils.d.ts.map +1 -1
- package/dist/token/configUtils.js +16 -0
- package/dist/token/configUtils.js.map +1 -1
- package/dist/token/configUtils.test.js +57 -10
- package/dist/token/configUtils.test.js.map +1 -1
- package/dist/token/deploy.hardhat-test.js +165 -5
- package/dist/token/deploy.hardhat-test.js.map +1 -1
- package/dist/token/types.d.ts +4012 -22806
- package/dist/token/types.d.ts.map +1 -1
- package/dist/token/types.js +10 -12
- package/dist/token/types.js.map +1 -1
- package/dist/token/xerc20-abi.d.ts +31 -0
- package/dist/token/xerc20-abi.d.ts.map +1 -1
- package/dist/token/xerc20-abi.js +40 -0
- package/dist/token/xerc20-abi.js.map +1 -1
- package/dist/token/xerc20-limits.d.ts +63 -0
- package/dist/token/xerc20-limits.d.ts.map +1 -0
- package/dist/token/xerc20-limits.js +80 -0
- package/dist/token/xerc20-limits.js.map +1 -0
- package/dist/token/xerc20.d.ts +30 -1
- package/dist/token/xerc20.d.ts.map +1 -1
- package/dist/token/xerc20.js +137 -54
- package/dist/token/xerc20.js.map +1 -1
- package/dist/token/xerc20.test.js +461 -169
- package/dist/token/xerc20.test.js.map +1 -1
- package/dist/types.d.ts +6 -36
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/cosmos.d.ts +113 -844
- package/dist/utils/cosmos.d.ts.map +1 -1
- package/dist/utils/cosmos.js +50 -91
- package/dist/utils/cosmos.js.map +1 -1
- package/dist/utils/schemas.d.ts +3 -3
- package/dist/utils/schemas.d.ts.map +1 -1
- package/dist/utils/schemas.js +2 -1
- package/dist/utils/schemas.js.map +1 -1
- package/dist/warp/types.d.ts +25 -367
- package/dist/warp/types.d.ts.map +1 -1
- package/package.json +11 -11
package/dist/token/xerc20.js
CHANGED
|
@@ -1,29 +1,128 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import { parseEventLogs } from 'viem';
|
|
3
|
-
import { HypXERC20Lockbox__factory
|
|
4
|
-
import { assert, normalizeAddress, rootLogger, } from '@hyperlane-xyz/utils';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { HypXERC20Lockbox__factory } from '@hyperlane-xyz/core';
|
|
4
|
+
import { assert, bytes32ToAddress, eqAddress, normalizeAddress, rootLogger, } from '@hyperlane-xyz/utils';
|
|
5
|
+
import { proxyImplementation } from '../deploy/proxy.js';
|
|
6
|
+
import { MultiProtocolProvider } from '../providers/MultiProtocolProvider.js';
|
|
7
7
|
import { EvmEventLogsReader } from '../rpc/evm/EvmEventLogsReader.js';
|
|
8
|
-
import { viemLogFromGetEventLogsResponse } from '../rpc/evm/utils.js';
|
|
9
|
-
import { throwIfNotMissingSelector } from '../utils/contract.js';
|
|
10
8
|
import { TokenType } from './config.js';
|
|
11
9
|
import { XERC20Type, isXERC20TokenConfig, } from './types.js';
|
|
12
|
-
import { CONFIGURATION_CHANGED_EVENT_SELECTOR, XERC20_VS_ABI, } from './xerc20-abi.js';
|
|
10
|
+
import { BRIDGE_LIMITS_SET_EVENT_SELECTOR, CONFIGURATION_CHANGED_EVENT_SELECTOR, XERC20_VS_ABI, } from './xerc20-abi.js';
|
|
11
|
+
import { limitsAreZero, readXERC20Limits } from './xerc20-limits.js';
|
|
13
12
|
// xERC20 tokens emit ConfigurationChanged rarely, so scanning them over the
|
|
14
13
|
// 500 block default is prohibitively slow. 1_000_000 was measured on base
|
|
15
14
|
// specifically, which declares no pagination.maxBlockRange: the token's full
|
|
16
15
|
// history was covered in 22 requests (~2.3s). Providers that cap the span
|
|
17
16
|
// reject the chunk, and getLogsFromRpc halves the range until it is accepted.
|
|
18
17
|
export const XERC20_LOG_SCAN_BLOCK_RANGE = 1_000_000;
|
|
19
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Reads the bridges the xERC20 holds non-zero limits for, other than the warp
|
|
20
|
+
* route's own router.
|
|
21
|
+
*
|
|
22
|
+
* Neither xERC20 interface can list its bridges: every limit getter is keyed by
|
|
23
|
+
* a bridge address, so the set of addresses is only observable through the
|
|
24
|
+
* events the token emitted when those limits were set. Those events are
|
|
25
|
+
* therefore read for the addresses alone, and every limit is then read from the
|
|
26
|
+
* token, so a bridge reconfigured by something that emits nothing this SDK
|
|
27
|
+
* parses is still reported at the limits it currently holds.
|
|
28
|
+
*/
|
|
29
|
+
export async function getExtraLockBoxConfigs({ xERC20Address, chain, multiProvider, logger = rootLogger, type: knownType, warpRouteAddress, }) {
|
|
30
|
+
const type = knownType ??
|
|
31
|
+
(await deriveXERC20TokenType(multiProvider, chain, xERC20Address));
|
|
32
|
+
const bridges = new Set(await discoverConfiguredBridges({
|
|
33
|
+
xERC20Address,
|
|
34
|
+
chain,
|
|
35
|
+
multiProvider,
|
|
36
|
+
logger,
|
|
37
|
+
type,
|
|
38
|
+
}));
|
|
39
|
+
if (warpRouteAddress) {
|
|
40
|
+
bridges.delete(normalizeAddress(warpRouteAddress));
|
|
41
|
+
}
|
|
42
|
+
if (bridges.size === 0) {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
const limitsByBridge = await readXERC20Limits({
|
|
46
|
+
multiProtocolProvider: MultiProtocolProvider.fromMultiProvider(multiProvider),
|
|
47
|
+
chain: multiProvider.getChainName(chain),
|
|
48
|
+
xERC20Address,
|
|
49
|
+
bridges: [...bridges],
|
|
50
|
+
type,
|
|
51
|
+
});
|
|
52
|
+
const extraBridges = [];
|
|
53
|
+
for (const bridge of bridges) {
|
|
54
|
+
const limits = limitsByBridge[bridge];
|
|
55
|
+
assert(limits, `Missing xERC20 limits for bridge ${bridge} on chain ${multiProvider.getChainName(chain)}`);
|
|
56
|
+
// A bridge holding no limits can neither mint nor burn, which is how a
|
|
57
|
+
// bridge is deactivated.
|
|
58
|
+
if (limitsAreZero(limits)) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
extraBridges.push({ lockbox: bridge, limits });
|
|
62
|
+
}
|
|
63
|
+
return extraBridges;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The event announcing a bridge's limits, whose signature differs by
|
|
67
|
+
* implementation. Both put the bridge in the only indexed parameter, so the
|
|
68
|
+
* scan below reads it out of topics[1] without decoding the payload.
|
|
69
|
+
*/
|
|
70
|
+
function bridgeLimitsEventSelector(type) {
|
|
71
|
+
return type === XERC20Type.Standard
|
|
72
|
+
? BRIDGE_LIMITS_SET_EVENT_SELECTOR
|
|
73
|
+
: CONFIGURATION_CHANGED_EVENT_SELECTOR;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Every address the token has ever announced limits for, whether or not those
|
|
77
|
+
* limits are still in force: the limits are read from the token afterwards, so
|
|
78
|
+
* a bridge the events show as deactivated is dropped on what it holds now
|
|
79
|
+
* rather than on what it was last announced with.
|
|
80
|
+
*
|
|
81
|
+
* A failed scan is raised rather than answered as an empty set, because the
|
|
82
|
+
* events are the only place the addresses exist and "no bridges" from a failed
|
|
83
|
+
* read is indistinguishable from a token that genuinely has none.
|
|
84
|
+
*/
|
|
85
|
+
async function discoverConfiguredBridges({ xERC20Address, chain, multiProvider, logger, type, }) {
|
|
20
86
|
const logsReader = EvmEventLogsReader.fromConfig({ chain, paginationBlockRange: XERC20_LOG_SCAN_BLOCK_RANGE }, multiProvider, logger);
|
|
21
|
-
|
|
87
|
+
// Resolved once and handed to both reads below. A reader left to derive it
|
|
88
|
+
// reads it over whichever source it was built on, and deriving it over the
|
|
89
|
+
// RPC bisects `eth_getCode` through historical blocks: a chain serving no
|
|
90
|
+
// archive state answers eth_getLogs over its whole history but refuses that
|
|
91
|
+
// bisection, so the RPC read would fail on the one thing it can do.
|
|
92
|
+
const query = {
|
|
22
93
|
contractAddress: xERC20Address,
|
|
23
|
-
eventTopic:
|
|
94
|
+
eventTopic: bridgeLimitsEventSelector(type),
|
|
95
|
+
fromBlock: await logsReader.getContractDeploymentBlock(xERC20Address),
|
|
96
|
+
};
|
|
97
|
+
let logs = await logsReader.getLogsByTopic(query);
|
|
98
|
+
const answeredByExplorer = multiProvider.tryGetEvmExplorerMetadataList(chain).length > 0;
|
|
99
|
+
if (logs.length === 0 && answeredByExplorer) {
|
|
100
|
+
// The token holds limits for at least the warp route's own router, so it
|
|
101
|
+
// has announced at least one bridge and an empty answer is an explorer that
|
|
102
|
+
// could not answer rather than a token with nothing to report.
|
|
103
|
+
//
|
|
104
|
+
// Deliberately this caller's policy rather than EvmEventLogsReader's: a
|
|
105
|
+
// timelock with no salted operations and a freshly deployed blacklist are
|
|
106
|
+
// both legitimately empty, and confirming those over the RPC would spend a
|
|
107
|
+
// whole-history scan to learn what the explorer already answered correctly.
|
|
108
|
+
logger.debug({
|
|
109
|
+
chain: multiProvider.getChainName(chain),
|
|
110
|
+
xERC20Address,
|
|
111
|
+
}, 'Block explorer announced no xERC20 bridges, re-reading over the RPC');
|
|
112
|
+
logs = await EvmEventLogsReader.fromConfig({
|
|
113
|
+
chain,
|
|
114
|
+
paginationBlockRange: XERC20_LOG_SCAN_BLOCK_RANGE,
|
|
115
|
+
useRPC: true,
|
|
116
|
+
}, multiProvider, logger).getLogsByTopic(query);
|
|
117
|
+
}
|
|
118
|
+
return bridgeAddressesFromLogs(logs, xERC20Address, chain, multiProvider);
|
|
119
|
+
}
|
|
120
|
+
function bridgeAddressesFromLogs(logs, xERC20Address, chain, multiProvider) {
|
|
121
|
+
return logs.map((log) => {
|
|
122
|
+
const [, bridgeTopic] = log.topics;
|
|
123
|
+
assert(bridgeTopic, `Bridge limits log of ${xERC20Address} on chain ${multiProvider.getChainName(chain)} carries no bridge topic`);
|
|
124
|
+
return normalizeAddress(bytes32ToAddress(bridgeTopic));
|
|
24
125
|
});
|
|
25
|
-
const viemLogs = logs.map(viemLogFromGetEventLogsResponse);
|
|
26
|
-
return getLockboxesFromLogs(viemLogs, multiProvider.getProvider(chain), chain, logger);
|
|
27
126
|
}
|
|
28
127
|
/**
|
|
29
128
|
* Parses ConfigurationChanged logs and keeps only the most recent configuration
|
|
@@ -52,40 +151,6 @@ export function latestConfigurationPerBridge(logs) {
|
|
|
52
151
|
}
|
|
53
152
|
return latestPerBridge;
|
|
54
153
|
}
|
|
55
|
-
async function getLockboxesFromLogs(logs, provider, chain, logger) {
|
|
56
|
-
const lockboxPromises = [...latestConfigurationPerBridge(logs).entries()]
|
|
57
|
-
// Removing bridges where the limits are set to 0 because it is equivalent of being deactivated
|
|
58
|
-
// A bridge is active if EITHER bufferCap OR rateLimitPerSecond is non-zero
|
|
59
|
-
.filter(([, log]) => log.args.bufferCap !== 0n || log.args.rateLimitPerSecond !== 0n)
|
|
60
|
-
.map(async ([bridge, log]) => {
|
|
61
|
-
try {
|
|
62
|
-
const maybeXERC20Lockbox = IXERC20Lockbox__factory.connect(bridge, provider);
|
|
63
|
-
await maybeXERC20Lockbox.callStatic.XERC20();
|
|
64
|
-
return { bridge, log };
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
throwIfNotMissingSelector(error);
|
|
68
|
-
logger.debug(`Contract at address ${bridge} on chain ${chain} is not a XERC20Lockbox contract.`);
|
|
69
|
-
return undefined;
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
const lockboxes = await Promise.all(lockboxPromises);
|
|
73
|
-
const extraBridges = [];
|
|
74
|
-
for (const lockbox of lockboxes) {
|
|
75
|
-
if (!lockbox) {
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
extraBridges.push({
|
|
79
|
-
lockbox: lockbox.bridge,
|
|
80
|
-
limits: {
|
|
81
|
-
type: XERC20Type.Velo,
|
|
82
|
-
bufferCap: lockbox.log.args.bufferCap.toString(),
|
|
83
|
-
rateLimitPerSecond: lockbox.log.args.rateLimitPerSecond.toString(),
|
|
84
|
-
},
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
return extraBridges;
|
|
88
|
-
}
|
|
89
154
|
/**
|
|
90
155
|
* Derives bridge configurations for Velodrome XERC20 tokens.
|
|
91
156
|
* Extracts bufferCap and rateLimitPerSecond limits from warp deploy config.
|
|
@@ -236,13 +301,25 @@ export async function deriveStandardBridgesConfig(chains = [], warpDeployConfig,
|
|
|
236
301
|
}
|
|
237
302
|
return bridgesConfig;
|
|
238
303
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
304
|
+
/**
|
|
305
|
+
* Thrown when a contract exposes neither the Standard nor the Velodrome limit
|
|
306
|
+
* management interface, so which getter would answer its limits is unknown.
|
|
307
|
+
*
|
|
308
|
+
* Typed rather than a bare Error so a caller can tell it apart from a failure
|
|
309
|
+
* to read the bytecode at all, which says nothing about the contract and must
|
|
310
|
+
* not be treated as an answer.
|
|
311
|
+
*/
|
|
312
|
+
export class UnknownXERC20TypeError extends Error {
|
|
313
|
+
static {
|
|
314
|
+
this.prototype.name = this.name;
|
|
243
315
|
}
|
|
316
|
+
}
|
|
317
|
+
export async function deriveXERC20TokenType(multiProvider, chain, address) {
|
|
244
318
|
const provider = multiProvider.getProvider(chain);
|
|
245
319
|
let normalizedCode = (await provider.getCode(address)).toLowerCase();
|
|
320
|
+
if (normalizedCode === '0x') {
|
|
321
|
+
throw new Error(`Unable to detect XERC20 type for ${address}. Contract has no bytecode.`);
|
|
322
|
+
}
|
|
246
323
|
const setBufferCapSelector = ethers.utils
|
|
247
324
|
.id('setBufferCap(address,uint256)')
|
|
248
325
|
.slice(2, 10)
|
|
@@ -253,11 +330,17 @@ export async function deriveXERC20TokenType(multiProvider, chain, address) {
|
|
|
253
330
|
.toLowerCase();
|
|
254
331
|
// xERC20 tokens are commonly deployed behind a proxy whose bytecode does not
|
|
255
332
|
// embed the implementation's selectors; inspect the implementation in that case.
|
|
333
|
+
//
|
|
334
|
+
// Keyed on the EIP-1967 implementation slot alone. A UUPS proxy keeps its
|
|
335
|
+
// upgrade logic in the implementation and leaves the admin slot empty, so
|
|
336
|
+
// deciding this on an admin the way isProxy does would skip the only bytecode
|
|
337
|
+
// that carries the selectors and leave the token looking like neither type.
|
|
256
338
|
if (!normalizedCode.includes(setBufferCapSelector) &&
|
|
257
|
-
!normalizedCode.includes(setLimitsSelector)
|
|
258
|
-
(await isProxy(provider, address))) {
|
|
339
|
+
!normalizedCode.includes(setLimitsSelector)) {
|
|
259
340
|
const implementation = await proxyImplementation(provider, address);
|
|
260
|
-
|
|
341
|
+
if (!eqAddress(implementation, ethers.constants.AddressZero)) {
|
|
342
|
+
normalizedCode = (await provider.getCode(implementation)).toLowerCase();
|
|
343
|
+
}
|
|
261
344
|
}
|
|
262
345
|
// Prefer Velodrome if both selectors are present.
|
|
263
346
|
if (normalizedCode.includes(setBufferCapSelector)) {
|
|
@@ -267,6 +350,6 @@ export async function deriveXERC20TokenType(multiProvider, chain, address) {
|
|
|
267
350
|
return XERC20Type.Standard;
|
|
268
351
|
}
|
|
269
352
|
// Neither type detected
|
|
270
|
-
throw new
|
|
353
|
+
throw new UnknownXERC20TypeError(`Unable to detect XERC20 type for ${address}. Contract does not implement Standard or Velodrome XERC20 interface.`);
|
|
271
354
|
}
|
|
272
355
|
//# sourceMappingURL=xerc20.js.map
|
package/dist/token/xerc20.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xerc20.js","sourceRoot":"","sources":["../../src/token/xerc20.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xerc20.js","sourceRoot":"","sources":["../../src/token/xerc20.ts"],"names":[],"mappings":"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"}
|