diff --git a/packages/blockchain/src/blockchain.ts b/packages/blockchain/src/blockchain.ts index 8e1e7c4f709..08f293ca5bf 100644 --- a/packages/blockchain/src/blockchain.ts +++ b/packages/blockchain/src/blockchain.ts @@ -1319,6 +1319,13 @@ export class Blockchain implements BlockchainInterface { number: 0, stateRoot, withdrawalsRoot: common.isActivatedEIP(4895) ? KECCAK256_RLP : undefined, + ...(common.isActivatedEIP(4844) + ? { + blobGasUsed: 0, + excessBlobGas: 0, + parentBeaconBlockRoot: new Uint8Array(32), + } + : undefined), } if (common.consensusType() === 'poa') { if (common.genesis().extraData) { diff --git a/packages/client/src/config.ts b/packages/client/src/config.ts index e4291b9aac1..0781230edff 100644 --- a/packages/client/src/config.ts +++ b/packages/client/src/config.ts @@ -326,6 +326,7 @@ export interface ConfigOptions { pruneEngineCache?: boolean snapAvailabilityDepth?: bigint snapTransitionSafeDepth?: bigint + snapLookbackWindow?: number /** * Save account keys preimages in the meta db (default: false) @@ -397,6 +398,7 @@ export class Config { // distance from head at which we can safely transition from a synced snapstate to vmexecution // randomly kept it at 5 for fast testing purposes but ideally should be >=32 slots public static readonly SNAP_TRANSITION_SAFE_DEPTH = BigInt(5) + public static readonly SNAP_LOOKBACK_WINDOW = 1 // support blobs and proofs cache for CL getBlobs for upto 1 epoch of data public static readonly BLOBS_AND_PROOFS_CACHE_BLOCKS = 32 @@ -448,6 +450,7 @@ export class Config { public readonly engineNewpayloadMaxTxsExecute: number public readonly snapAvailabilityDepth: bigint public readonly snapTransitionSafeDepth: bigint + public readonly snapLookbackWindow: number public readonly prefixStorageTrieKeys: boolean // Defaulting to false as experimental as of now @@ -543,6 +546,7 @@ export class Config { this.snapAvailabilityDepth = options.snapAvailabilityDepth ?? Config.SNAP_AVAILABILITY_DEPTH this.snapTransitionSafeDepth = options.snapTransitionSafeDepth ?? Config.SNAP_TRANSITION_SAFE_DEPTH + this.snapLookbackWindow = options.snapLookbackWindow ?? Config.SNAP_LOOKBACK_WINDOW this.prefixStorageTrieKeys = options.prefixStorageTrieKeys ?? true this.enableSnapSync = options.enableSnapSync ?? false diff --git a/packages/client/src/net/server/rlpxserver.ts b/packages/client/src/net/server/rlpxserver.ts index 1b02ce48c5a..ac2161e29f2 100644 --- a/packages/client/src/net/server/rlpxserver.ts +++ b/packages/client/src/net/server/rlpxserver.ts @@ -65,7 +65,7 @@ export class RlpxServer extends Server { super(options) // As of now, the devp2p dpt server listens on the ip4 protocol by default and hence the ip in the // bootnode needs to be of ip4 by default - this.ip = options.config.extIP ?? '0.0.0.0' + this.ip = options.config.extIP ?? '127.0.0.1' this.discovery = options.config.discV4 || options.config.discDns this.clientFilter = options.clientFilter ?? [ 'go1.5', diff --git a/packages/client/src/sync/fetcher/accountfetcher.ts b/packages/client/src/sync/fetcher/accountfetcher.ts index c54c8908b5a..93b5f0c3736 100644 --- a/packages/client/src/sync/fetcher/accountfetcher.ts +++ b/packages/client/src/sync/fetcher/accountfetcher.ts @@ -43,8 +43,8 @@ type AccountDataResponse = AccountData[] & { completed?: boolean } * @memberof module:sync/fetcher */ export interface AccountFetcherOptions extends FetcherOptions { - /** Root hash of the account trie to serve */ - root: Uint8Array + // height of block being targeted for snap sync + height: bigint /** The origin to start account fetcher from (including), by default starts from 0 (0x0000...) */ first: bigint @@ -72,7 +72,7 @@ export class AccountFetcher extends Fetcher stateManager: MerkleStateManager accountTrie: MerklePatriciaTrie - root: Uint8Array + height: bigint highestKnownHash: Uint8Array | undefined /** The origin to start account fetcher from (including), by default starts from 0 (0x0000...) */ @@ -92,7 +92,7 @@ export class AccountFetcher extends Fetcher super(options) this.fetcherDoneFlags = options.fetcherDoneFlags ?? getInitFetcherDoneFlags() - this.root = options.root + this.height = options.height this.first = options.first this.count = options.count ?? BIGINT_2EXP256 - this.first @@ -104,7 +104,7 @@ export class AccountFetcher extends Fetcher this.storageFetcher = new StorageFetcher({ config: this.config, pool: this.pool, - root: this.root, + height: this.height, storageRequests: [], first: BIGINT_1, destroyWhenDone: false, @@ -122,7 +122,7 @@ export class AccountFetcher extends Fetcher this.trieNodeFetcher = new TrieNodeFetcher({ config: this.config, pool: this.pool, - root: this.root, + height: this.height, stateManager: this.stateManager, destroyWhenDone: false, fetcherDoneFlags: this.fetcherDoneFlags, @@ -138,7 +138,7 @@ export class AccountFetcher extends Fetcher this.DEBUG && this.debug( - `Account fetcher instantiated root=${short(this.root)} origin=${short(origin)} limit=${short( + `Account fetcher instantiated root=${short(this.fetcherDoneFlags.snapTargetRoot!)} origin=${short(origin)} limit=${short( limit, )} destroyWhenDone=${this.destroyWhenDone}`, ) @@ -277,6 +277,12 @@ export class AccountFetcher extends Fetcher } break case TrieNodeFetcher: + // TODO update to check if heal phase completed successfully and then continue with next + // healing phase + if (fetcherDoneFlags.trieNodeFetcher.healCycleRepeatCount > 1) { + fetcherDoneFlags.trieNodeFetcher.healCycleRepeatCount-- + break + } fetcherDoneFlags.trieNodeFetcher.done = true break } @@ -286,15 +292,21 @@ export class AccountFetcher extends Fetcher accountFetcher.done && storageFetcher.done && byteCodeFetcher.done && trieNodeFetcher.done this.config.superMsg( - `snapFetchersCompletion root=${short(this.root)} accountsRoot=${short( - fetcherDoneFlags.stateRoot ?? 'na', - )} done=${this.fetcherDoneFlags.done} accountsDone=${accountFetcher.done} storageDone=${ - storageFetcher.done - } byteCodesDone=${byteCodeFetcher.done} trieNodesDone=${trieNodeFetcher.done}`, + `snapFetchersCompletion root=${short( + this.fetcherDoneFlags.snapTargetRoot!, + )} accountsRoot=${short(fetcherDoneFlags.stateRoot ?? 'na')} done=${ + this.fetcherDoneFlags.done + } accountsDone=${accountFetcher.done} storageDone=${storageFetcher.done} byteCodesDone=${ + byteCodeFetcher.done + } trieNodesDone=${trieNodeFetcher.done}`, ) if (this.fetcherDoneFlags.done) { - this.config.events.emit(Event.SYNC_SNAPSYNC_COMPLETE, this.root, this.stateManager) + this.config.events.emit( + Event.SYNC_SNAPSYNC_COMPLETE, + this.fetcherDoneFlags.snapTargetRoot!, + this.stateManager, + ) } } @@ -378,10 +390,22 @@ export class AccountFetcher extends Fetcher // TODOs: // 1. Properly rewrite Fetcher with async/await -> allow to at least place in Fetcher.next() // 2. Properly implement ETH request IDs -> allow to call on non-idle in Peer Pool - await peer?.latest() + const latest = await peer?.latest() + if (latest !== undefined && latest.stateRoot !== undefined) { + // TODO currently doing this check and update both in account and trienode fetchers since they + // could be running independently of eachother in some cases + const currentHeight = this.height + const newestHeight = latest.number + if (newestHeight - currentHeight >= this.config.snapLookbackWindow) { + this.fetcherDoneFlags.snapTargetHeight = latest.number + this.fetcherDoneFlags.snapTargetRoot = latest.stateRoot + this.fetcherDoneFlags.snapTargetHash = latest.hash() + this.height = newestHeight + } + } + const origin = this.getOrigin(job) const limit = this.getLimit(job) - if (this.highestKnownHash && compareBytes(limit, this.highestKnownHash) < 0) { // skip this job and don't rerequest it if it's limit is lower than the highest known key hash this.DEBUG && this.debug(`skipping request with limit lower than highest known hash`) @@ -389,7 +413,7 @@ export class AccountFetcher extends Fetcher } const rangeResult = await peer!.snap!.getAccountRange({ - root: this.root, + root: this.fetcherDoneFlags.snapTargetRoot!, origin, limit, bytes: BigInt(this.config.maxRangeBytes), @@ -406,7 +430,7 @@ export class AccountFetcher extends Fetcher if (rangeResult.proof.length > 0) { try { const isMissingRightRange = await verifyMerkleRangeProof( - this.root, + this.fetcherDoneFlags.snapTargetRoot!, origin, null, [], @@ -433,7 +457,11 @@ export class AccountFetcher extends Fetcher try { // verifyRangeProof will also verify validate there are no missed states between origin and // response data - const isMissingRightRange = await this.verifyRangeProof(this.root, origin, rangeResult) + const isMissingRightRange = await this.verifyRangeProof( + this.fetcherDoneFlags.snapTargetRoot!, + origin, + rangeResult, + ) // Check if there is any pending data to be synced to the right let completed: boolean @@ -586,10 +614,6 @@ export class AccountFetcher extends Fetcher return tasks } - updateStateRoot(stateRoot: Uint8Array) { - this.root = stateRoot - } - nextTasks(): void { if ( this.in.length === 0 && diff --git a/packages/client/src/sync/fetcher/storagefetcher.ts b/packages/client/src/sync/fetcher/storagefetcher.ts index 863541af24d..5376bd1b017 100644 --- a/packages/client/src/sync/fetcher/storagefetcher.ts +++ b/packages/client/src/sync/fetcher/storagefetcher.ts @@ -34,6 +34,8 @@ export type StorageRequest = { storageRoot: Uint8Array first: bigint count: bigint + stateRoot: Uint8Array // needed for verifying request if targetRoot has been updated since the creation of this request + height: bigint // needed for checking if request is still safely within stateRoot-lookback-window before requesting to avoid being banned by peer } /** @@ -41,8 +43,8 @@ export type StorageRequest = { * @memberof module:sync/fetcher */ export interface StorageFetcherOptions extends FetcherOptions { - /** Root hash of the account trie to serve */ - root: Uint8Array + // height of block being targeted for snap sync + height: bigint /** Storage requests to fetch */ storageRequests?: StorageRequest[] @@ -64,11 +66,13 @@ export interface StorageFetcherOptions extends FetcherOptions { export type JobTask = { storageRequests: StorageRequest[] multi: boolean + stateRoot: Uint8Array // needed for verifying request if targetRoot has been updated since the creation of this request + height: bigint // needed for checking if request is still safely within stateRoot-lookback-window before requesting to avoid being banned by peer } export class StorageFetcher extends Fetcher { protected debug: Debugger - root: Uint8Array + height: bigint stateManager: MerkleStateManager fetcherDoneFlags: SnapFetcherDoneFlags @@ -87,7 +91,7 @@ export class StorageFetcher extends Fetcher allow to at least place in Fetcher.next() // 2. Properly implement ETH request IDs -> allow to call on non-idle in Peer Pool - await peer?.latest() + const latest = await peer?.latest() + if (latest !== undefined && latest.stateRoot !== undefined) { + // TODO currently doing this check and update both in account and trienode fetchers since they + // could be running independently of eachother in some cases + const currentHeight = this.height + const newestHeight = latest.number + if (newestHeight - currentHeight >= this.config.snapLookbackWindow) { + this.fetcherDoneFlags.snapTargetHeight = latest.number + this.fetcherDoneFlags.snapTargetRoot = latest.stateRoot + this.fetcherDoneFlags.snapTargetHash = latest.hash() + } + } const origin = this.getOrigin(job) const limit = this.getLimit(job) - this.DEBUG && this.debug(`requested root: ${bytesToHex(this.root)}`) + this.DEBUG && this.debug(`requested root: ${bytesToHex(this.fetcherDoneFlags.snapTargetRoot!)}`) this.DEBUG && this.debug(`requested origin: ${bytesToHex(origin)}`) this.DEBUG && this.debug(`requested limit: ${bytesToHex(limit)}`) this.DEBUG && @@ -251,8 +266,17 @@ export class StorageFetcher extends Fetcher= + this.config.snapLookbackWindow + ) { + // skip request if we are close to being outside of lookback range to avoid getting banned + this.debug(`skipping request that is close to being outside of lookback range`) + return Object.assign([], [{ skipped: true }], { completed: true }) + } + const rangeResult = await peer!.snap!.getStorageRanges({ - root: this.root, + root: task.stateRoot, accounts: task.storageRequests.map((req) => req.accountHash), origin, limit, @@ -393,6 +417,8 @@ export class StorageFetcher extends Fetcher stateManager?: MerkleStateManager @@ -60,6 +60,7 @@ type FetchedNodeData = { } type NodeRequestData = { + requested: boolean nodeHash: string nodeParentHash: string parentAccountHash?: string // for leaf account nodes that contain a storage component @@ -67,7 +68,6 @@ type NodeRequestData = { export class TrieNodeFetcher extends Fetcher { protected debug: Debugger - root: Uint8Array stateManager: MerkleStateManager fetcherDoneFlags: SnapFetcherDoneFlags @@ -99,7 +99,6 @@ export class TrieNodeFetcher extends Fetcher */ constructor(options: TrieNodeFetcherOptions) { super(options) - this.root = options.root this.fetcherDoneFlags = options.fetcherDoneFlags ?? getInitFetcherDoneFlags() this.pathToNodeRequestData = new OrderedMap() this.requestedNodeToPath = new Map() @@ -116,7 +115,8 @@ export class TrieNodeFetcher extends Fetcher // will always start with root node as first set of node requests this.pathToNodeRequestData.setElement('', { - nodeHash: bytesToHex(this.root), + requested: false, + nodeHash: bytesToHex(this.fetcherDoneFlags.snapTargetRoot!), // TODO this target could change, have to update tfn to clear and recreate root request on targetRoot changing nodeParentHash: '', // root node does not have a parent } as NodeRequestData) @@ -147,16 +147,59 @@ export class TrieNodeFetcher extends Fetcher // TODOs: // 1. Properly rewrite Fetcher with async/await -> allow to at least place in Fetcher.next() // 2. Properly implement ETH request IDs -> allow to call on non-idle in Peer Pool - await peer?.latest() + const latest = await peer?.latest() + // console.log('dbg850') + if (latest !== undefined && latest.stateRoot !== undefined) { + const currentHeight = this.fetcherDoneFlags.trieNodeFetcher.currentHeight + const newestHeight = latest.number + // console.log(currentHeight) + // console.log(newestHeight) + // console.log(this.config.snapLookbackWindow) + // console.log(newestHeight - currentHeight >= this.config.snapLookbackWindow) + if (newestHeight - currentHeight >= this.config.snapLookbackWindow) { + this.debug('dbg810: updating roots') + // update latest height and root + this.fetcherDoneFlags.snapTargetHeight = latest.number + this.fetcherDoneFlags.snapTargetRoot = latest.stateRoot + this.fetcherDoneFlags.snapTargetHash = latest.hash() + this.fetcherDoneFlags.trieNodeFetcher.currentHeight = newestHeight + + // console.log('dbg811') + // console.log(latest.number) + // console.log(bytesToHex(latest.stateRoot)) + // console.log(bytesToHex(latest.hash())) + // console.log(latest.toJSON()) + + // clear any tasks or requests and create new request for newest root set to + this.clear() + this.pathToNodeRequestData = new OrderedMap() + this.requestedNodeToPath = new Map() + this.fetchedAccountNodes = new Map() + this.nodeCount = 0 + this.pathToNodeRequestData.setElement('', { + requested: false, + nodeHash: bytesToHex(this.fetcherDoneFlags.snapTargetRoot!), // TODO this target could change, have to update tfn to clear and recreate root request on targetRoot changing + nodeParentHash: '', // root node does not have a parent + } as NodeRequestData) + } + } const { paths, pathStrings } = task const rangeResult = await peer!.snap!.getTrieNodes({ - root: this.root, + root: this.fetcherDoneFlags.snapTargetRoot!, paths, bytes: BigInt(this.config.maxRangeBytes), }) + this.debug(`dbg800: trienodefetcher.ts`) + this.debug(`root: ${bytesToHex(this.fetcherDoneFlags.snapTargetRoot!)}`) + this.debug( + `paths requested: ${paths.map((valArr, _) => { + return valArr.map((val, _) => bytesToHex(val)) + })}`, + ) + // Response is valid, but check if peer is signalling that it does not have // the requested data. For trie node range queries that means the peer is not // yet synced. @@ -225,6 +268,9 @@ export class TrieNodeFetcher extends Fetcher let unknownChildNodeCount = 0 let hasStorageComponent = false + this.debug(`dbg804: trienodefetcher.ts`) + this.debug(`nodeData: ${node}`) + // get all children of received node if (node instanceof BranchMPTNode) { const children = (node as BranchMPTNode).getChildren() @@ -263,6 +309,7 @@ export class TrieNodeFetcher extends Fetcher storagePath, ].join('/') this.pathToNodeRequestData.setElement(syncPath, { + requested: false, nodeHash: bytesToHex(storageRoot), nodeParentHash: nodeHash, parentAccountHash: nodeHash, @@ -293,12 +340,14 @@ export class TrieNodeFetcher extends Fetcher await this.accountTrie.lookupNode(childNode.nodeHash as Uint8Array) } } catch (e) { + // console.log('dbg901') // if error is thrown, than the node is unknown and should be queued for fetching unknownChildNodeCount++ const { parentAccountHash } = this.pathToNodeRequestData.getElementByKey( pathString, ) as NodeRequestData this.pathToNodeRequestData.setElement(childNode.path, { + requested: false, nodeHash: bytesToHex(childNode.nodeHash as Uint8Array), nodeParentHash: nodeHash, // TODO root node does not have a parent, so handle that in the leaf callback when checking if dependencies are met recursively parentAccountHash, @@ -386,7 +435,7 @@ export class TrieNodeFetcher extends Fetcher this.debug( `Stored accountTrie with root actual=${bytesToHex( this.accountTrie.root(), - )} expected=${bytesToHex(this.root)}`, + )} expected=${bytesToHex(this.fetcherDoneFlags.snapTargetRoot!)}`, ) } } catch (e) { @@ -416,17 +465,25 @@ export class TrieNodeFetcher extends Fetcher if (this.pathToNodeRequestData.size() > 0) { let { pathStrings } = this.getSortedPathStrings() // TODO pass in number of paths to return while (tasks.length < maxTasks && pathStrings.length > 0) { - const requestedPathStrings = pathStrings.slice(0, max) + const pendingPathStrings = pathStrings.slice(0, max) pathStrings = pathStrings.slice(max + 1) - for (const pathString of requestedPathStrings) { - const nodeHash = this.pathToNodeRequestData.getElementByKey(pathString)?.nodeHash // TODO return node set too from sorted function and avoid lookups here - if (nodeHash === undefined) throw Error('Path should exist') - this.requestedNodeToPath.set(nodeHash as unknown as string, pathString) + const neededPathStrings = [] + for (const pathString of pendingPathStrings) { + const requestData = this.pathToNodeRequestData.getElementByKey(pathString) // TODO return node set too from sorted function and avoid lookups here + if (requestData === undefined) throw Error('Path should exist') + if (requestData.requested === false) { + this.requestedNodeToPath.set(requestData.nodeHash as unknown as string, pathString) + this.pathToNodeRequestData.setElement(pathString, { + ...requestData, + requested: true, + }) + neededPathStrings.push(pathString) + } } this.DEBUG && this.debug('At start of mergeAndFormatPaths') - const paths = mergeAndFormatKeyPaths(requestedPathStrings) as unknown as Uint8Array[][] + const paths = mergeAndFormatKeyPaths(neededPathStrings) as unknown as Uint8Array[][] tasks.push({ - pathStrings: requestedPathStrings, + pathStrings: neededPathStrings, paths, }) this.DEBUG && this.debug(`Created new tasks num=${tasks.length}`) diff --git a/packages/client/src/sync/fetcher/types.ts b/packages/client/src/sync/fetcher/types.ts index db348db0fbf..d567fa02320 100644 --- a/packages/client/src/sync/fetcher/types.ts +++ b/packages/client/src/sync/fetcher/types.ts @@ -39,6 +39,8 @@ export type SnapFetcherDoneFlags = { first: bigint count: bigint done: boolean + healCycleRepeatCount: number // used in AccountFetcher to determine how many times to repeat heal cycles + currentHeight: bigint } stateRoot?: Uint8Array } @@ -70,6 +72,8 @@ export function getInitFetcherDoneFlags(): SnapFetcherDoneFlags { first: BigInt(0), count: BigInt(0), done: false, + healCycleRepeatCount: Number(process.env.HEAL_CYCLE_REPEATS ?? '0'), + currentHeight: BigInt(0), }, } } diff --git a/packages/client/src/sync/snapsync.ts b/packages/client/src/sync/snapsync.ts index 17ec45aecdb..065cd0a3965 100644 --- a/packages/client/src/sync/snapsync.ts +++ b/packages/client/src/sync/snapsync.ts @@ -228,8 +228,8 @@ export class SnapSynchronizer extends Synchronizer { this.fetcher = new AccountFetcher({ config: this.config, pool: this.pool, + height, stateManager: this.execution.vm.stateManager as MerkleStateManager, - root: stateRoot, // This needs to be determined from the current state of the MPT dump first: BigInt(0), fetcherDoneFlags: this.fetcherDoneFlags, diff --git a/packages/client/test/sim/configs/mainnet.json b/packages/client/test/sim/configs/mainnet.json new file mode 100644 index 00000000000..d58d77ed2c1 --- /dev/null +++ b/packages/client/test/sim/configs/mainnet.json @@ -0,0 +1,868 @@ +{ + "config": { + "chainId": 1337903, + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "mergeForkBlock": 0, + "shanghaiTime": 0, + "cancunTime": 0, + "terminalTotalDifficulty": 1, + "terminalTotalDifficultyPassed": true + }, + "alloc": { + "0x0000000000000000000000000000000000000000": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000001": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000002": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000003": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000004": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000005": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000006": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000007": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000008": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000009": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000010": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000011": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000012": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000013": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000014": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000015": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000016": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000017": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000018": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000019": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000020": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000021": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000022": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000023": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000024": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000025": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000026": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000027": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000028": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000029": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000030": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000031": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000032": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000033": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000034": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000035": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000036": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000037": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000038": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000039": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000040": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000041": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000042": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000043": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000044": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000045": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000046": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000047": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000048": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000049": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000050": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000051": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000052": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000053": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000054": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000055": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000056": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000057": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000058": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000059": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000060": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000061": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000062": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000063": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000064": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000065": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000066": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000067": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000068": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000069": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000070": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000071": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000072": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000073": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000074": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000075": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000076": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000077": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000078": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000079": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000080": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000081": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000082": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000083": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000084": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000085": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000086": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000087": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000088": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000089": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000090": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000091": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000092": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000093": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000094": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000095": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000096": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000097": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000098": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000099": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009f": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000aa": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ab": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ac": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ad": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ae": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000af": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ba": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000be": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bf": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ca": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ce": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cf": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000da": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000db": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000dc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000dd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000de": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000df": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ea": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000eb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ec": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ed": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ee": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ef": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fa": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fe": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ff": { + "balance": "1" + }, + "0x4242424242424242424242424242424242424242": { + "balance": "0", + "code": "0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a26469706673582212201dd26f37a621703009abf16e77e69c93dc50c79db7f6cc37543e3e0e3decdc9764736f6c634300060b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000022": "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0x0000000000000000000000000000000000000000000000000000000000000023": "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x0000000000000000000000000000000000000000000000000000000000000024": "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x0000000000000000000000000000000000000000000000000000000000000025": "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x0000000000000000000000000000000000000000000000000000000000000026": "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0x0000000000000000000000000000000000000000000000000000000000000027": "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x0000000000000000000000000000000000000000000000000000000000000028": "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x0000000000000000000000000000000000000000000000000000000000000029": "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x000000000000000000000000000000000000000000000000000000000000002a": "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0x000000000000000000000000000000000000000000000000000000000000002b": "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x000000000000000000000000000000000000000000000000000000000000002c": "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0x000000000000000000000000000000000000000000000000000000000000002d": "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0x000000000000000000000000000000000000000000000000000000000000002e": "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0x000000000000000000000000000000000000000000000000000000000000002f": "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0x0000000000000000000000000000000000000000000000000000000000000030": "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x0000000000000000000000000000000000000000000000000000000000000031": "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x0000000000000000000000000000000000000000000000000000000000000032": "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0x0000000000000000000000000000000000000000000000000000000000000034": "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0x0000000000000000000000000000000000000000000000000000000000000035": "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x0000000000000000000000000000000000000000000000000000000000000036": "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0x0000000000000000000000000000000000000000000000000000000000000037": "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0x0000000000000000000000000000000000000000000000000000000000000038": "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0000000000000000000000000000000000000000000000000000000000000039": "0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0", + "0x000000000000000000000000000000000000000000000000000000000000003a": "0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544", + "0x000000000000000000000000000000000000000000000000000000000000003b": "0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765", + "0x000000000000000000000000000000000000000000000000000000000000003c": "0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4", + "0x000000000000000000000000000000000000000000000000000000000000003d": "0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1", + "0x000000000000000000000000000000000000000000000000000000000000003e": "0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636", + "0x000000000000000000000000000000000000000000000000000000000000003f": "0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c", + "0x0000000000000000000000000000000000000000000000000000000000000040": "0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7" + } + }, + "0xf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134": { + "balance": "10000000000000000000000000" + }, + "0x2cA5F489CC1Fd1CEC24747B64E8dE0F4A6A850E1": { + "balance": "10000000000000000000000000" + }, + "0x7203bd333a874D9d329050ecE393820fCD501eaA": { + "balance": "10000000000000000000000000" + }, + "0xA51918aA40D78Ff8be939bf0E8404252875c6aDF": { + "balance": "10000000000000000000000000" + }, + "0xAA81078e6b2121dd7A846690DFdD6b10d7658d8B": { + "balance": "10000000000000000000000000" + }, + "0xFA2d31D8f21c1D1633E9BEB641dF77D21D63ccDd": { + "balance": "10000000000000000000000000" + }, + "0xf751C9c6d60614226fE57D2cAD6e10C856a2ddA3": { + "balance": "10000000000000000000000000" + }, + "0x9cD16887f6A808AEaa65D3c840f059EeA4ca1319": { + "balance": "10000000000000000000000000" + }, + "0x2E07043584F11BFF0AC39c927665DF6c6ebaffFB": { + "balance": "10000000000000000000000000" + }, + "0x806ce45534bb07a2CAd3a84c53611a2b3DdE316A": { + "balance": "10000000000000000000000000" + }, + "0x97C9B168C5E14d5D369B6D88E9776E5B7b11dcC1": { + "balance": "10000000000000000000000000" + } + }, + "coinbase": "0x0000000000000000000000000000000000000000", + "difficulty": "0x01", + "extraData": "", + "gasLimit": "0x400000", + "nonce": "0x1234", + "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "timestamp": "0" +} diff --git a/packages/client/test/sim/configs/mainnet.ts b/packages/client/test/sim/configs/mainnet.ts deleted file mode 100644 index 30e0c71f25e..00000000000 --- a/packages/client/test/sim/configs/mainnet.ts +++ /dev/null @@ -1,898 +0,0 @@ -export const mainnetConfig = { - config: { - chainId: 1337903, - homesteadBlock: 0, - eip150Block: 0, - eip155Block: 0, - eip158Block: 0, - byzantiumBlock: 0, - constantinopleBlock: 0, - petersburgBlock: 0, - istanbulBlock: 0, - berlinBlock: 0, - londonBlock: 0, - mergeForkBlock: 0, - shanghaiTime: 0, - terminalTotalDifficulty: 0, - terminalTotalDifficultyPassed: true, - }, - alloc: { - '0x0000000000000000000000000000000000000000': { - balance: '1', - }, - '0x0000000000000000000000000000000000000001': { - balance: '1', - }, - '0x0000000000000000000000000000000000000002': { - balance: '1', - }, - '0x0000000000000000000000000000000000000003': { - balance: '1', - }, - '0x0000000000000000000000000000000000000004': { - balance: '1', - }, - '0x0000000000000000000000000000000000000005': { - balance: '1', - }, - '0x0000000000000000000000000000000000000006': { - balance: '1', - }, - '0x0000000000000000000000000000000000000007': { - balance: '1', - }, - '0x0000000000000000000000000000000000000008': { - balance: '1', - }, - '0x0000000000000000000000000000000000000009': { - balance: '1', - }, - '0x000000000000000000000000000000000000000a': { - balance: '1', - }, - '0x000000000000000000000000000000000000000b': { - balance: '1', - }, - '0x000000000000000000000000000000000000000c': { - balance: '1', - }, - '0x000000000000000000000000000000000000000d': { - balance: '1', - }, - '0x000000000000000000000000000000000000000e': { - balance: '1', - }, - '0x000000000000000000000000000000000000000f': { - balance: '1', - }, - '0x0000000000000000000000000000000000000010': { - balance: '1', - }, - '0x0000000000000000000000000000000000000011': { - balance: '1', - }, - '0x0000000000000000000000000000000000000012': { - balance: '1', - }, - '0x0000000000000000000000000000000000000013': { - balance: '1', - }, - '0x0000000000000000000000000000000000000014': { - balance: '1', - }, - '0x0000000000000000000000000000000000000015': { - balance: '1', - }, - '0x0000000000000000000000000000000000000016': { - balance: '1', - }, - '0x0000000000000000000000000000000000000017': { - balance: '1', - }, - '0x0000000000000000000000000000000000000018': { - balance: '1', - }, - '0x0000000000000000000000000000000000000019': { - balance: '1', - }, - '0x000000000000000000000000000000000000001a': { - balance: '1', - }, - '0x000000000000000000000000000000000000001b': { - balance: '1', - }, - '0x000000000000000000000000000000000000001c': { - balance: '1', - }, - '0x000000000000000000000000000000000000001d': { - balance: '1', - }, - '0x000000000000000000000000000000000000001e': { - balance: '1', - }, - '0x000000000000000000000000000000000000001f': { - balance: '1', - }, - '0x0000000000000000000000000000000000000020': { - balance: '1', - }, - '0x0000000000000000000000000000000000000021': { - balance: '1', - }, - '0x0000000000000000000000000000000000000022': { - balance: '1', - }, - '0x0000000000000000000000000000000000000023': { - balance: '1', - }, - '0x0000000000000000000000000000000000000024': { - balance: '1', - }, - '0x0000000000000000000000000000000000000025': { - balance: '1', - }, - '0x0000000000000000000000000000000000000026': { - balance: '1', - }, - '0x0000000000000000000000000000000000000027': { - balance: '1', - }, - '0x0000000000000000000000000000000000000028': { - balance: '1', - }, - '0x0000000000000000000000000000000000000029': { - balance: '1', - }, - '0x000000000000000000000000000000000000002a': { - balance: '1', - }, - '0x000000000000000000000000000000000000002b': { - balance: '1', - }, - '0x000000000000000000000000000000000000002c': { - balance: '1', - }, - '0x000000000000000000000000000000000000002d': { - balance: '1', - }, - '0x000000000000000000000000000000000000002e': { - balance: '1', - }, - '0x000000000000000000000000000000000000002f': { - balance: '1', - }, - '0x0000000000000000000000000000000000000030': { - balance: '1', - }, - '0x0000000000000000000000000000000000000031': { - balance: '1', - }, - '0x0000000000000000000000000000000000000032': { - balance: '1', - }, - '0x0000000000000000000000000000000000000033': { - balance: '1', - }, - '0x0000000000000000000000000000000000000034': { - balance: '1', - }, - '0x0000000000000000000000000000000000000035': { - balance: '1', - }, - '0x0000000000000000000000000000000000000036': { - balance: '1', - }, - '0x0000000000000000000000000000000000000037': { - balance: '1', - }, - '0x0000000000000000000000000000000000000038': { - balance: '1', - }, - '0x0000000000000000000000000000000000000039': { - balance: '1', - }, - '0x000000000000000000000000000000000000003a': { - balance: '1', - }, - '0x000000000000000000000000000000000000003b': { - balance: '1', - }, - '0x000000000000000000000000000000000000003c': { - balance: '1', - }, - '0x000000000000000000000000000000000000003d': { - balance: '1', - }, - '0x000000000000000000000000000000000000003e': { - balance: '1', - }, - '0x000000000000000000000000000000000000003f': { - balance: '1', - }, - '0x0000000000000000000000000000000000000040': { - balance: '1', - }, - '0x0000000000000000000000000000000000000041': { - balance: '1', - }, - '0x0000000000000000000000000000000000000042': { - balance: '1', - }, - '0x0000000000000000000000000000000000000043': { - balance: '1', - }, - '0x0000000000000000000000000000000000000044': { - balance: '1', - }, - '0x0000000000000000000000000000000000000045': { - balance: '1', - }, - '0x0000000000000000000000000000000000000046': { - balance: '1', - }, - '0x0000000000000000000000000000000000000047': { - balance: '1', - }, - '0x0000000000000000000000000000000000000048': { - balance: '1', - }, - '0x0000000000000000000000000000000000000049': { - balance: '1', - }, - '0x000000000000000000000000000000000000004a': { - balance: '1', - }, - '0x000000000000000000000000000000000000004b': { - balance: '1', - }, - '0x000000000000000000000000000000000000004c': { - balance: '1', - }, - '0x000000000000000000000000000000000000004d': { - balance: '1', - }, - '0x000000000000000000000000000000000000004e': { - balance: '1', - }, - '0x000000000000000000000000000000000000004f': { - balance: '1', - }, - '0x0000000000000000000000000000000000000050': { - balance: '1', - }, - '0x0000000000000000000000000000000000000051': { - balance: '1', - }, - '0x0000000000000000000000000000000000000052': { - balance: '1', - }, - '0x0000000000000000000000000000000000000053': { - balance: '1', - }, - '0x0000000000000000000000000000000000000054': { - balance: '1', - }, - '0x0000000000000000000000000000000000000055': { - balance: '1', - }, - '0x0000000000000000000000000000000000000056': { - balance: '1', - }, - '0x0000000000000000000000000000000000000057': { - balance: '1', - }, - '0x0000000000000000000000000000000000000058': { - balance: '1', - }, - '0x0000000000000000000000000000000000000059': { - balance: '1', - }, - '0x000000000000000000000000000000000000005a': { - balance: '1', - }, - '0x000000000000000000000000000000000000005b': { - balance: '1', - }, - '0x000000000000000000000000000000000000005c': { - balance: '1', - }, - '0x000000000000000000000000000000000000005d': { - balance: '1', - }, - '0x000000000000000000000000000000000000005e': { - balance: '1', - }, - '0x000000000000000000000000000000000000005f': { - balance: '1', - }, - '0x0000000000000000000000000000000000000060': { - balance: '1', - }, - '0x0000000000000000000000000000000000000061': { - balance: '1', - }, - '0x0000000000000000000000000000000000000062': { - balance: '1', - }, - '0x0000000000000000000000000000000000000063': { - balance: '1', - }, - '0x0000000000000000000000000000000000000064': { - balance: '1', - }, - '0x0000000000000000000000000000000000000065': { - balance: '1', - }, - '0x0000000000000000000000000000000000000066': { - balance: '1', - }, - '0x0000000000000000000000000000000000000067': { - balance: '1', - }, - '0x0000000000000000000000000000000000000068': { - balance: '1', - }, - '0x0000000000000000000000000000000000000069': { - balance: '1', - }, - '0x000000000000000000000000000000000000006a': { - balance: '1', - }, - '0x000000000000000000000000000000000000006b': { - balance: '1', - }, - '0x000000000000000000000000000000000000006c': { - balance: '1', - }, - '0x000000000000000000000000000000000000006d': { - balance: '1', - }, - '0x000000000000000000000000000000000000006e': { - balance: '1', - }, - '0x000000000000000000000000000000000000006f': { - balance: '1', - }, - '0x0000000000000000000000000000000000000070': { - balance: '1', - }, - '0x0000000000000000000000000000000000000071': { - balance: '1', - }, - '0x0000000000000000000000000000000000000072': { - balance: '1', - }, - '0x0000000000000000000000000000000000000073': { - balance: '1', - }, - '0x0000000000000000000000000000000000000074': { - balance: '1', - }, - '0x0000000000000000000000000000000000000075': { - balance: '1', - }, - '0x0000000000000000000000000000000000000076': { - balance: '1', - }, - '0x0000000000000000000000000000000000000077': { - balance: '1', - }, - '0x0000000000000000000000000000000000000078': { - balance: '1', - }, - '0x0000000000000000000000000000000000000079': { - balance: '1', - }, - '0x000000000000000000000000000000000000007a': { - balance: '1', - }, - '0x000000000000000000000000000000000000007b': { - balance: '1', - }, - '0x000000000000000000000000000000000000007c': { - balance: '1', - }, - '0x000000000000000000000000000000000000007d': { - balance: '1', - }, - '0x000000000000000000000000000000000000007e': { - balance: '1', - }, - '0x000000000000000000000000000000000000007f': { - balance: '1', - }, - '0x0000000000000000000000000000000000000080': { - balance: '1', - }, - '0x0000000000000000000000000000000000000081': { - balance: '1', - }, - '0x0000000000000000000000000000000000000082': { - balance: '1', - }, - '0x0000000000000000000000000000000000000083': { - balance: '1', - }, - '0x0000000000000000000000000000000000000084': { - balance: '1', - }, - '0x0000000000000000000000000000000000000085': { - balance: '1', - }, - '0x0000000000000000000000000000000000000086': { - balance: '1', - }, - '0x0000000000000000000000000000000000000087': { - balance: '1', - }, - '0x0000000000000000000000000000000000000088': { - balance: '1', - }, - '0x0000000000000000000000000000000000000089': { - balance: '1', - }, - '0x000000000000000000000000000000000000008a': { - balance: '1', - }, - '0x000000000000000000000000000000000000008b': { - balance: '1', - }, - '0x000000000000000000000000000000000000008c': { - balance: '1', - }, - '0x000000000000000000000000000000000000008d': { - balance: '1', - }, - '0x000000000000000000000000000000000000008e': { - balance: '1', - }, - '0x000000000000000000000000000000000000008f': { - balance: '1', - }, - '0x0000000000000000000000000000000000000090': { - balance: '1', - }, - '0x0000000000000000000000000000000000000091': { - balance: '1', - }, - '0x0000000000000000000000000000000000000092': { - balance: '1', - }, - '0x0000000000000000000000000000000000000093': { - balance: '1', - }, - '0x0000000000000000000000000000000000000094': { - balance: '1', - }, - '0x0000000000000000000000000000000000000095': { - balance: '1', - }, - '0x0000000000000000000000000000000000000096': { - balance: '1', - }, - '0x0000000000000000000000000000000000000097': { - balance: '1', - }, - '0x0000000000000000000000000000000000000098': { - balance: '1', - }, - '0x0000000000000000000000000000000000000099': { - balance: '1', - }, - '0x000000000000000000000000000000000000009a': { - balance: '1', - }, - '0x000000000000000000000000000000000000009b': { - balance: '1', - }, - '0x000000000000000000000000000000000000009c': { - balance: '1', - }, - '0x000000000000000000000000000000000000009d': { - balance: '1', - }, - '0x000000000000000000000000000000000000009e': { - balance: '1', - }, - '0x000000000000000000000000000000000000009f': { - balance: '1', - }, - '0x00000000000000000000000000000000000000a0': { - balance: '1', - }, - '0x00000000000000000000000000000000000000a1': { - balance: '1', - }, - '0x00000000000000000000000000000000000000a2': { - balance: '1', - }, - '0x00000000000000000000000000000000000000a3': { - balance: '1', - }, - '0x00000000000000000000000000000000000000a4': { - balance: '1', - }, - '0x00000000000000000000000000000000000000a5': { - balance: '1', - }, - '0x00000000000000000000000000000000000000a6': { - balance: '1', - }, - '0x00000000000000000000000000000000000000a7': { - balance: '1', - }, - '0x00000000000000000000000000000000000000a8': { - balance: '1', - }, - '0x00000000000000000000000000000000000000a9': { - balance: '1', - }, - '0x00000000000000000000000000000000000000aa': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ab': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ac': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ad': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ae': { - balance: '1', - }, - '0x00000000000000000000000000000000000000af': { - balance: '1', - }, - '0x00000000000000000000000000000000000000b0': { - balance: '1', - }, - '0x00000000000000000000000000000000000000b1': { - balance: '1', - }, - '0x00000000000000000000000000000000000000b2': { - balance: '1', - }, - '0x00000000000000000000000000000000000000b3': { - balance: '1', - }, - '0x00000000000000000000000000000000000000b4': { - balance: '1', - }, - '0x00000000000000000000000000000000000000b5': { - balance: '1', - }, - '0x00000000000000000000000000000000000000b6': { - balance: '1', - }, - '0x00000000000000000000000000000000000000b7': { - balance: '1', - }, - '0x00000000000000000000000000000000000000b8': { - balance: '1', - }, - '0x00000000000000000000000000000000000000b9': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ba': { - balance: '1', - }, - '0x00000000000000000000000000000000000000bb': { - balance: '1', - }, - '0x00000000000000000000000000000000000000bc': { - balance: '1', - }, - '0x00000000000000000000000000000000000000bd': { - balance: '1', - }, - '0x00000000000000000000000000000000000000be': { - balance: '1', - }, - '0x00000000000000000000000000000000000000bf': { - balance: '1', - }, - '0x00000000000000000000000000000000000000c0': { - balance: '1', - }, - '0x00000000000000000000000000000000000000c1': { - balance: '1', - }, - '0x00000000000000000000000000000000000000c2': { - balance: '1', - }, - '0x00000000000000000000000000000000000000c3': { - balance: '1', - }, - '0x00000000000000000000000000000000000000c4': { - balance: '1', - }, - '0x00000000000000000000000000000000000000c5': { - balance: '1', - }, - '0x00000000000000000000000000000000000000c6': { - balance: '1', - }, - '0x00000000000000000000000000000000000000c7': { - balance: '1', - }, - '0x00000000000000000000000000000000000000c8': { - balance: '1', - }, - '0x00000000000000000000000000000000000000c9': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ca': { - balance: '1', - }, - '0x00000000000000000000000000000000000000cb': { - balance: '1', - }, - '0x00000000000000000000000000000000000000cc': { - balance: '1', - }, - '0x00000000000000000000000000000000000000cd': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ce': { - balance: '1', - }, - '0x00000000000000000000000000000000000000cf': { - balance: '1', - }, - '0x00000000000000000000000000000000000000d0': { - balance: '1', - }, - '0x00000000000000000000000000000000000000d1': { - balance: '1', - }, - '0x00000000000000000000000000000000000000d2': { - balance: '1', - }, - '0x00000000000000000000000000000000000000d3': { - balance: '1', - }, - '0x00000000000000000000000000000000000000d4': { - balance: '1', - }, - '0x00000000000000000000000000000000000000d5': { - balance: '1', - }, - '0x00000000000000000000000000000000000000d6': { - balance: '1', - }, - '0x00000000000000000000000000000000000000d7': { - balance: '1', - }, - '0x00000000000000000000000000000000000000d8': { - balance: '1', - }, - '0x00000000000000000000000000000000000000d9': { - balance: '1', - }, - '0x00000000000000000000000000000000000000da': { - balance: '1', - }, - '0x00000000000000000000000000000000000000db': { - balance: '1', - }, - '0x00000000000000000000000000000000000000dc': { - balance: '1', - }, - '0x00000000000000000000000000000000000000dd': { - balance: '1', - }, - '0x00000000000000000000000000000000000000de': { - balance: '1', - }, - '0x00000000000000000000000000000000000000df': { - balance: '1', - }, - '0x00000000000000000000000000000000000000e0': { - balance: '1', - }, - '0x00000000000000000000000000000000000000e1': { - balance: '1', - }, - '0x00000000000000000000000000000000000000e2': { - balance: '1', - }, - '0x00000000000000000000000000000000000000e3': { - balance: '1', - }, - '0x00000000000000000000000000000000000000e4': { - balance: '1', - }, - '0x00000000000000000000000000000000000000e5': { - balance: '1', - }, - '0x00000000000000000000000000000000000000e6': { - balance: '1', - }, - '0x00000000000000000000000000000000000000e7': { - balance: '1', - }, - '0x00000000000000000000000000000000000000e8': { - balance: '1', - }, - '0x00000000000000000000000000000000000000e9': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ea': { - balance: '1', - }, - '0x00000000000000000000000000000000000000eb': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ec': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ed': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ee': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ef': { - balance: '1', - }, - '0x00000000000000000000000000000000000000f0': { - balance: '1', - }, - '0x00000000000000000000000000000000000000f1': { - balance: '1', - }, - '0x00000000000000000000000000000000000000f2': { - balance: '1', - }, - '0x00000000000000000000000000000000000000f3': { - balance: '1', - }, - '0x00000000000000000000000000000000000000f4': { - balance: '1', - }, - '0x00000000000000000000000000000000000000f5': { - balance: '1', - }, - '0x00000000000000000000000000000000000000f6': { - balance: '1', - }, - '0x00000000000000000000000000000000000000f7': { - balance: '1', - }, - '0x00000000000000000000000000000000000000f8': { - balance: '1', - }, - '0x00000000000000000000000000000000000000f9': { - balance: '1', - }, - '0x00000000000000000000000000000000000000fa': { - balance: '1', - }, - '0x00000000000000000000000000000000000000fb': { - balance: '1', - }, - '0x00000000000000000000000000000000000000fc': { - balance: '1', - }, - '0x00000000000000000000000000000000000000fd': { - balance: '1', - }, - '0x00000000000000000000000000000000000000fe': { - balance: '1', - }, - '0x00000000000000000000000000000000000000ff': { - balance: '1', - }, - '0x4242424242424242424242424242424242424242': { - balance: '0', - code: '0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a26469706673582212201dd26f37a621703009abf16e77e69c93dc50c79db7f6cc37543e3e0e3decdc9764736f6c634300060b0033', - storage: { - '0x0000000000000000000000000000000000000000000000000000000000000022': - '0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b', - '0x0000000000000000000000000000000000000000000000000000000000000023': - '0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71', - '0x0000000000000000000000000000000000000000000000000000000000000024': - '0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c', - '0x0000000000000000000000000000000000000000000000000000000000000025': - '0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c', - '0x0000000000000000000000000000000000000000000000000000000000000026': - '0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30', - '0x0000000000000000000000000000000000000000000000000000000000000027': - '0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1', - '0x0000000000000000000000000000000000000000000000000000000000000028': - '0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c', - '0x0000000000000000000000000000000000000000000000000000000000000029': - '0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193', - '0x000000000000000000000000000000000000000000000000000000000000002a': - '0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1', - '0x000000000000000000000000000000000000000000000000000000000000002b': - '0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b', - '0x000000000000000000000000000000000000000000000000000000000000002c': - '0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220', - '0x000000000000000000000000000000000000000000000000000000000000002d': - '0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f', - '0x000000000000000000000000000000000000000000000000000000000000002e': - '0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e', - '0x000000000000000000000000000000000000000000000000000000000000002f': - '0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784', - '0x0000000000000000000000000000000000000000000000000000000000000030': - '0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb', - '0x0000000000000000000000000000000000000000000000000000000000000031': - '0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb', - '0x0000000000000000000000000000000000000000000000000000000000000032': - '0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab', - '0x0000000000000000000000000000000000000000000000000000000000000033': - '0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4', - '0x0000000000000000000000000000000000000000000000000000000000000034': - '0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f', - '0x0000000000000000000000000000000000000000000000000000000000000035': - '0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa', - '0x0000000000000000000000000000000000000000000000000000000000000036': - '0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c', - '0x0000000000000000000000000000000000000000000000000000000000000037': - '0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167', - '0x0000000000000000000000000000000000000000000000000000000000000038': - '0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7', - '0x0000000000000000000000000000000000000000000000000000000000000039': - '0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0', - '0x000000000000000000000000000000000000000000000000000000000000003a': - '0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544', - '0x000000000000000000000000000000000000000000000000000000000000003b': - '0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765', - '0x000000000000000000000000000000000000000000000000000000000000003c': - '0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4', - '0x000000000000000000000000000000000000000000000000000000000000003d': - '0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1', - '0x000000000000000000000000000000000000000000000000000000000000003e': - '0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636', - '0x000000000000000000000000000000000000000000000000000000000000003f': - '0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c', - '0x0000000000000000000000000000000000000000000000000000000000000040': - '0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7', - }, - }, - '0xf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134': { - balance: '10000000000000000000000000', - }, - '0x2cA5F489CC1Fd1CEC24747B64E8dE0F4A6A850E1': { - balance: '10000000000000000000000000', - }, - '0x7203bd333a874D9d329050ecE393820fCD501eaA': { - balance: '10000000000000000000000000', - }, - '0xA51918aA40D78Ff8be939bf0E8404252875c6aDF': { - balance: '10000000000000000000000000', - }, - '0xAA81078e6b2121dd7A846690DFdD6b10d7658d8B': { - balance: '10000000000000000000000000', - }, - '0xFA2d31D8f21c1D1633E9BEB641dF77D21D63ccDd': { - balance: '10000000000000000000000000', - }, - '0xf751C9c6d60614226fE57D2cAD6e10C856a2ddA3': { - balance: '10000000000000000000000000', - }, - '0x9cD16887f6A808AEaa65D3c840f059EeA4ca1319': { - balance: '10000000000000000000000000', - }, - '0x2E07043584F11BFF0AC39c927665DF6c6ebaffFB': { - balance: '10000000000000000000000000', - }, - '0x806ce45534bb07a2CAd3a84c53611a2b3DdE316A': { - balance: '10000000000000000000000000', - }, - '0x97C9B168C5E14d5D369B6D88E9776E5B7b11dcC1': { - balance: '10000000000000000000000000', - }, - }, - coinbase: '0x0000000000000000000000000000000000000000', - difficulty: '0x01', - extraData: '', - gasLimit: '0x400000', - nonce: '0x1234', - mixhash: '0x0000000000000000000000000000000000000000000000000000000000000000', - parentHash: '0x0000000000000000000000000000000000000000000000000000000000000000', - timestamp: '0', -} diff --git a/packages/client/test/sim/configs/pectra3.json b/packages/client/test/sim/configs/pectra3.json new file mode 100644 index 00000000000..150b9b484d8 --- /dev/null +++ b/packages/client/test/sim/configs/pectra3.json @@ -0,0 +1,926 @@ +{ + "config": { + "chainId": 7011893082, + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "mergeNetsplitBlock": 0, + "terminalTotalDifficulty": 0, + "terminalTotalDifficultyPassed": true, + "shanghaiTime": 0, + "cancunTime": 0, + "depositContractAddress": "0x4242424242424242424242424242424242424242", + "pragueTime": 1726058628 + }, + "alloc": { + "0x0000000000000000000000000000000000000000": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000001": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000002": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000003": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000004": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000005": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000006": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000007": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000008": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000009": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000010": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000011": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000012": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000013": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000014": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000015": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000016": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000017": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000018": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000019": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000020": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000021": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000022": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000023": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000024": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000025": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000026": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000027": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000028": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000029": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000030": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000031": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000032": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000033": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000034": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000035": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000036": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000037": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000038": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000039": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000040": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000041": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000042": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000043": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000044": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000045": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000046": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000047": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000048": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000049": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000050": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000051": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000052": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000053": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000054": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000055": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000056": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000057": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000058": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000059": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000060": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000061": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000062": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000063": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000064": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000065": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000066": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000067": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000068": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000069": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000070": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000071": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000072": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000073": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000074": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000075": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000076": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000077": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000078": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000079": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000080": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000081": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000082": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000083": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000084": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000085": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000086": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000087": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000088": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000089": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000090": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000091": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000092": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000093": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000094": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000095": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000096": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000097": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000098": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000099": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009f": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000aa": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ab": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ac": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ad": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ae": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000af": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ba": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000be": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bf": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ca": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ce": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cf": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000da": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000db": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000dc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000dd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000de": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000df": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ea": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000eb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ec": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ed": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ee": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ef": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fa": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fe": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ff": { + "balance": "1" + }, + "0x4242424242424242424242424242424242424242": { + "balance": "0", + "code": "0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a2646970667358221220dceca8706b29e917dacf25fceef95acac8d90d765ac926663ce4096195952b6164736f6c634300060b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000022": "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0x0000000000000000000000000000000000000000000000000000000000000023": "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x0000000000000000000000000000000000000000000000000000000000000024": "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x0000000000000000000000000000000000000000000000000000000000000025": "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x0000000000000000000000000000000000000000000000000000000000000026": "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0x0000000000000000000000000000000000000000000000000000000000000027": "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x0000000000000000000000000000000000000000000000000000000000000028": "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x0000000000000000000000000000000000000000000000000000000000000029": "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x000000000000000000000000000000000000000000000000000000000000002a": "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0x000000000000000000000000000000000000000000000000000000000000002b": "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x000000000000000000000000000000000000000000000000000000000000002c": "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0x000000000000000000000000000000000000000000000000000000000000002d": "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0x000000000000000000000000000000000000000000000000000000000000002e": "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0x000000000000000000000000000000000000000000000000000000000000002f": "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0x0000000000000000000000000000000000000000000000000000000000000030": "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x0000000000000000000000000000000000000000000000000000000000000031": "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x0000000000000000000000000000000000000000000000000000000000000032": "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0x0000000000000000000000000000000000000000000000000000000000000034": "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0x0000000000000000000000000000000000000000000000000000000000000035": "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x0000000000000000000000000000000000000000000000000000000000000036": "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0x0000000000000000000000000000000000000000000000000000000000000037": "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0x0000000000000000000000000000000000000000000000000000000000000038": "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0000000000000000000000000000000000000000000000000000000000000039": "0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0", + "0x000000000000000000000000000000000000000000000000000000000000003a": "0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544", + "0x000000000000000000000000000000000000000000000000000000000000003b": "0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765", + "0x000000000000000000000000000000000000000000000000000000000000003c": "0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4", + "0x000000000000000000000000000000000000000000000000000000000000003d": "0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1", + "0x000000000000000000000000000000000000000000000000000000000000003e": "0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636", + "0x000000000000000000000000000000000000000000000000000000000000003f": "0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c", + "0x0000000000000000000000000000000000000000000000000000000000000040": "0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7" + } + }, + "0x000F3df6D732807Ef1319fB7B8bB8522d0Beac02": { + "balance": "0", + "nonce": "1", + "code": "0x3373fffffffffffffffffffffffffffffffffffffffe14604d57602036146024575f5ffd5b5f35801560495762001fff810690815414603c575f5ffd5b62001fff01545f5260205ff35b5f5ffd5b62001fff42064281555f359062001fff015500" + }, + "0x0aae40965e6800cd9b1f4b05ff21581047e3f91e": { + "balance": "0", + "nonce": "1", + "code": "0x3373fffffffffffffffffffffffffffffffffffffffe1460575767ffffffffffffffff5f3511605357600143035f3511604b575f35612000014311604b57611fff5f3516545f5260205ff35b5f5f5260205ff35b5f5ffd5b5f35611fff60014303165500" + }, + "0x00A3ca265EBcb825B45F985A16CEFB49958cE017": { + "balance": "0", + "nonce": "1", + "code": "0x3373fffffffffffffffffffffffffffffffffffffffe146090573615156028575f545f5260205ff35b366038141561012e5760115f54600182026001905f5b5f82111560595781019083028483029004916001019190603e565b90939004341061012e57600154600101600155600354806003026004013381556001015f3581556001016020359055600101600355005b6003546002548082038060101160a4575060105b5f5b81811460dd5780604c02838201600302600401805490600101805490600101549160601b83528260140152906034015260010160a6565b910180921460ed579060025560f8565b90505f6002555f6003555b5f548061049d141561010757505f5b60015460028282011161011c5750505f610122565b01600290035b5f555f600155604c025ff35b5f5ffd", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000000000000000000000000000000000000000049d" + } + }, + "0x00b42dbF2194e931E80326D950320f7d9Dbeac02": { + "balance": "0", + "nonce": "1", + "code": "0x3373fffffffffffffffffffffffffffffffffffffffe146098573615156028575f545f5260205ff35b36606014156101445760115f54600182026001905f5b5f82111560595781019083028483029004916001019190603e565b90939004341061014457600154600101600155600354806004026004013381556001015f35815560010160203581556001016040359055600101600355005b6003546002548082038060011160ac575060015b5f5b81811460f15780607402838201600402600401805490600101805490600101805490600101549260601b84529083601401528260340152906054015260010160ae565b9101809214610103579060025561010e565b90505f6002555f6003555b5f548061049d141561011d57505f5b6001546001828201116101325750505f610138565b01600190035b5f555f6001556074025ff35b5f5ffd", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000000000000000000000000000000000000000049d" + } + }, + "0x454b0EA7d8aD3C56D0CF2e44Ed97b2Feab4D7AF2": { + "balance": "1000000000000000000000000000" + }, + "0xd3248BA3E5492D767F8e427Cb9C7B9D5C3972D7B": { + "balance": "1000000000000000000000000000" + }, + "0xAD01b55d7c3448B8899862eb335FBb17075d8DE2": { + "balance": "1000000000000000000000000000" + }, + "0x7e454a14B8e7528465eeF86f0DC1da4f235d9D79": { + "balance": "1000000000000000000000000000" + }, + "0x7a40026A3b9A41754a95EeC8c92C6B99886f440C": { + "balance": "1000000000000000000000000000" + }, + "0x8c4D8CDD1f474510Dd70D66F2785a3a38a29AC1A": { + "balance": "1000000000000000000000000000" + }, + "0xfC7360b3b28cf4204268A8354dbEc60720d155D2": { + "balance": "1000000000000000000000000000" + }, + "0x2F7626bBDb8c0f9071bC98046Ef6fDed2167F97F": { + "balance": "1000000000000000000000000000" + }, + "0x752CE31Dec0dde7D1563CdF6438d892De2D4FBee": { + "balance": "1000000000000000000000000000" + }, + "0x455f42d91096c4Aa708D7Cbcb2DC499dE89C402c": { + "balance": "1000000000000000000000000000" + }, + "0x85154341488732D57a97F54AB9706Bc4B71B8636": { + "balance": "1000000000000000000000000000" + }, + "0x6a9CcA73d4Ff3a249fa778C7651f4Df8B9fFa0Df": { + "balance": "1000000000000000000000000000" + }, + "0xee2d0567AAe8080CA269b7908F4aF8BBb59A6804": { + "balance": "1000000000000000000000000000" + }, + "0xDd8D4027078a471816e4Ef7F69aFc0A5d2947dDc": { + "balance": "1000000000000000000000000000" + }, + "0x20466E9A67f299F6056bE52A50ea324FA6Bd05D5": { + "balance": "1000000000000000000000000000" + }, + "0x03F24BB0C9cfb30217Ff992A36ae9230F2A1697f": { + "balance": "1000000000000000000000000000" + }, + "0x032d8372C519c3927b87BDe4479E846a81EF2d10": { + "balance": "1000000000000000000000000000" + }, + "0xF863DF14954df73804b3150F3754a8F98CBB1D0d": { + "balance": "1000000000000000000000000000" + }, + "0xbe918A6aef1920F3706E23d153146aA6C5982620": { + "balance": "1000000000000000000000000000" + }, + "0xA0c7edA3CE474BC670A11EA9537cBEfd36331123": { + "balance": "1000000000000000000000000000" + }, + "0xF03b43BeB861044492Eb43E247bEE2AC6C80c651": { + "balance": "1000000000000000000000000000" + } + }, + "coinbase": "0x0000000000000000000000000000000000000000", + "difficulty": "0x01", + "extraData": "", + "gasLimit": "0x17d7840", + "nonce": "0x1234", + "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "timestamp": "1726057800" +} diff --git a/packages/client/test/sim/connect.spec.ts b/packages/client/test/sim/connect.spec.ts new file mode 100644 index 00000000000..d6713fab96e --- /dev/null +++ b/packages/client/test/sim/connect.spec.ts @@ -0,0 +1,114 @@ +import { createCommonFromGethGenesis } from '@ethereumjs/common' +import { DPT, LES, RLPx, SNAP } from '@ethereumjs/devp2p' +import { hexToBytes } from '@ethereumjs/util' +import { assert, describe, it } from 'vitest' +import { Peer, Protocol } from '@ethereumjs/devp2p' + +import pectra3Json from './configs/pectra3.json' +import { Config } from '../../src/index.js' +import { Chain } from '../../src/blockchain/index.js' +import { SnapProtocol } from '../../src/net/protocol/index.js' + +const STATIC_ID = hexToBytes( + '0x' + 'a9faec679fb6d5a68dc7f0301e4e13f35747f74d25e80edbc8768c24f43b128b', +) +let rlpx: RLPx + +describe('simple mainnet test run', async () => { + try { + const config = new Config({ accountCache: 10000, storageCache: 1000 }) + const chain = await Chain.create({ config }) + const p = new SnapProtocol({ config, chain }) + + const common = createCommonFromGethGenesis(pectra3Json, { chain: 'pectra3' }) + const privateKey = hexToBytes( + '0xdc6457099f127cf0bac78de8b297df04951281909db4f58b43def7c7151e765d', + ) + const peerHost = '127.0.0.1' // IP address of the devp2p server + const peerPort = 30303 // devp2p server port + const dpt = new DPT(privateKey, { + // Disable discovery, only connect to peers manually + shouldFindNeighbours: false, + refreshInterval: 30000, + endpoint: { address: peerHost, udpPort: peerPort, tcpPort: peerPort }, + }) + dpt.events.on('error', (err) => console.error(`DPT error: ${err}`)) + rlpx = new RLPx(privateKey, { + dpt, + maxPeers: 25, + capabilities: [SNAP.snap, LES.les4], + common, + }) + rlpx.events.on('error', (err) => console.error(`RLPx error: ${err.stack ?? err}`)) + + await dpt + .addPeer({ address: peerHost, udpPort: peerPort, tcpPort: peerPort }) + .then((peer) => { + rlpx.events.on('peer:added', (peer: Peer) => { + // Send payload to the peer here + const snap: Protocol = peer.getProtocols()[0] as any + const reqId = BigInt(1) + const root = hexToBytes( + '0x04157502e6177a76ca4dbf7784e5ec1a926049db6a91e13efb70a095a72a45d9', + ) + const paths = [[hexToBytes('0x')]] + const bytes = BigInt(5000000) + + const payload = p.encode( + p.messages.filter((message) => message.name === 'GetTrieNodes')[0], + { + reqId, + root, + paths, + bytes, + }, + ) + + snap.sendMessage(SNAP.MESSAGE_CODES.GET_TRIE_NODES, payload) + // snap.sendMessage(SNAP.MESSAGE_CODES.TRIE_NODES, []) + // const requests: { headers: BlockHeader[]; bodies: any[] } = { headers: [], bodies: [] } + // const clientId = peer.getHelloMessage().clientId + // console.log(`Add peer: ${addr} ${clientId} (snap${snap.getVersion()}) (total: ${rlpx.getPeers().length})`,) + + // snap.events.once('TrieNodes', (status: devp2p.SNAP.) => { + // const msg = [ + // Uint8Array.from([]), + // [ + // bytesToInt(status['headNum']), + // Uint8Array.from([1]), + // Uint8Array.from([]), + // Uint8Array.from([1]), + // ], + // ] + // snap.sendMessage(devp2p.LES.MESSAGE_CODES.GET_BLOCK_HEADERS, msg) + // }) + }) + rlpx.events.on('peer:removed', (peer, reasonCode, disconnectMessage) => { + console.log('Disconnected from peer', reasonCode, disconnectMessage) + }) + rlpx._connectToPeer(peer) + }) + .catch((err) => { + console.log(`error on connection to local node: ${err.stack ?? err}`) + rlpx.destroy() + }) + } catch (error) { + console.log(error) + } + it.skipIf(false)( + 'connect', + async () => { + console.log('dbg200') + }, + 0, + ) + + it('network cleanup', async () => { + try { + rlpx.disconnect(STATIC_ID) + assert.ok(true, 'network cleaned') + } catch (e) { + assert.fail('network not cleaned properly') + } + }, 60_000) +}) diff --git a/packages/client/test/sim/simutils.ts b/packages/client/test/sim/simutils.ts index ff0a2247b4e..7a0fcbdba39 100644 --- a/packages/client/test/sim/simutils.ts +++ b/packages/client/test/sim/simutils.ts @@ -488,19 +488,48 @@ export async function setupEngineUpdateRelay(client: EthereumClient, peerBeaconU } } - const playUpdate = async (payload: any, finalizedBlockHash: string, version: string) => { - if (version !== 'capella') { - throw Error('only capella replay supported yet') - } + const playUpdate = async ( + payload: any, + { + finalizedBlockHash, + parentBeaconBlockRoot, + blobVersionedHashes, + }: { + finalizedBlockHash: string + parentBeaconBlockRoot?: string + blobVersionedHashes?: string[] + }, + version: string, + ) => { + let newPayloadParams, newPayloadMethod, fcuMethod const fcUState = { headBlockHash: payload.blockHash, safeBlockHash: finalizedBlockHash, finalizedBlockHash, } + + if (version === 'capella') { + newPayloadParams = [payload] + newPayloadMethod = 'engine_newPayloadV2' + fcuMethod = 'engine_forkchoiceUpdatedV2' + } else if (version === 'deneb') { + if (parentBeaconBlockRoot === undefined || blobVersionedHashes === undefined) { + throw Error( + `parentBeaconBlockRoot=undefined or blobVersionedHashes=undefined for CL fork=${version}`, + ) + } + + newPayloadMethod = 'engine_newPayloadV3' + fcuMethod = 'engine_forkchoiceUpdatedV3' + newPayloadParams = [payload, blobVersionedHashes, parentBeaconBlockRoot] + } else { + throw Error(`playUpdate not implemented for CL fork=${version}`) + } + console.log('playUpdate', fcUState) try { - const newPayloadRes = await engineMethods['engine_newPayloadV2']([payload]) + const newPayloadRes = await engineMethods[newPayloadMethod](newPayloadParams) if ( newPayloadRes.status === undefined || !['SYNCING', 'VALID', 'ACCEPTED'].includes(newPayloadRes.status) @@ -510,7 +539,7 @@ export async function setupEngineUpdateRelay(client: EthereumClient, peerBeaconU ) } - const fcuRes = await engineMethods['engine_forkchoiceUpdatedV2']([fcUState]) + const fcuRes = await engineMethods[fcuMethod]([fcUState]) if ( fcuRes.payloadStatus === undefined || !['SYNCING', 'VALID', 'ACCEPTED'].includes(newPayloadRes.status) @@ -543,13 +572,19 @@ export async function setupEngineUpdateRelay(client: EthereumClient, peerBeaconU } const beaconHead = await (await fetch(`${peerBeaconUrl}/eth/v2/beacon/blocks/head`)).json() - const payload = executionPayloadFromBeaconPayload( beaconHead.data.message.body.execution_payload, ) const finalizedBlockHash = beaconFinalized.data.finalized_header.execution.block_hash - - await playUpdate(payload, finalizedBlockHash, beaconHead.version) + const parentBeaconBlockRoot = beaconHead.data.message.parent_root + // blobVersionedHashes should be correctly calculated from commitments + const blobVersionedHashes: string[] = [] + + await playUpdate( + payload, + { finalizedBlockHash, parentBeaconBlockRoot, blobVersionedHashes }, + beaconHead.version, + ) } catch (e) { console.log('update fetch error', e) updateState('ERRORED') diff --git a/packages/client/test/sim/single-run.sh b/packages/client/test/sim/single-run.sh index 50b5852f08d..92cc6e069b7 100755 --- a/packages/client/test/sim/single-run.sh +++ b/packages/client/test/sim/single-run.sh @@ -39,7 +39,7 @@ then echo "geth requires NETWORKID to be passed in env, exiting..." exit; fi; - ELCLIENT_IMAGE="ethereum/client-go:v1.12.2" + ELCLIENT_IMAGE="ethereum/client-go:v1.14.8" echo "ELCLIENT=$ELCLIENT using ELCLIENT_IMAGE=$ELCLIENT_IMAGE NETWORKID=$NETWORKID" ;; *) diff --git a/packages/client/test/sim/snapsync.md b/packages/client/test/sim/snapsync.md index ce71305420a..be4284a000a 100644 --- a/packages/client/test/sim/snapsync.md +++ b/packages/client/test/sim/snapsync.md @@ -16,7 +16,7 @@ Note: All commands should be run from the `client` package directory root (so so 1. Start external geth client: ```bash -NETWORK=mainnet NETWORKID=1337903 ELCLIENT=geth EXTRA_CL_PARAMS="--params.CAPELLA_FORK_EPOCH 0" DATADIR=/usr/app/ethereumjs/packages/client/data test/sim/single-run.sh +NETWORK=mainnet NETWORKID=1337903 ELCLIENT=geth EXTRA_CL_PARAMS="--params.CAPELLA_FORK_EPOCH 0 --params.DENEB_FORK_EPOCH 0" DATADIR=/usr/app/ethereumjs/packages/client/data test/sim/single-run.sh ``` 2. (optional) Add some txs/state to geth diff --git a/packages/client/test/sim/snapsync.spec.ts b/packages/client/test/sim/snapsync.spec.ts index 33d7c0e2f0a..1f1781050e3 100644 --- a/packages/client/test/sim/snapsync.spec.ts +++ b/packages/client/test/sim/snapsync.spec.ts @@ -13,6 +13,7 @@ import { assert, describe, it } from 'vitest' import { Config } from '../../src/config.js' import { getLogger } from '../../src/logging.js' import { Event } from '../../src/types.js' +import { parseMultiaddrs } from '../../src/util/index.js' import { createInlineClient, @@ -55,7 +56,7 @@ export async function runTx(data: PrefixedHexString | '', to?: PrefixedHexString describe('simple mainnet test run', async () => { if (process.env.EXTRA_CL_PARAMS === undefined) { - process.env.EXTRA_CL_PARAMS = '--params.CAPELLA_FORK_EPOCH 0' + process.env.EXTRA_CL_PARAMS = '--params.CAPELLA_FORK_EPOCH 0 --params.DENEB_FORK_EPOCH 0' } // Better add it as a option in startnetwork process.env.NETWORKID = `${common.chainId()}` @@ -74,6 +75,7 @@ describe('simple mainnet test run', async () => { const nodeInfo = (await client.request('admin_nodeInfo', [])).result assert.ok(nodeInfo.enode !== undefined, 'fetched enode for peering') + console.log({ peerEnode: nodeInfo.enode }) console.log(`Waiting for network to start...`) try { @@ -151,7 +153,9 @@ describe('simple mainnet test run', async () => { assert.ok(ejsClient !== null, 'ethereumjs client started') const enode = ejsClient!.server()!.getRlpxInfo().enode + console.log({ enode }) const res = await client.request('admin_addPeer', [enode]) + console.log(res) assert.equal(res.result, true, 'successfully requested Geth add EthereumJS as peer') const peerConnectTimeout = new Promise((_resolve, reject) => setTimeout(reject, 10000)) @@ -159,6 +163,7 @@ describe('simple mainnet test run', async () => { await Promise.race([peerConnectedPromise, peerConnectTimeout]) assert.ok(true, 'connected to geth peer') } catch (e) { + console.log(e) assert.fail('could not connect to geth peer in 10 seconds') } }, @@ -251,7 +256,7 @@ async function createSnapClient( const logger = getLogger({ logLevel: 'debug' }) const config = new Config({ common, - bootnodes, + bootnodes: parseMultiaddrs(bootnodes), multiaddrs: [], logger, accountCache: 10000, diff --git a/packages/client/test/sync/fetcher/trienodefetcher.spec.ts b/packages/client/test/sync/fetcher/trienodefetcher.spec.ts index 7cd83ca8ce8..f34e545ae5e 100644 --- a/packages/client/test/sync/fetcher/trienodefetcher.spec.ts +++ b/packages/client/test/sync/fetcher/trienodefetcher.spec.ts @@ -214,6 +214,7 @@ describe('[TrieNodeFetcher]', async () => { fetcher.pathToNodeRequestData = new OrderedMap() fetcher.pathToNodeRequestData.setElement('', { + requested: false, nodeHash: bytesToHex(new Uint8Array(0)), nodeParentHash: '', })