@hyperlane-xyz/sdk 41.1.0 → 41.2.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/block-explorer/etherscan.d.ts +16 -0
- package/dist/block-explorer/etherscan.d.ts.map +1 -1
- package/dist/block-explorer/etherscan.js +42 -30
- package/dist/block-explorer/etherscan.js.map +1 -1
- package/dist/core/types.d.ts +136 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/deploy/proxy.d.ts +41 -4
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +38 -8
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/deploy/warp.d.ts.map +1 -1
- package/dist/deploy/warp.js +18 -1
- package/dist/deploy/warp.js.map +1 -1
- package/dist/ica/types.d.ts +80 -0
- package/dist/ica/types.d.ts.map +1 -1
- package/dist/ism/EvmIsmModule.d.ts +2 -0
- package/dist/ism/EvmIsmModule.d.ts.map +1 -1
- package/dist/ism/EvmIsmModule.hardhat-test.js +162 -9
- package/dist/ism/EvmIsmModule.hardhat-test.js.map +1 -1
- package/dist/ism/EvmIsmModule.js +35 -8
- package/dist/ism/EvmIsmModule.js.map +1 -1
- package/dist/ism/EvmIsmModule.test.d.ts +2 -0
- package/dist/ism/EvmIsmModule.test.d.ts.map +1 -0
- package/dist/ism/EvmIsmModule.test.js +200 -0
- package/dist/ism/EvmIsmModule.test.js.map +1 -0
- package/dist/ism/EvmIsmReader.d.ts +12 -0
- package/dist/ism/EvmIsmReader.d.ts.map +1 -1
- package/dist/ism/EvmIsmReader.js +29 -12
- package/dist/ism/EvmIsmReader.js.map +1 -1
- package/dist/ism/EvmIsmReader.test.js +227 -8
- package/dist/ism/EvmIsmReader.test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +166 -2
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +3 -2
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/blacklist.d.ts +62 -0
- package/dist/ism/blacklist.d.ts.map +1 -0
- package/dist/ism/blacklist.js +98 -0
- package/dist/ism/blacklist.js.map +1 -0
- package/dist/ism/types.test.js +20 -1
- package/dist/ism/types.test.js.map +1 -1
- package/dist/ism/utils.d.ts.map +1 -1
- package/dist/ism/utils.js +26 -8
- package/dist/ism/utils.js.map +1 -1
- package/dist/metadata/ChainMetadataManager.d.ts +6 -0
- package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
- package/dist/metadata/ChainMetadataManager.js +21 -16
- package/dist/metadata/ChainMetadataManager.js.map +1 -1
- package/dist/metadata/ChainMetadataManager.test.js +30 -0
- package/dist/metadata/ChainMetadataManager.test.js.map +1 -1
- package/dist/providers/SmartProvider/HyperlaneEtherscanProvider.d.ts.map +1 -1
- package/dist/providers/SmartProvider/HyperlaneEtherscanProvider.js +21 -6
- package/dist/providers/SmartProvider/HyperlaneEtherscanProvider.js.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.d.ts +4 -0
- package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.js +1 -1
- package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.test.js +82 -0
- package/dist/providers/SmartProvider/SmartProvider.test.js.map +1 -1
- package/dist/router/ProxiedRouterDeployer.d.ts.map +1 -1
- package/dist/router/ProxiedRouterDeployer.js +9 -0
- package/dist/router/ProxiedRouterDeployer.js.map +1 -1
- package/dist/router/types.d.ts +80 -0
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +4 -1
- package/dist/router/types.js.map +1 -1
- package/dist/router/types.test.js +76 -0
- package/dist/router/types.test.js.map +1 -1
- package/dist/rpc/evm/EvmEventLogsReader.d.ts +14 -0
- package/dist/rpc/evm/EvmEventLogsReader.d.ts.map +1 -1
- package/dist/rpc/evm/EvmEventLogsReader.hardhat-test.js +209 -3
- package/dist/rpc/evm/EvmEventLogsReader.hardhat-test.js.map +1 -1
- package/dist/rpc/evm/EvmEventLogsReader.js +96 -11
- package/dist/rpc/evm/EvmEventLogsReader.js.map +1 -1
- package/dist/rpc/evm/utils.d.ts +7 -11
- package/dist/rpc/evm/utils.d.ts.map +1 -1
- package/dist/rpc/evm/utils.hardhat-test.js +34 -9
- package/dist/rpc/evm/utils.hardhat-test.js.map +1 -1
- package/dist/rpc/evm/utils.js +10 -20
- package/dist/rpc/evm/utils.js.map +1 -1
- package/dist/test/contractDouble.d.ts +8 -0
- package/dist/test/contractDouble.d.ts.map +1 -0
- package/dist/test/contractDouble.js +12 -0
- package/dist/test/contractDouble.js.map +1 -0
- package/dist/timelock/evm/constants.d.ts +1 -0
- package/dist/timelock/evm/constants.d.ts.map +1 -1
- package/dist/timelock/evm/constants.js +1 -0
- package/dist/timelock/evm/constants.js.map +1 -1
- package/dist/timelock/evm/errors.d.ts +2 -0
- package/dist/timelock/evm/errors.d.ts.map +1 -0
- package/dist/timelock/evm/errors.js +19 -0
- package/dist/timelock/evm/errors.js.map +1 -0
- package/dist/timelock/evm/errors.test.d.ts +2 -0
- package/dist/timelock/evm/errors.test.d.ts.map +1 -0
- package/dist/timelock/evm/errors.test.js +33 -0
- package/dist/timelock/evm/errors.test.js.map +1 -0
- package/dist/token/EvmWarpModule.d.ts +13 -0
- package/dist/token/EvmWarpModule.d.ts.map +1 -1
- package/dist/token/EvmWarpModule.hardhat-test.js +35 -0
- package/dist/token/EvmWarpModule.hardhat-test.js.map +1 -1
- package/dist/token/EvmWarpModule.js +99 -2
- package/dist/token/EvmWarpModule.js.map +1 -1
- package/dist/token/EvmWarpModule.test.js +232 -8
- package/dist/token/EvmWarpModule.test.js.map +1 -1
- package/dist/token/configUtils.d.ts.map +1 -1
- package/dist/token/configUtils.js +2 -0
- package/dist/token/configUtils.js.map +1 -1
- package/dist/token/deploy.d.ts +1 -0
- package/dist/token/deploy.d.ts.map +1 -1
- package/dist/token/deploy.js +8 -1
- package/dist/token/deploy.js.map +1 -1
- package/dist/token/types.d.ts +6146 -2899
- package/dist/token/types.d.ts.map +1 -1
- package/dist/token/types.js +20 -3
- package/dist/token/types.js.map +1 -1
- package/dist/token/types.test.js +21 -0
- package/dist/token/types.test.js.map +1 -1
- package/dist/token/warpCheck.d.ts.map +1 -1
- package/dist/token/warpCheck.js +88 -2
- package/dist/token/warpCheck.js.map +1 -1
- package/dist/token/warpCheck.test.js +101 -1
- package/dist/token/warpCheck.test.js.map +1 -1
- package/package.json +11 -11
|
@@ -11,6 +11,15 @@ export const GetLogByTopicOptionsSchema = z.object({
|
|
|
11
11
|
toBlock: ZUint.optional(),
|
|
12
12
|
});
|
|
13
13
|
export const RequiredGetLogByTopicOptionsSchema = GetLogByTopicOptionsSchema.required();
|
|
14
|
+
function assertLogsMatchQuery(logs, query) {
|
|
15
|
+
const expectedAddress = query.contractAddress.toLowerCase();
|
|
16
|
+
const expectedTopic = query.eventTopic.toLowerCase();
|
|
17
|
+
for (const log of logs) {
|
|
18
|
+
assert(log.address.toLowerCase() === expectedAddress, `Log address ${log.address} does not match requested contract ${query.contractAddress}`);
|
|
19
|
+
assert(log.topics[0]?.toLowerCase() === expectedTopic, `Log topic does not match requested topic ${query.eventTopic}`);
|
|
20
|
+
assert(log.blockNumber >= query.fromBlock && log.blockNumber <= query.toBlock, `Log block ${log.blockNumber} is outside requested range ${query.fromBlock}-${query.toBlock}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
14
23
|
export class EvmEtherscanLikeEventLogsReader {
|
|
15
24
|
chain;
|
|
16
25
|
config;
|
|
@@ -69,6 +78,55 @@ export class EvmRpcEventLogsReader {
|
|
|
69
78
|
});
|
|
70
79
|
}
|
|
71
80
|
}
|
|
81
|
+
class ExplorerFallbackError extends Error {
|
|
82
|
+
errors;
|
|
83
|
+
isRecoverable;
|
|
84
|
+
constructor(chain, errors) {
|
|
85
|
+
super(`All configured block explorers failed on chain "${chain}"`, {
|
|
86
|
+
cause: errors.at(-1),
|
|
87
|
+
});
|
|
88
|
+
this.errors = errors;
|
|
89
|
+
this.isRecoverable = errors.every((error) => typeof error === 'object' &&
|
|
90
|
+
error !== null &&
|
|
91
|
+
Reflect.get(error, 'isRecoverable') === false)
|
|
92
|
+
? false
|
|
93
|
+
: undefined;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export class FallbackEvmEventLogsReader {
|
|
97
|
+
chain;
|
|
98
|
+
readers;
|
|
99
|
+
logger;
|
|
100
|
+
config;
|
|
101
|
+
constructor(chain, readers, logger, config = {}) {
|
|
102
|
+
this.chain = chain;
|
|
103
|
+
this.readers = readers;
|
|
104
|
+
this.logger = logger;
|
|
105
|
+
this.config = config;
|
|
106
|
+
assert(readers.length > 0, 'At least one explorer reader is required');
|
|
107
|
+
}
|
|
108
|
+
async executeWithFallback(operation, fallbackEnabled) {
|
|
109
|
+
if (!fallbackEnabled)
|
|
110
|
+
return operation(this.readers[0]);
|
|
111
|
+
const errors = [];
|
|
112
|
+
for (const [explorerIndex, reader] of this.readers.entries()) {
|
|
113
|
+
try {
|
|
114
|
+
return await operation(reader);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
errors.push(error);
|
|
118
|
+
this.logger.debug({ err: error, explorerIndex }, `Block explorer request failed on chain "${this.chain}"`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
throw new ExplorerFallbackError(this.chain, errors);
|
|
122
|
+
}
|
|
123
|
+
getContractDeploymentBlockNumber(address) {
|
|
124
|
+
return this.executeWithFallback((reader) => reader.getContractDeploymentBlockNumber(address), this.config.getContractDeploymentBlockNumber ?? true);
|
|
125
|
+
}
|
|
126
|
+
getContractLogs(options) {
|
|
127
|
+
return this.executeWithFallback((reader) => reader.getContractLogs(options), this.config.getContractLogs ?? true);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
72
130
|
export class EvmEventLogsReader {
|
|
73
131
|
config;
|
|
74
132
|
multiProvider;
|
|
@@ -76,6 +134,7 @@ export class EvmEventLogsReader {
|
|
|
76
134
|
logger;
|
|
77
135
|
fallbackLogReaderStrategy;
|
|
78
136
|
deploymentBlockCache = new Map();
|
|
137
|
+
explorerDeploymentBlockCache = new Map();
|
|
79
138
|
constructor(config, multiProvider, logReaderStrategy, logger, fallbackLogReaderStrategy) {
|
|
80
139
|
this.config = config;
|
|
81
140
|
this.multiProvider = multiProvider;
|
|
@@ -86,11 +145,14 @@ export class EvmEventLogsReader {
|
|
|
86
145
|
static fromConfig(config, multiProvider, logger = rootLogger.child({
|
|
87
146
|
module: EvmEventLogsReader.name,
|
|
88
147
|
})) {
|
|
89
|
-
const
|
|
148
|
+
const explorers = config.useRPC
|
|
149
|
+
? []
|
|
150
|
+
: multiProvider.tryGetEvmExplorerMetadataList(config.chain);
|
|
151
|
+
const explorerReaders = explorers.map((explorer) => new EvmEtherscanLikeEventLogsReader(config.chain, explorer, multiProvider));
|
|
90
152
|
let logReaderStrategy;
|
|
91
153
|
let fallbackLogReaderSrategy;
|
|
92
|
-
if (
|
|
93
|
-
logReaderStrategy = new
|
|
154
|
+
if (explorerReaders.length > 0) {
|
|
155
|
+
logReaderStrategy = new FallbackEvmEventLogsReader(config.chain, explorerReaders, logger, config.explorerFallback);
|
|
94
156
|
fallbackLogReaderSrategy = new EvmRpcEventLogsReader(config.chain, { paginationBlockRange: config.paginationBlockRange }, multiProvider);
|
|
95
157
|
}
|
|
96
158
|
else {
|
|
@@ -98,20 +160,39 @@ export class EvmEventLogsReader {
|
|
|
98
160
|
}
|
|
99
161
|
return new EvmEventLogsReader(config, multiProvider, logReaderStrategy, logger, fallbackLogReaderSrategy);
|
|
100
162
|
}
|
|
163
|
+
async getContractDeploymentBlockFromExplorer(contractAddress) {
|
|
164
|
+
const explorerReader = this.logReaderStrategy;
|
|
165
|
+
assert(explorerReader instanceof FallbackEvmEventLogsReader, `No block explorer is configured for chain ${this.config.chain}`);
|
|
166
|
+
const cached = this.explorerDeploymentBlockCache.get(contractAddress);
|
|
167
|
+
if (!isNullish(cached))
|
|
168
|
+
return cached;
|
|
169
|
+
// Do not use deploymentBlockCache here: an earlier read may have populated
|
|
170
|
+
// it from RPC bisection after an explorer failure.
|
|
171
|
+
const block = await retryAsync(() => explorerReader.getContractDeploymentBlockNumber(contractAddress));
|
|
172
|
+
this.explorerDeploymentBlockCache.set(contractAddress, block);
|
|
173
|
+
this.deploymentBlockCache.set(contractAddress, block);
|
|
174
|
+
return block;
|
|
175
|
+
}
|
|
101
176
|
async getLogsByTopic(options) {
|
|
177
|
+
const parsedOptions = GetLogByTopicOptionsSchema.parse(options);
|
|
102
178
|
const provider = this.multiProvider.getProvider(this.config.chain);
|
|
103
|
-
await assertIsContractAddress(this.multiProvider, this.config.chain,
|
|
179
|
+
await assertIsContractAddress(this.multiProvider, this.config.chain, parsedOptions.contractAddress);
|
|
180
|
+
// Every retry and fallback must answer the same block range.
|
|
181
|
+
const resolvedOptions = {
|
|
182
|
+
...parsedOptions,
|
|
183
|
+
toBlock: parsedOptions.toBlock ?? (await provider.getBlockNumber()),
|
|
184
|
+
};
|
|
104
185
|
try {
|
|
105
186
|
// Retry the primary strategy with exponential backoff to handle
|
|
106
187
|
// transient failures like explorer rate limits
|
|
107
|
-
return await retryAsync(() => this.getLogsByTopicWithStrategy(
|
|
188
|
+
return await retryAsync(() => this.getLogsByTopicWithStrategy(resolvedOptions, this.logReaderStrategy));
|
|
108
189
|
}
|
|
109
190
|
catch (err) {
|
|
110
191
|
if (!this.fallbackLogReaderStrategy) {
|
|
111
192
|
throw err;
|
|
112
193
|
}
|
|
113
194
|
this.logger.debug(`Failed to read logs on chain "${this.config.chain}": ${err}. Falling back to using the RPC`);
|
|
114
|
-
return this.getLogsByTopicWithStrategy(
|
|
195
|
+
return this.getLogsByTopicWithStrategy(resolvedOptions, this.fallbackLogReaderStrategy);
|
|
115
196
|
}
|
|
116
197
|
}
|
|
117
198
|
async getDeploymentBlock(contractAddress, logReaderStrategy) {
|
|
@@ -122,17 +203,21 @@ export class EvmEventLogsReader {
|
|
|
122
203
|
this.deploymentBlockCache.set(contractAddress, block);
|
|
123
204
|
return block;
|
|
124
205
|
}
|
|
125
|
-
async getLogsByTopicWithStrategy(options,
|
|
206
|
+
async getLogsByTopicWithStrategy(options, logReaderStrategy) {
|
|
126
207
|
const parsedOptions = GetLogByTopicOptionsSchema.parse(options);
|
|
127
208
|
const fromBlock = parsedOptions.fromBlock ??
|
|
128
209
|
(await this.getDeploymentBlock(parsedOptions.contractAddress, logReaderStrategy));
|
|
129
|
-
|
|
130
|
-
|
|
210
|
+
assert(!isNullish(parsedOptions.toBlock), 'Expected the log range end to be resolved');
|
|
211
|
+
assert(fromBlock <= parsedOptions.toBlock, `Log range start ${fromBlock} exceeds end ${parsedOptions.toBlock}`);
|
|
212
|
+
const resolvedOptions = {
|
|
131
213
|
contractAddress: parsedOptions.contractAddress,
|
|
132
214
|
eventTopic: parsedOptions.eventTopic,
|
|
133
215
|
fromBlock,
|
|
134
|
-
toBlock,
|
|
135
|
-
}
|
|
216
|
+
toBlock: parsedOptions.toBlock,
|
|
217
|
+
};
|
|
218
|
+
const logs = await logReaderStrategy.getContractLogs(resolvedOptions);
|
|
219
|
+
assertLogsMatchQuery(logs, resolvedOptions);
|
|
220
|
+
return logs;
|
|
136
221
|
}
|
|
137
222
|
}
|
|
138
223
|
//# sourceMappingURL=EvmEventLogsReader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvmEventLogsReader.js","sourceRoot":"","sources":["../../../src/rpc/evm/EvmEventLogsReader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,MAAM,EACN,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gCAAgC,EAChC,mCAAmC,GACpC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAKhF,OAAO,EAAE,+BAA+B,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"EvmEventLogsReader.js","sourceRoot":"","sources":["../../../src/rpc/evm/EvmEventLogsReader.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc/evm/utils.d.ts
CHANGED
|
@@ -5,19 +5,15 @@ import { ChainNameOrId } from '../../types.js';
|
|
|
5
5
|
import { GetEventLogsResponse } from './types.js';
|
|
6
6
|
/**
|
|
7
7
|
* Finds the block a contract was deployed in by bisecting `eth_getCode` over
|
|
8
|
-
* the chain's history
|
|
9
|
-
* cannot serve the state of a past block.
|
|
8
|
+
* the chain's history.
|
|
10
9
|
*
|
|
11
10
|
* Every probe but the last few is a request for archive state, which an
|
|
12
|
-
* endpoint that prunes answers in one of two ways.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* below it. The reliable source of a deployment block is therefore the
|
|
19
|
-
* explorer's getcontractcreation response, and this search is what is left
|
|
20
|
-
* where there is no explorer.
|
|
11
|
+
* endpoint that prunes answers in one of two ways. If it fails the probe, this
|
|
12
|
+
* lookup fails rather than widening the subsequent log scan to genesis. If it
|
|
13
|
+
* reports no code at a height where the contract did exist, that successful
|
|
14
|
+
* response is indistinguishable from a genuine pre-deployment answer. Like any
|
|
15
|
+
* other RPC read, this search therefore assumes a successful response describes
|
|
16
|
+
* the requested block correctly.
|
|
21
17
|
*/
|
|
22
18
|
export declare function getContractCreationBlockFromRpc(chain: ChainNameOrId, contractAddress: Address, multiProvider: MultiProvider): Promise<number>;
|
|
23
19
|
export type GetLogsFromRpcOptions = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/rpc/evm/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EACL,OAAO,EAKR,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/rpc/evm/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EACL,OAAO,EAKR,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAoBlD;;;;;;;;;;;GAWG;AACH,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,aAAa,EACpB,eAAe,EAAE,OAAO,EACxB,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,MAAM,CAAC,CAqCjB;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAwJF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK9D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgBzD;AAED,wBAAsB,cAAc,CAAC,EACnC,KAAK,EACL,eAAe,EACf,aAAa,EACb,SAAS,EACT,KAAK,EACL,OAAO,EACP,KAA0C,GAC3C,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA4GzD;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,oBAAoB,GACxB,GAAG,CAYL"}
|
|
@@ -56,15 +56,16 @@ describe('RPC Utils', () => {
|
|
|
56
56
|
const contractCode = await providerChainTest1.getCode(testContract.address);
|
|
57
57
|
expect(contractCode).not.to.equal('0x');
|
|
58
58
|
});
|
|
59
|
-
// A pruned endpoint
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
it('should
|
|
59
|
+
// A pruned endpoint can still serve logs while lacking the historical state
|
|
60
|
+
// the deployment search needs. That observable failure must stop the read;
|
|
61
|
+
// scanning from genesis can take an infeasible number of requests.
|
|
62
|
+
it('should fail when the endpoint cannot serve historical state', async () => {
|
|
63
63
|
await mineRandomNumberOfBlocks();
|
|
64
64
|
await deployTestErc20();
|
|
65
65
|
await mineRandomNumberOfBlocks();
|
|
66
66
|
const provider = multiProvider.getProvider(TestChainName.test1);
|
|
67
67
|
const codeAtHead = provider.getCode.bind(provider);
|
|
68
|
+
const historicalStateError = new Error('missing trie node 8a1c7f (path ) state 0x8a1c7f is not available');
|
|
68
69
|
const getCode = sinon
|
|
69
70
|
.stub(provider, 'getCode')
|
|
70
71
|
.callsFake(async (address, blockTag) => {
|
|
@@ -73,17 +74,41 @@ describe('RPC Utils', () => {
|
|
|
73
74
|
}
|
|
74
75
|
// How a pruned geth reports state it no longer holds, and what 0g's
|
|
75
76
|
// endpoints answer a historical eth_getCode with at any depth.
|
|
76
|
-
throw
|
|
77
|
+
throw historicalStateError;
|
|
77
78
|
});
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
// The first probe that cannot be answered ends the search, rather than
|
|
81
|
-
// every rung of the bisection failing its way down to the floor.
|
|
79
|
+
await expect(getContractCreationBlockFromRpc(TestChainName.test1, testContract.address, multiProvider)).to.be.rejectedWith(historicalStateError.message);
|
|
80
|
+
// The first probe that cannot be answered ends the search.
|
|
82
81
|
const historicalProbes = getCode
|
|
83
82
|
.getCalls()
|
|
84
83
|
.filter((call) => !isNullish(call.args[1]));
|
|
85
84
|
expect(historicalProbes).to.have.length(1);
|
|
86
85
|
});
|
|
86
|
+
// A successful but false response cannot be distinguished locally from
|
|
87
|
+
// genuine pre-deployment state. This records the data-source trust boundary.
|
|
88
|
+
it('documents that silent pruning places the deployment too late', async () => {
|
|
89
|
+
await mineRandomNumberOfBlocks();
|
|
90
|
+
await deployTestErc20();
|
|
91
|
+
await mineRandomNumberOfBlocks();
|
|
92
|
+
await mineRandomNumberOfBlocks();
|
|
93
|
+
const provider = multiProvider.getProvider(TestChainName.test1);
|
|
94
|
+
const realGetCode = provider.getCode.bind(provider);
|
|
95
|
+
// The contract exists from deploymentBlockNumber, but the endpoint only
|
|
96
|
+
// holds state from a later block and answers below it as though it were
|
|
97
|
+
// empty.
|
|
98
|
+
const retentionFloor = deploymentBlockNumber + 5;
|
|
99
|
+
expect(await realGetCode(testContract.address, deploymentBlockNumber)).not.to.equal('0x');
|
|
100
|
+
sinon.stub(provider, 'getCode').callsFake(async (address, blockTag) => {
|
|
101
|
+
if (isNullish(blockTag) || Number(blockTag) >= retentionFloor) {
|
|
102
|
+
return realGetCode(address, blockTag);
|
|
103
|
+
}
|
|
104
|
+
return '0x';
|
|
105
|
+
});
|
|
106
|
+
const foundBlock = await getContractCreationBlockFromRpc(TestChainName.test1, testContract.address, multiProvider);
|
|
107
|
+
// The search trusts the successful response and settles on the oldest
|
|
108
|
+
// block the endpoint claims has code.
|
|
109
|
+
expect(foundBlock).to.be.greaterThan(deploymentBlockNumber);
|
|
110
|
+
expect(foundBlock).to.equal(retentionFloor);
|
|
111
|
+
});
|
|
87
112
|
it('should throw an error for non-existing contract address', async () => {
|
|
88
113
|
const nonExistentAddress = randomAddress();
|
|
89
114
|
await expect(getContractCreationBlockFromRpc(TestChainName.test1, nonExistentAddress, multiProvider)).to.be.rejectedWith(`Address "${nonExistentAddress}" on chain "${TestChainName.test1}" is not a contract`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.hardhat-test.js","sourceRoot":"","sources":["../../../src/rpc/evm/utils.hardhat-test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.hardhat-test.js","sourceRoot":"","sources":["../../../src/rpc/evm/utils.hardhat-test.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc/evm/utils.js
CHANGED
|
@@ -11,24 +11,19 @@ function toStringArray(value, field) {
|
|
|
11
11
|
assert(Array.isArray(value) && value.every((v) => typeof v === 'string'), `Unable to convert ${field} to string[]`);
|
|
12
12
|
return value;
|
|
13
13
|
}
|
|
14
|
-
// The block
|
|
15
|
-
// with when it cannot establish a later one.
|
|
14
|
+
// The lowest block the deployment search probes.
|
|
16
15
|
const GENESIS_BLOCK_NUMBER = 0;
|
|
17
16
|
/**
|
|
18
17
|
* Finds the block a contract was deployed in by bisecting `eth_getCode` over
|
|
19
|
-
* the chain's history
|
|
20
|
-
* cannot serve the state of a past block.
|
|
18
|
+
* the chain's history.
|
|
21
19
|
*
|
|
22
20
|
* Every probe but the last few is a request for archive state, which an
|
|
23
|
-
* endpoint that prunes answers in one of two ways.
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* below it. The reliable source of a deployment block is therefore the
|
|
30
|
-
* explorer's getcontractcreation response, and this search is what is left
|
|
31
|
-
* where there is no explorer.
|
|
21
|
+
* endpoint that prunes answers in one of two ways. If it fails the probe, this
|
|
22
|
+
* lookup fails rather than widening the subsequent log scan to genesis. If it
|
|
23
|
+
* reports no code at a height where the contract did exist, that successful
|
|
24
|
+
* response is indistinguishable from a genuine pre-deployment answer. Like any
|
|
25
|
+
* other RPC read, this search therefore assumes a successful response describes
|
|
26
|
+
* the requested block correctly.
|
|
32
27
|
*/
|
|
33
28
|
export async function getContractCreationBlockFromRpc(chain, contractAddress, multiProvider) {
|
|
34
29
|
await assertIsContractAddress(multiProvider, chain, contractAddress);
|
|
@@ -44,13 +39,8 @@ export async function getContractCreationBlockFromRpc(chain, contractAddress, mu
|
|
|
44
39
|
isContract = await isContractAddress(multiProvider, chain, contractAddress, mid);
|
|
45
40
|
}
|
|
46
41
|
catch (error) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// cannot answer for a past block costs the request count of a full scan
|
|
50
|
-
// and nothing else. It stays a warning so that the endpoint is visible
|
|
51
|
-
// as pruned rather than merely slow.
|
|
52
|
-
logger.warn({ err: error }, `Unable to read the state of block ${mid} on chain ${chain} while searching for the deployment block of ${contractAddress}, starting from block ${GENESIS_BLOCK_NUMBER} instead`);
|
|
53
|
-
return GENESIS_BLOCK_NUMBER;
|
|
42
|
+
logger.warn({ err: error }, `Unable to read the state of block ${mid} on chain ${chain} while searching for the deployment block of ${contractAddress}`);
|
|
43
|
+
throw error;
|
|
54
44
|
}
|
|
55
45
|
if (isContract) {
|
|
56
46
|
creationBlock = mid;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/rpc/evm/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,MAAM,EACN,SAAS,EACT,UAAU,EACV,KAAK,GACN,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,0BAA0B,EAAE,MAAM,2DAA2D,CAAC;AAEvG,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AAE7D,SAAS,QAAQ,CAAC,KAAc,EAAE,KAAa;IAC7C,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,EAAE,qBAAqB,KAAK,YAAY,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,KAAa;IAClD,MAAM,CACJ,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EACjE,qBAAqB,KAAK,cAAc,CACzC,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/rpc/evm/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a typed partial double of `T`, typically a typechain factory's
|
|
3
|
+
* `connect` return. The provided members are type-checked against the real `T`
|
|
4
|
+
* (so a misspelled or removed member is a compile error); only the final
|
|
5
|
+
* widening — which sinon's `.returns`/`.resolves` requires — is cast.
|
|
6
|
+
*/
|
|
7
|
+
export declare function contractDouble<T>(members: Partial<T>): T;
|
|
8
|
+
//# sourceMappingURL=contractDouble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contractDouble.d.ts","sourceRoot":"","sources":["../../src/test/contractDouble.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAIxD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a typed partial double of `T`, typically a typechain factory's
|
|
3
|
+
* `connect` return. The provided members are type-checked against the real `T`
|
|
4
|
+
* (so a misspelled or removed member is a compile error); only the final
|
|
5
|
+
* widening — which sinon's `.returns`/`.resolves` requires — is cast.
|
|
6
|
+
*/
|
|
7
|
+
export function contractDouble(members) {
|
|
8
|
+
// CAST: sinon's `.returns` needs the exact contract type; `members` is a
|
|
9
|
+
// partial test double whose keys are validated against `T` above.
|
|
10
|
+
return members;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=contractDouble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contractDouble.js","sourceRoot":"","sources":["../../src/test/contractDouble.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAI,OAAmB;IACnD,yEAAyE;IACzE,kEAAkE;IAClE,OAAO,OAAY,CAAC;AACtB,CAAC"}
|
|
@@ -2,4 +2,5 @@ export declare const EMPTY_BYTES_32 = "0x000000000000000000000000000000000000000
|
|
|
2
2
|
export declare const PROPOSER_ROLE: string;
|
|
3
3
|
export declare const EXECUTOR_ROLE: string;
|
|
4
4
|
export declare const CANCELLER_ROLE: string;
|
|
5
|
+
export declare const TIMELOCK_ADMIN_ROLE: string;
|
|
5
6
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/timelock/evm/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,uEAC2C,CAAC;AAEvE,eAAO,MAAM,aAAa,EAAE,MAAgD,CAAC;AAC7E,eAAO,MAAM,aAAa,EAAE,MAAgD,CAAC;AAC7E,eAAO,MAAM,cAAc,EAAE,MAAiD,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/timelock/evm/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,uEAC2C,CAAC;AAEvE,eAAO,MAAM,aAAa,EAAE,MAAgD,CAAC;AAC7E,eAAO,MAAM,aAAa,EAAE,MAAgD,CAAC;AAC7E,eAAO,MAAM,cAAc,EAAE,MAAiD,CAAC;AAC/E,eAAO,MAAM,mBAAmB,EAAE,MAEjC,CAAC"}
|
|
@@ -3,4 +3,5 @@ export const EMPTY_BYTES_32 = '0x00000000000000000000000000000000000000000000000
|
|
|
3
3
|
export const PROPOSER_ROLE = keccak256(Buffer.from('PROPOSER_ROLE'));
|
|
4
4
|
export const EXECUTOR_ROLE = keccak256(Buffer.from('EXECUTOR_ROLE'));
|
|
5
5
|
export const CANCELLER_ROLE = keccak256(Buffer.from('CANCELLER_ROLE'));
|
|
6
|
+
export const TIMELOCK_ADMIN_ROLE = keccak256(Buffer.from('TIMELOCK_ADMIN_ROLE'));
|
|
6
7
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/timelock/evm/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GACzB,oEAAoE,CAAC;AAEvE,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAW,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/timelock/evm/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GACzB,oEAAoE,CAAC;AAEvE,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAW,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAW,SAAS,CAClD,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/timelock/evm/errors.ts"],"names":[],"mappings":"AAgBA,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUxE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { errors as EthersError } from 'ethers';
|
|
2
|
+
import { getNestedJsonRpcError } from '../../providers/SmartProvider/SmartProvider.js';
|
|
3
|
+
function asRecord(error) {
|
|
4
|
+
if (typeof error !== 'object' || error === null)
|
|
5
|
+
return undefined;
|
|
6
|
+
// CAST: runtime object check above narrows enough for keyed inspection.
|
|
7
|
+
return error;
|
|
8
|
+
}
|
|
9
|
+
export function isDeterministicTimelockReadError(error) {
|
|
10
|
+
// CAST: asRecord gates property reads; fields stay unknown until compared.
|
|
11
|
+
const record = asRecord(error);
|
|
12
|
+
if (record?.code !== EthersError.CALL_EXCEPTION)
|
|
13
|
+
return false;
|
|
14
|
+
const hasRevertData = !!record.data && record.data !== '0x';
|
|
15
|
+
const hasNestedError = !!record.error;
|
|
16
|
+
const jsonRpcErrorCode = getNestedJsonRpcError(error).code;
|
|
17
|
+
return hasRevertData || jsonRpcErrorCode === 3 || !hasNestedError;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/timelock/evm/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAQvF,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAClE,wEAAwE;IACxE,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAAc;IAC7D,2EAA2E;IAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAoC,CAAC;IAClE,IAAI,MAAM,EAAE,IAAI,KAAK,WAAW,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IAE9D,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;IAC5D,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACtC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;IAE3D,OAAO,aAAa,IAAI,gBAAgB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.test.d.ts","sourceRoot":"","sources":["../../../src/timelock/evm/errors.test.ts"],"names":[],"mappings":""}
|