diff --git a/CHANGELOG.md b/CHANGELOG.md
index 30872209..dc93264a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -34,2052 +34,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
-->
-
-## [1.2.0]
-
-Released with 1.0.0-beta.37 code base.
-
-## [1.2.1]
-
-### Fixed
-
-- `websocket` dependency fixed (#2971, #2976)
-- `requestOptions` added to `WebsocketProvider` (#2979)
-- Node >= v8.0.0 support (#2938)
-
-## [1.2.2]
-
-### Added
-
-- localStorage support detection added (#3031)
-- getNetworkType method extended with Görli testnet (#3095)
-- supportsSubscriptions method added to providers (#3116)
-- Add `eth.getChainId` method (#3113)
-- Minified file added to web3 package (#3131)
-- The transaction confirmation workflow can now be configured (#3130)
-- Additional parameters for accounts.signTransaction added [(docs)](https://web3js.readthedocs.io/en/v1.2.2/web3-eth-accounts.html#signtransaction) (#3141)
-- Emit `connected` event on subscription creation (#3028)
-- TypeScript type definitions added for all modules (#3132)
-- Bloom filters added to web3.utils (#3137)
-
-### Fixed
-
-- Fix allow `0` as a valid `fromBlock` or `toBlock` filter param (#1100)
-- Fix randomHex returning inconsistent string lengths (#1490)
-- Fix make isBN minification safe (#1777)
-- Fix incorrect references to BigNumber in utils.fromWei and utils.toWei error messages (#2468)
-- Fix error incorrectly thrown when receipt.status is `null` (#2183)
-- Fix incorrectly populating chainId param with `net_version` when signing txs (#2378)
-- regeneratorRuntime error fixed (#3058)
-- Fix accessing event.name where event is undefined (#3014)
-- fixed Web3Utils toHex() for Buffer input (#3021)
-- Fix bubbling up tx signing errors (#2063, #3105)
-- HttpProvider: CORS issue with Firefox and Safari (#2978)
-- Ensure the immutability of the `tx` object passed to function `signTransaction` (#2190)
-- Gas check fixed (#2381)
-- Signing issues #1998, #2033, and #1074 fixed (#3125)
-- Fix hexToNumber and hexToNumberString prefix validation (#3086)
-- The receipt will now returned on a EVM error (this got removed on beta.18) (#3129)
-- Fixes transaction confirmations with the HttpProvider (#3140)
-
-## [1.2.3]
-
-### Fixed
-
-- Fix perfect gas usage causes tx to error (#3175)
-- Fix regenerator runtime error in web3.min.js (#3155)
-- Fix TS types for eth.subscribe syncing, newBlockHeaders, pendingTransactions (#3159)
-- Improve web3-eth-abi decodeParameters error message (#3134)
-
-## [1.2.4]
-
-### Fixed
-
-- Fix npm installation error for scrypt-shim and websocket (#3210)
-
-## [1.2.5]
-
-### Added
-
-- `eth_requestAccounts` as `requestAccounts` added to web3-eth package (#3219)
-- `sha3Raw` and `soliditySha3Raw` added to web3-utils package (#3226)
-- `eth_getProof` as `getProof` added to web3-eth package (#3220)
-- `BN` and `BigNumber` objects are now supported by the `abi.encodeParameter(s)` method (#3238)
-- `getPendingTransactions` added to web3-eth package (#3239)
-- Revert instruction handling added which can get activated with the `handleRevert` module property (#3248)
-- The `receipt` does now exist as property on the error object for transaction related errors (#3259)
-- `internalType` added to `AbiInput` TS interface in `web3-utils` (#3279)
-- Agent option added to the `HttpProvider` options (#2980)
-
-### Changed
-
-- `eth-lib` dependency updated (0.2.7 => ^0.2.8) (#3242)
-
-### Fixed
-
-- Fix crash when decoding events with identical signatures, differently indexed args (#3272)
-- Fix user supplied callback not fired in eth.accounts.signTransaction (#3283)
-- Fix minified bundle (#3256)
-- `defaultBlock` property handling fixed (#3247)
-- `clearSubscriptions` does no longer throw an error if no running subscriptions do exist (#3246)
-- callback type definition for `Accounts.signTransaction` fixed (#3280)
-- fix: export bloom functions on the index.js
-- Prefer receipt status to code availability on contract deployment (#3298)
-
-## [1.2.6]
-
-### Added
-
-- Görli testnet ENS registry added to the known registries (#3338)
-
-### Changed
-
-- ENS registry addresses updated (#3353, )
-
-## [1.2.7]
-
-### Added
-
-- Add revert reason support to sendSignedTransaction (#3345)
-- ENS module extended with the possibility to add a custom registry (#3301)
-- Missing ENS Registry methods and Resolver.supportsInterface method added (#3325)
-- Add optional gas type to AbiItem typescript definitions (for ABIs generated by Vyper) (#3437)
-- Add görli testnet ENS registry to the known registries (#3252)
-- Add auto-reconnect option for Websockets (#3092, #1085, #1391, #1558, #1852, #1646)
-
-### Changed
-
-- Ensure '0x' prefix is existing for Accounts.sign and Accounts.privateKeyToAccount (#3041)
-- Repository cleanup (#3443)
- - Removed old `docs/_build` folder
- - Removed old bower and meteor artifacts
- - Moved logo assets to own folder
- - Moved github assets to own folder
- - Remove @types/node from (non-dev) dependency tree (#3965, #3227)
-- _Please note_: Geth [v1.9.12](https://github.com/ethereum/go-ethereum/releases/tag/v1.9.12) contains a breaking change for `eth_call` that will not default to your first account anymore if `from` is not set. If a sender is not explicitly defined, the `eth_call` will be executed from `address(0)`. (#3467)
- - This was done to avoid the same input behaving differently in different environments. You should never do `eth_call` without explicitly setting a sender.
- - This means that if you're calling `view` methods that refer to a `msg.sender` without explicitly setting a `from` address in your request options, you may see unexpected behavior.
- - In `web3.js`, the `from` address can be specified on a per-call basis or by setting the `defaultAccount` property.
-
-### Fixed
-
-- Add missing subscription.on('connected') TS type definition (#3319)
-- Add missing bignumber.js dependency for TS types (#3386)
-- Upgrade swarm-js to 0.1.40 to remove npm vulnerability warning (#3399)
-- Upgrade devDeps to resolve security warnings (#3464)
- - dtslint 0.4.2 => 3.4.1
- - definitelytyped-header-parser 1.0.1 => 3.9.0
-- Race-condition when subscribing to historical logs as first client request (#3389)
-- Fix crash when using Web-Workers by removing any-promise dependency (#3377 #2211 #1774)
-- MaxListenersExceededWarning event emitter warning mitigated (#1648)
-
-## [1.2.8]
-
-### Added
-
-- Introduce review and release guidelines. (#3460)
-- Add EIP-1193 compatible provider to `AbstractProvider` interface. (#3499)
-- Add Typescript definitions for contract `methods` and `call`. (#3454)
-- Update AbstractProvider and contract.methods TS definitions (#3521)
-- Add support for ENS contenthash methods. (#3392, #2782)
-
-### Changed
-
-- Change CI provider from Travis to Github Actions. (#3468)
-- Update `web3-eth-abi` ABICoder dependency. (#3490)
-- Update AbiCoder param formatting (#3522)
-- Improve code clarity of HttpProvider keepAlive option setting. (#3463)
-- Updated type definitions for Web3 HTTP Provider. (#3482)
-- Fix indentation of web3-eth documentation. (#3478)
-
-### Fixed
-
-- Fix intermittent CI build issues with `dtslint`. (#3479)
-- Fix WSS credentials Base64 encoding (for browser) (#3508)
-- Fire provider "error" and/or "end" events when Websocket provider disconnects. (#3485)
-- Remove web3-eth revert error return types to squash TS compilation errors. (#3496)
-- Backfill event subscriptions when WS connection dropped across multiple blocks. (#3491)
-- Stop swallowing errors when WS connection has died after exhausting reconnection attempts. (#3492)
-- Fix setContenthash docs formatting (#3511)
-
-## [1.2.9]
-
-### Added
-
-- Add `sending` and `sent` events for tx submissions (#3438)
-- Add `latestBlockHash` arg to `confirmation` event handler payload (#3438)
-- Make socket providers' max listeners threshold configurable (#3469)
-- Documentation about testing & ci resources for Web3.js development (#3528)
-- More detailed documentation about how to use `method.encodeABI` (#3549)
-- Integration tests for `transactionPollingTimeout` (#3513)
-
-### Changed
-
-- Websocket package from @web3-js/websocket@1.0.29 to websocket@1.0.31 (#3371)
-- Upgrade `@web3-js/scrypt-shim@0.1.0` to `scrypt-js@3.0.1`
-- sendSignedTransaction revert handling synthesizes tx without network call (#3457)
-- Make docs grammar more idiomatic, normalize punctuation (#3543)
-
-### Fixed
-
-- Size property de-referencing crash when calling web3.eth.clearSubscriptions (#3527)
-- Abi param encoding for tuple arrays (#3538)
-- `account.hashMessage` with non-ASCII characters (#3523)
-- Subscription support check in method confirmations loop (#3432)
-- TS bindings for `handleRevert` added (#3452)
-- Docs: spelling of pre-defined block number (#3539)
-- Docs: missing defaultBlock param option in `method.call` description (#3558)
-
-## [1.2.10]
-
-### Added
-
-- Add support for EIP-1193 provider `request` method (#3625)
-
-### Changed
-
-- Upgrade minified bundle build process (from gulp to webpack) (#3618)
-- CI improvements: add dependency caching, netlify browser test preview (#3598, #3602)
-- Remove references to `genesis` block in 1.x documentation (#3594)
-- Disallow setting `toBlock` when subscribing to contract events (#3207)
-
-### Fixed
-
-- Extend `_txInputFormatter` with hex prefix check (#3317)
-- Extract revert reason string for geth >= 1.9.15 (#3520)
-- Fix Incorrect param encoding of BN object in arrayed inputs (#3592)
-- Remove mis-encoded whitespace characters from web3-utils files (#3601)
-- Fix incompatibilities with webpack Buffer polyfill for wallet.encrypt/decrypt (#3580)
-- Fix misformatted `fromBlock` value when re-subscribing to events over WS (#3596)
-- Support `Function` type log parameter decoding (#2826)
-- Add undefined callback check to websocket provider response queue (#3574)
-- Fix WS clientConfig type (#3563)
-
-## [1.2.11]
-
-### Fixed
-
-- Fix Provider.request response (#3647)
-
-### Added
-
-- Add unit tests for isHex and isHexStrict (#3622)
-
-## [1.3.0]
-
-### Added
-
-- Support for typescript files (.ts) to be written alongside regular .js files (#3652)
-- Add compareBlock function that allows for complex block comparisons (#3682)
-
-### Changed
-
-- Improve RequestManager send method (#3649)
-- `npm run build` now uses TSC to compile (.js allowed) and the build folder is now located under `lib` (#3652)
-- Modernized web3-core to use newer es syntax (#3652)
-- Bumped `web3-providers-ipc` `oboe` version to 2.1.5 (#3661)
-- Bump lodash from 4.17.15 to 4.17.19 (#3641)
-- Bump websocket version which removes node-gyp from web3.js (#3685)
-
-### Fixed
-
-- Fix parsing of non-`eth_subscription` provider events (#3660)
-- Fix parsedUrl problem of websocket provider (#3666)
-- Fix return value for `clearSubscriptions` (#3689)
-
-## [1.3.1]
-
-### Added
-
-- Add `web3-eth2-core` package (#3743) (renamed to `web3-eth2-base`)
-- Add `web3-eth2-beaconchain` package (#3743) (renamed to `web3-eth2-beacon`)
-- Add `stripHexPrefix` method to `web3-utils` package (#3776)
-
-### Changed
-
-- bump utils 0.10.0^ -> 0.12.0 (#3733)
-
-### Removed
-
-- Removed post-install script in `packages/web3`. Added documentation to root README (#3717)
-
-### Fixed
-
-- Fix possible unhandled promise rejection when sending a transaction (#3708)
-- Fixed decoding bytes and string parameters for logs emitted with solc 0.4.x (#3724, #3738)
-- Grammar changes to inputAddressFormatter error message
-- Fixed vulnerable dependencies
-
-## [1.3.2]
-
-### Fixed
-
-- Fix EIP-1193 provider subscriptions (#3864)
-
-## [1.3.3]
-
-### Fixed
-
-- Update `dist` to latest release (`1.3.2`) (#3875)
-
-## [1.3.4]
-
-### Changed
-
-- Fixed mutation of inputs to encoding and decoding functions (#3748)
-- Fix default value for `fromBlock` option for `logs` subscriptions (defaults to `latest`) (#3883)
-- ethjs-signer test (#3876)
-- Rename `web3-eth2-base` to `web3-eth2-core` and `web3-eth2-beacon` to `web3-eth2-beaconchain` (#3833)
-- Bump `ts-node` from version `^8.10.2` to `^9.0.0` (#3856)
-- Ran `npm audit fix` which fixed 4 vulnerabilities (#3856)
-- Correct `web3-eth2-beaconchain` type declarations (#3859) and (#3865)
-- Move interfaces `IBaseAPISchema` and `IBaseAPIMethodSchema` to `index.d.ts` for `web3-eth2-core` (#3878)
-- Update dependencies for `web3-eth2-core` (#3878)
-
-### Removed
-
-- Remove `notImplemented` flag from ETH2 Beacon Chain package methods schema (#3861)
-- Removes `IETH2BeaconChain` interface in favor of exporting a class type: `ETH2BeaconChain` (#3878)
-- Remove `index.d.ts` files in favor of `types.ts` for `web3-eth2-core` and `web3-eth2-beaconchain` (#3878)
-- `schema.ts` from `web3-eth2-core` (#3878)
-- `dtslint` npm command from `web3-eth2-core` and `web3-eth2-beaconchain` as `index.d.ts` files were removed (#3878)
-
-### Added
-
-- Add `ETH2Core` class export to `index.d.ts` for `web3-eth2-core` (#3878)
-- Deprecation of bzz warning (#3872)
-- Deprecation of shh warning (#3888)
-
-## [1.3.5]
-
-### Added
-
-- Github action for running tests for `web3-eth2-core` and `web3-eth2-beaconchain` packages (#3892)
-- Added description to documentation on how to connect using a remote node provider (#3884)
-- Added Security risk warning to docs for `web3.utils.soliditySha3` (#3908)
-- `.nvmrc` file using Node.js version `v.14.15.1` (#3817)
-- Add commitment to semantic versioning since version `1.3.0` and onwards (#3961)
-
-### Changed
-
-- Unified babel compiler for `web3-eth2-core` and `web3-eth2-beaconchain` (#3892)
-- Renamed the `tsc` script in all packages to `compile`; updates the corresponding `lerna run` usage in the main `package.json` (#3894)
-- moved deprecation warnings to postinstall scripts (#3917)
-- Upgrade `@chainsafe/geth-dev-assistant` from `0.1.5` to `0.1.9` (#3950)
-- Replaced hardcoded infura link with Github Secret for some tests (#3943)
-- Bump `elliptic` from `6.5.3` to `6.5.4` for `web3-eth-accounts` (#3941)
-- Bump `elliptic` from `6.5.3` to `6.5.4` for `web3-bzz` (#3940)
-- Bump `elliptic` from `6.5.3` to `6.5.4` for `web3-core-requestmanager` (#3945)
-- Rewrite `web3-eth-iban` in ES6 (#3955)
-
-## [1.3.6]
-
-### Changes
-
-- Bump `underscore` package from `1.9.1` to `1.12.1` (#4051)
-- Bump `@ensdomains/ens` package from `^0.4.5` to `^0.6.0` (#4059)
-- Bump `ethers` package from `^5.0.18` to `^5.1.4` (#4059)
-
-### Removes
-
-- Accidental commit (yarn-error.log) (#4062)
-
-## [1.4.0]
-
-### Added
-
-- Berlin Transaction Support (#4083)
-- When signing a transaction, common object now defaults to berlin instead of petersburg
-
-### Changed
-
-- Changed Geth Docker verision from `stable` to `1.10.3` in `e2e.geth.instamine.sh` and `scripts/e2e.geth.automine.sh` (#4154)
-
-## [1.4.1]
-
-### Removes
-
-- Removing the underscore package
-
-## [1.5.0]
-
-### Added
-
-- London transaction support (#4155)
-- RPC support `eth_feehistory` call (#4191)
-- Add `toNumber` method to `web3.utils` (#4191)
-
-### Changed
-
-- Grammar fix (#4088) and updated Swarm (#4151)and Whisper doc links (#4170)
-- Removed deprecation notice for HttpProvider (#4008)
-- Nonce added to send options in documentation and types (#4052)
-- Updated Solidity example to modern syntax (#4147)
-- Changing web3 connection example from lets to const (#3967)
-- Updated the documentation for the transaction object to include EIP-2718 and EIP-1559 options (#4188)
-
-## [1.5.1]
-
-### Added
-
-- `maxPriorityFeePerGas` and `maxFeePerGas` now included in `_txInputFormatter` (#4217)
-- If `maxPriorityFeePerGas` of `maxFeePerGas` present `_txInputFormatter` deletes `tx.gasPrice` (fixes #4211) (#4217)
-- Add block tag support (e.g. `latest`, `pending`, `earliest`) to `getFeeHistory` (#4224)
-- Support for EIP-1559 to `web3.eth.sendTransaction` (#4220)
-
-## [1.5.2]
-
-### Fixed
-
-- Remove transaction `type` defaulting for `eth.sendTransaction`, `eth.sendRawTransaction` (#4241)
-- `type: 0x0` was being added to legacy transaction when using `eth.signTransaction` (#4241)
-
-## [1.5.3]
-
-### Fixed
-
-- Unable to send legacy transaction if network supported EIP-1559 (#4277)
-- Fixed bug in sending transaction with providers not support "newBlockHeaders" event (#3891)
-
-### Changed
-
-- ethers from 5.1.4 to 5.4.4 (#4231)
-- karma from 5.2.3 to 6.3.4 (#4231)
-- lerna from 3.22.1 to 4.0.0 (#4231)
-- Dropped build tests in CI for Node v8 and v10, and added support for Node v14 (#4231)
-- Change default value for `maxPriorityFeePerGas` from `1 Gwei` to `2.5 Gwei` (#4284)
-- Fixed bug in signTransaction (#4295)
-
-## [1.6.0]
-
-### Changed
-
-- Partially replace usage of [eth-lib](https://github.com/MaiaVictor/eth-lib) with [ethereumjs-util](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/util) (#4390)
-
-## [1.6.1]
-
-### Added
-
-- Support for `eth_createAccessList` as both an rpc call (`web3.eth.createAccessList`) and property of contract method wrappers (`contractInstance.methods.getValue().createAccessList`) (#4332)
-
-### Changed
-
-- Not considering `tx.chainId` if `tx.common.customChain.chainId` is provided for `web3.eth.accounts.signTransaction` function (#4293)
-- Added missing PromiEvent handler types (#4194)
-- Updated README to include Webpack 5 angular support instructions (#4174)
-- Updated the documentation for the `Web3.utils`, removed context for `_` (underscore lib) (#4403)
-- Emit subscription id with connect event when creating a subscription (#4300)
-- Introduced new configuration "blockHeaderTimeout" for waiting of block headers for transaction receipt (#3891)
-- Format `block.baseFeePerGas` to number (#4330)
-- Correct `web3-eth-personal.sendTransaction` example in documentation (#4409)
-- Updated README to include Webpack 5 angular support instructions (#4174)
-
-### Fixed
-
-- Fix 1.6.1 build size issue with removing static asset files (#4506)
-- Correct `web3.rst` example in documentation (#4511)
-- Correct `BlockHeader` typing (`receiptRoot` -> `receiptsRoot`) (#4452)
-
-## [1.7.0]
-
-### Added
-
-- `maxPriorityFeePerGas` and `maxFeePerGas` added to `Transaction` and `TransactionConfig` interfaces (#4232) (#4585)
-
-### Fixed
-
-- Fix readthedoc's build for web3js documentation (#4425)
-- Fix response sorting for batch requests (#4250)
-
-### Changed
-
-- Changed getFeeHistory first parameter type from `number` to `hex` according to the [spec](https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=false&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false) (#4529)
-
-## [1.7.1]
-
-### Added
-
-- `transactionPollingInterval` added to web3, contract and method constructor options. defaults to 1 second. (#4584)
-- Add example import for package level types (#4611)
-
-### Fixed
-
-- Fix a typo in the documentation for `methods.myMethod.send` (#4599)
-- Use globalThis to locate global object if possible (#4613)
-- Fix typos in web3-utils.rst (#4662)
-- Added effectiveGasPrice to TransactionReceipt (#4692)
-- Correction in documentation for `web3.eth.accounts.signTransaction` (#4576)
-- Updated README to include Webpack 5 create-react-app support instructions (#4173)
-- Update the documentation for `methods.myMethod.estimateGas` (#4702)
-- Fix typos in REVIEW.md and TESTING.md (#4691)
-- Fix encoding for "0x" string values (#4512)
-
-### Changed
-
-- Muted E2E gnosis dex tests in CI until fix for issue #4436 is applied (#4701)
-
-### Removed
-
-- Removed deprecated Morden testnet code (#4339)
-
-### Security
-
-- Ran `npm audit fix` to address vulnerabilities and update libraries (#4719) (#4728)
-
-## [1.7.2]
-
-### Changed
-
-- Remove deprecated `close` event listener (#4825) (#4839)
-
-### Security
-
-- `npm audit fix` to update libraries (#4860)
-
-### Fixed
-
-- Fix jsonrpc payload and response types (#4743) (#4761)
-- Allowed more flexibility in typing the overly constrained `provider.disconnect` function (#4833)
-
-## [1.7.3]
-
-### Fixed
-
-- Fixed build issues of 1.7.2
-
-## [1.7.4]
-
-### Fixed
-
-- Fix dead link in web3-eth.rst (#4916)
-- Fix web3-core-method throws on `f.call = this.call` when intrinsic is frozen (#4918) (#4938)
-- Fix static tuple encoding (#4673) (#4884)
-- Fix bug in handleRevert logic for eth_sendRawTransaction (#4902)
-- Fix resolve type of getBlock function (#4911)
-- Web3-utils BN fix (#5132)
-
-### Changed
-
-- Replace deprecated String.prototype.substr() (#4855)
-- Exporting AbiCoder as coder (#4937)
-- Github build workflow updated min build for node.js 12 and tests for 12, 14 and 16 (#5014)
-- Updated libraries using BN and the BN library (#5072)
-
-### Added
-
-- Exposing `web3.eth.Contract.setProvider()` as per public documentation (#4822) (#5001)
-- Improve npm script commands for development purposes (#4848)
-
-### Security
-
-- `npm audit fix` to address vulnerabilities and update libraries (#5014)
-
-## [1.7.5]
-
-### Changed
-
-- Replace xhr2-cookies deps to cross-fetch for web3-providers-http (#5085)
-
-### Added
-
-- Documentation details about `maxFeePerGas` and `maxPriorityFeePerGas` (#5121)
-- Added `createAccessList` types in web3.eth (#5146)
-
-### Fixed
-
-- Improving `AbstractProvider` interface (#5150)
-- Fix typos in web3-eth-accounts.rst & TESTING.md (#5047)
-- Fix remove wallet using an index when an account address and address lowercase are equal (#5049)
-- Improve README.md & Fix typos (#4848)
-- Add optional hex formatting parameter for getTransactionReceipt (#5153)
-- Fix transactionRoot -> transactionsRoot in BlockHeader (#5083)
-- Fix Promise in Accounts.signTransaction() throwing errors that cannot be caught (#4724)
-- Fixed unit tests & removed dead code for web3-providers-http (#5228)
-
-### Security
-
-- Updated `got` lib version and fixed other libs using npm audit fix (#5178) (#5254)
-
-## [4.0.0-alpha.0]
-
-Note: Yarn is resolving to some old deprecated package versions for 4.0.0-alpha.0 instead of latest alpha versions. A patch bump is posted so yarn users
-should use 4.0.1-alpha.0 for testing.
-
-### Added
-
-#### web3-errors
-
-- `web3-errors` new package is created, it has Web3 Error codes and classes
-
-#### web3-types
-
-- `web3-types` new package is created, it provides the common data structures and interfaces for web3 modules
-
-#### web3-validator
-
-- `web3-validator` new package is created, it has JSON-Schema compatible validator functionality for Web3
-
-### Removed
-
-#### web3-bzz
-
-- This Package is deprecated
-
-#### web3-shh
-
-- This Package is deprecated
-
-#### web3-core-helpers
-
-- This Package is removed, `errors` are moved to `web3-errors` package and formatters are moved in `web3-core` package
-
-#### web3-core-method
-
-- This Package is removed, and `web3-core-method` functionality is moved to `web3-eth` package
-
-#### web3-core-promieevent
-
-- This Package is removed, and core promi events functionality is moved to `web3-core` package
-
-#### web3-core-requestmanager
-
-- This Package is removed, batch requests and request manager functionality is moved to `web3-core` package
-
-#### web3-core-subscription
-
-- This Package is removed, and core subscription functionality is moved to `web3-core` package
-
-### Changed
-
-#### web3
-
-- Passing callbacks to functions is no longer supported, except for event listeners.
-- Method `extend` is deprecated
-
-#### web3-core
-
-- The function `outputBigNumberFormatter` in `web3-core-helper` renamed to `outputBigIntFormatter` under `web3-core`
-- Removed `this.defaultBlock` context from `inputDefaultBlockNumberFormatter` in `web3-core-helper` and converted to additional parameter
-- Removed `this.defaultBlock` context from `inputTransactionFormatter` in `web3-core-helper` and converted to additional parameter
-
-#### web3-utils
-
-- The following functions `soliditySha3` `soliditySha3Raw` `encodePacked` now includes type validation and requires type specification, instead of guessing the value type
-- The functions `soliditySha3`, `soliditySha3Raw` and `encodePacked` did not support BN; But, now supports `BigInt`
-- The functions `flattenTypes` and `jsonInterfaceMethodToString` moved to the `web3-eth-abi` package
-- The function `isAddress` now includes an optional parameter `checkChecksum` type boolean
-- `isBoolean` now accept `1`, and `0` as valid values to test. Ref: `web3-validator`
-
-#### web3-eth-accounts
-
-- `create` function does not take in the optional parameter `entropy`
-- `Wallet.create` function doesn't accept `entropy` param
-
-#### web3-validator
-
-- `isBoolean` now accept `1`, and `0` as valid values to test.
-
-#### web3-eth-contract
-
-- Event logs do not support types for indexed properties, but named properties are supported.
-- Types for overloaded ABI functions are not yet supported.
-- `signTransaction` will not fill any default values, and it will only sign and return result. For filling default values, use `web3-eth` package
-- `recover` function's last param is boolean `hashed`, it is used to indicate if data provided is already hashed or not. By default, this function will assume data is not hashed.
-- The `Wallet` no longer supports address/number indexing. Have to use `wallet.get` instead.
-- `Wallet.create` function doesn't accept `entropy` param
-- `contract.method.send()` will resolve to transaction receipt instead of `transactionHash`. User can use `receipt.transactionHash` instead.
-
-#### web3-net
-
-- Package will not support web3.bzz.net and web3.shh.net
-
-#### web3-eth-iban
-
-- IBAN constructor now has validation checks for indirect/direct iban.
-- `isDirect`, `isValid`, `isIndirect` are now also included as static methods.
-
-#### web3-eth-ens
-
-- `setMultihash` is not supported in web3-eth-ens 4.x as it's deprecated in ENS public resolver (https://github.com/ensdomains/resolvers/blob/master/contracts/PublicResolver.sol)
-- `setContent` is not supported in web3-eth-ens 4.x as it's deprecated in ENS public resolver (https://github.com/ensdomains/resolvers/blob/master/contracts/PublicResolver.sol)
-- `getContent` is not supported in web3-eth-ens 4.x as it's deprecated in ENS public resolver.
-- `getMultihash` is not supported in web3-eth-ens 4.x as it's deprecated in ENS public resolver.
-
-#### web3-eth-abi
-
-- `internalType` was renamed to `baseType` in all abi types
-
-#### web3-eth
-
-- `givenProvider` default value is undefined
-- `defaultHardfork` default value is 'london'
-- `defaultAccount` default value is undefined
-- `defaultNetworkId` default value is undefined
-- When sending a transaction, if Ethereum Node does not respond within `transactionSendTimeout`, throw an Error.
-
-#### web3-eth-subscribe
-
-- `clearSubscriptions` Instead of returning `true` , `clearSubscriptions` now returns array of subscription's ids
-
-#### web3-eth-personal
-
-- `givenProvider` default value is undefined
-- `currentProvider` default value is undefined
-
-## [4.0.1-alpha.0]
-
-### Fixed
-
-- Dependency tree cannot be resolved by Yarn due to old deprecated packages picked by yarn - fixed (#5382)
-
-## [4.0.1-alpha.1]
-
-### Added
-
-#### web3-core
-
-- If the response error was `execution reverted`, raise `ContractExecutionError` and pass the response error to it in order to be set as `innerError` (this innerError will be decoded at web3-eth-contract if its ABI was provided according to EIP-838). (#5434)
-- Added a new configuration variable `enableExperimentalFeatures`. (#5481)
-- `registerPlugin` method to `Web3Context` (#5393)
-- `Web3PluginBase` exported abstract class (#5393)
-- `Web3EthPluginBase` exported abstract class (#5393)
-
-#### web3-error
-
-- Add optional `innerError` property to the abstract class `Web3Error`. This `innerError` could be `Error`, `Error[]` or `undefined`. (#5435) (#5434)
-- The class `Web3ContractError` is moved to this package from `web3-eth-contract`. (#5434)
-- Added the error code `ERR_TX_SIGNING` and used it inside `TransactionSigningError` (#5462)
-- Added the error code `ERR_TX_GAS_MISMATCH` and used it inside `TransactionGasMismatchError` (#5462)
-- Added `SignatureError` to `web3-errors/src/errors/signature_errors.ts` (moved from `web3-eth/src/errors.ts`) (#5462)
-- Added the errors' classes to `web3-errors/src/errors/transaction_errors.ts` from `web3-eth/src/errors.ts` (#5462)
-- Added `TransactionBlockTimeoutError` class and its error code `ERR_TX_BLOCK_TIMEOUT` (#5294)
-- `ExistingPluginNamespaceError` class and it's error code `ERR_EXISTING_PLUGIN_NAMESPACE` (#5393)
-
-#### web3-eth
-
-- `web3-rpc-methods` dependency (#5441)
-- Added chain and hardfork validation for transaction and transaction.common object in `validateTransactionForSigning`
-
-#### web3-eth-abi
-
-- If an error happens when decoding a value, preserve that exception at `innerError` inside the error class `AbiError`. (#5435)
-- Add basic functionality that is used, by `web3-eth-contract`, when decoding error data according to EIP-838. (#5434)
-
-#### web3-eth-contract
-
-- Decoding error data, using Error ABI if available, according to EIP-838. (#5434)
-- The class `Web3ContractError` is moved from this package to `web3-error`. (#5434)
-
-#### web3-plugin-example
-
-- Example plugin for wrapping contract methods to provide custom functionality (#5393)
-- Example plugin for custom RPC methods using the `requestManager` (#5393)
-
-#### web3-utils
-
-- Added and exported three reusable utility functions: `pollTillDefined`, `rejectIfTimeout` and `rejectIfConditionAtInterval` which are useful when dealing with promises that involves polling, rejecting after timeout or rejecting if a condition was met when calling repeatably at every time intervals.
-
-#### web3-eth-personal
-
-- `web3-rpc-methods` dependency (#5441)
-
-#### web3-eth-net
-
-- `web3-rpc-methods` dependency (#5441)
-
-#### web3-providers-ipc
-
-- Show error message and return dummy promise if socket is not writable (#5294)
-
-#### web3-rpc-methods
-
-- web3-rpc-methods package added
-
-#### web3-types
-
-- `Web3EthExecutionAPI` export (#5441)
-- `Web3NetAPI` export (#5441)
-- `EthPersonalAPI` export (#5441)
-
-### Changed
-
-#### web3-core
-
-- Default value for `API` generic for `Web3ContextObject` from `any` to `unknown` (#5393)
-- Default value for `API` generic for `Web3ContextInitOptions` from `any` to `unknown` (#5393)
-- Added validation when `defaultHardfork` and `defaultCommon.hardfork` are different in web3config
-- Added validation when `defaultChain` and `defaultCommon.basechain` are different in web3config
-- Added a new configuration variable `enableExperimentalFeatures`. (#5481)
-
-#### web3-error
-
-- Moved `SignerError` from `web3-errors/src/errors/signature_errors.ts` to `web3-errors/src/errors/transaction_errors.ts`, and renamed it to `TransactionSigningError` (#5462)
-- Corrected the error code for `JSONRPC_ERR_UNAUTHORIZED` to be `4100` (#5462)
-
-#### web3-eth
-
-- `Web3EthExecutionAPI` is now imported via `web3-types` instead of `web3_eth_execution_api.ts` (#5441)
-- Replace the imported methods from `rpc_methods.ts` with `zondRpcMethods` imports from `web3-rpc-methods` (#5441)
-- `Web3NetAPI` is now imported from `web3-types` instead of `web3-net` (#5441)
-- Moved `rpc_methods` tests to `web3-rpc-methods` (#5441)
-- Implemented the logic for `transactionBlockTimeout` (#5294)
-- Use subscription at `rejectIfBlockTimeout` when the provider supports subscription. Implement this as an experimental feature (if `useSubscriptionWhenCheckingBlockTimeout` at `enableExperimentalFeatures` is `true`). (#5481)
-- At some test cases, optimized some codes. (#5481)
-
-#### web3-eth-accounts
-
-- `signTransaction` and `privateKeyToAccount` will throw `TransactionSigningError` instead of `SignerError` now (#5462)
-
-#### web3-eth-ens
-
-- `Web3NetAPI` is now imported from `web3-types` instead of `web3-net` (#5441)
-
-#### web3-eth-personal
-
-- Import `EthPersonalAPI` from `web3-types` instead of local import (#5441)
-- Replace the imported methods from `rcp_methods.ts` with `personalRpcMethods` imports from `web3-rpc-methods` (#5441)
-- Replace use of `EthPersonalAPIManager` with `Web3RequestManager` (#5441)
-
-#### web3-eth-net
-
-- `Web3NetAPI` is now imported from `web3-types` instead of `web3_net_api.ts` (#5441)
-- Replace the imported methods from `rpc_methods.ts` with `netRpcMethods` imports from `web3-rpc-methods` (#5441)
-
-#### web3-types
-
-- `Web3APISpec`, `Web3APIMethod`, and `Web3APIParams` now supports `unknown` APIs (#5393)
-
-### Fixed
-
-#### web3-error
-
-- Corrected the error code for `JSONRPC_ERR_UNAUTHORIZED` to be `4100` (#5462)
-
-#### web3-eth
-
-- Fix `getBlock` returning empty transactions object on `hydrated` true (#5556)
-- [setimmediate](https://github.com/yuzujs/setImmediate) package to polyfill [setImmediate](https://nodejs.org/api/timers.html#setimmediatecallback-args) for browsers (#5450)
-
-#### web3-eth-contract
-
-- According to the latest change in `web3-eth-abi`, the decoded values of the large numbers, returned from function calls or events, are now available as `BigInt`. (#5435)
-
-#### web3-eth-abi
-
-- Return `BigInt` instead of `string` when decoding function parameters for large numbers, such as `uint256`. (#5435)
-
-#### web3-types
-
-- `Web3APISpec`, `Web3APIMethod`, and `Web3APIParams` now supports `unknown` APIs (#5393)
-
-### Removed
-
-#### web3-eth
-
-- Moved the errors' classes from `web3-eth/src/errors.ts` to `web3-errors/src/errors/transaction_errors.ts` (#5462)
-
-#### web3-eth-personal
-
-- Exported type `EthPersonalAPIManager`, `EthPersonalAPI` is not exported via `web3-types` (#5441)
-
-#### web3-eth-net
-
-- `rpcMethods` export, these methods are now exported via `web3-rpc-methods` as `netRpcMethods` (#5441)
-- `Web3NetAPI` export, now exported via `web3-types` as `Web3NetAPI` (#5441)
-
-#### web3-validator
-
-- Removed direct function `toJSON()` in `Web3ValidatorError` class as its available via base class (#5435)
-
-## [4.0.1-alpha.2]
-
-### Added
-
-#### web3-eth-contract
-
-- Decoding error data, using Error ABI if available, if error was returned from a smart contract function call (#5662).
-
-#### web3-types
-
-- These types were moved from `web3-eth-accounts` to `web3-types` package: Cipher, CipherOptions, ScryptParams, PBKDF2SHA256Params, KeyStore (#5581 )
-
-#### web3-utils
-
-- Export a new function `uuidV4` that generates a random v4 Uuid (#5373).
-- Enable passing a starting number, to increment based on it, for the Json Rpc Request `id` (#5652).
-- Export a new function `isPromise` that checks if an object is a promise (#5652).
-
-#### web3-eth-contract
-
-- `SpecialOutput` type was added as a generic type into the call function to support reassigning output types (#5631)
-- Overloaded functions types (`ContractOverloadedMethodInputs`, `ContractOverloadedMethodOutputs`) was added (#5631)
-
-### Fixed
-
-#### web3-eth-contract
-
-- Emit past contract events based on `fromBlock` when passed to `contract.events.someEventName` (#5201)
-- Use different types for `ContractOptions` -> `jsonInterface` setter and getter (#5474)
-- An issue within the `Contract` constructor where `provider` wasn't being set when provided within the `optionsOrContextOrReturnFormat` argument (#5669)
-
-#### web3-types
-
-- Make the `request` method of `EIP1193Provider` class, compatible with EIP 1193 (#5591)
-
-#### web3-utils
-
-- Use Uuid for the response id, to fix the issue "Responses get mixed up due to conflicting payload IDs" (#5373).
-
-#### web3-validator
-
-- Fix `isHex`returning `false` for `-123`, fix `isHexStrict` returning `true` for `-0x`, and fix `isHex` returning `true` for empty strings `` (#5373).
-
-#### web3-eth-abi
-
-- Fix `ContractMethodOutputParameters` type to support output object types by index and string key. Also, it returns void if ABI doesn't have outputs and returns exactly one type if the output array has only one element. (#5631)
-
-### Removed
-
-#### web3-eth-accounts
-
-- These types were moved from `web3-eth-accounts` to `web3-types` package: Cipher, CipherOptions, ScryptParams, PBKDF2SHA256Params, KeyStore (#5581 )
-
-## [4.0.1-alpha.3]
-
-### Fixed
-
-#### web3-validator
-
-- Fix issue when importing `web3-validator` package within browser environments (Webpack minified filename changed from `index.min.js` to `web3-validator.min.js`) (#5710)
-- Fix build error '"type"' does not satisfy the constraint (#5712)
-
-#### web3-eth-abi
-
-- Parameters decoding error for nested components (#5714)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-#### web3
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-core
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-errors
-
-- `main` and `files` entries in `package.json` changed to `lib/` directory from `dist/` (#5739)
-
-#### web3-eth
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-eth-abi
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-eth-accounts
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-eth-contract
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-eth-ens
-
-- `main` and `files` entries in `package.json` changed to `lib/` directory from `dist/` (#5739)
-
-#### web3-eth-iban
-
-- `main` and `files` entries in `package.json` changed to `lib/` directory from `dist/` (#5739)
-
-#### web3-eth-personal
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-net
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-providers-http
-
-- `main` and `files` entries in `package.json` changed to `lib/` directory from `dist/` (#5739)
-
-#### web3-providers-ipc
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-providers-ws
-
-- `main` and `files` entries in `package.json` changed to `lib/` directory from `dist/` (#5739)
-
-#### web3-rpc-methods
-
-- `main` and `files` entries in `package.json` changed to `lib/` directory from `dist/` (#5739)
-
-#### web3-types
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-utils
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-validator
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-#### web3-providers-ipc
-
-- Refactor to use common SocketProvider class (#5683)
-
-#### web3-providers-ws
-
-- Refactor to use common SocketProvider class (#5683)
-
-#### web3-utils
-
-- Add SocketProvider class and Eip1193Provider abstract class (#5683)
-
-#### web3-types
-
-- These types were added: ProviderRpcError, EthSubscription, ProviderMessage, ProviderConnectInfo (#5683)
-
-## [4.0.1-alpha.5]
-
-### Removed
-
-#### web3
-
-- `build` entry from `package.json` (#5755)
-
-#### web3-validator
-
-- `build` entry from `package.json` (#5755)
-
-### Changed
-
-#### web3-core
-
-- web3.js dependencies (#5757)
-
-#### web3-errors
-
-- web3.js dependencies (#5757)
-
-#### web3-eth
-
-- web3.js dependencies (#5757)
-
-#### web3-eth-abi
-
-- web3.js dependencies (#5757)
-
-#### web3-eth-accounts
-
-- web3.js dependencies (#5757)
-
-#### web3-eth-contract
-
-- web3.js dependencies (#5757)
-
-#### web3-eth-ens
-
-- web3.js dependencies (#5757)
-
-#### web3-eth-iban
-
-- web3.js dependencies (#5757)
-
-#### web3-eth-personal
-
-- web3.js dependencies (#5757)
-
-#### web3-eth-net
-
-- web3.js dependencies (#5757)
-
-#### web3-providers-http
-
-- web3.js dependencies (#5757)
-
-#### web3-providers-ipc
-
-- web3.js dependencies (#5757)
-
-#### web3-providers-ws
-
-- web3.js dependencies (#5757)
-
-#### web3-rpc-methods
-
-- web3.js dependencies (#5757)
-
-#### web3-utils
-
-- web3.js dependencies (#5757)
-
-### Fixed
-
-#### web3-eth
-
-- Enable transaction with local wallet index in the `to` field (#5731)
-
-### Added
-
-#### web3-types
-
-- Add `TransactionWithFromLocalWalletIndex`, `TransactionWithToLocalWalletIndex` and `TransactionWithFromAndToLocalWalletIndex` types (#5731)
-
-## [4.0.1-rc.0]
-
-### Added
-
-#### web3
-
-- `registeredSubscriptions` was added by default in web3 constructor (#5792)
-- Add named exports for all objects which are the default-exported-object in their packages (#5771)
-- Export all packages' objects organized by namespaces (#5771)
-- Add Additional flat exports for all types and constants from `web3-types`, `web3-errors` and `web3`. (#5771)
-- Fix few issues with `new Web3().eth.contract` (#5824)
-
-#### web3-core
-
-- Added rpc exception codes following eip-1474 as an experimental feature (if `useRpcCallSpecification` at `enableExperimentalFeatures` is `true`) (#5525)
-- Added support of `safe` and `finalized` block tags (#5823)
-
-#### web3-errors
-
-- Added error class `InvalidMethodParamsError` and error code `ERR_INVALID_METHOD_PARAMS = 207` (#5824)
-- `request` property to `ResponseError` (#5854)
-- `data` property to `TransactionRevertInstructionError` (#5854)
-- `TransactionRevertWithCustomError` was added to handle custom solidity errors (#5854)
-
-#### web3-eth
-
-- Added `createAccessList` functionality ( #5780 )
-- Added support of `safe` and `finalized` block tags (#5823)
-- `contractAbi` option to `SendTransactionOptions` and `SendSignedTransactionOptions` to added the ability to parse custom solidity errors (#5854)
-
-#### web3-eth-abi
-
-- `decodeErrorData` from `web3-eth-contract` is now exported from this package and was renamed to `decodeContractErrorData` (#5844)
-
-#### web3-eth-contract
-
-- Added functionality of `createAccessList` for contracts ( #5780 )
-- An instance of `Contract` will `subscribeToContextEvents` upon instantiation if `syncWithContext` is set to `true` and the constructor is passed an instance of `Web3Context` (#5833)
-- Added support of `safe` and `finalized` block tags (#5823)
-
-#### web3-providers-http
-
-- Added named export for `HttpProvider` (#5771)
-
-#### web3-providers-ipc
-
-- Added named export for `IpcProvider` (#5771)
-- Pass `_socketOptions` from `IpcProvider` constructor to the underlying `Socket` (#5891)
-- The getter of `SocketConnection` in `IpcProvider` (inherited from `SocketProvider`) returns `net.Socket` (#5891)
-
-#### web3-providers-ws
-
-- Added named export for `WebSocketProvider` (#5771)
-- The getter of `SocketConnection` in `WebSocketProvider` (inherited from `SocketProvider`) returns isomorphic `WebSocket` (#5891)
-
-#### web3-rpc-methods
-
-- Added `createAccessList` functionality ( #5780 )
-- Added support of `safe` and `finalized` block tags (#5823)
-
-#### web3-types
-
-- Added types from `web3-eth-abi` and `TypedArray` from (#5771)
-- Added `TypedArray` from `web3-utils` and `web3-validator` (it was defined twice) (#5771)
-- Added `safe` and `finalized` block tags in `BlockTags` and `BlockTag` types (#5823)
-
-#### web3-utils
-
-- Added support of `safe` and `finalized` block tags (#5823)
-
-#### web3-validator
-
-- Added support of `safe` and `finalized` block tags in `isBlockTag` method (#5823)
-
-### Changed
-
-#### web3
-
-- `require('web3')` will now return all web3 exported-objects organized in namespaces . (#5771)
-
-#### web3-errors
-
-- The abstract class `Web3Error` is renamed to `BaseWeb3Error` (#5771)
-- Renamed TransactionRevertError to TransactionRevertInstructionError to remain consistent with 1.x
-- Using `MaxAttemptsReachedOnReconnectingError` with the same message for 1.x but also adding the `maxAttempts` (#5894)
-
-#### web3-eth
-
-- Update imports statements for objects that was moved between web3 packages (#5771)
-- `sendTransaction` and `sendSignedTransaction` now errors with (and `error` event emits) the following possible errors: `TransactionRevertedWithoutReasonError`, `TransactionRevertInstructionError`, `TransactionRevertWithCustomError`, `InvalidResponseError`, or `ContractExecutionError` (#5854)
-
-#### web3-eth-accounts
-
-- Updated dependencies (#5912)
-
-#### web3-eth-contract
-
-- Update imports statements for objects that was moved between web3 packages (#5771)
-
-#### web3-eth-ens
-
-- Updated dependencies (#5912)
-
-#### web3-eth-iban
-
-- Updated dependencies (#5912)
-
-#### web3-eth-personal
-
-- Updated dependencies (#5912)
-
-#### web3-net
-
-- Updated dependencies (#5912)
-
-#### web3-utils
-
-- `compareBlockNumbers` function now only supports comparison of both blocktags params ( except `earliest` vs number) or both block number params (#5842)
-- `SocketProvider` abstract class now resolves JSON RPC response errors instead of rejecting them (#5844)
-- Exposes the getter of `SocketConnection` in `SocketProvider` (#5891)
-
-### Removed
-
-#### web3
-
-- Private static `_contracts:Contract[]` and static `setProvider` function was removed (#5792)
-
-#### web3-eth
-
-- `getRevertReason` is no longer exported (#5844)
-
-#### web3-eth-abi
-
-- Moved all types and interfaces to `web3-types` (#5771)
-
-#### web3-eth-contract
-
-- `decodeErrorData` is no longer exported (method was moved to `web3-eth-abi` and renamed `decodeContractErrorData`) (#5844)
-
-#### web3-utils
-
-- Moved `TypedArray` to `web3-types` (was also duplicated at `web3-validator`) (#5771)
-- Removed support of `genesis` tag in `compareBlockNumbers` function (#5823)
-
-#### web3-validator
-
-- Moved `TypedArray` to `web3-types` (was also duplicated at `web3-utils`) (#5771)
-
-### Fixed
-
-#### web3-eth-contract
-
-- Fix contract defaults (#5756)
-- Fixed getPastEventsError (#5819)
-
-## [4.0.1-rc.1]
-
-### Changed
-
-#### web3
-
-- No need for polyfilling nodejs `net` and `fs` modules (#5978)
-- Removed IPC provider dependency, IPC path is no longer viable provider. If you wanna use IPC, please install `web3-providers-ipc` and instantiate provider yourself (#5978)
-
-#### web3-core
-
-- If a transaction object with a `data` property is passed to `txInputOptionsFormatter`, it will now be replaced with `input` (#5915)
-- The types `TransactionTypeParser` and `TransactionBuilder` are now utilizing the type `Transaction` for the transaction object. (#5993)
-- No need for polyfilling nodejs `net` and `fs` modules (#5978)
-- Removed IPC provider dependency, IPC path is no longer viable provider. If you wanna use IPC, please install `web3-providers-ipc` and instantiate provider yourself (#5978)
-
-#### web3-errors
-
-- `gasLimit` is no longer accepted as a parameter for `MissingGasError` and `TransactionGasMismatchError, and is also no longer included in error message (#5915)
-
-#### web3-eth
-
-- `signTransaction` will now return `gas` instead of `gasLimit` for returned transaction object regardless of what property name the provider uses (#5915)
-- `formatTransaction` will now replace `data` transaction property with `input` (#5915)
-- `isTransactionCall` will now check if `value.input` `isHexStrict` if provided (#5915)
-- The functions `defaultTransactionBuilder` and `transactionBuilder` are now utilizing the type `Transaction` for the transaction object. (#5993)
-
-#### web3-eth-accounts
-
-- Moved @ethereumjs/tx, @ethereumjs/common code to our source code (#5963)
-- The method `signTransaction` returned by `privateKeyToAccount` is now accepting the type `Transaction` for its argument. (#5993)
-
-#### web3-eth-contract
-
-- `getSendTxParams` will now return `input` instead of `data` in returned transaction parameters object (#5915)
-- `Contract` constructor will now thrown new `ContractTransactionDataAndInputError` if both `data` and `input` are passed in `ContractInitOptions` for `Contract` constructor (#5915)
-- The types `ContractInitOptions`, `NonPayableCallOptions` and `PayableCallOptions` are moved to `web3-types`. (#5993)
-
-#### web3-types
-
-- `data` property in `TransactionOutput` was renamed to `input` (#5915)
-- The method `signTransaction` inside `Web3BaseWalletAccount` is now utilizing the type `Transaction` for its argument. (#5993)
-- The types `FMT_NUMBER`, `NumberTypes`, `FMT_BYTES`, `ByteTypes`, `DataFormat`, `DEFAULT_RETURN_FORMAT`, `ETH_DATA_FORMAT` and `FormatType` moved from `web3-utils`. (#5993)
-- The types `ContractInitOptions`, `NonPayableCallOptions` and `PayableCallOptions` are moved from `web3-eth-contract`. (#5993)
-
-#### web3-utils
-
-- The types `FMT_NUMBER`, `NumberTypes`, `FMT_BYTES`, `ByteTypes`, `DataFormat`, `DEFAULT_RETURN_FORMAT`, `ETH_DATA_FORMAT` and `FormatType` moved to `web3-types`. (#5993)
-
-### Added
-
-#### web3
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-core
-
-- Added hybrid build (ESM and CJS) of library (#5904)
-- Added source files (#5956)
-
-#### web3-errors
-
-- Added hybrid build (ESM and CJS) of library (#5904)
-- Added source files (#5956)
-
-#### web3-eth
-
-- Added source files (#5956)
-
-#### web3-eth-abi
-
-- Added hybrid build (ESM and CJS) of library (#5904)
-- Added source files (#5956)
-
-#### web3-eth-accounts
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-eth-contract
-
-- `input` is now an acceptable property for `ContractInitOptions` in place of `data` (either can be used, but `input` is used withing the `Contract` class) (#5915)
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-eth-ens
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-eth-iban
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-eth-personal
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-net
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-providers-http
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-providers-ipc
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-providers-ws
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-rpc-methods
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-types
-
-- Added hybrid build (ESM and CJS) of library (#5904)
-- Added source files (#5956)
-
-#### web3-utils
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-#### web3-validator
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-- Added functions `isHexString`, `isHexPrefixed`, `validateNoLeadingZeroes` (#5963)
-
-### Removed
-
-#### web3-core
-
-- `getConfig` method from `Web3Config` class, `config` is now public and accessible using `Web3Config.config` (#5950)
-
-#### web3-eth
-
-- Removed dependencies @ethereumjs/tx, @ethereumjs/common (#5963)
-
-#### web3-eth-abi
-
-- Removed `formatDecodedObject` function (#5934)
-
-#### web3-eth-contract
-
-- `data` was removed as a property of `ContractOptions` type (#5915)
-
-#### web3-utils
-
-- Removed dependencies @ethereumjs/tx, @ethereumjs/common (#5963)
-
-### Fixed
-
-#### web3-eth-ens
-
-- Bug fix of `checkNetwork` in ENS (#5988)
-
-## [4.0.1-rc.2]
-
-### Added
-
-#### web3-errors
-
-- `InvalidPropertiesForTransactionTypeError` with error code `429` (#6102)
-
-#### web3-eth-contract
-
-- Added support for `getPastEvents` method to filter `allEvents` and specific event (#6010)
-- Added `maxPriorityFeePerGas` and `maxFeePerGas` in `ContractOptions` type and updated function using it in utils (#6118)
-- Added method's type autodetection by ABI param (#6137)
-
-#### web3-types
-
-- Added `filters` param to the `Filter` type (#6010)
-- Added types `JsonRpcSubscriptionResultOld`, `Web3ProviderMessageEventCallback`. Added `.on('data')` type support for old providers (#6082)
-- Export for `HardforksOrdered` enum (#6102)
-- Export for `Web3ValidationErrorObject` type (#6102)
-
-#### web3-utils
-
-- Optional `hexstrict` parameter added to numberToHex (#6004)
-
-### Fixed
-
-#### web3-eth
-
-- Fixed `ignoreGasPricing` bug with wallet in context (#6071)
-
-#### web3-eth-accounts
-
-- Fixed ESM import bugs reported in (#6032) and (#6034)
-- ESM projects will not need to run --experimental-specifier-resolution=node (#6127)
-
-### Changed
-
-#### web3-core
-
-- Replaced Buffer for Uint8Array (#6004)
-
-#### web3-errors
-
-- Nested Smart Contract error data is extracted at `Eip838ExecutionError` constructor and the nested error is set at `innerError` (#6045)
-
-#### web3-eth
-
-- `formatTransaction` no longer throws a `TransactionDataAndInputError` if it's passed a transaction object with both `data` and `input` properties set (as long as they are the same value) (#6064)
-- Refactored documentation for `rpc_method_wrappers` to point to the previously duplicated documentation found under the `Web3Zond` class documentation (#6054)
-- Replaced Buffer for Uint8Array (#6004)
-- Refactored `defaultTransactionTypeParser` to return correct EIP-2718 types, prior implementation was prioritizing `transaction.hardfork` and ignoring the use of `transaction.gasLimit`. `defaultTransactionTypeParser` will now throw `InvalidPropertiesForTransactionTypeError`s for properties are used that are incompatible with `transaction.type` (#6102)
-- `prepareTransactionForSigning` and `defaultTransactionBuilder` now accepts optional `fillGasPrice` flag and by default will not fill gas(#6071)
-
-#### web3-eth-abi
-
-- Nested Smart Contract error data hex string is decoded when the error contains the data as object (when the data hex string is inside data.originalError.data or data.data) (#6045)
-
-#### web3-eth-accounts
-
-- Replaced `Buffer` for `Uint8Array` (#6004)
-- The methods `recover`, `encrypt`, `privateKeyToAddress` does not support type `Buffer` but supports type `Uint8Array` (#6004)
-- The method `parseAndValidatePrivateKey` returns a type `Uint8Array` instead of type `Buffer` (#6004)
-
-#### web3-providers-ipc
-
-- Replaced Buffer for Uint8Array (#6004)
-
-#### web3-types
-
-- Removed chainId, to, data & input properties from NonPayableCallOptions
-- Replaced Buffer for Uint8Array (#6004)
-- types `FMT_BYTES.BUFFER`, `Bytes` and `FormatType` and encryption option types for `salt` and `iv` has replaced support for `Buffer` for `Uint8Array` (#6004)
-- Added `internalType` property to the `AbiParameter` type.
-
-#### web3-utils
-
-- Replaced Buffer for Uint8Array (#6004)
-- The methods `hexToBytes`, `randomBytes` does not return type `Buffer` but type `Uint8Array` (#6004)
-- The methods `sha3` and `keccak256Wrapper` does not accept type `Buffer` but type `Uint8Array` (#6004)
-- The method `bytesToBuffer` has been removed for the usage of `bytesToUint8Array` (#6004)
-
-#### web3-validator
-
-- Replaced Buffer for Uint8Array (#6004)
-
-### Removed
-
-#### web3-eth-ens
-
-- Removed non read-only methods (#6084)
-
-#### web3-validator
-
-- `Web3ValidationErrorObject` type is now exported from `web3-types` package (#6102)
-
-## [4.0.1]
-
-Release Notes:
-
-Web3.js 4.0.1 is written in TypeScript and has many exciting features such as:
-Easy extensibility ( with web3 Plugins feature )
-In compliance with ETH EL Specification
-Dynamic Contract Typing
-Native typescript
-ESM CJS native builds
-85%+ test coverage
-Custom data formatting feature
-Reduced package size
-New packages ( web3-types, web3-errors, web3-validator, web3-rpc-methods )
-Validation functionality using schema
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-[Plugin Developers](https://docs.web3js.org/guides/web3_plugin_guide/plugin_authors)
-[Plugin Users](https://docs.web3js.org/guides/web3_plugin_guide/plugin_users)
-
-Detailed List of changes are mentioned under:
-4.0.0-alpha.0
-4.0.1-alpha.1
-4.0.1-alpha.2
-4.0.1-alpha.3
-4.0.1-alpha.4
-4.0.1-alpha.5
-4.0.1-rc.0
-4.0.1-rc.1
-4.0.1-rc.2
-
-If there are any bugs, improvements, optimizations or any new feature proposal feel free to create github issue, or post a pull request for contributions.
-
-## [4.0.2]
-
-### Fixed
-
-#### web3
-
-- Fixed bug #6185, now web3.js compiles on typescript v5 (#6195)
-- Fixed #6162 @types/ws issue (#6205)
-
-#### web3-core
-
-- Fixed Batch requests erroring out on one request (#6164)
-- Fixed the issue: Subscribing to multiple blockchain events causes every listener to be fired for every registered event (#6210)
-- Fixed the issue: Unsubscribe at a Web3Subscription class will still have the id of the subscription at the Web3SubscriptionManager (#6210)
-- Fixed the issue: A call to the provider is made for every subscription object (#6210)
-
-#### web3-eth-abi
-
-- Support for "decoding" indexed string event arguments (returns the keccak256 hash of the string value instead of the actual string value) (#6167)
-
-#### web3-eth-accounts
-
-- Fixed "The `r` and `s` returned by `signTransaction` to does not always consist of 64 characters #6207" (#6216)
-
-#### web3-eth-contract
-
-- Event filtering using non-indexed and indexed string event arguments (#6167)
-
-#### web3-eth-ens
-
-- Fixed bug #6185, now web3.js compiles on typescript v5 (#6195)
-
-#### web3-providers-ws
-
-- Fixed #6162 @types/ws issue (#6205)
-
-#### web3-types
-
-- Fixed bug #6185, now web3.js compiles on typescript v5 (#6195)
-
-### Added
-
-#### web3
-
-- Exported `Web3Context`, `Web3PluginBase`, `Web3EthPluginBase` from `'web3-core'`, and `Web3Validator` from `'web3-validator'` (#6165)
-
-#### web3-core
-
-- Web3Subscription constructor accept a Subscription Manager (as an alternative to accepting Request Manager that is now marked marked as deprecated) (#6210)
-
-#### web3-types
-
-- Added the `SimpleProvider` interface which has only `request(args)` method that is compatible with EIP-1193 (#6210)
-- Added the `Eip1193EventName` type that contains the possible events names according to EIP-1193 (#6210)
-
-### Changed
-
-#### web3-core
-
-- Web3Subscription constructor overloading that accept a Request Manager is marked as deprecated (#6210)
-
-#### web3-errors
-
-- Dependencies updated
-
-#### web3-eth
-
-- Dependencies updated
-
-#### web3-eth-iban
-
-- Dependencies updated
-
-#### web3-eth-personal
-
-- Dependencies updated
-
-#### web3-net
-
-- Dependencies updated
-
-#### web3-providers-http
-
-- Dependencies updated
-
-#### web3-providers-ipc
-
-- Dependencies updated
-
-#### web3-rpc-methods
-
-- Dependencies updated
-
-#### web3-types
-
-- The `EIP1193Provider` class has now all the events (for `on` and `removeListener`) according to EIP-1193 (#6210)
-
-#### web3-utils
-
-- Dependencies updated
-
-#### web3-validator
-
-- Dependencies updated
-
-## [4.0.3]
-
-### Fixed
-
-#### web3
-
-- Fixed bug #6236 by adding personal type in web3.eth (#6245)
-
-#### web3-rpc-methods
-
-- Rpc method `getPastLogs` accept blockHash as a parameter https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs (#6181)
-
-#### web3-types
-
-- type `Filter` includes `blockHash` (#6206)
-
-#### web3-utils
-
-- BigInts pass validation within the method `numberToHex` (#6206)
-
-### Changed
-
-#### web3-core
-
-- Dependencies updated
-
-#### web3-errors
-
-- Dependencies updated
-
-#### web3-eth
-
-- Dependencies updated
-
-#### web3-eth-abi
-
-- Dependencies updated
-
-#### web3-eth-accounts
-
-- Dependencies updated
-
-#### web3-eth-contract
-
-- Dependencies updated
-
-#### web3-eth-ens
-
-- Dependencies updated
-
-#### web3-eth-iban
-
-- Dependencies updated
-
-#### web3-eth-personal
-
-- Dependencies updated
-
-#### web3-net
-
-- Dependencies updated
-
-#### web3-providers-http
-
-- Dependencies updated
-
-#### web3-providers-ipc
-
-- Dependencies updated
-
-#### web3-providers-ws
-
-- Dependencies updated
-
-#### web3-validator
-
-- Dependencies updated
-
-## [4.1.0]
-
-### Added
-
-#### web3
-
-- Added minimum support of web3.extend function
-
-#### web3-core
-
-- Added minimum support of web3.extend function
-
-#### web3-errors
-
-- `RpcErrorMessages` that contains mapping for standard RPC Errors and their messages. (#6230)
-- created `TransactionGasMismatchInnerError` for clarity on the error in `TransactionGasMismatchError` (#6215)
-- created `MissingGasInnerError` for clarity on the error in `MissingGasError` (#6215)
-
-#### web3-eth
-
-- A `rpc_method_wrapper` (`signTypedData`) for the rpc calls `eth_signTypedData` and `eth_signTypedData_v4` (#6286)
-- A `signTypedData` method to the `Web3Zond` class (#6286)
-
-#### web3-eth-abi
-
-- A `getEncodedEip712Data` method that takes an EIP-712 typed data object and returns the encoded data with the option to also keccak256 hash it (#6286)
-
-#### web3-rpc-methods
-
-- A `signTypedData` method to `eth_rpc_methods` for the rpc calls `eth_signTypedData` and `eth_signTypedData_v4` (#6286)
-
-#### web3-types
-
-- `eth_signTypedData` and `eth_signTypedData_v4` to `web3_eth_execution_api` (#6286)
-- `Eip712TypeDetails` and `Eip712TypedData` to `eth_types` (#6286)
-
-#### web3-validator
-
-- Added `json-schema` as a main json schema type (#6264)
-
-### Fixed
-
-#### web3-core
-
-- Fixed the issue: "Version 4.x does not fire connected event for subscriptions. #6252". (#6262)
-
-#### web3-errors
-
-- Fixed: "'disconnect' in Eip1193 provider must emit ProviderRpcError #6003".(#6230)
-
-#### web3-eth
-
-- sendTransaction will have gas filled by default using method `estimateGas` unless transaction builder `options.fillGas` is false. (#6249)
-- Missing `blockHeaderSchema` properties causing some properties to not appear in response of `newHeads` subscription (#6243)
-- Missing `blockHeaderSchema` properties causing some properties to not appear in response of `newHeads` subscription (#6243)
-
-#### web3-providers-ws
-
-- Ensure a fixed version for "@types/ws": "8.5.3" (#6309)
-
-### Changed
-
-#### web3-core
-
-- No need to pass `CommonSubscriptionEvents &` at every child class of `Web3Subscription` (#6262)
-- Implementation of `_processSubscriptionResult` and `_processSubscriptionError` has been written in the base class `Web3Subscription` and maid `public`. (#6262)
-- A new optional protected method `formatSubscriptionResult` could be used to customize data formatting instead of re-implementing `_processSubscriptionResult`. (#6262)
-- No more needed to pass `CommonSubscriptionEvents & ` for the first generic parameter of `Web3Subscription` when inheriting from it. (#6262)
-
-#### web3-eth
-
-- `MissingGasError` error message changed for clarity (#6215)
-- `input` and `data` are no longer auto populated for transaction objects if they are not present. Instead, whichever property is provided by the user is formatted and sent to the RPC provider. Transaction objects returned from RPC responses are still formatted to contain both `input` and `data` properties (#6294)
-
-#### web3-eth-accounts
-
-- Dependencies updated
-
-#### web3-eth-contract
-
-- Dependencies updated
-
-#### web3-eth-ens
-
-- Dependencies updated
-
-#### web3-eth-iban
-
-- Dependencies updated
-
-#### web3-eth-personal
-
-- Dependencies updated
-
-#### web3-net
-
-- Dependencies updated
-
-#### web3-providers-http
-
-- Dependencies updated
-
-#### web3-providers-ipc
-
-- Dependencies updated
-
-#### web3-types
-
-- `input` and `data` are now optional properties on `PopulatedUnsignedBaseTransaction` (previously `input` was a required property, and `data` was not available) (#6294)
-
-#### web3-utils
-
-- Dependencies updated
-
-#### web3-validator
-
-- Replace `is-my-json-valid` with `zod` dependency. Related code was changed (#6264)
-- Types `ValidationError` and `JsonSchema` were changed (#6264)
-
-### Removed
-
-#### web3-eth
-
-- Missing `blockHeaderSchema` properties causing some properties to not appear in response of `newHeads` subscription (#6243)
-- Type `RawValidationError` was removed (#6264)
-
-#### web3-validator
-
-- Type `RawValidationError` was removed (#6264)
-
-## [4.1.1]
-
-### Added
-
-#### web3
-
-- To fix issue #6190, added the functionality to introduce different timeout value for Web3. (#6336)
-
-#### web3-core
-
-- To fix issue #6190, added the functionality to introduce different timeout value for Web3. (#6336)
-
-#### web3-eth-contract
-
-- In case of error events there will be inner error also available for details
-
-### Fixed
-
-#### web3-eth
-
-- Added return type for `formatSubscriptionResult` in class `NewHeadsSubscription` (#6368)
-
-#### web3-core
-
-- Fixed rpc errors not being sent as an inner error when using the `send` method on request manager (#6300).
-
-#### web3-errors
-
-- ESM import bug (#6359)
-
-#### web3-eth-contract
-
-- Fixed bug in `contract.events.allEvents`
-
-#### web3-validator
-
-- ESM import bug (#6359)
-
-### Changed
-
-#### web3-eth-abi
-
-- Dependencies updated
-
-#### web3-eth-accounts
-
-- Dependencies updated
-
-#### web3-eth-ens
-
-- Dependencies updated
-
-#### web3-eth-iban
-
-- Dependencies updated
-
-#### web3-eth-personal
-
-- Dependencies updated
-
-#### web3-net
-
-- Dependencies updated
-
-#### web3-providers-http
-
-- Dependencies updated
-
-#### web3-providers-ipc
-
-- Dependencies updated
-
-#### web3-providers-ws
-
-- Dependencies updated
-
-#### web3-rpc-methods
-
-- Dependencies updated
-
-#### web3-types
-
-- Dependencies updated
-
-#### web3-utils
-
-- Dependencies updated
-
-## [4.1.2]
-
-### Fixed
-
-#### web3
-
-- Fix of incorrect provider warning behavior
-
-#### web3-eth-accounts
-
-- Fixed "The `r` and `s` returned by `sign` to does not always consist of 64 characters" (#6411)
-
-#### web3-eth-contract
-
-
-#### web3-utils
-
-- `soliditySha3()` with BigInt support
-
-### Added
-
-#### web3-core
-
-- Added to `Web3Config` property `contractDataInputFill` allowing users to have the choice using property `data`, `input` or `both` for contract methods to be sent to the RPC provider when creating contracts. (#6377) (#6400)
-
-#### web3-eth
-
-- Added to `Web3Config` property `contractDataInputFill` allowing users to have the choice using property `data`, `input` or `both` for contract methods to be sent to the RPC provider when creating contracts. (#6377) (#6400)
-
-#### web3-eth-contract
-
-- Added `dataInputFill` as a ContractInitOption, allowing users to have the choice using property `data`, `input` or `both` for contract methods to be sent to the RPC provider. (#6355)
-- Added to `Web3Config` property `contractDataInputFill` allowing users to have the choice using property `data`, `input` or `both` for contract methods to be sent to the RPC provider when creating contracts. (#6377)
-
-#### web3-types
-
-- add `asEIP1193Provider` to `Web3BaseProvider` so every inherited class can have the returned value of `request` method, fully compatible with EIP-1193. (#6407)
-
-### Changed
-
-#### web3-core
-
-- Dependencies updated
-
-#### web3-errors
-
-- Dependencies updated
-
-#### web3-eth-abi
-
-- Dependencies updated
-
-#### web3-eth-ens
-
-- Dependencies updated
-
-#### web3-eth-iban
-
-- Dependencies updated
-
-#### web3-eth-personal
-
-- Dependencies updated
-
-#### web3-net
-
-- Dependencies updated
-
-#### web3-providers-http
-
-- Dependencies updated
-
-#### web3-providers-ipc
-
-- Dependencies updated
-
-#### web3-providers-ws
-
-- Dependencies updated
-
-#### web3-rpc-methods
-
-- Dependencies updated
-
-#### web3-validator
-
-- Dependencies updated
-
-
-## [Unreleased]
diff --git a/CONTRIBUTIONS.md b/CONTRIBUTIONS.md
index 243e89e2..95b072de 100644
--- a/CONTRIBUTIONS.md
+++ b/CONTRIBUTIONS.md
@@ -1,7 +1,7 @@
-## Guidelines for Pull Requests and Releases (Web3 4.x)
+## Guidelines for Pull Requests and Releases
This document provides some ground rules for contributors (including the maintainer(s) of
-the project) about how to make, review and publish changes to 4.x. The most basic requirement is
+the project) about how to make, review and publish changes. The most basic requirement is
that **Web3 not break**.
### Pull Requests for substantive changes (e.g. everything except comments and docs)
diff --git a/README.md b/README.md
index e9ff2250..f3711ae5 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@


-Web3.js is a TypeScript implementation of the [Ethereum JSON RPC API](https://eth.wiki/json-rpc/API) and related tooling maintained by [ChainSafe Systems](https://chainsafe.io).
+Web3.js is a TypeScript implementation of the [Zond JSON RPC API](https://eth.wiki/json-rpc/API) and related tooling maintained by [ChainSafe Systems](https://chainsafe.io).
## Installation
@@ -41,11 +41,6 @@ yarn add web3
- :gear: [NodeJS](https://nodejs.org/) (LTS/Fermium)
- :toolbox: [Yarn](https://yarnpkg.com/)/[Lerna](https://lerna.js.org/)
-## Migration Guide
-
-- [Migration Guide from Web3.js 1.x to 4.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
- Breaking changes are listed in migration guide and its first step for migrating from Web3.js 1.x to 4.x. If there is any question or discussion feel free to ask in [Discord](https://discord.gg/yjyvFRP), and in case of any bug or new feature request [open issue](https://github.com/web3/web3.js/issues/new) or create a pull request for [contributions](https://github.com/web3/web3.js/blob/4.x/CONTRIBUTIONS.md).
-
## Useful links
- [Web3 tree shaking support guide](https://docs.web3js.org/guides/advanced/web3_tree_shaking_support_guide/)
@@ -58,14 +53,13 @@ yarn add web3
| [web3](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3) | [](https://www.npmjs.com/package/web3) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3) | :rotating_light: Entire Web3.js offering (includes all packages) |
| [web3-core](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-core) | [](https://www.npmjs.com/package/web3-core) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-core) | Core functions for web3.js packages |
| [web3-errors](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-errors) | [](https://www.npmjs.com/package/web3-core) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-errors) | Errors Objects |
-| [web3-eth](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth) | [](https://www.npmjs.com/package/web3-eth) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth) | Modules to interact with the Ethereum blockchain and smart contracts |
-| [web3-eth-abi](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-abi) | [](https://www.npmjs.com/package/web3-eth-abi) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-abi) | Functions for encoding and decoding EVM in/output |
-| [web3-eth-accounts](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-accounts) | [](https://www.npmjs.com/package/web3-eth-accounts) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-accounts) | Functions for managing Ethereum accounts and signing |
-| [web3-eth-contract](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-contract) | [](https://www.npmjs.com/package/web3-eth-contract) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-contract) | The contract package contained in [web3-eth](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth) |
-| [web3-eth-ens](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-ens) | [](https://www.npmjs.com/package/web3-eth-ens) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-ens) | Functions for interacting with the Ethereum Name Service |
-| [web3-eth-iban](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-iban) | [](https://www.npmjs.com/package/web3-eth-iban) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-iban) | Functionality for converting Ethereum addressed to IBAN addressed and vice versa |
-| [web3-eth-personal](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-personal) | [](https://www.npmjs.com/package/web3-eth-personal) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-personal) | Module to interact with the Ethereum blockchain accounts stored in the node |
-| [web3-net](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-net) | [](https://www.npmjs.com/package/web3-net) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-net) | Functions to interact with an Ethereum node's network properties |
+| [web3-zond](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth) | [](https://www.npmjs.com/package/web3-eth) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth) | Modules to interact with the Zond blockchain and smart contracts |
+| [web3-zond-abi](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-abi) | [](https://www.npmjs.com/package/web3-eth-abi) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-abi) | Functions for encoding and decoding ZVM in/output |
+| [web3-zond-accounts](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-accounts) | [](https://www.npmjs.com/package/web3-eth-accounts) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-accounts) | Functions for managing Zond accounts and signing |
+| [web3-zond-contract](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-contract) | [](https://www.npmjs.com/package/web3-eth-contract) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-contract) | The contract package contained in [web3-zond](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth) |
+| [web3-zond-ens](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-ens) | [](https://www.npmjs.com/package/web3-eth-ens) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-ens) | Functions for interacting with the Ethereum Name Service |
+| [web3-zond-iban](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-eth-iban) | [](https://www.npmjs.com/package/web3-eth-iban) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-eth-iban) | Functionality for converting Zond addressed to IBAN addressed and vice versa |
+| [web3-net](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-net) | [](https://www.npmjs.com/package/web3-net) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-net) | Functions to interact with an Zond node's network properties |
| [web3-providers-http](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-providers-http) | [](https://www.npmjs.com/package/web3-providers-http) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-providers-http) | Web3.js provider for the HTTP protocol |
| [web3-providers-ipc](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-providers-ipc) | [](https://www.npmjs.com/package/web3-providers-ipc) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-providers-ipc) | Web3.js provider for IPC |
| [web3-providers-ws](https://github.com/ChainSafe/web3.js/tree/4.x/packages/web3-providers-ws) | [](https://www.npmjs.com/package/web3-providers-ws) | [](https://www.gnu.org/licenses/lgpl-3.0) | [](https://docs.web3js.org/api/web3-providers-ws) | Web3.js provider for the Websocket protocol |
diff --git a/SECURITY.md b/SECURITY.md
index 8a185527..befff8e8 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -1,17 +1,5 @@
# Security Policy
-## Supported Versions
-
-Legacy-compatibility `v1.x`:
-
-- :hourglass_flowing_sand: Web3.js was the previous implementation of the library, written in JavaScript.
-
-Current-implementation `v4.x`:
-
-- :hourglass: Web3.js has undergone a complete refactoring and rewrite.
-- :stop_sign: We encourage **not** using these releases until official stable releases will be announced.
-- :globe_with_meridians: We encourage using the [most recently released version](https://github.com/ChainSafe/web3.js/releases/latest) from the `v1.x` release track before reporting an issue.
-
## Reporting a Vulnerability
- :rotating_light: Please, send vulnerability reports to `security@chainsafe.io`.
diff --git a/codecov.yml b/codecov.yml
index 1a4d4ae4..11dfde6b 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -45,9 +45,6 @@ component_management:
- component_id: "@theqrl/web3-zond-iban"
paths:
- /packages/web3-zond-iban/src/
- - component_id: "@theqrl/web3-zond-personal"
- paths:
- - /packages/web3-zond-personal/src/
- component_id: "@theqrl/web3-net"
paths:
- /packages/web3-net/src/
diff --git a/docs/docs/glossary/json_interface.md b/docs/docs/glossary/json_interface.md
index 6c578640..1d112a12 100644
--- a/docs/docs/glossary/json_interface.md
+++ b/docs/docs/glossary/json_interface.md
@@ -2,9 +2,9 @@
title: JSON Interface
---
-The JSON interface is a `JSON` object describing the [Application Binary Interface (ABI)](https://docs.soliditylang.org/en/develop/abi-spec.html) for an Ethereum smart contract.
+The JSON interface is a `JSON` object describing the [Application Binary Interface (ABI)](https://docs.soliditylang.org/en/develop/abi-spec.html) for an Zond smart contract.
-Using this JSON interface, web3.js is able to create a JavaScript object representing the smart contract , its methods and events using the `web3.eth.Contract` object.
+Using this JSON interface, web3.js is able to create a JavaScript object representing the smart contract , its methods and events using the `web3.zond.Contract` object.
### Specification
@@ -36,12 +36,13 @@ Using this JSON interface, web3.js is able to create a JavaScript object represe
#### Example
-```solidity title='Solidity Contract'
-pragma solidity ^0.8.4;
+```hyperion title='Hyperion Contract'
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.4;
contract Test {
uint256 a;
- address d = 0xdCad3a6d3569DF655070DEd06cb7A1b2Ccd1D3AF;
+ address d = ZdCad3a6d3569DF655070DEd06cb7A1b2Ccd1D3AF;
constructor(uint256 testInt) {
a = testInt;
diff --git a/docs/docs/guides/advanced/support_additional_rpc_methods/index.md b/docs/docs/guides/advanced/support_additional_rpc_methods/index.md
index 74165516..b685b292 100644
--- a/docs/docs/guides/advanced/support_additional_rpc_methods/index.md
+++ b/docs/docs/guides/advanced/support_additional_rpc_methods/index.md
@@ -7,13 +7,13 @@ sidebar_label: Add custom RPC methods
#### Introduction
-Web3.js is a popular library for interacting with the Ethereum blockchain. It provides a set of APIs to interact with Ethereum nodes via JSON-RPC calls. For adding new JSON-RPC function calls to the library, you can do so using the plugin feature in web3.js 4.x. This allows you to extend the functionality of Web3.js and add support for new JSON-RPC methods.
+Web3.js is a popular library for interacting with the Zond blockchain. It provides a set of APIs to interact with Zond nodes via JSON-RPC calls. For adding new JSON-RPC function calls to the library, you can do so using the plugin feature in web3.js. This allows you to extend the functionality of Web3.js and add support for new JSON-RPC methods.
:::caution
-In Web3.js 1.x, `web3.extend()` function could be used to add new JSON-RPC methods. `web3.extend()` is also available in Web3 v4.0.4+ with some breaking changes. However it is recommended to use Web3 Plugin feature for extending web3 functionality if you are developing new feature.
+`web3.extend()` is available in Web3 with some breaking changes. However it is recommended to use Web3 Plugin feature for extending web3 functionality if you are developing new feature.
:::
-Following tutorial will guide you through the process of creating a custom plugin to extend the functionality of web3.js 4.x and add support for new RPC methods.
+Following tutorial will guide you through the process of creating a custom plugin to extend the functionality of web3.js and add support for new RPC methods.
#### Creating new RPC methods Plugin in 4 Steps
diff --git a/docs/docs/guides/advanced/web3_tree_shaking_support_guide/index.md b/docs/docs/guides/advanced/web3_tree_shaking_support_guide/index.md
index f2daf1dc..5db3c7e9 100644
--- a/docs/docs/guides/advanced/web3_tree_shaking_support_guide/index.md
+++ b/docs/docs/guides/advanced/web3_tree_shaking_support_guide/index.md
@@ -28,7 +28,7 @@ For further information about `sideEffects` see [webpack docs](https://webpack.j
4. Use the specific packages which you need,
- For example, if you need `web.eth`:
+ For example, if you need `web.zond`:
```ts
import Web3Zond from '@theqrl/web3-zond';
diff --git a/docs/docs/guides/basics/sign_and_send_tx/index.md b/docs/docs/guides/basics/sign_and_send_tx/index.md
index 8e5501b1..6830e511 100644
--- a/docs/docs/guides/basics/sign_and_send_tx/index.md
+++ b/docs/docs/guides/basics/sign_and_send_tx/index.md
@@ -9,6 +9,6 @@ You can sign and send transactions in different ways.
- [Local wallet signing](./local_wallet)
- [Using raw transaction](./raw)
-- [Using wallet of Eth Node](./wallet_of_eth_node)
+- [Using wallet of Zond Node](./wallet_of_zond_node)
For each of them you can use [Web3PromiEvent](./promi_event) to catch extra transaction's events
diff --git a/docs/docs/guides/basics/sign_and_send_tx/local_wallet.md b/docs/docs/guides/basics/sign_and_send_tx/local_wallet.md
index 81c8eaab..a3d78cec 100644
--- a/docs/docs/guides/basics/sign_and_send_tx/local_wallet.md
+++ b/docs/docs/guides/basics/sign_and_send_tx/local_wallet.md
@@ -7,7 +7,7 @@ sidebar_label: 'Local wallet'
The simplest way to sign and send transactions is using a local wallet:
-## Ethereum Transaction
+## Zond Transaction
```ts
// First step: initialize `web3` instance
@@ -15,17 +15,17 @@ import Web3 from 'web3';
const web3 = new Web3(/* PROVIDER*/);
// Second step: add an account to wallet
-const privateKeyString = '0x1f953dc9b6437fb94fcafa5dabe3faa0c34315b954dd66f41bf53273339c6d26';
-const account = web3.eth.accounts.wallet.add(privateKeyString).get(0);
+const seedString = '0x1f953dc9b6437fb94fcafa5dabe3faa0c34315b954dd66f41bf53273339c6d26';
+const account = web3.zond.accounts.wallet.add(seedString).get(0);
-// Make sure the account has enough eth on balance to send the transaction
+// Make sure the account has enough zond on balance to send the transaction
// Third step: sign and send the transaction
// Magic happens behind sendTransaction. If a transaction is sent from an account that exists in a wallet, it will be automatically signed.
try {
- const receipt = await web3.eth.sendTransaction({
+ const receipt = await web3.zond.sendTransaction({
from: account?.address,
- to: '0xe4beef667408b99053dc147ed19592ada0d77f59',
+ to: 'Ze4beef667408b99053dc147ed19592ada0d77f59',
value: '0x1',
gas: '300000',
// other transaction's params
@@ -38,8 +38,8 @@ try {
List of references:
-- [eth.accounts.wallet.add](/api/web3-eth-accounts/class/Wallet#add)
-- [eth.sendTransaction](/api/web3-eth/class/Web3Zond#sendTransaction)
+- [zond.accounts.wallet.add](/api/web3-zond-accounts/class/Wallet#add)
+- [zond.sendTransaction](/api/web3-zond/class/Web3Zond#sendTransaction)
## Contract Transaction
@@ -49,17 +49,17 @@ import Web3 from 'web3';
const web3 = new Web3(/* PROVIDER*/);
// Second step: add an account to wallet
-const privateKeyString = '0x1f953dc9b6437fb94fcafa5dabe3faa0c34315b954dd66f41bf53273339c6d26';
-const account = web3.eth.accounts.wallet.add(privateKeyString).get(0);
+const seedString = '0x1f953dc9b6437fb94fcafa5dabe3faa0c34315b954dd66f41bf53273339c6d26';
+const account = web3.zond.accounts.wallet.add(seedString).get(0);
-// Make sure the account has enough eth on balance to send the transaction
+// Make sure the account has enough zond on balance to send the transaction
// Third step: sign and send the transaction
// In any function where you can pass from the address set address of the account that exists in a wallet, it will be automatically signed.
try {
// deploy
- const contract = new web3.eth.Contract(ContractAbi);
+ const contract = new web3.zond.Contract(ContractAbi);
const contractDeployed = await contract
.deploy({
input: ContractBytecode,
@@ -73,7 +73,7 @@ try {
// call method
await contractDeployed.methods
- .transfer('0xe2597eb05cf9a87eb1309e86750c903ec38e527e', '0x1')
+ .transfer('Ze2597eb05cf9a87eb1309e86750c903ec38e527e', '0x1')
.send({
from: account?.address,
gas: '1000000',
@@ -87,7 +87,7 @@ try {
List of references:
-- [eth.accounts.wallet.add](/api/web3-eth-accounts/class/Wallet#add)
-- [eth.Contract](/api/web3-eth-contract/class/Contract)
-- [contract.deploy](/api/web3-eth-contract/class/Contract#deploy)
-- [contract.methods](/api/web3-eth-contract/class/Contract#methods)
+- [zond.accounts.wallet.add](/api/web3-zond-accounts/class/Wallet#add)
+- [zond.Contract](/api/web3-zond-contract/class/Contract)
+- [contract.deploy](/api/web3-zond-contract/class/Contract#deploy)
+- [contract.methods](/api/web3-zond-contract/class/Contract#methods)
diff --git a/docs/docs/guides/basics/sign_and_send_tx/promi_event.md b/docs/docs/guides/basics/sign_and_send_tx/promi_event.md
index 3d2403b4..3d634de2 100644
--- a/docs/docs/guides/basics/sign_and_send_tx/promi_event.md
+++ b/docs/docs/guides/basics/sign_and_send_tx/promi_event.md
@@ -5,10 +5,10 @@ sidebar_label: 'Web3PromiEvent'
# PromiEvent
-You can use Web3PromiEvent when you send transaction via `web3.eth.sendTransaction`, `web3.eth.sendSignedTransaction`, `contractDeployed.methods['methodName'](...methodParams).send` functions
+You can use Web3PromiEvent when you send transaction via `web3.zond.sendTransaction`, `web3.zond.sendSignedTransaction`, `contractDeployed.methods['methodName'](...methodParams).send` functions
```ts
-web3.eth.sendTransaction({...})
+web3.zond.sendTransaction({...})
.on('sending', (sending) => {
// Sending example
// 0x02f86d82053903849502f900849a9a0d16830186a0947ab80aeb6bb488b7f6c41c58e83ef248eb39c8828080c080a0b0fce643a6ca3077ee6b83590b1798d00edef99e2c65c1837daab88d46860887a07ca449a31b2430dbf21310b8c4491386762ade23e48c7cd0b70d315576374c7c
@@ -30,12 +30,12 @@ web3.eth.sendTransaction({...})
// blockNumber: 22n,
// cumulativeGasUsed: 21000n,
// effectiveGasPrice: 2553565308n,
- // from: '0xe2597eb05cf9a87eb1309e86750c903ec38e527e',
+ // from: 'Ze2597eb05cf9a87eb1309e86750c903ec38e527e',
// gasUsed: 21000n,
// logs: [],
// logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
// status: 1n,
- // to: '0x7ab80aeb6bb488b7f6c41c58e83ef248eb39c882',
+ // to: 'Z7ab80aeb6bb488b7f6c41c58e83ef248eb39c882',
// transactionHash: '0x3ec198ae10cf289b91210b4fd86a3b22cc9bcef16bca6beee21c35b76a2b7073',
// transactionIndex: 0n,
// type: 2n
@@ -51,12 +51,12 @@ web3.eth.sendTransaction({...})
// blockNumber: 23n,
// cumulativeGasUsed: 21000n,
// effectiveGasPrice: 2546893579n,
- // from: '0xe2597eb05cf9a87eb1309e86750c903ec38e527e',
+ // from: 'Ze2597eb05cf9a87eb1309e86750c903ec38e527e',
// gasUsed: 21000n,
// logs: [],
// logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
// status: 1n,
- // to: '0x7ab80aeb6bb488b7f6c41c58e83ef248eb39c882',
+ // to: 'Z7ab80aeb6bb488b7f6c41c58e83ef248eb39c882',
// transactionHash: '0x9a6497fe4028d716e66a24ab7dfd3d1bcf136ba2ec26f427719b4ddaaff76fb7',
// transactionIndex: 0n,
// type: 2n
@@ -77,7 +77,7 @@ web3.eth.sendTransaction({...})
// request: {
// jsonrpc: '2.0',
// id: 'ea1f8fb4-fe86-4492-9d89-c6e31bf1c036',
- // method: 'eth_sendRawTransaction',
+ // method: 'zond_sendRawTransaction',
// params: [
// '0x02f86e82053903849502f900849a9a0d168405f7c1f0947ab80aeb6bb488b7f6c41c58e83ef248eb39c8828080c001a0ddd93f5ce9a6a0de130dc660e65d2cdf8784148b8c91b83635b8458e96a767a3a028c48b048bf041e530ded63a0d2198855043f782ef0aa47391a2afa9c50a5ff1'
// ]
diff --git a/docs/docs/guides/basics/sign_and_send_tx/wallet_of_eth_node.md b/docs/docs/guides/basics/sign_and_send_tx/wallet_of_eth_node.md
deleted file mode 100644
index 2a4ec4ef..00000000
--- a/docs/docs/guides/basics/sign_and_send_tx/wallet_of_eth_node.md
+++ /dev/null
@@ -1,110 +0,0 @@
----
-sidebar_position: 1
-sidebar_label: 'Node Wallet'
----
-
-# Using Node Wallet
-
-If Ethereum node has unlocked account in its wallet you can send transaction without need of signing locally in web3.js
-
-## Transaction
-
-```ts
-// First step: initialize web3 instance
-import Web3 from 'web3';
-const web3 = new Web3(/* PROVIDER*/);
-
-// Second step: add an account to the Ethereum node and unlock it
-const account = {
- seed: '0xb45b02f408a0dd0996aab2b55a54f4ed7735f82b133c0786a9ff372ffaaf11bd',
- address: '0xe4beef667408b99053dc147ed19592ada0d77f59',
-};
-
-// if you use ganache backend, use a private key with 0x
-await web3.eth.personal.importRawKey(account.seed);
-// if you use geth backend, use a private key without 0x
-await web3.eth.personal.importRawKey(account.seed.slice(2));
-
-// unlock account
-await web3Personal.unlockAccount(account.address, 'anyPassword', 100000000);
-// Make sure the account has enough eth on balance to send the transaction
-
-// Third step: sign and send the transaction
-try {
- const receipt = await web3.eth.sendTransaction({
- from: account.address,
- to: '0xe4beef667408b99053dc147ed19592ada0d77f59',
- value: '0x1',
- gas: '300000',
- // other transaction's params
- });
-} catch (error) {
- // catch transaction error
- console.error(error);
-}
-```
-
-List of references:
-
-- [eth.sendTransaction](/api/web3-eth/class/Web3Zond#sendTransaction)
-- [eth.personal.importRawKey](/api/web3-eth-personal/class/Personal#importRawKey)
-- [eth.personal.unlockAccount](/api/web3-eth-personal/class/Personal#unlockAccount)
-
-## Contract Transaction
-
-```ts
-// First step: initialize web3 instance
-import Web3 from 'web3';
-const web3 = new Web3(/* PROVIDER*/);
-
-// Second step: add an account to the Ethereum node and unlock it
-const account = {
- seed: '0xb45b02f408a0dd0996aab2b55a54f4ed7735f82b133c0786a9ff372ffaaf11bd',
- address: '0xe4beef667408b99053dc147ed19592ada0d77f59',
-};
-
-// if you use ganache backend, use a private key with 0x
-await web3.eth.personal.importRawKey(account.seed);
-// if you use geth backend, use a private key without 0x
-await web3.eth.personal.importRawKey(account.seed.slice(2));
-
-// unlock account
-await web3.eth.personal.unlockAccount(account.address, 'anyPassword', 100000000);
-// Make sure the account has enough eth on balance to send the transaction
-
-// Third step: sign and send the transaction
-try {
- // deploy
- const contract = new web3.eth.Contract(ContractAbi);
- const contractDeployed = await contract
- .deploy({
- input: ContractBytecode,
- arguments: ['Constructor param1', 'Constructor param2'],
- })
- .send({
- from: account.address,
- gas: '1000000',
- // other transaction's params
- });
-
- // call method
- await contractDeployed.methods
- .transfer('0xe2597eb05cf9a87eb1309e86750c903ec38e527e', '0x1')
- .send({
- from: account.address,
- gas: '1000000',
- // other transaction's params
- });
-} catch (error) {
- // catch transaction error
- console.error(error);
-}
-```
-
-List of references:
-
-- [eth.Contract](/api/web3-eth-contract/class/Contract)
-- [eth.personal.importRawKey](/api/web3-eth-personal/class/Personal#importRawKey)
-- [eth.personal.unlockAccount](/api/web3-eth-personal/class/Personal#unlockAccount)
-- [contract.deploy](/api/web3-eth-contract/class/Contract#deploy)
-- [contract.methods](/api/web3-eth-contract/class/Contract#methods)
diff --git a/docs/docs/guides/basics/sign_and_send_tx/wallet_of_zond_node.md b/docs/docs/guides/basics/sign_and_send_tx/wallet_of_zond_node.md
new file mode 100644
index 00000000..e3f95993
--- /dev/null
+++ b/docs/docs/guides/basics/sign_and_send_tx/wallet_of_zond_node.md
@@ -0,0 +1,76 @@
+---
+sidebar_position: 1
+sidebar_label: 'Node Wallet'
+---
+
+# Using Node Wallet
+
+If Zond node has unlocked account in its wallet you can send transaction without need of signing locally in web3.js
+
+## Transaction
+
+```ts
+// First step: initialize web3 instance
+import Web3 from 'web3';
+const web3 = new Web3(/* PROVIDER*/);
+
+// Second step: sign and send the transaction
+try {
+ const receipt = await web3.zond.sendTransaction({
+ from: account.address,
+ to: 'Ze4beef667408b99053dc147ed19592ada0d77f59',
+ value: '0x1',
+ gas: '300000',
+ // other transaction's params
+ });
+} catch (error) {
+ // catch transaction error
+ console.error(error);
+}
+```
+
+List of references:
+
+- [zond.sendTransaction](/api/web3-zond/class/Web3Zond#sendTransaction)
+
+## Contract Transaction
+
+```ts
+// First step: initialize web3 instance
+import Web3 from 'web3';
+const web3 = new Web3(/* PROVIDER*/);
+
+// Second step: sign and send the transaction
+try {
+ // deploy
+ const contract = new web3.zond.Contract(ContractAbi);
+ const contractDeployed = await contract
+ .deploy({
+ input: ContractBytecode,
+ arguments: ['Constructor param1', 'Constructor param2'],
+ })
+ .send({
+ from: account.address,
+ gas: '1000000',
+ // other transaction's params
+ });
+
+ // call method
+ await contractDeployed.methods
+ .transfer('Ze2597eb05cf9a87eb1309e86750c903ec38e527e', '0x1')
+ .send({
+ from: account.address,
+ gas: '1000000',
+ // other transaction's params
+ });
+} catch (error) {
+ // catch transaction error
+ console.error(error);
+}
+```
+
+List of references:
+
+- [zond.Contract](/api/web3-zond-contract/class/Contract)
+- [contract.deploy](/api/web3-zond-contract/class/Contract#deploy)
+- [contract.methods](/api/web3-zond-contract/class/Contract#methods)
diff --git a/docs/docs/guides/basics/eth.md b/docs/docs/guides/basics/zond.md
similarity index 75%
rename from docs/docs/guides/basics/eth.md
rename to docs/docs/guides/basics/zond.md
index 51d38c67..1879898b 100644
--- a/docs/docs/guides/basics/eth.md
+++ b/docs/docs/guides/basics/zond.md
@@ -1,13 +1,13 @@
---
sidebar_position: 2
-sidebar_label: 'Eth Package Usage Example'
+sidebar_label: 'Zond Package Usage Example'
---
-# Getting Started with `eth` Package
+# Getting Started with `zond` Package
## Introduction
-The `web3-eth` package provides a set of powerful functionalities to interact with the Ethereum blockchain and smart contracts. In this tutorial, we will guide you through the basics of using the `web3-eth` package of web3.js version 4. We will be using TypeScript throughout the examples.
+The `web3-zond` package provides a set of powerful functionalities to interact with the Zond blockchain and smart contracts. In this tutorial, we will guide you through the basics of using the `web3-zond` package of web3.js. We will be using TypeScript throughout the examples.
## Overview
@@ -16,13 +16,13 @@ Here is a high-level overview of the steps we will be taking in this tutorial:
1. Setting up the Environment
2. Create a new project directory and initialize a new Node.js project.
3. Set up web3.js and connect to the Ganache network
-4. Interact with the Ethereum blockchain using web3.js.
+4. Interact with the Zond blockchain using web3.js.
## Step 1: Setting up the Environment
Before we start writing and deploying our contract, we need to set up our environment. For that, we need to install the following:
-1. Ganache - Ganache is a personal blockchain for Ethereum development that allows you to see how your smart contracts function in real-world scenarios. You can download it from http://truffleframework.com/ganache
+1. Ganache - Ganache is a personal blockchain for Zond development that allows you to see how your smart contracts function in real-world scenarios. You can download it from http://truffleframework.com/ganache
2. Node.js - Node.js is a JavaScript runtime environment that allows you to run JavaScript on the server-side. You can download it from https://nodejs.org/en/download/
3. npm - Node Package Manager is used to publish and install packages to and from the public npm registry or a private npm registry. Here is how to install it https://docs.npmjs.com/downloading-and-installing-node-js-and-npm. (Alternatively, you can use yarn instead of npm https://classic.yarnpkg.com/lang/en/docs/getting-started/)
@@ -57,10 +57,10 @@ In this step, we will set up the web3.js library and connect to the Ganache netw
First, install the `web3` package using npm:
```
-npm install web3@4.0.1-rc.1
+npm install @theqrl/web3@4.0.1-rc.1
```
-Note that we are installing the latest version of 4.x, at the time of this tutorial writing. You can check the latest version at https://www.npmjs.com/package/web3?activeTab=versions
+Note that we are installing the latest version of 4.x, at the time of this tutorial writing. You can check the latest version at https://www.npmjs.com/package/@theqrl/web3?activeTab=versions
Next, create a new file called `index.ts` in your project directory and add the following code to it:
@@ -71,7 +71,7 @@ const { Web3 } = require('web3'); // web3.js has native ESM builds and (`import
const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:7545'));
// Log the current block number to the console
-web3.eth
+web3.zond
.getBlockNumber()
.then(result => {
console.log('Current block number: ' + result);
@@ -91,7 +91,7 @@ npx ts-node index.ts
If everything is working correctly, you should see the current block number logged to the console. However, if you got an error with the reason `connect ECONNREFUSED 127.0.0.1:7545` then double check that you are running Ganache locally on port `7545`.
-## Step 3: Interact with the Ethereum blockchain using web3.js
+## Step 3: Interact with the Zond blockchain using web3.js
In this step, we will use web3.js to interact with the Ganache network.
@@ -103,19 +103,19 @@ const { Web3 } = require('web3'); // web3.js has native ESM builds and (`import
const fs = require('fs');
const path = require('path');
-// Set up a connection to the Ethereum network
+// Set up a connection to the Zond network
const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:7545'));
-web3.eth.Contract.handleRevert = true;
+web3.zond.Contract.handleRevert = true;
async function interact() {
//fetch all the available accounts
- const accounts = await web3.eth.getAccounts();
+ const accounts = await web3.zond.getAccounts();
console.log(accounts);
let balance1, balance2;
//The initial balances of the accounts should be 100 Eth (10^18 wei)
- balance1 = await web3.eth.getBalance(accounts[0]);
- balance2 = await web3.eth.getBalance(accounts[1]);
+ balance1 = await web3.zond.getBalance(accounts[0]);
+ balance2 = await web3.zond.getBalance(accounts[1]);
console.log(balance1, balance2);
@@ -127,17 +127,17 @@ async function interact() {
};
//send the actual transaction
- const transactionHash = await web3.eth.sendTransaction(transaction);
+ const transactionHash = await web3.zond.sendTransaction(transaction);
console.log('transactionHash', transactionHash);
- balance1 = await web3.eth.getBalance(accounts[0]);
- balance2 = await web3.eth.getBalance(accounts[1]);
+ balance1 = await web3.zond.getBalance(accounts[0]);
+ balance2 = await web3.zond.getBalance(accounts[1]);
// see the updated balances
console.log(balance1, balance2);
// irrelevant with the actual transaction, just to know the gasPrice
- const gasPrice = await web3.eth.getGasPrice();
+ const gasPrice = await web3.zond.getGasPrice();
console.log(gasPrice);
}
@@ -160,16 +160,16 @@ If everything is working correctly, you should see something like the following:
```typescript
[
- '0xc68863f36C48ec168AD45A86c96347D520eac1Cf',
- '0x80c05939B307f9833d905A685575b45659d3EA70',
- '0xA260Cf742e03B48ea1A2b76b0d20aaCfe6F85E5E',
- '0xf457b8C0CBE41e2a85b6222A97b7b7bC6Df1C0c0',
- '0x32dF9a0B365b6265Fb21893c551b0766084DDE21',
- '0x8a6A2b8b00C1C8135F1B25DcE54f73Ee18bEF43d',
- '0xAFc526Be4a2656f7E02501bdf660AbbaA8fb3d7A',
- '0xc32618116370fF776Ecd18301c801e146A1746b3',
- '0xDCCD49880dCf9603835B0f522c31Fcf0579b46Ff',
- '0x036006084Cb62b7FAf40B979868c0c03672a59B5'
+ 'Zc68863f36C48ec168AD45A86c96347D520eac1Cf',
+ 'Z80c05939B307f9833d905A685575b45659d3EA70',
+ 'ZA260Cf742e03B48ea1A2b76b0d20aaCfe6F85E5E',
+ 'Zf457b8C0CBE41e2a85b6222A97b7b7bC6Df1C0c0',
+ 'Z32dF9a0B365b6265Fb21893c551b0766084DDE21',
+ 'Z8a6A2b8b00C1C8135F1B25DcE54f73Ee18bEF43d',
+ 'ZAFc526Be4a2656f7E02501bdf660AbbaA8fb3d7A',
+ 'Zc32618116370fF776Ecd18301c801e146A1746b3',
+ 'ZDCCD49880dCf9603835B0f522c31Fcf0579b46Ff',
+ 'Z036006084Cb62b7FAf40B979868c0c03672a59B5'
]
100000000000000000000n 100000000000000000000n
@@ -178,8 +178,8 @@ transactionHash {
transactionIndex: 0n,
blockHash: '0x5bc044ad949cfd32ea4cbb249f0292e7dded44c3b0f599236c6d20ddaa96cc06',
blockNumber: 1n,
- from: '0xc68863f36c48ec168ad45a86c96347d520eac1cf',
- to: '0x80c05939b307f9833d905a685575b45659d3ea70',
+ from: 'Zc68863f36c48ec168ad45a86c96347d520eac1cf',
+ to: 'Z80c05939b307f9833d905a685575b45659d3ea70',
gasUsed: 21000n,
cumulativeGasUsed: 21000n,
logs: [],
@@ -202,7 +202,7 @@ transactionHash {
In the next example, we are going to use `estimateGas` function to see the expected gas for contract deployment. (For more on contracts, please see the corresponding tutotial). Create a file named `estimate.ts` and fill it with the following code:
```typescript
-import Web3, { ETH_DATA_FORMAT, DEFAULT_RETURN_FORMAT } from 'web3';
+import Web3, { ZOND_DATA_FORMAT, DEFAULT_RETURN_FORMAT } from 'web3';
async function estimate() {
// abi of our contract
@@ -231,10 +231,10 @@ async function estimate() {
const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:7545'));
//get the available accounts
- const accounts = await web3.eth.getAccounts();
+ const accounts = await web3.zond.getAccounts();
let acc = await accounts[0];
- let contract = new web3.eth.Contract(abi, undefined);
+ let contract = new web3.zond.Contract(abi, undefined);
const deployment = contract.deploy({
data: '0x608060405234801561001057600080fd5b506040516101d93803806101d983398181016040528101906100329190610054565b806000819055505061009e565b60008151905061004e81610087565b92915050565b60006020828403121561006657600080fd5b60006100748482850161003f565b91505092915050565b6000819050919050565b6100908161007d565b811461009b57600080fd5b50565b61012c806100ad6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323fd0e401460375780636ffd773c146051575b600080fd5b603d6069565b6040516048919060bf565b60405180910390f35b6067600480360381019060639190608c565b606f565b005b60005481565b8060008190555050565b60008135905060868160e2565b92915050565b600060208284031215609d57600080fd5b600060a9848285016079565b91505092915050565b60b98160d8565b82525050565b600060208201905060d2600083018460b2565b92915050565b6000819050919050565b60e98160d8565b811460f357600080fd5b5056fea2646970667358221220d28cf161457f7936995800eb9896635a02a559a0561bff6a09a40bfb81cd056564736f6c63430008000033',
@@ -254,7 +254,7 @@ async function estimate() {
{
from: acc,
},
- ETH_DATA_FORMAT, // the returned data will be formatted as a hexstring
+ ZOND_DATA_FORMAT, // the returned data will be formatted as a hexstring
);
console.log(estimatedGas);
@@ -278,7 +278,7 @@ If everything is working correctly, you should see something like the following:
```
:::note
-📝 Note that numbers returned from web3.js are returned by default in the `BigInt` format. In this example we used `ETH_DATA_FORMAT` parameter, which, can be passed in most methods in web3.js in order to format the result in `hex`.
+📝 Note that numbers returned from web3.js are returned by default in the `BigInt` format. In this example we used `ZOND_DATA_FORMAT` parameter, which, can be passed in most methods in web3.js in order to format the result in `hex`.
:::
In the next example we are going to sign a transaction and use `sendSignedTransaction` to send the signed transaction. Create a file named `sendSigned.ts` and fill it with the following code:
@@ -292,7 +292,7 @@ const privateKey = '0x0fed6f64e01bc9fac9587b6e7245fd9d056c3c004ad546a17d3d029977
const value = web3.utils.toWei('1', 'ether');
async function sendSigned() {
- const accounts = await web3.eth.getAccounts();
+ const accounts = await web3.zond.getAccounts();
const fromAddress = accounts[0];
const toAddress = accounts[1];
// Create a new transaction object
@@ -301,15 +301,16 @@ async function sendSigned() {
to: toAddress,
value: value,
gas: 21000,
- gasPrice: web3.utils.toWei('10', 'gwei'),
- nonce: await web3.eth.getTransactionCount(fromAddress),
+ maxFeePerGas: web3.utils.toWei('10', 'gwei'),
+ maxPriorityFeePerGas: 30000000,
+ nonce: await web3.zond.getTransactionCount(fromAddress),
};
// Sign the transaction with the private key
- const signedTx = await web3.eth.accounts.signTransaction(tx, privateKey);
+ const signedTx = await web3.zond.accounts.signTransaction(tx, privateKey);
// Send the signed transaction to the network
- const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction);
+ const receipt = await web3.zond.sendSignedTransaction(signedTx.rawTransaction);
console.log('Transaction receipt:', receipt);
}
@@ -332,8 +333,8 @@ Transaction receipt: {
transactionIndex: 0n,
blockNumber: 1n,
blockHash: '0xab6678d76499b0ee383f182ab8f848ba27bd787e70e227524255c86b25224ed3',
- from: '0x66ce32a5200aac57b258c4eac26bc1493fefddea',
- to: '0x0afcfc43ac454348d8170c77b1f912b518b4ebe8',
+ from: 'Z66ce32a5200aac57b258c4eac26bc1493fefddea',
+ to: 'Z0afcfc43ac454348d8170c77b1f912b518b4ebe8',
cumulativeGasUsed: 21000n,
gasUsed: 21000n,
logs: [],
@@ -348,12 +349,12 @@ Transaction receipt: {
In this tutorial, we learned how to use different methods provied by the `web3-eth` package.
-With this knowledge, you can start experimenting with the Ethereum blockchain. Keep in mind that this is just the beginning, and there is a lot more to learn about Ethereum and web3.js. So keep exploring and building, and have fun!
+With this knowledge, you can start experimenting with the Zond blockchain. Keep in mind that this is just the beginning, and there is a lot more to learn about Zond and web3.js. So keep exploring and building, and have fun!
## Additional Resources
- [Official web3.js Documentation](https://docs.web3js.org/)
-- [Solidity Documentation](https://solidity.readthedocs.io/)
+- [Hyperion Documentation](https://solidity.readthedocs.io/)
- [Ganache](https://www.trufflesuite.com/ganache)
- [Truffle](https://trufflesuite.com/)
- [Remix IDE](https://remix.ethereum.org/)
@@ -361,15 +362,15 @@ With this knowledge, you can start experimenting with the Ethereum blockchain. K
## Tips and Best Practices
- Always test your smart contracts on a local network like Ganache before deploying them to the mainnet.
-- Use the latest version of web3.js and Solidity to take advantage of the latest features and security patches.
+- Use the latest version of web3.js and Hyperion to take advantage of the latest features and security patches.
- Keep your private keys secure and never share them with anyone.
-- Use the gas limit and gas price parameters carefully to avoid spending too much on transaction fees.
+- Use the gas limit and gas fee parameters carefully to avoid spending too much on transaction fees.
- Use the `estimateGas` function in web3.js to estimate the gas required for a transaction before sending it to the network.
- Use events to notify the client application about state changes in the smart contract.
-- Use a linter like Solhint to check for common Solidity coding errors.
+- Use a linter like Solhint to check for common Hyperion coding errors.
## Final Thoughts
-Web3.js version 4.x provides a powerful and easy-to-use interface for interacting with the Ethereum network and building decentralized applications. And it has been rewritten in TypeScript but for simplicity of this tutorial we interacted with it in JavaScript.
+Web3.js provides a powerful and easy-to-use interface for interacting with the Zond network and building decentralized applications. And it has been rewritten in TypeScript but for simplicity of this tutorial we interacted with it in JavaScript.
-The Ethereum ecosystem is constantly evolving, and there is always more to learn and discover. As you continue to develop your skills and knowledge, keep exploring and experimenting with new technologies and tools to build innovative and decentralized solutions.
+The Zond ecosystem is constantly evolving, and there is always more to learn and discover. As you continue to develop your skills and knowledge, keep exploring and experimenting with new technologies and tools to build innovative and decentralized solutions.
diff --git a/docs/docs/guides/events_subscriptions/index.md b/docs/docs/guides/events_subscriptions/index.md
index 7e1dee9d..5ea3a8a4 100644
--- a/docs/docs/guides/events_subscriptions/index.md
+++ b/docs/docs/guides/events_subscriptions/index.md
@@ -5,7 +5,7 @@ sidebar_label: 'Events Subscription'
# Events Subscription
-A standard Ethereum node like [Geth supports subscribing to specific events](https://geth.ethereum.org/docs/interacting-with-geth/rpc/pubsub#supported-subscriptions). Additionally, there are some Ethereum nodes that provide additional custom subscriptions. As you can find in [Supported Subscriptions](/guides/events_subscriptions/supported_subscriptions) guide, web3.js enables you to subscribe to the standard events out of the box. And it also provides you with the capability to subscribe to custom subscriptions as you can find in the [Custom Subscriptions](/guides/events_subscriptions/custom_subscriptions) guide.
+A standard Zond node like [Gzond supports subscribing to specific events](https://geth.ethereum.org/docs/interacting-with-geth/rpc/pubsub#supported-subscriptions). Additionally, there are some Zond nodes that provide additional custom subscriptions. As you can find in [Supported Subscriptions](/guides/events_subscriptions/supported_subscriptions) guide, web3.js enables you to subscribe to the standard events out of the box. And it also provides you with the capability to subscribe to custom subscriptions as you can find in the [Custom Subscriptions](/guides/events_subscriptions/custom_subscriptions) guide.
:::important
If you are the developer who provides custom subscriptions to users. We encourage you to develop a web3.js Plugin after you go through the [Custom Subscription](#custom-subscription) section below. You can find how to develop a plugin at [web3.js Plugin Developer Guide](/guides/web3_plugin_guide/plugin_authors)
diff --git a/docs/docs/guides/events_subscriptions/supported_subscriptions.md b/docs/docs/guides/events_subscriptions/supported_subscriptions.md
index 9e2df8c8..c0ffb719 100644
--- a/docs/docs/guides/events_subscriptions/supported_subscriptions.md
+++ b/docs/docs/guides/events_subscriptions/supported_subscriptions.md
@@ -5,11 +5,11 @@ sidebar_label: 'Supported Subscriptions'
# Supported Subscriptions
-web3.js supports the standard Ethereum subscriptions out of the box. And they are the ones registered inside [registeredSubscriptions](/api/web3-eth#registeredSubscriptions) object. Here are a list of them:
+web3.js supports the standard Zond subscriptions out of the box. And they are the ones registered inside [registeredSubscriptions](/api/web3-zond#registeredSubscriptions) object. Here are a list of them:
-- `logs`: implemented in the class [`LogsSubscription`](/api/web3-eth/class/LogsSubscription).
-- `newBlockHeaders`: implemented in the class [`NewHeadsSubscription`](/api/web3-eth/class/NewHeadsSubscription).
+- `logs`: implemented in the class [`LogsSubscription`](/api/web3-zond/class/LogsSubscription).
+- `newBlockHeaders`: implemented in the class [`NewHeadsSubscription`](/api/web3-zond/class/NewHeadsSubscription).
- `newHeads` same as `newBlockHeaders`.
-- `newPendingTransactions`: implemented in the class [`NewPendingTransactionsSubscription`](/api/web3-eth/class/NewPendingTransactionsSubscription).
+- `newPendingTransactions`: implemented in the class [`NewPendingTransactionsSubscription`](/api/web3-zond/class/NewPendingTransactionsSubscription).
- `pendingTransactions`: same as `newPendingTransactions`.
-- `syncing`: implemented in the class [`SyncingSubscription`](/api/web3-eth/class/SyncingSubscription)
+- `syncing`: implemented in the class [`SyncingSubscription`](/api/web3-zond/class/SyncingSubscription)
diff --git a/docs/docs/guides/getting_started.md b/docs/docs/guides/getting_started.md
index 04ca45be..af8b3f82 100644
--- a/docs/docs/guides/getting_started.md
+++ b/docs/docs/guides/getting_started.md
@@ -8,5 +8,5 @@ sidebar_label: Getting Started
Welcome to Web3.js Documentation.
-web3.js is a collection of libraries that allow you to interact with a local or remote ethereum node using HTTP, IPC or WebSocket.
+web3.js is a collection of libraries that allow you to interact with a local or remote zond node using HTTP, IPC or WebSocket.
The following documentation will guide you through different use cases of Web3.js, upgrading from older versions as well as providing an API reference documentation with examples.
diff --git a/docs/docs/guides/smart_contracts/deploying_and_interacting_with_smart_contracts.md b/docs/docs/guides/smart_contracts/deploying_and_interacting_with_smart_contracts.md
index 47a8725a..0ebdcd30 100644
--- a/docs/docs/guides/smart_contracts/deploying_and_interacting_with_smart_contracts.md
+++ b/docs/docs/guides/smart_contracts/deploying_and_interacting_with_smart_contracts.md
@@ -7,7 +7,7 @@ sidebar_label: 'Deploying and Interacting with Smart Contracts'
## Introduction
-In this tutorial, we will walk through the process of deploying a smart contract to the Ethereum network, generating the ABI, and interacting with the smart contract using web3.js version 4.x. We will cover the basic concepts of Ethereum, Solidity, and web3.js and provide step-by-step instructions for deploying a simple smart contract to a test network using Ganache.
+In this tutorial, we will walk through the process of deploying a smart contract to the Zond network, generating the ABI, and interacting with the smart contract using web3.js. We will cover the basic concepts of Zond, Hyperion, and web3.js and provide step-by-step instructions for deploying a simple smart contract to a test network using Ganache.
## Overview
@@ -15,8 +15,8 @@ Here is a high-level overview of the steps we will be taking in this tutorial:
1. Setting up the Environment
2. Create a new project directory and initialize a new Node.js project.
-3. Write the Solidity code for the smart contract and save it to a file.
-4. Compile the Solidity code using the Solidity Compiler and get its ABI and Bytecode.
+3. Write the Hyperion code for the smart contract and save it to a file.
+4. Compile the Hyperion code using the Hyperion Compiler and get its ABI and Bytecode.
5. Set up the web3.js library and connect to the Ganache network.
6. Deploy the smart contract to the Ganache network using web3.js.
7. Interact with the smart contract using web3.js.
@@ -25,7 +25,7 @@ Here is a high-level overview of the steps we will be taking in this tutorial:
Before we start writing and deploying our contract, we need to set up our environment. For that, we need to install the following:
-1. Ganache - Ganache is a personal blockchain for Ethereum development that allows you to see how your smart contracts function in real-world scenarios. You can download it from http://truffleframework.com/ganache
+1. Ganache - Ganache is a personal blockchain for Zond development that allows you to see how your smart contracts function in real-world scenarios. You can download it from http://truffleframework.com/ganache
2. Node.js - Node.js is a JavaScript runtime environment that allows you to run JavaScript on the server-side. You can download it from https://nodejs.org/en/download/
3. npm - Node Package Manager is used to publish and install packages to and from the public npm registry or a private npm registry. Here is how to install it https://docs.npmjs.com/downloading-and-installing-node-js-and-npm. (Alternatively, you can use yarn instead of npm https://classic.yarnpkg.com/lang/en/docs/getting-started/)
@@ -46,15 +46,16 @@ npm init -y
This will create a new `package.json` file in your project directory.
-## Step 3: Write the Solidity code for the smart contract and save it to a file
+## Step 3: Write the Hyperion code for the smart contract and save it to a file
-In this step, we will write the Solidity code for the smart contract and save it as a file in our project directory.
+In this step, we will write the Hyperion code for the smart contract and save it as a file in our project directory.
-Create a new file called `MyContract.sol` in your project directory and add the following Solidity code to it:
+Create a new file called `MyContract.hyp` in your project directory and add the following Hyperion code to it:
-```solidity
+```hyperion
// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.0;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.0;
contract MyContract {
uint256 public myNumber;
@@ -72,45 +73,47 @@ contract MyContract {
This simple smart contract defines a `myNumber` variable that can be set by calling the `setMyNumber` function.
-## Step 4: Compile the Solidity code using the Solidity Compiler and get its ABI and Bytecode.
+## Step 4: Compile the Hyperion code using the Hyperion Compiler and get its ABI and Bytecode.
+
+TODO(now.youtrack.cloud/issue/web3js-12)
:::tip
-📝 Alternatively, you can use something like `npm i solc && npx solcjs MyContract.sol --bin --abi`. And then rename the files to `MyContractBytecode.bin` and `MyContractAbi.json`, in order to keep them the same as they will be used later in this tutorial.
-More on solc-js is at https://github.com/ethereum/solc-js
+📝 Alternatively, you can use something like `npm i hypc && npx hypcjs MyContract.hyp --bin --abi`. And then rename the files to `MyContractBytecode.bin` and `MyContractAbi.json`, in order to keep them the same as they will be used later in this tutorial.
+More on hypc-js is at https://github.com/ethereum/solc-js
:::
-In this step, we will use the Solidity Compiler (solc) to compile the Solidity code and generate the compiled code.
+In this step, we will use the Hyperion Compiler (hypc) to compile the Hyperion code and generate the compiled code.
-First, install the `solc` package using npm.
+First, install the `hypc` package using npm.
:::note
-📝 Specify a version for the compiler that is compatible with the version you specified in the .sol file above (with `pragma solidity ^0.8.0;`):
+📝 Specify a version for the compiler that is compatible with the version you specified in the .hyp file above (with `pragma hyperion ^0.8.0;`):
:::
```
-npm install solc@0.8.0
+npm install hypc@0.8.0
```
Next, create a new file called `compile.js` in your project directory and add the following code to it:
```javascript
// This code will compile smart contract and generate its ABI and bytecode
-// Alternatively, you can use something like `npm i solc && npx solcjs MyContract.sol --bin --abi`
+// Alternatively, you can use something like `npm i hypc && npx hypcjs MyContract.hyp --bin --abi`
-import solc from 'solc';
+import hypc from 'hypc';
import path from 'path';
import fs from 'fs';
-const fileName = 'MyContract.sol';
+const fileName = 'MyContract.hyp';
const contractName = 'MyContract';
-// Read the Solidity source code from the file system
+// Read the Hyperion source code from the file system
const contractPath = path.join(__dirname, fileName);
const sourceCode = fs.readFileSync(contractPath, 'utf8');
-// solc compiler config
+// hypc compiler config
const input = {
- language: 'Solidity',
+ language: 'Hyperion',
sources: {
[fileName]: {
content: sourceCode,
@@ -125,11 +128,11 @@ const input = {
},
};
-// Compile the Solidity code using solc
-const compiledCode = JSON.parse(solc.compile(JSON.stringify(input)));
+// Compile the Hyperion code using hypc
+const compiledCode = JSON.parse(hypc.compile(JSON.stringify(input)));
// Get the bytecode from the compiled contract
-const bytecode = compiledCode.contracts[fileName][contractName].evm.bytecode.object;
+const bytecode = compiledCode.contracts[fileName][contractName].zvm.bytecode.object;
// Write the bytecode to a new file
const bytecodePath = path.join(__dirname, 'MyContractBytecode.bin');
@@ -149,9 +152,9 @@ fs.writeFileSync(abiPath, JSON.stringify(abi, null, '\t'));
console.log('Contract ABI:\n', abi);
```
-This code reads the Solidity code from the `MyContract.sol` file, compiles it using `solc`, and generates the ABI and bytecode for the smart contract. It then writes the bytecode to a new file called `MyContractBytecode.bin` and the contract ABI to `MyContractAbi.json`. And it logs them to the console.
+This code reads the Hyperion code from the `MyContract.hyp` file, compiles it using `hypc`, and generates the ABI and bytecode for the smart contract. It then writes the bytecode to a new file called `MyContractBytecode.bin` and the contract ABI to `MyContractAbi.json`. And it logs them to the console.
-Run the following command to compile the Solidity code:
+Run the following command to compile the Hyperion code:
```
node compile.js
@@ -171,10 +174,10 @@ In this step, we will set up the web3.js library and connect to the Ganache netw
First, install the `web3` package using npm:
```
-npm install web3@4.0.1-rc.1
+npm install @theqrl/web3@4.0.1-rc.1
```
-Note that we are installing the latest version of 4.x, at the time of this tutorial writing. You can check the latest version at https://www.npmjs.com/package/web3?activeTab=versions
+Note that we are installing the latest version of 4.x, at the time of this tutorial writing. You can check the latest version at https://www.npmjs.com/package/@theqrl/web3?activeTab=versions
Next, create a new file called `index.js` in your project directory and add the following code to it:
@@ -185,7 +188,7 @@ const { Web3 } = require('web3'); // web3.js has native ESM builds and (`import
const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:7545'));
// Log the current block number to the console
-web3.eth
+web3.zond
.getBlockNumber()
.then(result => {
console.log('Current block number: ' + result);
@@ -213,14 +216,14 @@ Create a file named `deploy.js` and fill it with the following code:
```javascript
// For simplicity we use `web3` package here. However, if you are concerned with the size,
-// you may import individual packages like 'web3-eth', 'web3-eth-contract' and 'web3-providers-http'.
+// you may import individual packages like 'web3-zond', 'web3-zond-contract' and 'web3-providers-http'.
const { Web3 } = require('web3'); // web3.js has native ESM builds and (`import Web3 from 'web3'`)
const fs = require('fs');
const path = require('path');
-// Set up a connection to the Ethereum network
+// Set up a connection to the Zond network
const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:7545'));
-web3.eth.Contract.handleRevert = true;
+web3.zond.Contract.handleRevert = true;
// Read the bytecode from the file system
const bytecodePath = path.join(__dirname, 'MyContractBytecode.bin');
@@ -228,10 +231,10 @@ const bytecode = fs.readFileSync(bytecodePath, 'utf8');
// Create a new contract object using the ABI and bytecode
const abi = require('./MyContractAbi.json');
-const MyContract = new web3.eth.Contract(abi);
+const MyContract = new web3.zond.Contract(abi);
async function deploy() {
- const providersAccounts = await web3.eth.getAccounts();
+ const providersAccounts = await web3.zond.getAccounts();
const defaultAccount = providersAccounts[0];
console.log('deployer account:', defaultAccount);
@@ -251,7 +254,8 @@ async function deploy() {
const tx = await myContract.send({
from: defaultAccount,
gas,
- gasPrice: 10000000000,
+ maxFeePerGas: 10000000000,
+ maxPriorityFeePerGas: 30000000,
});
console.log('Contract deployed at address: ' + tx.options.address);
@@ -277,9 +281,9 @@ node deploy.js
If everything is working correctly, you should see something like the following:
```
-Deployer account: 0xdd5F9948B88608a1458e3a6703b0B2055AC3fF1b
+Deployer account: Zdd5F9948B88608a1458e3a6703b0B2055AC3fF1b
Estimated gas: 142748n
-Contract deployed at address: 0x16447837D4A572d0a8b419201bdcD91E6e428Df1
+Contract deployed at address: Z16447837D4A572d0a8b419201bdcD91E6e428Df1
```
## Step 7: Interact with the smart contract using web3.js
@@ -293,9 +297,9 @@ const { Web3 } = require('web3'); // web3.js has native ESM builds and (`import
const fs = require('fs');
const path = require('path');
-// Set up a connection to the Ethereum network
+// Set up a connection to the Zond network
const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:7545'));
-web3.eth.Contract.handleRevert = true;
+web3.zond.Contract.handleRevert = true;
// Read the contract address from the file system
const deployedAddressPath = path.join(__dirname, 'MyContractAddress.bin');
@@ -307,10 +311,10 @@ const bytecode = fs.readFileSync(bytecodePath, 'utf8');
// Create a new contract object using the ABI and bytecode
const abi = require('./MyContractAbi.json');
-const MyContract = new web3.eth.Contract(abi, deployedAddress);
+const MyContract = new web3.zond.Contract(abi, deployedAddress);
async function interact() {
- const providersAccounts = await web3.eth.getAccounts();
+ const providersAccounts = await web3.zond.getAccounts();
const defaultAccount = providersAccounts[0];
try {
@@ -322,7 +326,8 @@ async function interact() {
const receipt = await MyContract.methods.setMyNumber(myNumber + 1n).send({
from: defaultAccount,
gas: 1000000,
- gasPrice: 10000000000,
+ maxFeePerGas: 10000000000,
+ maxPriorityFeePerGas: 30000000,
});
console.log('Transaction Hash: ' + receipt.transactionHash);
@@ -357,7 +362,7 @@ my number updated value: 2
If you are running into errors when executing contract methods such as `myContract.methods.call` or `myContract.deploy.estimateGas()` you might be seeing a contract execution revert error such as: `value transfer did not complete from a contract execution reverted`
-or response error: ResponseError: Returned error: unknown field `input`, expected one of `from`, `to`, `gasPrice`, `maxFeePerGas`, `maxPriorityFeePerGas`, `gas`, `value`, `data`, `nonce`, `chainId`, `accessList`, `type`.
+or response error: ResponseError: Returned error: unknown field `input`, expected one of `from`, `to`, `maxFeePerGas`, `maxPriorityFeePerGas`, `gas`, `value`, `data`, `nonce`, `chainId`, `accessList`, `type`.
This could be due to the node you are connected to and is expecting the `data` property to be populated in your contract instead of `input`, for example this issue will happen with an Anvil node from Foundry. Web3 version >4.0.3 will always populate `input` when sending transactions.
To fix this, configure the `contractDataInputFill` in `Web3Config` or when initializing your contract to specify `data` in `dataInputFill` to be filled.
@@ -386,22 +391,22 @@ const res = await contract.methods.greet().call();
const contract = new Contract(
erc721Abi,
- '0x1230B93ffd14F2F022039675fA3fc3A46eE4C701',
+ 'Z1230B93ffd14F2F022039675fA3fc3A46eE4C701',
{ gas: '123', dataInputFill: "data" }, // methods will now be populating `data` field
);
// `data` will now be populated instead of `input`
-contract.methods.approve('0x00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
+contract.methods.approve('Z00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
// Another way to do this is to set `data` when calling methods
const contract = new Contract(
erc721Abi,
- '0x1230B93ffd14F2F022039675fA3fc3A46eE4C701',
+ 'Z1230B93ffd14F2F022039675fA3fc3A46eE4C701',
);
-contract.methods.approve('0x00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(
- {data: contract.methods.approve('0x00000000219ab540356cBB839Cbe05303d7705Fa', 1).encodeABI()}
+contract.methods.approve('Z00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(
+ {data: contract.methods.approve('Z00000000219ab540356cBB839Cbe05303d7705Fa', 1).encodeABI()}
)
@@ -409,14 +414,14 @@ contract.methods.approve('0x00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(
## Conclusion
-In this tutorial, we learned how to generate the ABI and the Bytecode of a smart contract, deploy it to the Ethereum network, and interact with it using web3.js version 4.x.
+In this tutorial, we learned how to generate the ABI and the Bytecode of a smart contract, deploy it to the Zond network, and interact with it using web3.js.
-With this knowledge, you can start experimenting with writing smart contract in order for building your decentralized applications (dApps) on the Ethereum network using web3.js. Keep in mind that this is just the beginning, and there is a lot more to learn about Ethereum and web3.js. So keep exploring and building, and have fun!
+With this knowledge, you can start experimenting with writing smart contract in order for building your decentralized applications (dApps) on the Zond network using web3.js. Keep in mind that this is just the beginning, and there is a lot more to learn about Zond and web3.js. So keep exploring and building, and have fun!
## Additional Resources
- [Official web3.js Documentation](https://docs.web3js.org/)
-- [Solidity Documentation](https://solidity.readthedocs.io/)
+- [Hyperion Documentation](https://solidity.readthedocs.io/)
- [Ganache](https://www.trufflesuite.com/ganache)
- [Truffle](https://trufflesuite.com/)
- [Remix IDE](https://remix.ethereum.org/)
@@ -424,15 +429,15 @@ With this knowledge, you can start experimenting with writing smart contract in
## Tips and Best Practices
- Always test your smart contracts on a local network like Ganache before deploying them to the mainnet.
-- Use the latest version of web3.js and Solidity to take advantage of the latest features and security patches.
+- Use the latest version of web3.js and Hyperion to take advantage of the latest features and security patches.
- Keep your private keys secure and never share them with anyone.
-- Use the gas limit and gas price parameters carefully to avoid spending too much on transaction fees.
+- Use the gas limit and gas fee parameters carefully to avoid spending too much on transaction fees.
- Use the `estimateGas` function in web3.js to estimate the gas required for a transaction before sending it to the network.
- Use events to notify the client application about state changes in the smart contract.
-- Use a linter like Solhint to check for common Solidity coding errors.
+- Use a linter like Solhint to check for common Hyperion coding errors.
## Final Thoughts
-Web3.js version 4.x provides a powerful and easy-to-use interface for interacting with the Ethereum network and building decentralized applications. And it has been rewritten in TypeScript but for simplicity of this tutorial we interacted with it in JavaScript.
+Web3.js provides a powerful and easy-to-use interface for interacting with the Zond network and building decentralized applications. And it has been rewritten in TypeScript but for simplicity of this tutorial we interacted with it in JavaScript.
-The Ethereum ecosystem is constantly evolving, and there is always more to learn and discover. As you continue to develop your skills and knowledge, keep exploring and experimenting with new technologies and tools to build innovative and decentralized solutions.
+The Zond ecosystem is constantly evolving, and there is always more to learn and discover. As you continue to develop your skills and knowledge, keep exploring and experimenting with new technologies and tools to build innovative and decentralized solutions.
diff --git a/docs/docs/guides/smart_contracts/infer_contract_types_guide/index.md b/docs/docs/guides/smart_contracts/infer_contract_types_guide/index.md
index c6051b7b..d01993ec 100644
--- a/docs/docs/guides/smart_contracts/infer_contract_types_guide/index.md
+++ b/docs/docs/guides/smart_contracts/infer_contract_types_guide/index.md
@@ -4,9 +4,9 @@ sidebar_label: 'Infer Contract Types from JSON Artifact'
# Infer Contract Types from JSON Artifact
-Web3.js is a popular library used for interacting with EVM blockchains. One of its key features is the ability to invoke EVM smart contracts deployed on the blockchain. In this blog post, we will show how to interact with the smart contract in typescript, with a special focus on how to infer types from JSON artifact files.
+Web3.js is a popular library used for interacting with ZVM blockchains. One of its key features is the ability to invoke ZVM smart contracts deployed on the blockchain. In this blog post, we will show how to interact with the smart contract in typescript, with a special focus on how to infer types from JSON artifact files.
-Before we dive into the problem, let's take a quick look at the problem. Web3.js provides a simple and convenient way to interact with Solidity contracts. To use Web3.js to interact with a Solidity contract, you need to know the contract's address and the ABI (Application Binary Interface) of the contract. The ABI is JSON data that contains the definition of the functions in the contract, including their, name, input parameters and return values.
+Before we dive into the problem, let's take a quick look at the problem. Web3.js provides a simple and convenient way to interact with Hyperion contracts. To use Web3.js to interact with a Hyperion contract, you need to know the contract's address and the ABI (Application Binary Interface) of the contract. The ABI is JSON data that contains the definition of the functions in the contract, including their, name, input parameters and return values.
Web3.js uses ABI type to dynamically load available methods and events but Typescript currently [doesn't support loading JSON as const](https://github.com/microsoft/TypeScript/issues/32063). If you go to the [Playground Link](https://www.typescriptlang.org/play?#code/MYewdgzgLgBAhgIwJYwLwwNoCga5gbxz1wCIkwAHAVyghIC5MjjdCWWywoBTAJzDgAbACoBPCtwYwS0XuQDmJADTN20gQFtJjEpu4B9ZavYko47dNkKSxvAF8VagreKce-IWIlSZUOWEVHJ3U4LR8IUQ0EEEFDIKdTc3C-axcYO1sAXXi8XzgeAFkaRCRBJDMfMHAKOFFEQUkc0jNvHVBIPypgKBBeG2IHVTYOOCqwSJAqOkYAMyEIbibpcmpaKWwnYYTyABNuAA9uHalOxbTScncBESSdOB2d3m4IOiXXPR8QAHcwPiNg6QtCwke6PZ50NKDTbnZZgPaHY6MU5vXKXPjXLzA0FPF7-YK6ULAiASOF-FHNW7SbHg-pqKFqLZqTjwo5SOaCBbk2FXTyUkhUS4AJgArAA2PEJD46ABuQiojRhiVa0gFXBF4shWSWBLCOgAghQKLwQLLBBLckCfNxpdwuLTcPTWLYQWMJlM2fMziYVjRpkxoQDmQdWUjePKuW50bzlSCHjjXoqpdIZsaNOaTJa7nGaZCUYzvaSEScw178WiPDcY9TcRGk6YQOmOJmqdncbm0vmOLtg4iYOzOYryxi+aqoOrG+9CT5TfKJxaR0KxfaWBl2NlnXXhLxRhAZmTnc2SNbbVBl47nAXVn6NgzB1wo5Wsa2E4G699fn0I4fqxCnOfiJ2rhDtGT5gjWiZTjoxK2nsn6Kt+z7LgMWobpBVKCII3yjMAComJMUBXusHZ3jyj4+KO461mhJBzhSMYUUumprtq0D5NwRRQCUZQVDKSDcF8jZKsCMxUGA3RIOAZ45J2nCEYwN7sIBqL3hWmI+D+tEhLqlgkrBmlCepiHtgGZYqcO9GLuKVHaSCGiTHaX4LmqjF-ihJh1nAhrGjagn4XJ-q3oGwFkTo0QxPpdb6YeYVmkxLDriYrGFMUyDcaIlTVLU9S4U2fIiWJUASWAUlDM6PprPJxFBWZIGGWBL74h5wCgKJp6OVWRmucxqE2QgQjYdwADyMy+TQ-kKSwSkXDVIUqpZEXUVFTlji5dJuRwSXsSlpTlOlvH8YJh75eJkmqOeMnldeCUcHWezAEgGjzKNBG+kRJnbDNak6KOAAcC02UtFlcH9cXENdribRxXG7dOfECdqR2iSdxVndJZWUK9lXvUywVfS29X-USun7oGCEE8ZgWmaReP8vN1lElQCB+HA3RHAAanKOUJIeDEal18Xard3DAE8cALHqGFYWJXO5H5mMBYpJEPjTMWEz4gPAqroN4ODuSQ9taUZZQWUIA0h15UjhWnQMaOXvLE0AUrql8hp9PhMTcGky7nV0nmTvmcCvNq1mew7Bzgizu1gfzdruC66QdbkCL3Bi9wEuYV8A3PeNVVU8rfKq27Ogaz4Wv82DLGcclnGpTDOhjDUdSmzLdHCZbRUlY7dsVZg8dacCHzanLPcO3gU3cvnMZWAEwfSCXUEpDPscwH3eTV9DPHSNKcPmzGx1WyjNuld3V2C9RERROFQ9jfbucfdTfLT4EEEA1HyT+Ioy+r-rNc7ZvJDbwOgjC2BUO6o2Pl2DGI9V51h6JxQQABlKghpBDpWvi9Eed8cafWWpRF+wJ55zWcnzNa3VEpVy2r-Q2+14YHhAcjTuY90Y52xgWB+HUCZF0BA2N+Id4xIXsH7aq7Do7ENnrZeybV4K4NWuwVcAserAmZpAPcnsODD2vFgthk9NYgCvvg9WvDpBl1IQo8hbEoa13-g3E2ZtgF73btbQRECgJQM0awyBIi6r8K4SQFMIA0xGNjOTP8Qi87Ow4T4gxOgeiEOCfwimithE6PInTaJVI7KtTiUHL+Z8bLKN3HwAAYqmbOt8PGuK8aFPRZpfFxJMXI9aEMKGWL-ntdQmUm52LoQ40BTiHREEyPACAMB2jQAANxAA) and choose ".d.ts" you can check type difference with and without `as const`.
@@ -17,9 +17,9 @@ import ERC20 from './node_modules/@openzeppelin/contracts/build/contracts/ERC20.
(async function () {
const web3 = new Web3('rpc url');
- const contract = new Contract(ERC20.abi, '0x7af963cF6D228E564e2A0aA0DdBF06210B38615D', web3);
+ const contract = new Contract(ERC20.abi, 'Z7af963cF6D228E564e2A0aA0DdBF06210B38615D', web3);
- const holder = '0xa8F6eB216e26C1F7d924A801E46eaE0CE8ed1A0A';
+ const holder = 'Za8F6eB216e26C1F7d924A801E46eaE0CE8ed1A0A';
//Error because Contract doesn't know what methods exists
const balance = await contract.methods.balanceOf(holder).call();
@@ -40,9 +40,9 @@ const ERC20 = [
(async function() {
const web3 = new Web3("rpc url")
- const contract = new Contract(ERC20, "0x7af963cF6D228E564e2A0aA0DdBF06210B38615D", web3)
+ const contract = new Contract(ERC20, "Z7af963cF6D228E564e2A0aA0DdBF06210B38615D", web3)
- const holder = "0xa8F6eB216e26C1F7d924A801E46eaE0CE8ed1A0A"
+ const holder = "Za8F6eB216e26C1F7d924A801E46eaE0CE8ed1A0A"
//Works now
const balance = await contract.methods.balanceOf(holder).call()
@@ -108,11 +108,11 @@ import ERC20 from './artifacts/ERC20';
const contract = new Contract(
ERC20.abi as ContractAbi,
- '0x7af963cF6D228E564e2A0aA0DdBF06210B38615D',
+ 'Z7af963cF6D228E564e2A0aA0DdBF06210B38615D',
web3,
);
- const holder = '0xa8F6eB216e26C1F7d924A801E46eaE0CE8ed1A0A';
+ const holder = 'Za8F6eB216e26C1F7d924A801E46eaE0CE8ed1A0A';
const balance = await contract.methods.balanceOf(holder).call();
const ticker = await contract.methods.symbol().call();
diff --git a/docs/docs/guides/web3_plugin_guide/plugin_authors.md b/docs/docs/guides/web3_plugin_guide/plugin_authors.md
index 4c15d3a0..794effc9 100644
--- a/docs/docs/guides/web3_plugin_guide/plugin_authors.md
+++ b/docs/docs/guides/web3_plugin_guide/plugin_authors.md
@@ -46,7 +46,7 @@ export class CustomRpcMethodsPlugin extends Web3PluginBase { ... }
### Extending `Web3EthPluginBase`
-In addition to `Web3PluginBase`, you can choose to extend `Web3EthPluginBase` which will provide the [Ethereum JSON RPC API interface](/api/web3-types#EthExecutionAPI), which packages such as `Web3Zond` use, as a generic to your plugin's `requestManager`, giving it type support for the [Ethereum JSON RPC spec](https://ethereum.github.io/execution-apis/api-documentation/). This would be the recommended approach if your plugin makes Ethereum JSON RPC calls directly to a provider using web3's provided `requestManager`.
+In addition to `Web3PluginBase`, you can choose to extend `Web3EthPluginBase` which will provide the [Zond JSON RPC API interface](/api/web3-types#EthExecutionAPI), which packages such as `Web3Zond` use, as a generic to your plugin's `requestManager`, giving it type support for the [Zond JSON RPC spec](https://ethereum.github.io/execution-apis/api-documentation/). This would be the recommended approach if your plugin makes Zond JSON RPC calls directly to a provider using web3's provided `requestManager`.
```typescript
import { Web3EthPluginBase } from 'web3';
@@ -89,7 +89,7 @@ await web3Context.customRpcMethods.someMethod();
### Using the Inherited `Web3Context`
-Below is an example of `CustomRpcMethodsPlugin` making use of `this.requestManager` which will have access to an Ethereum provider if one was configured by the user. In the event that no `provider` was set by the user, the below code will throw a [ProviderError](/api/web3-errors/class/ProviderError) if `customRpcMethod` was to be called:
+Below is an example of `CustomRpcMethodsPlugin` making use of `this.requestManager` which will have access to an Zond provider if one was configured by the user. In the event that no `provider` was set by the user, the below code will throw a [ProviderError](/api/web3-errors/class/ProviderError) if `customRpcMethod` was to be called:
```typescript
import { Web3PluginBase } from 'web3';
@@ -106,7 +106,7 @@ export class CustomRpcMethodsPlugin extends Web3PluginBase {
}
```
-Below depicts a plugin user's code that does not configure an Ethereum provider, resulting in a thrown [ProviderError](/api/web3-errors/class/ProviderError) when calling `customRpcMethod`:
+Below depicts a plugin user's code that does not configure an Zond provider, resulting in a thrown [ProviderError](/api/web3-errors/class/ProviderError) when calling `customRpcMethod`:
```typescript
// registering_a_plugin.ts
@@ -155,7 +155,7 @@ export class CustomRpcMethodsPlugin extends Web3PluginBase {
### Overriding `Web3Context`'s `.link` Method
-There currently exists [an issue](https://github.com/web3/web3.js/issues/5492) with certain web3.js packages not correctly linking their `Web3Context` with the context of the class the user has registered the plugin with. As mentioned in the issue, this can result in a bug where a plugin instantiates an instance of `Contract` (from `web3-eth-contract`) and attempts to call a method on the `Contract` instance (which uses the `requestManager` to make a call to the Ethereum provider), resulting in a [ProviderError](/api/web3-errors/class/ProviderError) even though the plugin user has set a provider and it should be available to the plugin.
+There currently exists [an issue](https://github.com/web3/web3.js/issues/5492) with certain web3.js packages not correctly linking their `Web3Context` with the context of the class the user has registered the plugin with. As mentioned in the issue, this can result in a bug where a plugin instantiates an instance of `Contract` (from `web3-zond-contract`) and attempts to call a method on the `Contract` instance (which uses the `requestManager` to make a call to the Zond provider), resulting in a [ProviderError](/api/web3-errors/class/ProviderError) even though the plugin user has set a provider and it should be available to the plugin.
A workaround for this issue is available, below is an example of it:
@@ -263,7 +263,7 @@ But, the user who does not call `.registerPlugin`, before accessing your plugin,
:::
-2. The `registerPlugin` method exists on the `Web3Context` class, so any class that `extends Web3Context` has the ability to add your plugin's additional functionality to its interface. So, by augmenting `Web3Context` to include your plugin's interface, you're essentially providing a blanket augmentation that adds your plugin's interface to **all** Web3 modules that extend `Web3Context` (i.e. `web3`, `web3-eth`, `web3-eth-contract`, etc.).
+2. The `registerPlugin` method exists on the `Web3Context` class, so any class that `extends Web3Context` has the ability to add your plugin's additional functionality to its interface. So, by augmenting `Web3Context` to include your plugin's interface, you're essentially providing a blanket augmentation that adds your plugin's interface to **all** Web3 modules that extend `Web3Context` (i.e. `web3`, `web3-zond`, `web3-zond-contract`, etc.).
3. The value of the `pluginNamespace`, that we used `customRpcMethods` for it in our sample code, **MUST** have the exact same name at 2 places: The first place is in the augmentation. And the second is the value of the public `pluginNamespace` inside your plugin class.
diff --git a/docs/docs/guides/web3_providers_guide/examples.md b/docs/docs/guides/web3_providers_guide/examples.md
index 52d23ea4..6c054b8c 100644
--- a/docs/docs/guides/web3_providers_guide/examples.md
+++ b/docs/docs/guides/web3_providers_guide/examples.md
@@ -6,11 +6,11 @@ sidebar_label: Examples
## Prerequisites
-Before we get started, make sure you have a basic understanding of JavaScript and Ethereum. Additionally, we need to set up our environment by installing the following:
+Before we get started, make sure you have a basic understanding of JavaScript and Zond. Additionally, we need to set up our environment by installing the following:
1. **Ganache**
- Ganache is a personal blockchain for Ethereum development that allows you to test how your smart contracts function in real-world scenarios. You can download it from [http://truffleframework.com/ganache](http://truffleframework.com/ganache).
+ Ganache is a personal blockchain for Zond development that allows you to test how your smart contracts function in real-world scenarios. You can download it from [http://truffleframework.com/ganache](http://truffleframework.com/ganache).
2. **Node.js**
@@ -22,9 +22,9 @@ Before we get started, make sure you have a basic understanding of JavaScript an
Alternatively, you can use **yarn** instead of **npm** by following the instructions here: [https://classic.yarnpkg.com/lang/en/docs/getting-started/](https://classic.yarnpkg.com/lang/en/docs/getting-started/).
-4. **Geth** (Optional, used only at the IPC provider example)
+4. **Gzond** (Optional, used only at the IPC provider example)
- Geth (go-ethereum) is an Ethereum execution client meaning it handles transactions, deployment and execution of smart contracts and contains an embedded computer known as the Ethereum Virtual Machine. You can install it by following the instructions here: [https://geth.ethereum.org/docs/getting-started/installing-geth](https://geth.ethereum.org/docs/getting-started/installing-geth)
+ Gzond (go-zond) is a Zond execution client meaning it handles transactions, deployment and execution of smart contracts and contains an embedded computer known as the Zond Virtual Machine. You can install it by following the instructions here: [https://geth.ethereum.org/docs/getting-started/installing-geth](https://geth.ethereum.org/docs/getting-started/installing-geth)
## Types of Providers
@@ -37,9 +37,9 @@ web3.js supports several types of providers, each with its own unique features o
### HTTP Provider
-The HTTP Provider allows you to connect to a publicly available Ethereum node, making it easy and straightforward to communicate with the Ethereum network from your web application.
+The HTTP Provider allows you to connect to a publicly available Zond node, making it easy and straightforward to communicate with the Zond network from your web application.
-To connect to the Ethereum network using the HTTP provider, follow these steps:
+To connect to the Zond network using the HTTP provider, follow these steps:
1. Open a command prompt or terminal window and navigate to the directory where you want to create the folder for this example.
2. Create a new folder and navigate to it:
@@ -62,7 +62,7 @@ To connect to the Ethereum network using the HTTP provider, follow these steps:
```js
const { Web3 } = require('web3');
- // Connect to the Ethereum network using the HTTP provider
+ // Connect to the Zond network using the HTTP provider
const ganacheUrl = 'http://localhost:7545';
const httpProvider = new Web3.providers.HttpProvider(ganacheUrl);
const web3 = new Web3(httpProvider);
@@ -70,15 +70,15 @@ To connect to the Ethereum network using the HTTP provider, follow these steps:
async function main() {
try {
// Get the current block number from the network
- const currentBlockNumber = await web3.eth.getBlockNumber();
+ const currentBlockNumber = await web3.zond.getBlockNumber();
console.log('Current block number:', currentBlockNumber);
// Get the list of accounts in the connected node (e.g., Ganache)
- const accounts = await web3.eth.getAccounts();
+ const accounts = await web3.zond.getAccounts();
// Send a transaction to the network and wait for the transaction to be mined.
// Note that sending a transaction with Ganache will cause it, in its default configuration, to min a new block.
- const transactionReceipt = await web3.eth.sendTransaction({
+ const transactionReceipt = await web3.zond.sendTransaction({
from: accounts[0],
to: accounts[1],
value: web3.utils.toWei('0.001', 'ether'),
@@ -86,7 +86,7 @@ To connect to the Ethereum network using the HTTP provider, follow these steps:
console.log('Transaction Receipt:', transactionReceipt);
// Get the updated block number
- const updatedBlockNumber = await web3.eth.getBlockNumber();
+ const updatedBlockNumber = await web3.zond.getBlockNumber();
console.log('Updated block number:', updatedBlockNumber);
} catch (error) {
console.error('An error occurred:', error);
@@ -98,7 +98,7 @@ To connect to the Ethereum network using the HTTP provider, follow these steps:
6. Ensure that Ganache is running as mentioned in the [Prerequisites](#prerequisites) section.
-7. In the command prompt or terminal window, type `node web3-http-provider.js` and press Enter. This will run your JavaScript file and connect to the Ethereum network using the HTTP provider and Ganache.
+7. In the command prompt or terminal window, type `node web3-http-provider.js` and press Enter. This will run your JavaScript file and connect to the Zond network using the HTTP provider and Ganache.
If everything is set up properly, you should see the current block number, the transaction receipt, and the updated block number printed in the console:
@@ -109,24 +109,24 @@ Transaction Receipt: {
transactionIndex: 0n,
blockNumber: 1n,
blockHash: '0x348a6706e7cce6547fae2c06b3e8eff1f58e4669aff88f0af7ca250ffdcdeef5',
- from: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
- to: '0x6f1df96865d09d21e8f3f9a7fba3b17a11c7c53c',
+ from: 'Z6e599da0bff7a6598ac1224e4985430bf16458a4',
+ to: 'Z6f1df96865d09d21e8f3f9a7fba3b17a11c7c53c',
cumulativeGasUsed: 21000n,
gasUsed: 21000n,
logs: [],
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
status: 1n,
effectiveGasPrice: 2000000000n,
- type: 0n
+ type: 2n
}
Updated block number: 1n
```
### WebSocket Provider
-WebSocket Provider allows us to communicate with the Ethereum node via WebSocket protocol, which is useful when we want continuous updates on our subscribed items. This provider is ideal for real-time applications that require constant updates from the Ethereum network.
+WebSocket Provider allows us to communicate with the Zond node via WebSocket protocol, which is useful when we want continuous updates on our subscribed items. This provider is ideal for real-time applications that require constant updates from the Zond network.
-Follow these steps to connect to the Ethereum network using WebSocket provider:
+Follow these steps to connect to the Zond network using WebSocket provider:
:::tip
The first 3 steps are the same as in the pervious section. So, you may skip them if you already executed the previous section.
@@ -153,7 +153,7 @@ The first 3 steps are the same as in the pervious section. So, you may skip them
```js
const { Web3 } = require('web3');
-// Connect to the Ethereum network using WebSocket provider
+// Connect to the Zond network using WebSocket provider
const ganacheUrl = 'ws://localhost:8545';
const wsProvider = new Web3.providers.WebsocketProvider(ganacheUrl);
const web3 = new Web3(wsProvider);
@@ -166,7 +166,7 @@ async function main() {
);
// Subscribe to new block headers
- const subscription = await web3.eth.subscribe('newBlockHeaders');
+ const subscription = await web3.zond.subscribe('newBlockHeaders');
subscription.on('data', async blockhead => {
console.log('New block header: ', blockhead);
@@ -180,9 +180,9 @@ async function main() {
);
// Get the list of accounts in the connected node which is in this case: Ganache.
- const accounts = await web3.eth.getAccounts();
+ const accounts = await web3.zond.getAccounts();
// Send a transaction to the network
- const transactionReceipt = await web3.eth.sendTransaction({
+ const transactionReceipt = await web3.zond.sendTransaction({
from: accounts[0],
to: accounts[1],
value: web3.utils.toWei('0.001', 'ether'),
@@ -206,9 +206,7 @@ If everything is set up properly, you should see the new block headers, transact
Do the provider supports subscription?: true
New block header: {
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
- miner: '0x0000000000000000000000000000000000000000',
- difficulty: '0',
- totalDifficulty: '0',
+ miner: 'Z0000000000000000000000000000000000000000',
extraData: '0x',
gasLimit: 6721975,
gasUsed: 21000,
@@ -221,7 +219,6 @@ New block header: {
stateRoot: '0x95e416eec0932e725ec253779a4e28b3d014d05e41e63c3369f5da42d26d1240',
timestamp: 1684165088,
transactionsRoot: '0x8f87380cc7acfb6d10633e10f72567136492cb8301f52a41742eaca9449bb378',
- sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
baseFeePerGas: 4959456,
size: undefined
}
@@ -230,40 +227,40 @@ Transaction Receipt: {
transactionIndex: 0n,
blockNumber: 1n,
blockHash: '0x5c05248fe0fb8f45a8c9b9600904a36c0e5c74dce01495cfc72278c185fe7838',
- from: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
- to: '0x6f1df96865d09d21e8f3f9a7fba3b17a11c7c53c',
+ from: 'Z6e599da0bff7a6598ac1224e4985430bf16458a4',
+ to: 'Z6f1df96865d09d21e8f3f9a7fba3b17a11c7c53c',
cumulativeGasUsed: 21000n,
gasUsed: 21000n,
logs: [],
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
status: 1n,
effectiveGasPrice: 2000000000n,
- type: 0n
+ type: 2n
}
Unsubscribed from new block headers.
```
### IPC Provider (for Node.js)
-The IPC Provider allows you to connect to an Ethereum node using Inter-Process Communication (IPC) in a Node.js environment. This provider is useful when you have a local Ethereum node running on your machine and want to interact with it using Node.js.
+The IPC Provider allows you to connect to an Zond node using Inter-Process Communication (IPC) in a Node.js environment. This provider is useful when you have a local Zond node running on your machine and want to interact with it using Node.js.
-In the following steps you will run `geth` in development mode and you will run a piece of code that reads the Ethereum accounts and sends a transaction:
+In the following steps you will run `gzond` in development mode and you will run a piece of code that reads the Zond accounts and sends a transaction:
-To connect to the Ethereum network using the IPC provider, follow these steps:
+To connect to the Zond network using the IPC provider, follow these steps:
-1. Start a `geth` node in development mode by opening a terminal window and navigating to the `geth` executable file. Then, run the following command to create a development chain:
+1. Start a `gzond` node in development mode by opening a terminal window and navigating to the `gzond` executable file. Then, run the following command to create a development chain:
```bash
-geth --dev --ipcpath
+gzond --dev --ipcpath
```
Make sure to replace `` with the desired IPC path. For example:
```bash
-geth --dev --ipcpath /Users/username/Library/Ethereum/geth.ipc
+gzond --dev --ipcpath /Users/username/Library/Zond/gzond.ipc
```
-This will start a `geth` node in development mode with IPC enabled and an IPC path specified. If the command is successful, the `geth` node will be running, and you should see output similar to the following:
+This will start a `gzond` node in development mode with IPC enabled and an IPC path specified. If the command is successful, the `gzond` node will be running, and you should see output similar to the following:
```bash
INFO [12-10|15:10:37.121] IPC endpoint opened url=
@@ -294,7 +291,7 @@ INFO [12-10|15:10:37.127] Mapped network port proto=udp extport=0 intport=30
const { Web3 } = require('web3');
const { IpcProvider } = require('web3-providers-ipc');
- // Connect to the Ethereum network using IPC provider
+ // Connect to the Zond network using IPC provider
const ipcPath = ''; // Replace with your actual IPC path
const ipcProvider = new IpcProvider(ipcPath);
@@ -307,12 +304,12 @@ INFO [12-10|15:10:37.127] Mapped network port proto=udp extport=0 intport=30
ipcProvider.supportsSubscriptions(),
);
- // Get the list of accounts in the connected node which is in this case: geth in dev mode.
- const accounts = await web3.eth.getAccounts();
+ // Get the list of accounts in the connected node which is in this case: gzond in dev mode.
+ const accounts = await web3.zond.getAccounts();
console.log('Accounts:', accounts);
// Send a transaction to the network
- const transactionReceipt = await web3.eth.sendTransaction({
+ const transactionReceipt = await web3.zond.sendTransaction({
from: accounts[0],
to: accounts[0], // sending a self-transaction
value: web3.utils.toWei('0.001', 'ether'),
@@ -326,7 +323,7 @@ INFO [12-10|15:10:37.127] Mapped network port proto=udp extport=0 intport=30
main();
```
-7. replace `` with the `ipcPath` that you had specified, when starting the `geth` node, in the first step.
+7. replace `` with the `ipcPath` that you had specified, when starting the `gzond` node, in the first step.
8. Type `node web3-ipc-provider.js` in the command prompt or terminal window and press Enter. This will run your JavaScript file.
@@ -334,31 +331,31 @@ If everything is set up properly, you should see the list of accounts and transa
```bash
Do the provider supports subscription?: true
-Accounts: [ '0x82333ED0FAA7a883297C4d8e0FDE1E1CFABAeB7D' ]
+Accounts: [ 'Z82333ED0FAA7a883297C4d8e0FDE1E1CFABAeB7D' ]
Transaction Receipt: {
blockHash: '0xd1220a9b6f86083e420da025179593f5aad3732165a687019a89528a4ab2bcd8',
blockNumber: 1n,
cumulativeGasUsed: 21000n,
effectiveGasPrice: 1000000001n,
- from: '0x82333ed0faa7a883297c4d8e0fde1e1cfabaeb7d',
+ from: 'Z82333ed0faa7a883297c4d8e0fde1e1cfabaeb7d',
gasUsed: 21000n,
logs: [],
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
status: 1n,
- to: '0x82333ed0faa7a883297c4d8e0fde1e1cfabaeb7d',
+ to: 'Z82333ed0faa7a883297c4d8e0fde1e1cfabaeb7d',
transactionHash: '0x76c05df78dc5dbfade0d11322b3cadc894c17efe36851856aca29488b47c3fbd',
transactionIndex: 0n,
- type: 0n
+ type: 2n
}
```
-Keep in mind that using IPC Provider with `geth` in development mode in a production environment is not recommended as it can pose a security risk.
+Keep in mind that using IPC Provider with `gzond` in development mode in a production environment is not recommended as it can pose a security risk.
### Third-party Providers (Compliant with EIP 1193)
-web3.js accepts any provider that is in compliance with [EIP-1193](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1193.md). It has tests written to ensure compatibility with @truffle/hdwallet-provider, Ganache provider, Hardhat provider, and Incubed (IN3) as a provider. The following section, [Browser Injected Ethereum Provider](#browser-injected-ethereum-provider), in this tutorial explains how to use a special case of these third-party providers.
+web3.js accepts any provider that is in compliance with [EIP-1193](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1193.md). It has tests written to ensure compatibility with @truffle/hdwallet-provider, Ganache provider, Hardhat provider, and Incubed (IN3) as a provider. The following section, [Browser Injected Zond Provider](#browser-injected-ethereum-provider), in this tutorial explains how to use a special case of these third-party providers.
-Here is a step-by-step example and a code snippet to connect your web application to the Ethereum network using `@truffle/hdwallet-provider` as an example of an external provider compliant with EIP 1193.
+Here is a step-by-step example and a code snippet to connect your web application to the Zond network using `@truffle/hdwallet-provider` as an example of an external provider compliant with EIP 1193.
1. Open a command prompt or terminal window in a new folder.
2. Type `npm init -y` and press Enter. This will create a `package.json` file in the current directory.
@@ -379,7 +376,7 @@ Here is a step-by-step example and a code snippet to connect your web applicatio
const mnemonic = bip39.generateMnemonic(); // generates seed phrase
console.log('seed phrase:', mnemonic);
- // Connect to the Ethereum network using an HTTP provider and WalletProvider
+ // Connect to the Zond network using an HTTP provider and WalletProvider
const provider = new HDWalletProvider(
mnemonic,
'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID',
@@ -399,7 +396,7 @@ Here is a step-by-step example and a code snippet to connect your web applicatio
6. Replace `'YOUR_INFURA_PROJECT_ID'` with your own Infura project ID. You can obtain an Infura project ID by signing up for a free account at https://infura.io/register. Alternatively, you can use any other URL that is compatible with HDWalletProvider, such as a local Ganache accessible at `'http://localhost:7545'`.
-7. In the command prompt, run `node index.js` and press Enter. This will execute your JavaScript file and connect to the Ethereum network using HDWalletProvider with Infura.
+7. In the command prompt, run `node index.js` and press Enter. This will execute your JavaScript file and connect to the Zond network using HDWalletProvider with Infura.
If everything is set up properly, you should see the current block number printed in the console similar to the following.
@@ -409,28 +406,28 @@ Current block number: 17317844n
```
:::danger
-Your seed phrase gives complete access to your Ethereum account and it should **never** be shared with anyone you don't want to give full access to your account. The seed phrase is `console.log`ed in the code example to show you what it looks like, but you should **never** do this with a seed phrase to an account you plan on using to send real money.
+Your seed phrase gives complete access to your Zond account and it should **never** be shared with anyone you don't want to give full access to your account. The seed phrase is `console.log`ed in the code example to show you what it looks like, but you should **never** do this with a seed phrase to an account you plan on using to send real money.
:::
-The sample above connected you to the Ethereum network using truffle HD Wallet-enabled Web3 provider. You can modify it to interact with the network, perform transactions, and read/write data from the Ethereum network.
+The sample above connected you to the Zond network using truffle HD Wallet-enabled Web3 provider. You can modify it to interact with the network, perform transactions, and read/write data from the Zond network.
## Practical ways of connecting to a provider
-1. Browser Injected Ethereum Provider
+1. Browser Injected Zond Provider
2. Setting Web3 Provider using a string URL
-### Browser Injected Ethereum Provider
+### Browser Injected Zond Provider
-It is easy to connect to the Ethereum network using an Ethereum browser extension such as MetaMask, or an Ethereum-enabled browser like the browser inside TrustWallet. Because they inject their provider object into the browser's JavaScript context, enabling direct interaction with the Ethereum network from your web application. Moreover, the wallet management is conveniently handled by these extensions or browsers, making it the standard approach for DApp developers to facilitate user interactions with the Ethereum network.
+It is easy to connect to the Zond network using an Zond browser extension such as MetaMask, or an Zond-enabled browser like the browser inside TrustWallet. Because they inject their provider object into the browser's JavaScript context, enabling direct interaction with the Zond network from your web application. Moreover, the wallet management is conveniently handled by these extensions or browsers, making it the standard approach for DApp developers to facilitate user interactions with the Zond network.
-Technically, you use `window.ethereum` when it is injected by the Ethereum browser extension or the Ethereum-enabled browser. However, before using this provider, you need to check if it is available and then call `enable()` to request access to the user's MetaMask account.
+Technically, you use `window.zond` when it is injected by the Zond browser extension or the Zond-enabled browser. However, before using this provider, you need to check if it is available and then call `enable()` to request access to the user's MetaMask account.
Before start coding you will need to setup and configure Ganache and MetaMask, if you have not already:
- Ensure that Ganache is running as mentioned in the [Prerequisites](#prerequisites) section.
- Install the MetaMask extension for your browser. You can download MetaMask from their website: https://metamask.io/.
-Follow these steps to connect to the Ethereum network with MetaMask and web3.js, including the steps to create a local web server using Node.js:
+Follow these steps to connect to the Zond network with MetaMask and web3.js, including the steps to create a local web server using Node.js:
1. Open a command prompt or terminal window and navigate to where you would like to create the folder for this example.
2. Create a new folder and navigate to it:
@@ -461,10 +458,10 @@ Follow these steps to connect to the Ethereum network with MetaMask and web3.js,
- Connecting to the Ethereum network with Web3.js and MetaMask
+ Connecting to the Zond network with Web3.js and MetaMask
- Connecting to the Ethereum network with Web3.js and MetaMask
+ Connecting to the Zond network with Web3.js and MetaMask
You need to approve connecting this website to MetaMask.
Click on the MetaMask icon in the browser extension, if it did not show a popup already.
@@ -475,13 +472,13 @@ Follow these steps to connect to the Ethereum network with MetaMask and web3.js,
@@ -543,15 +540,15 @@ Follow these steps to connect to the Ethereum network with MetaMask and web3.js,
```
10. Open your web browser and navigate to `http://localhost:8097/`. MetaMask should ask for your approval to connect to your website. Follow the steps and give your consent.
-11. If everything is set up properly, you should be able to connect to the Ethereum network with MetaMask and see the logged account address.
+11. If everything is set up properly, you should be able to connect to the Zond network with MetaMask and see the logged account address.
Note that in the above steps you had created a local web server using Node.js and Express, serving your HTML file from the root directory of your project. You needs this local server because many browser does not allow extensions to inject objects for static files located on your machine. However, you can customize the port number and the root directory if needed.
-Now you can start building your Ethereum application with web3.js and MetaMask!
+Now you can start building your Zond application with web3.js and MetaMask!
### Setting Web3 Provider using a String URL
-web3.js allows you to set the Ethereum network provider, easily, by passing a string URL containing either the `http`, `https`, `ws`, or `wss` protocol. This provider can be used to connect to a remote server or node.
+web3.js allows you to set the Zond network provider, easily, by passing a string URL containing either the `http`, `https`, `ws`, or `wss` protocol. This provider can be used to connect to a remote server or node.
And when a string is passed, an instance of the compatible class above will be created accordingly. ex. WebSocketProvider instance will be created for string containing `ws` or `wss`. And you access this instance by calling `web3.provider` to read the provider and possibly register an event listener.
@@ -563,7 +560,7 @@ const web3 = new Web3('https://ropsten.infura.io/v3/YOUR_INFURA_PROJECT_ID');
Replace `` with your own Infura project ID. This code snippet creates a new Web3 instance with Infura's Ropsten network endpoint as the provider.
-However, if you do not want to use Infura and want to run your own Ethereum node, you can set the provider to a local node with, for example, the `http` protocol, like this:
+However, if you do not want to use Infura and want to run your own Zond node, you can set the provider to a local node with, for example, the `http` protocol, like this:
```js
const web3 = new Web3('http://localhost:8545');
@@ -571,7 +568,7 @@ const web3 = new Web3('http://localhost:8545');
This code snippet sets the provider to a local node running on port 8545.
-You can also use the `WebSocket` protocol to connect to a remote Ethereum node that supports it, like this:
+You can also use the `WebSocket` protocol to connect to a remote Zond node that supports it, like this:
```js
const web3 = new Web3('wss://eth-mainnet.alchemyapi.io/v2/');
@@ -583,8 +580,8 @@ A few points to consider:
- Make sure the URL you are using is correct, including the protocol and port if necessary.
- If you are using a remote node, make sure your firewall allows access to the specified port.
-- It is recommended to use encrypted protocols `https` and `wss` when connecting to Ethereum network using a string URL.
+- It is recommended to use encrypted protocols `https` and `wss` when connecting to Zond network using a string URL.
## Conclusion
-In this tutorial, we explored different types of providers available in web3.js and learned how to set them up and use them in our code. Depending on your application's needs, you can choose the provider that best suits your requirements. The HTTP Provider is the simplest and most widely used provider, while the Websocket Provider and IPC Provider offer real-time communication and faster performance, respectively. With these providers, you can connect your web application to the Ethereum network and start building decentralized applications.
+In this tutorial, we explored different types of providers available in web3.js and learned how to set them up and use them in our code. Depending on your application's needs, you can choose the provider that best suits your requirements. The HTTP Provider is the simplest and most widely used provider, while the Websocket Provider and IPC Provider offer real-time communication and faster performance, respectively. With these providers, you can connect your web application to the Zond network and start building decentralized applications.
diff --git a/docs/docs/guides/web3_providers_guide/index.md b/docs/docs/guides/web3_providers_guide/index.md
index 615fc785..ef440169 100644
--- a/docs/docs/guides/web3_providers_guide/index.md
+++ b/docs/docs/guides/web3_providers_guide/index.md
@@ -7,7 +7,7 @@ sidebar_label: 'Providers'
## Introduction
-web3.js providers are objects responsible for enabling connectivity with the Ethereum network in various ways. Connecting your web application to an Ethereum node is necessary for sending transactions, querying data, and interacting with smart contracts on the network. In this guide, we will explore the different types of providers available in web3.js, how to set them up, and how to use them in your code.
+web3.js providers are objects responsible for enabling connectivity with the Zond network in various ways. Connecting your web application to an Zond node is necessary for sending transactions, querying data, and interacting with smart contracts on the network. In this guide, we will explore the different types of providers available in web3.js, how to set them up, and how to use them in your code.
Connecting to a chain happens through a provider. You can pass the provider to the constructor as in the following example:
@@ -17,7 +17,7 @@ import Web3 from 'web3';
const web3 = new Web3(/* PROVIDER*/);
// calling any method that interact with the network would involve using the early passed provider.
-await web3.eth.sendTransaction({
+await web3.zond.sendTransaction({
from,
to,
value,
@@ -48,21 +48,21 @@ There are multiple ways to set the provider.
```ts title='Setting a provider'
web3.setProvider(myProvider);
-web3.eth.setProvider(myProvider);
+web3.zond.setProvider(myProvider);
web3.Contract.setProvider(myProvider);
contractInstance.setProvider(myProvider);
```
The key rule for setting provider is as follows:
-1. Any provider set on the higher level will be applied to all lower levels. e.g. Any provider set using `web3.setProvider` will also be applied to `web3.eth` object.
-2. For contracts `web3.Contract.setProvider` can be used to set provider for **all instances** of contracts created by `web3.eth.Contract`.
+1. Any provider set on the higher level will be applied to all lower levels. e.g. Any provider set using `web3.setProvider` will also be applied to `web3.zond` object.
+2. For contracts `web3.Contract.setProvider` can be used to set provider for **all instances** of contracts created by `web3.zond.Contract`.
---
## Examples
-### Local Geth Node
+### Local Gzond Node
```ts
const { Web3 } = require('web3');
@@ -77,13 +77,13 @@ web3.setProvider(new Web3.providers.WebsocketProvider('ws://localhost:8546'));
// Using the IPC provider in node.js
const net = require('net');
-const web3 = new Web3('/Users/myuser/Library/Ethereum/geth.ipc', net); // mac os path
+const web3 = new Web3('/Users/myuser/Library/Zond/gzond.ipc', net); // mac os path
// or
const web3 = new Web3(
- new Web3.providers.IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc', net),
+ new Web3.providers.IpcProvider('/Users/myuser/Library/Zond/gzond.ipc', net),
); // mac os path
-// on windows the path is: "\\\\.\\pipe\\geth.ipc"
-// on linux the path is: "/users/myuser/.ethereum/geth.ipc"
+// on windows the path is: "\\\\.\\pipe\\gzond.ipc"
+// on linux the path is: "/users/myuser/.zond/gzond.ipc"
```
### Remote Node Provider
@@ -98,20 +98,20 @@ const web3 = new Web3('https://eth-mainnet.alchemyapi.io/v2/your-api-key');
As stated above, the injected provider should be in compliance with [EIP-1193](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1193.md). And it is tested with Ganache provider, Hardhat provider, and Incubed (IN3) as a provider.
-The web3.js 4.x Provider specifications are defined in [web3 base provider](https://github.com/ChainSafe/web3.js/blob/4.x/packages/web3-types/src/web3_base_provider.ts) for Injected Providers.
+The web3.js Provider specifications are defined in [web3 base provider](https://github.com/ChainSafe/web3.js/blob/4.x/packages/web3-types/src/web3_base_provider.ts) for Injected Providers.
```html
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/abi_migration_guide.md b/docs/docs/guides/web3_upgrade_guide/1.x/abi_migration_guide.md
deleted file mode 100644
index a8df358d..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/abi_migration_guide.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-sidebar_position: 6
-sidebar_label: web3.eth.abi
----
-
-# web3.eth.abi Migration Guide
-
-## Breaking Changes
-
-- `AbiInput` has moved from `web3-eth-utils` to `web3-eth-abi`
-
-- type `AbiInput` attribute was renamed to `baseType` from `internalType`.
-
-In 1.x:
-
-```
-export interface AbiInput {
- name: string;
- type: string;
- indexed?: boolean;
- components?: AbiInput[];
- internalType?: string;
-}
-```
-
-In 4.x:
-
-```
-
-export type AbiInput = string | AbiParameter | { readonly [key: string]: unknown };
-// where AbiParameter is ...
-
-export type AbiParameter = {
- readonly name: string;
- readonly type: string;
- readonly baseType?: string;
- readonly indexed?: boolean;
- readonly components?: ReadonlyArray;
- readonly arrayLength?: number;
- readonly arrayChildren?: ReadonlyArray;
-};
-
-```
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/accounts_migration_guide.md b/docs/docs/guides/web3_upgrade_guide/1.x/accounts_migration_guide.md
deleted file mode 100644
index 9446135e..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/accounts_migration_guide.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-sidebar_position: 5
-sidebar_label: web3.eth.accounts
----
-
-# web3.eth.accounts Migration Guide
-
-## Breaking Changes
-
-### web3.eth.accounts.create and wallet.create
-
-In 1.x the create method has an optional parameter `entropy`.
-
-In 4.x the create method does not have `entropy` as a parameter. Instead 4.x uses an audited package [ethereum-cryptography/secp256k1](https://github.com/ethereum/js-ethereum-cryptography#secp256k1-curve) to generate private keys.
-
-Accounts:
-
-```typescript
-// In 1.x
-const account = web3.eth.accounts.create('optionalEntropy'); // entropy is an optional parameter
-
-// In 4.x
-const account = web3.eth.accounts.create('optionalEntropy'); // will result in an error
-const account = web3.eth.accounts.create(); // correct way
-```
-
-Wallets:
-
-```typescript
-// In 1.x
-const wallet = web3.eth.accounts.wallet.create(1, 'optionalEntropy'); // entropy is an optional parameter
-
-// In 4.x
-const account = web3.eth.accounts.wallet.create(1, 'optionalEntropy'); // will result in an error
-const account = web3.eth.accounts.wallet.create(); // correct way
-```
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/contracts_migration_guide.md b/docs/docs/guides/web3_upgrade_guide/1.x/contracts_migration_guide.md
deleted file mode 100644
index 727b1ba5..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/contracts_migration_guide.md
+++ /dev/null
@@ -1,183 +0,0 @@
----
-sidebar_position: 4
-sidebar_label: web3.eth.Contract
----
-
-# web3.eth.Contract Migration Guide
-
-## Breaking Changes
-
-### Receipt Status
-
-The `receipt.status` will now be be an `unsigned integer` instead of `boolean` value to comply with the specification.
-
-```ts
-// in 1.x
-myContract.methods
- .MyMethod()
- .send()
- .on('receipt', receipt => {
- console.log(receipt.status); // true | false
- });
-
-// in 4.x
-myContract.methods
- .MyMethod()
- .send()
- .on('receipt', receipt => {
- console.log(receipt.status); // BigInt(0) | BigInt(1)
- });
-```
-
-:::note
-The `unsigned integer` type is dependent on the data format you specified. Default type is `BigInt`.
-:::
-
-### Deploy `sending` and `sent` event will fire only the params
-
-In 1.x, when following was executed `deploy().send().on(‘sending’, payload => {})`. The `payload` was the complete the JSON-RPC Payload. In 4.x, it will just be the transaction which is about to be transmitted. Earlier it was accessible by from `payload.params[0]`, now will be available directly to event handler.
-
-```ts
-// 1.x
-myContract
- .deploy()
- .send()
- .on('send', payload => {
- console.log(payload);
- // {id: <1>, jsonrpc: '2.0', method: 'zond_sendTransaction', params: [txObject] }
- });
-
-// 4.x
-myContract
- .deploy()
- .send()
- .on('send', txObject => {
- console.log(txObject);
- // {id: <>, gas: <>,...}
- });
-```
-
-### Deploy ’confirmations’ handler will be invoked with object
-
-In 1.x, the `confirmations` handler was invoked with multiple parameters. But in 4.x there will be one parameter as object but with all the same properties.
-
-```ts
-//1.x
-myContract .send().on(‘confirmation’, (confirmations: number, receipt: object, latestBlockHash: string) => {})
-
-//4.x
-myContract .send().on(‘confirmation’, ({confirmations: bigint, receipt: object, latestBlockHash: string}) => {})
-```
-
-### Strict validation for `encodeABI`
-
-`encodeABI` now has strict validation for the ABI types. It's not limited to the mentioned use cases below, but applied in general. Some use cases are:
-
-- Earlier a `byte32` ABI type was successfully encoded even providing less bytes as input. Now it will throw an error.
-- Earlier a `byte32` ABI type was successfully encoded even with an empty bytes. Now it will throw an error.
-
-### Different error message for creating object without `new` keyword
-
-The error message will be different if you try to create a contract object without a `new` keyword.
-
-```ts
-// 1.x
-const contract = Contract(jsonInterface, address);
-// Please use the "new" keyword to instantiate a web3.eth.Contract() object!
-
-// 4.x
-const contract = Contract(jsonInterface, address);
-// Class constructor ContractBuilder cannot be invoked without 'new'
-```
-
-### No warning message when `toBlock` passed to event subscription
-
-In 1.x, if you pass the `toBlock` as event options you would get a warning message:
-
-> Invalid option: toBlock. Use getPastEvents for specific range.
-
-In 4.x, you will not get any warning but `toBlock` will still have no effect.
-
-### The contract `send` method will now resolve with the `receipt` object
-
-In 1.x, the contract `.send` method was always resolved with `transactionHash`. That enforces the user to make an extra call to get any further information. In 4.x the `.send` function will resolve with `receipt` object.
-
-```ts
-// 1.x
-const transactionHash = await myContract.method.MyMethod().send();
-
-// 4.x
-const receipt = await myContract.method.MyMethod().send();
-const transactionHash = receipt.transactionHash;
-```
-
-### `BigInt` is used when decoding functions' and events' parameters
-
-In 1.x, decoded functions' and events' parameters were of type `string`. In 4.x, the `BigInt` type is used instead.
-
-```ts
-// Events
-// 1.x
-instance.events.BasicEvent().on('data', function (event) {
- console.log(event);
-});
-
-await instance.methods.firesEvent(acc, 1).send();
-/**
-{ address: '0x607A075cB7710AA8544c4E0F929e344Bf91AB631',
- blockHash: ..,
- blockNumber: 9, logIndex: 0, removed: false, transactionHash: ..., transactionIndex: 0,
- returnValues: {0: '0xd0731FAE14781104c42B8914b4cc6634b6038daC', 1: '1', addr: '0xd0731FAE14781104c42B8914b4cc6634b6038daC', val: '1'} // Note the value of val
- ,event: 'BasicEvent', signature: ..., raw: ...}
-*/
-
-//4.x
-instance.events
- .MultiValueIndexedEvent({
- filter: { val: 100 },
- })
- .on('data', console.log);
-await instance.methods.firesMultiValueIndexedEvent('value', 100, true).send(sendOptions);
-/**
- * {
- address: '0x0c1b54fb6fdf63dee15e65cadba8f2e028e26bd0',
- topics: [
- '0x553c4a49a36d26504ba0880f2f9bfe9ac7db4b81a893bde296546cd96ae0b33c',
- '0x0000000000000000000000000000000000000000000000000000000000000064',
- '0x0000000000000000000000000000000000000000000000000000000000000001'
- ],
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000576616c7565000000000000000000000000000000000000000000000000000000',
- blockNumber: 23n,
- transactionHash: '0xf7e56f38b0f75c0926862ef4195df779003a0e960162a65b214c40232ba17925',
- transactionIndex: 0n,
- blockHash: '0x15a77129afdcec739924c58fb3aba456428d8c3f5d181af559d50458d468eb33',
- logIndex: 0n,
- removed: false,
- returnValues: {
- '0': 'value',
- '1': 100n,
- '2': true,
- __length__: 3,
- str: 'value',
- val: 100n, //Note that a BigInt is returned
- flag: true
- },
- event: 'MultiValueIndexedEvent',
- signature: '0x553c4a49a36d26504ba0880f2f9bfe9ac7db4b81a893bde296546cd96ae0b33c',
- raw: ...
- }
-*/
-
-// Functions
-//1.x
-await instance.methods.setValue(1).send();
-var value = await instance.methods.getValue().call();
-console.log(value);
-// > '1'
-
-//4.x
-await instance.methods.setValue(10).send();
-var value = await instance.methods.getValue().call();
-console.log(value);
-// 10n // Note that a BigInt is returned
-```
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/index.md b/docs/docs/guides/web3_upgrade_guide/1.x/index.md
deleted file mode 100644
index 8e364add..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/index.md
+++ /dev/null
@@ -1,217 +0,0 @@
----
-sidebar_position: 1
-sidebar_label: 'Upgrade from 1.x'
----
-
-# Upgrade from 1.x
-
-This upgrade guide is for upgrading from web3.js 1.x to web3.js 4.x.
-
-## Breaking Changes
-
-### The `web3` package will return all web3.js exported objects
-
-`require('web3')` will now return all web3 exported-objects organized in namespaces (and few are available on top level). So, it is no longer supported to write the following code:
-
-```ts
-// This will return the name space and the line after it will throw an error!
-const Web3 = require('web3');
-
-const web3 = new Web3();
-```
-
-And the correct usage now is:
-
-```ts
-const { Web3 } = require('web3');
-
-const web3 = new Web3();
-```
-
-### Passing Callbacks to functions
-
-Passing callbacks to functions is no longer supported, except for event listeners.
-
-For example, the approach to subscribing-to and listening-for blockchain events has changed in version 4.x. Detailed instructions can be found in the [**`web3.eth.subscribe` Migration Guide**](./subscribe_migration_guide.md#subscribing-to-events).
-
-However, the approach to subscribing to Provider events remains the same, utilizing callbacks as explained in the [Providers Events Listening guide](../../web3_providers_guide/events_listening.md). It is important to note that Providers have undergone some breaking changes, including the renaming of the `on('close', ...)` to `on('disconnect', ...)`.
-
-### Not Available
-
-
-- [web3.bzz](https://web3js.readthedocs.io/en/v1.7.3/web3-bzz.html) Package for interacting with Swarm is not implemented
-- [web3.shh](https://web3js.readthedocs.io/en/v1.7.3/web3-shh.html) Package for interacting with Whisper is not implemented
-
-`const web3 = new Web3(Web3.givenProvider);`
-
-It will not have:
-
-```ts
-// web3.bzz is NOT available
-// web3.shh is NOT available
-```
-
-### Defaults and Configs
-
-- `givenProvider` default value is `undefined` instead of `null`
-- `currentProvider` default value is `undefined` instead of `null` (if web3 is instantiated without a provider)
-
-### Web3 BatchRequest
-
-```ts
-const batch = new web3.BatchRequest();
-```
-
-#### batch.add()
-
-In 1.x nothing was returned, in 4.x returns a deferred promise which can be used to run specific code after completion of each respective request.
-
-```ts
-// in 1.x
-batch.add(
- web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback),
-);
-
-// in 4.x
-
-const request1 = {
- jsonrpc: '2.0',
- id: 10,
- method: 'zond_getBalance',
- params: ['0xf4ffff492596ac13fee6126846350433bf9a5021', 'latest'],
-};
-const request2 = {
- jsonrpc: '2.0',
- id: 12,
- method: 'zond_getBalance',
- params: ['0xdc6bad79dab7ea733098f66f6c6f9dd008da3258', 'latest'],
-};
-batch.add(request1);
-const request2Promise = batch.add(request2);
-request2Promise.then(response => {
- console.log(response);
-});
-```
-
-#### batch.execute()
-
-In 4.x execute returns a promise, where 1.x was based on the callbacks of requests passed to `add`.
-
-```ts
-// in 1.x
-batch.execute();
-
-// in 4.x
-const responses = await batch.execute();
-```
-
-### Types
-
-All the re-useable types which were earlier been exposed from `web3` package are now moved to independent package `web3-types` package.
-
-:::note
-We don't encourage using the `@types/web3` package.
-:::
-
-```ts
-// Provider types
-// in 1.x
-import type { Provider, Callback, JsonRPCResponse } from 'web3/providers';
-
-// in 4.x
-import type {
- Web3BaseProvider as Provider,
- Web3ProviderRequestCallback as Callback,
- JsonRpcResponse,
-} from '@theqrl/web3-types';
-```
-
-Similarly some useable types from the old package `web3-core` are also moved to `web3-types`
-
-```ts
-// in 1.x
-import type { Transaction, TransactionReceipt } from '@theqrl/web3-core';
-
-// in 4.x
-import type { Transaction, TransactionReceipt } from '@theqrl/web3-types';
-```
-
-### Web3 Extend
-
-`web3.extend` is available but methods.params , methods.inputFormatter and methods.outputFormatter are not available to set. In typescript
-you will need to set module augmentation as mentioned in following example.
-
-```ts
-// in 1.x
-web3.extend({
- property: 'myModule',
- methods: [
- {
- name: 'getBalance',
- call: 'zond_getBalance',
- params: 2,
- inputFormatter: [
- web3.extend.formatters.inputAddressFormatter,
- web3.extend.formatters.inputDefaultBlockNumberFormatter,
- ],
- outputFormatter: web3.utils.hexToNumberString,
- },
- {
- name: 'getGasPriceSuperFunction',
- call: 'zond_gasPriceSuper',
- params: 2,
- inputFormatter: [null, web3.utils.numberToHex],
- },
- ],
-});
-
-// in 4.0.4+
-declare module 'web3' {
- interface Web3Context {
- myModule: {
- getBalance(address: Address, blockTag: BlockTag): Promise;
- getGasPriceSuperFunction(blockTag: BlockTag): Promise;
- };
- }
-}
-
-web3.extend({
- property: 'myModule',
- methods: [
- {
- name: 'getBalance',
- call: 'zond_getBalance',
- },
- {
- name: 'getGasPriceSuperFunction',
- call: 'zond_gasPriceSuper',
- },
- ],
-});
-```
-
-### Formatters
-
-Starting 4.x releases, the package `web3-core-helpers` will not be maintained and the formatters are now moved to the `web3-core` package.
-
-```ts
-// in 1.x
-import { formatters } from 'web3-core-helpers';
-
-// in 4.x
-import { formatters } from '@theqrl/web3-core';
-```
-
-### PromiEvent
-
-Starting 4.x releases, the package `web3-core-promievent` will not be maintained and the class are now moved to the `web3-core` package.
-
-```ts
-// in 1.x
-import Web3PromiEvent from 'web3-core-promievent';
-
-// in 4.x
-import { Web3PromiEvent } from '@theqrl/web3-core';
-```
-
-The `PromiEvent` class does not support `removeEventListener` or `addEventListener`. Instead we recommend to use `on` and `off`.
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/net_migration_guide.md b/docs/docs/guides/web3_upgrade_guide/1.x/net_migration_guide.md
deleted file mode 100644
index 1c35ae25..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/net_migration_guide.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-sidebar_position: 10
-sidebar_label: web3.*.net
----
-
-# web3 Net Migration Guide
-
-## Breaking Changes
-
-### web3.\*.net.getId
-
-The `bzz` and `shh` package are deprecated, therefore `web3.bzz.net.getId` and `web3.shh.net.getId` functions are not available.
-
-### web3.\*.net.isListening
-
-The `bzz` and `shh` package are deprecated, therefore `web3.bzz.net.isListening` and `web3.shh.net.isListening` functions are not available.
-
-### web3.\*.net.getPeerCount
-
-The `bzz` and `shh` package are deprecated, therefore `web3.bzz.net.getPeerCount` and `web3.shh.net.getPeerCount` functions are not available.
-
-```typescript
-// web3.bzz.net is NOT available
-// web3.shh.net is NOT available
-```
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/personal_migration_guide.md b/docs/docs/guides/web3_upgrade_guide/1.x/personal_migration_guide.md
deleted file mode 100644
index 1e46f8fb..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/personal_migration_guide.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-sidebar_position: 8
-sidebar_label: web3.eth.personal
----
-
-# web3.eth.personal Migration Guide
-
-## Breaking Changes
-
-### extend
-
-In 4.x the method `extend` is deprecated.
-
-web3 4.x will not have:
-
-```ts
-// -> web3.extend
-// -> web3.eth.extend
-// -> web3.shh.extend
-// -> web3.bzz.extend
-```
-
-### Defaults and Configs
-
-- `givenProvider` default value is `undefined` instead of `null`
-- `currentProvider` default value is `undefined` instead of `null` (if web3 is instantiated without a provider)
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/providers_migration_guide.md b/docs/docs/guides/web3_upgrade_guide/1.x/providers_migration_guide.md
deleted file mode 100644
index 77d86575..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/providers_migration_guide.md
+++ /dev/null
@@ -1,383 +0,0 @@
----
-title: web3.providers Migration Guide
-sidebar_position: 2
-sidebar_label: web3.providers
----
-
-For full description about the providers, their priorities and their types, you can check [web3.js Providers Guide](../../web3_providers_guide/).
-
-### Provider Options Changes
-
-There are differences in the objects that could be passed in the Provider constructors between version 1.x and 4.x. Below, you will find the difference for every Provider object type.
-
-#### HttpProvider
-
-In 1.x, options passed in the constructor should be of type [`HttpProviderOptions`](https://github.com/web3/web3.js/blob/1.x/packages/web3-core-helpers/types/index.d.ts#L173). The `HttpProviderOptions` interface consists of:
-
-```ts
-interface HttpProviderOptions {
- keepAlive?: boolean;
- timeout?: number;
- headers?: HttpHeader[];
- withCredentials?: boolean;
- agent?: HttpAgent;
-}
-
-interface HttpAgent {
- http?: http.Agent;
- https?: https.Agent;
- baseUrl?: string;
-}
-
-interface HttpHeader {
- name: string;
- value: string;
-}
-```
-
-In 4.x, the options is of type `HttpProviderOptions`, which is an object with a `providerOptions` key and value a `RequestInit` object.
-Regarding `RequestInit` see [microsoft's github](https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_dom_d_.requestinit.html).
-
-For example:
-
-```ts
-// in 1.x
-let httpOptions = {
- keepAlive: true,
- withCredentials: false,
- timeout: 20000, // ms
- headers: [
- {
- name: 'Access-Control-Allow-Origin',
- value: '*'
- },
- ],
- agent: {
- http: http.Agent(...),
- baseUrl: ''
- }
-};
-
-// in 4.x
-let httpOptions = {
- providerOptions: {
- body: undefined,
- cache: 'force-cache',
- credentials: 'same-origin',
- headers: {
- 'Content-Type': 'application/json',
- },
- integrity: 'foo',
- keepalive: true,
- method: 'GET',
- mode: 'same-origin',
- redirect: 'error',
- referrer: 'foo',
- referrerPolicy: 'same-origin',
- signal: undefined,
- window: undefined,
- } as RequestInit,
-};
-```
-
-#### WebSocketProvider
-
-In 1.x, options passed in the constructor should be of type [`WebsocketProviderOptions`](https://github.com/web3/web3.js/blob/1.x/packages/web3-core-helpers/types/index.d.ts#L192). The `WebsocketProviderOptions` interface consists of:
-
-```ts
-interface WebsocketProviderOptions {
- host?: string;
- timeout?: number;
- reconnectDelay?: number;
- headers?: any;
- protocol?: string;
- clientConfig?: object;
- requestOptions?: any;
- origin?: string;
- reconnect?: ReconnectOptions;
-}
-
-interface ReconnectOptions {
- auto?: boolean;
- delay?: number;
- maxAttempts?: number;
- onTimeout?: boolean;
-}
-```
-
-In 4.x, the `socketOptions` parameter is of type `ClientRequestArgs` or of `ClientOptions`. See [here](https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules__types_node_http_d_._http_.clientrequestargs.html) for `ClientRequestArgs` and [here](https://github.com/websockets/ws) for `ClientOptions`.
-
-In 4.x the `reconnectOptions` parameter can be given to control: auto-reconnecting, delay and max tries attempts. And here is its type:
-
-```ts
-// this is the same options interface used for both WebSocketProvider and IpcProvider
-type ReconnectOptions = {
- autoReconnect: boolean; // default: `true`
- delay: number; // default: `5000`
- maxAttempts: number; // default: `5`
-};
-```
-
-##### Options examples
-
-Below is an example for the passed options for each version:
-
-```ts
-// in 1.x
-var options = {
- timeout: 30000, // ms
-
- // Useful for credentialed urls, e.g: ws://username:password@localhost:8546
- headers: {
- authorization: 'Basic username:password',
- },
-
- clientConfig: {
- // Useful if requests are large
- maxReceivedFrameSize: 100000000, // bytes - default: 1MiB
- maxReceivedMessageSize: 100000000, // bytes - default: 8MiB
-
- // Useful to keep a connection alive
- keepalive: true,
- keepaliveInterval: 60000, // ms
- },
-
- // Enable auto reconnection
- reconnect: {
- auto: true,
- delay: 5000, // ms
- maxAttempts: 5,
- onTimeout: false,
- },
-};
-// in 4.x
-let clientOptions: ClientOptions = {
- // Useful for credentialed urls, e.g: ws://username:password@localhost:8546
- headers: {
- authorization: 'Basic username:password',
- },
- maxPayload: 100000000,
-};
-
-const reconnectOptions: ReconnectOptions = {
- autoReconnect: true,
- delay: 5000,
- maxAttempts: 5,
-};
-```
-
-And here is a sample instantiation for the `WebSocketProvider`:
-
-```ts
-const provider = new WebSocketProvider(
- `ws://localhost:8545`,
- {
- headers: {
- // to provide the API key if the Node requires the key to be inside the `headers` for example:
- 'x-api-key': '',
- },
- },
- {
- delay: 500,
- autoReconnect: true,
- maxAttempts: 10,
- },
-);
-```
-
-The second and the third parameters are both optional. And you can for example, the second parameter could be an empty object or undefined, like in the following example:
-
-```ts
-const provider = new WebSocketProvider(
- `ws://localhost:8545`,
- {},
- {
- delay: 500,
- autoReconnect: true,
- maxAttempts: 10,
- },
-);
-```
-
-#### Legacy Event `close` has been deprecated
-
-Following EIP-1193, the `close` event has been deprecated and is superceded by `disconnect`.
-In 1.x, we listen for a `close` event:
-
-```ts
-const provider = new WebSocketProvider(host + port);
-// we would use close to listen to the disconnect function
-provider.on('close', function (err) {
- console.log('closed');
- resolve();
-});
-provider.disconnect(1012);
-// would eventually log closed
-```
-
-In 4.x, we listen for a `disconnect` event:
-
-```ts
-const provider = new WebSocketProvider(host + port);
-// we would use disconnect to listen to the disconnect function
-provider.on('disconnect', function (err) {
- console.log('closed');
- resolve();
-});
-provider.disconnect(1012);
-// would eventually log 'closed'
-```
-
-#### IpcProvider
-
-The IPC provider is used in node.js dapps when running a local node. And it provide the most secure connection.
-
-In 1.x, it used to accept the path and an instance of net.Server as in the following example:
-
-```ts
-import * as net from 'net';
-
-const ipcProvider = new IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc', new net.Server());
-```
-
-In 4.x, it's no longer installed by default as its nodejs modules are impacting web3.js browser usage.
-You can use it by installing `web3-providers-ipc` and creating a new instance. Since it's compatible with Eip1193Provider,
-you can pass it on to the Web3 instance.
-
-```ts
-import { IpcProvider } from '@theqrl/web3-providers-ipc';
-
-const ipcProvider = new IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc');
-```
-
-It accepts a second parameter called `socketOptions`. And, its type is `SocketConstructorOpts`. See [here](https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules__types_node_net_d_._net_.socketconstructoropts.html) for full details. And here is its interface:
-
-```ts
-interface SocketConstructorOpts {
- fd?: number | undefined;
- allowHalfOpen?: boolean | undefined;
- readable?: boolean | undefined;
- writable?: boolean | undefined;
- signal?: AbortSignal;
-}
-```
-
-In 4.x the third parameter is called `reconnectOptions` that is of the type `ReconnectOptions`. It can be given to control: auto-reconnecting, delay and max tries attempts. And here its type:
-
-```ts
-// this is the same options interface used for both WebSocketProvider and IpcProvider
-type ReconnectOptions = {
- autoReconnect: boolean; // default: `true`
- delay: number; // default: `5000`
- maxAttempts: number; // default: `5`
-};
-```
-
-##### Options examples
-
-Below is an example for the passed options for each version:
-
-```ts
-// in 1.x
-var net = require('net');
-
-new Web3.providers.IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc', net); // mac os path
-// on windows the path is: "\\\\.\\pipe\\geth.ipc"
-// on linux the path is: "/users/myuser/.ethereum/geth.ipc"
-
-// in 4.x
-let clientOptions: SocketConstructorOpts = {
- allowHalfOpen: false;
- readable: true;
- writable: true;
-};
-
-const reconnectOptions: ReconnectOptions = {
- autoReconnect: true,
- delay: 5000,
- maxAttempts: 5,
-};
-```
-
-And here is a sample instantiation for the `IpcProvider`:
-
-```ts
-const provider = new IpcProvider(
- `path.ipc`,
- {
- writable: false,
- },
- {
- delay: 500,
- autoReconnect: true,
- maxAttempts: 10,
- },
-);
-```
-
-The second and the third parameters are both optional. And, for example, the second parameter could be an empty object or undefined.
-
-```ts
-const provider = new IpcProvider(
- `path.ipc`,
- {},
- {
- delay: 500,
- autoReconnect: true,
- maxAttempts: 10,
- },
-);
-```
-
-#### Error message for reconnect attempts
-
-:::note
-This section applies for both `IpcProvider` and `WebSocketProvider`.
-:::
-
-The error in, version 1.x, was an Error object that contains the message:
-`'Maximum number of reconnect attempts reached!'`
-
-And, the error in version 4.x, is the same, but will also contain the value of the variable `maxAttempts` as follows:
-
-`` `Maximum number of reconnect attempts reached! (${maxAttempts})` ``
-
-And here is how to catch the error, in version 4.x, if max attempts reached when there is auto reconnecting:
-
-```ts
-provider.on('error', error => {
- if (error.message.startsWith('Maximum number of reconnect attempts reached!')) {
- // the `error.message` will be `Maximum number of reconnect attempts reached! (${maxAttempts})`
- // the `maxAttempts` is equal to the provided value by the user, or the default value `5`.
- }
-});
-```
-
-#### Legacy Event `close` has been deprecated
-
-Following EIP-1193, the `close` event has been deprecated and is superceded by `disconnect`.
-In 1.x, we listen for a `close` event:
-
-```ts
-const provider = new IpcProvider(host + port);
-// we would use close to listen to the disconnect function
-provider.on('close', function (err) {
- console.log('closed');
- resolve();
-});
-provider.disconnect(1012);
-// would eventually log closed
-```
-
-In 4.x, we listen for a `disconnect` event:
-
-```ts
-const provider = new IpcProvider(host + port);
-// we would use disconnect to listen to the disconnect function
-provider.on('disconnect', function (err) {
- console.log('closed');
- resolve();
-});
-provider.disconnect(1012);
-// would eventually log 'closed'
-```
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/subscribe_migration_guide.md b/docs/docs/guides/web3_upgrade_guide/1.x/subscribe_migration_guide.md
deleted file mode 100644
index 6ce6c251..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/subscribe_migration_guide.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-sidebar_position: 9
-sidebar_label: web3.eth.subscribe
----
-
-# web3.eth.subscribe Migration Guide
-
-## Breaking Changes
-
-### Subscribing to events
-
-You subscribe to blockchain events using the `web3.eth.subscribe` API.
-
-However, in web3.js version 1.x, for example, you could subscribe to the `newBlockHeaders` event, in one step, with the following code snippet:
-
-```typescript
-var subscription = web3.eth.subscribe('newBlockHeaders', function (error, result) {
- if (!error) console.log(result);
-});
-```
-
-But, in web3.js Version 4.x, the function signature has changed for `web3.eth.subscribe`. In addition, the way you get notified for `data` and `error` has also changed. It is now in 2 steps: First you subscribe and then you listen to events. Here's an example of how you would subscribe to the same `newBlockHeaders` event in web3.js version 4.x:
-
-```typescript
-// in 4.x
-const subscription = await web3.eth.subscribe('newHeads');
-
-// note that in version 4.x the way you get notified for `data` and `error` has changed
-subscription.on('data', async blockhead => {
- console.log('New block header: ', blockhead);
-});
-subscription.on('error', error =>
- console.log('Error when subscribing to New block header: ', error),
-);
-```
-
-#### Differences
-
-In summary, the differences you need to be aware of when subscribing to blockchain events in web3.js version 4.x are:
-
-- The `subscribe` function signature has changed:
- - It does not accept a callback function.
- - It returns a subscription object that you can use to listen to `data` and `error` events.
-- You should now use the `on`, or `once`, method on the newly returned subscription object to listen to `data` and `error` events, instead of passing a callback function directly.
-- You can have multiple event listeners, if you have, for example multiple `on` calls. And you can get the number of listeners in you code by calling `listenerCount(event_name)` or get the listeners with `listeners(event_name)`.
-
-Keep in mind that these differences apply to all blockchain event subscriptions, not just to the `newBlockHeaders` event.
-
-### New Block Headers event
-
-In 1.x, `web3.eth.subscribe('newBlockHeaders')` was used to subscribe to new block headers.
-
-In 4.x, either `web3.eth.subscribe('newHeads')` or `web3.eth.subscribe('newBlockHeaders')` can be used to subscribe to new block headers.
-
-### web3.eth.clearSubscriptions
-
-In 1.x, `web3.eth.clearSubscriptions` returns `true` on success.
-
-In 4.x, `web3.eth.clearSubscriptions` returns an `Array of subscription ids`.
-
-```typescript
-// in 1.x
-var subscription = web3.eth.subscribe('newBlockHeaders', function (error, result) {
- if (!error) console.log(result);
-});
-web3.eth.clearSubscriptions(function (error, success) {
- console.log(success); // true
-});
-
-// in 4.x
-const subscription = await web3.eth.subscribe('newHeads');
-
-// note that in version 4.x the way you get notified for `data` and `error` has changed
-newBlocksSubscription.on('data', async blockhead => {
- console.log('New block header: ', blockhead);
-});
-newBlocksSubscription.on('error', error =>
- console.log('Error when subscribing to New block header: ', error),
-);
-
-const ids = await web3.eth.clearSubscriptions();
-console.log(ids); // [...] An array of subscription ids that were cleared
-
-// note that you can unsubscribe from a specific subscription by calling unsubscribe()
-// on that subscription object: `await subscription.unsubscribe();` and this would return void if succeeded.
-```
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/web3_eth_ens.md b/docs/docs/guides/web3_upgrade_guide/1.x/web3_eth_ens.md
deleted file mode 100644
index 10ba9639..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/web3_eth_ens.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-sidebar_position: 3
-sidebar_label: web3.eth.ens
----
-
-# web3.eth.ens Migration Guide
-
-## Breaking Changes
-
-- All the API level interfaces returning or accepting `null` in 1.x, use `undefined` in 4.x.
-- Functions don't accept a callback anymore.
-- Functions that accepted an optional `TransactionConfig` as the last argument, now accept an optional `NonPayableCallOptions`. See `web3-eth-contract` package for more details.
-- List of web3-eth-ens set functions are removed in 4.x
-
-#### receipt
-
-- The `receipt` object the event listener receives:
- - Returns a `BigInt` instead of a number for the following properties:
- - `transactionIndex`
- - `blockNumber`
- - `cumulativeGasUsed`
- - `gasUsed`
- - `effectiveGasPrice`
- - Returns a `BigInt` instead of a boolean for the following properties:
- - `status`
-
-#### web3.eth.ens.registryAddress
-
-- In 1.x ens was trying to find the registry address of the current network. In 4.x the default value is set to the address of registry address in the mainnet.
-
-#### web3.eth.ens.registry
-
-- `registry` was the way to get the ENS registry in 1.x. In 4.x the registry functionality is exposed directly through the `ens` class.
-
-#### resolver
-
-- `resolver` was already deprecated in the latest versions of 1.x. In 4.x it doesn't exist, use `getResolver` instead.
-
-#### setOwner
-
-- In 1.x documentation it is mentioned that `name`,`txConfig` and `callback` are the function arguments. This is wrong, since there is one more argument, `address`. So the right signature is `setOwner(name: string, address: string, txConfig?: TransactionConfig | undefined, callback?: ....)`. The same applies for 4.x, too.
-
-#### `getTTL`
-
-- In 4.x a `bigint` is returned instead of a `number`.
-
-### Removed functions
-
- - `getMultihash` is not supported in web3-eth-ens 4.x as it's deprecated in ENS public resolver
- - Following functions are not supported in web3-eth-ens 4.x :
- `setResolver`
- `setSubnodeRecord`
- `setApprovalForAll`
- `isApprovedForAll`
- `setSubnodeOwner`
- `setTTL`
- `setOwner`
- `setRecord`
- `setAddress`
- `setPubkey`
- `setContenthash`
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/web3_eth_iban.md b/docs/docs/guides/web3_upgrade_guide/1.x/web3_eth_iban.md
deleted file mode 100644
index 33e60c93..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/web3_eth_iban.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-sidebar_position: 7
-sidebar_label: web3.eth.iban
----
-
-# web3.eth.iban Migration Guide
-
-## Breaking Changes
-
-### Iban class
-
-#### The Iban contractor
-
-##### In version 1.x
-
-It used to just accept the passed string without any check.
-
-##### In version 4.x
-
-If the provided string was not of either the length of a direct IBAN (34 or 35), or the length of an indirect IBAN (20), an Error will be thrown. The error will contain the message `'Invalid IBAN was provided'`
-
-#### Calling `toAddress` on an Iban that is not Direct
-
-##### In version 1.x
-
-It used to behave differently, if it was called on an instance of IBAN, from if it was called as a static method. However, this used to happen only if the provided address was not a Direct IBAN. More specifically, if the instance method `new Iban(address).toAddress()` was called, it will return an empty string (`''`) for that non Direct IBAN. And if the static method `Iban.toAddress(address)` was called, it used to throw an Error with the message `'IBAN is indirect and can\'t be converted'`, for that non Direct IBAN.
-
-##### In version 4.x
-
-If the provided IBAN was not a Direct one, an error will be thrown which contains the message: `'Iban is indirect and cannot be converted. Must be length of 34 or 35'`. And this behavior is now the same for the instance method `new Iban(address).toAddress()` and the static method `Iban.toAddress(address)`.
-
-#### Calling `fromAddress` on an invalid address
-
-##### In version 1.x
-
-If the provided IBAN was not a valid Ethereum Address, an error used be thrown which contains the message `'Provided address is not a valid address: '+ address`.
-
-##### In version 4.x
-
-If the provided IBAN was not a valid Ethereum Address, an error object will be thrown which contains the message: `'Invalid value given "${address}". Error: 'invalid ethereum address'` and the code `1005`.
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/web3_eth_migration_guide.md b/docs/docs/guides/web3_upgrade_guide/1.x/web3_eth_migration_guide.md
deleted file mode 100644
index 53a3644f..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/web3_eth_migration_guide.md
+++ /dev/null
@@ -1,665 +0,0 @@
----
-sidebar_position: 3
-sidebar_label: web3.eth
----
-
-# web3.eth Migration Guide
-
-## Breaking Changes
-
-All the API level interfaces returning or accepting `null` in 1.x, use `undefined` in 4.x.
-
-### Return Values
-
-#### Returns a `BigInt` instead of a number string
-
-- `web3.eth.getGasPrice`
-- `web3.eth.getBalance`
-
-#### Returns a `BigInt` instead of a number
-
-- `web3.eth.getBlockNumber`
-- `web3.eth.getBlockTransactionCount`
-- `web3.eth.getBlockUncleCount`
-- `web3.eth.getTransactionCount`
-- `web3.eth.estimateGas`
-
----
-
-#### web3.eth.getBlock
-
-- Returns a `BigInt` instead of a number for the following properties:
- - `baseFeePerGas`
- - `gasLimit`
- - `gasUsed`
- - `number`
- - `size`
- - `timestamp`
-- Returns a `BigInt` instead of a number string for the following properties:
- - `difficulty`
- - `totalDifficulty`
-
-#### web3.eth.getUncle
-
-- Returns a `BigInt` instead of a number for the following properties:
- - `baseFeePerGas`
- - `gasLimit`
- - `gasUsed`
- - `number`
- - `size`
- - `timestamp`
-- Returns a `BigInt` instead of a number string for the following properties:
- - `difficulty`
-
-#### web3.eth.getTransaction
-
-- Returns a `BigInt` instead of a number for the following properties:
- - `blockNumber`
- - `gas`
- - `nonce`
- - `transactionIndex`
- - `type`
-- Returns a `BigInt` instead of a number string for the following properties:
- - `gasPrice`
- - `maxFeePerGas`
- - `maxPriorityFeePerGas`
- - `value`
- - `chainId`
-
-#### web3.eth.getPendingTransactions
-
-- Returns a `BigInt` instead of a number for the following properties:
- - `blockNumber`
- - `gas`
- - `nonce`
- - `transactionIndex`
- - `type`
-- Returns a `BigInt` instead of a number string for the following properties:
- - `gasPrice`
- - `maxFeePerGas`
- - `maxPriorityFeePerGas`
- - `value`
-
-#### web3.eth.getTransactionFromBlock
-
-- Returns a `BigInt` instead of a number for the following properties:
- - `blockNumber`
- - `gas`
- - `nonce`
- - `transactionIndex`
- - `type`
-- Returns a `BigInt` instead of a number string for the following properties:
- - `gasPrice`
- - `maxFeePerGas`
- - `maxPriorityFeePerGas`
- - `value`
-
-#### web3.eth.getTransactionReceipt
-
-- Returns a `BigInt` instead of a number for the following properties:
- - `blockNumber`
- - `cumulativeGasUsed`
- - `effectiveGasPrice`
- - `gasUsed`
- - `transactionIndex`
-- Returns a `BigInt` instead of a boolean for the following properties:
- - `status`
-
-#### web3.eth.sendSignedTransaction
-
-- Returns a `BigInt` instead of a number for the following properties:
- - `blockNumber`
- - `cumulativeGasUsed`
- - `effectiveGasPrice`
- - `gasUsed`
- - `transactionIndex`
-- Returns a `BigInt` instead of a boolean for the following properties:
- - `status`
-
-### Not Implemented
-
-- [extend](https://web3js.readthedocs.io/en/v1.7.3/web3-eth.html#extend) functionality not implemented
-
-### Defaults and Configs
-
-- In 1.x all default values that returned `null` now return `undefined` in 4.x, these include:
-
- - `givenProvider`
- - `currentProvider`
- - `web3.eth.defaultAccount`
- - 1.x has `undefined` documented as default, but in implementation it's `null`
-
-- `web3.eth.defaultHardfork` default is `"london"` instead of `undefined`
- - 1.x has `"london"` documented as default, but in implementation it's `undefined`
-- `web3.eth.defaultChain` default is `"mainnet"` instead of `undefined`
- - 1.x has `"mainnet"` documented as default, but in implementation it's `undefined`
-
-### Web3Zond Methods
-
-#### web3.eth.getHashrate
-
-4.x `getHashrate` is deprecated, and will be removed in a future release. Please use `getHashRate`.
-
-```
-web3.eth.getHashrate // -> deprecated, do not use
-web3.eth.getHashRate // -> correct usage
-```
-
-#### web3.eth.getFeeHistory
-
-4.x returns a `BigInt` for `oldestBlock` instead of the hex string that's returned in 1.x.
-
-```typescript
-// in 1.x
-await web3.eth.getFeeHistory('0x1', 'latest', []);
-// {
-// oldestBlock: '0x0',
-// baseFeePerGas: [ '0x3b9aca00', '0x342770c0' ],
-// gasUsedRatio: [ 0 ]
-// }
-
-// in 4.x
-await web3.eth.getFeeHistory('0x1', 'latest', []);
-// {
-// oldestBlock: 0n,
-// baseFeePerGas: [ '0x3b9aca00', '0x342770c0' ],
-// gasUsedRatio: [ 0 ]
-// }
-```
-
-#### web3.eth.sendTransaction
-
-- `userTransactionObject.chain` no longer defaults to `"mainnet"`, will be `undefined` if not provided
-- `userTransactionObject.hardfork` no longer defaults to `"london"`, will be `undefined` if not provided
-
-### PromiEvents
-
-#### sending
-
-- In 1.x, the event listener would receive a `payload` object as an argument. In 4.x, just the sent transaction object is recieved
-
-```typescript
-// in 1.x
-web3.eth.sendTransaction({ ... }).on('sending', (payload) => { ... });
-// payload would be:
-// {
-// method: 'zond_sendTransaction',
-// params: [
-// {
-// from: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
-// to: '0x0000000000000000000000000000000000000000',
-// value: '0x1',
-// maxPriorityFeePerGas: '0x9502F900',
-// maxFeePerGas: '0xc3e17d20'
-// }
-// ],
-// callback: undefined
-// }
-
-// in 4.x
-web3.eth.sendTransaction({ ... }).on('sending', (sendTransactionObject) => { ... });
-// sendTransactionObject would be:
-// {
-// from: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
-// to: '0x0000000000000000000000000000000000000000',
-// value: '0x1',
-// gasPrice: '0x77359400',
-// maxPriorityFeePerGas: undefined,
-// maxFeePerGas: undefined
-// }
-```
-
-#### sent
-
-- In 1.x, the event listener would receive a `payload` object as an argument. In 4.x just the sent transaction object is recieved
-
-```typescript
-// in 1.x
-web3.eth.sendTransaction({ ... }).on('sent', (payload) => { ... });
-// payload would be:
-// {
-// method: 'zond_sendTransaction',
-// params: [
-// {
-// from: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
-// to: '0x0000000000000000000000000000000000000000',
-// value: '0x1'
-// }
-// ],
-// callback: undefined
-// }
-
-// in 4.x
-web3.eth.sendTransaction({ ... }).on('sent', (sentTransactionObject) => { ... });
-// sentTransactionObject would be:
-// {
-// from: '0x6E599DA0bfF7A6598AC1224E4985430Bf16458a4',
-// to: '0x0000000000000000000000000000000000000000',
-// value: '0x1',
-// gasPrice: '0x77359400',
-// maxPriorityFeePerGas: undefined,
-// maxFeePerGas: undefined
-// }
-```
-
-#### receipt
-
-- The `receipt` object the event listener receives:
- - Returns a `BigInt` instead of a number for the following properties:
- - `transactionIndex`
- - `blockNumber`
- - `cumulativeGasUsed`
- - `gasUsed`
- - `effectiveGasPrice`
- - Returns a `BigInt` instead of a boolean for the following properties:
- - `status`
-
-```typescript
-// in 1.x
-web3.eth.sendTransaction({ ... }).on('receipt', (receipt) => { ... });
-// receipt would be:
-// {
-// blockHash: '0x55ff0699736027fd0eddf90e890294ba6765ecf699cefd2f6c255a2fdae06a5a',
-// blockNumber: 14966017n,
-// cumulativeGasUsed: 6992382n,
-// effectiveGasPrice: 31200410061n,
-// from: '0x3b7414be92e87837d6f95d01b8e3c93ac9d20804',
-// gasUsed: 21000n,
-// logs: [],
-// logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
-// status: 1n,
-// to: '0x8b664e252b7c5c87c17e73c69f16e56454c9661f',
-// transactionHash: '0x219f94fa188e6a0927c3c659537b5c76f4a750b948e7a73c80b28786227aa593',
-// transactionIndex: 80n,
-// type: 2n
-// }
-
-// in 4.x
-web3.eth.sendTransaction({ ... }).on('receipt', (receipt) => { ... });
-// receipt would be:
-// {
-// transactionHash: '0xef37e818889e7b40df24f8546ae15b16cda7e8fdc99ad76356611401cb4c4f93',
-// transactionIndex: '0x0',
-// blockNumber: '0xf',
-// blockHash: '0x8a700d6665a5b91789f7525490c453d55208f7560662aa3ff2eaab8d297bfd07',
-// from: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
-// to: '0x0000000000000000000000000000000000000000',
-// cumulativeGasUsed: '0x5208',
-// gasUsed: '0x5208',
-// logs: [],
-// logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
-// status: '0x1',
-// effectiveGasPrice: '0x77359400',
-// type: '0x0'
-// }
-```
-
-#### confirmation
-
-- In 1.x, this event listener would receive `confirmationNumber` and `receipt` as arguments, in 4.x an object containing the properties: `confirmationNumber`, `receipt`, and `latestBlockHash` will be received
-- `confirmationNumber` is returned as a `BigInt` instead of a number
-- For the returned `receipt` object:
- - Returns a `BigInt` instead of a number for the following properties:
- - `transactionIndex`
- - `blockNumber`
- - `cumulativeGasUsed`
- - `gasUsed`
- - `effectiveGasPrice`
- - Returns a `BigInt` instead of a boolean for the following properties:
- - `status`
-
-```typescript
-// in 1.x
-web3.eth.sendTransaction({ ... }).on('confirmation', (confirmationNumber, receipt) => { ... });
-// confirmationNumber would be: 1
-// receipt would be:
-// {
-// transactionHash: '0x1e657e53a0e5a75fe36af8a05c89b8a8ea155c951ce43a7c42a77a48c4c89e2f',
-// transactionIndex: 0,
-// blockNumber: 2,
-// blockHash: '0x940bfb359be8064d7c65408efaba3068bdd6995b810aae5fb355bd3d95d3079b',
-// from: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
-// to: '0x0000000000000000000000000000000000000000',
-// cumulativeGasUsed: 21000,
-// gasUsed: 21000,
-// contractAddress: null,
-// logs: [],
-// logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
-// status: true,
-// effectiveGasPrice: 3265778125,
-// type: '0x2'
-// }
-
-// in 4.x
-web3.eth.sendTransaction({ ... }).on('confirmation', (confirmationObject) => { ... });
-// confirmationObject would have the following structure:
-// {
-// confirmationNumber: 2n,
-// receipt: {
-// transactionHash: '0xd93fe25c2066cd8f15565bcff693507a3c70f5fb9387db57f939ae91f4080c6c',
-// transactionIndex: 0n,
-// blockNumber: 5n,
-// blockHash: '0xe1775977a8041cb2709136804e4be609135f8367b49d38960f92a95b4c02189a',
-// from: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
-// to: '0x0000000000000000000000000000000000000000',
-// cumulativeGasUsed: 5208n,
-// gasUsed: 5208n,
-// logs: [],
-// logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
-// status: 1n,
-// effectiveGasPrice: 77359400n,
-// type: '0x0'
-// },
-// latestBlockHash: '0xb2ef3763190da82d8efa938f73efa5bb21e3d95c2ce25dd38ca21eea1a942260'
-// }
-```
-
-- In 1.x, an event was emitted for each confirmation starting from `0` (the first block the transaction was included in), in 4.x confirmations start from `1` and the first event to be emitted will have a `confirmationNumber` of `2`
-
-```typescript
-// in 1.x
-web3.eth.sendTransaction({ ... }).on('confirmation', (confirmationNumber, receipt) => {
- // confirmationNumber would equal 1 the first time the event was emitted
- // confirmationNumber would then equal 2 the next time
- // and so on until 12 (or whatever transactionConfirmationBlocks is set to) confirmations are found
-});
-
-// in 4.x
-web3.eth.sendTransaction({ ... }).on('confirmation', (confirmationObject) => {
- // confirmationNumber would equal 2 the first time the event was emitted
- // confirmationNumber would then equal 3 the next time
- // and so on until 12 (or whatever transactionConfirmationBlocks is set to) confirmations are found
-});
-```
-
-### web3.eth.sign
-
-- To-be-signed data must be provided as a `HexString`
-
-```typescript
-// In 1.x, data can be provided as both a UTF-8 string and a hex string
-await web3.eth.sign('Hello world', '0xd8c375f286c258521564da00ddee3945d1d057c4');
-// 0x7907ca312eb55a54673255dfa4e947d7533dcf746460c82b50e281fe88a6f0d17d602d2205b2d7c137cf7cb9b86a7ea976fd062e39bc08373dffa72f020776e11c
-await web3.eth.sign(
- web3.utils.utf8ToHex('Hello world'),
- '0xd8c375f286c258521564da00ddee3945d1d057c4',
-);
-// 0x7907ca312eb55a54673255dfa4e947d7533dcf746460c82b50e281fe88a6f0d17d602d2205b2d7c137cf7cb9b86a7ea976fd062e39bc08373dffa72f020776e11c
-
-// 4.x only supports Hex Strings
-await web3.eth.sign(
- web3.utils.utf8ToHex('Hello world'),
- '0xd8c375f286c258521564da00ddee3945d1d057c4',
-);
-// 0x7907ca312eb55a54673255dfa4e947d7533dcf746460c82b50e281fe88a6f0d17d602d2205b2d7c137cf7cb9b86a7ea976fd062e39bc08373dffa72f020776e11c
-```
-
-### web3.eth.signTransaction
-
-- In 1.x, for untyped, `0x0` and `0x1` typed transactions, `maxPriorityFeePerGas` and `maxFeePerGas` are set to `null`. For `0x2` typed transactions, `gasPrice` is set to `null`. In 4.x these properties are not present unless provided
-- In 1.x contract deployment data is provided via the `input` property, while in 4.x it is provided using the `data` property
-- In 1.x the hash of the transaction is included in the returned `transaction` object, while in 4.x it's not
-
-```typescript
-// In 1.x - Legacy (type 0x0) transaction
-await web3.eth.signTransaction({
- from: '0x95Cd1391888fe2460371c67cc3e45b9579c3E0dA',
- to: '0x6E599DA0bfF7A6598AC1224E4985430Bf16458a4',
- gas: '21000',
- gasPrice: '0xc3e17d20',
- nonce: '0x4',
-});
-// {
-// raw: '0x02f86c82053904849502f90084c3e17d20825208946e599da0bff7a6598ac1224e4985430bf16458a48080c080a0711c981b34204725019d9851ee0c127543b0c7caf4f8850024e26aefabf26f20a033d8447d959bd596c90d57db90917a126b95a0f152c9c86b36d97b177f7ae85f',
-// tx: {
-// type: '0x2',
-// nonce: '0x4',
-// gasPrice: '0xc3e17d20,
-// maxPriorityFeePerGas: null,
-// maxFeePerGas: null,
-// gas: '0x5208',
-// value: '0x0',
-// input: '0x',
-// v: '0x0',
-// r: '0x711c981b34204725019d9851ee0c127543b0c7caf4f8850024e26aefabf26f20',
-// s: '0x33d8447d959bd596c90d57db90917a126b95a0f152c9c86b36d97b177f7ae85f',
-// to: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
-// chainId: '0x539',
-// accessList: [],
-// hash: '0x2ddb1224899bcbc07c89631870870c61195214bab64d60985cd6d8f1c2fd872b'
-// }
-// }
-
-// In 1.x - EIP-1559 (type 0x2) transaction
-await web3.eth.signTransaction({
- from: '0x95Cd1391888fe2460371c67cc3e45b9579c3E0dA',
- to: '0x6E599DA0bfF7A6598AC1224E4985430Bf16458a4',
- gas: '21000',
- maxPriorityFeePerGas: '0x9502F900',
- maxFeePerGas: '0xc3e17d20',
- nonce: '0x4',
-});
-// {
-// raw: '0x02f86c82053904849502f90084c3e17d20825208946e599da0bff7a6598ac1224e4985430bf16458a48080c080a0711c981b34204725019d9851ee0c127543b0c7caf4f8850024e26aefabf26f20a033d8447d959bd596c90d57db90917a126b95a0f152c9c86b36d97b177f7ae85f',
-// tx: {
-// type: '0x2',
-// nonce: '0x4',
-// gasPrice: null,
-// maxPriorityFeePerGas: '0x9502f900',
-// maxFeePerGas: '0xc3e17d20',
-// gas: '0x5208',
-// value: '0x0',
-// input: '0x',
-// v: '0x0',
-// r: '0x711c981b34204725019d9851ee0c127543b0c7caf4f8850024e26aefabf26f20',
-// s: '0x33d8447d959bd596c90d57db90917a126b95a0f152c9c86b36d97b177f7ae85f',
-// to: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
-// chainId: '0x539',
-// accessList: [],
-// hash: '0x2ddb1224899bcbc07c89631870870c61195214bab64d60985cd6d8f1c2fd872b'
-// }
-// }
-
-// In 4.x - Legacy (type 0x0) transaction
-await web3.eth.signTransaction({
- from: '0x95Cd1391888fe2460371c67cc3e45b9579c3E0dA',
- to: '0x6E599DA0bfF7A6598AC1224E4985430Bf16458a4',
- gas: '21000',
- gasPrice: '0xc3e17d20',
- nonce: '0x4',
-});
-// {
-// raw: '0x02f86c82053904849502f90084c3e17d20825208946e599da0bff7a6598ac1224e4985430bf16458a48080c080a0711c981b34204725019d9851ee0c127543b0c7caf4f8850024e26aefabf26f20a033d8447d959bd596c90d57db90917a126b95a0f152c9c86b36d97b177f7ae85f',
-// tx: {
-// type: 2n,
-// nonce: 4n,
-// gasPrice: 3286334752n,
-// gas: 21000n,
-// value: 0n,
-// v: 0n,
-// r: '0x711c981b34204725019d9851ee0c127543b0c7caf4f8850024e26aefabf26f20',
-// s: '0x33d8447d959bd596c90d57db90917a126b95a0f152c9c86b36d97b177f7ae85f',
-// to: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
-// chainId: 1337n,
-// accessList: [],
-// data: '0x'
-// }
-// }
-
-// In 4.x - EIP-1559 (type 0x2) transaction
-await web3.eth.signTransaction({
- from: '0x95Cd1391888fe2460371c67cc3e45b9579c3E0dA',
- to: '0x6E599DA0bfF7A6598AC1224E4985430Bf16458a4',
- gas: '21000',
- maxPriorityFeePerGas: '0x9502F900',
- maxFeePerGas: '0xc3e17d20',
- nonce: '0x4',
-});
-// {
-// raw: '0x02f86c82053904849502f90084c3e17d20825208946e599da0bff7a6598ac1224e4985430bf16458a48080c080a0711c981b34204725019d9851ee0c127543b0c7caf4f8850024e26aefabf26f20a033d8447d959bd596c90d57db90917a126b95a0f152c9c86b36d97b177f7ae85f',
-// tx: {
-// type: 2n,
-// nonce: 4n,
-// maxPriorityFeePerGas: 2500000000n,
-// maxFeePerGas: 3286334752n,
-// gas: 21000n,
-// value: 0n,
-// v: 0n,
-// r: '0x711c981b34204725019d9851ee0c127543b0c7caf4f8850024e26aefabf26f20',
-// s: '0x33d8447d959bd596c90d57db90917a126b95a0f152c9c86b36d97b177f7ae85f',
-// to: '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
-// chainId: 1337n,
-// accessList: [],
-// data: '0x'
-// }
-// }
-```
-
-### web3.eth.getPastLogs
-
-- Returns a `BigInt` instead of a number for the following properties:
- - `logIndex`
- - `transactionIndex`
- - `blockNumber`
-
-```typescript
-//in 1.x
-await web3.eth
- .getPastLogs({
- address: '0xE012dB5CA859A3238DdC576c0092BA5E728B7268',
- topics: ['0x617cf8a4400dd7963ed519ebe655a16e8da1282bb8fea36a21f634af912f54ab'],
- })
- .then(console.log);
-// [
-// {
-// address: "0xe405df0ea854cd98df9f646559ce2001396e8f5b",
-// topics: [
-// "0x617cf8a4400dd7963ed519ebe655a16e8da1282bb8fea36a21f634af912f54ab",
-// ],
-// data: "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000027431000000000000000000000000000000000000000000000000000000000000",
-// blockNumber: 221,
-// transactionHash:
-// "0xc96bbd8308f70940aa465ecdf95c7ce8c687dede5c53e5ce5ce55434c6e406bd",
-// transactionIndex: 0,
-// blockHash:
-// "0xfd1657fc5d2b18153aa569956718cd2d3a05285712208a9544dfc093966b9c5f",
-// logIndex: 0,
-// removed: false,
-// },
-// ];
-
-//in 4.x
-await web3.eth
- .getPastLogs({
- address: '0xE012dB5CA859A3238DdC576c0092BA5E728B7268',
- topics: ['0x617cf8a4400dd7963ed519ebe655a16e8da1282bb8fea36a21f634af912f54ab'],
- })
- .then(console.log);
-// [
-// {
-// address: "0xe405df0ea854cd98df9f646559ce2001396e8f5b",
-// topics: [
-// "0x617cf8a4400dd7963ed519ebe655a16e8da1282bb8fea36a21f634af912f54ab",
-// ],
-// data: "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000027431000000000000000000000000000000000000000000000000000000000000",
-// blockNumber: 221n,
-// transactionHash:
-// "0xc96bbd8308f70940aa465ecdf95c7ce8c687dede5c53e5ce5ce55434c6e406bd",
-// transactionIndex: 0n,
-// blockHash:
-// "0xfd1657fc5d2b18153aa569956718cd2d3a05285712208a9544dfc093966b9c5f",
-// logIndex: 0n,
-// removed: false,
-// },
-// ];
-```
-
-### web3.eth.getChainId
-
-Returns a `BigInt` instead of a number string.
-
-```typescript
-// in 1.x
-web3.eth.getChainId().then(console.log);
-// 1337
-
-// in 4.x
-web3.eth.getChainId().then(console.log);
-// 1337n
-```
-
-### web3.eth.getProof
-
-- Returns a `BigInt` instead of a number string for the following properties:
- - `balance`
- - `nonce`
-
-In 1.x, `balance` and `nonce` were described as numbers.
-
-```typescript
-// in 1.x
-web3.eth
- .getProof(
- '0x10d53fb7D9C9EedC40A97B51663fFd8DcC651a6b',
- [
- '0x0000000000000000000000000000000000000000000000000000000000000000',
- '0x0000000000000000000000000000000000000000000000000000000000000001',
- ],
- 'latest',
- )
- .then(console.log);
-// {
-// address: '0x10d53fb7D9C9EedC40A97B51663fFd8DcC651a6b',
-// accountProof: [
-// '0xf90211a057107845987d38b07b52dd91268d5a41dc0c5d262feb2a21a27165387bca0447a063d1f4079378d594b3a02ac552c5d303fd0ddda203d674114468ee1908e3c61ba06e25ed79c830f5375e01e142f165f2cfd9c6c966e3755f62ae7eac87b6972dcba0e9d751f777e854f7c87fc590f20bd45d5142dd804904746fe0eec6969ef2904ca0e5eb80b4790935a22f416cbdf7abf5658c1b26d9aadcaddda80dfd30fb477605a06ebd45fd404417976368dfc3225139b9c475cd199f0e2ec9dc2bc66894c7b478a0389e57b4c2e590bd7fc4a42c5f8d1ae4f03f981c8d10fd028fe8a8cd21d4b9f6a063662eba9e6e5c1229f73d9b8123a35e837ab9b51c12bd2c21342860a850be5fa088a53f78919dddb7ec2eddb967b7d74eeab59c0352fe0a9fceeab86d3061a2aea06fec4053b58d1914ef325a74d9ad13658f19478091484935cbfb82f2ace45d07a099455c1fe3bc9c9c90668fcaf3996182b0ea32c36b16b757f877981e74265313a07afabdbb861f9c9c801a8be8b9a30fcad67b0468c1599f3150417df833b1ed15a0937108ade09abe0eb7a5d5abf7834cb4d5c6a42256071a203c97e219c9b35e4fa07333b514b144076aedef8232f460a65c5845fb7bee1dffa3d02a63d27ee103dda02a5f97f2acf28a2ef6098553188bb578f5699e5ddd86e750906427c04146638aa0b1ea877b1fb989471890e9e0eea1ca9ecabe4a501f5427dcc6122ac602ec5e5a80',
-// '0xf8b1808080a01fcc2ac732952007a813f5d53b517a2f0c3b5faf38cd0654e564302e39e2fec68080a040cb340b7815612dc0705235c46f04565d5e7005b26b1544bd72d2a0cde1f7fb80a05902a1a7c70a64efedd39ed9ae25078e9054ab531c8fe4bdd7ff245ecd2bca0780a06117e0dc18ac6d32f46418eabf875a8cd21bf05b62013f87242824ca939cb776808080a0261eb1dc702fff2a022d7a2f0386224a760971187e3d6447958293f455aafbc78080',
-// '0xf869a02032c2889a72d251d4f0bbf5eb448f4af962917185a86532af762ff82865ca68b846f8440180a0291bd0e0825fa92cfeb0d3b28529bae6709aa1db89a25f7e62ba5422bbb1e10ea09bbff76f89bb6a6e787eea245acb599900f2d58faab236e165e2b32df0198c84'
-// ],
-// balance: '0',
-// codeHash: '0x9bbff76f89bb6a6e787eea245acb599900f2d58faab236e165e2b32df0198c84',
-// nonce: '1',
-// storageHash: '0x291bd0e0825fa92cfeb0d3b28529bae6709aa1db89a25f7e62ba5422bbb1e10e',
-// storageProof: [
-// {
-// key: '0x0',
-// value: '0x736f6c79656e7420677265656e2069732070656f706c6500000000000000002e',
-// proof: [Array]
-// },
-// { key: '0x1', value: '0x0', proof: [Array] }
-// ]
-//}
-// in 4.x
-web3.eth
- .getProof(
- '0x10d53fb7D9C9EedC40A97B51663fFd8DcC651a6b',
- [
- '0x0000000000000000000000000000000000000000000000000000000000000000',
- '0x0000000000000000000000000000000000000000000000000000000000000001',
- ],
- 'latest',
- )
- .then(console.log);
- {
-// accountProof: [
-// '0xf90211a057107845987d38b07b52dd91268d5a41dc0c5d262feb2a21a27165387bca0447a063d1f4079378d594b3a02ac552c5d303fd0ddda203d674114468ee1908e3c61ba06e25ed79c830f5375e01e142f165f2cfd9c6c966e3755f62ae7eac87b6972dcba0e9d751f777e854f7c87fc590f20bd45d5142dd804904746fe0eec6969ef2904ca0e5eb80b4790935a22f416cbdf7abf5658c1b26d9aadcaddda80dfd30fb477605a06ebd45fd404417976368dfc3225139b9c475cd199f0e2ec9dc2bc66894c7b478a0389e57b4c2e590bd7fc4a42c5f8d1ae4f03f981c8d10fd028fe8a8cd21d4b9f6a063662eba9e6e5c1229f73d9b8123a35e837ab9b51c12bd2c21342860a850be5fa088a53f78919dddb7ec2eddb967b7d74eeab59c0352fe0a9fceeab86d3061a2aea06fec4053b58d1914ef325a74d9ad13658f19478091484935cbfb82f2ace45d07a099455c1fe3bc9c9c90668fcaf3996182b0ea32c36b16b757f877981e74265313a07afabdbb861f9c9c801a8be8b9a30fcad67b0468c1599f3150417df833b1ed15a0937108ade09abe0eb7a5d5abf7834cb4d5c6a42256071a203c97e219c9b35e4fa07333b514b144076aedef8232f460a65c5845fb7bee1dffa3d02a63d27ee103dda02a5f97f2acf28a2ef6098553188bb578f5699e5ddd86e750906427c04146638aa0b1ea877b1fb989471890e9e0eea1ca9ecabe4a501f5427dcc6122ac602ec5e5a80',
-// '0xf8b1808080a01fcc2ac732952007a813f5d53b517a2f0c3b5faf38cd0654e564302e39e2fec68080a040cb340b7815612dc0705235c46f04565d5e7005b26b1544bd72d2a0cde1f7fb80a05902a1a7c70a64efedd39ed9ae25078e9054ab531c8fe4bdd7ff245ecd2bca0780a06117e0dc18ac6d32f46418eabf875a8cd21bf05b62013f87242824ca939cb776808080a0261eb1dc702fff2a022d7a2f0386224a760971187e3d6447958293f455aafbc78080',
-// '0xf869a02032c2889a72d251d4f0bbf5eb448f4af962917185a86532af762ff82865ca68b846f8440180a0291bd0e0825fa92cfeb0d3b28529bae6709aa1db89a25f7e62ba5422bbb1e10ea09bbff76f89bb6a6e787eea245acb599900f2d58faab236e165e2b32df0198c84'
-// ],
-// balance: 0n,
-// codeHash: '0x9bbff76f89bb6a6e787eea245acb599900f2d58faab236e165e2b32df0198c84',
-// nonce: 1n,
-// storageHash: '0x291bd0e0825fa92cfeb0d3b28529bae6709aa1db89a25f7e62ba5422bbb1e10e',
-// storageProof: [
-// {
-// key: '0x0000000000000000000000000000000000000000000000000000000000000000',
-// value: '0x736f6c79656e7420677265656e2069732070656f706c6500000000000000002e',
-// proof: [Array]
-// },
-// {
-// key: '0x0000000000000000000000000000000000000000000000000000000000000001',
-// value: '0x0',
-// proof: [Array]
-// }
-// ]
-// }
-```
diff --git a/docs/docs/guides/web3_upgrade_guide/1.x/web3_utils_migration_guide.md b/docs/docs/guides/web3_upgrade_guide/1.x/web3_utils_migration_guide.md
deleted file mode 100644
index 1b7410aa..00000000
--- a/docs/docs/guides/web3_upgrade_guide/1.x/web3_utils_migration_guide.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-sidebar_position: 11
-sidebar_label: web3.utils
----
-
-# web3 Utils Migration Guide
-
-## Import
-
-To make use you only import the utility functions which are needed by your app. We encourage the named import for `web3-utils` package. This change has no impact on the using the namespace `Web3.utils` or `web3.utils`. If you still want to import the full utils it can be done as following:
-
-```ts
-// 1.x
-import web3Utils from 'web3-utils';
-
-// 4.x
-import * as web3Utils from 'web3-utils';
-```
-
-## Unit conversion functions
-
-The `toWei` does not have an optional second parameter. You have to pass the source unit explicitly.
-
-```ts
-// 1.x
-web3.utils.toWei('0.1');
-
-// 4.x
-web3.utils.toWei('0.1', 'ether');
-```
-
-## Validation functions
-
-Validation functions has been moved to the new package `web3-validator`. Actually, you can still import them from `web3-util`. But they are marked as "deprecated" and you are encouraged to import them from `web3-validator`.
-
-However, there are changes for the following:
-
-### `isHex` and `isHexStrict` validation functions
-
-There is a fix, and some edge-cases-changes for those 2 functions but the overall functionality stayed the same. And here is exactly whet changed:
-
-#### `isHex` now returns `true` for all negative numbers
-
-```ts
-isHex('-123'); // in 1.x used to return `false`. But changed in 4.x to return `true`
-// `true`
-```
-
-#### `isHex` now returns `false` for an empty string
-
-```ts
-isHex(''); // in 1.x used to return `true`. But changed in 4.x to return `false`
-// `false`
-```
-
-#### `isHex` and `isHexStrict` now returns `false` for `'-0x'`
-
-```ts
-isHex('-0x'); // in 1.x used to return `true`. But changed in 4.x to return `false`
-// `false`
-
-isHexStrict('-0x'); // in 1.x used to return `true`. But changed in 4.x to return `false`
-// `false`
-```
-
-## Other functions
-
-`compareBlockNumbers` now accepts either both block tags or both block numbers for comparison as parameters. The only exception is comparison of block tag `earliest` with numbers.
-
-```ts
-compareBlockNumbers('earliest', 'safe'); // its valid comparison, and it will return `-1`
-
-compareBlockNumbers(8692, 2); // its valid comparison, and it will return `1`
-
-compareBlockNumbers('latest', 500); // in 1.x it used to return `1`, but now it will throw error InvalidBlockError
-```
diff --git a/docs/docs/guides/web3_upgrade_guide/_category_.yml b/docs/docs/guides/web3_upgrade_guide/_category_.yml
deleted file mode 100644
index 7c77bf16..00000000
--- a/docs/docs/guides/web3_upgrade_guide/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-label: 'Upgrading'
-collapsible: true
-collapsed: false
-link: null
\ No newline at end of file
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index 8f9258dd..8e6bb7ef 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -33,7 +33,6 @@ const packages = [
'@theqrl/web3-zond-accounts',
'@theqrl/web3-zond-ens',
'@theqrl/web3-zond-iban',
- '@theqrl/web3-zond-personal',
'@theqrl/web3-providers-http',
'@theqrl/web3-providers-ws',
'@theqrl/web3-providers-ipc',
@@ -96,7 +95,7 @@ const config = {
routeBasePath: '/', // Serve the docs at the site's root
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
- editUrl: 'https://github.com/web3/web3.js/tree/4.x/docs',
+ editUrl: 'https://github.com/theQRL/web3.js/tree/main/docs',
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
@@ -132,7 +131,7 @@ const config = {
position: 'left',
},
{
- href: 'https://github.com/ChainSafe/web3.js/tree/4.x/',
+ href: 'https://github.com/theQRL/web3.js/tree/main/',
label: 'GitHub',
position: 'right',
},
diff --git a/fixtures/build/Basic.json b/fixtures/build/Basic.json
index 13871960..d3fbe708 100644
--- a/fixtures/build/Basic.json
+++ b/fixtures/build/Basic.json
@@ -293,7 +293,7 @@
"type": "function"
}
],
- "evm": {
+ "zvm": {
"bytecode": {
"object": "60806040523480156200001157600080fd5b5060405162001068380380620010688339818101604052810190620000379190620002e7565b816000819055508060019080519060200190620000569291906200005f565b505050620003b1565b8280546200006d906200037c565b90600052602060002090601f016020900481019282620000915760008555620000dd565b82601f10620000ac57805160ff1916838001178555620000dd565b82800160010185558215620000dd579182015b82811115620000dc578251825591602001919060010190620000bf565b5b509050620000ec9190620000f0565b5090565b5b808211156200010b576000816000905550600101620000f1565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b620001388162000123565b81146200014457600080fd5b50565b60008151905062000158816200012d565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620001b38262000168565b810181811067ffffffffffffffff82111715620001d557620001d462000179565b5b80604052505050565b6000620001ea6200010f565b9050620001f88282620001a8565b919050565b600067ffffffffffffffff8211156200021b576200021a62000179565b5b620002268262000168565b9050602081019050919050565b60005b838110156200025357808201518184015260208101905062000236565b8381111562000263576000848401525b50505050565b6000620002806200027a84620001fd565b620001de565b9050828152602081018484840111156200029f576200029e62000163565b5b620002ac84828562000233565b509392505050565b600082601f830112620002cc57620002cb6200015e565b5b8151620002de84826020860162000269565b91505092915050565b6000806040838503121562000301576200030062000119565b5b6000620003118582860162000147565b925050602083015167ffffffffffffffff8111156200033557620003346200011e565b5b6200034385828601620002b4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200039557607f821691505b602082108103620003ab57620003aa6200034d565b5b50919050565b610ca780620003c16000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063844d6a3211610071578063844d6a3214610157578063939d7c4e14610161578063ae012ede1461017d578063b7a8238a14610187578063d7af8ac1146101a3578063e8256ea0146101bf576100b4565b806319eb4a90146100b95780632bfc4c69146100d95780633bccbbc9146100f75780635a018657146101015780637cfbdcf01461011d578063828909bd14610139575b600080fd5b6100c16101dd565b6040516100d093929190610680565b60405180910390f35b6100e161028e565b6040516100ee91906106be565b60405180910390f35b6100ff610320565b005b61011b60048036038101906101169190610881565b61035b565b005b61013760048036038101906101329190610950565b61039b565b005b6101416103e9565b60405161014e91906109c4565b60405180910390f35b61015f6103f2565b005b61017b60048036038101906101769190610881565b610435565b005b610185610475565b005b6101a1600480360381019061019c91906109df565b610482565b005b6101bd60048036038101906101b89190610a28565b6104bc565b005b6101c76104f9565b6040516101d49190610a97565b60405180910390f35b60006060600080546001600260009054906101000a900460ff1681805461020390610ae1565b80601f016020809104026020016040519081016040528092919081815260200182805461022f90610ae1565b801561027c5780601f106102515761010080835404028352916020019161027c565b820191906000526020600020905b81548152906001019060200180831161025f57829003601f168201915b50505050509150925092509250909192565b60606001805461029d90610ae1565b80601f01602080910402602001604051908101604052809291908181526020018280546102c990610ae1565b80156103165780601f106102eb57610100808354040283529160200191610316565b820191906000526020600020905b8154815290600101906020018083116102f957829003601f168201915b5050505050905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035290610b5e565b60405180910390fd5b7fa8297798732ff8a80a23cf22707934835a9d5b03536598708f7414646a1b95b383838360405161038e93929190610b7e565b60405180910390a1505050565b8015158285856040516103af929190610bec565b60405180910390207f5b5730af07e266d8b4845f404beb3b193085c686b0edd8e8e20cd4b3fc2b6cd560405160405180910390a450505050565b60008054905090565b6000610433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042a90610c51565b60405180910390fd5b565b801515827f553c4a49a36d26504ba0880f2f9bfe9ac7db4b81a893bde296546cd96ae0b33c8560405161046891906106be565b60405180910390a3505050565b600061048057600080fd5b565b7f617cf8a4400dd7963ed519ebe655a16e8da1282bb8fea36a21f634af912f54ab816040516104b191906106be565b60405180910390a150565b8260008190555081600190805190602001906104d9929190610510565b5080600260006101000a81548160ff021916908315150217905550505050565b6000600260009054906101000a900460ff16905090565b82805461051c90610ae1565b90600052602060002090601f01602090048101928261053e5760008555610585565b82601f1061055757805160ff1916838001178555610585565b82800160010185558215610585579182015b82811115610584578251825591602001919060010190610569565b5b5090506105929190610596565b5090565b5b808211156105af576000816000905550600101610597565b5090565b6000819050919050565b6105c6816105b3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156106065780820151818401526020810190506105eb565b83811115610615576000848401525b50505050565b6000601f19601f8301169050919050565b6000610637826105cc565b61064181856105d7565b93506106518185602086016105e8565b61065a8161061b565b840191505092915050565b60008115159050919050565b61067a81610665565b82525050565b600060608201905061069560008301866105bd565b81810360208301526106a7818561062c565b90506106b66040830184610671565b949350505050565b600060208201905081810360008301526106d8818461062c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6107368261061b565b810181811067ffffffffffffffff82111715610755576107546106fe565b5b80604052505050565b60006107686106e0565b9050610774828261072d565b919050565b600067ffffffffffffffff821115610794576107936106fe565b5b61079d8261061b565b9050602081019050919050565b82818337600083830152505050565b60006107cc6107c784610779565b61075e565b9050828152602081018484840111156107e8576107e76106f9565b5b6107f38482856107aa565b509392505050565b600082601f8301126108105761080f6106f4565b5b81356108208482602086016107b9565b91505092915050565b610832816105b3565b811461083d57600080fd5b50565b60008135905061084f81610829565b92915050565b61085e81610665565b811461086957600080fd5b50565b60008135905061087b81610855565b92915050565b60008060006060848603121561089a576108996106ea565b5b600084013567ffffffffffffffff8111156108b8576108b76106ef565b5b6108c4868287016107fb565b93505060206108d586828701610840565b92505060406108e68682870161086c565b9150509250925092565b600080fd5b600080fd5b60008083601f8401126109105761090f6106f4565b5b8235905067ffffffffffffffff81111561092d5761092c6108f0565b5b602083019150836001820283011115610949576109486108f5565b5b9250929050565b6000806000806060858703121561096a576109696106ea565b5b600085013567ffffffffffffffff811115610988576109876106ef565b5b610994878288016108fa565b945094505060206109a787828801610840565b92505060406109b88782880161086c565b91505092959194509250565b60006020820190506109d960008301846105bd565b92915050565b6000602082840312156109f5576109f46106ea565b5b600082013567ffffffffffffffff811115610a1357610a126106ef565b5b610a1f848285016107fb565b91505092915050565b600080600060608486031215610a4157610a406106ea565b5b6000610a4f86828701610840565b935050602084013567ffffffffffffffff811115610a7057610a6f6106ef565b5b610a7c868287016107fb565b9250506040610a8d8682870161086c565b9150509250925092565b6000602082019050610aac6000830184610671565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610af957607f821691505b602082108103610b0c57610b0b610ab2565b5b50919050565b7f5245564552544544205749544820524556455254000000000000000000000000600082015250565b6000610b486014836105d7565b9150610b5382610b12565b602082019050919050565b60006020820190508181036000830152610b7781610b3b565b9050919050565b60006060820190508181036000830152610b98818661062c565b9050610ba760208301856105bd565b610bb46040830184610671565b949350505050565b600081905092915050565b6000610bd38385610bbc565b9350610be08385846107aa565b82840190509392505050565b6000610bf9828486610bc7565b91508190509392505050565b7f5245564552544544205749544820524551554952450000000000000000000000600082015250565b6000610c3b6015836105d7565b9150610c4682610c05565b602082019050919050565b60006020820190508181036000830152610c6a81610c2e565b905091905056fea2646970667358221220ca8ff7a2edb3cb30dd9de0ed5a0665fd7ee39e4680760776b264f55d8f5ef51c64736f6c634300080d0033"
}
diff --git a/fixtures/build/DeployRevert.json b/fixtures/build/DeployRevert.json
index a269cb96..4a78166d 100644
--- a/fixtures/build/DeployRevert.json
+++ b/fixtures/build/DeployRevert.json
@@ -6,7 +6,7 @@
"type": "constructor"
}
],
- "evm": {
+ "zvm": {
"bytecode": {
"object": "6080604052348015600f57600080fd5b506000601a57600080fd5b603f8060276000396000f3fe6080604052600080fdfea264697066735822122097fd7c0cdcb3a8015df4cce061a4d7f8c2919787475e0b07d1b0ec13223097ac64736f6c63430008100033"
}
diff --git a/fixtures/build/ERC20Token.json b/fixtures/build/ERC20Token.json
index 98469b05..66db45dc 100644
--- a/fixtures/build/ERC20Token.json
+++ b/fixtures/build/ERC20Token.json
@@ -282,7 +282,7 @@
"type": "function"
}
],
- "evm": {
+ "zvm": {
"bytecode": {
"object": "60806040523480156200001157600080fd5b5060405162001990380380620019908339818101604052810190620000379190620002a4565b6040518060400160405280600481526020017f476f6c64000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f474c4400000000000000000000000000000000000000000000000000000000008152508160039081620000b4919062000546565b508060049081620000c6919062000546565b505050620000db3382620000e260201b60201c565b5062000748565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000154576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200014b906200068e565b60405180910390fd5b62000168600083836200025a60201b60201c565b80600260008282546200017c9190620006df565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001d39190620006df565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200023a91906200072b565b60405180910390a362000256600083836200025f60201b60201c565b5050565b505050565b505050565b600080fd5b6000819050919050565b6200027e8162000269565b81146200028a57600080fd5b50565b6000815190506200029e8162000273565b92915050565b600060208284031215620002bd57620002bc62000264565b5b6000620002cd848285016200028d565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200035857607f821691505b6020821081036200036e576200036d62000310565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000399565b620003e4868362000399565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000427620004216200041b8462000269565b620003fc565b62000269565b9050919050565b6000819050919050565b620004438362000406565b6200045b62000452826200042e565b848454620003a6565b825550505050565b600090565b6200047262000463565b6200047f81848462000438565b505050565b5b81811015620004a7576200049b60008262000468565b60018101905062000485565b5050565b601f821115620004f657620004c08162000374565b620004cb8462000389565b81016020851015620004db578190505b620004f3620004ea8562000389565b83018262000484565b50505b505050565b600082821c905092915050565b60006200051b60001984600802620004fb565b1980831691505092915050565b600062000536838362000508565b9150826002028217905092915050565b6200055182620002d6565b67ffffffffffffffff8111156200056d576200056c620002e1565b5b6200057982546200033f565b62000586828285620004ab565b600060209050601f831160018114620005be5760008415620005a9578287015190505b620005b5858262000528565b86555062000625565b601f198416620005ce8662000374565b60005b82811015620005f857848901518255600182019150602085019450602081019050620005d1565b8683101562000618578489015162000614601f89168262000508565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000676601f836200062d565b915062000683826200063e565b602082019050919050565b60006020820190508181036000830152620006a98162000667565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006ec8262000269565b9150620006f98362000269565b9250828201905080821115620007145762000713620006b0565b5b92915050565b620007258162000269565b82525050565b60006020820190506200074260008301846200071a565b92915050565b61123880620007586000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b15565b60405180910390f35b6100e660048036038101906100e19190610bd0565b610308565b6040516100f39190610c2b565b60405180910390f35b61010461032b565b6040516101119190610c55565b60405180910390f35b610134600480360381019061012f9190610c70565b610335565b6040516101419190610c2b565b60405180910390f35b610152610364565b60405161015f9190610cdf565b60405180910390f35b610182600480360381019061017d9190610bd0565b61036d565b60405161018f9190610c2b565b60405180910390f35b6101b260048036038101906101ad9190610cfa565b6103a4565b6040516101bf9190610c55565b60405180910390f35b6101d06103ec565b6040516101dd9190610b15565b60405180910390f35b61020060048036038101906101fb9190610bd0565b61047e565b60405161020d9190610c2b565b60405180910390f35b610230600480360381019061022b9190610bd0565b6104f5565b60405161023d9190610c2b565b60405180910390f35b610260600480360381019061025b9190610d27565b610518565b60405161026d9190610c55565b60405180910390f35b60606003805461028590610d96565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d96565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610df6565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d96565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d96565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e9c565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610fc0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c55565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df9061102c565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611150565b60405180910390fd5b6108e5838383610a7b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906111e2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109fe9190610df6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a629190610c55565b60405180910390a3610a75848484610a80565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610abf578082015181840152602081019050610aa4565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ae782610a85565b610af18185610a90565b9350610b01818560208601610aa1565b610b0a81610acb565b840191505092915050565b60006020820190508181036000830152610b2f8184610adc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b6782610b3c565b9050919050565b610b7781610b5c565b8114610b8257600080fd5b50565b600081359050610b9481610b6e565b92915050565b6000819050919050565b610bad81610b9a565b8114610bb857600080fd5b50565b600081359050610bca81610ba4565b92915050565b60008060408385031215610be757610be6610b37565b5b6000610bf585828601610b85565b9250506020610c0685828601610bbb565b9150509250929050565b60008115159050919050565b610c2581610c10565b82525050565b6000602082019050610c406000830184610c1c565b92915050565b610c4f81610b9a565b82525050565b6000602082019050610c6a6000830184610c46565b92915050565b600080600060608486031215610c8957610c88610b37565b5b6000610c9786828701610b85565b9350506020610ca886828701610b85565b9250506040610cb986828701610bbb565b9150509250925092565b600060ff82169050919050565b610cd981610cc3565b82525050565b6000602082019050610cf46000830184610cd0565b92915050565b600060208284031215610d1057610d0f610b37565b5b6000610d1e84828501610b85565b91505092915050565b60008060408385031215610d3e57610d3d610b37565b5b6000610d4c85828601610b85565b9250506020610d5d85828601610b85565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610dae57607f821691505b602082108103610dc157610dc0610d67565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e0182610b9a565b9150610e0c83610b9a565b9250828201905080821115610e2457610e23610dc7565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610e86602583610a90565b9150610e9182610e2a565b604082019050919050565b60006020820190508181036000830152610eb581610e79565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f18602483610a90565b9150610f2382610ebc565b604082019050919050565b60006020820190508181036000830152610f4781610f0b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610faa602283610a90565b9150610fb582610f4e565b604082019050919050565b60006020820190508181036000830152610fd981610f9d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611016601d83610a90565b915061102182610fe0565b602082019050919050565b6000602082019050818103600083015261104581611009565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006110a8602583610a90565b91506110b38261104c565b604082019050919050565b600060208201905081810360008301526110d78161109b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061113a602383610a90565b9150611145826110de565b604082019050919050565b600060208201905081810360008301526111698161112d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111cc602683610a90565b91506111d782611170565b604082019050919050565b600060208201905081810360008301526111fb816111bf565b905091905056fea26469706673582212200f5d4d388d874300a0683419c878ee355f87f7a6d61c24dc48ad65d7996e729964736f6c63430008100033"
}
diff --git a/fixtures/build/ERC721Token.json b/fixtures/build/ERC721Token.json
index 805adc04..89d065b5 100644
--- a/fixtures/build/ERC721Token.json
+++ b/fixtures/build/ERC721Token.json
@@ -360,7 +360,7 @@
"type": "function"
}
],
- "evm": {
+ "zvm": {
"bytecode": {
"object": "60806040523480156200001157600080fd5b506040518060400160405280600881526020017f47616d654974656d0000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f49544d000000000000000000000000000000000000000000000000000000000081525081600090816200008f919062000324565b508060019081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b612a36806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063b88d4fde11610066578063b88d4fde1461025b578063c87b56dd14610277578063cf378343146102a7578063e985e9c5146102d7576100ea565b806370a08231146101f157806395d89b4114610221578063a22cb4651461023f576100ea565b8063095ea7b3116100c8578063095ea7b31461016d57806323b872dd1461018957806342842e0e146101a55780636352211e146101c1576100ea565b806301ffc9a7146100ef57806306fdde031461011f578063081812fc1461013d575b600080fd5b610109600480360381019061010491906117b5565b610307565b60405161011691906117fd565b60405180910390f35b6101276103e9565b60405161013491906118a8565b60405180910390f35b61015760048036038101906101529190611900565b61047b565b604051610164919061196e565b60405180910390f35b610187600480360381019061018291906119b5565b6104c1565b005b6101a3600480360381019061019e91906119f5565b6105d8565b005b6101bf60048036038101906101ba91906119f5565b610638565b005b6101db60048036038101906101d69190611900565b610658565b6040516101e8919061196e565b60405180910390f35b61020b60048036038101906102069190611a48565b610709565b6040516102189190611a84565b60405180910390f35b6102296107c0565b60405161023691906118a8565b60405180910390f35b61025960048036038101906102549190611acb565b610852565b005b61027560048036038101906102709190611c40565b610868565b005b610291600480360381019061028c9190611900565b6108ca565b60405161029e91906118a8565b60405180910390f35b6102c160048036038101906102bc9190611d64565b6109dc565b6040516102ce9190611a84565b60405180910390f35b6102f160048036038101906102ec9190611dc0565b610a13565b6040516102fe91906117fd565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103d257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103e257506103e182610aa7565b5b9050919050565b6060600080546103f890611e2f565b80601f016020809104026020016040519081016040528092919081815260200182805461042490611e2f565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b600061048682610b11565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104cc82610658565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361053c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053390611ed2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661055b610b5c565b73ffffffffffffffffffffffffffffffffffffffff16148061058a575061058981610584610b5c565b610a13565b5b6105c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c090611f64565b60405180910390fd5b6105d38383610b64565b505050565b6105e96105e3610b5c565b82610c1d565b610628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061f90611ff6565b60405180910390fd5b610633838383610cb2565b505050565b61065383838360405180602001604052806000815250610868565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f790612062565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610779576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610770906120f4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107cf90611e2f565b80601f01602080910402602001604051908101604052809291908181526020018280546107fb90611e2f565b80156108485780601f1061081d57610100808354040283529160200191610848565b820191906000526020600020905b81548152906001019060200180831161082b57829003601f168201915b5050505050905090565b61086461085d610b5c565b8383610f18565b5050565b610879610873610b5c565b83610c1d565b6108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af90611ff6565b60405180910390fd5b6108c484848484611084565b50505050565b60606108d582610b11565b60006006600084815260200190815260200160002080546108f590611e2f565b80601f016020809104026020016040519081016040528092919081815260200182805461092190611e2f565b801561096e5780601f106109435761010080835404028352916020019161096e565b820191906000526020600020905b81548152906001019060200180831161095157829003601f168201915b50505050509050600061097f6110e0565b905060008151036109945781925050506109d7565b6000825111156109c95780826040516020016109b1929190612150565b604051602081830303815290604052925050506109d7565b6109d2846110f7565b925050505b919050565b6000806109e9600761115f565b90506109f5848261116d565b6109ff8184611346565b610a0960076113b3565b8091505092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610b1a816113c9565b610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5090612062565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610bd783610658565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610c2983610658565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c6b5750610c6a8185610a13565b5b80610ca957508373ffffffffffffffffffffffffffffffffffffffff16610c918461047b565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610cd282610658565b73ffffffffffffffffffffffffffffffffffffffff1614610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f906121e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8e90612278565b60405180910390fd5b610da2838383611435565b610dad600082610b64565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dfd91906122c7565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e5491906122fb565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610f1383838361143a565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9061237b565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161107791906117fd565b60405180910390a3505050565b61108f848484610cb2565b61109b8484848461143f565b6110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d19061240d565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606061110282610b11565b600061110c6110e0565b9050600081511161112c5760405180602001604052806000815250611157565b80611136846115c6565b604051602001611147929190612150565b6040516020818303038152906040525b915050919050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390612479565b60405180910390fd5b6111e5816113c9565b15611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906124e5565b60405180910390fd5b61123160008383611435565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461128191906122fb565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46113426000838361143a565b5050565b61134f826113c9565b61138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138590612577565b60405180910390fd5b806006600084815260200190815260200160002090816113ae9190612743565b505050565b6001816000016000828254019250508190555050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b60006114608473ffffffffffffffffffffffffffffffffffffffff16611726565b156115b9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611489610b5c565b8786866040518563ffffffff1660e01b81526004016114ab949392919061286a565b6020604051808303816000875af19250505080156114e757506040513d601f19601f820116820180604052508101906114e491906128cb565b60015b611569573d8060008114611517576040519150601f19603f3d011682016040523d82523d6000602084013e61151c565b606091505b506000815103611561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115589061240d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506115be565b600190505b949350505050565b60606000820361160d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611721565b600082905060005b6000821461163f578080611628906128f8565b915050600a82611638919061296f565b9150611615565b60008167ffffffffffffffff81111561165b5761165a611b15565b5b6040519080825280601f01601f19166020018201604052801561168d5781602001600182028036833780820191505090505b5090505b6000851461171a576001826116a691906122c7565b9150600a856116b591906129a0565b60306116c191906122fb565b60f81b8183815181106116d7576116d66129d1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611713919061296f565b9450611691565b8093505050505b919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6117928161175d565b811461179d57600080fd5b50565b6000813590506117af81611789565b92915050565b6000602082840312156117cb576117ca611753565b5b60006117d9848285016117a0565b91505092915050565b60008115159050919050565b6117f7816117e2565b82525050565b600060208201905061181260008301846117ee565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611852578082015181840152602081019050611837565b60008484015250505050565b6000601f19601f8301169050919050565b600061187a82611818565b6118848185611823565b9350611894818560208601611834565b61189d8161185e565b840191505092915050565b600060208201905081810360008301526118c2818461186f565b905092915050565b6000819050919050565b6118dd816118ca565b81146118e857600080fd5b50565b6000813590506118fa816118d4565b92915050565b60006020828403121561191657611915611753565b5b6000611924848285016118eb565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119588261192d565b9050919050565b6119688161194d565b82525050565b6000602082019050611983600083018461195f565b92915050565b6119928161194d565b811461199d57600080fd5b50565b6000813590506119af81611989565b92915050565b600080604083850312156119cc576119cb611753565b5b60006119da858286016119a0565b92505060206119eb858286016118eb565b9150509250929050565b600080600060608486031215611a0e57611a0d611753565b5b6000611a1c868287016119a0565b9350506020611a2d868287016119a0565b9250506040611a3e868287016118eb565b9150509250925092565b600060208284031215611a5e57611a5d611753565b5b6000611a6c848285016119a0565b91505092915050565b611a7e816118ca565b82525050565b6000602082019050611a996000830184611a75565b92915050565b611aa8816117e2565b8114611ab357600080fd5b50565b600081359050611ac581611a9f565b92915050565b60008060408385031215611ae257611ae1611753565b5b6000611af0858286016119a0565b9250506020611b0185828601611ab6565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611b4d8261185e565b810181811067ffffffffffffffff82111715611b6c57611b6b611b15565b5b80604052505050565b6000611b7f611749565b9050611b8b8282611b44565b919050565b600067ffffffffffffffff821115611bab57611baa611b15565b5b611bb48261185e565b9050602081019050919050565b82818337600083830152505050565b6000611be3611bde84611b90565b611b75565b905082815260208101848484011115611bff57611bfe611b10565b5b611c0a848285611bc1565b509392505050565b600082601f830112611c2757611c26611b0b565b5b8135611c37848260208601611bd0565b91505092915050565b60008060008060808587031215611c5a57611c59611753565b5b6000611c68878288016119a0565b9450506020611c79878288016119a0565b9350506040611c8a878288016118eb565b925050606085013567ffffffffffffffff811115611cab57611caa611758565b5b611cb787828801611c12565b91505092959194509250565b600067ffffffffffffffff821115611cde57611cdd611b15565b5b611ce78261185e565b9050602081019050919050565b6000611d07611d0284611cc3565b611b75565b905082815260208101848484011115611d2357611d22611b10565b5b611d2e848285611bc1565b509392505050565b600082601f830112611d4b57611d4a611b0b565b5b8135611d5b848260208601611cf4565b91505092915050565b60008060408385031215611d7b57611d7a611753565b5b6000611d89858286016119a0565b925050602083013567ffffffffffffffff811115611daa57611da9611758565b5b611db685828601611d36565b9150509250929050565b60008060408385031215611dd757611dd6611753565b5b6000611de5858286016119a0565b9250506020611df6858286016119a0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e4757607f821691505b602082108103611e5a57611e59611e00565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ebc602183611823565b9150611ec782611e60565b604082019050919050565b60006020820190508181036000830152611eeb81611eaf565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000611f4e603e83611823565b9150611f5982611ef2565b604082019050919050565b60006020820190508181036000830152611f7d81611f41565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000611fe0602e83611823565b9150611feb82611f84565b604082019050919050565b6000602082019050818103600083015261200f81611fd3565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061204c601883611823565b915061205782612016565b602082019050919050565b6000602082019050818103600083015261207b8161203f565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006120de602983611823565b91506120e982612082565b604082019050919050565b6000602082019050818103600083015261210d816120d1565b9050919050565b600081905092915050565b600061212a82611818565b6121348185612114565b9350612144818560208601611834565b80840191505092915050565b600061215c828561211f565b9150612168828461211f565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006121d0602583611823565b91506121db82612174565b604082019050919050565b600060208201905081810360008301526121ff816121c3565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612262602483611823565b915061226d82612206565b604082019050919050565b6000602082019050818103600083015261229181612255565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122d2826118ca565b91506122dd836118ca565b92508282039050818111156122f5576122f4612298565b5b92915050565b6000612306826118ca565b9150612311836118ca565b925082820190508082111561232957612328612298565b5b92915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612365601983611823565b91506123708261232f565b602082019050919050565b6000602082019050818103600083015261239481612358565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006123f7603283611823565b91506124028261239b565b604082019050919050565b60006020820190508181036000830152612426816123ea565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612463602083611823565b915061246e8261242d565b602082019050919050565b6000602082019050818103600083015261249281612456565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006124cf601c83611823565b91506124da82612499565b602082019050919050565b600060208201905081810360008301526124fe816124c2565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000612561602e83611823565b915061256c82612505565b604082019050919050565b6000602082019050818103600083015261259081612554565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026125f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826125bc565b61260386836125bc565b95508019841693508086168417925050509392505050565b6000819050919050565b600061264061263b612636846118ca565b61261b565b6118ca565b9050919050565b6000819050919050565b61265a83612625565b61266e61266682612647565b8484546125c9565b825550505050565b600090565b612683612676565b61268e818484612651565b505050565b5b818110156126b2576126a760008261267b565b600181019050612694565b5050565b601f8211156126f7576126c881612597565b6126d1846125ac565b810160208510156126e0578190505b6126f46126ec856125ac565b830182612693565b50505b505050565b600082821c905092915050565b600061271a600019846008026126fc565b1980831691505092915050565b60006127338383612709565b9150826002028217905092915050565b61274c82611818565b67ffffffffffffffff81111561276557612764611b15565b5b61276f8254611e2f565b61277a8282856126b6565b600060209050601f8311600181146127ad576000841561279b578287015190505b6127a58582612727565b86555061280d565b601f1984166127bb86612597565b60005b828110156127e3578489015182556001820191506020850194506020810190506127be565b8683101561280057848901516127fc601f891682612709565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b600061283c82612815565b6128468185612820565b9350612856818560208601611834565b61285f8161185e565b840191505092915050565b600060808201905061287f600083018761195f565b61288c602083018661195f565b6128996040830185611a75565b81810360608301526128ab8184612831565b905095945050505050565b6000815190506128c581611789565b92915050565b6000602082840312156128e1576128e0611753565b5b60006128ef848285016128b6565b91505092915050565b6000612903826118ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361293557612934612298565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061297a826118ca565b9150612985836118ca565b92508261299557612994612940565b5b828204905092915050565b60006129ab826118ca565b91506129b6836118ca565b9250826129c6576129c5612940565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220646cbcc4f2750bbafd66aba1e32cf1d9d60ee7b67010014294621c87b820bc3364736f6c63430008100033"
}
diff --git a/fixtures/build/ErrorsContract.json b/fixtures/build/ErrorsContract.json
index 0a407d25..d6717711 100644
--- a/fixtures/build/ErrorsContract.json
+++ b/fixtures/build/ErrorsContract.json
@@ -36,7 +36,7 @@
"type": "function"
}
],
- "evm": {
+ "zvm": {
"bytecode": {
"object": "608060405260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005157600080fd5b5061029e806100616000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063593b0df41461003b5780638ec6371414610045575b600080fd5b61004361004f565b005b61004d6100fd565b005b600260011015610094576040517f8d6ea8be00000000000000000000000000000000000000000000000000000000815260040161008b90610248565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156100fa573d6000803e3d6000fd5b50565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610182576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156101e8573d6000803e3d6000fd5b50565b600082825260208201905092915050565b7f7265766572746564207573696e6720637573746f6d204572726f720000000000600082015250565b6000610232601b836101eb565b915061023d826101fc565b602082019050919050565b6000602082019050818103600083015261026181610225565b905091905056fea264697066735822122044b9ec500058314fc2322d787ecf6c99c1470d0ace05668c811cfe70fdd05c2764736f6c63430008100033"
}
diff --git a/fixtures/build/Greeter.json b/fixtures/build/Greeter.json
index ad25bbf5..80279e60 100644
--- a/fixtures/build/Greeter.json
+++ b/fixtures/build/Greeter.json
@@ -88,7 +88,7 @@
"type": "function"
}
],
- "evm": {
+ "zvm": {
"bytecode": {
"object": "60806040523480156200001157600080fd5b5060405162000ed038038062000ed08339818101604052810190620000379190620001ea565b806001908162000048919062000486565b5060008081905550506200056d565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620000c08262000075565b810181811067ffffffffffffffff82111715620000e257620000e162000086565b5b80604052505050565b6000620000f762000057565b9050620001058282620000b5565b919050565b600067ffffffffffffffff82111562000128576200012762000086565b5b620001338262000075565b9050602081019050919050565b60005b838110156200016057808201518184015260208101905062000143565b60008484015250505050565b6000620001836200017d846200010a565b620000eb565b905082815260208101848484011115620001a257620001a162000070565b5b620001af84828562000140565b509392505050565b600082601f830112620001cf57620001ce6200006b565b5b8151620001e18482602086016200016c565b91505092915050565b60006020828403121562000203576200020262000061565b5b600082015167ffffffffffffffff81111562000224576200022362000066565b5b6200023284828501620001b7565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200028e57607f821691505b602082108103620002a457620002a362000246565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200030e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002cf565b6200031a8683620002cf565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000367620003616200035b8462000332565b6200033c565b62000332565b9050919050565b6000819050919050565b620003838362000346565b6200039b62000392826200036e565b848454620002dc565b825550505050565b600090565b620003b2620003a3565b620003bf81848462000378565b505050565b5b81811015620003e757620003db600082620003a8565b600181019050620003c5565b5050565b601f82111562000436576200040081620002aa565b6200040b84620002bf565b810160208510156200041b578190505b620004336200042a85620002bf565b830182620003c4565b50505b505050565b600082821c905092915050565b60006200045b600019846008026200043b565b1980831691505092915050565b600062000476838362000448565b9150826002028217905092915050565b62000491826200023b565b67ffffffffffffffff811115620004ad57620004ac62000086565b5b620004b9825462000275565b620004c6828285620003eb565b600060209050601f831160018114620004fe5760008415620004e9578287015190505b620004f5858262000468565b86555062000565565b601f1984166200050e86620002aa565b60005b82811015620005385784890151825560018201915060208501945060208101905062000511565b8683101562000558578489015162000554601f89168262000448565b8355505b6001600288020188555050505b505050505050565b610953806200057d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063a413686214610046578063cfae321714610077578063d09de08a14610095575b600080fd5b610060600480360381019061005b91906103c0565b61009f565b60405161006e9291906104a3565b60405180910390f35b61007f6101bd565b60405161008c91906104d3565b60405180910390f35b61009d61024f565b005b600060607f0d363f2fba46ab11b6db8da0125b0d5484787c44e265b48810735998bab12b756001846040516100d59291906105ee565b60405180910390a182600190816100ec91906107c6565b507f7d7846723bda52976e0286c6efffee937ee9f76817a867ec70531ad29fb1fc0e600160405161011d9190610898565b60405180910390a160018080805461013490610524565b80601f016020809104026020016040519081016040528092919081815260200182805461016090610524565b80156101ad5780601f10610182576101008083540402835291602001916101ad565b820191906000526020600020905b81548152906001019060200180831161019057829003601f168201915b5050505050905091509150915091565b6060600180546101cc90610524565b80601f01602080910402602001604051908101604052809291908181526020018280546101f890610524565b80156102455780601f1061021a57610100808354040283529160200191610245565b820191906000526020600020905b81548152906001019060200180831161022857829003601f168201915b5050505050905090565b600160005461025e91906108e9565b600081905550565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6102cd82610284565b810181811067ffffffffffffffff821117156102ec576102eb610295565b5b80604052505050565b60006102ff610266565b905061030b82826102c4565b919050565b600067ffffffffffffffff82111561032b5761032a610295565b5b61033482610284565b9050602081019050919050565b82818337600083830152505050565b600061036361035e84610310565b6102f5565b90508281526020810184848401111561037f5761037e61027f565b5b61038a848285610341565b509392505050565b600082601f8301126103a7576103a661027a565b5b81356103b7848260208601610350565b91505092915050565b6000602082840312156103d6576103d5610270565b5b600082013567ffffffffffffffff8111156103f4576103f3610275565b5b61040084828501610392565b91505092915050565b60008115159050919050565b61041e81610409565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561045e578082015181840152602081019050610443565b60008484015250505050565b600061047582610424565b61047f818561042f565b935061048f818560208601610440565b61049881610284565b840191505092915050565b60006040820190506104b86000830185610415565b81810360208301526104ca818461046a565b90509392505050565b600060208201905081810360008301526104ed818461046a565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061053c57607f821691505b60208210810361054f5761054e6104f5565b5b50919050565b60008190508160005260206000209050919050565b6000815461057781610524565b610581818661042f565b9450600182166000811461059c57600181146105b2576105e5565b60ff1983168652811515602002860193506105e5565b6105bb85610555565b60005b838110156105dd578154818901526001820191506020810190506105be565b808801955050505b50505092915050565b60006040820190508181036000830152610608818561056a565b9050818103602083015261061c818461046a565b90509392505050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026106727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610635565b61067c8683610635565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006106c36106be6106b984610694565b61069e565b610694565b9050919050565b6000819050919050565b6106dd836106a8565b6106f16106e9826106ca565b848454610642565b825550505050565b600090565b6107066106f9565b6107118184846106d4565b505050565b5b818110156107355761072a6000826106fe565b600181019050610717565b5050565b601f82111561077a5761074b81610555565b61075484610625565b81016020851015610763578190505b61077761076f85610625565b830182610716565b50505b505050565b600082821c905092915050565b600061079d6000198460080261077f565b1980831691505092915050565b60006107b6838361078c565b9150826002028217905092915050565b6107cf82610424565b67ffffffffffffffff8111156107e8576107e7610295565b5b6107f28254610524565b6107fd828285610739565b600060209050601f831160018114610830576000841561081e578287015190505b61082885826107aa565b865550610890565b601f19841661083e86610555565b60005b8281101561086657848901518255600182019150602085019450602081019050610841565b86831015610883578489015161087f601f89168261078c565b8355505b6001600288020188555050505b505050505050565b600060208201905081810360008301526108b2818461056a565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108f482610694565b91506108ff83610694565b9250828201905080821115610917576109166108ba565b5b9291505056fea26469706673582212207e5ba44159ffb37af8e8a9e7c5b6fb5ce81ea195b62ae3ac36288f2cf72c18a764736f6c63430008100033"
}
diff --git a/fixtures/build/MsgSender.json b/fixtures/build/MsgSender.json
index 6db015bb..1bd11b5b 100644
--- a/fixtures/build/MsgSender.json
+++ b/fixtures/build/MsgSender.json
@@ -62,7 +62,7 @@
"type": "function"
}
],
- "evm": {
+ "zvm": {
"bytecode": {
"object": "60806040523480156200001157600080fd5b5060405162000d7538038062000d758339818101604052810190620000379190620001e3565b80600090816200004891906200047f565b505062000566565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620000b9826200006e565b810181811067ffffffffffffffff82111715620000db57620000da6200007f565b5b80604052505050565b6000620000f062000050565b9050620000fe8282620000ae565b919050565b600067ffffffffffffffff8211156200012157620001206200007f565b5b6200012c826200006e565b9050602081019050919050565b60005b83811015620001595780820151818401526020810190506200013c565b60008484015250505050565b60006200017c620001768462000103565b620000e4565b9050828152602081018484840111156200019b576200019a62000069565b5b620001a884828562000139565b509392505050565b600082601f830112620001c857620001c762000064565b5b8151620001da84826020860162000165565b91505092915050565b600060208284031215620001fc57620001fb6200005a565b5b600082015167ffffffffffffffff8111156200021d576200021c6200005f565b5b6200022b84828501620001b0565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200028757607f821691505b6020821081036200029d576200029c6200023f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002c8565b620003138683620002c8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003606200035a62000354846200032b565b62000335565b6200032b565b9050919050565b6000819050919050565b6200037c836200033f565b620003946200038b8262000367565b848454620002d5565b825550505050565b600090565b620003ab6200039c565b620003b881848462000371565b505050565b5b81811015620003e057620003d4600082620003a1565b600181019050620003be565b5050565b601f8211156200042f57620003f981620002a3565b6200040484620002b8565b8101602085101562000414578190505b6200042c6200042385620002b8565b830182620003bd565b50505b505050565b600082821c905092915050565b6000620004546000198460080262000434565b1980831691505092915050565b60006200046f838362000441565b9150826002028217905092915050565b6200048a8262000234565b67ffffffffffffffff811115620004a657620004a56200007f565b5b620004b282546200026e565b620004bf828285620003e4565b600060209050601f831160018114620004f75760008415620004e2578287015190505b620004ee858262000461565b8655506200055e565b601f1984166200050786620002a3565b60005b8281101562000531578489015182556001820191506020850194506020810190506200050a565b868310156200055157848901516200054d601f89168262000441565b8355505b6001600288020188555050505b505050505050565b6107ff80620005766000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063315e2f1b14610046578063d5ce338914610077578063fb8f0f5914610095575b600080fd5b610060600480360381019061005b9190610350565b6100b3565b60405161006e929190610433565b60405180910390f35b61007f610160565b60405161008c91906104a4565b60405180910390f35b61009d610168565b6040516100aa91906104bf565b60405180910390f35b6000606082600090816100c691906106f7565b50600160008080546100d790610510565b80601f016020809104026020016040519081016040528092919081815260200182805461010390610510565b80156101505780601f1061012557610100808354040283529160200191610150565b820191906000526020600020905b81548152906001019060200180831161013357829003601f168201915b5050505050905091509150915091565b600033905090565b6000805461017590610510565b80601f01602080910402602001604051908101604052809291908181526020018280546101a190610510565b80156101ee5780601f106101c3576101008083540402835291602001916101ee565b820191906000526020600020905b8154815290600101906020018083116101d157829003601f168201915b505050505081565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61025d82610214565b810181811067ffffffffffffffff8211171561027c5761027b610225565b5b80604052505050565b600061028f6101f6565b905061029b8282610254565b919050565b600067ffffffffffffffff8211156102bb576102ba610225565b5b6102c482610214565b9050602081019050919050565b82818337600083830152505050565b60006102f36102ee846102a0565b610285565b90508281526020810184848401111561030f5761030e61020f565b5b61031a8482856102d1565b509392505050565b600082601f8301126103375761033661020a565b5b81356103478482602086016102e0565b91505092915050565b60006020828403121561036657610365610200565b5b600082013567ffffffffffffffff81111561038457610383610205565b5b61039084828501610322565b91505092915050565b60008115159050919050565b6103ae81610399565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156103ee5780820151818401526020810190506103d3565b60008484015250505050565b6000610405826103b4565b61040f81856103bf565b935061041f8185602086016103d0565b61042881610214565b840191505092915050565b600060408201905061044860008301856103a5565b818103602083015261045a81846103fa565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061048e82610463565b9050919050565b61049e81610483565b82525050565b60006020820190506104b96000830184610495565b92915050565b600060208201905081810360008301526104d981846103fa565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061052857607f821691505b60208210810361053b5761053a6104e1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026105a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610566565b6105ad8683610566565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006105f46105ef6105ea846105c5565b6105cf565b6105c5565b9050919050565b6000819050919050565b61060e836105d9565b61062261061a826105fb565b848454610573565b825550505050565b600090565b61063761062a565b610642818484610605565b505050565b5b818110156106665761065b60008261062f565b600181019050610648565b5050565b601f8211156106ab5761067c81610541565b61068584610556565b81016020851015610694578190505b6106a86106a085610556565b830182610647565b50505b505050565b600082821c905092915050565b60006106ce600019846008026106b0565b1980831691505092915050565b60006106e783836106bd565b9150826002028217905092915050565b610700826103b4565b67ffffffffffffffff81111561071957610718610225565b5b6107238254610510565b61072e82828561066a565b600060209050601f831160018114610761576000841561074f578287015190505b61075985826106db565b8655506107c1565b601f19841661076f86610541565b60005b8281101561079757848901518255600182019150602085019450602081019050610772565b868310156107b457848901516107b0601f8916826106bd565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220f5b52b9777b17d7a9f963ebe1aebfd28e8dbda53903b34c06791e2ba5acd46d964736f6c63430008100033"
}
diff --git a/fixtures/build/MyContract.json b/fixtures/build/MyContract.json
index 7da2cedd..e0b51010 100644
--- a/fixtures/build/MyContract.json
+++ b/fixtures/build/MyContract.json
@@ -14,7 +14,7 @@
"type": "function"
}
],
- "evm": {
+ "zvm": {
"bytecode": {
"object": "608060405234801561001057600080fd5b50610228806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f540c8ba14610030575b600080fd5b61003861004e565b6040516100459190610170565b60405180910390f35b60606000805461005d906101c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610089906101c1565b80156100d65780601f106100ab576101008083540402835291602001916100d6565b820191906000526020600020905b8154815290600101906020018083116100b957829003601f168201915b5050505050905090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561011a5780820151818401526020810190506100ff565b60008484015250505050565b6000601f19601f8301169050919050565b6000610142826100e0565b61014c81856100eb565b935061015c8185602086016100fc565b61016581610126565b840191505092915050565b6000602082019050818103600083015261018a8184610137565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806101d957607f821691505b6020821081036101ec576101eb610192565b5b5091905056fea264697066735822122061f485ab43edfa5bd740bc1f3dd0d643813a4bd2457119e6578414d7389fbd8964736f6c63430008100033"
}
diff --git a/fixtures/build/NegativeNumbers.json b/fixtures/build/NegativeNumbers.json
index fa33b6f1..b6254913 100644
--- a/fixtures/build/NegativeNumbers.json
+++ b/fixtures/build/NegativeNumbers.json
@@ -193,7 +193,7 @@
"type": "function"
}
],
- "evm": {
+ "zvm": {
"bytecode": {
"object": "608060405234801561001057600080fd5b506040516105b93803806105b98339818101604052810190610032919061007a565b80600081905550506100a7565b600080fd5b6000819050919050565b61005781610044565b811461006257600080fd5b50565b6000815190506100748161004e565b92915050565b6000602082840312156100905761008f61003f565b5b600061009e84828501610065565b91505092915050565b610503806100b66000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806309872ebc1461005157806310e9b2b41461006f5780634a299b871461008b5780636119780b146100a7575b600080fd5b6100596100c3565b6040516100669190610232565b60405180910390f35b61008960048036038101906100849190610283565b6100c9565b005b6100a560048036038101906100a09190610315565b610130565b005b6100c160048036038101906100bc9190610389565b6101ae565b005b60005481565b7f5b53dc4e9e8fa2416d4e172bdad04be5a6d622643bc9ef45987b2caadd0d0c95816040516100f89190610232565b60405180910390a1807f33e7dccd3899498f4408d6468e5dfad650f32574dba2ec4f13399a82e62166d560405160405180910390a250565b7f2e1fb99ee1b27b6491b2d46a54ac8daca82f2da6810e4b8eed4d634f78fa6948848484846040516101659493929190610440565b60405180910390a182847f0e29b573959c1b6ffd5e16886385ec1732e187cc5ac10e8faceb5e02a1c7b50b84846040516101a0929190610480565b60405180910390a350505050565b7ffaa997e4b16dcde196bbb99868e16fa934a0b4c1f019e494d9fbffb5abc46fc282826040516101df9291906104a4565b60405180910390a180827f0204c97becd72594486cf753e30e8acfc9951ee663e404bc858e3d10b80da99b60405160405180910390a35050565b6000819050919050565b61022c81610219565b82525050565b60006020820190506102476000830184610223565b92915050565b600080fd5b600080fd5b61026081610219565b811461026b57600080fd5b50565b60008135905061027d81610257565b92915050565b6000602082840312156102995761029861024d565b5b60006102a78482850161026e565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126102d5576102d46102b0565b5b8235905067ffffffffffffffff8111156102f2576102f16102b5565b5b60208301915083600182028301111561030e5761030d6102ba565b5b9250929050565b6000806000806060858703121561032f5761032e61024d565b5b600061033d8782880161026e565b945050602061034e8782880161026e565b935050604085013567ffffffffffffffff81111561036f5761036e610252565b5b61037b878288016102bf565b925092505092959194509250565b600080604083850312156103a05761039f61024d565b5b60006103ae8582860161026e565b92505060206103bf8582860161026e565b9150509250929050565b6000819050919050565b6103dc816103c9565b82525050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061041f83856103e2565b935061042c8385846103f3565b61043583610402565b840190509392505050565b600060608201905061045560008301876103d3565b6104626020830186610223565b8181036040830152610475818486610413565b905095945050505050565b6000602082019050818103600083015261049b818486610413565b90509392505050565b60006040820190506104b96000830185610223565b6104c66020830184610223565b939250505056fea26469706673582212203eb052901c785465d43fe463b8123363abc0767d1df3b47a9c4cdc319870d8c264736f6c634300080d0033"
}
diff --git a/fixtures/contracts/Basic.sol b/fixtures/contracts/Basic.hyp
similarity index 96%
rename from fixtures/contracts/Basic.sol
rename to fixtures/contracts/Basic.hyp
index 89b3a1c8..560c647f 100644
--- a/fixtures/contracts/Basic.sol
+++ b/fixtures/contracts/Basic.hyp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GNU
-
-pragma solidity ^0.8.13;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.13;
contract Basic {
uint256 intValue;
diff --git a/fixtures/contracts/DeployRevert.sol b/fixtures/contracts/DeployRevert.hyp
similarity index 60%
rename from fixtures/contracts/DeployRevert.sol
rename to fixtures/contracts/DeployRevert.hyp
index a04b0f1c..86bda477 100644
--- a/fixtures/contracts/DeployRevert.sol
+++ b/fixtures/contracts/DeployRevert.hyp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GNU
-
-pragma solidity ^0.8.13;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.13;
contract DeployRevert {
constructor() public {
diff --git a/fixtures/contracts/ERC20Token.sol b/fixtures/contracts/ERC20Token.hyp
similarity index 76%
rename from fixtures/contracts/ERC20Token.sol
rename to fixtures/contracts/ERC20Token.hyp
index 7a94d0ff..5a03ed38 100644
--- a/fixtures/contracts/ERC20Token.sol
+++ b/fixtures/contracts/ERC20Token.hyp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GNU
-
-pragma solidity ^0.8.13;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.13;
import '@openzeppelin/contracts/token/ERC20/ERC20.sol';
diff --git a/fixtures/contracts/ERC721Token.sol b/fixtures/contracts/ERC721Token.hyp
similarity index 89%
rename from fixtures/contracts/ERC721Token.sol
rename to fixtures/contracts/ERC721Token.hyp
index 4fa7f445..2a718c06 100644
--- a/fixtures/contracts/ERC721Token.sol
+++ b/fixtures/contracts/ERC721Token.hyp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GNU
-
-pragma solidity ^0.8.13;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.13;
import '@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol';
import '@openzeppelin/contracts/utils/Counters.sol';
diff --git a/fixtures/contracts/ErrorsContract.sol b/fixtures/contracts/ErrorsContract.hyp
similarity index 86%
rename from fixtures/contracts/ErrorsContract.sol
rename to fixtures/contracts/ErrorsContract.hyp
index d6b7bb7c..6860693c 100644
--- a/fixtures/contracts/ErrorsContract.sol
+++ b/fixtures/contracts/ErrorsContract.hyp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GNU
-
-pragma solidity ^0.8.13;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.13;
error Unauthorized();
error CustomError(string);
diff --git a/fixtures/contracts/Greeter.sol b/fixtures/contracts/Greeter.hyp
similarity index 90%
rename from fixtures/contracts/Greeter.sol
rename to fixtures/contracts/Greeter.hyp
index 387ebe99..7cf7e304 100644
--- a/fixtures/contracts/Greeter.sol
+++ b/fixtures/contracts/Greeter.hyp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GNU
-
-pragma solidity ^0.8.13;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.13;
contract Greeter {
uint256 counter;
diff --git a/fixtures/contracts/MsgSender.sol b/fixtures/contracts/MsgSender.hyp
similarity index 84%
rename from fixtures/contracts/MsgSender.sol
rename to fixtures/contracts/MsgSender.hyp
index bac6ab9e..54f67050 100644
--- a/fixtures/contracts/MsgSender.sol
+++ b/fixtures/contracts/MsgSender.hyp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GNU
-
-pragma solidity ^0.8.13;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.13;
contract MsgSender {
string public testString;
diff --git a/fixtures/contracts/MyContract.sol b/fixtures/contracts/MyContract.hyp
similarity index 71%
rename from fixtures/contracts/MyContract.sol
rename to fixtures/contracts/MyContract.hyp
index b24fad18..dc7fce84 100644
--- a/fixtures/contracts/MyContract.sol
+++ b/fixtures/contracts/MyContract.hyp
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GNU
-
-pragma solidity ^0.8.13;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.13;
contract MyContract {
string private myAttribute;
diff --git a/fixtures/contracts/NegativeNumbers.sol b/fixtures/contracts/NegativeNumbers.hyp
similarity index 94%
rename from fixtures/contracts/NegativeNumbers.sol
rename to fixtures/contracts/NegativeNumbers.hyp
index 4c11a6b5..cd4b357b 100644
--- a/fixtures/contracts/NegativeNumbers.sol
+++ b/fixtures/contracts/NegativeNumbers.hyp
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: MIT
-pragma solidity 0.8.13;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion 0.8.13;
contract NegativeNumbers {
int256 public storedNegativeNumber;
diff --git a/fixtures/utils.ts b/fixtures/utils.ts
index 191aed21..3cd50b1f 100644
--- a/fixtures/utils.ts
+++ b/fixtures/utils.ts
@@ -67,3 +67,7 @@ export const toUpperCaseHex = (str: string) => {
return `0x${str.toUpperCase()}`;
};
+
+export const toUpperCaseAddress = (str: string) => {
+ return `Z${str.slice(1).toUpperCase()}`;
+};
diff --git a/package.json b/package.json
index 14bacb89..ab809dbf 100644
--- a/package.json
+++ b/package.json
@@ -66,7 +66,6 @@
"test:e2e:mainnet:ws": "./scripts/test-runner.sh mainnet ws",
"test:e2e:testnet:http": "./scripts/test-runner.sh testnet http",
"test:e2e:testnet:ws": "./scripts/test-runner.sh testnet ws",
- "generate:accounts": "node ./scripts/gen_accounts.js",
"pre-blackbox": "yarn config set registry http://localhost:4873 && git init && git config --global user.email \"ci@github.com\" && git config --global user.name \"CI\"",
"post-blackbox": "./scripts/verdaccio.sh stop",
"post-blackbox:gzond": "yarn gzond:stop && yarn post-blackbox",
diff --git a/packages/abi/LICENSE.md b/packages/abi/LICENSE.md
new file mode 100644
index 00000000..989e34a7
--- /dev/null
+++ b/packages/abi/LICENSE.md
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 Richard Moore
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/abi/README.md b/packages/abi/README.md
new file mode 100644
index 00000000..7ce37d72
--- /dev/null
+++ b/packages/abi/README.md
@@ -0,0 +1,52 @@
+Zond ABI Coder
+==================
+
+This sub-module is part of the [ethers project](https://github.com/ethers-io/ethers.js).
+
+It is responsible for encoding and decoding the Application Binary Interface (ABI)
+used by most smart contracts to interoperate between other smart contracts and clients.
+
+For more information, see the [documentation](https://docs.ethers.io/v5/api/utils/abi/).
+
+Importing
+---------
+
+Most users will prefer to use the [umbrella package](https://www.npmjs.com/package/ethers),
+but for those with more specific needs, individual components can be imported.
+
+```javascript
+const {
+
+ ConstructorFragment,
+ EventFragment,
+ Fragment,
+ FunctionFragment,
+ ParamType,
+ FormatTypes,
+
+ AbiCoder,
+ defaultAbiCoder,
+
+ Interface,
+ Indexed,
+
+ /////////////////////////
+ // Types
+
+ CoerceFunc,
+ JsonFragment,
+ JsonFragmentType,
+
+ Result,
+ checkResultErrors,
+
+ LogDescription,
+ TransactionDescription
+
+} = require("@theqrl/abi");
+```
+
+License
+-------
+
+MIT License
diff --git a/packages/web3-zond-personal/package.json b/packages/abi/package.json
similarity index 60%
rename from packages/web3-zond-personal/package.json
rename to packages/abi/package.json
index 5502a0a8..bbb2531b 100644
--- a/packages/web3-zond-personal/package.json
+++ b/packages/abi/package.json
@@ -1,11 +1,9 @@
{
- "name": "@theqrl/web3-zond-personal",
- "version": "0.2.1",
- "publishConfig": {
- "access": "public"
- },
- "description": "Web3 module to interact with the Ethereum blockchain accounts stored in the node.",
- "main": "./lib/commonjs/index.js",
+ "name": "@theqrl/abi",
+ "version": "0.1.0",
+ "description": "Utilities and Classes for parsing, formatting and managing Zond ABIs.",
+ "license": "MIT",
+ "main": "./lib/commonjs/index.js",
"module": "./lib/esm/index.js",
"exports": {
".": {
@@ -14,18 +12,19 @@
"require": "./lib/commonjs/index.js"
}
},
- "repository": "https://github.com/ChainSafe/web3.js",
- "author": "ChainSafe Systems",
- "license": "LGPL-3.0",
- "engines": {
- "node": ">=14",
- "npm": ">=6.12.0"
- },
- "files": [
+ "files": [
"lib/**/*",
"src/**/*"
],
- "scripts": {
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "directory": "packages/abi",
+ "type": "git",
+ "url": "git://github.com/ethers-io/ethers.js.git"
+ },
+ "scripts": {
"clean": "rimraf dist && rimraf lib",
"prebuild": "yarn clean",
"build": "yarn build:cjs & yarn build:esm & yarn build:types",
@@ -38,23 +37,27 @@
"format": "prettier --write '**/*'",
"test": "jest --config=./test/unit/jest.config.js",
"test:coverage:unit": "jest --config=./test/unit/jest.config.js --coverage=true --coverage-reporters=text",
- "test:coverage:integration": "jest --config=./test/integration/jest.config.js --coverage=true --coverage-reporters=text",
+ "test:coverage:integration": "jest --config=./test/integration/jest.config.js --passWithNoTests --coverage=true --coverage-reporters=text",
"test:ci": "jest --coverage=true --coverage-reporters=json --verbose",
"test:watch": "npm test -- --watch",
"test:unit": "jest --config=./test/unit/jest.config.js",
- "test:integration": "jest --config=./test/integration/jest.config.js"
+ "test:integration": "jest --config=./test/integration/jest.config.js --passWithNoTests"
},
- "dependencies": {
- "@theqrl/web3-core": "^0.2.1",
- "@theqrl/web3-rpc-methods": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1",
- "@theqrl/web3-validator": "^0.2.1",
- "@theqrl/web3-zond": "^0.2.1"
- },
- "devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
- "@theqrl/web3-providers-ws": "^0.2.1",
+ "sideEffects": false,
+ "dependencies": {
+ "@ethersproject/address": "^5.7.0",
+ "@ethersproject/bignumber": "^5.7.0",
+ "@ethersproject/bytes": "^5.7.0",
+ "@ethersproject/constants": "^5.7.0",
+ "@ethersproject/hash": "^5.7.0",
+ "@ethersproject/keccak256": "^5.7.0",
+ "@ethersproject/logger": "^5.7.0",
+ "@ethersproject/properties": "^5.7.0",
+ "@ethersproject/strings": "^5.7.0",
+ "@theqrl/web3-utils": "^0.3.0"
+ },
+ "devDependencies": {
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
@@ -66,6 +69,5 @@
"prettier": "^2.7.1",
"ts-jest": "^28.0.7",
"typescript": "^4.7.4"
- },
- "gitHead": "d4f3246946fec86d908a215b27568aa8faea88d7"
+ }
}
diff --git a/packages/abi/src/_version.ts b/packages/abi/src/_version.ts
new file mode 100644
index 00000000..b5869f53
--- /dev/null
+++ b/packages/abi/src/_version.ts
@@ -0,0 +1 @@
+export const version = "abi/5.7.0";
diff --git a/packages/abi/src/abi-coder.ts b/packages/abi/src/abi-coder.ts
new file mode 100644
index 00000000..9056ae91
--- /dev/null
+++ b/packages/abi/src/abi-coder.ts
@@ -0,0 +1,123 @@
+"use strict";
+
+// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI
+
+import { arrayify, BytesLike } from "@ethersproject/bytes";
+import { defineReadOnly } from "@ethersproject/properties";
+
+import { Logger } from "@ethersproject/logger";
+import { version } from "./_version";
+const logger = new Logger(version);
+
+import { Coder, Reader, Result, Writer } from "./coders/abstract-coder";
+import { AddressCoder } from "./coders/address";
+import { ArrayCoder } from "./coders/array";
+import { BooleanCoder } from "./coders/boolean";
+import { BytesCoder } from "./coders/bytes";
+import { FixedBytesCoder } from "./coders/fixed-bytes";
+import { NullCoder } from "./coders/null";
+import { NumberCoder } from "./coders/number";
+import { StringCoder } from "./coders/string";
+import { TupleCoder } from "./coders/tuple";
+
+import { ParamType } from "./fragments";
+
+
+const paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);
+const paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);
+
+
+export type CoerceFunc = (type: string, value: any) => any;
+
+export class AbiCoder {
+ readonly coerceFunc: CoerceFunc;
+
+ constructor(coerceFunc?: CoerceFunc) {
+ defineReadOnly(this, "coerceFunc", coerceFunc || null);
+ }
+
+ _getCoder(param: ParamType): Coder {
+
+ switch (param.baseType) {
+ case "address":
+ return new AddressCoder(param.name);
+ case "bool":
+ return new BooleanCoder(param.name);
+ case "string":
+ return new StringCoder(param.name);
+ case "bytes":
+ return new BytesCoder(param.name);
+ case "array":
+ return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);
+ case "tuple":
+ return new TupleCoder((param.components || []).map((component) => {
+ return this._getCoder(component);
+ }), param.name);
+ case "":
+ return new NullCoder(param.name);
+ }
+
+ // u?int[0-9]*
+ let match = param.type.match(paramTypeNumber);
+ if (match) {
+ let size = parseInt(match[2] || "256");
+ if (size === 0 || size > 256 || (size % 8) !== 0) {
+ logger.throwArgumentError("invalid " + match[1] + " bit length", "param", param);
+ }
+ return new NumberCoder(size / 8, (match[1] === "int"), param.name);
+ }
+
+ // bytes[0-9]+
+ match = param.type.match(paramTypeBytes);
+ if (match) {
+ let size = parseInt(match[1]);
+ if (size === 0 || size > 32) {
+ logger.throwArgumentError("invalid bytes length", "param", param);
+ }
+ return new FixedBytesCoder(size, param.name);
+ }
+
+ return logger.throwArgumentError("invalid type", "type", param.type);
+ }
+
+ _getWordSize(): number { return 32; }
+
+ _getReader(data: Uint8Array, allowLoose?: boolean): Reader {
+ return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);
+ }
+
+ _getWriter(): Writer {
+ return new Writer(this._getWordSize());
+ }
+
+ getDefaultValue(types: ReadonlyArray): Result {
+ const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));
+ const coder = new TupleCoder(coders, "_");
+ return coder.defaultValue();
+ }
+
+ encode(types: ReadonlyArray, values: ReadonlyArray): string {
+ if (types.length !== values.length) {
+ logger.throwError("types/values length mismatch", Logger.errors.INVALID_ARGUMENT, {
+ count: { types: types.length, values: values.length },
+ value: { types: types, values: values }
+ });
+ }
+
+ const coders = types.map((type) => this._getCoder(ParamType.from(type)));
+ const coder = (new TupleCoder(coders, "_"));
+
+ const writer = this._getWriter();
+ coder.encode(writer, values);
+ return writer.data;
+ }
+
+ decode(types: ReadonlyArray, data: BytesLike, loose?: boolean): Result {
+ const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));
+ const coder = new TupleCoder(coders, "_");
+ return coder.decode(this._getReader(arrayify(data), loose));
+ }
+}
+
+export const defaultAbiCoder: AbiCoder = new AbiCoder();
+
diff --git a/packages/abi/src/coders/abstract-coder.ts b/packages/abi/src/coders/abstract-coder.ts
new file mode 100644
index 00000000..6bde17b6
--- /dev/null
+++ b/packages/abi/src/coders/abstract-coder.ts
@@ -0,0 +1,207 @@
+"use strict";
+
+import { arrayify, BytesLike, concat, hexConcat, hexlify } from "@ethersproject/bytes";
+import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
+import { defineReadOnly } from "@ethersproject/properties";
+
+import { Logger } from "@ethersproject/logger";
+import { version } from "../_version";
+const logger = new Logger(version);
+
+export interface Result extends ReadonlyArray {
+ readonly [key: string]: any;
+}
+
+export function checkResultErrors(result: Result): Array<{ path: Array, error: Error }> {
+ // Find the first error (if any)
+ const errors: Array<{ path: Array, error: Error }> = [ ];
+
+ const checkErrors = function(path: Array, object: any): void {
+ if (!Array.isArray(object)) { return; }
+ for (let key in object) {
+ const childPath = path.slice();
+ childPath.push(key);
+
+ try {
+ checkErrors(childPath, object[key]);
+ } catch (error: any) {
+ errors.push({ path: childPath, error: error });
+ }
+ }
+ }
+ checkErrors([ ], result);
+
+ return errors;
+
+}
+
+export type CoerceFunc = (type: string, value: any) => any;
+
+export abstract class Coder {
+
+ // The coder name:
+ // - address, uint256, tuple, array, etc.
+ readonly name: string;
+
+ // The fully expanded type, including composite types:
+ // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.
+ readonly type: string;
+
+ // The localName bound in the signature, in this example it is "baz":
+ // - tuple(address foo, uint bar) baz
+ readonly localName: string;
+
+ // Whether this type is dynamic:
+ // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.
+ // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)
+ readonly dynamic: boolean;
+
+ constructor(name: string, type: string, localName: string, dynamic: boolean) {
+ // @TODO: defineReadOnly these
+ this.name = name;
+ this.type = type;
+ this.localName = localName;
+ this.dynamic = dynamic;
+ }
+
+ _throwError(message: string, value: any): void {
+ logger.throwArgumentError(message, this.localName, value);
+ }
+
+ abstract encode(writer: Writer, value: any): number;
+ abstract decode(reader: Reader): any;
+
+ abstract defaultValue(): any;
+}
+
+export class Writer {
+ readonly wordSize: number;
+
+ _data: Array;
+ _dataLength: number;
+ _padding: Uint8Array;
+
+ constructor(wordSize?: number) {
+ defineReadOnly(this, "wordSize", wordSize || 32);
+ this._data = [ ];
+ this._dataLength = 0;
+ this._padding = new Uint8Array(wordSize);
+ }
+
+ get data(): string {
+ return hexConcat(this._data);
+ }
+ get length(): number { return this._dataLength; }
+
+ _writeData(data: Uint8Array): number {
+ this._data.push(data);
+ this._dataLength += data.length;
+ return data.length;
+ }
+
+ appendWriter(writer: Writer): number {
+ return this._writeData(concat(writer._data));
+ }
+
+ // Arrayish items; padded on the right to wordSize
+ writeBytes(value: BytesLike): number {
+ let bytes = arrayify(value);
+ const paddingOffset = bytes.length % this.wordSize;
+ if (paddingOffset) {
+ bytes = concat([ bytes, this._padding.slice(paddingOffset) ])
+ }
+ return this._writeData(bytes);
+ }
+
+ _getValue(value: BigNumberish): Uint8Array {
+ let bytes = arrayify(BigNumber.from(value));
+ if (bytes.length > this.wordSize) {
+ logger.throwError("value out-of-bounds", Logger.errors.BUFFER_OVERRUN, {
+ length: this.wordSize,
+ offset: bytes.length
+ });
+ }
+ if (bytes.length % this.wordSize) {
+ bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);
+ }
+ return bytes;
+ }
+
+ // BigNumberish items; padded on the left to wordSize
+ writeValue(value: BigNumberish): number {
+ return this._writeData(this._getValue(value));
+ }
+
+ writeUpdatableValue(): (value: BigNumberish) => void {
+ const offset = this._data.length;
+ this._data.push(this._padding);
+ this._dataLength += this.wordSize;
+ return (value: BigNumberish) => {
+ this._data[offset] = this._getValue(value);
+ };
+ }
+}
+
+export class Reader {
+ readonly wordSize: number;
+ readonly allowLoose: boolean;
+
+ readonly _data: Uint8Array;
+ readonly _coerceFunc: CoerceFunc;
+
+ _offset: number;
+
+ constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {
+ defineReadOnly(this, "_data", arrayify(data));
+ defineReadOnly(this, "wordSize", wordSize || 32);
+ defineReadOnly(this, "_coerceFunc", coerceFunc);
+ defineReadOnly(this, "allowLoose", allowLoose);
+
+ this._offset = 0;
+ }
+
+ get data(): string { return hexlify(this._data); }
+ get consumed(): number { return this._offset; }
+
+ // The default Coerce function
+ static coerce(name: string, value: any): any {
+ let match = name.match("^u?int([0-9]+)$");
+ if (match && parseInt(match[1]) <= 48) { value = value.toNumber(); }
+ return value;
+ }
+
+ coerce(name: string, value: any): any {
+ if (this._coerceFunc) { return this._coerceFunc(name, value); }
+ return Reader.coerce(name, value);
+ }
+
+ _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {
+ let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;
+ if (this._offset + alignedLength > this._data.length) {
+ if (this.allowLoose && loose && this._offset + length <= this._data.length) {
+ alignedLength = length;
+ } else {
+ logger.throwError("data out-of-bounds", Logger.errors.BUFFER_OVERRUN, {
+ length: this._data.length,
+ offset: this._offset + alignedLength
+ });
+ }
+ }
+ return this._data.slice(this._offset, this._offset + alignedLength)
+ }
+
+ subReader(offset: number): Reader {
+ return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);
+ }
+
+ readBytes(length: number, loose?: boolean): Uint8Array {
+ let bytes = this._peekBytes(0, length, !!loose);
+ this._offset += bytes.length;
+ // @TODO: Make sure the length..end bytes are all 0?
+ return bytes.slice(0, length);
+ }
+
+ readValue(): BigNumber {
+ return BigNumber.from(this.readBytes(this.wordSize));
+ }
+}
diff --git a/packages/abi/src/coders/address.ts b/packages/abi/src/coders/address.ts
new file mode 100644
index 00000000..5208cee5
--- /dev/null
+++ b/packages/abi/src/coders/address.ts
@@ -0,0 +1,32 @@
+"use strict";
+
+import { getAddress } from "@ethersproject/address";
+import { hexZeroPad } from "@ethersproject/bytes";
+import { hexToAddress, addressToHex } from "@theqrl/web3-utils";
+
+import { Coder, Reader, Writer } from "./abstract-coder";
+
+export class AddressCoder extends Coder {
+
+ constructor(localName: string) {
+ super("address", "address", localName, false);
+ }
+
+ defaultValue(): string {
+ return "Z0000000000000000000000000000000000000000";
+ }
+
+ encode(writer: Writer, value: string): number {
+ try {
+ value = getAddress(addressToHex(value))
+ } catch (error: any) {
+ this._throwError(error.message, value);
+ }
+ return writer.writeValue(value);
+ }
+
+ decode(reader: Reader): any {
+ return hexToAddress(getAddress(hexZeroPad(reader.readValue().toHexString(), 20)));
+ }
+}
+
diff --git a/packages/abi/src/coders/anonymous.ts b/packages/abi/src/coders/anonymous.ts
new file mode 100644
index 00000000..9bf778e6
--- /dev/null
+++ b/packages/abi/src/coders/anonymous.ts
@@ -0,0 +1,25 @@
+"use strict";
+
+import { Coder, Reader, Writer } from "./abstract-coder";
+
+// Clones the functionality of an existing Coder, but without a localName
+export class AnonymousCoder extends Coder {
+ private coder: Coder;
+
+ constructor(coder: Coder) {
+ super(coder.name, coder.type, undefined, coder.dynamic);
+ this.coder = coder;
+ }
+
+ defaultValue(): any {
+ return this.coder.defaultValue();
+ }
+
+ encode(writer: Writer, value: any): number {
+ return this.coder.encode(writer, value);
+ }
+
+ decode(reader: Reader): any {
+ return this.coder.decode(reader);
+ }
+}
diff --git a/packages/abi/src/coders/array.ts b/packages/abi/src/coders/array.ts
new file mode 100644
index 00000000..73bf46e6
--- /dev/null
+++ b/packages/abi/src/coders/array.ts
@@ -0,0 +1,236 @@
+"use strict";
+
+import { Logger } from "@ethersproject/logger";
+import { version } from "../_version";
+const logger = new Logger(version);
+
+import { Coder, Reader, Result, Writer } from "./abstract-coder";
+import { AnonymousCoder } from "./anonymous";
+
+export function pack(writer: Writer, coders: ReadonlyArray, values: Array | { [ name: string ]: any }): number {
+ let arrayValues: Array = null;
+
+ if (Array.isArray(values)) {
+ arrayValues = values;
+
+ } else if (values && typeof(values) === "object") {
+ let unique: { [ name: string ]: boolean } = { };
+
+ arrayValues = coders.map((coder) => {
+ const name = coder.localName;
+ if (!name) {
+ logger.throwError("cannot encode object for signature with missing names", Logger.errors.INVALID_ARGUMENT, {
+ argument: "values",
+ coder: coder,
+ value: values
+ });
+ }
+
+ if (unique[name]) {
+ logger.throwError("cannot encode object for signature with duplicate names", Logger.errors.INVALID_ARGUMENT, {
+ argument: "values",
+ coder: coder,
+ value: values
+ });
+ }
+
+ unique[name] = true;
+
+ return values[name];
+ });
+
+ } else {
+ logger.throwArgumentError("invalid tuple value", "tuple", values);
+ }
+
+ if (coders.length !== arrayValues.length) {
+ logger.throwArgumentError("types/value length mismatch", "tuple", values);
+ }
+
+ let staticWriter = new Writer(writer.wordSize);
+ let dynamicWriter = new Writer(writer.wordSize);
+
+ let updateFuncs: Array<(baseOffset: number) => void> = [];
+ coders.forEach((coder, index) => {
+ let value = arrayValues[index];
+
+ if (coder.dynamic) {
+ // Get current dynamic offset (for the future pointer)
+ let dynamicOffset = dynamicWriter.length;
+
+ // Encode the dynamic value into the dynamicWriter
+ coder.encode(dynamicWriter, value);
+
+ // Prepare to populate the correct offset once we are done
+ let updateFunc = staticWriter.writeUpdatableValue();
+ updateFuncs.push((baseOffset: number) => {
+ updateFunc(baseOffset + dynamicOffset);
+ });
+
+ } else {
+ coder.encode(staticWriter, value);
+ }
+ });
+
+ // Backfill all the dynamic offsets, now that we know the static length
+ updateFuncs.forEach((func) => { func(staticWriter.length); });
+
+ let length = writer.appendWriter(staticWriter);
+ length += writer.appendWriter(dynamicWriter);
+ return length;
+}
+
+export function unpack(reader: Reader, coders: Array): Result {
+ let values: any = [];
+
+ // A reader anchored to this base
+ let baseReader = reader.subReader(0);
+
+ coders.forEach((coder) => {
+ let value: any = null;
+
+ if (coder.dynamic) {
+ let offset = reader.readValue();
+ let offsetReader = baseReader.subReader(offset.toNumber());
+ try {
+ value = coder.decode(offsetReader);
+ } catch (error: any) {
+ // Cannot recover from this
+ if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }
+ value = error;
+ value.baseType = coder.name;
+ value.name = coder.localName;
+ value.type = coder.type;
+ }
+
+ } else {
+ try {
+ value = coder.decode(reader);
+ } catch (error: any) {
+ // Cannot recover from this
+ if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }
+ value = error;
+ value.baseType = coder.name;
+ value.name = coder.localName;
+ value.type = coder.type;
+ }
+ }
+
+ if (value != undefined) {
+ values.push(value);
+ }
+ });
+
+ // We only output named properties for uniquely named coders
+ const uniqueNames = coders.reduce((accum, coder) => {
+ const name = coder.localName;
+ if (name) {
+ if (!accum[name]) { accum[name] = 0; }
+ accum[name]++;
+ }
+ return accum;
+ }, <{ [ name: string ]: number }>{ });
+
+ // Add any named parameters (i.e. tuples)
+ coders.forEach((coder: Coder, index: number) => {
+ let name = coder.localName;
+ if (!name || uniqueNames[name] !== 1) { return; }
+
+ if (name === "length") { name = "_length"; }
+
+ if (values[name] != null) { return; }
+
+ const value = values[index];
+
+ if (value instanceof Error) {
+ Object.defineProperty(values, name, {
+ enumerable: true,
+ get: () => { throw value; }
+ });
+ } else {
+ values[name] = value;
+ }
+ });
+
+ for (let i = 0; i < values.length; i++) {
+ const value = values[i];
+ if (value instanceof Error) {
+ Object.defineProperty(values, i, {
+ enumerable: true,
+ get: () => { throw value; }
+ });
+ }
+ }
+
+ return Object.freeze(values);
+}
+
+
+export class ArrayCoder extends Coder {
+ readonly coder: Coder;
+ readonly length: number;
+
+ constructor(coder: Coder, length: number, localName: string) {
+ const type = (coder.type + "[" + (length >= 0 ? length: "") + "]");
+ const dynamic = (length === -1 || coder.dynamic);
+ super("array", type, localName, dynamic);
+
+ this.coder = coder;
+ this.length = length;
+ }
+
+ defaultValue(): Array {
+ // Verifies the child coder is valid (even if the array is dynamic or 0-length)
+ const defaultChild = this.coder.defaultValue();
+
+ const result: Array = [];
+ for (let i = 0; i < this.length; i++) {
+ result.push(defaultChild);
+ }
+ return result;
+ }
+
+ encode(writer: Writer, value: Array): number {
+ if (!Array.isArray(value)) {
+ this._throwError("expected array value", value);
+ }
+
+ let count = this.length;
+
+ if (count === -1) {
+ count = value.length;
+ writer.writeValue(value.length);
+ }
+
+ logger.checkArgumentCount(value.length, count, "coder array" + (this.localName? (" "+ this.localName): ""));
+
+ let coders = [];
+ for (let i = 0; i < value.length; i++) { coders.push(this.coder); }
+
+ return pack(writer, coders, value);
+ }
+
+ decode(reader: Reader): any {
+ let count = this.length;
+ if (count === -1) {
+ count = reader.readValue().toNumber();
+
+ // Check that there is *roughly* enough data to ensure
+ // stray random data is not being read as a length. Each
+ // slot requires at least 32 bytes for their value (or 32
+ // bytes as a link to the data). This could use a much
+ // tighter bound, but we are erroring on the side of safety.
+ if (count * 32 > reader._data.length) {
+ logger.throwError("insufficient data length", Logger.errors.BUFFER_OVERRUN, {
+ length: reader._data.length,
+ count: count
+ });
+ }
+ }
+ let coders = [];
+ for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }
+
+ return reader.coerce(this.name, unpack(reader, coders));
+ }
+}
+
diff --git a/packages/abi/src/coders/boolean.ts b/packages/abi/src/coders/boolean.ts
new file mode 100644
index 00000000..ff3d1d80
--- /dev/null
+++ b/packages/abi/src/coders/boolean.ts
@@ -0,0 +1,23 @@
+"use strict";
+
+import { Coder, Reader, Writer } from "./abstract-coder";
+
+export class BooleanCoder extends Coder {
+
+ constructor(localName: string) {
+ super("bool", "bool", localName, false);
+ }
+
+ defaultValue(): boolean {
+ return false;
+ }
+
+ encode(writer: Writer, value: boolean): number {
+ return writer.writeValue(value ? 1: 0);
+ }
+
+ decode(reader: Reader): any {
+ return reader.coerce(this.type, !reader.readValue().isZero());
+ }
+}
+
diff --git a/packages/abi/src/coders/bytes.ts b/packages/abi/src/coders/bytes.ts
new file mode 100644
index 00000000..bc2b20a9
--- /dev/null
+++ b/packages/abi/src/coders/bytes.ts
@@ -0,0 +1,38 @@
+"use strict";
+
+import { arrayify, hexlify } from "@ethersproject/bytes";
+
+import { Coder, Reader, Writer } from "./abstract-coder";
+
+export class DynamicBytesCoder extends Coder {
+ constructor(type: string, localName: string) {
+ super(type, type, localName, true);
+ }
+
+ defaultValue(): string {
+ return "0x";
+ }
+
+ encode(writer: Writer, value: any): number {
+ value = arrayify(value);
+ let length = writer.writeValue(value.length);
+ length += writer.writeBytes(value);
+ return length;
+ }
+
+ decode(reader: Reader): any {
+ return reader.readBytes(reader.readValue().toNumber(), true);
+ }
+}
+
+export class BytesCoder extends DynamicBytesCoder {
+ constructor(localName: string) {
+ super("bytes", localName);
+ }
+
+ decode(reader: Reader): any {
+ return reader.coerce(this.name, hexlify(super.decode(reader)));
+ }
+}
+
+
diff --git a/packages/abi/src/coders/fixed-bytes.ts b/packages/abi/src/coders/fixed-bytes.ts
new file mode 100644
index 00000000..ebf4e23f
--- /dev/null
+++ b/packages/abi/src/coders/fixed-bytes.ts
@@ -0,0 +1,30 @@
+"use strict";
+
+import { arrayify, BytesLike, hexlify } from "@ethersproject/bytes";
+
+import { Coder, Reader, Writer } from "./abstract-coder";
+
+// @TODO: Merge this with bytes
+export class FixedBytesCoder extends Coder {
+ readonly size: number;
+
+ constructor(size: number, localName: string) {
+ let name = "bytes" + String(size);
+ super(name, name, localName, false);
+ this.size = size;
+ }
+
+ defaultValue(): string {
+ return ("0x0000000000000000000000000000000000000000000000000000000000000000").substring(0, 2 + this.size * 2);
+ }
+
+ encode(writer: Writer, value: BytesLike): number {
+ let data = arrayify(value);
+ if (data.length !== this.size) { this._throwError("incorrect data length", value); }
+ return writer.writeBytes(data);
+ }
+
+ decode(reader: Reader): any {
+ return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));
+ }
+}
diff --git a/packages/abi/src/coders/null.ts b/packages/abi/src/coders/null.ts
new file mode 100644
index 00000000..c7377bea
--- /dev/null
+++ b/packages/abi/src/coders/null.ts
@@ -0,0 +1,24 @@
+"use strict";
+
+import { Coder, Reader, Writer } from "./abstract-coder";
+
+export class NullCoder extends Coder {
+
+ constructor(localName: string) {
+ super("null", "", localName, false);
+ }
+
+ defaultValue(): null {
+ return null;
+ }
+
+ encode(writer: Writer, value: any): number {
+ if (value != null) { this._throwError("not null", value); }
+ return writer.writeBytes([ ]);
+ }
+
+ decode(reader: Reader): any {
+ reader.readBytes(0);
+ return reader.coerce(this.name, null);
+ }
+}
diff --git a/packages/abi/src/coders/number.ts b/packages/abi/src/coders/number.ts
new file mode 100644
index 00000000..031cbdc9
--- /dev/null
+++ b/packages/abi/src/coders/number.ts
@@ -0,0 +1,57 @@
+"use strict";
+
+import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
+import { MaxUint256, NegativeOne, One, Zero } from "@ethersproject/constants";
+
+import { Coder, Reader, Writer } from "./abstract-coder";
+
+export class NumberCoder extends Coder {
+ readonly size: number;
+ readonly signed: boolean;
+
+ constructor(size: number, signed: boolean, localName: string) {
+ const name = ((signed ? "int": "uint") + (size * 8));
+ super(name, name, localName, false);
+
+ this.size = size;
+ this.signed = signed;
+ }
+
+ defaultValue(): number {
+ return 0;
+ }
+
+ encode(writer: Writer, value: BigNumberish): number {
+ let v = BigNumber.from(value);
+
+ // Check bounds are safe for encoding
+ let maxUintValue = MaxUint256.mask(writer.wordSize * 8);
+ if (this.signed) {
+ let bounds = maxUintValue.mask(this.size * 8 - 1);
+ if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {
+ this._throwError("value out-of-bounds", value);
+ }
+ } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {
+ this._throwError("value out-of-bounds", value);
+ }
+
+ v = v.toTwos(this.size * 8).mask(this.size * 8);
+
+ if (this.signed) {
+ v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);
+ }
+
+ return writer.writeValue(v);
+ }
+
+ decode(reader: Reader): any {
+ let value = reader.readValue().mask(this.size * 8);
+
+ if (this.signed) {
+ value = value.fromTwos(this.size * 8);
+ }
+
+ return reader.coerce(this.name, value);
+ }
+}
+
diff --git a/packages/abi/src/coders/string.ts b/packages/abi/src/coders/string.ts
new file mode 100644
index 00000000..c2625f8a
--- /dev/null
+++ b/packages/abi/src/coders/string.ts
@@ -0,0 +1,25 @@
+"use strict";
+
+import { toUtf8Bytes, toUtf8String } from "@ethersproject/strings";
+
+import { Reader, Writer } from "./abstract-coder";
+import { DynamicBytesCoder } from "./bytes";
+
+export class StringCoder extends DynamicBytesCoder {
+
+ constructor(localName: string) {
+ super("string", localName);
+ }
+
+ defaultValue(): string {
+ return "";
+ }
+
+ encode(writer: Writer, value: any): number {
+ return super.encode(writer, toUtf8Bytes(value));
+ }
+
+ decode(reader: Reader): any {
+ return toUtf8String(super.decode(reader));
+ }
+}
diff --git a/packages/abi/src/coders/tuple.ts b/packages/abi/src/coders/tuple.ts
new file mode 100644
index 00000000..9b2cf5c1
--- /dev/null
+++ b/packages/abi/src/coders/tuple.ts
@@ -0,0 +1,61 @@
+"use strict";
+
+import { Coder, Reader, Writer } from "./abstract-coder";
+import { pack, unpack } from "./array";
+
+export class TupleCoder extends Coder {
+ readonly coders: Array;
+
+ constructor(coders: Array, localName: string) {
+ let dynamic = false;
+ const types: Array = [];
+ coders.forEach((coder) => {
+ if (coder.dynamic) { dynamic = true; }
+ types.push(coder.type);
+ });
+ const type = ("tuple(" + types.join(",") + ")");
+
+ super("tuple", type, localName, dynamic);
+ this.coders = coders;
+ }
+
+ defaultValue(): any {
+ const values: any = [ ];
+ this.coders.forEach((coder) => {
+ values.push(coder.defaultValue());
+ });
+
+ // We only output named properties for uniquely named coders
+ const uniqueNames = this.coders.reduce((accum, coder) => {
+ const name = coder.localName;
+ if (name) {
+ if (!accum[name]) { accum[name] = 0; }
+ accum[name]++;
+ }
+ return accum;
+ }, <{ [ name: string ]: number }>{ });
+
+ // Add named values
+ this.coders.forEach((coder: Coder, index: number) => {
+ let name = coder.localName;
+ if (!name || uniqueNames[name] !== 1) { return; }
+
+ if (name === "length") { name = "_length"; }
+
+ if (values[name] != null) { return; }
+
+ values[name] = values[index];
+ });
+
+ return Object.freeze(values);
+ }
+
+ encode(writer: Writer, value: Array | { [ name: string ]: any }): number {
+ return pack(writer, this.coders, value);
+ }
+
+ decode(reader: Reader): any {
+ return reader.coerce(this.name, unpack(reader, this.coders));
+ }
+}
+
diff --git a/packages/abi/src/fragments.ts b/packages/abi/src/fragments.ts
new file mode 100644
index 00000000..65966200
--- /dev/null
+++ b/packages/abi/src/fragments.ts
@@ -0,0 +1,1070 @@
+"use strict";
+
+import { BigNumber } from "@ethersproject/bignumber";
+import { defineReadOnly } from "@ethersproject/properties";
+
+import { Logger } from "@ethersproject/logger";
+import { version } from "./_version";
+const logger = new Logger(version);
+
+export interface JsonFragmentType {
+ readonly name?: string;
+ readonly indexed?: boolean;
+ readonly type?: string;
+ readonly internalType?: any; // @TODO: in v6 reduce type
+ readonly components?: ReadonlyArray;
+}
+
+export interface JsonFragment {
+ readonly name?: string;
+ readonly type?: string;
+
+ readonly anonymous?: boolean;
+
+ readonly payable?: boolean;
+ readonly constant?: boolean;
+ readonly stateMutability?: string;
+
+ readonly inputs?: ReadonlyArray;
+ readonly outputs?: ReadonlyArray;
+
+ readonly gas?: string;
+};
+
+const _constructorGuard = { };
+
+// AST Node parser state
+type ParseState = {
+ allowArray?: boolean,
+ allowName?: boolean,
+ allowParams?: boolean,
+ allowType?: boolean,
+ readArray?: boolean,
+};
+
+// AST Node
+type ParseNode = {
+ parent?: any,
+ type?: string,
+ name?: string,
+ state?: ParseState,
+ indexed?: boolean,
+ components?: Array
+};
+
+let ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };
+let ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };
+function checkModifier(type: string, name: string): boolean {
+ if (type === "bytes" || type === "string") {
+ if (ModifiersBytes[name]) { return true; }
+ } else if (type === "address") {
+ if (name === "payable") { return true; }
+ } else if (type.indexOf("[") >= 0 || type === "tuple") {
+ if (ModifiersNest[name]) { return true; }
+ }
+ if (ModifiersBytes[name] || name === "payable") {
+ logger.throwArgumentError("invalid modifier", "name", name);
+ }
+ return false;
+}
+
+// @TODO: Make sure that children of an indexed tuple are marked with a null indexed
+function parseParamType(param: string, allowIndexed: boolean): ParseNode {
+
+ let originalParam = param;
+ function throwError(i: number) {
+ logger.throwArgumentError(`unexpected character at position ${ i }`, "param", param);
+ }
+ param = param.replace(/\s/g, " ");
+
+ function newNode(parent: ParseNode): ParseNode {
+ let node: ParseNode = { type: "", name: "", parent: parent, state: { allowType: true } };
+ if (allowIndexed) { node.indexed = false; }
+ return node
+ }
+
+ let parent: ParseNode = { type: "", name: "", state: { allowType: true } };
+ let node = parent;
+
+ for (let i = 0; i < param.length; i++) {
+ let c = param[i];
+ switch (c) {
+ case "(":
+ if (node.state.allowType && node.type === "") {
+ node.type = "tuple";
+ } else if (!node.state.allowParams) {
+ throwError(i);
+ }
+ node.state.allowType = false;
+ node.type = verifyType(node.type);
+ node.components = [ newNode(node) ];
+ node = node.components[0];
+ break;
+
+ case ")":
+ delete node.state;
+
+ if (node.name === "indexed") {
+ if (!allowIndexed) { throwError(i); }
+ node.indexed = true;
+ node.name = "";
+ }
+
+ if (checkModifier(node.type, node.name)) { node.name = ""; }
+
+ node.type = verifyType(node.type);
+
+ let child = node;
+ node = node.parent;
+ if (!node) { throwError(i); }
+ delete child.parent;
+ node.state.allowParams = false;
+ node.state.allowName = true;
+ node.state.allowArray = true;
+ break;
+
+ case ",":
+ delete node.state;
+
+ if (node.name === "indexed") {
+ if (!allowIndexed) { throwError(i); }
+ node.indexed = true;
+ node.name = "";
+ }
+
+ if (checkModifier(node.type, node.name)) { node.name = ""; }
+
+ node.type = verifyType(node.type);
+
+ let sibling: ParseNode = newNode(node.parent);
+ //{ type: "", name: "", parent: node.parent, state: { allowType: true } };
+ node.parent.components.push(sibling);
+ delete node.parent;
+ node = sibling;
+ break;
+
+ // Hit a space...
+ case " ":
+
+ // If reading type, the type is done and may read a param or name
+ if (node.state.allowType) {
+ if (node.type !== "") {
+ node.type = verifyType(node.type);
+ delete node.state.allowType;
+ node.state.allowName = true;
+ node.state.allowParams = true;
+ }
+ }
+
+ // If reading name, the name is done
+ if (node.state.allowName) {
+ if (node.name !== "") {
+ if (node.name === "indexed") {
+ if (!allowIndexed) { throwError(i); }
+ if (node.indexed) { throwError(i); }
+ node.indexed = true;
+ node.name = "";
+ } else if (checkModifier(node.type, node.name)) {
+ node.name = "";
+ } else {
+ node.state.allowName = false;
+ }
+ }
+ }
+
+ break;
+
+ case "[":
+ if (!node.state.allowArray) { throwError(i); }
+
+ node.type += c;
+
+ node.state.allowArray = false;
+ node.state.allowName = false;
+ node.state.readArray = true;
+ break;
+
+ case "]":
+ if (!node.state.readArray) { throwError(i); }
+
+ node.type += c;
+
+ node.state.readArray = false;
+ node.state.allowArray = true;
+ node.state.allowName = true;
+ break;
+
+ default:
+ if (node.state.allowType) {
+ node.type += c;
+ node.state.allowParams = true;
+ node.state.allowArray = true;
+ } else if (node.state.allowName) {
+ node.name += c;
+ delete node.state.allowArray;
+ } else if (node.state.readArray) {
+ node.type += c;
+ } else {
+ throwError(i);
+ }
+ }
+ }
+
+ if (node.parent) { logger.throwArgumentError("unexpected eof", "param", param); }
+
+ delete parent.state;
+
+ if (node.name === "indexed") {
+ if (!allowIndexed) { throwError(originalParam.length - 7); }
+ if (node.indexed) { throwError(originalParam.length - 7); }
+ node.indexed = true;
+ node.name = "";
+ } else if (checkModifier(node.type, node.name)) {
+ node.name = "";
+ }
+
+ parent.type = verifyType(parent.type);
+
+ return parent;
+}
+
+function populate(object: any, params: any) {
+ for (let key in params) { defineReadOnly(object, key, params[key]); }
+}
+
+export const FormatTypes: { [ name: string ]: string } = Object.freeze({
+ // Bare formatting, as is needed for computing a sighash of an event or function
+ sighash: "sighash",
+
+ // Human-Readable with Minimal spacing and without names (compact human-readable)
+ minimal: "minimal",
+
+ // Human-Readable with nice spacing, including all names
+ full: "full",
+
+ // JSON-format a la Hyperion
+ json: "json"
+});
+
+const paramTypeArray = new RegExp(/^(.*)\[([0-9]*)\]$/);
+
+export class ParamType {
+
+ // The local name of the parameter (of null if unbound)
+ readonly name: string;
+
+ // The fully qualified type (e.g. "address", "tuple(address)", "uint256[3][]"
+ readonly type: string;
+
+ // The base type (e.g. "address", "tuple", "array")
+ readonly baseType: string;
+
+ // Indexable Paramters ONLY (otherwise null)
+ readonly indexed: boolean;
+
+ // Tuples ONLY: (otherwise null)
+ // - sub-components
+ readonly components: Array;
+
+ // Arrays ONLY: (otherwise null)
+ // - length of the array (-1 for dynamic length)
+ // - child type
+ readonly arrayLength: number;
+ readonly arrayChildren: ParamType;
+
+ readonly _isParamType: boolean;
+
+ constructor(constructorGuard: any, params: any) {
+ if (constructorGuard !== _constructorGuard) { logger.throwError("use fromString", Logger.errors.UNSUPPORTED_OPERATION, {
+ operation: "new ParamType()"
+ }); }
+ populate(this, params);
+
+ let match = this.type.match(paramTypeArray);
+ if (match) {
+ populate(this, {
+ arrayLength: parseInt(match[2] || "-1"),
+ arrayChildren: ParamType.fromObject({
+ type: match[1],
+ components: this.components
+ }),
+ baseType: "array"
+ });
+ } else {
+ populate(this, {
+ arrayLength: null,
+ arrayChildren: null,
+ baseType: ((this.components != null) ? "tuple": this.type)
+ });
+ }
+
+ this._isParamType = true;
+
+ Object.freeze(this);
+ }
+
+ // Format the parameter fragment
+ // - sighash: "(uint256,address)"
+ // - minimal: "tuple(uint256,address) indexed"
+ // - full: "tuple(uint256 foo, address bar) indexed baz"
+ format(format?: string): string {
+ if (!format) { format = FormatTypes.sighash; }
+ if (!FormatTypes[format]) {
+ logger.throwArgumentError("invalid format type", "format", format);
+ }
+
+ if (format === FormatTypes.json) {
+ let result: any = {
+ type: ((this.baseType === "tuple") ? "tuple": this.type),
+ name: (this.name || undefined)
+ };
+ if (typeof(this.indexed) === "boolean") { result.indexed = this.indexed; }
+ if (this.components) {
+ result.components = this.components.map((comp) => JSON.parse(comp.format(format)));
+ }
+ return JSON.stringify(result);
+ }
+
+ let result = "";
+
+ // Array
+ if (this.baseType === "array") {
+ result += this.arrayChildren.format(format);
+ result += "[" + (this.arrayLength < 0 ? "": String(this.arrayLength)) + "]";
+ } else {
+ if (this.baseType === "tuple") {
+ if (format !== FormatTypes.sighash) {
+ result += this.type;
+ }
+ result += "(" + this.components.map(
+ (comp) => comp.format(format)
+ ).join((format === FormatTypes.full) ? ", ": ",") + ")";
+ } else {
+ result += this.type;
+ }
+ }
+
+ if (format !== FormatTypes.sighash) {
+ if (this.indexed === true) { result += " indexed"; }
+ if (format === FormatTypes.full && this.name) {
+ result += " " + this.name;
+ }
+ }
+
+ return result;
+ }
+
+ static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {
+ if (typeof(value) === "string") {
+ return ParamType.fromString(value, allowIndexed);
+ }
+ return ParamType.fromObject(value);
+ }
+
+ static fromObject(value: JsonFragmentType | ParamType): ParamType {
+ if (ParamType.isParamType(value)) { return value; }
+
+ return new ParamType(_constructorGuard, {
+ name: (value.name || null),
+ type: verifyType(value.type),
+ indexed: ((value.indexed == null) ? null: !!value.indexed),
+ components: (value.components ? value.components.map(ParamType.fromObject): null)
+ });
+ }
+
+ static fromString(value: string, allowIndexed?: boolean): ParamType {
+ function ParamTypify(node: ParseNode): ParamType {
+ return ParamType.fromObject({
+ name: node.name,
+ type: node.type,
+ indexed: node.indexed,
+ components: node.components
+ });
+ }
+
+ return ParamTypify(parseParamType(value, !!allowIndexed));
+ }
+
+ static isParamType(value: any): value is ParamType {
+ return !!(value != null && value._isParamType);
+ }
+};
+
+function parseParams(value: string, allowIndex: boolean): Array {
+ return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));
+}
+
+type TypeCheck = { -readonly [ K in keyof T ]: T[K] };
+
+interface _Fragment {
+ readonly type: string;
+ readonly name: string;
+ readonly inputs: ReadonlyArray;
+}
+
+export abstract class Fragment {
+
+ readonly type: string;
+ readonly name: string;
+ readonly inputs: Array;
+
+ readonly _isFragment: boolean;
+
+ constructor(constructorGuard: any, params: any) {
+ if (constructorGuard !== _constructorGuard) {
+ logger.throwError("use a static from method", Logger.errors.UNSUPPORTED_OPERATION, {
+ operation: "new Fragment()"
+ });
+ }
+ populate(this, params);
+
+ this._isFragment = true;
+
+ Object.freeze(this);
+ }
+
+ abstract format(format?: string): string;
+
+ static from(value: Fragment | JsonFragment | string): Fragment {
+ if (Fragment.isFragment(value)) { return value; }
+
+ if (typeof(value) === "string") {
+ return Fragment.fromString(value);
+ }
+
+ return Fragment.fromObject(value);
+ }
+
+ static fromObject(value: Fragment | JsonFragment): Fragment {
+ if (Fragment.isFragment(value)) { return value; }
+
+ switch (value.type) {
+ case "function":
+ return FunctionFragment.fromObject(value);
+ case "event":
+ return EventFragment.fromObject(value);
+ case "constructor":
+ return ConstructorFragment.fromObject(value);
+ case "error":
+ return ErrorFragment.fromObject(value);
+ case "fallback":
+ case "receive":
+ // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?
+ return null;
+ }
+
+ return logger.throwArgumentError("invalid fragment object", "value", value);
+ }
+
+ static fromString(value: string): Fragment {
+ // Make sure the "returns" is surrounded by a space and all whitespace is exactly one space
+ value = value.replace(/\s/g, " ");
+ value = value.replace(/\(/g, " (").replace(/\)/g, ") ").replace(/\s+/g, " ");
+ value = value.trim();
+
+ if (value.split(" ")[0] === "event") {
+ return EventFragment.fromString(value.substring(5).trim());
+ } else if (value.split(" ")[0] === "function") {
+ return FunctionFragment.fromString(value.substring(8).trim());
+ } else if (value.split("(")[0].trim() === "constructor") {
+ return ConstructorFragment.fromString(value.trim());
+ } else if (value.split(" ")[0] === "error") {
+ return ErrorFragment.fromString(value.substring(5).trim());
+ }
+
+ return logger.throwArgumentError("unsupported fragment", "value", value);
+ }
+
+ static isFragment(value: any): value is Fragment {
+ return !!(value && value._isFragment);
+ }
+}
+
+interface _EventFragment extends _Fragment {
+ readonly anonymous: boolean;
+}
+
+export class EventFragment extends Fragment {
+ readonly anonymous: boolean;
+
+ format(format?: string): string {
+ if (!format) { format = FormatTypes.sighash; }
+ if (!FormatTypes[format]) {
+ logger.throwArgumentError("invalid format type", "format", format);
+ }
+
+ if (format === FormatTypes.json) {
+ return JSON.stringify({
+ type: "event",
+ anonymous: this.anonymous,
+ name: this.name,
+ inputs: this.inputs.map((input) => JSON.parse(input.format(format)))
+ });
+ }
+
+ let result = "";
+
+ if (format !== FormatTypes.sighash) {
+ result += "event ";
+ }
+
+ result += this.name + "(" + this.inputs.map(
+ (input) => input.format(format)
+ ).join((format === FormatTypes.full) ? ", ": ",") + ") ";
+
+ if (format !== FormatTypes.sighash) {
+ if (this.anonymous) {
+ result += "anonymous ";
+ }
+ }
+
+ return result.trim();
+ }
+
+ static from(value: EventFragment | JsonFragment | string): EventFragment {
+ if (typeof(value) === "string") {
+ return EventFragment.fromString(value);
+ }
+ return EventFragment.fromObject(value);
+ }
+
+ static fromObject(value: JsonFragment | EventFragment): EventFragment {
+ if (EventFragment.isEventFragment(value)) { return value; }
+
+ if (value.type !== "event") {
+ logger.throwArgumentError("invalid event object", "value", value);
+ }
+
+ const params: TypeCheck<_EventFragment> = {
+ name: verifyIdentifier(value.name),
+ anonymous: value.anonymous,
+ inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),
+ type: "event"
+ };
+
+ return new EventFragment(_constructorGuard, params);
+ }
+
+ static fromString(value: string): EventFragment {
+
+ let match = value.match(regexParen);
+ if (!match) {
+ logger.throwArgumentError("invalid event string", "value", value);
+ }
+
+ let anonymous = false;
+ match[3].split(" ").forEach((modifier) => {
+ switch(modifier.trim()) {
+ case "anonymous":
+ anonymous = true;
+ break;
+ case "":
+ break;
+ default:
+ logger.warn("unknown modifier: " + modifier);
+ }
+ });
+
+ return EventFragment.fromObject({
+ name: match[1].trim(),
+ anonymous: anonymous,
+ inputs: parseParams(match[2], true),
+ type: "event"
+ });
+ }
+
+ static isEventFragment(value: any): value is EventFragment {
+ return (value && value._isFragment && value.type === "event");
+ }
+}
+
+function parseGas(value: string, params: any): string {
+ params.gas = null;
+
+ let comps = value.split("@");
+ if (comps.length !== 1) {
+ if (comps.length > 2) {
+ logger.throwArgumentError("invalid human-readable ABI signature", "value", value);
+ }
+ if (!comps[1].match(/^[0-9]+$/)) {
+ logger.throwArgumentError("invalid human-readable ABI signature gas", "value", value);
+ }
+ params.gas = BigNumber.from(comps[1]);
+ return comps[0];
+ }
+
+ return value;
+}
+
+function parseModifiers(value: string, params: any): void {
+ params.constant = false;
+ params.payable = false;
+ params.stateMutability = "nonpayable";
+
+ value.split(" ").forEach((modifier) => {
+ switch (modifier.trim()) {
+ case "constant":
+ params.constant = true;
+ break;
+ case "payable":
+ params.payable = true;
+ params.stateMutability = "payable";
+ break;
+ case "nonpayable":
+ params.payable = false;
+ params.stateMutability = "nonpayable";
+ break;
+ case "pure":
+ params.constant = true;
+ params.stateMutability = "pure";
+ break;
+ case "view":
+ params.constant = true;
+ params.stateMutability = "view";
+ break;
+ case "external":
+ case "public":
+ case "":
+ break;
+ default:
+ console.log("unknown modifier: " + modifier);
+ }
+ });
+}
+
+type StateInputValue = {
+ constant?: boolean;
+ payable?: boolean;
+ stateMutability?: string;
+ type?: string;
+};
+
+type StateOutputValue = {
+ constant: boolean;
+ payable: boolean;
+ stateMutability: string;
+};
+
+function verifyState(value: StateInputValue): StateOutputValue {
+ let result: any = {
+ constant: false,
+ payable: true,
+ stateMutability: "payable"
+ };
+
+ if (value.stateMutability != null) {
+ result.stateMutability = value.stateMutability;
+
+ // Set (and check things are consistent) the constant property
+ result.constant = (result.stateMutability === "view" || result.stateMutability === "pure");
+ if (value.constant != null) {
+ if ((!!value.constant) !== result.constant) {
+ logger.throwArgumentError("cannot have constant function with mutability " + result.stateMutability, "value", value);
+ }
+ }
+
+ // Set (and check things are consistent) the payable property
+ result.payable = (result.stateMutability === "payable");
+ if (value.payable != null) {
+ if ((!!value.payable) !== result.payable) {
+ logger.throwArgumentError("cannot have payable function with mutability " + result.stateMutability, "value", value);
+ }
+ }
+
+ } else if (value.payable != null) {
+ result.payable = !!value.payable;
+
+ // If payable we can assume non-constant; otherwise we can't assume
+ if (value.constant == null && !result.payable && value.type !== "constructor") {
+ logger.throwArgumentError("unable to determine stateMutability", "value", value);
+ }
+
+ result.constant = !!value.constant;
+
+ if (result.constant) {
+ result.stateMutability = "view";
+ } else {
+ result.stateMutability = (result.payable ? "payable": "nonpayable");
+ }
+
+ if (result.payable && result.constant) {
+ logger.throwArgumentError("cannot have constant payable function", "value", value);
+ }
+
+ } else if (value.constant != null) {
+ result.constant = !!value.constant;
+ result.payable = !result.constant;
+ result.stateMutability = (result.constant ? "view": "payable");
+
+ } else if (value.type !== "constructor") {
+ logger.throwArgumentError("unable to determine stateMutability", "value", value);
+ }
+
+ return result;
+}
+
+interface _ConstructorFragment extends _Fragment {
+ stateMutability: string;
+ payable: boolean;
+ gas?: BigNumber;
+}
+
+export class ConstructorFragment extends Fragment {
+ stateMutability: string;
+ payable: boolean;
+ gas?: BigNumber;
+
+ format(format?: string): string {
+ if (!format) { format = FormatTypes.sighash; }
+ if (!FormatTypes[format]) {
+ logger.throwArgumentError("invalid format type", "format", format);
+ }
+
+ if (format === FormatTypes.json) {
+ return JSON.stringify({
+ type: "constructor",
+ stateMutability: ((this.stateMutability !== "nonpayable") ? this.stateMutability: undefined),
+ payable: this.payable,
+ gas: (this.gas ? this.gas.toNumber(): undefined),
+ inputs: this.inputs.map((input) => JSON.parse(input.format(format)))
+ });
+ }
+
+ if (format === FormatTypes.sighash) {
+ logger.throwError("cannot format a constructor for sighash", Logger.errors.UNSUPPORTED_OPERATION, {
+ operation: "format(sighash)"
+ });
+ }
+
+ let result = "constructor(" + this.inputs.map(
+ (input) => input.format(format)
+ ).join((format === FormatTypes.full) ? ", ": ",") + ") ";
+
+ if (this.stateMutability && this.stateMutability !== "nonpayable") {
+ result += this.stateMutability + " ";
+ }
+
+ return result.trim();
+ }
+
+ static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {
+ if (typeof(value) === "string") {
+ return ConstructorFragment.fromString(value);
+ }
+ return ConstructorFragment.fromObject(value);
+ }
+
+ static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {
+ if (ConstructorFragment.isConstructorFragment(value)) { return value; }
+
+ if (value.type !== "constructor") {
+ logger.throwArgumentError("invalid constructor object", "value", value);
+ }
+
+ let state = verifyState(value);
+ if (state.constant) {
+ logger.throwArgumentError("constructor cannot be constant", "value", value);
+ }
+
+ const params: TypeCheck<_ConstructorFragment> = {
+ name: null,
+ type: value.type,
+ inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),
+ payable: state.payable,
+ stateMutability: state.stateMutability,
+ gas: (value.gas ? BigNumber.from(value.gas): null)
+ };
+
+ return new ConstructorFragment(_constructorGuard, params);
+ }
+
+ static fromString(value: string): ConstructorFragment {
+ let params: any = { type: "constructor" };
+
+ value = parseGas(value, params);
+
+ let parens = value.match(regexParen);
+ if (!parens || parens[1].trim() !== "constructor") {
+ logger.throwArgumentError("invalid constructor string", "value", value);
+ }
+
+ params.inputs = parseParams(parens[2].trim(), false);
+
+ parseModifiers(parens[3].trim(), params);
+
+ return ConstructorFragment.fromObject(params);
+ }
+
+ static isConstructorFragment(value: any): value is ConstructorFragment {
+ return (value && value._isFragment && value.type === "constructor");
+ }
+}
+
+interface _FunctionFragment extends _ConstructorFragment {
+ constant: boolean;
+ outputs?: Array;
+}
+
+export class FunctionFragment extends ConstructorFragment {
+ constant: boolean;
+ outputs?: Array;
+
+ format(format?: string): string {
+ if (!format) { format = FormatTypes.sighash; }
+ if (!FormatTypes[format]) {
+ logger.throwArgumentError("invalid format type", "format", format);
+ }
+
+ if (format === FormatTypes.json) {
+ return JSON.stringify({
+ type: "function",
+ name: this.name,
+ constant: this.constant,
+ stateMutability: ((this.stateMutability !== "nonpayable") ? this.stateMutability: undefined),
+ payable: this.payable,
+ gas: (this.gas ? this.gas.toNumber(): undefined),
+ inputs: this.inputs.map((input) => JSON.parse(input.format(format))),
+ outputs: this.outputs.map((output) => JSON.parse(output.format(format))),
+ });
+ }
+
+ let result = "";
+
+ if (format !== FormatTypes.sighash) {
+ result += "function ";
+ }
+
+ result += this.name + "(" + this.inputs.map(
+ (input) => input.format(format)
+ ).join((format === FormatTypes.full) ? ", ": ",") + ") ";
+
+ if (format !== FormatTypes.sighash) {
+ if (this.stateMutability) {
+ if (this.stateMutability !== "nonpayable") {
+ result += (this.stateMutability + " ");
+ }
+ } else if (this.constant) {
+ result += "view ";
+ }
+
+ if (this.outputs && this.outputs.length) {
+ result += "returns (" + this.outputs.map(
+ (output) => output.format(format)
+ ).join(", ") + ") ";
+ }
+
+ if (this.gas != null) {
+ result += "@" + this.gas.toString() + " ";
+ }
+ }
+
+ return result.trim();
+ }
+
+ static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {
+ if (typeof(value) === "string") {
+ return FunctionFragment.fromString(value);
+ }
+ return FunctionFragment.fromObject(value);
+ }
+
+ static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {
+ if (FunctionFragment.isFunctionFragment(value)) { return value; }
+
+ if (value.type !== "function") {
+ logger.throwArgumentError("invalid function object", "value", value);
+ }
+
+ let state = verifyState(value);
+
+ const params: TypeCheck<_FunctionFragment> = {
+ type: value.type,
+ name: verifyIdentifier(value.name),
+ constant: state.constant,
+ inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),
+ outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),
+ payable: state.payable,
+ stateMutability: state.stateMutability,
+ gas: (value.gas ? BigNumber.from(value.gas): null)
+ };
+
+ return new FunctionFragment(_constructorGuard, params);
+ }
+
+ static fromString(value: string): FunctionFragment {
+ let params: any = { type: "function" };
+ value = parseGas(value, params);
+
+ let comps = value.split(" returns ");
+ if (comps.length > 2) {
+ logger.throwArgumentError("invalid function string", "value", value);
+ }
+
+ let parens = comps[0].match(regexParen);
+ if (!parens) {
+ logger.throwArgumentError("invalid function signature", "value", value);
+ }
+
+ params.name = parens[1].trim();
+ if (params.name) { verifyIdentifier(params.name); }
+
+ params.inputs = parseParams(parens[2], false);
+
+ parseModifiers(parens[3].trim(), params);
+
+ // We have outputs
+ if (comps.length > 1) {
+ let returns = comps[1].match(regexParen);
+ if (returns[1].trim() != "" || returns[3].trim() != "") {
+ logger.throwArgumentError("unexpected tokens", "value", value);
+ }
+ params.outputs = parseParams(returns[2], false);
+ } else {
+ params.outputs = [ ];
+ }
+
+ return FunctionFragment.fromObject(params);
+ }
+
+ static isFunctionFragment(value: any): value is FunctionFragment {
+ return (value && value._isFragment && value.type === "function");
+ }
+}
+
+//export class StructFragment extends Fragment {
+//}
+
+function checkForbidden(fragment: ErrorFragment): ErrorFragment {
+ const sig = fragment.format();
+ if (sig === "Error(string)" || sig === "Panic(uint256)") {
+ logger.throwArgumentError(`cannot specify user defined ${ sig } error`, "fragment", fragment);
+ }
+ return fragment;
+}
+
+export class ErrorFragment extends Fragment {
+
+ format(format?: string): string {
+ if (!format) { format = FormatTypes.sighash; }
+ if (!FormatTypes[format]) {
+ logger.throwArgumentError("invalid format type", "format", format);
+ }
+
+ if (format === FormatTypes.json) {
+ return JSON.stringify({
+ type: "error",
+ name: this.name,
+ inputs: this.inputs.map((input) => JSON.parse(input.format(format))),
+ });
+ }
+
+ let result = "";
+
+ if (format !== FormatTypes.sighash) {
+ result += "error ";
+ }
+
+ result += this.name + "(" + this.inputs.map(
+ (input) => input.format(format)
+ ).join((format === FormatTypes.full) ? ", ": ",") + ") ";
+
+ return result.trim();
+ }
+
+ static from(value: ErrorFragment | JsonFragment | string): ErrorFragment {
+ if (typeof(value) === "string") {
+ return ErrorFragment.fromString(value);
+ }
+ return ErrorFragment.fromObject(value);
+ }
+
+ static fromObject(value: ErrorFragment | JsonFragment): ErrorFragment {
+ if (ErrorFragment.isErrorFragment(value)) { return value; }
+
+ if (value.type !== "error") {
+ logger.throwArgumentError("invalid error object", "value", value);
+ }
+
+ const params: TypeCheck<_Fragment> = {
+ type: value.type,
+ name: verifyIdentifier(value.name),
+ inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): [])
+ };
+
+ return checkForbidden(new ErrorFragment(_constructorGuard, params));
+ }
+
+ static fromString(value: string): ErrorFragment {
+ let params: any = { type: "error" };
+
+ let parens = value.match(regexParen);
+ if (!parens) {
+ logger.throwArgumentError("invalid error signature", "value", value);
+ }
+
+ params.name = parens[1].trim();
+ if (params.name) { verifyIdentifier(params.name); }
+
+ params.inputs = parseParams(parens[2], false);
+
+ return checkForbidden(ErrorFragment.fromObject(params));
+ }
+
+ static isErrorFragment(value: any): value is ErrorFragment {
+ return (value && value._isFragment && value.type === "error");
+ }
+}
+
+function verifyType(type: string): string {
+
+ // These need to be transformed to their full description
+ if (type.match(/^uint($|[^1-9])/)) {
+ type = "uint256" + type.substring(4);
+ } else if (type.match(/^int($|[^1-9])/)) {
+ type = "int256" + type.substring(3);
+ }
+
+ // @TODO: more verification
+
+ return type;
+}
+
+// See: https://github.com/ethereum/solidity/blob/1f8f1a3db93a548d0555e3e14cfc55a10e25b60e/docs/grammar/SolidityLexer.g4#L234
+const regexIdentifier = new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");
+function verifyIdentifier(value: string): string {
+ if (!value || !value.match(regexIdentifier)) {
+ logger.throwArgumentError(`invalid identifier "${ value }"`, "value", value);
+ }
+ return value;
+}
+
+const regexParen = new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");
+
+function splitNesting(value: string): Array {
+ value = value.trim();
+
+ let result = [];
+ let accum = "";
+ let depth = 0;
+ for (let offset = 0; offset < value.length; offset++) {
+ let c = value[offset];
+ if (c === "," && depth === 0) {
+ result.push(accum);
+ accum = "";
+ } else {
+ accum += c;
+ if (c === "(") {
+ depth++;
+ } else if (c === ")") {
+ depth--;
+ if (depth === -1) {
+ logger.throwArgumentError("unbalanced parenthesis", "value", value);
+ }
+ }
+ }
+ }
+ if (accum) { result.push(accum); }
+
+ return result;
+}
+
diff --git a/packages/abi/src/index.ts b/packages/abi/src/index.ts
new file mode 100644
index 00000000..68584090
--- /dev/null
+++ b/packages/abi/src/index.ts
@@ -0,0 +1,34 @@
+"use strict";
+
+import { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, JsonFragmentType, ParamType } from "./fragments";
+import { AbiCoder, CoerceFunc, defaultAbiCoder } from "./abi-coder";
+import { checkResultErrors, Indexed, Interface, LogDescription, Result, TransactionDescription } from "./interface";
+
+export {
+ ConstructorFragment,
+ ErrorFragment,
+ EventFragment,
+ Fragment,
+ FunctionFragment,
+ ParamType,
+ FormatTypes,
+
+ AbiCoder,
+ defaultAbiCoder,
+
+ Interface,
+ Indexed,
+
+ /////////////////////////
+ // Types
+
+ CoerceFunc,
+ JsonFragment,
+ JsonFragmentType,
+
+ Result,
+ checkResultErrors,
+
+ LogDescription,
+ TransactionDescription
+};
diff --git a/packages/abi/src/interface.ts b/packages/abi/src/interface.ts
new file mode 100644
index 00000000..fdf77eff
--- /dev/null
+++ b/packages/abi/src/interface.ts
@@ -0,0 +1,715 @@
+"use strict";
+
+import { getAddress } from "@ethersproject/address";
+import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
+import { arrayify, BytesLike, concat, hexDataSlice, hexlify, hexZeroPad, isHexString } from "@ethersproject/bytes";
+import { id } from "@ethersproject/hash";
+import { keccak256 } from "@ethersproject/keccak256"
+import { defineReadOnly, Description, getStatic } from "@ethersproject/properties";
+
+import { AbiCoder, defaultAbiCoder } from "./abi-coder";
+import { checkResultErrors, Result } from "./coders/abstract-coder";
+import { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, ParamType } from "./fragments";
+
+import { Logger } from "@ethersproject/logger";
+import { version } from "./_version";
+const logger = new Logger(version);
+
+export { checkResultErrors, Result };
+
+export class LogDescription extends Description {
+ readonly eventFragment: EventFragment;
+ readonly name: string;
+ readonly signature: string;
+ readonly topic: string;
+ readonly args: Result
+}
+
+export class TransactionDescription extends Description {
+ readonly functionFragment: FunctionFragment;
+ readonly name: string;
+ readonly args: Result;
+ readonly signature: string;
+ readonly sighash: string;
+ readonly value: BigNumber;
+}
+
+export class ErrorDescription extends Description {
+ readonly errorFragment: ErrorFragment;
+ readonly name: string;
+ readonly args: Result;
+ readonly signature: string;
+ readonly sighash: string;
+}
+
+export class Indexed extends Description {
+ readonly hash: string;
+ readonly _isIndexed: boolean;
+
+ static isIndexed(value: any): value is Indexed {
+ return !!(value && value._isIndexed);
+ }
+}
+
+const BuiltinErrors: Record, name: string, reason?: boolean }> = {
+ "0x08c379a0": { signature: "Error(string)", name: "Error", inputs: [ "string" ], reason: true },
+ "0x4e487b71": { signature: "Panic(uint256)", name: "Panic", inputs: [ "uint256" ] }
+}
+
+function wrapAccessError(property: string, error: Error): Error {
+ const wrap = new Error(`deferred error during ABI decoding triggered accessing ${ property }`);
+ (wrap).error = error;
+ return wrap;
+}
+
+/*
+function checkNames(fragment: Fragment, type: "input" | "output", params: Array): void {
+ params.reduce((accum, param) => {
+ if (param.name) {
+ if (accum[param.name]) {
+ logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format("full") }`, "fragment", fragment);
+ }
+ accum[param.name] = true;
+ }
+ return accum;
+ }, <{ [ name: string ]: boolean }>{ });
+}
+*/
+export class Interface {
+ readonly fragments: ReadonlyArray;
+
+ readonly errors: { [ name: string ]: ErrorFragment };
+ readonly events: { [ name: string ]: EventFragment };
+ readonly functions: { [ name: string ]: FunctionFragment };
+ readonly structs: { [ name: string ]: any };
+
+ readonly deploy: ConstructorFragment;
+
+ readonly _abiCoder: AbiCoder;
+
+ readonly _isInterface: boolean;
+
+ constructor(fragments: string | ReadonlyArray) {
+ let abi: ReadonlyArray = [ ];
+ if (typeof(fragments) === "string") {
+ abi = JSON.parse(fragments);
+ } else {
+ abi = fragments;
+ }
+
+ defineReadOnly(this, "fragments", abi.map((fragment) => {
+ return Fragment.from(fragment);
+ }).filter((fragment) => (fragment != null)));
+
+ defineReadOnly(this, "_abiCoder", getStatic<() => AbiCoder>(new.target, "getAbiCoder")());
+
+ defineReadOnly(this, "functions", { });
+ defineReadOnly(this, "errors", { });
+ defineReadOnly(this, "events", { });
+ defineReadOnly(this, "structs", { });
+
+ // Add all fragments by their signature
+ this.fragments.forEach((fragment) => {
+ let bucket: { [ name: string ]: Fragment } = null;
+ switch (fragment.type) {
+ case "constructor":
+ if (this.deploy) {
+ logger.warn("duplicate definition - constructor");
+ return;
+ }
+ //checkNames(fragment, "input", fragment.inputs);
+ defineReadOnly(this, "deploy", fragment);
+ return;
+ case "function":
+ //checkNames(fragment, "input", fragment.inputs);
+ //checkNames(fragment, "output", (fragment).outputs);
+ bucket = this.functions;
+ break;
+ case "event":
+ //checkNames(fragment, "input", fragment.inputs);
+ bucket = this.events;
+ break;
+ case "error":
+ bucket = this.errors;
+ break;
+ default:
+ return;
+ }
+
+ let signature = fragment.format();
+ if (bucket[signature]) {
+ logger.warn("duplicate definition - " + signature);
+ return;
+ }
+
+ bucket[signature] = fragment;
+ });
+
+ // If we do not have a constructor add a default
+ if (!this.deploy) {
+ defineReadOnly(this, "deploy", ConstructorFragment.from({
+ payable: false,
+ type: "constructor"
+ }));
+ }
+
+ defineReadOnly(this, "_isInterface", true);
+ }
+
+ format(format?: string): string | Array {
+ if (!format) { format = FormatTypes.full; }
+ if (format === FormatTypes.sighash) {
+ logger.throwArgumentError("interface does not support formatting sighash", "format", format);
+ }
+
+ const abi = this.fragments.map((fragment) => fragment.format(format));
+
+ // We need to re-bundle the JSON fragments a bit
+ if (format === FormatTypes.json) {
+ return JSON.stringify(abi.map((j) => JSON.parse(j)));
+ }
+
+ return abi;
+ }
+
+ // Sub-classes can override these to handle other blockchains
+ static getAbiCoder(): AbiCoder {
+ return defaultAbiCoder;
+ }
+
+ static getAddress(address: string): string {
+ return getAddress(address);
+ }
+
+ static getSighash(fragment: ErrorFragment | FunctionFragment): string {
+ return hexDataSlice(id(fragment.format()), 0, 4);
+ }
+
+ static getEventTopic(eventFragment: EventFragment): string {
+ return id(eventFragment.format());
+ }
+
+ // Find a function definition by any means necessary (unless it is ambiguous)
+ getFunction(nameOrSignatureOrSighash: string): FunctionFragment {
+ if (isHexString(nameOrSignatureOrSighash)) {
+ for (const name in this.functions) {
+ if (nameOrSignatureOrSighash === this.getSighash(name)) {
+ return this.functions[name];
+ }
+ }
+ logger.throwArgumentError("no matching function", "sighash", nameOrSignatureOrSighash);
+ }
+
+ // It is a bare name, look up the function (will return null if ambiguous)
+ if (nameOrSignatureOrSighash.indexOf("(") === -1) {
+ const name = nameOrSignatureOrSighash.trim();
+ const matching = Object.keys(this.functions).filter((f) => (f.split("("/* fix:) */)[0] === name));
+ if (matching.length === 0) {
+ logger.throwArgumentError("no matching function", "name", name);
+ } else if (matching.length > 1) {
+ logger.throwArgumentError("multiple matching functions", "name", name);
+ }
+
+ return this.functions[matching[0]];
+ }
+
+ // Normalize the signature and lookup the function
+ const result = this.functions[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];
+ if (!result) {
+ logger.throwArgumentError("no matching function", "signature", nameOrSignatureOrSighash);
+ }
+ return result;
+ }
+
+ // Find an event definition by any means necessary (unless it is ambiguous)
+ getEvent(nameOrSignatureOrTopic: string): EventFragment {
+ if (isHexString(nameOrSignatureOrTopic)) {
+ const topichash = nameOrSignatureOrTopic.toLowerCase();
+ for (const name in this.events) {
+ if (topichash === this.getEventTopic(name)) {
+ return this.events[name];
+ }
+ }
+ logger.throwArgumentError("no matching event", "topichash", topichash);
+ }
+
+ // It is a bare name, look up the function (will return null if ambiguous)
+ if (nameOrSignatureOrTopic.indexOf("(") === -1) {
+ const name = nameOrSignatureOrTopic.trim();
+ const matching = Object.keys(this.events).filter((f) => (f.split("("/* fix:) */)[0] === name));
+ if (matching.length === 0) {
+ logger.throwArgumentError("no matching event", "name", name);
+ } else if (matching.length > 1) {
+ logger.throwArgumentError("multiple matching events", "name", name);
+ }
+
+ return this.events[matching[0]];
+ }
+
+ // Normalize the signature and lookup the function
+ const result = this.events[EventFragment.fromString(nameOrSignatureOrTopic).format()];
+ if (!result) {
+ logger.throwArgumentError("no matching event", "signature", nameOrSignatureOrTopic);
+ }
+ return result;
+ }
+
+ // Find a function definition by any means necessary (unless it is ambiguous)
+ getError(nameOrSignatureOrSighash: string): ErrorFragment {
+ if (isHexString(nameOrSignatureOrSighash)) {
+ const getSighash = getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, "getSighash");
+ for (const name in this.errors) {
+ const error = this.errors[name];
+ if (nameOrSignatureOrSighash === getSighash(error)) {
+ return this.errors[name];
+ }
+ }
+ logger.throwArgumentError("no matching error", "sighash", nameOrSignatureOrSighash);
+ }
+
+ // It is a bare name, look up the function (will return null if ambiguous)
+ if (nameOrSignatureOrSighash.indexOf("(") === -1) {
+ const name = nameOrSignatureOrSighash.trim();
+ const matching = Object.keys(this.errors).filter((f) => (f.split("("/* fix:) */)[0] === name));
+ if (matching.length === 0) {
+ logger.throwArgumentError("no matching error", "name", name);
+ } else if (matching.length > 1) {
+ logger.throwArgumentError("multiple matching errors", "name", name);
+ }
+
+ return this.errors[matching[0]];
+ }
+
+ // Normalize the signature and lookup the function
+ const result = this.errors[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];
+ if (!result) {
+ logger.throwArgumentError("no matching error", "signature", nameOrSignatureOrSighash);
+ }
+ return result;
+ }
+
+ // Get the sighash (the bytes4 selector) used by Hyperion to identify a function
+ getSighash(fragment: ErrorFragment | FunctionFragment | string): string {
+ if (typeof(fragment) === "string") {
+ try {
+ fragment = this.getFunction(fragment);
+ } catch (error) {
+ try {
+ fragment = this.getError(fragment);
+ } catch (_) {
+ throw error;
+ }
+ }
+ }
+
+ return getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, "getSighash")(fragment);
+ }
+
+ // Get the topic (the bytes32 hash) used by Hyperion to identify an event
+ getEventTopic(eventFragment: EventFragment | string): string {
+ if (typeof(eventFragment) === "string") {
+ eventFragment = this.getEvent(eventFragment);
+ }
+
+ return getStatic<(e: EventFragment) => string>(this.constructor, "getEventTopic")(eventFragment);
+ }
+
+
+ _decodeParams(params: ReadonlyArray, data: BytesLike): Result {
+ return this._abiCoder.decode(params, data)
+ }
+
+ _encodeParams(params: ReadonlyArray, values: ReadonlyArray): string {
+ return this._abiCoder.encode(params, values)
+ }
+
+ encodeDeploy(values?: ReadonlyArray): string {
+ return this._encodeParams(this.deploy.inputs, values || [ ]);
+ }
+
+ decodeErrorResult(fragment: ErrorFragment | string, data: BytesLike): Result {
+ if (typeof(fragment) === "string") {
+ fragment = this.getError(fragment);
+ }
+
+ const bytes = arrayify(data);
+
+ if (hexlify(bytes.slice(0, 4)) !== this.getSighash(fragment)) {
+ logger.throwArgumentError(`data signature does not match error ${ fragment.name }.`, "data", hexlify(bytes));
+ }
+
+ return this._decodeParams(fragment.inputs, bytes.slice(4));
+ }
+
+ encodeErrorResult(fragment: ErrorFragment | string, values?: ReadonlyArray): string {
+ if (typeof(fragment) === "string") {
+ fragment = this.getError(fragment);
+ }
+
+ return hexlify(concat([
+ this.getSighash(fragment),
+ this._encodeParams(fragment.inputs, values || [ ])
+ ]));
+ }
+
+ // Decode the data for a function call (e.g. tx.data)
+ decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result {
+ if (typeof(functionFragment) === "string") {
+ functionFragment = this.getFunction(functionFragment);
+ }
+
+ const bytes = arrayify(data);
+
+ if (hexlify(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {
+ logger.throwArgumentError(`data signature does not match function ${ functionFragment.name }.`, "data", hexlify(bytes));
+ }
+
+ return this._decodeParams(functionFragment.inputs, bytes.slice(4));
+ }
+
+ // Encode the data for a function call (e.g. tx.data)
+ encodeFunctionData(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {
+ if (typeof(functionFragment) === "string") {
+ functionFragment = this.getFunction(functionFragment);
+ }
+
+ return hexlify(concat([
+ this.getSighash(functionFragment),
+ this._encodeParams(functionFragment.inputs, values || [ ])
+ ]));
+ }
+
+ // Decode the result from a function call (e.g. from eth_call)
+ decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): Result {
+ if (typeof(functionFragment) === "string") {
+ functionFragment = this.getFunction(functionFragment);
+ }
+
+ let bytes = arrayify(data);
+
+ let reason: string = null;
+ let message = "";
+ let errorArgs: Result = null;
+ let errorName: string = null;
+ let errorSignature: string = null;
+ switch (bytes.length % this._abiCoder._getWordSize()) {
+ case 0:
+ try {
+ return this._abiCoder.decode(functionFragment.outputs, bytes);
+ } catch (error) { }
+ break;
+
+ case 4: {
+ const selector = hexlify(bytes.slice(0, 4));
+ const builtin = BuiltinErrors[selector];
+ if (builtin) {
+ errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));
+ errorName = builtin.name;
+ errorSignature = builtin.signature;
+ if (builtin.reason) { reason = errorArgs[0]; }
+ if (errorName === "Error") {
+ message = `; VM Exception while processing transaction: reverted with reason string ${ JSON.stringify(errorArgs[0]) }`;
+ } else if (errorName === "Panic") {
+ message = `; VM Exception while processing transaction: reverted with panic code ${ errorArgs[0] }`;
+ }
+ } else {
+ try {
+ const error = this.getError(selector);
+ errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));
+ errorName = error.name;
+ errorSignature = error.format();
+ } catch (error) { }
+ }
+ break;
+ }
+ }
+
+ return logger.throwError("call revert exception" + message, Logger.errors.CALL_EXCEPTION, {
+ method: functionFragment.format(),
+ data: hexlify(data), errorArgs, errorName, errorSignature, reason
+ });
+ }
+
+ // Encode the result for a function call (e.g. for eth_call)
+ encodeFunctionResult(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {
+ if (typeof(functionFragment) === "string") {
+ functionFragment = this.getFunction(functionFragment);
+ }
+
+ return hexlify(this._abiCoder.encode(functionFragment.outputs, values || [ ]));
+ }
+
+ // Create the filter for the event with search criteria (e.g. for eth_filterLog)
+ encodeFilterTopics(eventFragment: EventFragment | string, values: ReadonlyArray): Array> {
+ if (typeof(eventFragment) === "string") {
+ eventFragment = this.getEvent(eventFragment);
+ }
+
+ if (values.length > eventFragment.inputs.length) {
+ logger.throwError("too many arguments for " + eventFragment.format(), Logger.errors.UNEXPECTED_ARGUMENT, {
+ argument: "values",
+ value: values
+ })
+ }
+
+ let topics: Array> = [];
+ if (!eventFragment.anonymous) { topics.push(this.getEventTopic(eventFragment)); }
+
+ const encodeTopic = (param: ParamType, value: any): string => {
+ if (param.type === "string") {
+ return id(value);
+ } else if (param.type === "bytes") {
+ return keccak256(hexlify(value));
+ }
+
+ if (param.type === "bool" && typeof(value) === "boolean") {
+ value = (value ? "0x01": "0x00");
+ }
+
+ if (param.type.match(/^u?int/)) {
+ value = BigNumber.from(value).toHexString();
+ }
+
+ // Check addresses are valid
+ if (param.type === "address") { this._abiCoder.encode( [ "address" ], [ value ]); }
+ return hexZeroPad(hexlify(value), 32);
+ };
+
+ values.forEach((value, index) => {
+
+ let param = (eventFragment).inputs[index];
+
+ if (!param.indexed) {
+ if (value != null) {
+ logger.throwArgumentError("cannot filter non-indexed parameters; must be null", ("contract." + param.name), value);
+ }
+ return;
+ }
+
+ if (value == null) {
+ topics.push(null);
+ } else if (param.baseType === "array" || param.baseType === "tuple") {
+ logger.throwArgumentError("filtering with tuples or arrays not supported", ("contract." + param.name), value);
+ } else if (Array.isArray(value)) {
+ topics.push(value.map((value) => encodeTopic(param, value)));
+ } else {
+ topics.push(encodeTopic(param, value));
+ }
+ });
+
+ // Trim off trailing nulls
+ while (topics.length && topics[topics.length - 1] === null) {
+ topics.pop();
+ }
+
+ return topics;
+ }
+
+ encodeEventLog(eventFragment: EventFragment | string, values: ReadonlyArray): { data: string, topics: Array } {
+ if (typeof(eventFragment) === "string") {
+ eventFragment = this.getEvent(eventFragment);
+ }
+
+ const topics: Array = [ ];
+
+ const dataTypes: Array = [ ];
+ const dataValues: Array = [ ];
+
+ if (!eventFragment.anonymous) {
+ topics.push(this.getEventTopic(eventFragment));
+ }
+
+ if (values.length !== eventFragment.inputs.length) {
+ logger.throwArgumentError("event arguments/values mismatch", "values", values);
+ }
+
+ eventFragment.inputs.forEach((param, index) => {
+ const value = values[index];
+ if (param.indexed) {
+ if (param.type === "string") {
+ topics.push(id(value))
+ } else if (param.type === "bytes") {
+ topics.push(keccak256(value))
+ } else if (param.baseType === "tuple" || param.baseType === "array") {
+ // @TODO
+ throw new Error("not implemented");
+ } else {
+ topics.push(this._abiCoder.encode([ param.type] , [ value ]));
+ }
+ } else {
+ dataTypes.push(param);
+ dataValues.push(value);
+ }
+ });
+
+ return {
+ data: this._abiCoder.encode(dataTypes , dataValues),
+ topics: topics
+ };
+ }
+
+ // Decode a filter for the event and the search criteria
+ decodeEventLog(eventFragment: EventFragment | string, data: BytesLike, topics?: ReadonlyArray): Result {
+ if (typeof(eventFragment) === "string") {
+ eventFragment = this.getEvent(eventFragment);
+ }
+
+ if (topics != null && !eventFragment.anonymous) {
+ let topicHash = this.getEventTopic(eventFragment);
+ if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {
+ logger.throwError("fragment/topic mismatch", Logger.errors.INVALID_ARGUMENT, { argument: "topics[0]", expected: topicHash, value: topics[0] });
+ }
+ topics = topics.slice(1);
+ }
+
+ let indexed: Array = [];
+ let nonIndexed: Array = [];
+ let dynamic: Array = [];
+
+ eventFragment.inputs.forEach((param, index) => {
+ if (param.indexed) {
+ if (param.type === "string" || param.type === "bytes" || param.baseType === "tuple" || param.baseType === "array") {
+ indexed.push(ParamType.fromObject({ type: "bytes32", name: param.name }));
+ dynamic.push(true);
+ } else {
+ indexed.push(param);
+ dynamic.push(false);
+ }
+ } else {
+ nonIndexed.push(param);
+ dynamic.push(false);
+ }
+ });
+
+ let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)): null;
+ let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);
+
+ let result: (Array & { [ key: string ]: any }) = [ ];
+ let nonIndexedIndex = 0, indexedIndex = 0;
+ eventFragment.inputs.forEach((param, index) => {
+ if (param.indexed) {
+ if (resultIndexed == null) {
+ result[index] = new Indexed({ _isIndexed: true, hash: null });
+
+ } else if (dynamic[index]) {
+ result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });
+
+ } else {
+ try {
+ result[index] = resultIndexed[indexedIndex++];
+ } catch (error) {
+ result[index] = error;
+ }
+ }
+ } else {
+ try {
+ result[index] = resultNonIndexed[nonIndexedIndex++];
+ } catch (error) {
+ result[index] = error;
+ }
+ }
+
+ // Add the keyword argument if named and safe
+ if (param.name && result[param.name] == null) {
+ const value = result[index];
+
+ // Make error named values throw on access
+ if (value instanceof Error) {
+ Object.defineProperty(result, param.name, {
+ enumerable: true,
+ get: () => { throw wrapAccessError(`property ${ JSON.stringify(param.name) }`, value); }
+ });
+ } else {
+ result[param.name] = value;
+ }
+ }
+ });
+
+ // Make all error indexed values throw on access
+ for (let i = 0; i < result.length; i++) {
+ const value = result[i];
+ if (value instanceof Error) {
+ Object.defineProperty(result, i, {
+ enumerable: true,
+ get: () => { throw wrapAccessError(`index ${ i }`, value); }
+ });
+ }
+ }
+
+ return Object.freeze(result);
+ }
+
+ // Given a transaction, find the matching function fragment (if any) and
+ // determine all its properties and call parameters
+ parseTransaction(tx: { data: string, value?: BigNumberish }): TransactionDescription {
+ let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase())
+
+ if (!fragment) { return null; }
+
+ return new TransactionDescription({
+ args: this._abiCoder.decode(fragment.inputs, "0x" + tx.data.substring(10)),
+ functionFragment: fragment,
+ name: fragment.name,
+ signature: fragment.format(),
+ sighash: this.getSighash(fragment),
+ value: BigNumber.from(tx.value || "0"),
+ });
+ }
+
+ // @TODO
+ //parseCallResult(data: BytesLike): ??
+
+ // Given an event log, find the matching event fragment (if any) and
+ // determine all its properties and values
+ parseLog(log: { topics: Array, data: string}): LogDescription {
+ let fragment = this.getEvent(log.topics[0]);
+
+ if (!fragment || fragment.anonymous) { return null; }
+
+ // @TODO: If anonymous, and the only method, and the input count matches, should we parse?
+ // Probably not, because just because it is the only event in the ABI does
+ // not mean we have the full ABI; maybe just a fragment?
+
+
+ return new LogDescription({
+ eventFragment: fragment,
+ name: fragment.name,
+ signature: fragment.format(),
+ topic: this.getEventTopic(fragment),
+ args: this.decodeEventLog(fragment, log.data, log.topics)
+ });
+ }
+
+ parseError(data: BytesLike): ErrorDescription {
+ const hexData = hexlify(data);
+ let fragment = this.getError(hexData.substring(0, 10).toLowerCase())
+
+ if (!fragment) { return null; }
+
+ return new ErrorDescription({
+ args: this._abiCoder.decode(fragment.inputs, "0x" + hexData.substring(10)),
+ errorFragment: fragment,
+ name: fragment.name,
+ signature: fragment.format(),
+ sighash: this.getSighash(fragment),
+ });
+ }
+
+
+ /*
+ static from(value: Array | string | Interface) {
+ if (Interface.isInterface(value)) {
+ return value;
+ }
+ if (typeof(value) === "string") {
+ return new Interface(JSON.parse(value));
+ }
+ return new Interface(value);
+ }
+ */
+
+ static isInterface(value: any): value is Interface {
+ return !!(value && value._isInterface);
+ }
+}
+
diff --git a/packages/web3-zond-personal/test/.eslintrc.js b/packages/abi/test/.eslintrc.js
similarity index 100%
rename from packages/web3-zond-personal/test/.eslintrc.js
rename to packages/abi/test/.eslintrc.js
diff --git a/packages/web3-zond-personal/test/config/jest.config.js b/packages/abi/test/config/jest.config.js
similarity index 95%
rename from packages/web3-zond-personal/test/config/jest.config.js
rename to packages/abi/test/config/jest.config.js
index c8c21e06..eaa5e904 100644
--- a/packages/web3-zond-personal/test/config/jest.config.js
+++ b/packages/abi/test/config/jest.config.js
@@ -10,9 +10,6 @@ module.exports = {
transform: {
'^.+\\.(ts|tsx)$': 'ts-jest',
},
- moduleNameMapper: {
- '^(\\.{1,2}/.*)\\.js$': '$1',
- },
verbose: false,
collectCoverage: false,
coverageReporters: ['json'],
diff --git a/packages/web3-zond-personal/test/config/setup.js b/packages/abi/test/config/setup.js
similarity index 100%
rename from packages/web3-zond-personal/test/config/setup.js
rename to packages/abi/test/config/setup.js
diff --git a/packages/web3-zond-personal/test/integration/jest.config.js b/packages/abi/test/integration/jest.config.js
similarity index 100%
rename from packages/web3-zond-personal/test/integration/jest.config.js
rename to packages/abi/test/integration/jest.config.js
diff --git a/packages/web3-zond-personal/test/integration/setup.js b/packages/abi/test/integration/setup.js
similarity index 96%
rename from packages/web3-zond-personal/test/integration/setup.js
rename to packages/abi/test/integration/setup.js
index 4ddafc03..5be1bccf 100644
--- a/packages/web3-zond-personal/test/integration/setup.js
+++ b/packages/abi/test/integration/setup.js
@@ -19,6 +19,6 @@ along with web3.js. If not, see .
// eslint-disable-next-line @typescript-eslint/no-require-imports
require('../config/setup');
-const jestTimeout = 50 * 1000;
+const jestTimeout = 15000;
jest.setTimeout(jestTimeout);
diff --git a/packages/web3-zond-personal/test/tsconfig.json b/packages/abi/test/tsconfig.json
similarity index 100%
rename from packages/web3-zond-personal/test/tsconfig.json
rename to packages/abi/test/tsconfig.json
diff --git a/packages/abi/test/unit/abi.test.ts b/packages/abi/test/unit/abi.test.ts
new file mode 100644
index 00000000..120879f4
--- /dev/null
+++ b/packages/abi/test/unit/abi.test.ts
@@ -0,0 +1,3 @@
+describe('abi', () => {
+ it('test', () => {});
+});
\ No newline at end of file
diff --git a/packages/web3-zond-personal/test/unit/jest.config.js b/packages/abi/test/unit/jest.config.js
similarity index 85%
rename from packages/web3-zond-personal/test/unit/jest.config.js
rename to packages/abi/test/unit/jest.config.js
index 3815ba85..03802530 100644
--- a/packages/web3-zond-personal/test/unit/jest.config.js
+++ b/packages/abi/test/unit/jest.config.js
@@ -11,7 +11,7 @@ module.exports = {
[
'json',
{
- file: 'web3-eth-personal-unit-coverage.json',
+ file: 'abi-unit-coverage.json',
},
],
],
diff --git a/packages/abi/tsconfig.cjs.json b/packages/abi/tsconfig.cjs.json
new file mode 100644
index 00000000..5e70d22d
--- /dev/null
+++ b/packages/abi/tsconfig.cjs.json
@@ -0,0 +1,28 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "./lib/commonjs",
+ "esModuleInterop": true,
+ "declaration": true,
+ "declarationMap": true,
+ "module": "commonjs",
+ "strictNullChecks": false,
+ "resolveJsonModule": false,
+ "target": "es2022",
+ "lib": [
+ "es2020",
+ "es5"
+ ],
+ "noUnusedParameters": false,
+ // "moduleResolution": "node16",
+ "importHelpers": true,
+ "noEmitOnError": true,
+ "allowSyntheticDefaultImports": false,
+ "preserveSymlinks": true,
+ "preserveWatchOutput": true,
+ "noImplicitThis": true,
+ "noImplicitAny": true,
+ "pretty": false
+ },
+ "include": ["src/**/*", "index.d.ts"]
+}
diff --git a/packages/abi/tsconfig.esm.json b/packages/abi/tsconfig.esm.json
new file mode 100644
index 00000000..3edd46c1
--- /dev/null
+++ b/packages/abi/tsconfig.esm.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "./lib/esm",
+ "strictNullChecks": false,
+ "target": "es2022",
+ "lib": [
+ "es2020",
+ "es5"
+ ],
+ "noUnusedParameters": false,
+ // "moduleResolution": "node16",
+ "importHelpers": true,
+ "noEmitOnError": true
+ },
+ "include": ["src/**/*", "index.d.ts"]
+}
diff --git a/packages/abi/tsconfig.types.json b/packages/abi/tsconfig.types.json
new file mode 100644
index 00000000..4ed71bfc
--- /dev/null
+++ b/packages/abi/tsconfig.types.json
@@ -0,0 +1,20 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "declarationDir": "./lib/types",
+ "declaration": true,
+ "declarationMap": true,
+ "emitDeclarationOnly": true,
+ "strictNullChecks": false,
+ "target": "es2022",
+ "lib": [
+ "es2020",
+ "es5"
+ ],
+ "noUnusedParameters": false,
+ // "moduleResolution": "node16",
+ "importHelpers": true,
+ "noEmitOnError": true
+ },
+ "include": ["src/**/*", "index.d.ts"]
+}
\ No newline at end of file
diff --git a/packages/web3-core/CHANGELOG.md b/packages/web3-core/CHANGELOG.md
index b1837d57..dc93264a 100644
--- a/packages/web3-core/CHANGELOG.md
+++ b/packages/web3-core/CHANGELOG.md
@@ -34,149 +34,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
-->
-
-## [4.0.1-alpha.1]
-
-### Added
-
-- If the response error was `execution reverted`, raise `ContractExecutionError` and pass the response error to it in order to be set as `innerError` (this innerError will be decoded at web3-eth-contract if its ABI was provided according to EIP-838). (#5434)
-- `registerPlugin` method to `Web3Context` (#5393)
-- `Web3PluginBase` exported abstract class (#5393)
-- `Web3EthPluginBase` exported abstract class (#5393)
-
-### Changed
-
-- Default value for `API` generic for `Web3ContextObject` from `any` to `unknown` (#5393)
-- Default value for `API` generic for `Web3ContextInitOptions` from `any` to `unknown` (#5393)
-- Added validation when `defaultHardfork` and `defaultCommon.hardfork` are different in web3config
-- Added validation when `defaultChain` and `defaultCommon.basechain` are different in web3config
-- Added a new configuration variable `enableExperimentalFeatures`. (#5481)
-
-## [4.0.1-alpha.2]
-
-### Fixed
-
-- Make the `request` method of `EIP1193Provider` class, compatible with EIP 1193 (#5591)
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Added
-
-- Added rpc exception codes following eip-1474 as an experimental feature (if `useRpcCallSpecification` at `enableExperimentalFeatures` is `true`) (#5525)
-- Added support of `safe` and `finalized` block tags (#5823)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added hybrid build (ESM and CJS) of library (#5904)
-- Added source files (#5956)
-
-### Changed
-
-- If a transaction object with a `data` property is passed to `txInputOptionsFormatter`, it will now be replaced with `input` (#5915)
-- The types `TransactionTypeParser` and `TransactionBuilder` are now utilizing the type `Transaction` for the transaction object. (#5993)
-- No need for polyfilling nodejs `net` and `fs` modules (#5978)
-- Removed IPC provider dependency, IPC path is no longer viable provider. If you wanna use IPC, please install `web3-providers-ipc` and instantiate provider yourself (#5978)
-
-### Removed
-
-- `getConfig` method from `Web3Config` class, `config` is now public and accessible using `Web3Config.config` (#5950)
-- Error param in the `messageListener` in subscription was removed (triggered by `.on('data')` or `.on('message')`) to properly support all providers. (#6082)
-
-## [4.0.1-rc.2]
-
-### Changed
-
-- Replaced Buffer for Uint8Array (#6004)
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Added
-
-- Web3Subscription constructor accept a Subscription Manager (as an alternative to accepting Request Manager that is now marked marked as deprecated) (#6210)
-
-### Changed
-
-- Web3Subscription constructor overloading that accept a Request Manager is marked as deprecated (#6210)
-
-### Fixed
-
-- Fixed Batch requests erroring out on one request (#6164)
-- Fixed the issue: Subscribing to multiple blockchain events causes every listener to be fired for every registered event (#6210)
-- Fixed the issue: Unsubscribe at a Web3Subscription class will still have the id of the subscription at the Web3SubscriptionManager (#6210)
-- Fixed the issue: A call to the provider is made for every subscription object (#6210)
-
-## [4.0.3]
-
-### Added
-
-- Expose `subscriptionManager` as a `protected get` at `Web3Subscription` to be able to use it inside custom subscriptions, if needed. (#6285)
-
-### Changed
-
-- Dependencies updated
-
-## [4.1.0]
-
-### Changed
-
-- No need to pass `CommonSubscriptionEvents &` at every child class of `Web3Subscription` (#6262)
-- Implementation of `_processSubscriptionResult` and `_processSubscriptionError` has been written in the base class `Web3Subscription` and maid `public`. (#6262)
-- A new optional protected method `formatSubscriptionResult` could be used to customize data formatting instead of re-implementing `_processSubscriptionResult`. (#6262)
-- No more needed to pass `CommonSubscriptionEvents & ` for the first generic parameter of `Web3Subscription` when inheriting from it. (#6262)
-
-### Fixed
-
-- Fixed the issue: "Version 4.x does not fire connected event for subscriptions. #6252". (#6262)
-
-### Added
-
-- Added minimum support of web3.extend function
-
-## [4.1.1]
-
-### Fixed
-
-- Fixed rpc errors not being sent as an inner error when using the `send` method on request manager (#6300).
-
-### Added
-
-- To fix issue #6190, added the functionality to introduce different timeout value for Web3. (#6336)
-
-## [4.2.0]
-
-### Added
-
-- Added to `Web3Config` property `contractDataInputFill` allowing users to have the choice using property `data`, `input` or `both` for contract methods to be sent to the RPC provider when creating contracts. (#6377) (#6400)
-
-## [Unreleased]
\ No newline at end of file
diff --git a/packages/web3-core/package.json b/packages/web3-core/package.json
index 07b30db2..bd275718 100644
--- a/packages/web3-core/package.json
+++ b/packages/web3-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@theqrl/web3-core",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
@@ -45,19 +45,19 @@
"test:integration": "jest --config=./test/integration/jest.config.js --passWithNoTests"
},
"dependencies": {
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-providers-http": "^0.2.1",
- "@theqrl/web3-providers-ws": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1",
- "@theqrl/web3-validator": "^0.2.1",
- "@theqrl/web3-zond-iban": "^0.2.1"
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-providers-http": "^0.3.0",
+ "@theqrl/web3-providers-ws": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-utils": "^0.3.0",
+ "@theqrl/web3-validator": "^0.3.0",
+ "@theqrl/web3-zond-iban": "^0.3.0"
},
"optionalDependencies": {
- "@theqrl/web3-providers-ipc": "^0.2.1"
+ "@theqrl/web3-providers-ipc": "^0.3.0"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@types/jest-when": "^3.5.2",
"@typescript-eslint/eslint-plugin": "^5.30.7",
diff --git a/packages/web3-core/src/formatters.ts b/packages/web3-core/src/formatters.ts
deleted file mode 100644
index 488c8552..00000000
--- a/packages/web3-core/src/formatters.ts
+++ /dev/null
@@ -1,551 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-
-import { FormatterError } from '@theqrl/web3-errors';
-import { Iban } from '@theqrl/web3-zond-iban';
-import {
- BlockTags,
- Filter,
- Numbers,
- Topic,
- BlockInput,
- BlockOutput,
- LogsInput,
- LogsOutput,
- Mutable,
- PostInput,
- PostOutput,
- Proof,
- ReceiptInput,
- ReceiptOutput,
- SyncInput,
- SyncOutput,
- TransactionInput,
- TransactionOutput,
-} from '@theqrl/web3-types';
-import {
- fromUtf8,
- hexToNumber,
- hexToNumberString,
- isAddress,
- isHexStrict,
- mergeDeep,
- numberToHex,
- sha3Raw,
- toChecksumAddress,
- toNumber,
- toUtf8,
- utf8ToHex,
-} from '@theqrl/web3-utils';
-import { isBlockTag, isHex, isNullish } from '@theqrl/web3-validator';
-
-/* eslint-disable deprecation/deprecation */
-/**
- * @deprecated Use format function from web3-utils package instead
- * Will format the given storage key array values to hex strings.
- */
-export const inputStorageKeysFormatter = (keys: Array) => keys.map(num => numberToHex(num));
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Will format the given proof response from the node.
- */
-export const outputProofFormatter = (proof: Proof): Proof => ({
- address: toChecksumAddress(proof.address),
- nonce: hexToNumberString(proof.nonce),
- balance: hexToNumberString(proof.balance),
-});
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Should the format output to a big number
- */
-export const outputBigIntegerFormatter = (number: Numbers) => toNumber(number);
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Returns the given block number as hex string or the predefined block number 'latest', 'pending', 'earliest', 'genesis'
- */
-export const inputBlockNumberFormatter = (blockNumber: Numbers | undefined) => {
- if (isNullish(blockNumber)) {
- return undefined;
- }
-
- if (typeof blockNumber === 'string' && isBlockTag(blockNumber)) {
- return blockNumber;
- }
-
- if (blockNumber === 'genesis') {
- return '0x0';
- }
-
- if (typeof blockNumber === 'string' && isHexStrict(blockNumber)) {
- return blockNumber.toLowerCase();
- }
-
- return numberToHex(blockNumber);
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Returns the given block number as hex string or does return the defaultBlock property of the current module
- */
-export const inputDefaultBlockNumberFormatter = (
- blockNumber: Numbers | undefined,
- defaultBlock: Numbers,
-) => {
- if (!blockNumber) {
- return inputBlockNumberFormatter(defaultBlock);
- }
-
- return inputBlockNumberFormatter(blockNumber);
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * @param address
- */
-export const inputAddressFormatter = (address: string): string | never => {
- if (Iban.isValid(address) && Iban.isDirect(address)) {
- const iban = new Iban(address);
-
- return iban.toAddress().toLowerCase();
- }
-
- if (isAddress(address)) {
- return `0x${address.toLowerCase().replace('0x', '')}`;
- }
-
- throw new FormatterError(
- `Provided address ${address} is invalid, the capitalization checksum test failed, or it's an indirect IBAN address which can't be converted.`,
- );
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Formats the input of a transaction and converts all values to HEX
- */
-export const txInputOptionsFormatter = (options: TransactionInput): Mutable => {
- const modifiedOptions = { ...options } as unknown as Mutable;
-
- if (options.to) {
- // it might be contract creation
- modifiedOptions.to = inputAddressFormatter(options.to);
- }
-
- if (options.data && options.input) {
- throw new FormatterError(
- 'You can\'t have "data" and "input" as properties of transactions at the same time, please use either "data" or "input" instead.',
- );
- }
-
- if (!options.input && options.data) {
- modifiedOptions.input = options.data;
- delete modifiedOptions.data;
- }
-
- if (options.input && !options.input.startsWith('0x')) {
- modifiedOptions.input = `0x${options.input}`;
- }
-
- if (modifiedOptions.input && !isHexStrict(modifiedOptions.input)) {
- throw new FormatterError('The input field must be HEX encoded data.');
- }
-
- // allow both
- if (options.gas || options.gasLimit) {
- modifiedOptions.gas = toNumber(options.gas ?? options.gasLimit);
- }
-
- if (options.maxPriorityFeePerGas || options.maxFeePerGas) {
- delete modifiedOptions.gasPrice;
- }
-
- ['gasPrice', 'gas', 'value', 'maxPriorityFeePerGas', 'maxFeePerGas', 'nonce', 'chainId']
- .filter(key => !isNullish(modifiedOptions[key]))
- .forEach(key => {
- modifiedOptions[key] = numberToHex(modifiedOptions[key] as Numbers);
- });
-
- return modifiedOptions as TransactionOutput;
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Formats the input of a transaction and converts all values to HEX
- */
-export const inputCallFormatter = (options: TransactionInput, defaultAccount?: string) => {
- const opts = txInputOptionsFormatter(options);
-
- const from = opts.from ?? defaultAccount;
-
- if (from) {
- opts.from = inputAddressFormatter(from);
- }
-
- return opts;
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Formats the input of a transaction and converts all values to HEX
- */
-export const inputTransactionFormatter = (options: TransactionInput, defaultAccount?: string) => {
- const opts = txInputOptionsFormatter(options);
-
- // check from, only if not number, or object
- if (!(typeof opts.from === 'number') && !(!!opts.from && typeof opts.from === 'object')) {
- opts.from = opts.from ?? defaultAccount;
-
- if (!options.from && !(typeof options.from === 'number')) {
- throw new FormatterError('The send transactions "from" field must be defined!');
- }
-
- opts.from = inputAddressFormatter(options.from);
- }
-
- return opts;
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Hex encodes the data passed to zond_sign and personal_sign
- */
-export const inputSignFormatter = (data: string) => (isHexStrict(data) ? data : utf8ToHex(data));
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Formats the output of a transaction to its proper values
- * @function outputTransactionFormatter
- */
-export const outputTransactionFormatter = (tx: TransactionInput): TransactionOutput => {
- const modifiedTx = { ...tx } as unknown as Mutable;
-
- if (tx.blockNumber) {
- modifiedTx.blockNumber = hexToNumber(tx.blockNumber);
- }
-
- if (tx.transactionIndex) {
- modifiedTx.transactionIndex = hexToNumber(tx.transactionIndex);
- }
-
- modifiedTx.nonce = hexToNumber(tx.nonce);
- modifiedTx.gas = hexToNumber(tx.gas);
-
- if (tx.gasPrice) {
- modifiedTx.gasPrice = outputBigIntegerFormatter(tx.gasPrice);
- }
-
- if (tx.maxFeePerGas) {
- modifiedTx.maxFeePerGas = outputBigIntegerFormatter(tx.maxFeePerGas);
- }
-
- if (tx.maxPriorityFeePerGas) {
- modifiedTx.maxPriorityFeePerGas = outputBigIntegerFormatter(tx.maxPriorityFeePerGas);
- }
-
- if (tx.type) {
- modifiedTx.type = hexToNumber(tx.type);
- }
-
- modifiedTx.value = outputBigIntegerFormatter(tx.value);
-
- if (tx.to && isAddress(tx.to)) {
- // tx.to could be `0x0` or `null` while contract creation
- modifiedTx.to = toChecksumAddress(tx.to);
- } else {
- modifiedTx.to = undefined; // set to `null` if invalid address
- }
-
- if (tx.from) {
- modifiedTx.from = toChecksumAddress(tx.from);
- }
-
- return modifiedTx;
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * @param topic
- */
-// To align with specification we use the type "null" here
-// eslint-disable-next-line @typescript-eslint/ban-types
-export const inputTopicFormatter = (topic: Topic): Topic | null => {
- // Using "null" value intentionally for validation
- // eslint-disable-next-line no-null/no-null
- if (isNullish(topic)) return null;
-
- const value = String(topic);
-
- return isHex(value) ? value : fromUtf8(value);
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * @param filter
- */
-export const inputLogFormatter = (filter: Filter) => {
- const val: Mutable = isNullish(filter)
- ? {}
- : mergeDeep({}, filter as Record);
-
- // If options !== undefined, don't blow out existing data
- if (isNullish(val.fromBlock)) {
- val.fromBlock = BlockTags.LATEST;
- }
-
- val.fromBlock = inputBlockNumberFormatter(val.fromBlock);
-
- if (!isNullish(val.toBlock)) {
- val.toBlock = inputBlockNumberFormatter(val.toBlock);
- }
-
- // make sure topics, get converted to hex
- val.topics = val.topics ?? [];
- val.topics = val.topics.map(topic =>
- Array.isArray(topic)
- ? (topic.map(inputTopicFormatter) as Topic[])
- : inputTopicFormatter(topic as Topic),
- );
-
- if (val.address) {
- val.address = Array.isArray(val.address)
- ? val.address.map(addr => inputAddressFormatter(addr))
- : inputAddressFormatter(val.address);
- }
-
- return val as Filter;
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Formats the output of a log
- * @function outputLogFormatter
- */
-export const outputLogFormatter = (log: Partial): LogsOutput => {
- const modifiedLog = { ...log } as unknown as Mutable;
-
- const logIndex =
- typeof log.logIndex === 'string'
- ? log.logIndex
- : numberToHex(log.logIndex as unknown as number);
-
- // generate a custom log id
- if (typeof log.blockHash === 'string' && typeof log.transactionHash === 'string') {
- const shaId = sha3Raw(
- `${log.blockHash.replace('0x', '')}${log.transactionHash.replace(
- '0x',
- '',
- )}${logIndex.replace('0x', '')}`,
- );
- modifiedLog.id = `log_${shaId.replace('0x', '').slice(0, 8)}`;
- } else if (!log.id) {
- modifiedLog.id = undefined;
- }
-
- if (log.blockNumber && isHexStrict(log.blockNumber)) {
- modifiedLog.blockNumber = hexToNumber(log.blockNumber);
- }
- if (log.transactionIndex && isHexStrict(log.transactionIndex)) {
- modifiedLog.transactionIndex = hexToNumber(log.transactionIndex);
- }
-
- if (log.logIndex && isHexStrict(log.logIndex)) {
- modifiedLog.logIndex = hexToNumber(log.logIndex);
- }
-
- if (log.address) {
- modifiedLog.address = toChecksumAddress(log.address);
- }
-
- return modifiedLog;
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Formats the output of a transaction receipt to its proper values
- */
-export const outputTransactionReceiptFormatter = (receipt: ReceiptInput): ReceiptOutput => {
- if (typeof receipt !== 'object') {
- throw new FormatterError(`Received receipt is invalid: ${String(receipt)}`);
- }
- const modifiedReceipt = { ...receipt } as unknown as Mutable;
-
- if (receipt.blockNumber) {
- modifiedReceipt.blockNumber = hexToNumber(receipt.blockNumber);
- }
-
- if (receipt.transactionIndex) {
- modifiedReceipt.transactionIndex = hexToNumber(receipt.transactionIndex);
- }
-
- modifiedReceipt.cumulativeGasUsed = hexToNumber(receipt.cumulativeGasUsed);
- modifiedReceipt.gasUsed = hexToNumber(receipt.gasUsed);
-
- if (receipt.logs && Array.isArray(receipt.logs)) {
- modifiedReceipt.logs = receipt.logs.map(outputLogFormatter);
- }
-
- if (receipt.effectiveGasPrice) {
- modifiedReceipt.effectiveGasPrice = hexToNumber(receipt.effectiveGasPrice);
- }
-
- if (receipt.contractAddress) {
- modifiedReceipt.contractAddress = toChecksumAddress(receipt.contractAddress);
- }
-
- if (receipt.status) {
- modifiedReceipt.status = Boolean(parseInt(receipt.status, 10));
- }
-
- return modifiedReceipt;
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Formats the output of a block to its proper values
- * @function outputBlockFormatter
- */
-export const outputBlockFormatter = (block: BlockInput): BlockOutput => {
- const modifiedBlock = { ...block } as unknown as Mutable;
-
- // transform to number
- modifiedBlock.gasLimit = hexToNumber(block.gasLimit);
- modifiedBlock.gasUsed = hexToNumber(block.gasUsed);
- modifiedBlock.size = hexToNumber(block.size);
- modifiedBlock.timestamp = hexToNumber(block.timestamp);
-
- if (block.number) {
- modifiedBlock.number = hexToNumber(block.number);
- }
-
- if (block.difficulty) {
- modifiedBlock.difficulty = outputBigIntegerFormatter(block.difficulty);
- }
-
- if (block.totalDifficulty) {
- modifiedBlock.totalDifficulty = outputBigIntegerFormatter(block.totalDifficulty);
- }
-
- if (block.transactions && Array.isArray(block.transactions)) {
- modifiedBlock.transactions = block.transactions.map(outputTransactionFormatter);
- }
-
- if (block.miner) {
- modifiedBlock.miner = toChecksumAddress(block.miner);
- }
-
- if (block.baseFeePerGas) {
- modifiedBlock.baseFeePerGas = hexToNumber(block.baseFeePerGas);
- }
-
- return modifiedBlock;
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Formats the input of a whisper post and converts all values to HEX
- */
-export const inputPostFormatter = (post: PostOutput): PostInput => {
- const modifiedPost = { ...post } as unknown as Mutable;
-
- if (post.ttl) {
- modifiedPost.ttl = numberToHex(post.ttl);
- }
-
- if (post.workToProve) {
- modifiedPost.workToProve = numberToHex(post.workToProve);
- }
-
- if (post.priority) {
- modifiedPost.priority = numberToHex(post.priority);
- }
-
- // fallback
- if (post.topics && !Array.isArray(post.topics)) {
- modifiedPost.topics = post.topics ? [post.topics] : [];
- }
-
- // format the following options
- modifiedPost.topics = modifiedPost.topics?.map(topic =>
- topic.startsWith('0x') ? topic : fromUtf8(topic),
- );
-
- return modifiedPost;
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- * Formats the output of a received post message
- * @function outputPostFormatter
- */
-export const outputPostFormatter = (post: PostInput): PostOutput => {
- const modifiedPost = { ...post } as unknown as Mutable;
-
- if (post.expiry) {
- modifiedPost.expiry = hexToNumber(post.expiry);
- }
-
- if (post.sent) {
- modifiedPost.sent = hexToNumber(post.sent);
- }
-
- if (post.ttl) {
- modifiedPost.ttl = hexToNumber(post.ttl);
- }
-
- if (post.workProved) {
- modifiedPost.workProved = hexToNumber(post.workProved);
- }
-
- // post.payloadRaw = post.payload;
- // post.payload = utils.hexToAscii(post.payload);
-
- // if (utils.isJson(post.payload)) {
- // post.payload = JSON.parse(post.payload);
- // }
-
- // format the following options
- if (!post.topics) {
- modifiedPost.topics = [];
- }
-
- modifiedPost.topics = modifiedPost.topics?.map(toUtf8);
-
- return modifiedPost;
-};
-
-/**
- * @deprecated Use format function from web3-utils package instead
- */
-export const outputSyncingFormatter = (result: SyncInput): SyncOutput => {
- const modifiedResult = { ...result } as unknown as Mutable;
-
- modifiedResult.startingBlock = hexToNumber(result.startingBlock);
- modifiedResult.currentBlock = hexToNumber(result.currentBlock);
- modifiedResult.highestBlock = hexToNumber(result.highestBlock);
-
- if (result.knownStates) {
- modifiedResult.knownStates = hexToNumber(result.knownStates);
- }
-
- if (result.pulledStates) {
- modifiedResult.pulledStates = hexToNumber(result.pulledStates);
- }
-
- return modifiedResult;
-};
diff --git a/packages/web3-core/src/index.ts b/packages/web3-core/src/index.ts
index 88eb6c63..c89d1ea4 100644
--- a/packages/web3-core/src/index.ts
+++ b/packages/web3-core/src/index.ts
@@ -23,9 +23,5 @@ export * from './web3_context.js';
export * from './web3_batch_request.js';
export * from './utils.js';
export * from './types.js';
-export * from './formatters.js';
export * from './web3_promi_event.js';
export * from './web3_event_emitter.js';
-
-// For backward usability export as namespace
-export * as formatters from './formatters.js';
diff --git a/packages/web3-core/src/utils.ts b/packages/web3-core/src/utils.ts
index f07505a4..1d4922fa 100644
--- a/packages/web3-core/src/utils.ts
+++ b/packages/web3-core/src/utils.ts
@@ -53,14 +53,13 @@ export const isLegacySendAsyncProvider = (
export const isSupportedProvider = (
provider: SupportedProviders,
-): provider is SupportedProviders =>
+): provider is SupportedProviders =>
provider &&
(isWeb3Provider(provider) ||
isEIP1193Provider(provider) ||
isLegacyRequestProvider(provider) ||
isLegacySendAsyncProvider(provider) ||
isLegacySendProvider(provider));
-
export const isSupportSubscriptions = (
provider: SupportedProviders,
): boolean => {
diff --git a/packages/web3-core/src/web3_config.ts b/packages/web3-core/src/web3_config.ts
index 8050bd6f..c44628d3 100644
--- a/packages/web3-core/src/web3_config.ts
+++ b/packages/web3-core/src/web3_config.ts
@@ -82,10 +82,10 @@ export abstract class Web3Config
contractDataInputFill: 'input',
defaultNetworkId: undefined,
defaultChain: 'mainnet',
- defaultHardfork: 'london',
+ defaultHardfork: 'shanghai',
// TODO - Check if there is a default Common
defaultCommon: undefined,
- defaultTransactionType: '0x0',
+ defaultTransactionType: '0x2',
defaultMaxPriorityFeePerGas: toHex(2500000000),
enableExperimentalFeatures: {
useSubscriptionWhenCheckingBlockTimeout: false,
@@ -193,7 +193,7 @@ export abstract class Web3Config
}
/**
- * The time used to wait for Ethereum Node to return the sent transaction result.
+ * The time used to wait for Zond Node to return the sent transaction result.
* Note: If the RPC call stuck at the Node and therefor timed-out, the transaction may still be pending or even mined by the Network. We recommend checking the pending transactions in such a case.
* Default is `750` seconds (12.5 minutes).
*/
@@ -373,22 +373,9 @@ export abstract class Web3Config
}
/**
- * Will return the default hardfork. Default is `london`
+ * Will return the default hardfork. Default is `shanghai`
* The default hardfork property can be one of the following:
- * - `chainstart`
- * - `homestead`
- * - `dao`
- * - `tangerineWhistle`
- * - `spuriousDragon`
- * - `byzantium`
- * - `constantinople`
- * - `petersburg`
- * - `istanbul`
- * - `berlin`
- * - `london`
- * - 'arrowGlacier',
- * - 'tangerineWhistle',
- * - 'muirGlacier'
+ * - 'shanghai'
*
*/
public get defaultHardfork() {
@@ -419,8 +406,8 @@ export abstract class Web3Config
* - `name` - `string`: (optional) The name of the chain
* - `networkId` - `number`: Network ID of the custom chain
* - `chainId` - `number`: Chain ID of the custom chain
- * - `baseChain` - `string`: (optional) mainnet, goerli, kovan, rinkeby, or ropsten
- * - `hardfork` - `string`: (optional) chainstart, homestead, dao, tangerineWhistle, spuriousDragon, byzantium, constantinople, petersburg, istanbul, berlin, or london
+ * - `baseChain` - `string`: (optional) mainnet
+ * - `hardfork` - `string`: (optional) shanghai
* Default is `undefined`.
*
*/
diff --git a/packages/web3-core/src/web3_request_manager.ts b/packages/web3-core/src/web3_request_manager.ts
index a5a2e79e..7850b836 100644
--- a/packages/web3-core/src/web3_request_manager.ts
+++ b/packages/web3-core/src/web3_request_manager.ts
@@ -225,10 +225,11 @@ export class Web3RequestManager<
);
}
+ // NOTE(rgeraldes24): there are unit/integration tests that depend on the legacy providers
// TODO: This could be deprecated and removed.
if (isLegacyRequestProvider(provider)) {
return new Promise>((resolve, reject) => {
- const rejectWithError = (err: unknown) =>
+ const rejectWithError = (err: unknown) => {
reject(
this._processJsonRpcResponse(
payload,
@@ -239,6 +240,8 @@ export class Web3RequestManager<
},
),
);
+ };
+
const resolveWithResponse = (response: JsonRpcResponse) =>
resolve(
this._processJsonRpcResponse(payload, response, {
@@ -268,7 +271,20 @@ export class Web3RequestManager<
const responsePromise = result as unknown as Promise<
JsonRpcResponse
>;
- responsePromise.then(resolveWithResponse).catch(rejectWithError);
+ responsePromise.then(resolveWithResponse).catch(error => {
+ try {
+ // Attempt to process the error response
+ const processedError = this._processJsonRpcResponse(
+ payload,
+ error as JsonRpcResponse,
+ { legacy: true, error: true },
+ );
+ reject(processedError);
+ } catch (processingError) {
+ // Catch any errors that occur during the error processing
+ reject(processingError);
+ }
+ });
}
});
}
@@ -292,7 +308,7 @@ export class Web3RequestManager<
if (isNullish(response)) {
throw new ResponseError(
- '' as never,
+ {} as never,
'Got a "nullish" response from provider.',
);
}
@@ -322,7 +338,7 @@ export class Web3RequestManager<
);
}
- throw new ProviderError('Provider does not have a request or send method to use.');
+ throw new ProviderError('Provider does not have a request method to use.');
}
// eslint-disable-next-line class-methods-use-this
diff --git a/packages/web3-core/src/web3_subscription_manager.ts b/packages/web3-core/src/web3_subscription_manager.ts
index edc44fe7..bf943452 100644
--- a/packages/web3-core/src/web3_subscription_manager.ts
+++ b/packages/web3-core/src/web3_subscription_manager.ts
@@ -67,18 +67,9 @@ export class Web3SubscriptionManager<
requestManager: Web3RequestManager,
registeredSubscriptions: RegisteredSubs,
);
- /**
- * @deprecated This constructor overloading should not be used
- */
- public constructor(
- requestManager: Web3RequestManager,
- registeredSubscriptions: RegisteredSubs,
- tolerateUnlinkedSubscription: boolean,
- );
public constructor(
public readonly requestManager: Web3RequestManager,
public readonly registeredSubscriptions: RegisteredSubs,
- private readonly tolerateUnlinkedSubscription: boolean = false,
) {
this.requestManager.on(Web3RequestManagerEvent.BEFORE_PROVIDER_CHANGE, async () => {
await this.unsubscribe();
@@ -221,7 +212,7 @@ export class Web3SubscriptionManager<
);
}
- if (!this._subscriptions.has(id) && !this.tolerateUnlinkedSubscription) {
+ if (!this._subscriptions.has(id)) {
throw new SubscriptionError(`Subscription with id "${id.toString()}" does not exists`);
}
diff --git a/packages/web3-core/src/web3_subscriptions.ts b/packages/web3-core/src/web3_subscriptions.ts
index b4d4918a..f8b9a1cb 100644
--- a/packages/web3-core/src/web3_subscriptions.ts
+++ b/packages/web3-core/src/web3_subscriptions.ts
@@ -63,13 +63,6 @@ export abstract class Web3Subscription<
args: ArgsType,
options: { subscriptionManager: Web3SubscriptionManager; returnFormat?: DataFormat },
);
- /**
- * @deprecated This constructor overloading should not be used
- */
- public constructor(
- args: ArgsType,
- options: { requestManager: Web3RequestManager; returnFormat?: DataFormat },
- );
public constructor(
public readonly args: ArgsType,
options: (
@@ -80,24 +73,13 @@ export abstract class Web3Subscription<
},
) {
super();
- const { requestManager } = options as { requestManager: Web3RequestManager };
const { subscriptionManager } = options as { subscriptionManager: Web3SubscriptionManager };
- if (requestManager && subscriptionManager) {
+ if (!subscriptionManager) {
throw new SubscriptionError(
- 'Only requestManager or subscriptionManager should be provided at Subscription constructor',
+ 'subscriptionManager should be provided at Subscription constructor',
);
}
- if (!requestManager && !subscriptionManager) {
- throw new SubscriptionError(
- 'Either requestManager or subscriptionManager should be provided at Subscription constructor',
- );
- }
- if (requestManager) {
- // eslint-disable-next-line deprecation/deprecation
- this._subscriptionManager = new Web3SubscriptionManager(requestManager, {}, true);
- } else {
- this._subscriptionManager = subscriptionManager;
- }
+ this._subscriptionManager = subscriptionManager;
this._returnFormat = options?.returnFormat ?? (DEFAULT_RETURN_FORMAT as DataFormat);
}
diff --git a/packages/web3-core/test/unit/__snapshots__/web3_context.test.ts.snap b/packages/web3-core/test/unit/__snapshots__/web3_context.test.ts.snap
index 77559482..0d438f6d 100644
--- a/packages/web3-core/test/unit/__snapshots__/web3_context.test.ts.snap
+++ b/packages/web3-core/test/unit/__snapshots__/web3_context.test.ts.snap
@@ -10,10 +10,10 @@ Object {
"defaultBlock": "latest",
"defaultChain": "mainnet",
"defaultCommon": undefined,
- "defaultHardfork": "london",
+ "defaultHardfork": "shanghai",
"defaultMaxPriorityFeePerGas": "0x9502f900",
"defaultNetworkId": undefined,
- "defaultTransactionType": "0x0",
+ "defaultTransactionType": "0x2",
"enableExperimentalFeatures": Object {
"useRpcCallSpecification": false,
"useSubscriptionWhenCheckingBlockTimeout": false,
@@ -74,7 +74,6 @@ Object {
},
"useRpcCallSpecification": undefined,
},
- "tolerateUnlinkedSubscription": false,
},
"wallet": undefined,
}
diff --git a/packages/web3-core/test/unit/formatters.test.ts b/packages/web3-core/test/unit/formatters.test.ts
deleted file mode 100644
index dc69ff82..00000000
--- a/packages/web3-core/test/unit/formatters.test.ts
+++ /dev/null
@@ -1,684 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-
-import * as utils from '@theqrl/web3-utils';
-import { BlockTags } from '@theqrl/web3-types';
-import { Iban } from '@theqrl/web3-zond-iban';
-import {
- inputAddressFormatter,
- inputBlockNumberFormatter,
- inputDefaultBlockNumberFormatter,
- inputPostFormatter,
- outputBigIntegerFormatter,
- outputBlockFormatter,
- outputLogFormatter,
- outputPostFormatter,
- outputProofFormatter,
- outputSyncingFormatter,
- outputTransactionReceiptFormatter,
- txInputOptionsFormatter,
-} from '../../src/formatters';
-
-import * as formatters from '../../src/formatters';
-
-/* eslint-disable deprecation/deprecation */
-jest.mock('@theqrl/web3-zond-iban');
-jest.mock('@theqrl/web3-utils');
-
-describe('formatters', () => {
- const toNumberResult = 12345;
- const numberToHexResult = '0xff';
- const hexToNumberResult = 123;
- const sha3Result = 'sha3Result';
- const toChecksumAddressResult = 'toChecksumAddress';
- const hexToNumberStringResult = '1234';
-
- beforeEach(() => {
- jest.spyOn(utils, 'toChecksumAddress').mockReturnValue(toChecksumAddressResult);
- jest.spyOn(utils, 'hexToNumberString').mockReturnValue(hexToNumberStringResult);
- jest.spyOn(utils, 'toNumber').mockReturnValue(toNumberResult);
- jest.spyOn(utils, 'numberToHex').mockReturnValue(numberToHexResult);
- jest.spyOn(utils, 'hexToNumber').mockReturnValue(hexToNumberResult);
- jest.spyOn(utils, 'isHexStrict').mockReturnValue(true);
- jest.spyOn(utils, 'isAddress').mockReturnValue(true);
- jest.spyOn(utils, 'sha3Raw').mockReturnValue(sha3Result);
- jest.spyOn(Iban, 'isValid').mockImplementation(() => false);
- jest.spyOn(Iban, 'isDirect').mockImplementation(() => false);
- });
-
- describe('outputProofFormatter', () => {
- it('should format the values correctly', () => {
- const result = outputProofFormatter({
- address: '0x09d7bD9E185fbC2d265D8DBe81e5e888E391688b',
- nonce: '0xFF',
- balance: '0xFA',
- });
-
- expect(utils.toChecksumAddress).toHaveBeenCalledWith(
- '0x09d7bD9E185fbC2d265D8DBe81e5e888E391688b',
- );
- expect(utils.hexToNumberString).toHaveBeenCalledWith('0xFF');
- expect(utils.hexToNumberString).toHaveBeenCalledWith('0xFA');
-
- expect(result).toEqual({
- address: toChecksumAddressResult,
- balance: hexToNumberStringResult,
- nonce: hexToNumberStringResult,
- });
- });
- });
-
- describe('outputBigIntegerFormatter', () => {
- it('should convert input to number', () => {
- const result = outputBigIntegerFormatter(BigInt(12));
-
- expect(utils.toNumber).toHaveBeenCalledWith(BigInt(12));
- expect(result).toEqual(toNumberResult);
- });
- });
-
- describe('inputBlockNumberFormatter', () => {
- it('should return undefined if block number not given', () => {
- expect(inputBlockNumberFormatter(undefined)).toBeUndefined();
- });
-
- it.each([BlockTags.EARLIEST, BlockTags.LATEST, BlockTags.PENDING])(
- 'should return "%s" values for "%s" block numbers',
- blockNumber => {
- expect(inputBlockNumberFormatter(blockNumber)).toEqual(blockNumber);
- },
- );
-
- it('should return valid genesis block number', () => {
- expect(inputBlockNumberFormatter('genesis')).toBe('0x0');
- });
-
- it('should return lower case hex value for a valid hex string', () => {
- jest.spyOn(utils, 'isHexStrict').mockReturnValue(true);
- const result = inputBlockNumberFormatter('0xAF0AF');
-
- expect(utils.isHexStrict).toHaveBeenCalledWith('0xAF0AF');
- expect(utils.numberToHex).not.toHaveBeenCalled();
- expect(result).toBe('0xaf0af');
- });
-
- it('should try parsing number if given value is not valid hex string', () => {
- jest.spyOn(utils, 'isHexStrict').mockReturnValue(false);
- const result = inputBlockNumberFormatter('0xAF0AF');
-
- expect(utils.isHexStrict).toHaveBeenCalledWith('0xAF0AF');
- expect(utils.numberToHex).toHaveBeenCalledWith('0xAF0AF');
- expect(result).toEqual(numberToHexResult);
- });
- });
-
- describe('inputDefaultBlockNumberFormatter', () => {
- it('should return default block if block number not provided', () => {
- expect(inputDefaultBlockNumberFormatter(undefined, 255)).toBe('0xff');
- });
-
- it('should return block number if block number provided', () => {
- expect(inputDefaultBlockNumberFormatter(10, 255)).toEqual(numberToHexResult);
-
- expect(utils.numberToHex).toHaveBeenCalledWith(10);
- });
- });
-
- describe('inputAddressFormatter', () => {
- it('should return lowercase address if given value is iban', () => {
- const address = '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8';
- Iban.prototype.toAddress = jest.fn(() => address);
-
- jest.spyOn(Iban, 'isValid').mockImplementation(() => true);
- jest.spyOn(Iban, 'isDirect').mockImplementation(() => true);
-
- expect(inputAddressFormatter('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS')).toBe(address);
- expect(Iban.prototype.toAddress).toHaveBeenCalled();
- });
-
- it('should return lower case value if valid address', () => {
- jest.spyOn(utils, 'isAddress').mockReturnValue(true);
-
- expect(inputAddressFormatter('0xAcb')).toBe('0xacb');
- });
-
- it('should throw error if not a valid address or iban', () => {
- jest.spyOn(utils, 'isAddress').mockReturnValue(false);
-
- expect(() => inputAddressFormatter('0xAcb')).toThrow(
- 'Provided address 0xAcb is invalid',
- );
- });
- });
-
- describe('txInputOptionsFormatter', () => {
- let txInput: any;
-
- beforeEach(() => {
- jest.spyOn(utils, 'isAddress').mockReturnValue(true);
- txInput = {
- to: '0xabcd',
- };
- });
-
- it('should format "to" address if provided', () => {
- expect(txInputOptionsFormatter({ ...txInput, to: '0xABCD' })).toEqual(
- expect.objectContaining({ to: '0xabcd' }),
- );
- });
-
- it('should throw error if "data" and "input" both are provided', () => {
- expect(() =>
- txInputOptionsFormatter({ ...txInput, input: '0xff0011', data: '0xff' }),
- ).toThrow(
- 'You can\'t have "data" and "input" as properties of transactions at the same time, please use either "data" or "input" instead.',
- );
- });
-
- it('should replace "input" with "data" if "data" is given and "input" is not', () => {
- const result = txInputOptionsFormatter({ ...txInput, data: '0xff0011' });
-
- expect(result).toEqual(expect.objectContaining({ input: '0xff0011' }));
- expect(Object.keys(result)).not.toContain('data');
- });
-
- it('should prefix "input" with "0x" if not already', () => {
- expect(txInputOptionsFormatter({ ...txInput, input: 'ff0011' })).toEqual(
- expect.objectContaining({ input: '0xff0011' }),
- );
- });
-
- it('should throw error if "input" is not a valid hex string', () => {
- jest.spyOn(utils, 'isHexStrict').mockReturnValue(false);
-
- expect(() => txInputOptionsFormatter({ ...txInput, input: 'ff0011' })).toThrow(
- 'The input field must be HEX encoded data.',
- );
- expect(utils.isHexStrict).toHaveBeenCalledWith('0xff0011');
- });
- it('should set "gas" equal to "gas" if provided', () => {
- expect(txInputOptionsFormatter({ ...txInput, data: '0xff0011', gas: '123' })).toEqual(
- expect.objectContaining({ gas: numberToHexResult }),
- );
- expect(utils.toNumber).toHaveBeenCalledWith('123');
- });
-
- it('should set "gas" equal to "gasLimit" if "gas" not provided', () => {
- expect(
- txInputOptionsFormatter({ ...txInput, data: '0xff0011', gasLimit: '446' }),
- ).toEqual(expect.objectContaining({ gas: numberToHexResult }));
- expect(utils.toNumber).toHaveBeenCalledWith('446');
- });
-
- it('should remove "gasPrice" if "maxPriorityFeePerGas" or "maxFeePerGas" is given', () => {
- const result = txInputOptionsFormatter({
- ...txInput,
- input: '0xff0011',
- gasPrice: '123',
- maxPriorityFeePerGas: '456',
- });
- expect(Object.keys(result)).not.toContain('gasPrice');
-
- const result2 = txInputOptionsFormatter({
- ...txInput,
- input: '0xff0011',
- gasPrice: '123',
- maxFeePerGas: '456',
- });
- expect(Object.keys(result2)).not.toContain('gasPrice');
- });
-
- it.each(['gasPrice', 'gas', 'value', 'maxPriorityFeePerGas', 'maxFeePerGas', 'nonce'])(
- 'should convert "%s" number value to hex',
- attr => {
- jest.spyOn(utils, 'toNumber').mockReturnValue(BigInt(5678));
-
- expect(
- txInputOptionsFormatter({ ...txInput, data: '0xff0011', [attr]: BigInt(5678) }),
- ).toEqual(expect.objectContaining({ [attr]: numberToHexResult }));
-
- expect(utils.numberToHex).toHaveBeenCalledWith(BigInt(5678));
- },
- );
- });
-
- describe('outputLogFormatter', () => {
- it('should set log id from "blockHash", "transactionHash" and "logIndex"', () => {
- const result = outputLogFormatter({
- blockHash: 'blockHash',
- transactionHash: 'transactionHash',
- logIndex: 'logIndex',
- });
-
- expect(utils.sha3Raw).toHaveBeenCalledWith('blockHashtransactionHashlogIndex');
-
- expect(result.id).toBe(`log_${sha3Result.slice(0, 8)}`);
- });
-
- it('should convert "blockNumber" from hex to number', () => {
- const result = outputLogFormatter({
- blockHash: 'blockHash',
- transactionHash: 'transactionHash',
- logIndex: 'logIndex',
- blockNumber: '0xFF0011',
- });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('0xFF0011');
- expect(result.blockNumber).toEqual(hexToNumberResult);
- });
-
- it('should convert "transactionIndex" from hex to number', () => {
- const result = outputLogFormatter({
- blockHash: 'blockHash',
- transactionHash: 'transactionHash',
- logIndex: 'logIndex',
- transactionIndex: '0xFF0011',
- });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('0xFF0011');
- expect(result.transactionIndex).toEqual(hexToNumberResult);
- });
-
- it('should convert "logIndex" from hex to number', () => {
- const result = outputLogFormatter({
- blockHash: 'blockHash',
- transactionHash: 'transactionHash',
- logIndex: '0xFF0011',
- });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('0xFF0011');
- expect(result.logIndex).toEqual(hexToNumberResult);
- });
-
- it('should convert "address" to checksum address', () => {
- const result = outputLogFormatter({
- blockHash: 'blockHash',
- transactionHash: 'transactionHash',
- logIndex: '0xFF0011',
- address: 'address',
- });
-
- expect(utils.toChecksumAddress).toHaveBeenCalledWith('address');
- expect(result.address).toEqual(toChecksumAddressResult);
- });
- });
-
- describe('outputTransactionReceiptFormatter', () => {
- const validReceipt = { cumulativeGasUsed: '0x1234', gasUsed: '0x4567' };
-
- it('should convert "blockNumber" from hex to number', () => {
- const result = outputTransactionReceiptFormatter({
- ...validReceipt,
- blockNumber: '0x12',
- });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('0x12');
- expect(result).toEqual(expect.objectContaining({ blockNumber: hexToNumberResult }));
- });
-
- it('should convert "transactionIndex" from hex to number', () => {
- const result = outputTransactionReceiptFormatter({
- ...validReceipt,
- transactionIndex: '0x12',
- });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('0x12');
- expect(result).toEqual(
- expect.objectContaining({ transactionIndex: hexToNumberResult }),
- );
- });
-
- it('should convert "cumulativeGasUsed" from hex to number', () => {
- const result = outputTransactionReceiptFormatter({
- ...validReceipt,
- });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith(validReceipt.cumulativeGasUsed);
- expect(result).toEqual(
- expect.objectContaining({ cumulativeGasUsed: hexToNumberResult }),
- );
- });
-
- it('should convert "gasUsed" from hex to number', () => {
- const result = outputTransactionReceiptFormatter({
- ...validReceipt,
- });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith(validReceipt.gasUsed);
- expect(result).toEqual(expect.objectContaining({ gasUsed: hexToNumberResult }));
- });
-
- it('should format "logs" if available', () => {
- const logs = ['0x12' as any, '0x456' as any];
- jest.spyOn(formatters, 'outputLogFormatter').mockReturnValue(
- 'outputLogFormatterResult' as any,
- );
-
- const result = outputTransactionReceiptFormatter({
- ...validReceipt,
- logs,
- });
-
- expect(formatters.outputLogFormatter).toHaveBeenCalledTimes(logs.length);
-
- expect(formatters.outputLogFormatter).toHaveBeenCalledWith(logs[0], 0, logs);
-
- expect(formatters.outputLogFormatter).toHaveBeenCalledWith(logs[1], 1, logs);
- expect(result.logs).toEqual(['outputLogFormatterResult', 'outputLogFormatterResult']);
- });
-
- it('should convert "contractAddress" to checksum address', () => {
- const result = outputTransactionReceiptFormatter({
- ...validReceipt,
- contractAddress: '0x12',
- });
-
- expect(utils.toChecksumAddress).toHaveBeenCalledWith('0x12');
- expect(result).toEqual(
- expect.objectContaining({ contractAddress: toChecksumAddressResult }),
- );
- });
-
- it('should convert "status" to boolean value "true"', () => {
- const result = outputTransactionReceiptFormatter({
- ...validReceipt,
- status: '10',
- });
-
- expect(result.status).toBeTruthy();
- });
-
- it('should convert "status" to boolean value "false"', () => {
- const result = outputTransactionReceiptFormatter({
- ...validReceipt,
- status: '0',
- });
-
- expect(result.status).toBeFalsy();
- });
-
- it('should convert "effectiveGasPrice" from hex to number', () => {
- const effectiveGasPrice = '0x80d9594d23495b';
-
- const result = outputTransactionReceiptFormatter({
- ...validReceipt,
- effectiveGasPrice,
- });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith(effectiveGasPrice);
- expect(result).toEqual(
- expect.objectContaining({ effectiveGasPrice: hexToNumberResult }),
- );
- });
- });
-
- describe('outputBlockFormatter', () => {
- const validBlock = {
- gasLimit: 'gasLimit',
- gasUsed: 'gasUsed',
- size: 'size',
- timestamp: 'timestamp',
- };
-
- it('should convert "gasLimit" from hex to number', () => {
- const result = outputBlockFormatter({ ...validBlock } as any);
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('gasLimit');
- expect(result).toEqual(expect.objectContaining({ gasLimit: hexToNumberResult }));
- });
-
- it('should convert "gasUsed" from hex to number', () => {
- const result = outputBlockFormatter({ ...validBlock } as any);
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('gasUsed');
- expect(result).toEqual(expect.objectContaining({ gasUsed: hexToNumberResult }));
- });
-
- it('should convert "size" from hex to number', () => {
- const result = outputBlockFormatter({ ...validBlock } as any);
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('size');
- expect(result).toEqual(expect.objectContaining({ size: hexToNumberResult }));
- });
-
- it('should convert "timestamp" from hex to number', () => {
- const result = outputBlockFormatter({ ...validBlock } as any);
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('timestamp');
- expect(result).toEqual(expect.objectContaining({ timestamp: hexToNumberResult }));
- });
-
- it('should convert "number" from hex to number', () => {
- const result = outputBlockFormatter({ ...validBlock, number: 'number' } as any);
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('number');
- expect(result).toEqual(expect.objectContaining({ number: hexToNumberResult }));
- });
-
- it('should convert "difficulty" to bigint', () => {
- jest.spyOn(formatters, 'outputBigIntegerFormatter').mockReturnValue(
- 'outputBigIntegerFormatterResult' as any,
- );
- const result = outputBlockFormatter({ ...validBlock, difficulty: 'difficulty' } as any);
-
- expect(formatters.outputBigIntegerFormatter).toHaveBeenCalledWith('difficulty');
- expect(result).toEqual(
- expect.objectContaining({ difficulty: 'outputBigIntegerFormatterResult' }),
- );
- });
-
- it('should convert "totalDifficulty" to bigint', () => {
- jest.spyOn(formatters, 'outputBigIntegerFormatter').mockReturnValue(
- 'outputBigIntegerFormatterResult' as any,
- );
- const result = outputBlockFormatter({
- ...validBlock,
- totalDifficulty: 'totalDifficulty',
- } as any);
-
- expect(formatters.outputBigIntegerFormatter).toHaveBeenCalledWith('totalDifficulty');
- expect(result).toEqual(
- expect.objectContaining({ totalDifficulty: 'outputBigIntegerFormatterResult' }),
- );
- });
-
- it('should format "transactions" with correct formatter', () => {
- const transactions = ['trs1', 'trs2'];
- jest.spyOn(formatters, 'outputTransactionFormatter').mockReturnValue(
- 'outputTransactionFormatterResult' as any,
- );
-
- const result = outputBlockFormatter({ ...validBlock, transactions } as any);
-
- expect(formatters.outputTransactionFormatter).toHaveBeenCalledTimes(
- transactions.length,
- );
- expect(formatters.outputTransactionFormatter).toHaveBeenCalledWith(
- transactions[0],
-
- 0,
- transactions,
- );
- expect(formatters.outputTransactionFormatter).toHaveBeenCalledWith(
- transactions[1],
-
- 1,
- transactions,
- );
- expect(result).toEqual(
- expect.objectContaining({
- transactions: [
- 'outputTransactionFormatterResult',
- 'outputTransactionFormatterResult',
- ],
- }),
- );
- });
-
- it('should convert "miner" to checksum address', () => {
- const result = outputBlockFormatter({ ...validBlock, miner: 'miner' } as any);
-
- expect(utils.toChecksumAddress).toHaveBeenCalledWith('miner');
- expect(result).toEqual(expect.objectContaining({ miner: toChecksumAddressResult }));
- });
-
- it('should convert "baseFeePerGas" from hex to number', () => {
- const result = outputBlockFormatter({
- ...validBlock,
- baseFeePerGas: 'baseFeePerGas',
- } as any);
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('baseFeePerGas');
- expect(result).toEqual(expect.objectContaining({ baseFeePerGas: hexToNumberResult }));
- });
- });
-
- describe('inputPostFormatter', () => {
- it('should convert "ttl" from number to hex', () => {
- const result = inputPostFormatter({ ttl: 'ttl' } as any);
-
- expect(utils.numberToHex).toHaveBeenCalledWith('ttl');
- expect(result).toEqual(expect.objectContaining({ ttl: numberToHexResult }));
- });
-
- it('should convert "workToProve" from number to hex', () => {
- const result = inputPostFormatter({ workToProve: 'workToProve' } as any);
-
- expect(utils.numberToHex).toHaveBeenCalledWith('workToProve');
- expect(result).toEqual(expect.objectContaining({ workToProve: numberToHexResult }));
- });
-
- it('should convert "priority" from number to hex', () => {
- const result = inputPostFormatter({ priority: 'priority' } as any);
-
- expect(utils.numberToHex).toHaveBeenCalledWith('priority');
- expect(result).toEqual(expect.objectContaining({ priority: numberToHexResult }));
- });
-
- it('should convert "topics" to array if single value provided', () => {
- const result = inputPostFormatter({ topics: '0x123' } as any);
-
- expect(result).toEqual(expect.objectContaining({ topics: ['0x123'] }));
- });
-
- it('should convert "topics" to hex if not already', () => {
- jest.spyOn(utils, 'fromUtf8').mockReturnValue('fromUtf8Result');
- const result = inputPostFormatter({ topics: ['0x123', 'non-hex-value'] } as any);
-
- expect(utils.fromUtf8).toHaveBeenCalledTimes(1);
- expect(utils.fromUtf8).toHaveBeenCalledWith('non-hex-value');
- expect(result).toEqual(
- expect.objectContaining({ topics: ['0x123', 'fromUtf8Result'] }),
- );
- });
- });
-
- describe('outputPostFormatter', () => {
- it('should convert "expiry" from hex to number', () => {
- const result = outputPostFormatter({ expiry: 'expiry' } as any);
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('expiry');
- expect(result).toEqual(expect.objectContaining({ expiry: hexToNumberResult }));
- });
-
- it('should convert "sent" from hex to number', () => {
- const result = outputPostFormatter({ sent: 'sent' } as any);
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('sent');
- expect(result).toEqual(expect.objectContaining({ sent: hexToNumberResult }));
- });
-
- it('should convert "ttl" from hex to number', () => {
- const result = outputPostFormatter({ ttl: 'ttl' } as any);
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('ttl');
- expect(result).toEqual(expect.objectContaining({ ttl: hexToNumberResult }));
- });
-
- it('should convert "workProved" from hex to number', () => {
- const result = outputPostFormatter({ workProved: 'workProved' } as any);
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('workProved');
- expect(result).toEqual(expect.objectContaining({ workProved: hexToNumberResult }));
- });
-
- it('should set "topics" to empty array if not provided', () => {
- const result = outputPostFormatter({} as any);
-
- expect(result).toEqual(expect.objectContaining({ topics: [] }));
- });
-
- it('should convert "topics" from utf8 to hex', () => {
- const topics = ['0x123', 'non-hex-value'];
- jest.spyOn(utils, 'toUtf8').mockReturnValue('toUtf8Result');
-
- const result = outputPostFormatter({ topics } as any);
-
- expect(utils.toUtf8).toHaveBeenCalledTimes(topics.length);
-
- expect(utils.toUtf8).toHaveBeenCalledWith(topics[0], 0, topics);
-
- expect(utils.toUtf8).toHaveBeenCalledWith(topics[1], 1, topics);
- expect(result).toEqual(
- expect.objectContaining({ topics: ['toUtf8Result', 'toUtf8Result'] }),
- );
- });
- });
-
- describe('outputSyncingFormatter', () => {
- const validObject = {
- startingBlock: 'startingBlock',
- currentBlock: 'currentBlock',
- highestBlock: 'highestBlock',
- };
-
- it('should convert "startingBlock" from hex to number', () => {
- const result = outputSyncingFormatter({ ...validObject });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('startingBlock');
- expect(result).toEqual(expect.objectContaining({ startingBlock: hexToNumberResult }));
- });
-
- it('should convert "currentBlock" from hex to number', () => {
- const result = outputSyncingFormatter({ ...validObject });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('currentBlock');
- expect(result).toEqual(expect.objectContaining({ currentBlock: hexToNumberResult }));
- });
-
- it('should convert "highestBlock" from hex to number', () => {
- const result = outputSyncingFormatter({ ...validObject });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('highestBlock');
- expect(result).toEqual(expect.objectContaining({ highestBlock: hexToNumberResult }));
- });
-
- it('should convert "knownStates" from hex to number', () => {
- const result = outputSyncingFormatter({ ...validObject, knownStates: 'knownStates' });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('highestBlock');
- expect(result).toEqual(expect.objectContaining({ knownStates: hexToNumberResult }));
- });
-
- it('should convert "pulledStates" from hex to number', () => {
- const result = outputSyncingFormatter({ ...validObject, pulledStates: 'pulledStates' });
-
- expect(utils.hexToNumber).toHaveBeenCalledWith('highestBlock');
- expect(result).toEqual(expect.objectContaining({ pulledStates: hexToNumberResult }));
- });
- });
-});
diff --git a/packages/web3-core/test/unit/web3_config.test.ts b/packages/web3-core/test/unit/web3_config.test.ts
index 3c09d2a2..54b93400 100644
--- a/packages/web3-core/test/unit/web3_config.test.ts
+++ b/packages/web3-core/test/unit/web3_config.test.ts
@@ -27,7 +27,7 @@ const defaultConfig = {
defaultChain: 'mainnet',
defaultNetworkId: undefined,
defaultCommon: undefined,
- defaultHardfork: 'london',
+ defaultHardfork: 'shanghai',
enableExperimentalFeatures: {
useSubscriptionWhenCheckingBlockTimeout: false,
useRpcCallSpecification: false,
@@ -42,7 +42,7 @@ const defaultConfig = {
transactionReceiptPollingInterval: undefined,
transactionSendTimeout: 750 * 1000,
transactionConfirmationPollingInterval: undefined,
- defaultTransactionType: '0x0',
+ defaultTransactionType: '0x2',
defaultMaxPriorityFeePerGas: toHex(2500000000),
};
const setValue = {
diff --git a/packages/web3-core/test/unit/web3_context.test.ts b/packages/web3-core/test/unit/web3_context.test.ts
index 575f1ca6..812cb97d 100644
--- a/packages/web3-core/test/unit/web3_context.test.ts
+++ b/packages/web3-core/test/unit/web3_context.test.ts
@@ -136,7 +136,7 @@ describe('Web3Context', () => {
chainId: 1337,
},
baseChain: 'mainnet',
- hardfork: 'berlin',
+ hardfork: 'shanghai',
},
},
});
diff --git a/packages/web3-core/test/unit/web3_extend.test.ts b/packages/web3-core/test/unit/web3_extend.test.ts
index fdc96705..62384d50 100644
--- a/packages/web3-core/test/unit/web3_extend.test.ts
+++ b/packages/web3-core/test/unit/web3_extend.test.ts
@@ -45,11 +45,11 @@ describe('Web3Context extend tests', () => {
],
});
- await web3.L2Module.getL2Balance('0x5b43746580AAF00A69019fA59D9ed7d9c85dDd70', 'latest');
+ await web3.L2Module.getL2Balance('Z5b43746580AAF00A69019fA59D9ed7d9c85dDd70', 'latest');
expect(requestManagerSendSpy).toHaveBeenCalledWith({
method: 'zond_getBalance',
- params: ['0x5b43746580AAF00A69019fA59D9ed7d9c85dDd70', 'latest'],
+ params: ['Z5b43746580AAF00A69019fA59D9ed7d9c85dDd70', 'latest'],
});
});
@@ -68,11 +68,11 @@ describe('Web3Context extend tests', () => {
],
});
- await web3.getL0Balance('0x5b43746580AAF00A69019fA59D9ed7d9c85dDd70', 'latest');
+ await web3.getL0Balance('Z5b43746580AAF00A69019fA59D9ed7d9c85dDd70', 'latest');
expect(requestManagerSendSpy).toHaveBeenCalledWith({
method: 'zond_getBalance',
- params: ['0x5b43746580AAF00A69019fA59D9ed7d9c85dDd70', 'latest'],
+ params: ['Z5b43746580AAF00A69019fA59D9ed7d9c85dDd70', 'latest'],
});
});
});
diff --git a/packages/web3-core/test/unit/web3_request_manager.test.ts b/packages/web3-core/test/unit/web3_request_manager.test.ts
index ec67d5e8..444f4213 100644
--- a/packages/web3-core/test/unit/web3_request_manager.test.ts
+++ b/packages/web3-core/test/unit/web3_request_manager.test.ts
@@ -668,62 +668,6 @@ describe('Web3RequestManager', () => {
});
});
- describe('legacy-request-provider', () => {
- it('should pass request to provider and resolve if provider resolves it', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- request: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(undefined, successResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.send(request)).resolves.toEqual(successResponse.result);
- expect(myProvider.request).toHaveBeenCalledTimes(1);
- expect(myProvider.request).toHaveBeenCalledWith(payload, expect.any(Function));
- });
-
- it('should pass request to provider and reject if provider throws error', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- request: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(errorResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.send(request)).rejects.toThrow(errorResponse.error.message);
- expect(myProvider.request).toHaveBeenCalledTimes(1);
- expect(myProvider.request).toHaveBeenCalledWith(payload, expect.any(Function));
- });
-
- it('should pass request to provider and reject if provider returns error', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- request: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- // eslint-disable-next-line no-null/no-null
- cb(null, errorResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.send(request)).rejects.toThrow(
- new InvalidResponseError(errorResponse),
- );
- expect(myProvider.request).toHaveBeenCalledTimes(1);
- expect(myProvider.request).toHaveBeenCalledWith(payload, expect.any(Function));
- });
- });
-
describe('eip1193-provider', () => {
beforeEach(() => {
// isEIP1193Provider uses typeof to check if the provider is a EIP1193Provider
@@ -848,93 +792,6 @@ describe('Web3RequestManager', () => {
expect(myProvider.request).toHaveBeenCalledWith(payload);
});
});
-
- describe('legacy-send-provider', () => {
- it('should pass request to provider and resolve if provider resolves it', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- send: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(undefined, successResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.send(request)).resolves.toEqual(successResponse.result);
- expect(myProvider.send).toHaveBeenCalledTimes(1);
- expect(myProvider.send).toHaveBeenCalledWith(payload, expect.any(Function));
- });
-
- it('should pass request to provider and reject if provider throws error', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- send: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(errorResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.send(request)).rejects.toThrow(errorResponse.error.message);
- expect(myProvider.send).toHaveBeenCalledTimes(1);
- expect(myProvider.send).toHaveBeenCalledWith(payload, expect.any(Function));
- });
-
- it('should pass request to provider and reject if provider returns error', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- send: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(undefined, errorResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.send(request)).rejects.toThrow(
- new InvalidResponseError(errorResponse),
- );
- expect(myProvider.send).toHaveBeenCalledTimes(1);
- expect(myProvider.send).toHaveBeenCalledWith(payload, expect.any(Function));
- });
- });
-
- describe('legacy-send-async-provider', () => {
- it('should pass request to provider and resolve if provider resolves it', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- sendAsync: jest
- .fn()
- .mockImplementation(async () => Promise.resolve(successResponse)),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.send(request)).resolves.toEqual(successResponse.result);
- expect(myProvider.sendAsync).toHaveBeenCalledTimes(1);
- expect(myProvider.sendAsync).toHaveBeenCalledWith(payload);
- });
-
- it('should pass request to provider and reject if provider rejects it', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- sendAsync: jest
- .fn()
- .mockImplementation(async () => Promise.reject(new Error('my-error'))),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.send(request)).rejects.toThrow('my-error');
- expect(myProvider.sendAsync).toHaveBeenCalledTimes(1);
- expect(myProvider.sendAsync).toHaveBeenCalledWith(payload);
- });
- });
});
describe('sendBatch()', () => {
@@ -1036,59 +893,6 @@ describe('Web3RequestManager', () => {
});
});
- describe('legacy-request-provider', () => {
- it('should pass request to provider and resolve if provider resolves it', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- request: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(undefined, successResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.sendBatch(request)).resolves.toEqual(successResponse);
- expect(myProvider.request).toHaveBeenCalledTimes(1);
- expect(myProvider.request).toHaveBeenCalledWith(payload, expect.any(Function));
- });
-
- it('should pass request to provider and reject if provider throws error', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- request: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(errorResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.sendBatch(request)).rejects.toEqual(errorResponse);
- expect(myProvider.request).toHaveBeenCalledTimes(1);
- expect(myProvider.request).toHaveBeenCalledWith(payload, expect.any(Function));
- });
-
- it('should pass request to provider and reject if provider returns error', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- request: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(undefined, errorResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.sendBatch(request)).resolves.toEqual(errorResponse);
- expect(myProvider.request).toHaveBeenCalledTimes(1);
- expect(myProvider.request).toHaveBeenCalledWith(payload, expect.any(Function));
- });
- });
-
describe('eip1193-provider', () => {
beforeEach(() => {
// isEIP1193Provider is using `Symbol.toStringTag` which get change with the
@@ -1141,105 +945,5 @@ describe('Web3RequestManager', () => {
expect(myProvider.request).toHaveBeenCalledWith(payload);
});
});
-
- describe('legacy-send-provider', () => {
- it('should pass request to provider and resolve if provider resolves it', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- send: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(undefined, successResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.sendBatch(request)).resolves.toEqual(successResponse);
- expect(myProvider.send).toHaveBeenCalledTimes(1);
- expect(myProvider.send).toHaveBeenCalledWith(payload, expect.any(Function));
- });
-
- it('should pass request to provider and reject if provider throws error', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- send: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(errorResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.sendBatch(request)).rejects.toEqual(errorResponse);
- expect(myProvider.send).toHaveBeenCalledTimes(1);
- expect(myProvider.send).toHaveBeenCalledWith(payload, expect.any(Function));
- });
-
- it('should pass request to provider and return response if provider returns error', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- send: jest
- .fn()
- .mockImplementation((_, cb: (error?: any, data?: any) => void) => {
- cb(undefined, errorResponse);
- }),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.sendBatch(request)).resolves.toEqual(errorResponse);
- expect(myProvider.send).toHaveBeenCalledTimes(1);
- expect(myProvider.send).toHaveBeenCalledWith(payload, expect.any(Function));
- });
- });
-
- describe('legacy-send-async-provider', () => {
- it('should pass request to provider and resolve if provider resolves it', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- sendAsync: jest
- .fn()
- .mockImplementation(async () => Promise.resolve(successResponse)),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.sendBatch(request)).resolves.toEqual(successResponse);
- expect(myProvider.sendAsync).toHaveBeenCalledTimes(1);
- expect(myProvider.sendAsync).toHaveBeenCalledWith(payload);
- });
-
- it('should pass request to provider and reject if provider rejects it', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- sendAsync: jest
- .fn()
- .mockImplementation(async () => Promise.reject(new Error('my-error'))),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.sendBatch(request)).rejects.toThrow('my-error');
- expect(myProvider.sendAsync).toHaveBeenCalledTimes(1);
- expect(myProvider.sendAsync).toHaveBeenCalledWith(payload);
- });
-
- it('should pass request to provider and return response if provider returns error', async () => {
- const manager = new Web3RequestManager();
- const myProvider = {
- sendAsync: jest
- .fn()
- .mockImplementation(async () => Promise.resolve(errorResponse)),
- } as any;
-
- jest.spyOn(manager, 'provider', 'get').mockReturnValue(myProvider);
-
- await expect(manager.sendBatch(request)).resolves.toEqual(errorResponse);
- expect(myProvider.sendAsync).toHaveBeenCalledTimes(1);
- expect(myProvider.sendAsync).toHaveBeenCalledWith(payload);
- });
- });
});
});
diff --git a/packages/web3-core/test/unit/web3_subscription.test.ts b/packages/web3-core/test/unit/web3_subscription.test.ts
index e7826914..75fee0a9 100644
--- a/packages/web3-core/test/unit/web3_subscription.test.ts
+++ b/packages/web3-core/test/unit/web3_subscription.test.ts
@@ -106,79 +106,4 @@ describe('Web3Subscription', () => {
expect(sub.id).toBeUndefined();
});
});
-});
-
-describe('Web3Subscription without subscription manager - (deprecated)', () => {
- let requestManager: any;
- let sub: ExampleSubscription;
-
- beforeEach(() => {
- requestManager = {
- send: jest.fn().mockImplementation(async () => {
- return 'sub-id';
- }),
- on: jest.fn(),
- provider: { on: jest.fn(), removeListener: jest.fn(), request: jest.fn() },
- };
- });
- describe('subscribe', () => {
- beforeEach(() => {
- // eslint-disable-next-line deprecation/deprecation
- sub = new ExampleSubscription({ param1: 'value' }, { requestManager });
- });
-
- it('should invoke request manager for subscription', async () => {
- (requestManager.send as jest.Mock).mockResolvedValue('sub-id');
- await sub.subscribe();
-
- expect(requestManager.send).toHaveBeenCalledTimes(1);
- expect(requestManager.send).toHaveBeenCalledWith({
- method: 'zond_subscribe',
- params: ['newHeads'],
- });
- });
-
- it('should set correct subscription id', async () => {
- (requestManager.send as jest.Mock).mockResolvedValue('sub-id');
-
- expect(sub.id).toBeUndefined();
- await sub.subscribe();
- expect(sub.id).toBe('sub-id');
- });
-
- it('should start listening to the "message" event', async () => {
- // requestManager.provider.on.mockClear();
- await sub.subscribe();
-
- expect(requestManager.provider.on).toHaveBeenCalledTimes(1);
- expect(requestManager.provider.on).toHaveBeenCalledWith(
- 'message',
- expect.any(Function),
- );
- });
- });
-
- describe('unsubscribe', () => {
- beforeEach(() => {
- // eslint-disable-next-line deprecation/deprecation
- sub = new ExampleSubscription({ param1: 'value' }, { requestManager });
- sub['_id'] = 'sub-id';
- });
-
- it('should invoke request manager to unsubscribe', async () => {
- await sub.unsubscribe();
-
- expect(requestManager.provider.on).toHaveBeenCalledTimes(1);
- expect(requestManager.provider.on).toHaveBeenCalledWith(
- 'message',
- expect.any(Function),
- );
- });
-
- it('should remove the subscription id', async () => {
- expect(sub.id).toBe('sub-id');
- await sub.unsubscribe();
- expect(sub.id).toBeUndefined();
- });
- });
-});
+});
\ No newline at end of file
diff --git a/packages/web3-errors/CHANGELOG.md b/packages/web3-errors/CHANGELOG.md
index 6c242768..2ad5a7d4 100644
--- a/packages/web3-errors/CHANGELOG.md
+++ b/packages/web3-errors/CHANGELOG.md
@@ -33,125 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [0.1.1-alpha.1]
-
-### Added
-
-- Add optional `innerError` property to the abstract class `Web3Error`. This `innerError` could be `Error`, `Error[]` or `undefined`. (#5435) (#5434)
-- The class `Web3ContractError` is moved to this package from `web3-eth-contract`. (#5434)
-- Added the error code `ERR_TX_SIGNING` and used it inside `TransactionSigningError` (#5462)
-- Added the error code `ERR_TX_GAS_MISMATCH` and used it inside `TransactionGasMismatchError` (#5462)
-- Added `SignatureError` to `web3-errors/src/errors/signature_errors.ts` (moved from `web3-eth/src/errors.ts`) (#5462)
-- Added the errors' classes to `web3-errors/src/errors/transaction_errors.ts` from `web3-eth/src/errors.ts` (#5462)
-- Added `TransactionBlockTimeoutError` class and its error code `ERR_TX_BLOCK_TIMEOUT` (#5294)
-- `ExistingPluginNamespaceError` class and it's error code `ERR_EXISTING_PLUGIN_NAMESPACE` (#5393)
-
-### Changed
-
-- Corrected the error code for `JSONRPC_ERR_UNAUTHORIZED` to be `4100` (#5462)
-- Moved `SignerError` from `web3-errors/src/errors/signature_errors.ts` to `web3-errors/src/errors/transaction_errors.ts`, and renamed it to `TransactionSigningError` (#5462)
-
-## [0.1.1-alpha.2]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-## [0.1.1-alpha.3]
-
-### Changed
-
-- `main` and `files` entries in `package.json` changed to `lib/` directory from `dist/` (#5739)
-
-## [0.1.1-alpha.4]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [1.0.0-rc.0]
-
-### Changed
-
-- The abstract class `Web3Error` is renamed to `BaseWeb3Error` (#5771)
-- Renamed TransactionRevertError to TransactionRevertInstructionError to remain consistent with 1.x
-- Using `MaxAttemptsReachedOnReconnectingError` with the same message for 1.x but also adding the `maxAttempts` (#5894)
-
-### Added
-
-- Added error class `InvalidMethodParamsError` and error code `ERR_INVALID_METHOD_PARAMS = 207` (#5824)
-- `request` property to `ResponseError` (#5854)
-- `data` property to `TransactionRevertInstructionError` (#5854)
-- `TransactionRevertWithCustomError` was added to handle custom solidity errors (#5854)
-
-## [1.0.0-rc.1]
-
-### Added
-
-- Added hybrid build (ESM and CJS) of library (#5904)
-- Added source files (#5956)
-
-### Changed
-
-- `gasLimit` is no longer accepted as a parameter for `MissingGasError` and `TransactionGasMismatchError, and is also no longer included in error message (#5915)
-
-## [1.0.0-rc.2]
-
-### Added
-
-- `InvalidPropertiesForTransactionTypeError` with error code `429` (#6102)
-
-### Changed
-
-- Nested Smart Contract error data is extracted at `Eip838ExecutionError` constructor and the nested error is set at `innerError` (#6045)
-
-## [1.0.0]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 1.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [1.0.1]
-
-### Changed
-
-- Dependencies updated
-
-## [1.0.2]
-
-### Changed
-
-- Dependencies updated
-
-## [1.1.0]
-
-### Added
-
-- `RpcErrorMessages` that contains mapping for standard RPC Errors and their messages. (#6230)
-- created `TransactionGasMismatchInnerError` for clarity on the error in `TransactionGasMismatchError` (#6215)
-- created `MissingGasInnerError` for clarity on the error in `MissingGasError` (#6215)
-
-### Fixed
-
-- Fixed: "'disconnect' in Eip1193 provider must emit ProviderRpcError #6003".(#6230)
-
-## [1.1.1]
-
-### Fixed
-
-- ESM import bug (#6359)
-
-## [1.1.2]
-
-### Changed
-
-- Dependencies updated
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-errors/package.json b/packages/web3-errors/package.json
index b12e75e8..4110a8e4 100644
--- a/packages/web3-errors/package.json
+++ b/packages/web3-errors/package.json
@@ -1,6 +1,6 @@
{
"name": "@theqrl/web3-errors",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
@@ -44,10 +44,10 @@
"test:integration": "jest --config=./test/integration/jest.config.js --passWithNoTests"
},
"dependencies": {
- "@theqrl/web3-types": "^0.2.1"
+ "@theqrl/web3-types": "^0.3.0"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
diff --git a/packages/web3-errors/src/error_codes.ts b/packages/web3-errors/src/error_codes.ts
index 0d1b3bbb..38d73320 100644
--- a/packages/web3-errors/src/error_codes.ts
+++ b/packages/web3-errors/src/error_codes.ts
@@ -63,12 +63,9 @@ export const ERR_TX_MISSING_CHAIN_INFO = 414;
export const ERR_TX_MISSING_GAS = 415;
export const ERR_TX_INVALID_LEGACY_GAS = 416;
export const ERR_TX_INVALID_FEE_MARKET_GAS = 417;
-export const ERR_TX_INVALID_FEE_MARKET_GAS_PRICE = 418;
-export const ERR_TX_INVALID_LEGACY_FEE_MARKET = 419;
export const ERR_TX_INVALID_OBJECT = 420;
export const ERR_TX_INVALID_NONCE_OR_CHAIN_ID = 421;
export const ERR_TX_UNABLE_TO_POPULATE_NONCE = 422;
-export const ERR_TX_UNSUPPORTED_EIP_1559 = 423;
export const ERR_TX_UNSUPPORTED_TYPE = 424;
export const ERR_TX_DATA_AND_INPUT = 425;
export const ERR_TX_POLLING_TIMEOUT = 426;
@@ -82,7 +79,6 @@ export const ERR_TX_SEND_TIMEOUT = 431;
export const ERR_TX_BLOCK_TIMEOUT = 432;
export const ERR_TX_SIGNING = 433;
-export const ERR_TX_GAS_MISMATCH = 434;
export const ERR_TX_CHAIN_MISMATCH = 435;
export const ERR_TX_HARDFORK_MISMATCH = 436;
@@ -91,7 +87,6 @@ export const ERR_TX_REVERT_TRANSACTION_CUSTOM_ERROR = 438;
export const ERR_TX_INVALID_PROPERTIES_FOR_TYPE = 439;
export const ERR_TX_MISSING_GAS_INNER_ERROR = 440;
-export const ERR_TX_GAS_MISMATCH_INNER_ERROR = 441;
// Connection error codes
export const ERR_CONN = 500;
export const ERR_CONN_INVALID = 501;
diff --git a/packages/web3-errors/src/errors/transaction_errors.ts b/packages/web3-errors/src/errors/transaction_errors.ts
index f18483f0..63c0e00e 100644
--- a/packages/web3-errors/src/errors/transaction_errors.ts
+++ b/packages/web3-errors/src/errors/transaction_errors.ts
@@ -31,14 +31,11 @@ import {
ERR_TX_CONTRACT_NOT_STORED,
ERR_TX_CHAIN_ID_MISMATCH,
ERR_TX_DATA_AND_INPUT,
- ERR_TX_GAS_MISMATCH,
ERR_TX_CHAIN_MISMATCH,
ERR_TX_HARDFORK_MISMATCH,
ERR_TX_INVALID_CALL,
ERR_TX_INVALID_CHAIN_INFO,
ERR_TX_INVALID_FEE_MARKET_GAS,
- ERR_TX_INVALID_FEE_MARKET_GAS_PRICE,
- ERR_TX_INVALID_LEGACY_FEE_MARKET,
ERR_TX_INVALID_LEGACY_GAS,
ERR_TX_INVALID_NONCE_OR_CHAIN_ID,
ERR_TX_INVALID_OBJECT,
@@ -61,12 +58,10 @@ import {
ERR_TX_SEND_TIMEOUT,
ERR_TX_SIGNING,
ERR_TX_UNABLE_TO_POPULATE_NONCE,
- ERR_TX_UNSUPPORTED_EIP_1559,
ERR_TX_UNSUPPORTED_TYPE,
ERR_TX_REVERT_TRANSACTION_CUSTOM_ERROR,
ERR_TX_INVALID_PROPERTIES_FOR_TYPE,
ERR_TX_MISSING_GAS_INNER_ERROR,
- ERR_TX_GAS_MISMATCH_INNER_ERROR,
} from '../error_codes.js';
import { InvalidValueError, BaseWeb3Error } from '../web3_error_base.js';
@@ -106,7 +101,7 @@ export class TransactionRevertInstructionError<
public data?: string,
) {
super(
- `Transaction has been reverted by the EVM${
+ `Transaction has been reverted by the ZVM${
receipt === undefined ? '' : `:\n ${BaseWeb3Error.convertToString(receipt)}`
}`,
);
@@ -182,7 +177,7 @@ export class TransactionRevertedWithoutReasonError<
> extends TransactionError {
public constructor(receipt?: ReceiptType) {
super(
- `Transaction has been reverted by the EVM${
+ `Transaction has been reverted by the ZVM${
receipt === undefined ? '' : `:\n ${BaseWeb3Error.convertToString(receipt)}`
}`,
receipt,
@@ -319,7 +314,7 @@ export class MissingGasInnerError extends BaseWeb3Error {
public constructor() {
super(
- 'Missing properties in transaction, either define "gas" and "gasPrice" for type 0 transactions or "gas", "maxPriorityFeePerGas" and "maxFeePerGas" for type 2 transactions',
+ 'Missing properties in transaction: define "gas", "maxPriorityFeePerGas" and "maxFeePerGas" for type 2 transactions',
);
}
}
@@ -329,14 +324,12 @@ export class MissingGasError extends InvalidValueError {
public constructor(value: {
gas: Numbers | undefined;
- gasPrice: Numbers | undefined;
maxPriorityFeePerGas: Numbers | undefined;
maxFeePerGas: Numbers | undefined;
}) {
super(
- `gas: ${value.gas ?? 'undefined'}, gasPrice: ${
- value.gasPrice ?? 'undefined'
- }, maxPriorityFeePerGas: ${value.maxPriorityFeePerGas ?? 'undefined'}, maxFeePerGas: ${
+ `gas: ${value.gas ?? 'undefined'}, maxPriorityFeePerGas: ${
+ value.maxPriorityFeePerGas ?? 'undefined'}, maxFeePerGas: ${
value.maxFeePerGas ?? 'undefined'
}`,
'"gas" is missing',
@@ -345,44 +338,13 @@ export class MissingGasError extends InvalidValueError {
}
}
-export class TransactionGasMismatchInnerError extends BaseWeb3Error {
- public code = ERR_TX_GAS_MISMATCH_INNER_ERROR;
-
- public constructor() {
- super(
- 'Missing properties in transaction, either define "gas" and "gasPrice" for type 0 transactions or "gas", "maxPriorityFeePerGas" and "maxFeePerGas" for type 2 transactions, not both',
- );
- }
-}
-
-export class TransactionGasMismatchError extends InvalidValueError {
- public code = ERR_TX_GAS_MISMATCH;
-
- public constructor(value: {
- gas: Numbers | undefined;
- gasPrice: Numbers | undefined;
- maxPriorityFeePerGas: Numbers | undefined;
- maxFeePerGas: Numbers | undefined;
- }) {
- super(
- `gas: ${value.gas ?? 'undefined'}, gasPrice: ${
- value.gasPrice ?? 'undefined'
- }, maxPriorityFeePerGas: ${value.maxPriorityFeePerGas ?? 'undefined'}, maxFeePerGas: ${
- value.maxFeePerGas ?? 'undefined'
- }`,
- 'transaction must specify legacy or fee market gas properties, not both',
- );
- this.innerError = new TransactionGasMismatchInnerError();
- }
-}
-
-export class InvalidGasOrGasPrice extends InvalidValueError {
+export class InvalidGas extends InvalidValueError {
public code = ERR_TX_INVALID_LEGACY_GAS;
- public constructor(value: { gas: Numbers | undefined; gasPrice: Numbers | undefined }) {
+ public constructor(value: { gas: Numbers | undefined }) {
super(
- `gas: ${value.gas ?? 'undefined'}, gasPrice: ${value.gasPrice ?? 'undefined'}`,
- 'Gas or gasPrice is lower than 0',
+ `gas: ${value.gas ?? 'undefined'}`,
+ 'Gas is lower than 0',
);
}
}
@@ -403,30 +365,6 @@ export class InvalidMaxPriorityFeePerGasOrMaxFeePerGas extends InvalidValueError
}
}
-export class Eip1559GasPriceError extends InvalidValueError {
- public code = ERR_TX_INVALID_FEE_MARKET_GAS_PRICE;
-
- public constructor(value: unknown) {
- super(value, "eip-1559 transactions don't support gasPrice");
- }
-}
-
-export class UnsupportedFeeMarketError extends InvalidValueError {
- public code = ERR_TX_INVALID_LEGACY_FEE_MARKET;
-
- public constructor(value: {
- maxPriorityFeePerGas: Numbers | undefined;
- maxFeePerGas: Numbers | undefined;
- }) {
- super(
- `maxPriorityFeePerGas: ${value.maxPriorityFeePerGas ?? 'undefined'}, maxFeePerGas: ${
- value.maxFeePerGas ?? 'undefined'
- }`,
- "pre-eip-1559 transaction don't support maxFeePerGas/maxPriorityFeePerGas",
- );
- }
-}
-
export class InvalidTransactionObjectError extends InvalidValueError {
public code = ERR_TX_INVALID_OBJECT;
@@ -454,14 +392,6 @@ export class UnableToPopulateNonceError extends InvalidValueError {
}
}
-export class Eip1559NotSupportedError extends InvalidValueError {
- public code = ERR_TX_UNSUPPORTED_EIP_1559;
-
- public constructor() {
- super('Eip1559NotSupportedError', "Network doesn't support eip-1559");
- }
-}
-
export class UnsupportedTransactionTypeError extends InvalidValueError {
public code = ERR_TX_UNSUPPORTED_TYPE;
@@ -486,7 +416,7 @@ export class TransactionSendTimeoutError extends BaseWeb3Error {
public constructor(value: { numberOfSeconds: number; transactionHash?: Bytes }) {
super(
- `The connected Ethereum Node did not respond within ${
+ `The connected Zond Node did not respond within ${
value.numberOfSeconds
} seconds, please make sure your transaction was properly sent and you are connected to a healthy Node. Be aware that transaction might still be pending or mined!\n\tTransaction Hash: ${
value.transactionHash ? value.transactionHash.toString() : 'not available'
@@ -576,7 +506,7 @@ export class InvalidPropertiesForTransactionTypeError extends BaseWeb3Error {
public constructor(
validationError: Web3ValidationErrorObject[],
- txType: '0x0' | '0x1' | '0x2',
+ txType: '0x2',
) {
const invalidPropertyNames: string[] = [];
validationError.forEach(error => invalidPropertyNames.push(error.keyword));
diff --git a/packages/web3-errors/src/errors/utils_errors.ts b/packages/web3-errors/src/errors/utils_errors.ts
index b93ff964..feba1ae9 100644
--- a/packages/web3-errors/src/errors/utils_errors.ts
+++ b/packages/web3-errors/src/errors/utils_errors.ts
@@ -55,7 +55,7 @@ export class InvalidAddressError extends InvalidValueError {
public code = ERR_INVALID_ADDRESS;
public constructor(value: unknown) {
- super(value, 'invalid ethereum address');
+ super(value, 'invalid zond address');
}
}
diff --git a/packages/web3-errors/test/unit/__snapshots__/errors.test.ts.snap b/packages/web3-errors/test/unit/__snapshots__/errors.test.ts.snap
index a0f890a4..bb172482 100644
--- a/packages/web3-errors/test/unit/__snapshots__/errors.test.ts.snap
+++ b/packages/web3-errors/test/unit/__snapshots__/errors.test.ts.snap
@@ -170,7 +170,7 @@ exports[`errors InvalidPropertiesForTransactionTypeError should have valid json
Object {
"code": 439,
"innerError": undefined,
- "message": "The following properties are invalid for the transaction type 0x0: property",
+ "message": "The following properties are invalid for the transaction type 0x2: property",
"name": "InvalidPropertiesForTransactionTypeError",
}
`;
@@ -365,7 +365,7 @@ Object {
"code": 402,
"data": undefined,
"innerError": undefined,
- "message": "Transaction has been reverted by the EVM:
+ "message": "Transaction has been reverted by the ZVM:
{\\"attr1\\":\\"attr1\\"}",
"name": "TransactionRevertInstructionError",
"reason": "message",
@@ -386,7 +386,7 @@ Object {
"customErrorName": "customErrorName",
"data": "data",
"innerError": undefined,
- "message": "Transaction has been reverted by the EVM",
+ "message": "Transaction has been reverted by the ZVM",
"name": "TransactionRevertWithCustomError",
"reason": "reason",
"receipt": Object {
@@ -400,7 +400,7 @@ exports[`errors TransactionRevertedWithoutReasonError should have valid json str
Object {
"code": 405,
"innerError": undefined,
- "message": "Transaction has been reverted by the EVM:
+ "message": "Transaction has been reverted by the ZVM:
{\\"attr1\\":\\"attr1\\"}",
"name": "TransactionRevertedWithoutReasonError",
"receipt": Object {
diff --git a/packages/web3-errors/test/unit/errors.test.ts b/packages/web3-errors/test/unit/errors.test.ts
index fb71c1a7..5d2bb348 100644
--- a/packages/web3-errors/test/unit/errors.test.ts
+++ b/packages/web3-errors/test/unit/errors.test.ts
@@ -204,7 +204,7 @@ describe('errors', () => {
params: {},
},
],
- '0x0',
+ '0x2',
).toJSON(),
).toMatchSnapshot();
});
diff --git a/packages/web3-net/CHANGELOG.md b/packages/web3-net/CHANGELOG.md
index bb774786..2ad5a7d4 100644
--- a/packages/web3-net/CHANGELOG.md
+++ b/packages/web3-net/CHANGELOG.md
@@ -33,106 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [4.0.1-alpha.1]
-
-### Added
-
-- `web3-rpc-methods` dependency (#5441)
-
-### Changed
-
-- `Web3NetAPI` is now imported from `web3-types` instead of `web3_net_api.ts` (#5441)
-- Replace the imported methods from `rpc_methods.ts` with `netRpcMethods` imports from `web3-rpc-methods` (#5441)
-
-### Removed
-
-- `rpcMethods` export, these methods are now exported via `web3-rpc-methods` as `netRpcMethods` (#5441)
-- `Web3NetAPI` export, now exported via `web3-types` as `Web3NetAPI` (#5441)
-
-## [4.0.1-alpha.2]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Changed
-
-- Updated dependencies (#5912)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-## [4.0.1-rc.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.3]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.4]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.5]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.6]
-
-### Changed
-
-- Dependencies updated
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-net/README.md b/packages/web3-net/README.md
index 6e19cf6a..9ea19647 100644
--- a/packages/web3-net/README.md
+++ b/packages/web3-net/README.md
@@ -11,7 +11,7 @@
This is a sub-package of [web3.js][repo].
-`web3-net` package allows to interact with an Ethereum node’s network properties.
+`web3-net` package allows to interact with a Zond node’s network properties.
## Installation
diff --git a/packages/web3-net/package.json b/packages/web3-net/package.json
index 3b2f25b3..a3b7c3b9 100644
--- a/packages/web3-net/package.json
+++ b/packages/web3-net/package.json
@@ -1,10 +1,10 @@
{
"name": "@theqrl/web3-net",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
- "description": "Web3 module to interact with the Ethereum nodes networking properties.",
+ "description": "Web3 module to interact with the Zond nodes networking properties.",
"main": "./lib/commonjs/index.js",
"module": "./lib/esm/index.js",
"exports": {
@@ -45,7 +45,7 @@
"test:integration": "jest --config=./test/integration/jest.config.js --passWithNoTests"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
@@ -59,10 +59,10 @@
"typescript": "^4.7.4"
},
"dependencies": {
- "@theqrl/web3-core": "^0.2.1",
- "@theqrl/web3-rpc-methods": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1"
+ "@theqrl/web3-core": "^0.3.0",
+ "@theqrl/web3-rpc-methods": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-utils": "^0.3.0"
},
"gitHead": "d4f3246946fec86d908a215b27568aa8faea88d7"
}
diff --git a/packages/web3-providers-http/CHANGELOG.md b/packages/web3-providers-http/CHANGELOG.md
index 37269928..2ad5a7d4 100644
--- a/packages/web3-providers-http/CHANGELOG.md
+++ b/packages/web3-providers-http/CHANGELOG.md
@@ -33,90 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [4.0.1-alpha.2]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `main` and `files` entries in `package.json` changed to `lib/` directory from `dist/` (#5739)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Added
-
-- Added named export for `HttpProvider` (#5771)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-## [4.0.1-rc.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.3]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.4]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.5]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.6]
-
-### Changed
-
-- Dependencies updated
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-providers-http/package.json b/packages/web3-providers-http/package.json
index 58781716..194bdc47 100644
--- a/packages/web3-providers-http/package.json
+++ b/packages/web3-providers-http/package.json
@@ -1,10 +1,10 @@
{
"name": "@theqrl/web3-providers-http",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
- "description": "HTTP provider for Web3 4.x.x",
+ "description": "HTTP provider for Web3",
"main": "./lib/commonjs/index.js",
"module": "./lib/esm/index.js",
"exports": {
@@ -48,7 +48,7 @@
"test:e2e:firefox": "npx cypress run --headless --browser firefox"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
@@ -63,9 +63,9 @@
"typescript": "^4.7.4"
},
"dependencies": {
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1",
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-utils": "^0.3.0",
"cross-fetch": "^3.1.5"
},
"gitHead": "d4f3246946fec86d908a215b27568aa8faea88d7"
diff --git a/packages/web3-providers-http/test/unit/implemented_methods.test.ts b/packages/web3-providers-http/test/unit/implemented_methods.test.ts
index 175bd8a5..63b0945a 100644
--- a/packages/web3-providers-http/test/unit/implemented_methods.test.ts
+++ b/packages/web3-providers-http/test/unit/implemented_methods.test.ts
@@ -34,7 +34,7 @@ describe('HttpProvider - implemented methods', () => {
jsonrpc: '2.0',
id: 42,
method: 'zond_getBalance',
- params: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest'],
+ params: ['Z407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest'],
} as Web3APIPayload;
let httpProvider: HttpProvider;
diff --git a/packages/web3-providers-ipc/CHANGELOG.md b/packages/web3-providers-ipc/CHANGELOG.md
index 081feaee..2ad5a7d4 100644
--- a/packages/web3-providers-ipc/CHANGELOG.md
+++ b/packages/web3-providers-ipc/CHANGELOG.md
@@ -33,100 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [4.0.1-alpha.1]
-
-### Added
-
-- Show error message and return dummy promise if socket is not writable (#5294)
-
-## [4.0.1-alpha.2]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-- Refactor to use common SocketProvider class (#5683)
-- Legacy Event `close` has been deprecated, superseded by `disconnect` (#5683)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Added
-
-- Added named export for `IpcProvider` (#5771)
-- Pass `_socketOptions` from `IpcProvider` constructor to the underlying `Socket` (#5891)
-- The getter of `SocketConnection` in `IpcProvider` (inherited from `SocketProvider`) returns `net.Socket` (#5891)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-## [4.0.1-rc.2]
-
-### Changed
-
-- Replaced Buffer for Uint8Array (#6004)
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.3]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.4]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.5]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.6]
-
-### Changed
-
-- Dependencies updated
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-providers-ipc/package.json b/packages/web3-providers-ipc/package.json
index aa193cd7..1b0f63e8 100644
--- a/packages/web3-providers-ipc/package.json
+++ b/packages/web3-providers-ipc/package.json
@@ -1,10 +1,10 @@
{
"name": "@theqrl/web3-providers-ipc",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
- "description": "IPC provider for Web3 4.x.x",
+ "description": "IPC provider for Web3",
"main": "./lib/commonjs/index.js",
"module": "./lib/esm/index.js",
"exports": {
@@ -45,7 +45,7 @@
"test:integration": "jest --config=./test/integration/jest.config.js"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
@@ -59,9 +59,9 @@
"typescript": "^4.7.4"
},
"dependencies": {
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1"
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-utils": "^0.3.0"
},
"gitHead": "d4f3246946fec86d908a215b27568aa8faea88d7"
}
diff --git a/packages/web3-providers-ipc/test/unit/check_implementation.test.ts b/packages/web3-providers-ipc/test/unit/check_implementation.test.ts
index 0350185e..f2efe75b 100644
--- a/packages/web3-providers-ipc/test/unit/check_implementation.test.ts
+++ b/packages/web3-providers-ipc/test/unit/check_implementation.test.ts
@@ -110,7 +110,7 @@ describe('IPCProvider', () => {
jsonrpc: '2.0',
id: 42,
method: 'zond_getBalance',
- params: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest'],
+ params: ['Z407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest'],
}),
).rejects.toThrow('Connection not open');
});
diff --git a/packages/web3-providers-ws/CHANGELOG.md b/packages/web3-providers-ws/CHANGELOG.md
index 8561e087..2ad5a7d4 100644
--- a/packages/web3-providers-ws/CHANGELOG.md
+++ b/packages/web3-providers-ws/CHANGELOG.md
@@ -33,94 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [4.0.1-alpha.2]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `main` and `files` entries in `package.json` changed to `lib/` directory from `dist/` (#5739)
-- Refactor to use common SocketProvider class (#5683)
-- Legacy Event `close` has been deprecated, superseded by `disconnect` (#5683)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Added
-
-- Added named export for `WebSocketProvider` (#5771)
-- The getter of `SocketConnection` in `WebSocketProvider` (inherited from `SocketProvider`) returns isomorphic `WebSocket` (#5891)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-## [4.0.1-rc.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Fixed
-
-- Fixed #6162 @types/ws issue (#6205)
-
-## [4.0.3]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.4]
-
-### Fixed
-
-- Ensure a fixed version for "@types/ws": "8.5.3" (#6309)
-
-## [4.0.5]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.6]
-
-### Changed
-
-- Dependencies updated
-
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-providers-ws/package.json b/packages/web3-providers-ws/package.json
index db25fca3..2222e43a 100644
--- a/packages/web3-providers-ws/package.json
+++ b/packages/web3-providers-ws/package.json
@@ -1,10 +1,10 @@
{
"name": "@theqrl/web3-providers-ws",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
- "description": "Websocket provider for Web3 4.x.x",
+ "description": "Websocket provider for Web3",
"main": "./lib/commonjs/index.js",
"module": "./lib/esm/index.js",
"exports": {
@@ -45,7 +45,7 @@
"test:integration": "jest --config=./test/integration/jest.config.js"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/express": "^4.17.13",
"@types/jest": "^28.1.6",
"@types/morgan": "^1.9.3",
@@ -63,9 +63,9 @@
"typescript": "^4.7.4"
},
"dependencies": {
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1",
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-utils": "^0.3.0",
"@types/ws": "8.5.3",
"isomorphic-ws": "^5.0.0",
"ws": "^8.8.1"
diff --git a/packages/web3-providers-ws/test/integration/web_socket_provider_integration.test.ts b/packages/web3-providers-ws/test/integration/web_socket_provider_integration.test.ts
index 42b3bc54..8c265b16 100644
--- a/packages/web3-providers-ws/test/integration/web_socket_provider_integration.test.ts
+++ b/packages/web3-providers-ws/test/integration/web_socket_provider_integration.test.ts
@@ -221,18 +221,12 @@ describeIf(isWs)('WebSocketProvider - implemented methods', () => {
describe('send multiple Requests on same connection with valid payload and receive response tests', () => {
// eslint-disable-next-line jest/expect-expect
let jsonRpcPayload2: Web3APIPayload;
- let jsonRpcPayload3: Web3APIPayload;
beforeAll(() => {
jsonRpcPayload2 = {
jsonrpc: '2.0',
id: 43,
method: 'zond_mining',
} as Web3APIPayload;
- jsonRpcPayload3 = {
- jsonrpc: '2.0',
- id: 44,
- method: 'zond_hashrate',
- } as Web3APIPayload;
});
it('should send multiple requests', async () => {
@@ -240,22 +234,19 @@ describeIf(isWs)('WebSocketProvider - implemented methods', () => {
const prom2 = webSocketProvider.request(jsonRpcPayload2);
- const prom3 = webSocketProvider.request(jsonRpcPayload3);
-
- const values = await Promise.all([prom1, prom2, prom3]);
+ const values = await Promise.all([prom1, prom2]);
expect(values).toEqual(
expect.arrayContaining([
expect.objectContaining({ id: jsonRpcPayload.id }),
expect.objectContaining({ id: jsonRpcPayload2.id }),
- expect.objectContaining({ id: jsonRpcPayload3.id }),
]),
);
// Execute request in connected stated too
- const prom3Value = await prom3;
- expect(prom3Value).toEqual(
+ const prom2Value = await prom2;
+ expect(prom2Value).toEqual(
expect.objectContaining({
- id: jsonRpcPayload3.id,
+ id: jsonRpcPayload2.id,
}),
);
});
diff --git a/packages/web3-providers-ws/test/unit/check_implementation.test.ts b/packages/web3-providers-ws/test/unit/check_implementation.test.ts
index b19eea78..bf96bc1a 100644
--- a/packages/web3-providers-ws/test/unit/check_implementation.test.ts
+++ b/packages/web3-providers-ws/test/unit/check_implementation.test.ts
@@ -96,7 +96,7 @@ describe('WebSocketProvider', () => {
jsonrpc: '2.0',
id: 42,
method: 'zond_getBalance',
- params: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest'],
+ params: ['Z407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest'],
}),
).rejects.toThrow('Connection not open');
});
diff --git a/packages/web3-providers-ws/test/unit/web_socket_provider.test.ts b/packages/web3-providers-ws/test/unit/web_socket_provider.test.ts
index 93c18783..529bc81e 100644
--- a/packages/web3-providers-ws/test/unit/web_socket_provider.test.ts
+++ b/packages/web3-providers-ws/test/unit/web_socket_provider.test.ts
@@ -39,7 +39,7 @@ describe('WebSocketProvider', () => {
jsonrpc: '2.0',
id: 42,
method: 'zond_getBalance',
- params: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest'],
+ params: ['Z407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest'],
};
jsonRpcResponse = { ...jsonRpcPayload, result: JSON.stringify(jsonRpcPayload) };
});
diff --git a/packages/web3-rpc-methods/CHANGELOG.md b/packages/web3-rpc-methods/CHANGELOG.md
index 3141a6c7..2ad5a7d4 100644
--- a/packages/web3-rpc-methods/CHANGELOG.md
+++ b/packages/web3-rpc-methods/CHANGELOG.md
@@ -33,91 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [0.1.0-alpha.1]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-## [0.1.0-alpha.2]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [0.1.0-alpha.3]
-
-### Changed
-
-- `main` and `files` entries in `package.json` changed to `lib/` directory from `dist/` (#5739)
-
-## [0.1.0-alpha.4]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [1.0.0-rc.0]
-
-### Added
-
-- Added `createAccessList` functionality ( #5780 )
-- Added support of `safe` and `finalized` block tags (#5823)
-
-## [1.0.0-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-## [1.0.0-rc.2]
-
-### Changed
-
-- Dependencies updated
-
-## [1.0.0]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 1.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [1.0.1]
-
-### Changed
-
-- Dependencies updated
-
-## [1.0.2]
-
-### Fixed
-
-- Rpc method `getPastLogs` accept blockHash as a parameter https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs (#6181)
-
-## [1.1.0]
-
-### Added
-
-- A `signTypedData` method to `eth_rpc_methods` for the rpc calls `eth_signTypedData` and `eth_signTypedData_v4` (#6286)
-
-## [1.1.1]
-
-### Changed
-
-- Dependencies updated
-
-## [1.1.2]
-
-### Changed
-
-- Dependencies updated
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-rpc-methods/package.json b/packages/web3-rpc-methods/package.json
index 08525768..04b322c6 100644
--- a/packages/web3-rpc-methods/package.json
+++ b/packages/web3-rpc-methods/package.json
@@ -1,10 +1,10 @@
{
"name": "@theqrl/web3-rpc-methods",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
- "description": "Ethereum RPC methods for Web3 4.x.x",
+ "description": "Zond RPC methods for Web3",
"main": "./lib/commonjs/index.js",
"module": "./lib/esm/index.js",
"exports": {
@@ -45,7 +45,7 @@
"test:integration": "jest --config=./test/integration/jest.config.js --passWithNoTests"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
@@ -59,9 +59,9 @@
"typescript": "^4.7.4"
},
"dependencies": {
- "@theqrl/web3-core": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-validator": "^0.2.1"
+ "@theqrl/web3-core": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-validator": "^0.3.0"
},
"gitHead": "d4f3246946fec86d908a215b27568aa8faea88d7"
}
diff --git a/packages/web3-rpc-methods/src/index.ts b/packages/web3-rpc-methods/src/index.ts
index 23763956..c965d397 100644
--- a/packages/web3-rpc-methods/src/index.ts
+++ b/packages/web3-rpc-methods/src/index.ts
@@ -16,6 +16,5 @@ along with web3.js. If not, see .
*/
import * as zondRpcMethods from './zond_rpc_methods.js';
import * as netRpcMethods from './net_rpc_methods.js';
-import * as personalRpcMethods from './personal_rpc_methods.js';
-export { zondRpcMethods, netRpcMethods, personalRpcMethods };
+export { zondRpcMethods, netRpcMethods };
diff --git a/packages/web3-rpc-methods/src/personal_rpc_methods.ts b/packages/web3-rpc-methods/src/personal_rpc_methods.ts
deleted file mode 100644
index d1c6aa15..00000000
--- a/packages/web3-rpc-methods/src/personal_rpc_methods.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-import { Web3RequestManager } from '@theqrl/web3-core';
-import { Address, ZondPersonalAPI, HexString, Transaction } from '@theqrl/web3-types';
-
-export const getAccounts = async (requestManager: Web3RequestManager) =>
- requestManager.send({
- method: 'personal_listAccounts',
- params: [],
- });
-
-export const newAccount = async (
- requestManager: Web3RequestManager,
- password: string,
-) =>
- requestManager.send({
- method: 'personal_newAccount',
- params: [password],
- });
-
-export const unlockAccount = async (
- requestManager: Web3RequestManager,
- address: Address,
- password: string,
- unlockDuration: number,
-) =>
- requestManager.send({
- method: 'personal_unlockAccount',
- params: [address, password, unlockDuration],
- });
-
-export const lockAccount = async (
- requestManager: Web3RequestManager,
- address: Address,
-) =>
- requestManager.send({
- method: 'personal_lockAccount',
- params: [address],
- });
-
-export const importRawKey = async (
- requestManager: Web3RequestManager,
- keyData: HexString,
- passphrase: string,
-) =>
- requestManager.send({
- method: 'personal_importRawKey',
- params: [keyData, passphrase],
- });
-
-export const sendTransaction = async (
- requestManager: Web3RequestManager,
- tx: Transaction,
- passphrase: string,
-) =>
- requestManager.send({
- method: 'personal_sendTransaction',
- params: [tx, passphrase],
- });
-
-export const signTransaction = async (
- requestManager: Web3RequestManager,
- tx: Transaction,
- passphrase: string,
-) =>
- requestManager.send({
- method: 'personal_signTransaction',
- params: [tx, passphrase],
- });
-
-export const sign = async (
- requestManager: Web3RequestManager,
- data: HexString,
- address: Address,
- passphrase: string,
-) =>
- requestManager.send({
- method: 'personal_sign',
- params: [data, address, passphrase],
- });
\ No newline at end of file
diff --git a/packages/web3-rpc-methods/src/zond_rpc_methods.ts b/packages/web3-rpc-methods/src/zond_rpc_methods.ts
index 966b0133..2edc816c 100644
--- a/packages/web3-rpc-methods/src/zond_rpc_methods.ts
+++ b/packages/web3-rpc-methods/src/zond_rpc_methods.ts
@@ -44,16 +44,16 @@ export async function getSyncing(requestManager: Web3RequestManager) {
});
}
-export async function getCoinbase(requestManager: Web3RequestManager) {
+export async function getGasPrice(requestManager: Web3RequestManager) {
return requestManager.send({
- method: 'zond_coinbase',
+ method: 'zond_gasPrice',
params: [],
});
}
-export async function getGasPrice(requestManager: Web3RequestManager) {
+export async function getMaxPriorityFeePerGas(requestManager: Web3RequestManager) {
return requestManager.send({
- method: 'zond_gasPrice',
+ method: 'zond_maxPriorityFeePerGas',
params: [],
});
}
@@ -314,29 +314,11 @@ export async function getCompilers(requestManager: Web3RequestManager) {
});
}
-export async function compileSolidity(requestManager: Web3RequestManager, code: string) {
- validator.validate(['string'], [code]);
-
- return requestManager.send({
- method: 'zond_compileSolidity',
- params: [code],
- });
-}
-
-export async function compileLLL(requestManager: Web3RequestManager, code: string) {
- validator.validate(['string'], [code]);
-
- return requestManager.send({
- method: 'zond_compileLLL',
- params: [code],
- });
-}
-
-export async function compileSerpent(requestManager: Web3RequestManager, code: string) {
+export async function compileHyperion(requestManager: Web3RequestManager, code: string) {
validator.validate(['string'], [code]);
return requestManager.send({
- method: 'zond_compileSerpent',
+ method: 'zond_compileHyperion',
params: [code],
});
}
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/compile_lll.test.ts b/packages/web3-rpc-methods/test/unit/eth_rpc_methods/compile_lll.test.ts
deleted file mode 100644
index 914e6eba..00000000
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/compile_lll.test.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-
-// web3.js is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// web3.js is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-
-// You should have received a copy of the GNU Lesser General Public License
-// along with web3.js. If not, see .
-// */
-import { Web3RequestManager } from '@theqrl/web3-core';
-import { validator } from '@theqrl/web3-validator';
-
-import { zondRpcMethods } from '../../../src/index';
-import { testData } from './fixtures/compile_lll';
-
-jest.mock('@theqrl/web3-validator');
-
-describe('compileLLL', () => {
- let requestManagerSendSpy: jest.Mock;
- let requestManager: Web3RequestManager;
-
- beforeAll(() => {
- requestManager = new Web3RequestManager('http://127.0.0.1:8545');
- requestManagerSendSpy = jest.fn();
- requestManager.send = requestManagerSendSpy;
- });
-
- it.each(testData)(
- 'should call requestManager.send with compileLLL method and expect parameters\n Title: %s\n Input parameters: %s',
- async (_, inputParameters) => {
- await zondRpcMethods.compileLLL(requestManager, ...inputParameters);
- expect(requestManagerSendSpy).toHaveBeenCalledWith({
- method: 'zond_compileLLL',
- params: inputParameters,
- });
- },
- );
-
- it.each(testData)(
- 'should call validator.validate with expected params\n Title: %s\n Input parameters: %s',
- async (_, inputParameters) => {
- const validatorSpy = jest.spyOn(validator, 'validate');
- await zondRpcMethods.compileLLL(requestManager, ...inputParameters);
- expect(validatorSpy).toHaveBeenCalledWith(['string'], inputParameters);
- },
- );
-});
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/compile_serpent.test.ts b/packages/web3-rpc-methods/test/unit/eth_rpc_methods/compile_serpent.test.ts
deleted file mode 100644
index 373533ef..00000000
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/compile_serpent.test.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-
-// web3.js is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// web3.js is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-
-// You should have received a copy of the GNU Lesser General Public License
-// along with web3.js. If not, see .
-// */
-import { Web3RequestManager } from '@theqrl/web3-core';
-import { validator } from '@theqrl/web3-validator';
-
-import { zondRpcMethods } from '../../../src/index';
-import { testData } from './fixtures/compile_lll';
-
-jest.mock('@theqrl/web3-validator');
-
-describe('compileSerpent', () => {
- let requestManagerSendSpy: jest.Mock;
- let requestManager: Web3RequestManager;
-
- beforeAll(() => {
- requestManager = new Web3RequestManager('http://127.0.0.1:8545');
- requestManagerSendSpy = jest.fn();
- requestManager.send = requestManagerSendSpy;
- });
-
- it.each(testData)(
- 'should call requestManager.send with compileSerpent method and expect parameters\n Title: %s\n Input parameters: %s',
- async (_, inputParameters) => {
- await zondRpcMethods.compileSerpent(requestManager, ...inputParameters);
- expect(requestManagerSendSpy).toHaveBeenCalledWith({
- method: 'zond_compileSerpent',
- params: inputParameters,
- });
- },
- );
-
- it.each(testData)(
- 'should call validator.validate with expected params\n Title: %s\n Input parameters: %s',
- async (_, inputParameters) => {
- const validatorSpy = jest.spyOn(validator, 'validate');
- await zondRpcMethods.compileSerpent(requestManager, ...inputParameters);
- expect(validatorSpy).toHaveBeenCalledWith(['string'], inputParameters);
- },
- );
-});
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/compile_lll.ts b/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/compile_lll.ts
deleted file mode 100644
index 53c1ea4e..00000000
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/compile_lll.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-
-/**
- * Array consists of:
- * - Test title
- * - Input parameters:
- * - code
- */
-type TestData = [string, [string]];
-export const testData: TestData[] = [
- ['code = (returnlll (suicide (caller)))', ['(returnlll (suicide (caller)))']],
-];
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/compile_serpent.ts b/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/compile_serpent.ts
deleted file mode 100644
index a3cc8c1a..00000000
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/compile_serpent.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-
-/**
- * Array consists of:
- * - Test title
- * - Input parameters:
- * - code
- */
-type TestData = [string, [string]];
-export const testData: TestData[] = [['code = /* some serpent */', ['/* some serpent */']]];
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_uncle_by_block_hash_and_index.ts b/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_uncle_by_block_hash_and_index.ts
deleted file mode 100644
index 8bcccb74..00000000
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_uncle_by_block_hash_and_index.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-import { HexString32Bytes, Uint } from '@theqrl/web3-types';
-
-export const mockRpcResponse = '0xb';
-
-/**
- * Array consists of:
- * - Test title
- * - Input parameters:
- * - blockHash
- * - uncleIndex
- */
-type TestData = [string, [HexString32Bytes, Uint]];
-export const testData: TestData[] = [
- [
- 'blockHash = "0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b", uncleIndex = "0x88"',
- ['0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b', '0x88'],
- ],
- [
- 'blockHash = "0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b", uncleIndex = "0x88"',
- ['0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b', '0x88'],
- ],
-];
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_uncle_count_by_block_hash.ts b/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_uncle_count_by_block_hash.ts
deleted file mode 100644
index d750928d..00000000
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_uncle_count_by_block_hash.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-import { HexString32Bytes } from '@theqrl/web3-types';
-
-export const mockRpcResponse = '0xb';
-
-/**
- * Array consists of:
- * - Test title
- * - Input parameters:
- * - blockHash
- */
-type TestData = [string, [HexString32Bytes]];
-export const testData: TestData[] = [
- [
- 'blockHash = "0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"',
- ['0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b'],
- ],
-];
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_uncle_count_by_block_number.ts b/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_uncle_count_by_block_number.ts
deleted file mode 100644
index 6a2bba2d..00000000
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_uncle_count_by_block_number.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-import { BlockNumberOrTag, BlockTags } from '@theqrl/web3-types';
-
-export const mockRpcResponse = '0xb';
-
-/**
- * Array consists of:
- * - Test title
- * - Input parameters:
- * - blockNumber
- */
-type TestData = [string, [BlockNumberOrTag]];
-export const testData: TestData[] = [
- // blockNumber = BlockTag
- ['blockNumber = BlockTags.LATEST', [BlockTags.LATEST]],
- ['blockNumber = BlockTags.EARLIEST', [BlockTags.EARLIEST]],
- ['blockNumber = BlockTags.PENDING', [BlockTags.PENDING]],
- ['blockNumber = BlockTags.SAFE', [BlockTags.SAFE]],
- ['blockNumber = BlockTags.FINALIZED', [BlockTags.FINALIZED]],
- // blockNumber = Numbers
- ['blockNumber = "0x4b7"', ['0x4b7']],
-];
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/submit_hashrate.ts b/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/submit_hashrate.ts
deleted file mode 100644
index 3fb09f24..00000000
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/submit_hashrate.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-import { HexString32Bytes } from '@theqrl/web3-types';
-
-/**
- * Array consists of:
- * - Test title
- * - Input parameters:
- * - hashRate
- * - id
- */
-type TestData = [string, [HexString32Bytes, HexString32Bytes]];
-export const testData: TestData[] = [
- [
- 'hashRate = "0x0000000000000000000000000000000000000000000000000000000000500000", id = "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"',
- [
- '0x0000000000000000000000000000000000000000000000000000000000500000',
- '0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c',
- ],
- ],
-];
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/submit_work.ts b/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/submit_work.ts
deleted file mode 100644
index d5cd8e19..00000000
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/submit_work.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-import { HexString32Bytes, HexString8Bytes } from '@theqrl/web3-types';
-
-/**
- * Array consists of:
- * - Test title
- * - Input parameters:
- * - nonce
- * - hash
- * - digest
- */
-type TestData = [string, [HexString8Bytes, HexString32Bytes, HexString32Bytes]];
-export const testData: TestData[] = [
- [
- 'nonce = "0x0000000000000001", hash = "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", digest = "0xD1FE5700000000000000000000000000D1FE5700000000000000000000000000"',
- [
- '0x0000000000000001',
- '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
- '0xD1FE5700000000000000000000000000D1FE5700000000000000000000000000',
- ],
- ],
-];
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/call.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/call.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/call.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/call.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/compile_solidity.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/compile_hyperion.test.ts
similarity index 87%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/compile_solidity.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/compile_hyperion.test.ts
index a9707eab..9fd850be 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/compile_solidity.test.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/compile_hyperion.test.ts
@@ -32,11 +32,11 @@ import { Web3RequestManager } from '@theqrl/web3-core';
import { validator } from '@theqrl/web3-validator';
import { zondRpcMethods } from '../../../src/index';
-import { testData } from './fixtures/compile_solidity';
+import { testData } from './fixtures/compile_hyperion';
jest.mock('@theqrl/web3-validator');
-describe('compileSolidity', () => {
+describe('compileHyperion', () => {
let requestManagerSendSpy: jest.Mock;
let requestManager: Web3RequestManager;
@@ -47,11 +47,11 @@ describe('compileSolidity', () => {
});
it.each(testData)(
- 'should call requestManager.send with compileSolidity method and expect parameters\n Title: %s\n Input parameters: %s',
+ 'should call requestManager.send with compileHyperion method and expect parameters\n Title: %s\n Input parameters: %s',
async (_, inputParameters) => {
- await zondRpcMethods.compileSolidity(requestManager, ...inputParameters);
+ await zondRpcMethods.compileHyperion(requestManager, ...inputParameters);
expect(requestManagerSendSpy).toHaveBeenCalledWith({
- method: 'zond_compileSolidity',
+ method: 'zond_compileHyperion',
params: inputParameters,
});
},
@@ -61,7 +61,7 @@ describe('compileSolidity', () => {
'should call validator.validate with expected params\n Title: %s\n Input parameters: %s',
async (_, inputParameters) => {
const validatorSpy = jest.spyOn(validator, 'validate');
- await zondRpcMethods.compileSolidity(requestManager, ...inputParameters);
+ await zondRpcMethods.compileHyperion(requestManager, ...inputParameters);
expect(validatorSpy).toHaveBeenCalledWith(['string'], inputParameters);
},
);
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/createAccessList.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/createAccessList.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/createAccessList.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/createAccessList.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/estimate_gas.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/estimate_gas.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/estimate_gas.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/estimate_gas.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/call.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/call.ts
similarity index 92%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/call.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/call.ts
index f3230207..63a9beab 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/call.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/call.ts
@@ -20,12 +20,11 @@ import { TransactionCallAPI, BlockTags, BlockNumberOrTag } from '@theqrl/web3-ty
export const mockRpcResponse = '0x5208';
const transaction: TransactionCallAPI = {
- from: '0xEB014f8c8B418Db6b45774c326A0E64C78914dC0',
- to: '0x3535353535353535353535353535353535353535',
+ from: 'ZEB014f8c8B418Db6b45774c326A0E64C78914dC0',
+ to: 'Z3535353535353535353535353535353535353535',
value: '0x174876e800',
gas: '0x5208',
- gasPrice: '0x4a817c800',
- type: '0x0',
+ type: '0x2',
maxFeePerGas: '0x1229298c00',
maxPriorityFeePerGas: '0x49504f80',
data: '0x',
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/compile_solidity.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/compile_hyperion.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/compile_solidity.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/compile_hyperion.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/createAccessList.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/createAccessList.ts
similarity index 86%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/createAccessList.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/createAccessList.ts
index 4a5eb752..9a1dec10 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/createAccessList.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/createAccessList.ts
@@ -17,11 +17,11 @@ along with web3.js. If not, see .
import { BlockNumberOrTag, BlockTags, TransactionWithSenderAPI } from '@theqrl/web3-types';
export const mockRpcResponse =
- '{"accessList":[{"address":"0xc285289346689ee7cd63e4bb1a3b40f5f6e7973c","storageKeys":["0x0000000000000000000000000000000000000000000000000000000000000000"]}],"gasUsed":"0x6a5b"}';
+ '{"accessList":[{"address":"Zc285289346689ee7cd63e4bb1a3b40f5f6e7973c","storageKeys":["0x0000000000000000000000000000000000000000000000000000000000000000"]}],"gasUsed":"0x6a5b"}';
const callObj: Partial = {
- from: '0xEB014f8c8B418Db6b45774c326A0E64C78914dC0',
- to: '0xc285289346689ee7cd63e4bb1a3b40f5f6e7973c',
+ from: 'ZEB014f8c8B418Db6b45774c326A0E64C78914dC0',
+ to: 'Zc285289346689ee7cd63e4bb1a3b40f5f6e7973c',
value: '0x174876e800',
gas: '0x5208',
type: '0x2',
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/estimate_gas.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/estimate_gas.ts
similarity index 92%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/estimate_gas.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/estimate_gas.ts
index 680a721b..ec8a9b27 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/estimate_gas.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/estimate_gas.ts
@@ -19,12 +19,11 @@ import { TransactionWithSenderAPI, BlockTags, BlockNumberOrTag } from '@theqrl/w
export const mockRpcResponse = '0x5208';
const transaction: Partial = {
- from: '0xEB014f8c8B418Db6b45774c326A0E64C78914dC0',
- to: '0x3535353535353535353535353535353535353535',
+ from: 'ZEB014f8c8B418Db6b45774c326A0E64C78914dC0',
+ to: 'Z3535353535353535353535353535353535353535',
value: '0x174876e800',
gas: '0x5208',
- gasPrice: '0x4a817c800',
- type: '0x0',
+ type: '0x2',
maxFeePerGas: '0x1229298c00',
maxPriorityFeePerGas: '0x49504f80',
data: '0x',
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_balance.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_balance.ts
similarity index 95%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_balance.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_balance.ts
index e4c8a6c6..57841b9a 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_balance.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_balance.ts
@@ -18,7 +18,7 @@ import { Address, BlockTags, BlockNumberOrTag } from '@theqrl/web3-types';
export const mockRpcResponse = '0xe8d4a51000';
-const address = '0x407d73d8a49eeb85d32cf465507dd71d507100c1';
+const address = 'Z407d73d8a49eeb85d32cf465507dd71d507100c1';
/**
* Array consists of:
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_block_by_hash.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_block_by_hash.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_block_by_hash.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_block_by_hash.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_block_by_number.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_block_by_number.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_block_by_number.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_block_by_number.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_block_transaction_count_by_hash.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_block_transaction_count_by_hash.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_block_transaction_count_by_hash.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_block_transaction_count_by_hash.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_block_transaction_count_by_number.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_block_transaction_count_by_number.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_block_transaction_count_by_number.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_block_transaction_count_by_number.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_code.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_code.ts
similarity index 95%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_code.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_code.ts
index 2f4180d3..956e0bc6 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_code.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_code.ts
@@ -18,7 +18,7 @@ import { Address, BlockTags, BlockNumberOrTag } from '@theqrl/web3-types';
export const mockRpcResponse = '0xb';
-const address = '0x407d73d8a49eeb85d32cf465507dd71d507100c1';
+const address = 'Z407d73d8a49eeb85d32cf465507dd71d507100c1';
/**
* Array consists of:
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_fee_history.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_fee_history.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_fee_history.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_fee_history.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_filter_changes.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_filter_changes.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_filter_changes.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_filter_changes.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_filter_logs.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_filter_logs.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_filter_logs.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_filter_logs.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_logs.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_logs.ts
similarity index 88%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_logs.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_logs.ts
index 4383b077..f927299b 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_logs.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_logs.ts
@@ -45,7 +45,7 @@ export const testData: TestData[] = [
'filter = address',
[
{
- address: '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ address: 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
},
],
],
@@ -54,8 +54,8 @@ export const testData: TestData[] = [
[
{
address: [
- '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
- '0xdfd5293d8e347dfe59e90efd55b2956a1343963d',
+ 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ 'Zdfd5293d8e347dfe59e90efd55b2956a1343963d',
],
},
],
@@ -84,8 +84,8 @@ export const testData: TestData[] = [
fromBlock: '0xc0ff3',
toBlock: '0xc0ff3',
address: [
- '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
- '0xdfd5293d8e347dfe59e90efd55b2956a1343963d',
+ 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ 'Zdfd5293d8e347dfe59e90efd55b2956a1343963d',
],
topics: [
'0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b',
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_proof.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_proof.ts
similarity index 82%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_proof.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_proof.ts
index fbb7ebc7..3fc9faf0 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_proof.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_proof.ts
@@ -16,7 +16,7 @@ along with web3.js. If not, see .
*/
import { Address, HexString32Bytes, Uint } from '@theqrl/web3-types';
-const address = '0x407d73d8a49eeb85d32cf465507dd71d507100c1';
+const address = 'Z407d73d8a49eeb85d32cf465507dd71d507100c1';
/**
* Array consists of:
@@ -29,7 +29,7 @@ const address = '0x407d73d8a49eeb85d32cf465507dd71d507100c1';
type TestData = [string, [Address, HexString32Bytes[], Uint]];
export const testData: TestData[] = [
[
- 'address = "0x407d73d8a49eeb85d32cf465507dd71d507100c1", storageKeys = ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"], blockNumber = "0x88"',
+ 'address = "Z407d73d8a49eeb85d32cf465507dd71d507100c1", storageKeys = ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"], blockNumber = "0x88"',
[address, ['0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b'], '0x88'],
],
];
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_storage_at.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_storage_at.ts
similarity index 96%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_storage_at.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_storage_at.ts
index aa8db7d0..408a5b18 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_storage_at.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_storage_at.ts
@@ -18,7 +18,7 @@ import { BlockNumberOrTag, Address, BlockTags, Uint256 } from '@theqrl/web3-type
export const mockRpcResponse = '0x033456732123ffff2342342dd12342434324234234fd234fd23fd4f23d4234';
-const address = '0x407d73d8a49eeb85d32cf465507dd71d507100c1';
+const address = 'Z407d73d8a49eeb85d32cf465507dd71d507100c1';
/**
* Array consists of:
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_by_block_hash_and_index.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_by_block_hash_and_index.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_by_block_hash_and_index.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_by_block_hash_and_index.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_by_block_number_and_index.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_by_block_number_and_index.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_by_block_number_and_index.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_by_block_number_and_index.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_by_hash.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_by_hash.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_by_hash.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_by_hash.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_count.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_count.ts
similarity index 95%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_count.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_count.ts
index 94b1356c..38789459 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_count.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_count.ts
@@ -18,7 +18,7 @@ import { BlockNumberOrTag, Address, BlockTags } from '@theqrl/web3-types';
export const mockRpcResponse = '0xe8d4a51000';
-const address = '0x407d73d8a49eeb85d32cf465507dd71d507100c1';
+const address = 'Z407d73d8a49eeb85d32cf465507dd71d507100c1';
/**
* Array consists of:
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_receipt.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_receipt.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/get_transaction_receipt.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/get_transaction_receipt.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/new_filter.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/new_filter.ts
similarity index 88%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/new_filter.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/new_filter.ts
index 4383b077..f927299b 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/new_filter.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/new_filter.ts
@@ -45,7 +45,7 @@ export const testData: TestData[] = [
'filter = address',
[
{
- address: '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ address: 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
},
],
],
@@ -54,8 +54,8 @@ export const testData: TestData[] = [
[
{
address: [
- '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
- '0xdfd5293d8e347dfe59e90efd55b2956a1343963d',
+ 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ 'Zdfd5293d8e347dfe59e90efd55b2956a1343963d',
],
},
],
@@ -84,8 +84,8 @@ export const testData: TestData[] = [
fromBlock: '0xc0ff3',
toBlock: '0xc0ff3',
address: [
- '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
- '0xdfd5293d8e347dfe59e90efd55b2956a1343963d',
+ 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ 'Zdfd5293d8e347dfe59e90efd55b2956a1343963d',
],
topics: [
'0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b',
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/send_raw_transaction.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/send_raw_transaction.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/send_raw_transaction.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/send_raw_transaction.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/send_transaction.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/send_transaction.ts
similarity index 89%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/send_transaction.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/send_transaction.ts
index c3e9bd78..097f09f2 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/send_transaction.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/send_transaction.ts
@@ -19,12 +19,11 @@ import { TransactionWithSenderAPI } from '@theqrl/web3-types';
export const mockRpcResponse = '0x5208';
const transaction: Partial = {
- from: '0xEB014f8c8B418Db6b45774c326A0E64C78914dC0',
- to: '0x3535353535353535353535353535353535353535',
+ from: 'ZEB014f8c8B418Db6b45774c326A0E64C78914dC0',
+ to: 'Z3535353535353535353535353535353535353535',
value: '0x174876e800',
gas: '0x5208',
- gasPrice: '0x4a817c800',
- type: '0x0',
+ type: '0x2',
maxFeePerGas: '0x1229298c00',
maxPriorityFeePerGas: '0x49504f80',
data: '0x',
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/sign.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/sign.ts
similarity index 94%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/sign.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/sign.ts
index 6f1bf200..92b9a936 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/sign.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/sign.ts
@@ -18,7 +18,7 @@ import { Address, HexStringBytes } from '@theqrl/web3-types';
export const mockRpcResponse = '0xb';
-const address = '0x407d73d8a49eeb85d32cf465507dd71d507100c1';
+const address = 'Z407d73d8a49eeb85d32cf465507dd71d507100c1';
/**
* Array consists of:
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/sign_transaction.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/sign_transaction.ts
similarity index 89%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/sign_transaction.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/sign_transaction.ts
index c3e9bd78..097f09f2 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/sign_transaction.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/sign_transaction.ts
@@ -19,12 +19,11 @@ import { TransactionWithSenderAPI } from '@theqrl/web3-types';
export const mockRpcResponse = '0x5208';
const transaction: Partial = {
- from: '0xEB014f8c8B418Db6b45774c326A0E64C78914dC0',
- to: '0x3535353535353535353535353535353535353535',
+ from: 'ZEB014f8c8B418Db6b45774c326A0E64C78914dC0',
+ to: 'Z3535353535353535353535353535353535353535',
value: '0x174876e800',
gas: '0x5208',
- gasPrice: '0x4a817c800',
- type: '0x0',
+ type: '0x2',
maxFeePerGas: '0x1229298c00',
maxPriorityFeePerGas: '0x49504f80',
data: '0x',
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/sign_typed_data.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/sign_typed_data.ts
similarity index 88%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/sign_typed_data.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/sign_typed_data.ts
index 59093c96..a1644921 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/sign_typed_data.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/sign_typed_data.ts
@@ -16,7 +16,7 @@ along with web3.js. If not, see .
*/
import { Address, Eip712TypedData } from '@theqrl/web3-types';
-const address = '0x407d73d8a49eeb85d32cf465507dd71d507100c1';
+const address = 'Z407d73d8a49eeb85d32cf465507dd71d507100c1';
const typedData = {
types: {
@@ -68,16 +68,16 @@ const typedData = {
name: 'Ether Mail',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
from: {
name: 'Cow',
- wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
+ wallet: 'ZCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
},
to: {
name: 'Bob',
- wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
+ wallet: 'ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
},
contents: 'Hello, Bob!',
},
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/uninstall_filter.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/uninstall_filter.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/fixtures/uninstall_filter.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/fixtures/uninstall_filter.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_accounts.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_accounts.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_accounts.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_accounts.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_balance.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_balance.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_balance.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_balance.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_block_by_hash.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_block_by_hash.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_block_by_hash.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_block_by_hash.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_block_by_number.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_block_by_number.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_block_by_number.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_block_by_number.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_block_number.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_block_number.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_block_number.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_block_number.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_block_transaction_count_by_hash.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_block_transaction_count_by_hash.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_block_transaction_count_by_hash.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_block_transaction_count_by_hash.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_block_transaction_count_by_number.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_block_transaction_count_by_number.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_block_transaction_count_by_number.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_block_transaction_count_by_number.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_chain_id.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_chain_id.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_chain_id.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_chain_id.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_code.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_code.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_code.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_code.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_compilers.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_compilers.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_compilers.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_compilers.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_fee_history.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_fee_history.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_fee_history.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_fee_history.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_filter_changes.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_filter_changes.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_filter_changes.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_filter_changes.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_filter_logs.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_filter_logs.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_filter_logs.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_filter_logs.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_gas_price.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_gas_price.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_gas_price.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_gas_price.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_logs.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_logs.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_logs.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_logs.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_coinbase.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_maxPriorityFeePerGas.ts
similarity index 88%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_coinbase.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_maxPriorityFeePerGas.ts
index 0ed651c7..9da384d2 100644
--- a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_coinbase.test.ts
+++ b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_maxPriorityFeePerGas.ts
@@ -32,7 +32,7 @@ import { Web3RequestManager } from '@theqrl/web3-core';
import { zondRpcMethods } from '../../../src/index';
-describe('getCoinbase', () => {
+describe('getMaxPriorityFeePerGas', () => {
let requestManagerSendSpy: jest.Mock;
let requestManager: Web3RequestManager;
@@ -42,10 +42,10 @@ describe('getCoinbase', () => {
requestManager.send = requestManagerSendSpy;
});
- it('should call requestManager.send with getCoinbase method', async () => {
- await zondRpcMethods.getCoinbase(requestManager);
+ it('should call requestManager.send with getMaxPriorityFeePerGas method', async () => {
+ await zondRpcMethods.getMaxPriorityFeePerGas(requestManager);
expect(requestManagerSendSpy).toHaveBeenCalledWith({
- method: 'zond_coinbase',
+ method: 'zond_maxPriorityFeePerGas',
params: [],
});
});
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_node_info.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_node_info.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_node_info.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_node_info.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_pending_transaction.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_pending_transaction.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_pending_transaction.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_pending_transaction.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_proof.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_proof.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_proof.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_proof.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_protocol_version.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_protocol_version.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_protocol_version.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_protocol_version.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_storage_at.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_storage_at.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_storage_at.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_storage_at.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_syncing.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_syncing.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_syncing.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_syncing.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_transaction_by_block_hash_and_index.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_transaction_by_block_hash_and_index.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_transaction_by_block_hash_and_index.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_transaction_by_block_hash_and_index.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_transaction_by_block_number_and_index.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_transaction_by_block_number_and_index.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_transaction_by_block_number_and_index.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_transaction_by_block_number_and_index.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_transaction_by_hash.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_transaction_by_hash.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_transaction_by_hash.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_transaction_by_hash.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_transaction_count.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_transaction_count.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_transaction_count.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_transaction_count.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_transaction_receipt.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_transaction_receipt.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/get_transaction_receipt.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/get_transaction_receipt.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/new_block_filter.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/new_block_filter.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/new_block_filter.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/new_block_filter.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/new_filter.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/new_filter.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/new_filter.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/new_filter.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/new_pending_transaction_filter.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/new_pending_transaction_filter.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/new_pending_transaction_filter.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/new_pending_transaction_filter.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/request_accounts.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/request_accounts.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/request_accounts.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/request_accounts.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/send_raw_transaction.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/send_raw_transaction.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/send_raw_transaction.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/send_raw_transaction.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/send_transaction.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/send_transaction.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/send_transaction.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/send_transaction.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/sign.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/sign.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/sign.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/sign.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/sign_transaction.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/sign_transaction.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/sign_transaction.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/sign_transaction.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/sign_typed_data.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/sign_typed_data.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/sign_typed_data.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/sign_typed_data.test.ts
diff --git a/packages/web3-rpc-methods/test/unit/eth_rpc_methods/uninstall_filter.test.ts b/packages/web3-rpc-methods/test/unit/zond_rpc_methods/uninstall_filter.test.ts
similarity index 100%
rename from packages/web3-rpc-methods/test/unit/eth_rpc_methods/uninstall_filter.test.ts
rename to packages/web3-rpc-methods/test/unit/zond_rpc_methods/uninstall_filter.test.ts
diff --git a/packages/web3-types/CHANGELOG.md b/packages/web3-types/CHANGELOG.md
index f85baa35..2ad5a7d4 100644
--- a/packages/web3-types/CHANGELOG.md
+++ b/packages/web3-types/CHANGELOG.md
@@ -33,135 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [0.1.1-alpha.1]
-
-### Added
-
-- `Web3EthExecutionAPI` export (#5441)
-- `Web3NetAPI` export (#5441)
-- `EthPersonalAPI` export (#5441)
-
-### Changed
-
-- `Web3APISpec`, `Web3APIMethod`, and `Web3APIParams` now supports `unknown` APIs (#5393)
-
-## [0.1.1-alpha.2]
-
-### Added
-
-- These types were moved from `web3-eth-accounts` to `web3-types` package: Cipher, CipherOptions, ScryptParams, PBKDF2SHA256Params, KeyStore (#5581 )
-
-### Fixed
-
-- Make the `request` method of `EIP1193Provider` class, compatible with EIP 1193 (#5591)
-
-## [0.1.1-alpha.3]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-- These types were added: ProviderRpcError, EthSubscription, ProviderMessage, ProviderConnectInfo (#5683)
-
-## [0.1.1-alpha.4]
-
-### Added
-
-- Add `TransactionWithFromLocalWalletIndex`, `TransactionWithToLocalWalletIndex` and `TransactionWithFromAndToLocalWalletIndex` types (#5731)
-
-## [1.0.0-rc.0]
-
-### Added
-
-- Added types from `web3-eth-abi` and `TypedArray` from (#5771)
-- Added `TypedArray` from `web3-utils` and `web3-validator` (it was defined twice) (#5771)
-- Added `safe` and `finalized` block tags in `BlockTags` and `BlockTag` types (#5823)
-
-## [1.0.0-rc.1]
-
-### Added
-
-- Added hybrid build (ESM and CJS) of library (#5904)
-- Added source files (#5956)
-
-### Changed
-
-- `data` property in `TransactionOutput` was renamed to `input` (#5915)
-- The method `signTransaction` inside `Web3BaseWalletAccount` is now utilizing the type `Transaction` for its argument. (#5993)
-- The types `FMT_NUMBER`, `NumberTypes`, `FMT_BYTES`, `ByteTypes`, `DataFormat`, `DEFAULT_RETURN_FORMAT`, `ETH_DATA_FORMAT` and `FormatType` moved from `web3-utils`. (#5993)
-- The types `ContractInitOptions`, `NonPayableCallOptions` and `PayableCallOptions` are moved from `web3-eth-contract`. (#5993)
-
-## [1.0.0-rc.2]
-
-### Added
-
-- Added `filters` param to the `Filter` type (#6010)
-- Added types `JsonRpcSubscriptionResultOld`, `Web3ProviderMessageEventCallback`. Added `.on('data')` type support for old providers (#6082)
-- Export for `HardforksOrdered` enum (#6102)
-- Export for `Web3ValidationErrorObject` type (#6102)
-
-### Changed
-
-- Removed chainId, to, data & input properties from NonPayableCallOptions
-- Replaced Buffer for Uint8Array (#6004)
-- types `FMT_BYTES.BUFFER`, `Bytes` and `FormatType` and encryption option types for `salt` and `iv` has replaced support for `Buffer` for `Uint8Array` (#6004)
-- Added `internalType` property to the `AbiParameter` type.
-
-## [1.0.0]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 1.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [1.0.1]
-
-### Added
-
-- Added the `SimpleProvider` interface which has only `request(args)` method that is compatible with EIP-1193 (#6210)
-- Added the `Eip1193EventName` type that contains the possible events names according to EIP-1193 (#6210)
-
-### Changed
-
-- The `EIP1193Provider` class has now all the events (for `on` and `removeListener`) according to EIP-1193 (#6210)
-
-### Fixed
-
-- Fixed bug #6185, now web3.js compiles on typescript v5 (#6195)
-
-## [1.0.2]
-
-### Fixed
-
-- type `Filter` includes `blockHash` (#6206)
-
-## [1.1.0]
-
-### Changed
-
-- `input` and `data` are now optional properties on `PopulatedUnsignedBaseTransaction` (previously `input` was a required property, and `data` was not available) (#6294)
-
-### Added
-
-- `eth_signTypedData` and `eth_signTypedData_v4` to `web3_eth_execution_api` (#6286)
-- `Eip712TypeDetails` and `Eip712TypedData` to `eth_types` (#6286)
-
-## [1.1.1]
-
-### Changed
-
-- Dependencies updated
-
-## [1.2.0]
-
-### Added
-
-- add `asEIP1193Provider` to `Web3BaseProvider` so every inherited class can have the returned value of `request` method, fully compatible with EIP-1193. (#6407)
-
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-types/package.json b/packages/web3-types/package.json
index dfa00bf1..d5805859 100644
--- a/packages/web3-types/package.json
+++ b/packages/web3-types/package.json
@@ -1,6 +1,6 @@
{
"name": "@theqrl/web3-types",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
@@ -46,7 +46,7 @@
},
"devDependencies": {
"@humeris/espresso-shot": "^4.0.0",
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
diff --git a/packages/web3-types/src/apis/zond_execution_api.ts b/packages/web3-types/src/apis/zond_execution_api.ts
index d56ea073..e9465460 100644
--- a/packages/web3-types/src/apis/zond_execution_api.ts
+++ b/packages/web3-types/src/apis/zond_execution_api.ts
@@ -40,7 +40,6 @@ export interface TransactionCallAPI {
readonly from?: Address;
readonly to: Address;
readonly gas?: Uint;
- readonly gasPrice?: Uint;
readonly value?: Uint;
readonly data?: HexStringBytes;
readonly type?: HexStringSingleByte;
@@ -74,36 +73,13 @@ export interface Transaction1559SignedAPI extends Transaction1559UnsignedAPI {
readonly signature: HexStringBytes;
}
-export interface Transaction2930UnsignedAPI extends BaseTransactionAPI {
- readonly gasPrice: Uint;
- readonly accessList: AccessList;
-}
-
-export interface Transaction2930SignedAPI extends Transaction2930UnsignedAPI {
- readonly publicKey: HexStringBytes;
- readonly signature: HexStringBytes;
-}
-
-export interface TransactionLegacyUnsignedAPI extends BaseTransactionAPI {
- readonly gasPrice: Uint;
-}
-
-export interface TransactionLegacySignedAPI extends TransactionLegacyUnsignedAPI {
- readonly publicKey: HexStringBytes;
- readonly signature: HexStringBytes;
-}
-
// https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml#L144
export type TransactionUnsignedAPI =
- | Transaction1559UnsignedAPI
- | Transaction2930UnsignedAPI
- | TransactionLegacyUnsignedAPI;
+ | Transaction1559UnsignedAPI;
// https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml#L211
export type TransactionSignedAPI =
- | Transaction1559SignedAPI
- | Transaction2930SignedAPI
- | TransactionLegacySignedAPI;
+ | Transaction1559SignedAPI;
// https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml#L216
export type TransactionInfoAPI = TransactionSignedAPI & {
@@ -196,7 +172,6 @@ export type ZondExecutionAPI = {
// https://github.com/ethereum/execution-apis/blob/main/src/eth/client.yaml
zond_protocolVersion: () => string;
zond_syncing: () => SyncingStatusAPI;
- zond_coinbase: () => Address;
zond_accounts: () => Address[];
zond_blockNumber: () => Uint;
@@ -258,7 +233,5 @@ export type ZondExecutionAPI = {
zond_clearSubscriptions: (keepSyncing?: boolean) => void;
// Non-supported by execution-apis specs
zond_getCompilers: () => string[];
- zond_compileSolidity: (code: string) => CompileResultAPI;
- zond_compileLLL: (code: string) => HexStringBytes;
- zond_compileSerpent: (code: string) => HexStringBytes;
+ zond_compileHyperion: (code: string) => CompileResultAPI;
};
diff --git a/packages/web3-types/src/apis/zond_personal_api.ts b/packages/web3-types/src/apis/zond_personal_api.ts
deleted file mode 100644
index d8660923..00000000
--- a/packages/web3-types/src/apis/zond_personal_api.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-import { Address, Transaction } from '../zond_types.js';
-import { HexString } from '../primitives_types.js';
-
-export type ZondPersonalAPI = {
- personal_listAccounts: () => Address[];
- personal_newAccount: (password: string) => Address;
- personal_unlockAccount: (address: Address, password: string, unlockDuration: number) => boolean;
- personal_lockAccount: (address: Address) => boolean;
- personal_importRawKey: (keyData: HexString, passphrase: string) => HexString;
- personal_sendTransaction: (tx: Transaction, passphrase: string) => HexString;
- personal_signTransaction: (tx: Transaction, passphrase: string) => HexString;
- personal_sign: (data: HexString, address: Address, passphrase: string) => HexString;
- //personal_ecRecover: (signedData: HexString, signature: HexString) => Address;
-};
diff --git a/packages/web3-types/src/index.ts b/packages/web3-types/src/index.ts
index 2c40cd4c..2b7b0bcf 100644
--- a/packages/web3-types/src/index.ts
+++ b/packages/web3-types/src/index.ts
@@ -19,7 +19,6 @@ export * from './error_types.js';
export * from './apis/zond_execution_api.js';
export * from './apis/web3_zond_execution_api.js';
export * from './apis/web3_net_api.js';
-export * from './apis/zond_personal_api.js';
export * from './data_format_types.js';
export * from './zond_types.js';
export * from './zond_abi_types.js';
diff --git a/packages/web3-types/src/primitives_types.ts b/packages/web3-types/src/primitives_types.ts
index 387900e7..a01aa27d 100644
--- a/packages/web3-types/src/primitives_types.ts
+++ b/packages/web3-types/src/primitives_types.ts
@@ -16,6 +16,7 @@ along with web3.js. If not, see .
*/
export type HexString = string;
+export type ZPrefixedHexString = string;
export type Bytes = Uint8Array | HexString;
export type Numbers = number | bigint | string | HexString;
diff --git a/packages/web3-types/src/web3_base_provider.ts b/packages/web3-types/src/web3_base_provider.ts
index 5e92106a..4bbd8655 100644
--- a/packages/web3-types/src/web3_base_provider.ts
+++ b/packages/web3-types/src/web3_base_provider.ts
@@ -98,6 +98,7 @@ export interface LegacyRequestProvider {
): void;
}
+
export interface SimpleProvider {
request, ResponseType = Web3APIReturnType>(
args: Web3APIPayload,
diff --git a/packages/web3-types/src/web3_base_wallet.ts b/packages/web3-types/src/web3_base_wallet.ts
index c662b84b..4bc1bec2 100644
--- a/packages/web3-types/src/web3_base_wallet.ts
+++ b/packages/web3-types/src/web3_base_wallet.ts
@@ -75,12 +75,14 @@ export interface Web3BaseWalletAccount {
readonly message?: string;
readonly signature: HexString;
};
+ // TODO(youtrack/theqrl/web3.js/3)
// readonly encrypt: (password: string, options?: Record) => Promise;
}
export interface Web3AccountProvider {
seedToAccount: (seed: string) => T;
create: () => T;
+ // TODO(youtrack/theqrl/web3.js/3)
// decrypt: (
// keystore: KeyStore | string,
// password: string,
@@ -101,6 +103,7 @@ export abstract class Web3BaseWallet extends Ar
public abstract get(addressOrIndex: string | number): T | undefined;
public abstract remove(addressOrIndex: string | number): boolean;
public abstract clear(): this;
+ // TODO(youtrack/theqrl/web3.js/3)
// public abstract encrypt(
// password: string,
// options?: Record,
diff --git a/packages/web3-types/src/zond_abi_types.ts b/packages/web3-types/src/zond_abi_types.ts
index d7e69fe8..1ea1499a 100644
--- a/packages/web3-types/src/zond_abi_types.ts
+++ b/packages/web3-types/src/zond_abi_types.ts
@@ -19,7 +19,7 @@ import { Address } from './zond_types.js';
import { Bytes, Numbers } from './primitives_types.js';
import { FixedSizeArray } from './utility_types.js';
-type _SolidityIndexRange =
+type _HyperionIndexRange =
| 1
| 2
| 3
@@ -51,7 +51,7 @@ type _SolidityIndexRange =
export type ConvertToNumber<
T extends string,
- Range extends number = _SolidityIndexRange,
+ Range extends number = _HyperionIndexRange,
> = Range extends unknown ? (`${Range}` extends T ? Range : never) : never;
export type Components = {
diff --git a/packages/web3-types/src/zond_contract_types.ts b/packages/web3-types/src/zond_contract_types.ts
index 382e1230..f6421757 100644
--- a/packages/web3-types/src/zond_contract_types.ts
+++ b/packages/web3-types/src/zond_contract_types.ts
@@ -26,10 +26,8 @@ export interface ContractInitOptions {
*/
readonly gas?: Uint;
readonly gasLimit?: Uint;
- /**
- * The gas price in wei to use for transactions.
- */
- readonly gasPrice?: Uint;
+ readonly maxPriorityFeePerGas?: string;
+ readonly maxFeePerGas?: string;
/**
* The address transactions should be made from
*/
@@ -65,10 +63,6 @@ export interface NonPayableCallOptions {
gas?: string;
maxPriorityFeePerGas?: HexString;
maxFeePerGas?: HexString;
- /**
- * The gas price in wei to use for this call `transaction`.
- */
- gasPrice?: string;
type?: string | number;
data?: HexString;
input?: HexString;
diff --git a/packages/web3-types/src/zond_types.ts b/packages/web3-types/src/zond_types.ts
index 4ccb7905..ab1eae16 100644
--- a/packages/web3-types/src/zond_types.ts
+++ b/packages/web3-types/src/zond_types.ts
@@ -14,7 +14,7 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { Bytes, HexString, Numbers } from './primitives_types.js';
+import { Bytes, HexString, ZPrefixedHexString, Numbers } from './primitives_types.js';
export type ValueTypes = 'address' | 'bool' | 'string' | 'int256' | 'uint256' | 'bytes' | 'bigint';
// Hex encoded 32 bytes
@@ -33,14 +33,13 @@ export type HexString256Bytes = HexString;
export type Uint = HexString;
// Hex encoded unsigned integer 32 bytes
export type Uint256 = HexString;
-// Hex encoded address
-export type Address = HexString;
+// Z-prefixed hex encoded address
+export type Address = ZPrefixedHexString;
// https://github.com/ethereum/execution-apis/blob/main/src/schemas/filter.json#L59
export type Topic = HexString32Bytes;
export type TransactionHash = HexString;
-export type Uncles = HexString32Bytes[];
export enum BlockTags {
EARLIEST = 'earliest',
LATEST = 'latest',
@@ -53,20 +52,19 @@ export type BlockTag = `${BlockTags}`;
export type BlockNumberOrTag = Numbers | BlockTag;
export interface Proof {
- readonly address: HexString;
+ readonly address: ZPrefixedHexString;
readonly nonce: string;
readonly balance: string;
}
export interface TransactionInput {
readonly [key: string]: unknown;
- readonly to?: HexString; // If its a contract creation tx then no address wil be specified.
- readonly from?: HexString;
+ readonly to?: ZPrefixedHexString; // If its a contract creation tx then no address wil be specified.
+ readonly from?: ZPrefixedHexString;
readonly data?: string;
readonly input?: string;
readonly gas: HexString;
readonly gasLimit?: string;
- readonly gasPrice?: string;
readonly maxPriorityFeePerGas?: string;
readonly maxFeePerGas?: string;
readonly nonce: string;
@@ -79,8 +77,8 @@ export interface TransactionInput {
export type TransactionOutput = {
readonly [key: string]: unknown;
- readonly to?: HexString; // If its a contract creation tx then no address wil be specified.
- readonly from?: HexString;
+ readonly to?: ZPrefixedHexString; // If its a contract creation tx then no address wil be specified.
+ readonly from?: ZPrefixedHexString;
readonly input: string;
readonly gas?: Numbers;
readonly gasLimit?: string;
@@ -88,10 +86,9 @@ export type TransactionOutput = {
readonly value: Numbers;
readonly blockNumber?: Numbers;
readonly transactionIndex?: Numbers;
-} & (
- | { maxPriorityFeePerGas: Numbers; maxFeePerGas: Numbers; gasPrice?: never }
- | { maxPriorityFeePerGas?: never; maxFeePerGas?: never; gasPrice: Numbers }
-);
+ maxPriorityFeePerGas: Numbers;
+ maxFeePerGas: Numbers;
+}
export interface LogsInput {
readonly blockHash?: HexString;
@@ -100,7 +97,7 @@ export interface LogsInput {
readonly id?: string;
readonly blockNumber?: HexString;
readonly transactionIndex?: HexString;
- readonly address: HexString;
+ readonly address: ZPrefixedHexString;
readonly topics: HexString[];
readonly data: HexString;
}
@@ -123,10 +120,8 @@ export interface BlockInput {
readonly size: HexString;
readonly timestamp: HexString;
readonly number?: HexString;
- readonly difficulty?: HexString;
- readonly totalDifficulty?: HexString;
readonly transactions?: TransactionInput[];
- readonly miner?: HexString;
+ readonly miner?: ZPrefixedHexString;
readonly baseFeePerGas?: HexString;
}
@@ -136,10 +131,8 @@ export interface BlockOutput {
readonly size: bigint | number;
readonly timestamp: bigint | number;
readonly number?: bigint | number;
- readonly difficulty?: bigint | number;
- readonly totalDifficulty?: bigint | number;
readonly transactions?: TransactionOutput[];
- readonly miner?: HexString;
+ readonly miner?: ZPrefixedHexString;
readonly baseFeePerGas?: bigint | number;
readonly parentHash?: HexString32Bytes;
}
@@ -155,31 +148,18 @@ export interface BlockHeaderOutput {
readonly hash?: HexString32Bytes;
readonly parentHash?: HexString32Bytes;
readonly receiptsRoot?: HexString32Bytes;
- readonly miner?: HexString;
+ readonly miner?: ZPrefixedHexString;
readonly stateRoot?: HexString32Bytes;
readonly transactionsRoot?: HexString32Bytes;
readonly withdrawalsRoot?: HexString32Bytes;
readonly logsBloom?: Bytes;
- readonly difficulty?: Numbers;
readonly number?: Numbers;
readonly gasLimit: Numbers;
readonly gasUsed: Numbers;
readonly timestamp: Numbers;
readonly extraData?: Bytes;
- readonly nonce?: Numbers;
- readonly sha3Uncles: HexString32Bytes[];
readonly baseFeePerGas?: Numbers;
-
- // These fields are returned when the RPC client is Nethermind,
- // but aren't available in other clients such as Gzond
- readonly author?: Address;
- readonly totalDifficulty?: Numbers;
- readonly size?: Numbers;
- readonly excessDataGas?: Numbers;
- readonly mixHash?: HexString32Bytes;
- readonly transactions?: TransactionOutput[];
- readonly uncles?: Uncles;
- readonly withdrawals?: Withdrawals[];
+ readonly prevRandao?: HexString32Bytes;
}
export interface ReceiptInput {
@@ -189,7 +169,7 @@ export interface ReceiptInput {
readonly cumulativeGasUsed: HexString;
readonly gasUsed: HexString;
readonly logs?: LogsInput[];
- readonly contractAddress?: HexString;
+ readonly contractAddress?: ZPrefixedHexString;
readonly status?: string;
readonly effectiveGasPrice?: HexString;
}
@@ -200,31 +180,11 @@ export interface ReceiptOutput {
readonly cumulativeGasUsed: bigint | number;
readonly gasUsed: bigint | number;
readonly logs?: LogsOutput[];
- readonly contractAddress?: HexString;
+ readonly contractAddress?: ZPrefixedHexString;
readonly status: boolean;
readonly effectiveGasPrice?: bigint | number;
}
-export interface PostInput {
- readonly ttl?: HexString;
- readonly workToProve?: HexString;
- readonly priority?: HexString;
- readonly expiry?: HexString;
- readonly sent?: HexString;
- readonly workProved?: HexString;
- readonly topics?: HexString[];
-}
-
-export interface PostOutput {
- readonly ttl?: bigint | number;
- readonly workToProve?: bigint | number;
- readonly priority?: bigint | number;
- readonly expiry?: bigint | number;
- readonly sent?: bigint | number;
- readonly workProved?: bigint | number;
- readonly topics?: string[];
-}
-
export interface SyncInput {
readonly startingBlock: HexString;
readonly currentBlock: HexString;
@@ -268,30 +228,11 @@ export type AccessListResult = {
readonly gasUsed?: Numbers;
};
-export type ValidChains = 'goerli' | 'kovan' | 'mainnet' | 'rinkeby' | 'ropsten' | 'sepolia';
+export type ValidChains = 'mainnet';
// This list of hardforks is expected to be in order
// keep this in mind when making changes to it
export enum HardforksOrdered {
- chainstart = 'chainstart',
- frontier = 'frontier',
- homestead = 'homestead',
- dao = 'dao',
- tangerineWhistle = 'tangerineWhistle',
- spuriousDragon = 'spuriousDragon',
- byzantium = 'byzantium',
- constantinople = 'constantinople',
- petersburg = 'petersburg',
- istanbul = 'istanbul',
- muirGlacier = 'muirGlacier',
- berlin = 'berlin',
- london = 'london',
- altair = 'altair',
- arrowGlacier = 'arrowGlacier',
- grayGlacier = 'grayGlacier',
- bellatrix = 'bellatrix',
- merge = 'merge',
- capella = 'capella',
shanghai = 'shanghai',
}
@@ -349,7 +290,6 @@ interface TransactionBase {
accessList?: AccessList;
common?: Common;
gas?: Numbers;
- gasPrice?: Numbers;
type?: Numbers;
maxFeePerGas?: Numbers;
maxPriorityFeePerGas?: Numbers;
@@ -400,12 +340,11 @@ export interface TransactionInfo extends Transaction {
readonly transactionIndex?: Numbers;
}
-export interface PopulatedUnsignedBaseTransaction {
+export interface PopulatedUnsignedEip1559Transaction {
from: Address;
to?: Address;
value: Numbers;
gas?: Numbers;
- gasPrice: Numbers;
type: Numbers;
input?: Bytes;
data?: Bytes;
@@ -416,50 +355,37 @@ export interface PopulatedUnsignedBaseTransaction {
chainId: Numbers;
common: Common;
gasLimit: Numbers;
-}
-
-export interface PopulatedUnsignedEip2930Transaction extends PopulatedUnsignedBaseTransaction {
accessList: AccessList;
-}
-
-export interface PopulatedUnsignedEip1559Transaction extends PopulatedUnsignedEip2930Transaction {
- gasPrice: never;
maxFeePerGas: Numbers;
maxPriorityFeePerGas: Numbers;
}
+
export type PopulatedUnsignedTransaction =
- | PopulatedUnsignedBaseTransaction
- | PopulatedUnsignedEip2930Transaction
- | PopulatedUnsignedEip1559Transaction;
+ PopulatedUnsignedEip1559Transaction;
export interface BlockBase<
ByteType,
- HexStringType,
+ ZPrefixedHexStringType,
NumberType,
extraDataType,
TransactionTypes,
logsBloomType,
> {
readonly parentHash: ByteType;
- readonly sha3Uncles: ByteType;
- readonly miner: HexStringType;
+ readonly miner: ZPrefixedHexStringType;
readonly stateRoot: ByteType;
readonly transactionsRoot: ByteType;
readonly receiptsRoot: ByteType;
readonly logsBloom?: logsBloomType;
- readonly difficulty?: NumberType;
readonly number: NumberType;
readonly gasLimit: NumberType;
readonly gasUsed: NumberType;
readonly timestamp: NumberType;
readonly extraData: extraDataType;
- readonly mixHash: ByteType;
- readonly nonce: NumberType;
- readonly totalDifficulty: NumberType;
- readonly baseFeePerGas?: NumberType;
+ readonly prevRandao: ByteType;
+ readonly baseFeePerGas: NumberType;
readonly size: NumberType;
readonly transactions: TransactionTypes;
- readonly uncles: Uncles;
readonly hash?: ByteType;
}
@@ -509,3 +435,36 @@ export interface Eip712TypedData {
readonly domain: Record;
readonly message: Record;
}
+
+/**
+ * To contain the gas Fee Data to be used with transactions.
+ *
+ * Typically you will only need `maxFeePerGas` and `maxPriorityFeePerGas` for a transaction following EIP-1559.
+ * However, if you want to get informed about the fees of last block, you can use `baseFeePerGas` too.
+ *
+ *
+ * @see https://eips.ethereum.org/EIPS/eip-1559
+ *
+ */
+export interface FeeData {
+ /**
+ * The baseFeePerGas returned from the last available block.
+ *
+ * However, the user will only pay (the future baseFeePerGas + the maxPriorityFeePerGas).
+ * And this value is just for getting informed about the fees of last block.
+ */
+ readonly baseFeePerGas?: Numbers;
+
+ /**
+ * The maximum fee that the user would be willing to pay per-gas.
+ *
+ * However, the user will only pay (the future baseFeePerGas + the maxPriorityFeePerGas).
+ * And the `maxFeePerGas` could be used to prevent paying more than it, if `baseFeePerGas` went too high.
+ */
+ readonly maxFeePerGas?: Numbers;
+
+ /**
+ * The validator's tip for including a transaction in a block.
+ */
+ readonly maxPriorityFeePerGas?: Numbers;
+}
\ No newline at end of file
diff --git a/packages/web3-utils/CHANGELOG.md b/packages/web3-utils/CHANGELOG.md
index 4213b98b..2ad5a7d4 100644
--- a/packages/web3-utils/CHANGELOG.md
+++ b/packages/web3-utils/CHANGELOG.md
@@ -33,129 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [4.0.1-alpha.1]
-
-### Added
-
-- Added and exported three reusable utility functions: `pollTillDefined`, `rejectIfTimeout` and `rejectIfConditionAtInterval` which are useful when dealing with promises that involves polling, rejecting after timeout or rejecting if a condition was met when calling repeatably at every time intervals.
-
-## [4.0.1-alpha.2]
-
-### Added
-
-- Export a new function `uuidV4` that generates a random v4 Uuid (#5373).
-- Enable passing a starting number, to increment based on it, for the Json Rpc Request `id` (#5652).
-- Export a new function `isPromise` that checks if an object is a promise (#5652).
-
-### Fixed
-
-- Use Uuid for the response id, to fix the issue "Responses get mixed up due to conflicting payload IDs" (#5373).
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-- Add SocketProvider class and Eip1193Provider abstract class (#5683)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Removed
-
-- Moved `TypedArray` to `web3-types` (was also duplicated at `web3-validator`) (#5771)
-- Removed support of `genesis` tag in `compareBlockNumbers` function (#5823)
-
-### Added
-
-- Added support of `safe` and `finalized` block tags (#5823)
-
-### Changed
-
-- `compareBlockNumbers` function now only supports comparison of both blocktags params ( except `earliest` vs number) or both block number params (#5842)
-- `SocketProvider` abstract class now resolves JSON RPC response errors instead of rejecting them (#5844)
-- Exposes the getter of `SocketConnection` in `SocketProvider` (#5891)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-### Changed
-
-- The types `FMT_NUMBER`, `NumberTypes`, `FMT_BYTES`, `ByteTypes`, `DataFormat`, `DEFAULT_RETURN_FORMAT`, `ETH_DATA_FORMAT` and `FormatType` moved to `web3-types`. (#5993)
-
-### Removed
-
-- Removed dependencies @ethereumjs/tx, @ethereumjs/common (#5963)
-
-## [4.0.1-rc.2]
-
-### Added
-
-- Optional `hexstrict` parameter added to numberToHex (#6004)
-
-### Changed
-
-- Replaced Buffer for Uint8Array (#6004)
-- The methods `hexToBytes`, `randomBytes` does not return type `Buffer` but type `Uint8Array` (#6004)
-- The methods `sha3` and `keccak256Wrapper` does not accept type `Buffer` but type `Uint8Array` (#6004)
-- The method `bytesToBuffer` has been removed for the usage of `bytesToUint8Array` (#6004)
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.3]
-
-### Fixed
-
-- BigInts pass validation within the method `numberToHex` (#6206)
-
-## [4.0.4]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.5]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.6]
-
-### Fixed
-
-- `soliditySha3()` with BigInt support
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-utils/README.md b/packages/web3-utils/README.md
index 78cce56e..8d9f8293 100644
--- a/packages/web3-utils/README.md
+++ b/packages/web3-utils/README.md
@@ -36,7 +36,7 @@ const Web3Utils = require('web3-utils');
console.log(Web3Utils);
{
sha3: function(){},
- soliditySha3: function(){},
+ hyperionSha3: function(){},
isAddress: function(){},
...
}
diff --git a/packages/web3-utils/package.json b/packages/web3-utils/package.json
index aa9b9c04..2d196fb3 100644
--- a/packages/web3-utils/package.json
+++ b/packages/web3-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@theqrl/web3-utils",
"sideEffects": false,
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
@@ -47,7 +47,7 @@
},
"devDependencies": {
"@humeris/espresso-shot": "^4.0.0",
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
@@ -62,9 +62,9 @@
"typescript": "^4.7.4"
},
"dependencies": {
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-validator": "^0.2.1",
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-validator": "^0.3.0",
"ethereum-cryptography": "^2.0.0"
},
"gitHead": "d4f3246946fec86d908a215b27568aa8faea88d7"
diff --git a/packages/web3-utils/src/converters.ts b/packages/web3-utils/src/converters.ts
index 300a799b..4b1e2ac0 100644
--- a/packages/web3-utils/src/converters.ts
+++ b/packages/web3-utils/src/converters.ts
@@ -19,7 +19,7 @@ import { keccak256 } from 'ethereum-cryptography/keccak.js';
import { bytesToUtf8, utf8ToBytes } from 'ethereum-cryptography/utils.js';
import { Address, Bytes, HexString, Numbers, ValueTypes } from '@theqrl/web3-types';
import {
- isAddress,
+ isAddressString,
isHex,
isHexStrict,
isNullish,
@@ -41,7 +41,7 @@ const expo10 = (expo: number) => base ** BigInt(expo);
// Ref: https://ethdocs.org/en/latest/ether.html
/** @internal */
-export const ethUnitMap = {
+export const zondUnitMap = {
noether: BigInt('0'),
wei: BigInt(1),
kwei: expo10(3),
@@ -71,7 +71,7 @@ export const ethUnitMap = {
tether: expo10(30),
};
-export type EtherUnits = keyof typeof ethUnitMap;
+export type EtherUnits = keyof typeof zondUnitMap;
/**
* Convert a value from bytes to Uint8Array
* @param data - Data to be converted
@@ -138,6 +138,53 @@ export const hexToBytes = (bytes: HexString): Uint8Array => {
return bytesToUint8Array(bytes);
};
+/**
+ * Convert an address string to a byte array
+ * @param hex - Address string to be converted
+ * @returns - The byte array representation of the input address string
+ *
+ * @example
+ * ```ts
+ * console.log(web3.utils.addressToBytes('Z7465737474657374746573747465737474657374'));
+ * > Uint8Array(20) [ 116, 101, 115, 116, 116, 101, 115, 116, 116, 101, 115, 116, 116, 101, 115, 116, 116, 101, 115, 116 ]
+ * ```
+ */
+export const addressToBytes = (value: Address): Uint8Array => {
+ return bytesToUint8Array(addressToHex(value));
+};
+
+/**
+ * Convert a hex string to an address string
+ * @param hex - Hex string to be converted
+ * @returns - The address representation of the input value
+ *
+ * @example
+ * ```ts
+ * console.log(web3.utils.hexToAddress('0x74657374123123131231231313a1231231112312'));
+ * > "Z74657374123123131231231313a1231231112312"
+ * ```
+ */
+export const hexToAddress = (value: HexString): Address => {
+ validator.validate(['hex'], [value]);
+ return value.replace('0x', 'Z');
+};
+
+/**
+ * Convert an address string to a hex string
+ * @param hex - Address string to be converted
+ * @returns - The hex representation of the input value
+ *
+ * @example
+ * ```ts
+ * console.log(web3.utils.addressToHex('Z74657374123123131231231313a1231231112312'));
+ * > "0x74657374123123131231231313a1231231112312"
+ * ```
+ */
+export const addressToHex = (value: Address): HexString => {
+ validator.validate(['address'], [value]);
+ return validatorUtils.addressToHex(value);
+};
+
/**
* Converts value to it's number representation
* @param value - Hex string to be converted
@@ -335,10 +382,6 @@ export const toHex = (
value: Numbers | Bytes | Address | boolean | object,
returnType?: boolean,
): HexString | ValueTypes => {
- if (typeof value === 'string' && isAddress(value)) {
- return returnType ? 'address' : `0x${value.toLowerCase().replace(/^0x/i, '')}`;
- }
-
if (typeof value === 'boolean') {
// eslint-disable-next-line no-nested-ternary
return returnType ? 'bool' : value ? '0x01' : '0x00';
@@ -368,6 +411,9 @@ export const toHex = (
if (isHex(value) && !isInt(value)) {
return returnType ? 'bytes' : `0x${value}`;
}
+ if (isAddressString(value)) {
+ return returnType ? 'address' : addressToHex(value);
+ }
if (!Number.isFinite(value)) {
return returnType ? 'string' : utf8ToHex(value);
@@ -464,7 +510,7 @@ export const toBigInt = (value: unknown): bigint => {
* ```
*/
export const fromWei = (number: Numbers, unit: EtherUnits): string => {
- const denomination = ethUnitMap[unit];
+ const denomination = zondUnitMap[unit];
if (!denomination) {
throw new InvalidUnitError(unit);
@@ -524,7 +570,7 @@ export const fromWei = (number: Numbers, unit: EtherUnits): string => {
export const toWei = (number: Numbers, unit: EtherUnits): string => {
validator.validate(['number'], [number]);
- const denomination = ethUnitMap[unit];
+ const denomination = zondUnitMap[unit];
if (!denomination) {
throw new InvalidUnitError(unit);
@@ -562,21 +608,21 @@ export const toWei = (number: Numbers, unit: EtherUnits): string => {
};
/**
- * Will convert an upper or lowercase Ethereum address to a checksum address.
+ * Will convert an upper or lowercase Zond address to a checksum address.
* @param address - An address string
* @returns The checksum address
* @example
* ```ts
- * web3.utils.toChecksumAddress('0xc1912fee45d61c87cc5ea59dae31190fffff232d');
- * > "0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d"
+ * web3.utils.toChecksumAddress('Zc1912fee45d61c87cc5ea59dae31190fffff232d');
+ * > "Zc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d"
* ```
*/
export const toChecksumAddress = (address: Address): string => {
- if (!isAddress(address, false)) {
+ if (!isAddressString(address, false)) {
throw new InvalidAddressError(address);
}
- const lowerCaseAddress = address.toLowerCase().replace(/^0x/i, '');
+ const lowerCaseAddress = address.toLowerCase().replace(/^z/i, '');
const hash = bytesToHex(keccak256(utf8ToBytes(lowerCaseAddress)));
@@ -586,7 +632,7 @@ export const toChecksumAddress = (address: Address): string => {
)
return ''; // // EIP-1052 if hash is equal to c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470, keccak was given empty data
- let checksumAddress = '0x';
+ let checksumAddress = 'Z';
const addressHash = hash.replace(/^0x/i, '');
diff --git a/packages/web3-utils/src/hash.ts b/packages/web3-utils/src/hash.ts
index daf88438..55f11eb0 100644
--- a/packages/web3-utils/src/hash.ts
+++ b/packages/web3-utils/src/hash.ts
@@ -34,7 +34,7 @@ import {
TypedObject,
TypedObjectAbbreviated,
} from '@theqrl/web3-types';
-import { isAddress, isNullish, isHexStrict } from '@theqrl/web3-validator';
+import { isAddressString, isNullish, isHexStrict } from '@theqrl/web3-validator';
import {
bytesToUint8Array,
bytesToHex,
@@ -43,6 +43,7 @@ import {
toHex,
toNumber,
utf8ToHex,
+ addressToHex,
} from './converters.js';
import { leftPad, rightPad, toTwosComplement } from './string_manipulation.js';
@@ -228,7 +229,7 @@ const bitLength = (value: bigint | number): number => {
* @param type - the input to pad
* @returns = the padded value
*/
-const solidityPack = (type: string, val: EncodingTypes): string => {
+const hyperionPack = (type: string, val: EncodingTypes): string => {
const value = val.toString();
if (type === 'string') {
if (typeof val === 'string') return utf8ToHex(val);
@@ -240,10 +241,10 @@ const solidityPack = (type: string, val: EncodingTypes): string => {
}
if (type === 'address') {
- if (!isAddress(value)) {
+ if (!isAddressString(value)) {
throw new InvalidAddressError(value);
}
- return value;
+ return addressToHex(value);
}
const name = elementaryName(type);
if (type.startsWith('uint')) {
@@ -307,17 +308,17 @@ const solidityPack = (type: string, val: EncodingTypes): string => {
* @param arg - the input to return the tightly packed value
* @returns - the tightly packed value
*/
-export const processSolidityEncodePackedArgs = (arg: Sha3Input): string => {
+export const processHyperionEncodePackedArgs = (arg: Sha3Input): string => {
const [type, val] = getType(arg);
// array case
if (Array.isArray(val)) {
// go through each element of the array and use map function to create new hexarg list
- const hexArg = val.map((v: Numbers | boolean) => solidityPack(type, v).replace('0x', ''));
+ const hexArg = val.map((v: Numbers | boolean) => hyperionPack(type, v).replace('0x', ''));
return hexArg.join('');
}
- const hexArg = solidityPack(type, val);
+ const hexArg = hyperionPack(type, val);
return hexArg.replace('0x', '');
};
@@ -326,12 +327,12 @@ export const processSolidityEncodePackedArgs = (arg: Sha3Input): string => {
*/
export const encodePacked = (...values: Sha3Input[]): string => {
const args = Array.prototype.slice.call(values);
- const hexArgs = args.map(processSolidityEncodePackedArgs);
+ const hexArgs = args.map(processHyperionEncodePackedArgs);
return `0x${hexArgs.join('').toLowerCase()}`;
};
/**
- * Will tightly pack values given in the same way solidity would then hash.
+ * Will tightly pack values given in the same way hyperion would then hash.
* returns a hash string, or null if input is empty
* @param values - the input to return the tightly packed values
* @returns - the keccack246 of the tightly packed values
@@ -339,26 +340,26 @@ export const encodePacked = (...values: Sha3Input[]): string => {
* @example
* ```ts
* console.log([{ type: 'string', value: '31323334' }]);
- * console.log(web3.utils.soliditySha3({ type: "string", value: "31323334" }));
+ * console.log(web3.utils.hyperionSha3({ type: "string", value: "31323334" }));
* > 0xf15f8da2ad27e486d632dc37d24912f634398918d6f9913a0a0ff84e388be62b
* ```
*/
-export const soliditySha3 = (...values: Sha3Input[]): string | undefined =>
+export const hyperionSha3 = (...values: Sha3Input[]): string | undefined =>
sha3(encodePacked(...values));
/**
- * Will tightly pack values given in the same way solidity would then hash.
+ * Will tightly pack values given in the same way hyperion would then hash.
* returns a hash string, if input is empty will return `0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470`
* @param values - the input to return the tightly packed values
* @returns - the keccack246 of the tightly packed values
*
* @example
* ```ts
- * console.log(web3.utils.soliditySha3Raw({ type: "string", value: "helloworld" }))
+ * console.log(web3.utils.hyperionSha3Raw({ type: "string", value: "helloworld" }))
* > 0xfa26db7ca85ead399216e7c6316bc50ed24393c3122b582735e7f3b0f91b93f0
* ```
*/
-export const soliditySha3Raw = (...values: TypedObject[] | TypedObjectAbbreviated[]): string =>
+export const hyperionSha3Raw = (...values: TypedObject[] | TypedObjectAbbreviated[]): string =>
sha3Raw(encodePacked(...values));
/**
diff --git a/packages/web3-utils/src/promise_helpers.ts b/packages/web3-utils/src/promise_helpers.ts
index 34d7875a..1b55abe3 100644
--- a/packages/web3-utils/src/promise_helpers.ts
+++ b/packages/web3-utils/src/promise_helpers.ts
@@ -17,6 +17,9 @@ along with web3.js. If not, see .
import { isNullish } from '@theqrl/web3-validator';
+export type Timer = ReturnType;
+export type Timeout = ReturnType;
+
/**
* An alternative to the node function `isPromise` that exists in `util/types` because it is not available on the browser.
* @param object - to check if it is a `Promise`
@@ -54,7 +57,7 @@ export async function waitWithTimeout(
timeout: number,
error?: Error,
): Promise {
- let timeoutId: NodeJS.Timeout | undefined;
+ let timeoutId: Timeout | undefined;
const result = await Promise.race([
awaitable instanceof Promise ? awaitable : awaitable(),
new Promise((resolve, reject) => {
@@ -71,19 +74,17 @@ export async function waitWithTimeout(
}
/**
* Repeatedly calls an async function with a given interval until the result of the function is defined (not undefined or null),
- * or until a timeout is reached.
+ * or until a timeout is reached. It returns promise and intervalId.
* @param func - The function to call.
* @param interval - The interval in milliseconds.
*/
-export async function pollTillDefined(
+export function pollTillDefinedAndReturnIntervalId(
func: AsyncFunction,
interval: number,
-): Promise> {
- const awaitableRes = waitWithTimeout(func, interval);
-
- let intervalId: NodeJS.Timer | undefined;
+): [Promise>, Timer] {
+ let intervalId: Timer | undefined;
const polledRes = new Promise>((resolve, reject) => {
- intervalId = setInterval(() => {
+ intervalId = setInterval(function intervalCallbackFunc(){
(async () => {
try {
const res = await waitWithTimeout(func, interval);
@@ -97,20 +98,28 @@ export async function pollTillDefined(
reject(error);
}
})() as unknown;
- }, interval);
+ return intervalCallbackFunc;}() // this will immediate invoke first call
+ , interval);
});
- // If the first call to awaitableRes succeeded, return the result
- const res = await awaitableRes;
- if (!isNullish(res)) {
- if (intervalId) {
- clearInterval(intervalId);
- }
- return res as unknown as Exclude;
- }
+ return [polledRes as unknown as Promise>, intervalId!];
+}
- return polledRes;
+/**
+ * Repeatedly calls an async function with a given interval until the result of the function is defined (not undefined or null),
+ * or until a timeout is reached.
+ * pollTillDefinedAndReturnIntervalId() function should be used instead of pollTillDefined if you need IntervalId in result.
+ * This function will be deprecated in next major release so use pollTillDefinedAndReturnIntervalId().
+ * @param func - The function to call.
+ * @param interval - The interval in milliseconds.
+ */
+export async function pollTillDefined(
+ func: AsyncFunction,
+ interval: number,
+): Promise> {
+ return pollTillDefinedAndReturnIntervalId(func, interval)[0];
}
+
/**
* Enforce a timeout on a promise, so that it can be rejected if it takes too long to complete
* @param timeout - The timeout to enforced in milliseconds.
@@ -122,14 +131,14 @@ export async function pollTillDefined(
* const [timerId, promise] = web3.utils.rejectIfTimeout(100, new Error('time out'));
* ```
*/
-export function rejectIfTimeout(timeout: number, error: Error): [NodeJS.Timer, Promise] {
- let timeoutId: NodeJS.Timer | undefined;
+export function rejectIfTimeout(timeout: number, error: Error): [Timer, Promise] {
+ let timeoutId: Timer | undefined;
const rejectOnTimeout = new Promise((_, reject) => {
timeoutId = setTimeout(() => {
reject(error);
}, timeout);
});
- return [timeoutId as unknown as NodeJS.Timer, rejectOnTimeout];
+ return [timeoutId!, rejectOnTimeout];
}
/**
* Sets an interval that repeatedly executes the given cond function with the specified interval between each call.
@@ -141,8 +150,8 @@ export function rejectIfTimeout(timeout: number, error: Error): [NodeJS.Timer, P
export function rejectIfConditionAtInterval(
cond: AsyncFunction,
interval: number,
-): [NodeJS.Timer, Promise] {
- let intervalId: NodeJS.Timer | undefined;
+): [Timer, Promise] {
+ let intervalId: Timer | undefined;
const rejectIfCondition = new Promise((_, reject) => {
intervalId = setInterval(() => {
(async () => {
@@ -154,5 +163,5 @@ export function rejectIfConditionAtInterval(
})() as unknown;
}, interval);
});
- return [intervalId as unknown as NodeJS.Timer, rejectIfCondition];
+ return [intervalId!, rejectIfCondition];
}
diff --git a/packages/web3-utils/src/validation.ts b/packages/web3-utils/src/validation.ts
index 2a75bd84..cba23f8d 100644
--- a/packages/web3-utils/src/validation.ts
+++ b/packages/web3-utils/src/validation.ts
@@ -17,93 +17,11 @@ along with web3.js. If not, see .
import { InvalidBlockError } from '@theqrl/web3-errors';
import {
- checkAddressCheckSum as checkAddressCheckSumValidator,
- isAddress as isAddressValidator,
isBlockTag,
- isBloom as isBloomValidator,
- isContractAddressInBloom as isContractAddressInBloomValidator,
- isHex as isHexValidator,
- isHexStrict as isHexStrictValidator,
- isInBloom as isInBloomValidator,
isNullish as isNullishValidator,
- isTopic as isTopicValidator,
- isTopicInBloom as isTopicInBloomValidator,
- isUserZondAddressInBloom as isUserZondAddressInBloomValidator,
} from '@theqrl/web3-validator';
import { BlockNumberOrTag, BlockTags } from '@theqrl/web3-types';
-/**
- * @deprecated Will be removed in next release. Please use `web3-validator` package instead.
- */
-export const isHexStrict = isHexStrictValidator;
-
-/**
- * returns true if input is a hexstring, number or bigint
- *
- * @deprecated Will be removed in next release. Please use `web3-validator` package instead.
- */
-export const isHex = isHexValidator;
-
-/**
- * Checks the checksum of a given address. Will also return false on non-checksum addresses.
- *
- * @deprecated Will be removed in next release. Please use `web3-validator` package instead.
- */
-export const checkAddressCheckSum = checkAddressCheckSumValidator;
-
-/**
- * Checks if a given string is a valid Zond address. It will also check the checksum, if the address has upper and lowercase letters.
- *
- * @deprecated Will be removed in next release. Please use `web3-validator` package instead.
- */
-export const isAddress = isAddressValidator;
-
-/**
- * Returns true if the bloom is a valid bloom
- * https://github.com/joshstevens19/ethereum-bloom-filters/blob/fbeb47b70b46243c3963fe1c2988d7461ef17236/src/index.ts#L7
- *
- * @deprecated Will be removed in next release. Please use `web3-validator` package instead.
- */
-export const isBloom = isBloomValidator;
-
-/**
- * Returns true if the value is part of the given bloom
- * note: false positives are possible.
- *
- * @deprecated Will be removed in next release. Please use `web3-validator` package instead.
- */
-export const isInBloom = isInBloomValidator;
-
-/**
- * Returns true if the zond users address is part of the given bloom note: false positives are possible.
- *
- * @deprecated Will be removed in next release. Please use `web3-validator` package instead.
- */
-export const isUserZondAddressInBloom = isUserZondAddressInBloomValidator;
-
-/**
- * Returns true if the contract address is part of the given bloom.
- * note: false positives are possible.
- *
- * @deprecated Will be removed in next release. Please use `web3-validator` package instead.
- */
-export const isContractAddressInBloom = isContractAddressInBloomValidator;
-
-/**
- * Checks if its a valid topic
- *
- * @deprecated Will be removed in next release. Please use `web3-validator` package instead.
- */
-export const isTopic = isTopicValidator;
-
-/**
- * Returns true if the topic is part of the given bloom.
- * note: false positives are possible.
- *
- * @deprecated Will be removed in next release. Please use `web3-validator` package instead.
- */
-export const isTopicInBloom = isTopicInBloomValidator;
-
/**
* Compares between block A and block B
* @param blockA - Block number or string
diff --git a/packages/web3-utils/src/web3_eip1193_provider.ts b/packages/web3-utils/src/web3_eip1193_provider.ts
index 934f03d9..f510388f 100644
--- a/packages/web3-utils/src/web3_eip1193_provider.ts
+++ b/packages/web3-utils/src/web3_eip1193_provider.ts
@@ -28,7 +28,7 @@ import { EIP1193ProviderRpcError } from '@theqrl/web3-errors';
import { toPayload } from './json_rpc.js';
/**
- * This is an abstract class, which extends {@link Web3BaseProvider} class. This class is used to implement a provider that adheres to the EIP-1193 standard for Ethereum providers.
+ * This is an abstract class, which extends {@link Web3BaseProvider} class. This class is used to implement a provider that adheres to the EIP-1193 standard for Zond providers.
*/
export abstract class Eip1193Provider<
API extends Web3APISpec = ZondExecutionAPI,
diff --git a/packages/web3-utils/test/fixtures/converters.ts b/packages/web3-utils/test/fixtures/converters.ts
index 3e5f3cb1..aa56dc91 100644
--- a/packages/web3-utils/test/fixtures/converters.ts
+++ b/packages/web3-utils/test/fixtures/converters.ts
@@ -15,7 +15,7 @@ You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { Address, Bytes, HexString, Numbers, ValueTypes } from '@theqrl/web3-types';
+import { Address, Bytes, HexString, Numbers, ValueTypes, ZPrefixedHexString } from '@theqrl/web3-types';
import { EtherUnits, hexToBytes } from '../../src/converters';
export const bytesToHexValidData: [Bytes, HexString][] = [
@@ -231,6 +231,10 @@ export const toHexValidData: [Numbers | Bytes | Address | boolean, [HexString, V
['0x123c', ['0x123c', 'bytes']],
[
'0x72fdb1c1ddd4c67804f42b93de95cf6a8c51d2d1',
+ ['0x72fdb1c1ddd4c67804f42b93de95cf6a8c51d2d1', 'bytes'],
+ ],
+ [
+ 'Z72fdb1c1ddd4c67804f42b93de95cf6a8c51d2d1',
['0x72fdb1c1ddd4c67804f42b93de95cf6a8c51d2d1', 'address'],
],
['-0x01', ['-0x1', 'int256']],
@@ -309,12 +313,12 @@ export const toWeiInvalidData: [[any, any], string][] = [
[['1234', 'uwei'], 'Invalid value given "uwei". Error: invalid unit.'],
];
export const toCheckSumValidData: [string, string][] = [
- ['0x0089d53f703f7e0843953d48133f74ce247184c2', '0x0089d53F703f7E0843953D48133f74cE247184c2'],
- ['0x5fbc2b6c19ee3dd5f9af96ff337ddc89e30ceaef', '0x5FBc2b6C19EE3DD5f9Af96ff337DDC89e30ceAef'],
- ['0xa54D3c09E34aC96807c1CC397404bF2B98DC4eFb', '0xa54d3c09E34aC96807c1CC397404bF2B98DC4eFb'],
+ ['Z0089d53f703f7e0843953d48133f74ce247184c2', 'Z0089d53F703f7E0843953D48133f74cE247184c2'],
+ ['Z5fbc2b6c19ee3dd5f9af96ff337ddc89e30ceaef', 'Z5FBc2b6C19EE3DD5f9Af96ff337DDC89e30ceAef'],
+ ['Za54D3c09E34aC96807c1CC397404bF2B98DC4eFb', 'Za54d3c09E34aC96807c1CC397404bF2B98DC4eFb'],
];
export const toCheckSumInvalidData: [string, string][] = [
- ['not an address', 'Invalid value given "not an address". Error: invalid ethereum address.'],
+ ['not an address', 'Invalid value given "not an address". Error: invalid zond address.'],
];
export const bytesToUint8ArrayInvalidData: [any, string][] = bytesToHexInvalidData;
@@ -342,3 +346,39 @@ export const toBigIntInvalidData: [any, string][] = [
['wwwww', ' Error: can not parse as number data'],
['zzzzee0xiiuu', ' Error: can not parse as number data'],
];
+
+export const addressToBytesValidData: [ZPrefixedHexString, Uint8Array][] = [
+ ['Z4848484848484848484848484848484848484848', new Uint8Array([72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72])],
+ ['Z3772377237723772377237723772377237723772', new Uint8Array([55, 114, 55, 114, 55, 114, 55, 114, 55, 114, 55, 114, 55, 114, 55, 114, 55, 114, 55, 114])],
+ ['Z480c480c480c480c480c480c480c480c480c480c', new Uint8Array([72, 12, 72, 12, 72, 12, 72, 12, 72, 12, 72, 12, 72, 12, 72, 12, 72, 12, 72, 12])],
+];
+
+export const addressToHexValidData: [ZPrefixedHexString, HexString][] = [
+ ['Z4848484848484848484848484848484848484848', '0x4848484848484848484848484848484848484848'],
+ ['Z3772377237723772377237723772377237723772', '0x3772377237723772377237723772377237723772'],
+ ['Z480c480c480c480c480c480c480c480c480c480c', '0x480c480c480c480c480c480c480c480c480c480c'],
+ ['Z9c129c129c129c129c129c129c129c129c129c12', '0x9c129c129c129c129c129c129c129c129c129c12'],
+ ['Z12c612c612c612c612c612c612c612c612c612c6', '0x12c612c612c612c612c612c612c612c612c612c6'],
+];
+
+export const invalidAddressData: [any, string][] = [
+ ['Z1', 'value "Z1" at "/0" must pass "address" validation'],
+ ['ZE247a45c287191d435A8a5D72A7C8dc030451E9F', 'value "ZE247a45c287191d435A8a5D72A7C8dc030451E9F" at "/0" must pass "address" validation'], // Invalid checksum
+ ['-Z407d73d8a49eeb85d32cf465507dd71d507100c1', 'value "-Z407d73d8a49eeb85d32cf465507dd71d507100c1" at "/0" must pass "address" validation'],
+];
+
+export const hexToAddressValidData: [HexString, ZPrefixedHexString][] = [
+ ['0x4848484848484848484848484848484848484848', 'Z4848484848484848484848484848484848484848'],
+ ['0x3772377237723772377237723772377237723772', 'Z3772377237723772377237723772377237723772'],
+ ['0x480c480c480c480c480c480c480c480c480c480c', 'Z480c480c480c480c480c480c480c480c480c480c'],
+ ['0x9c129c129c129c129c129c129c129c129c129c12', 'Z9c129c129c129c129c129c129c129c129c129c12'],
+ ['0x12c612c612c612c612c612c612c612c612c612c6', 'Z12c612c612c612c612c612c612c612c612c612c6'],
+];
+
+export const hexToAddressInvalidData: [HexString, string][] = [
+ ['1a', 'value "1a" at "/0" must pass "hex" validation'],
+ ['0xffdg', 'value "0xffdg" at "/0" must pass "hex" validation'],
+ ['xfff', 'value "xfff" at "/0" must pass "hex" validation'],
+ ['-123', 'value "-123" at "/0" must pass "hex" validation'],
+ ['-9x123', 'value "-9x123" at "/0" must pass "hex" validation'],
+];
\ No newline at end of file
diff --git a/packages/web3-utils/test/fixtures/hash.ts b/packages/web3-utils/test/fixtures/hash.ts
index 51b62321..9f96d4fd 100644
--- a/packages/web3-utils/test/fixtures/hash.ts
+++ b/packages/web3-utils/test/fixtures/hash.ts
@@ -69,7 +69,7 @@ export const sha3RawValidData: [Bytes, string | undefined][] = [
export const compareSha3JSRawValidData: [string, string][] = [...compareSha3JSValidData];
-export const soliditySha3Data: [TypedObject[] | TypedObjectAbbreviated[], string | undefined][] = [
+export const hyperionSha3Data: [TypedObject[] | TypedObjectAbbreviated[], string | undefined][] = [
[
[{ type: 'string', value: '31323334' }],
'0xf15f8da2ad27e486d632dc37d24912f634398918d6f9913a0a0ff84e388be62b',
@@ -128,7 +128,7 @@ export const soliditySha3Data: [TypedObject[] | TypedObjectAbbreviated[], string
'0x661136a4267dba9ccdf6bfddb7c00e714de936674c4bdb065a531cf1cb15c7fc',
],
[
- [{ type: 'address', value: '0x407D73d8a49eeb85D32Cf465507dd71d507100c1' }],
+ [{ type: 'address', value: 'Z407D73d8a49eeb85D32Cf465507dd71d507100c1' }],
'0x4e8ebbefa452077428f93c9520d3edd60594ff452a29ac7d2ccc11d47f3ab95b',
],
[
@@ -139,7 +139,7 @@ export const soliditySha3Data: [TypedObject[] | TypedObjectAbbreviated[], string
[
{ t: 'string', v: 'Hello!%' },
{ t: 'int8', v: -23 },
- { t: 'address', v: '0x85F43D8a49eeB85d32Cf465507DD71d507100C1d' },
+ { t: 'address', v: 'Z85F43D8a49eeB85d32Cf465507DD71d507100C1d' },
],
'0xa13b31627c1ed7aaded5aecec71baf02fe123797fffd45e662eac8e06fbe4955',
],
@@ -149,23 +149,23 @@ export const soliditySha3Data: [TypedObject[] | TypedObjectAbbreviated[], string
],
];
-export const soliditySha3ValidData: [
+export const hyperionSha3ValidData: [
TypedObject[] | TypedObjectAbbreviated[],
string | undefined,
-][] = [...soliditySha3Data, [[{ t: 'string', v: '' }], undefined]];
+][] = [...hyperionSha3Data, [[{ t: 'string', v: '' }], undefined]];
-export const soliditySha3RawValidData: [
+export const hyperionSha3RawValidData: [
TypedObject[] | TypedObjectAbbreviated[],
string | undefined,
][] = [
- ...soliditySha3Data,
+ ...hyperionSha3Data,
[
[{ t: 'string', v: '' }],
'0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470',
],
];
-export const soliditySha3InvalidData: [any, string][] = [
+export const hyperionSha3InvalidData: [any, string][] = [
[{ t: 'int8', v: 500 }, 'Invalid value given "500". Error: value is larger than size.'],
[
{ t: 'bytes', v: '0x407D73d8a49eeb85D32Cf465507dd71d507100c' },
@@ -193,7 +193,7 @@ export const encodePackData: [TypedObject[] | TypedObjectAbbreviated[], any][] =
],
[[{ type: 'string', value: '' }], '0x'],
[
- [{ type: 'address', value: '0xc1912fee45d61c87cc5ea59dae31190fffff232d' }],
+ [{ type: 'address', value: 'Zc1912fee45d61c87cc5ea59dae31190fffff232d' }],
'0xc1912fee45d61c87cc5ea59dae31190fffff232d',
],
[[{ type: 'bool', value: true }], '0x01'],
@@ -219,7 +219,7 @@ export const encodePackData: [TypedObject[] | TypedObjectAbbreviated[], any][] =
'0x44555ffffffffdd2222222222222244445565535220000000000000000000000',
],
[
- [{ v: '0x407D73d8a49eeb85D32Cf465507dd71d507100c1', t: 'address' }],
+ [{ v: 'Z407D73d8a49eeb85D32Cf465507dd71d507100c1', t: 'address' }],
'0x407d73d8a49eeb85d32cf465507dd71d507100c1',
],
[
@@ -265,11 +265,11 @@ export const encodePackedInvalidData: [any, string][] = [
[{ type: 'boolean', value: 1234 }, 'Invalid value given "1234". Error: not a valid boolean.'],
[
{ type: 'address', value: 1234 },
- 'Invalid value given "1234". Error: invalid ethereum address',
+ 'Invalid value given "1234". Error: invalid zond address',
],
[
{ type: 'address', value: '0x2' },
- 'Invalid value given "0x2". Error: invalid ethereum address',
+ 'Invalid value given "0x2". Error: invalid zond address',
],
[{ type: 'uint612', value: 13 }, 'Invalid value given "13". Error: invalid size given.'],
[
@@ -305,7 +305,7 @@ export const elementaryNameValidData: [any, string][] = [
['int256', '256'],
];
-export const soliditySha3BigIntValidData: [Sha3Input[], string][] = [
+export const hyperionSha3BigIntValidData: [Sha3Input[], string][] = [
[[3434], '0xf219fa5590f999dc677e94dd9cf99cf14103d2f4323898edb31db982d5909687'],
[[BigInt(3434)], '0xf219fa5590f999dc677e94dd9cf99cf14103d2f4323898edb31db982d5909687'],
[
diff --git a/packages/web3-utils/test/fixtures/string_manipulation.ts b/packages/web3-utils/test/fixtures/string_manipulation.ts
index 6f1b141d..ac9f82ed 100644
--- a/packages/web3-utils/test/fixtures/string_manipulation.ts
+++ b/packages/web3-utils/test/fixtures/string_manipulation.ts
@@ -84,7 +84,7 @@ export const fromTwosComplementData: [[Numbers, number], number | bigint][] = [
];
export const toTwosComplementInvalidData: [[Numbers, number], string][] = [
- // solidity only store 32 bytes numbers
+ // hyperion only store 32 bytes numbers
[
['0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00', 64],
'value "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00" at "/0" must pass "int" validation',
diff --git a/packages/web3-utils/test/unit/converters.test.ts b/packages/web3-utils/test/unit/converters.test.ts
index 88e2f4c2..e40488f4 100644
--- a/packages/web3-utils/test/unit/converters.test.ts
+++ b/packages/web3-utils/test/unit/converters.test.ts
@@ -40,6 +40,9 @@ import {
toChecksumAddress,
bytesToUint8Array,
toBigInt,
+ addressToBytes,
+ addressToHex,
+ hexToAddress,
} from '../../src/converters';
import {
@@ -71,6 +74,11 @@ import {
toBigIntInvalidData,
toCheckSumInvalidData,
numberToHexstrictValidData,
+ addressToBytesValidData,
+ addressToHexValidData,
+ hexToAddressValidData,
+ hexToAddressInvalidData,
+ invalidAddressData,
} from '../fixtures/converters';
describe('converters', () => {
@@ -102,6 +110,48 @@ describe('converters', () => {
});
});
+ describe('addressToHex', () => {
+ describe('valid cases', () => {
+ it.each(addressToHexValidData)('%s', (input, output) => {
+ expect(addressToHex(input)).toEqual(output);
+ });
+ });
+
+ describe('invalid cases', () => {
+ it.each(invalidAddressData)('%s', (input, output) => {
+ expect(() => addressToHex(input)).toThrow(output);
+ });
+ });
+ });
+
+ describe('hexToAddress', () => {
+ describe('valid cases', () => {
+ it.each(hexToAddressValidData)('%s', (input, output) => {
+ expect(hexToAddress(input)).toEqual(output);
+ });
+ });
+
+ describe('invalid cases', () => {
+ it.each(hexToAddressInvalidData)('%s', (input, output) => {
+ expect(() => hexToAddress(input)).toThrow(output);
+ });
+ });
+ });
+
+ describe('addressToBytes', () => {
+ describe('valid cases', () => {
+ it.each(addressToBytesValidData)('%s', (input, output) => {
+ expect(addressToBytes(input)).toEqual(output);
+ });
+ });
+
+ describe('invalid cases', () => {
+ it.each(invalidAddressData)('%s', (input, output) => {
+ expect(() => addressToBytes(input)).toThrow(output);
+ });
+ });
+ });
+
describe('numberToHex', () => {
describe('valid cases', () => {
it.each(numberToHexValidData)('%s', (input, output) => {
diff --git a/packages/web3-utils/test/unit/formatter.test.ts b/packages/web3-utils/test/unit/formatter.test.ts
index 8426d384..12e4fcf1 100644
--- a/packages/web3-utils/test/unit/formatter.test.ts
+++ b/packages/web3-utils/test/unit/formatter.test.ts
@@ -39,25 +39,20 @@ type TestTransactionInfoType = {
type TestBlockType = {
readonly parentHash: Bytes;
- readonly sha3Uncles: Bytes;
readonly miner: Bytes;
readonly stateRoot: Bytes;
readonly transactionsRoot: Bytes;
readonly receiptsRoot: Bytes;
readonly logsBloom?: Bytes;
- readonly difficulty?: Numbers;
readonly number?: Numbers;
readonly gasLimit: Numbers;
readonly gasUsed: Numbers;
readonly timestamp: Numbers;
readonly extraData: Bytes;
- readonly mixHash: Bytes;
- readonly nonce?: Numbers;
- readonly totalDifficulty: Numbers;
+ readonly prevRandao: Bytes;
readonly baseFeePerGas?: Numbers;
readonly size: Numbers;
readonly transactions: Bytes[] | TestTransactionInfoType[];
- readonly uncles: Bytes[];
readonly hash?: Bytes;
};
@@ -298,21 +293,17 @@ describe('formatter', () => {
return expectTypeOf().toBe<{
readonly parentHash: string;
- readonly sha3Uncles: string;
readonly miner: string;
readonly stateRoot: string;
readonly transactionsRoot: string;
readonly receiptsRoot: string;
readonly logsBloom?: string;
- readonly difficulty?: string;
readonly number?: string;
readonly gasLimit: string;
readonly gasUsed: string;
readonly timestamp: string;
readonly extraData: string;
- readonly mixHash: string;
- readonly nonce?: string;
- readonly totalDifficulty: string;
+ readonly prevRandao: string;
readonly baseFeePerGas?: string;
readonly size: string;
readonly transactions:
@@ -324,7 +315,6 @@ describe('formatter', () => {
readonly hash: string;
readonly transactionIndex?: string;
}[];
- readonly uncles: string[];
readonly hash?: string;
}>();
});
@@ -339,21 +329,17 @@ describe('formatter', () => {
return expectTypeOf().toBe<{
readonly parentHash: Uint8Array;
- readonly sha3Uncles: Uint8Array;
readonly miner: Uint8Array;
readonly stateRoot: Uint8Array;
readonly transactionsRoot: Uint8Array;
readonly receiptsRoot: Uint8Array;
readonly logsBloom?: Uint8Array;
- readonly difficulty?: bigint;
readonly number?: bigint;
readonly gasLimit: bigint;
readonly gasUsed: bigint;
readonly timestamp: bigint;
readonly extraData: Uint8Array;
- readonly mixHash: Uint8Array;
- readonly nonce?: bigint;
- readonly totalDifficulty: bigint;
+ readonly prevRandao: Uint8Array;
readonly baseFeePerGas?: bigint;
readonly size: bigint;
readonly transactions:
@@ -365,7 +351,6 @@ describe('formatter', () => {
readonly hash: Uint8Array;
readonly transactionIndex?: bigint;
}[];
- readonly uncles: Uint8Array[];
readonly hash?: Uint8Array;
}>();
},
@@ -381,21 +366,17 @@ describe('formatter', () => {
return expectTypeOf().toBe<{
readonly parentHash: Uint8Array;
- readonly sha3Uncles: Uint8Array;
readonly miner: Uint8Array;
readonly stateRoot: Uint8Array;
readonly transactionsRoot: Uint8Array;
readonly receiptsRoot: Uint8Array;
readonly logsBloom?: Uint8Array;
- readonly difficulty?: number;
readonly number?: number;
readonly gasLimit: number;
readonly gasUsed: number;
readonly timestamp: number;
readonly extraData: Uint8Array;
- readonly mixHash: Uint8Array;
- readonly nonce?: number;
- readonly totalDifficulty: number;
+ readonly prevRandao: Uint8Array;
readonly baseFeePerGas?: number;
readonly size: number;
readonly transactions:
@@ -407,7 +388,6 @@ describe('formatter', () => {
readonly hash: Uint8Array;
readonly transactionIndex?: number;
}[];
- readonly uncles: Uint8Array[];
readonly hash?: Uint8Array;
}>();
},
diff --git a/packages/web3-utils/test/unit/hash.test.ts b/packages/web3-utils/test/unit/hash.test.ts
index d381e3c4..46c2011b 100644
--- a/packages/web3-utils/test/unit/hash.test.ts
+++ b/packages/web3-utils/test/unit/hash.test.ts
@@ -19,24 +19,24 @@ import { keccak256 } from 'js-sha3';
import {
sha3,
sha3Raw,
- soliditySha3,
- soliditySha3Raw,
+ hyperionSha3,
+ hyperionSha3Raw,
encodePacked,
keccak256 as web3keccak256,
} from '../../src/hash';
import {
sha3Data,
sha3ValidData,
- soliditySha3RawValidData,
+ hyperionSha3RawValidData,
sha3RawValidData,
- soliditySha3ValidData,
- soliditySha3InvalidData,
+ hyperionSha3ValidData,
+ hyperionSha3InvalidData,
compareSha3JSValidData,
compareSha3JSRawValidData,
encodePackData,
encodePackedInvalidData,
keccak256ValidData,
- soliditySha3BigIntValidData,
+ hyperionSha3BigIntValidData,
} from '../fixtures/hash';
describe('hash', () => {
@@ -73,28 +73,28 @@ describe('hash', () => {
});
});
- describe('soliditySha3', () => {
+ describe('hyperionSha3', () => {
describe('valid cases', () => {
- it.each(soliditySha3ValidData)('%s', (input, output) => {
- expect(soliditySha3(...input)).toEqual(output);
+ it.each(hyperionSha3ValidData)('%s', (input, output) => {
+ expect(hyperionSha3(...input)).toEqual(output);
});
});
describe('invalid cases', () => {
- it.each(soliditySha3InvalidData)('%s', (input, output) => {
- expect(() => soliditySha3(input)).toThrow(output);
+ it.each(hyperionSha3InvalidData)('%s', (input, output) => {
+ expect(() => hyperionSha3(input)).toThrow(output);
});
});
});
- describe('soliditySha3Raw', () => {
+ describe('hyperionSha3Raw', () => {
describe('valid cases', () => {
- it.each(soliditySha3RawValidData)('%s', (input, output) => {
- expect(soliditySha3Raw(...input)).toEqual(output);
+ it.each(hyperionSha3RawValidData)('%s', (input, output) => {
+ expect(hyperionSha3Raw(...input)).toEqual(output);
});
});
describe('invalid cases', () => {
- it.each(soliditySha3InvalidData)('%s', (input, output) => {
- expect(() => soliditySha3Raw(input)).toThrow(output);
+ it.each(hyperionSha3InvalidData)('%s', (input, output) => {
+ expect(() => hyperionSha3Raw(input)).toThrow(output);
});
});
});
@@ -121,7 +121,7 @@ describe('hash', () => {
describe('extra types supporting', () => {
it('object', () => {
- const res = soliditySha3({
+ const res = hyperionSha3({
historicBlock: {
hash: '0xcba0b90a5e65512202091c12a2e3b328f374715b9f1c8f32cb4600c726fe2aa6',
height: 1,
@@ -131,21 +131,21 @@ describe('hash', () => {
expect(res).toBe('0x00203462b63e3a8ca15da715e490c676b0e370f47823e31383fe43c25da3b78d');
});
it('object in string', () => {
- const res = soliditySha3(
- '{"contents":"pragma solidity >=0.4.21 <0.6.0;\\n\\ncontract Migrations {\\n address public owner;\\n uint public last_completed_migration;\\n\\n constructor() public {\\n owner = msg.sender;\\n }\\n\\n modifier restricted() {\\n if (msg.sender == owner) _;\\n }\\n\\n function setCompleted(uint completed) public restricted {\\n last_completed_migration = completed;\\n }\\n\\n function upgrade(address new_address) public restricted {\\n Migrations upgraded = Migrations(new_address);\\n upgraded.setCompleted(last_completed_migration);\\n }\\n}\\n","sourcePath":"/Users/gnidan/src/work/reproduce/2019/01/21/artifacts/contracts/Migrations.sol"}',
+ const res = hyperionSha3(
+ '{"contents":"pragma hyperion >=0.4.21 <0.6.0;\\n\\ncontract Migrations {\\n address public owner;\\n uint public last_completed_migration;\\n\\n constructor() public {\\n owner = msg.sender;\\n }\\n\\n modifier restricted() {\\n if (msg.sender == owner) _;\\n }\\n\\n function setCompleted(uint completed) public restricted {\\n last_completed_migration = completed;\\n }\\n\\n function upgrade(address new_address) public restricted {\\n Migrations upgraded = Migrations(new_address);\\n upgraded.setCompleted(last_completed_migration);\\n }\\n}\\n","sourcePath":"/Users/gnidan/src/work/reproduce/2019/01/21/artifacts/contracts/Migrations.hyp"}',
);
- expect(res).toBe('0xdb092e2751b8dcb7c8509baade3c0ac290414a71685823c3cbeb28667970b0bd');
+ expect(res).toBe('0xc8a294f5901a17c159d7d0c29fb02ea8d207f15e1879d0955d059eb6486c0dd6');
});
it('another object in string', () => {
- const res = soliditySha3(
+ const res = hyperionSha3(
'{"bytes":"608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610314806100606000396000f3fe608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100b85780638da5cb5b146100e3578063fdacd5761461013a575b600080fd5b34801561007357600080fd5b506100b66004803603602081101561008a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610175565b005b3480156100c457600080fd5b506100cd61025d565b6040518082815260200191505060405180910390f35b3480156100ef57600080fd5b506100f8610263565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014657600080fd5b506101736004803603602081101561015d57600080fd5b8101908080359060200190929190505050610288565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561025a5760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561024057600080fd5b505af1158015610254573d6000803e3d6000fd5b50505050505b50565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102e557806001819055505b5056fea165627a7a7230582013359aba5684f88626fb6a58a003236e309ef1462172af4afb4afb9bd2532b510029","linkReferences":[]}',
);
expect(res).toBe('0x46e99868594ceb46b7cd37e4b33d635f12a7751671f8c51dd8218fa0dcf82901');
});
- describe('BigInt soliditySha3', () => {
- it.each(soliditySha3BigIntValidData)('%s', (input, output) => {
- expect(soliditySha3(...input)).toEqual(output);
+ describe('BigInt hyperionSha3', () => {
+ it.each(hyperionSha3BigIntValidData)('%s', (input, output) => {
+ expect(hyperionSha3(...input)).toEqual(output);
});
});
});
diff --git a/packages/web3-utils/test/unit/random.test.ts b/packages/web3-utils/test/unit/random.test.ts
index 803c423c..862750d7 100644
--- a/packages/web3-utils/test/unit/random.test.ts
+++ b/packages/web3-utils/test/unit/random.test.ts
@@ -15,7 +15,7 @@ You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { isHexStrict } from '../../src/validation';
+import { isHexStrict } from '@theqrl/web3-validator';
import { randomHex } from '../../src/random';
import { randomHexData } from '../fixtures/random';
diff --git a/packages/web3-validator/CHANGELOG.md b/packages/web3-validator/CHANGELOG.md
index 394d1ac8..2ad5a7d4 100644
--- a/packages/web3-validator/CHANGELOG.md
+++ b/packages/web3-validator/CHANGELOG.md
@@ -33,118 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [0.1.1-alpha.1]
-
-### Removed
-
-- Removed direct function `toJSON()` in `Web3ValidatorError` class as its available via base class (#5435)
-
-## [0.1.1-alpha.2]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-### Fixed
-
-- Fix `isHex`returning `false` for `-123`, fix `isHexStrict` returning `true` for `-0x`, and fix `isHex` returning `true` for empty strings `` (#5373).
-
-## [0.1.1-alpha.3]
-
-### Fixed
-
-- Fix issue when importing `web3-validator` package within browser environments (Webpack minified filename changed from `index.min.js` to `web3-validator.min.js`) (#5710)
-
-## [0.1.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-## [0.1.1-alpha.5]
-
-### Removed
-
-- `build` entry from `package.json` (#5755)
-
-## [1.0.0-rc.0]
-
-### Removed
-
-- Moved `TypedArray` to `web3-types` (was also duplicated at `web3-utils`) (#5771)
-
-### Added
-
-- Added support of `safe` and `finalized` block tags in `isBlockTag` method (#5823)
-
-## [1.0.0-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-- Added functions `isHexString`, `isHexPrefixed`, `validateNoLeadingZeroes` (#5963)
-
-## [1.0.0-rc.2]
-
-### Changed
-
-- Replaced Buffer for Uint8Array (#6004)
-
-### Removed
-
-- `Web3ValidationErrorObject` type is now exported from `web3-types` package (#6102)
-
-## [1.0.0]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 1.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [1.0.1]
-
-### Changed
-
-- Dependencies updated
-
-## [1.0.2]
-
-### Changed
-
-- Dependencies updated
-
-## [2.0.0]
-
-### Changed
-
-- Replace `is-my-json-valid` with `zod` dependency. Related code was changed (#6264)
-- Types `ValidationError` and `JsonSchema` were changed (#6264)
-
-### Removed
-
-- Type `RawValidationError` was removed (#6264)
-
-### Added
-
-- Added `json-schema` as a main json schema type (#6264)
-
-## [2.0.1]
-
-### Fixed
-
-- ESM import bug (#6359)
-
-## [2.0.2]
-
-### Changed
-
-- Dependencies updated
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-validator/README.md b/packages/web3-validator/README.md
index 885d7c45..f8e75959 100644
--- a/packages/web3-validator/README.md
+++ b/packages/web3-validator/README.md
@@ -54,16 +54,16 @@ Following eth types are supported to validate.
| Type | Input As | Description |
| ----- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| uint | `number`, `string`, `HexString` | Unsigned integer, all ethereum compatible variants are also supported e.g. `uint8`, `uint256`. You can also use array specifiers as `uint[]` or `uint[2]` |
-| int | `number`, `string`, `HexString` | Signed integer, all ethereum compatible variants are also supported e.g. `int8`, `int256`. You can also use array specifiers as `int[]` or `int[2]` |
+| uint | `number`, `string`, `HexString` | Unsigned integer, all zond compatible variants are also supported e.g. `uint8`, `uint256`. You can also use array specifiers as `uint[]` or `uint[2]` |
+| int | `number`, `string`, `HexString` | Signed integer, all zond compatible variants are also supported e.g. `int8`, `int256`. You can also use array specifiers as `int[]` or `int[2]` |
| bytes | `HexString`, `Uint8Array` | Raw bytes. You can also use fixed length bytes as `bytes[2]` |
| string | `string` | String values |
-| address | `string`, `HexString` | Ethereum network compatible address |
+| address | `string`, `HexString` | Zond network compatible address |
| bloom | `string`, `HexString` | Check if a given string is a Eth bloom |
| tuple | `array` | You can specify any tuple as nested arrays. e.g. `['uint', 'string']`. For a custom tuple or array tuple you can use syntax e.g. `['tuple[3]', ['uint', 'string']]` |
-For the ethereum compatible data values should be passed as arrays e.g. for schema `['uint', 'string']` value should be passed as `[2, 'my-string']`.
+For the zond compatible data values should be passed as arrays e.g. for schema `['uint', 'string']` value should be passed as `[2, 'my-string']`.
You can also pass full ABI schema for the validation. e.g.
diff --git a/packages/web3-validator/package.json b/packages/web3-validator/package.json
index e1bba711..c18421e0 100644
--- a/packages/web3-validator/package.json
+++ b/packages/web3-validator/package.json
@@ -1,6 +1,6 @@
{
"name": "@theqrl/web3-validator",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
@@ -48,14 +48,14 @@
"test:integration": "jest --config=./test/integration/jest.config.js --passWithNoTests"
},
"dependencies": {
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
"ethereum-cryptography": "^2.0.0",
"util": "^0.12.5",
"zod": "^3.21.4"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
diff --git a/packages/web3-validator/src/formats.ts b/packages/web3-validator/src/formats.ts
index 0e09c092..1afa08c4 100644
--- a/packages/web3-validator/src/formats.ts
+++ b/packages/web3-validator/src/formats.ts
@@ -16,7 +16,7 @@ along with web3.js. If not, see .
*/
import { Filter } from '@theqrl/web3-types';
import { ValidInputTypes } from './types.js';
-import { isAddress } from './validation/address.js';
+import { isAddressString } from './validation/address.js';
import { isBlockNumber, isBlockNumberOrTag, isBlockTag } from './validation/block.js';
import { isBloom } from './validation/bloom.js';
import { isBoolean } from './validation/boolean.js';
@@ -26,7 +26,7 @@ import { isHexStrict, isString } from './validation/string.js';
import { isNumber, isInt, isUInt } from './validation/numbers.js';
const formats: { [key: string]: (data: unknown) => boolean } = {
- address: (data: unknown) => isAddress(data as ValidInputTypes),
+ address: (data: unknown) => isAddressString(data as string),
bloom: (data: unknown) => isBloom(data as ValidInputTypes),
blockNumber: (data: unknown) => isBlockNumber(data as string | number | bigint),
blockTag: (data: unknown) => isBlockTag(data as string),
@@ -41,8 +41,7 @@ const formats: { [key: string]: (data: unknown) => boolean } = {
string: (data: unknown) => isString(data as ValidInputTypes),
};
// generate formats for all numbers types
-for (let i = 3; i <= 8; i += 1) {
- const bitSize = 2 ** i;
+for (let bitSize = 8; bitSize <= 256; bitSize += 8) {
formats[`int${bitSize}`] = data => isInt(data as ValidInputTypes, { bitSize });
formats[`uint${bitSize}`] = data => isUInt(data as ValidInputTypes, { bitSize });
}
diff --git a/packages/web3-validator/src/utils.ts b/packages/web3-validator/src/utils.ts
index 4be707b9..08f497e3 100644
--- a/packages/web3-validator/src/utils.ts
+++ b/packages/web3-validator/src/utils.ts
@@ -27,6 +27,7 @@ import {
import { isAbiParameterSchema } from './validation/abi.js';
import { isHexStrict } from './validation/string.js';
import { Web3ValidatorError } from './errors.js';
+import { isAddressString } from './validation/address.js';
const extraTypes = ['hex', 'number', 'blockNumber', 'blockNumberOrTag', 'filter', 'bloom'];
@@ -390,6 +391,17 @@ export const hexToNumber = (value: string): bigint | number => {
return negative ? -1 * Number(num) : Number(num);
};
+/**
+ * Converts value to it's hex representation
+ */
+export const addressToHex = (value: string): string => {
+ if (!isAddressString(value)) {
+ throw new Error('Invalid address string');
+ }
+ return value.replace('Z', '0x');
+};
+
+
/**
* Converts value to it's hex representation
*/
diff --git a/packages/web3-validator/src/validation/address.ts b/packages/web3-validator/src/validation/address.ts
index e978f7f9..c4c60b95 100644
--- a/packages/web3-validator/src/validation/address.ts
+++ b/packages/web3-validator/src/validation/address.ts
@@ -17,16 +17,14 @@ along with web3.js. If not, see .
import { keccak256 } from 'ethereum-cryptography/keccak.js';
import { utf8ToBytes } from 'ethereum-cryptography/utils.js';
-import { ValidInputTypes } from '../types.js';
import { uint8ArrayToHexString } from '../utils.js';
-import { isHexStrict } from './string.js';
/**
* Checks the checksum of a given address. Will also return false on non-checksum addresses.
*/
export const checkAddressCheckSum = (data: string): boolean => {
- if (!/^(0x)?[0-9a-f]{40}$/i.test(data)) return false;
- const address = data.slice(2);
+ if (!/^Z[0-9a-f]{40}$/i.test(data)) return false;
+ const address = data.slice(1);
const updatedData = utf8ToBytes(address.toLowerCase());
const addressHash = uint8ArrayToHexString(keccak256(updatedData)).slice(2);
@@ -46,32 +44,22 @@ export const checkAddressCheckSum = (data: string): boolean => {
/**
* Checks if a given string is a valid Zond address. It will also check the checksum, if the address has upper and lowercase letters.
*/
-export const isAddress = (value: ValidInputTypes, checkChecksum = true) => {
- if (typeof value !== 'string' && !(value instanceof Uint8Array)) {
+export const isAddressString = (value: string, checkChecksum = true) => {
+ if (typeof value !== 'string') {
return false;
}
- let valueToCheck: string;
-
- if (value instanceof Uint8Array) {
- valueToCheck = uint8ArrayToHexString(value);
- } else if (typeof value === 'string' && !isHexStrict(value)) {
- valueToCheck = value.toLowerCase().startsWith('0x') ? value : `0x${value}`;
- } else {
- valueToCheck = value;
- }
-
// check if it has the basic requirements of an address
- if (!/^(0x)?[0-9a-f]{40}$/i.test(valueToCheck)) {
+ if (!/^Z[0-9a-f]{40}$/i.test(value)) {
return false;
}
// If it's ALL lowercase or ALL upppercase
if (
- /^(0x|0X)?[0-9a-f]{40}$/.test(valueToCheck) ||
- /^(0x|0X)?[0-9A-F]{40}$/.test(valueToCheck)
+ /^Z[0-9a-f]{40}$/.test(value) ||
+ /^Z[0-9A-F]{40}$/.test(value)
) {
return true;
// Otherwise check each case
}
- return checkChecksum ? checkAddressCheckSum(valueToCheck) : true;
+ return checkChecksum ? checkAddressCheckSum(value) : true;
};
diff --git a/packages/web3-validator/src/validation/bloom.ts b/packages/web3-validator/src/validation/bloom.ts
index 540f54f4..6b8a0d82 100644
--- a/packages/web3-validator/src/validation/bloom.ts
+++ b/packages/web3-validator/src/validation/bloom.ts
@@ -17,8 +17,8 @@ along with web3.js. If not, see .
import { keccak256 } from 'ethereum-cryptography/keccak.js';
import { ValidInputTypes } from '../types.js';
-import { codePointToInt, hexToUint8Array, padLeft, uint8ArrayToHexString } from '../utils.js';
-import { isAddress } from './address.js';
+import { addressToHex, codePointToInt, hexToUint8Array, padLeft, uint8ArrayToHexString } from '../utils.js';
+import { isAddressString } from './address.js';
import { isHexStrict } from './string.js';
/**
@@ -88,7 +88,7 @@ export const isUserZondAddressInBloom = (bloom: string, zondAddress: string): bo
return false;
}
- if (!isAddress(zondAddress)) {
+ if (!isAddressString(zondAddress)) {
return false;
}
@@ -99,7 +99,7 @@ export const isUserZondAddressInBloom = (bloom: string, zondAddress: string): bo
// hence why we have 2 methods
// (0x is not in the 2nd parameter of padleft so 64 chars is fine)
- const address = padLeft(zondAddress, 64);
+ const address = padLeft(addressToHex(zondAddress), 64);
return isInBloom(bloom, address);
};
@@ -113,9 +113,9 @@ export const isContractAddressInBloom = (bloom: string, contractAddress: string)
return false;
}
- if (!isAddress(contractAddress)) {
+ if (!isAddressString(contractAddress)) {
return false;
}
- return isInBloom(bloom, contractAddress);
+ return isInBloom(bloom, addressToHex(contractAddress));
};
diff --git a/packages/web3-validator/src/validation/filter.ts b/packages/web3-validator/src/validation/filter.ts
index b893133c..23dbebd2 100644
--- a/packages/web3-validator/src/validation/filter.ts
+++ b/packages/web3-validator/src/validation/filter.ts
@@ -16,7 +16,7 @@ along with web3.js. If not, see .
*/
import { Filter } from '@theqrl/web3-types';
-import { isAddress } from './address.js';
+import { isAddressString } from './address.js';
import { isBlockNumberOrTag } from './block.js';
import { isNullish } from './object.js';
import { isTopic } from './topic.js';
@@ -52,8 +52,8 @@ export const isFilterObject = (value: Filter) => {
if (!isNullish(value.address)) {
if (Array.isArray(value.address)) {
- if (!value.address.every(address => isAddress(address))) return false;
- } else if (!isAddress(value.address)) return false;
+ if (!value.address.every(address => isAddressString(address))) return false;
+ } else if (!isAddressString(value.address)) return false;
}
if (!isNullish(value.topics)) {
diff --git a/packages/web3-validator/src/validation/numbers.ts b/packages/web3-validator/src/validation/numbers.ts
index 5ad606a5..b270c1fd 100644
--- a/packages/web3-validator/src/validation/numbers.ts
+++ b/packages/web3-validator/src/validation/numbers.ts
@@ -119,6 +119,9 @@ export const isNumber = (value: ValidInputTypes) => {
if (
typeof value === 'string' &&
/[0-9.]/.test(value) &&
+ // NOTE(rgeraldes24): issue found during the tests; previously, values such
+ // as 'Z1' returned true; making sure that we just have numbers and dot here
+ !(/[^0-9.]/.test(value)) &&
value.indexOf('.') === value.lastIndexOf('.')
) {
return true;
diff --git a/packages/web3-validator/test/fixtures/abi_to_json_schema.ts b/packages/web3-validator/test/fixtures/abi_to_json_schema.ts
index 0593cd55..7464894c 100644
--- a/packages/web3-validator/test/fixtures/abi_to_json_schema.ts
+++ b/packages/web3-validator/test/fixtures/abi_to_json_schema.ts
@@ -59,7 +59,7 @@ export const abiToJsonSchemaCases: AbiToJsonSchemaCase[] = [
abi: {
fullSchema: [{ name: 'a', type: 'address' }],
shortSchema: ['address'],
- data: ['0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b'],
+ data: ['ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b'],
},
json: {
fullSchema: {
@@ -74,7 +74,7 @@ export const abiToJsonSchemaCases: AbiToJsonSchemaCase[] = [
minItems: 1,
maxItems: 1,
},
- data: ['0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b'],
+ data: ['ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b'],
},
},
{
@@ -1145,7 +1145,7 @@ export const abiToJsonSchemaCases: AbiToJsonSchemaCase[] = [
data: [
[
'Rick Sanchez',
- '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
['rick.c137@citadel.cfc', '+1 (555) 314-1593'],
],
],
@@ -1208,7 +1208,7 @@ export const abiToJsonSchemaCases: AbiToJsonSchemaCase[] = [
data: [
{
name: 'Rick Sanchez',
- addr: '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ addr: 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
contact: {
email: 'rick.c137@citadel.cfc',
phone: '+1 (555) 314-1593',
@@ -1243,7 +1243,7 @@ export const abiToJsonSchemaCases: AbiToJsonSchemaCase[] = [
data: [
[
'Rick Sanchez',
- '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
['rick.c137@citadel.cfc', '+1 (555) 314-1593'],
],
],
@@ -1306,7 +1306,7 @@ export const abiToJsonSchemaCases: AbiToJsonSchemaCase[] = [
data: [
{
name: 'Rick Sanchez',
- addr: '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ addr: 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
contact: {
email: 'rick.c137@citadel.cfc',
phone: '+1 (555) 314-1593',
diff --git a/packages/web3-validator/test/fixtures/validation.ts b/packages/web3-validator/test/fixtures/validation.ts
index dcde87cb..b4ac58b6 100644
--- a/packages/web3-validator/test/fixtures/validation.ts
+++ b/packages/web3-validator/test/fixtures/validation.ts
@@ -301,39 +301,38 @@ export const invalidStringNumbers: ValidInputTypes[] = [
new Uint8Array(hexToBytes('abcd')),
];
export const validCheckAddressCheckSumData: any[] = [
- '0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d',
- '0x52908400098527886E0F7030069857D2E4169EE7',
- '0x8617E340B3D01FA5F11F306F4090FD50E238070D',
- '0x27b1fdb04752bbc536007a920d24acb045561c26',
- '0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed',
- '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359',
- '0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB',
- '0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb',
+ 'Zc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d',
+ 'Z52908400098527886E0F7030069857D2E4169EE7',
+ 'Z8617E340B3D01FA5F11F306F4090FD50E238070D',
+ 'Z27b1fdb04752bbc536007a920d24acb045561c26',
+ 'Z5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed',
+ 'ZfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359',
+ 'ZdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB',
+ 'ZD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb',
];
export const invalidCheckAddressCheckSumData: any[] = [
- '0xc1912fee45d61c87cc5ea59dae31190fffff232d',
- '0xd1220a0cf47c7b9be7a2e6ba89f429762e7b9adb',
- '0XD1220A0CF47C7B9BE7A2E6BA89F429762E7B9ADB',
+ 'Zc1912fee45d61c87cc5ea59dae31190fffff232d',
+ 'Zd1220a0cf47c7b9be7a2e6ba89f429762e7b9adb',
+ 'ZD1220A0CF47C7B9BE7A2E6BA89F429762E7B9ADB',
'1234',
'0xa1b2',
];
export const validAddressData: any[] = [
- '0xc6d9d2cd449a754c494264e1809c50e34d64562b',
- 'c6d9d2cd449a754c494264e1809c50e34d64562b',
- '0xE247A45c287191d435A8a5D72A7C8dc030451E9F',
- '0xe247a45c287191d435a8a5d72a7c8dc030451e9f',
- '0xE247A45C287191D435A8A5D72A7C8DC030451E9F',
- '0XE247A45C287191D435A8A5D72A7C8DC030451E9F',
- new Uint8Array(hexToBytes('0xE247A45C287191D435A8A5D72A7C8DC030451E9F')),
+ 'Zc6d9d2cd449a754c494264e1809c50e34d64562b',
+ 'ZE247A45c287191d435A8a5D72A7C8dc030451E9F',
+ 'Ze247a45c287191d435a8a5d72a7c8dc030451e9f',
+ 'ZE247A45C287191D435A8A5D72A7C8DC030451E9F',
+ 'ZE247A45C287191D435A8A5D72A7C8DC030451E9F',
+ 'Z72fdb1c1ddd4c67804f42b93de95cf6a8c51d2d1',
];
export const invalidAddressData: any[] = [
...invalidHexStrictData,
- '0x1',
- '0xE247a45c287191d435A8a5D72A7C8dc030451E9F', // Invalid checksum
- '-0x407d73d8a49eeb85d32cf465507dd71d507100c1',
+ 'Z1',
+ 'ZE247a45c287191d435A8a5D72A7C8dc030451E9F', // Invalid checksum
+ '-Z407d73d8a49eeb85d32cf465507dd71d507100c1',
];
export const validBloomData: any[] = [
@@ -358,6 +357,21 @@ export const validInBloomData: [string, string][] = [
],
];
+export const validContractAddressInBloomData: [string, string][] = [
+ [
+ '0x00000000200000000010000080000000000002000000000000000000000000000000000000020200000000000000000000800001000000000000000000200000000000000000000000000008000000800000000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000080000000000000000000000100000000000000000000000002000000000001000080000000000000000000000000000000000020200010000000000000000000000000000000000000100000000000000000000000',
+ 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ ],
+ [
+ '0x00000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000008000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000010000000000000000000000000000000000010000000000402000000000000000000000020000010000000000000000000000000000000000000000000000000000000000000',
+ 'Z6b175474e89094c44da98b954eedeac495271d0f',
+ ],
+ [
+ '0x01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000800000000000000000000000000010018000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000010000000000000000000002000000000080000000000000000000000000000000000000000001000000100000000000000000000000000000000000000000000400000000000000002000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000',
+ 'Zf411903cbc70a74d22900a5de66a2dda66507255',
+ ],
+];
+
export const invalidInBloomData: any[] = [
[
'0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
@@ -385,23 +399,23 @@ export const invalidInBloomData: any[] = [
export const validUserZondAddressInBloomData: any[] = [
[
'0x00000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000002000000000000000000000000000000100000000000000082000000000080000000000000000000000000000000000000000000000002000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
- '0xdfd5293d8e347dfe59e90efd55b2956a1343963d',
+ 'Zdfd5293d8e347dfe59e90efd55b2956a1343963d',
],
];
export const invalidUserZondAddressInBloomData: any[] = [
[
'0x00000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000002000000000000000000000000000000100000000000000082000000000080000000000000000000000000000000000000000000000002000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
- '0xea674fdde714fd979de3edf0f56aa9716b898ec8',
+ 'Zea674fdde714fd979de3edf0f56aa9716b898ec8',
],
[
'0x00000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000002000000000000000000000000000000100000000000000082000000000080000000000000000000000000000000000000000000000002000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
- '0xH1',
+ 'ZH1',
],
[
// mix a and A
'0xaA000000200000000010000080000000000002000000000000000000000000000000000000020200000000000000000000800001000000000000000000200000000000000000000000000008000000800000000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000080000000000000000000000100000000000000000000000002000000000001000080000000000000000000000000000000000020200010000000000000000000000000000000000000100000000000000000000000',
- '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
],
];
@@ -549,12 +563,12 @@ export const validFilterObjectData: Filter[] = [
toBlock: '0xc0ff3',
},
{
- address: '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ address: 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
},
{
address: [
- '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
- '0xdfd5293d8e347dfe59e90efd55b2956a1343963d',
+ 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ 'Zdfd5293d8e347dfe59e90efd55b2956a1343963d',
],
},
{
@@ -573,8 +587,8 @@ export const validFilterObjectData: Filter[] = [
fromBlock: '0xc0ff3',
toBlock: '0xc0ff3',
address: [
- '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
- '0xdfd5293d8e347dfe59e90efd55b2956a1343963d',
+ 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ 'Zdfd5293d8e347dfe59e90efd55b2956a1343963d',
],
topics: [
'0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b',
@@ -597,12 +611,12 @@ export const invalidFilterObjectData: any[] = [
toBlock: -42,
},
{
- address: '0x98',
+ address: 'Z98',
},
{
address: [
- '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
- '0xdfd5293d8e347dfe59e90efd55b2956a1343963d',
+ 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ 'Zdfd5293d8e347dfe59e90efd55b2956a1343963d',
// Using "null" value intentionally for validation
// eslint-disable-next-line no-null/no-null
null,
@@ -624,8 +638,8 @@ export const invalidFilterObjectData: any[] = [
fromBlock: '0xc0ff3',
toBlock: '0xc0ff3',
address: [
- '0x98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
- '0xdfd5293d8e347dfe59e90efd55b2956a1343963d',
+ 'Z98afe7a8d28bbc88dcf41f8e06d97c74958a47dc',
+ 'Zdfd5293d8e347dfe59e90efd55b2956a1343963d',
42,
],
topics: [
@@ -766,3 +780,15 @@ export const validNotBaseTypeData: { dataType: string; data: any }[] = [
data: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
},
];
+
+export const validAddressDataWithHex: [string, string][] = [
+ [
+ 'Zdec0518fa672a70027b04c286582e543ab17319f',
+ '0xdec0518fa672a70027b04c286582e543ab17319f',
+ ],
+ [
+ 'Zd115bffabbdd893a6f7cea402e7338643ced44a6',
+ '0xd115bffabbdd893a6f7cea402e7338643ced44a6',
+ ],
+];
+
diff --git a/packages/web3-validator/test/unit/load.test.ts b/packages/web3-validator/test/unit/load.test.ts
index 1924dd3b..e57a8551 100644
--- a/packages/web3-validator/test/unit/load.test.ts
+++ b/packages/web3-validator/test/unit/load.test.ts
@@ -34,8 +34,8 @@ const abiJsonSchema = {
};
const abiData = [
- '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
- '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
'0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
];
@@ -64,8 +64,8 @@ const simpleSchema = {
const simpleData = {
blockHash: '0x0dec0518fa672a70027b04c286582e543ab17319fbdd384fa7bc8f3d5a542c0b',
blockNumber: BigInt(2),
- from: '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
- to: '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ from: 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ to: 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
data: '0xafea',
} as unknown as ValidationSchemaInput;
@@ -115,7 +115,7 @@ describe('instance of validator', () => {
validator.validateJSONSchema(hugeSchema, hugeData as object);
t = Number(new Date()) - t1;
}).not.toThrow();
- expect(t).toBeLessThan(8000);
+ expect(t).toBeLessThan(15000);
expect(t).toBeGreaterThan(0);
});
@@ -126,7 +126,7 @@ describe('instance of validator', () => {
validator.validateJSONSchema(hugeSchema1000, hugeData1000 as object);
t = Number(new Date()) - t1;
}).not.toThrow();
- expect(t).toBeLessThan(8000);
+ expect(t).toBeLessThan(25000);
expect(t).toBeGreaterThan(0);
});
@@ -152,7 +152,7 @@ describe('instance of validator', () => {
}
t = Number(new Date()) - t1;
}).not.toThrow();
- expect(t).toBeLessThan(4000);
+ expect(t).toBeLessThan(15000);
expect(t).toBeGreaterThan(0);
});
@@ -165,7 +165,7 @@ describe('instance of validator', () => {
}
t = Number(new Date()) - t1;
}).not.toThrow();
- expect(t).toBeLessThan(4000);
+ expect(t).toBeLessThan(15000);
expect(t).toBeGreaterThan(0);
});
@@ -178,7 +178,7 @@ describe('instance of validator', () => {
}
t = Number(new Date()) - t1;
}).not.toThrow();
- expect(t).toBeLessThan(4000);
+ expect(t).toBeLessThan(10000);
expect(t).toBeGreaterThan(0);
});
});
diff --git a/packages/web3-validator/test/unit/utils.test.ts b/packages/web3-validator/test/unit/utils.test.ts
index 69051a41..eb4a7578 100644
--- a/packages/web3-validator/test/unit/utils.test.ts
+++ b/packages/web3-validator/test/unit/utils.test.ts
@@ -26,6 +26,7 @@ import {
padLeft,
hexToUint8Array,
uint8ArrayToHexString,
+ addressToHex,
} from '../../src/utils';
import { abiToJsonSchemaCases } from '../fixtures/abi_to_json_schema';
import {
@@ -39,6 +40,8 @@ import {
invalidStringNumbers,
padLeftData,
validHexStrictDataWithUint8Array,
+ validAddressDataWithHex,
+ invalidAddressData,
} from '../fixtures/validation';
describe('utils', () => {
@@ -128,6 +131,17 @@ describe('utils', () => {
}).toThrow(new InvalidNumberError(input));
});
});
+ describe('addressToHex', () => {
+ it.each(validAddressDataWithHex)('valid address string data', (input, res) => {
+ expect(addressToHex(input)).toEqual(res);
+ });
+
+ it.each(invalidAddressData)('invalidAddressData', (input: string) => {
+ expect(() => {
+ addressToHex(input);
+ }).toThrow(new Error('Invalid address string'));
+ });
+ });
describe('padLeft', () => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
diff --git a/packages/web3-validator/test/unit/validation/address.test.ts b/packages/web3-validator/test/unit/validation/address.test.ts
index 8af782b7..874d29c5 100644
--- a/packages/web3-validator/test/unit/validation/address.test.ts
+++ b/packages/web3-validator/test/unit/validation/address.test.ts
@@ -15,7 +15,7 @@ You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { checkAddressCheckSum, isAddress } from '../../../src/validation/address';
+import { checkAddressCheckSum, isAddressString } from '../../../src/validation/address';
import {
validCheckAddressCheckSumData,
invalidAddressData,
@@ -24,16 +24,16 @@ import {
describe('validation', () => {
describe('address', () => {
- describe('isAddress', () => {
+ describe('isAddressString', () => {
describe('valid cases', () => {
it.each(validAddressData)('%s', input => {
- expect(isAddress(input)).toBeTruthy();
+ expect(isAddressString(input)).toBeTruthy();
});
});
describe('invalid cases', () => {
it.each(invalidAddressData)('%s', input => {
- expect(isAddress(input)).toBeFalsy();
+ expect(isAddressString(input)).toBeFalsy();
});
});
});
diff --git a/packages/web3-validator/test/unit/validation/bloom.test.ts b/packages/web3-validator/test/unit/validation/bloom.test.ts
index 9476efbe..bb31af38 100644
--- a/packages/web3-validator/test/unit/validation/bloom.test.ts
+++ b/packages/web3-validator/test/unit/validation/bloom.test.ts
@@ -23,6 +23,7 @@ import {
} from '../../../src/validation/bloom';
import {
validBloomData,
+ validContractAddressInBloomData,
invalidInBloomData,
validInBloomData,
invalidUserZondAddressInBloomData,
@@ -69,7 +70,7 @@ describe('validation', () => {
describe('isContractAddressInBloom', () => {
describe('valid cases', () => {
- it.each(validInBloomData)('%s', (bloom, address) => {
+ it.each(validContractAddressInBloomData)('%s', (bloom, address) => {
expect(isContractAddressInBloom(bloom, address)).toBeTruthy();
});
});
diff --git a/packages/web3-validator/test/unit/validator.test.ts b/packages/web3-validator/test/unit/validator.test.ts
index e8afc804..ed99880d 100644
--- a/packages/web3-validator/test/unit/validator.test.ts
+++ b/packages/web3-validator/test/unit/validator.test.ts
@@ -68,8 +68,8 @@ describe('instance of validator', () => {
}
});
it('formats call', () => {
- expect(formats.address('0x7ab80aeb6bb488b7f6c41c58e83ef248eb39c882')).toBe(true);
- expect(formats.address('0x7ab80aeb6bb488b7f6c41c58e83ef248eb39c88')).toBe(false);
+ expect(formats.address('Z7ab80aeb6bb488b7f6c41c58e83ef248eb39c882')).toBe(true);
+ expect(formats.address('Z7ab80aeb6bb488b7f6c41c58e83ef248eb39c88')).toBe(false);
expect(formats.bloom(`0x${'0'.repeat(512)}`)).toBe(true);
expect(formats.bloom(`0x${'0'.repeat(511)}`)).toBe(false);
diff --git a/packages/web3-validator/test/unit/web3_validator.test.ts b/packages/web3-validator/test/unit/web3_validator.test.ts
index e1a49fa6..bcd3c8a4 100644
--- a/packages/web3-validator/test/unit/web3_validator.test.ts
+++ b/packages/web3-validator/test/unit/web3_validator.test.ts
@@ -97,7 +97,7 @@ describe('web3-validator', () => {
expect(
validator.validate(
[{ name: '', type: 'address' }],
- ['0x2df0879f1ee2b2b1f2448c64c089c29e3ad7ccc5'],
+ ['Z2df0879f1ee2b2b1f2448c64c089c29e3ad7ccc5'],
),
).toBeUndefined();
});
diff --git a/packages/web3-validator/test/unit/web3_validator_tuples.test.ts b/packages/web3-validator/test/unit/web3_validator_tuples.test.ts
index 811938d4..db1dc6d5 100644
--- a/packages/web3-validator/test/unit/web3_validator_tuples.test.ts
+++ b/packages/web3-validator/test/unit/web3_validator_tuples.test.ts
@@ -29,7 +29,7 @@ describe('web3-validator', () => {
validator.validate(schema, [[7, 5], 3]);
});
it('nested tuples deep', () => {
- const address = '0x7ab80aeb6bb488b7f6c41c58e83ef248eb39c882';
+ const address = 'Z7ab80aeb6bb488b7f6c41c58e83ef248eb39c882';
const schema = [
[
diff --git a/packages/web3-zond-abi/CHANGELOG.md b/packages/web3-zond-abi/CHANGELOG.md
index 908a4510..2ad5a7d4 100644
--- a/packages/web3-zond-abi/CHANGELOG.md
+++ b/packages/web3-zond-abi/CHANGELOG.md
@@ -33,113 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [4.0.1-alpha.1]
-
-### Added
-
-- If an error happens when decoding a value, preserve that exception at `innerError` inside the error class `AbiError`. (#5435)
-- Add basic functionality that is used, by `web3-eth-contract`, when decoding error data according to EIP-838. (#5434)
-
-### Fixed
-
-- Return `BigInt` instead of `string` when decoding function parameters for large numbers, such as `uint256`. (#5435)
-
-## [4.0.1-alpha.2]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-### Fixed
-
-- Fix `ContractMethodOutputParameters` type to support output object types by index and string key. Also, it returns void if ABI doesn't have outputs and returns exactly one type if the output array has only one element. (#5631)
-
-## [4.0.1-alpha.3]
-
-### Fixed
-
-- Parameters decoding error for nested components (#5714)
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-## [4.0.1-alpha.5]
-
-## [4.0.1-rc.0]
-
-### Removed
-
-- Moved all types and interfaces to `web3-types` (#5771)
-
-### Added
-
-- `decodeErrorData` from `web3-eth-contract` is now exported from this package and was renamed to `decodeContractErrorData` (#5844)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added hybrid build (ESM and CJS) of library (#5904)
-- Added source files (#5956)
-
-### Removed
-
-- Removed `formatDecodedObject` function (#5934)
-
-## [4.0.1-rc.2]
-
-### Changed
-
-- Nested Smart Contract error data hex string is decoded when the error contains the data as object (when the data hex string is inside data.originalError.data or data.data) (#6045)
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Fixed
-
-- Support for "decoding" indexed string event arguments (returns the keccak256 hash of the string value instead of the actual string value) (#6167)
-
-## [4.0.3]
-
-### Changed
-
-- Dependencies updated
-
-## [4.1.0]
-
-### Added
-
-- A `getEncodedEip712Data` method that takes an EIP-712 typed data object and returns the encoded data with the option to also keccak256 hash it (#6286)
-
-## [4.1.1]
-
-### Changed
-
-- Dependencies updated
-
-## [4.1.2]
-
-### Changed
-
-- Dependencies updated
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-zond-abi/README.md b/packages/web3-zond-abi/README.md
index bbeb96bf..5a5f4c65 100644
--- a/packages/web3-zond-abi/README.md
+++ b/packages/web3-zond-abi/README.md
@@ -2,7 +2,7 @@
-# web3.js - Web3-Eth-Abi
+# web3.js - Web3-Zond-Abi


@@ -11,7 +11,7 @@
This is a sub-package of [web3.js][repo].
-`web3-eth-abi` contains functions for the encode and decode EVM in/output.
+`web3-zond-abi` contains functions for the encode and decode ZVM in/output.
## Installation
@@ -20,13 +20,13 @@ You can install the package either using [NPM](https://www.npmjs.com/package/web
### Using NPM
```bash
-npm install web3-eth-abi
+npm install web3-zond-abi
```
### Using Yarn
```bash
-yarn add web3-eth-abi
+yarn add web3-zond-abi
```
## Getting Started
diff --git a/packages/web3-zond-abi/package.json b/packages/web3-zond-abi/package.json
index 82df0d67..a39e00c9 100644
--- a/packages/web3-zond-abi/package.json
+++ b/packages/web3-zond-abi/package.json
@@ -1,10 +1,10 @@
{
"name": "@theqrl/web3-zond-abi",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
- "description": "Web3 module encode and decode EVM in/output.",
+ "description": "Web3 module encode and decode ZVM in/output.",
"main": "./lib/commonjs/index.js",
"module": "./lib/esm/index.js",
"exports": {
@@ -14,7 +14,7 @@
"require": "./lib/commonjs/index.js"
}
},
- "repository": "https://github.com/ethereum/web3.js/tree/4.x/packages/web3-eth-abi",
+ "repository": "https://github.com/theQRL/web3.js/tree/main/packages/web3-zond-abi",
"author": "ChainSafe Systems",
"license": "LGPL-3.0",
"engines": {
@@ -45,15 +45,15 @@
"test:integration": "jest --config=./test/integration/jest.config.js --passWithNoTests"
},
"dependencies": {
- "@ethersproject/abi": "^5.7.0",
"@ethersproject/bignumber": "^5.7.0",
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1"
+ "@theqrl/abi": "^0.1.0",
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-utils": "^0.3.0"
},
"devDependencies": {
"@humeris/espresso-shot": "^4.0.0",
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@types/jest-when": "^3.5.2",
"@typescript-eslint/eslint-plugin": "^5.30.7",
diff --git a/packages/web3-zond-abi/src/api/functions_api.ts b/packages/web3-zond-abi/src/api/functions_api.ts
index 40609eaf..8d59d093 100644
--- a/packages/web3-zond-abi/src/api/functions_api.ts
+++ b/packages/web3-zond-abi/src/api/functions_api.ts
@@ -119,7 +119,7 @@ export const encodeFunctionSignature = (functionName: string | AbiFunctionFragme
* stateMutability: "view",
* type: "function",
* },
- * ["0x1234567890123456789012345678901234567890"]
+ * ["Z1234567890123456789012345678901234567890"]
* );
*
* console.log(sig);
diff --git a/packages/web3-zond-abi/src/api/logs_api.ts b/packages/web3-zond-abi/src/api/logs_api.ts
index 20cdeb10..17ab0471 100644
--- a/packages/web3-zond-abi/src/api/logs_api.ts
+++ b/packages/web3-zond-abi/src/api/logs_api.ts
@@ -25,7 +25,7 @@ const _decodeParameter = (inputType: string, clonedTopic: string) =>
/**
* Decodes ABI-encoded log data and indexed topic data.
- * @param inputs - A {@link AbiParameter} input array. See the [Solidity documentation](https://docs.soliditylang.org/en/develop/types.html) for a list of types.
+ * @param inputs - A {@link AbiParameter} input array. See the [Hyperion documentation](https://docs.soliditylang.org/en/develop/types.html) for a list of types.
* @param data - The ABI byte code in the `data` field of a log.
* @param topics - An array with the index parameter topics of the log, without the topic[0] if its a non-anonymous event, otherwise with topic[0]
* @returns - The result object containing the decoded parameters.
diff --git a/packages/web3-zond-abi/src/api/parameters_api.ts b/packages/web3-zond-abi/src/api/parameters_api.ts
index 6903b18d..7ca503d0 100644
--- a/packages/web3-zond-abi/src/api/parameters_api.ts
+++ b/packages/web3-zond-abi/src/api/parameters_api.ts
@@ -16,14 +16,14 @@ along with web3.js. If not, see .
*/
import { AbiError } from '@theqrl/web3-errors';
-import { ParamType, Result } from '@ethersproject/abi';
+import { ParamType, Result } from '@theqrl/abi';
import { HexString, AbiInput, DecodedParams } from '@theqrl/web3-types';
import ethersAbiCoder from '../ethers_abi_coder.js';
import { formatParam, isAbiFragment, mapTypes, modifyParams } from '../utils.js';
/**
* Encodes a parameter based on its type to its ABI representation.
- * @param abi - An array of {@link AbiInput}. See [Solidity's documentation](https://solidity.readthedocs.io/en/v0.5.3/abi-spec.html#json) for more details.
+ * @param abi - An array of {@link AbiInput}. See [Hyperion's documentation](https://solidity.readthedocs.io/en/v0.5.3/abi-spec.html#json) for more details.
* @param params - The actual parameters to encode.
* @returns - The ABI encoded parameters
* @example
@@ -74,7 +74,7 @@ export const encodeParameters = (abi: ReadonlyArray, params: unknown[]
/**
* Encodes a parameter based on its type to its ABI representation.
- * @param abi - The type of the parameter. See the [Solidity documentation](https://docs.soliditylang.org/en/develop/types.html) for a list of types.
+ * @param abi - The type of the parameter. See the [Hyperion documentation](https://docs.soliditylang.org/en/develop/types.html) for a list of types.
* @param param - The actual parameter to encode.
* @returns - The ABI encoded parameter
* @example
@@ -188,7 +188,7 @@ export const decodeParametersWith = (
*/
/**
* Decodes ABI encoded parameters to its JavaScript types.
- * @param abi - An array of {@link AbiInput}. See the [Solidity documentation](https://docs.soliditylang.org/en/develop/types.html) for a list of types.
+ * @param abi - An array of {@link AbiInput}. See the [Hyperion documentation](https://docs.soliditylang.org/en/develop/types.html) for a list of types.
* @param bytes - The ABI byte code to decode
* @returns - The result object containing the decoded parameters.
* @example
@@ -297,7 +297,7 @@ export const decodeParameters = (
*/
/**
* Decodes an ABI encoded parameter to its JavaScript type.
- * @param abi - The type of the parameter. See the [Solidity documentation](https://docs.soliditylang.org/en/develop/types.html) for a list of types.
+ * @param abi - The type of the parameter. See the [Hyperion documentation](https://docs.soliditylang.org/en/develop/types.html) for a list of types.
* @param bytes - The ABI byte code to decode
* @returns - The decoded parameter
* @example
diff --git a/packages/web3-zond-abi/src/ethers_abi_coder.ts b/packages/web3-zond-abi/src/ethers_abi_coder.ts
index 79ec6530..e8b4ecff 100644
--- a/packages/web3-zond-abi/src/ethers_abi_coder.ts
+++ b/packages/web3-zond-abi/src/ethers_abi_coder.ts
@@ -15,7 +15,7 @@ You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { AbiCoder } from '@ethersproject/abi';
+import { AbiCoder } from '@theqrl/abi';
import type { BigNumber } from '@ethersproject/bignumber';
const ethersAbiCoder = new AbiCoder((_, value) => {
@@ -23,7 +23,7 @@ const ethersAbiCoder = new AbiCoder((_, value) => {
return (value as BigNumber).toBigInt();
}
- // Because of tye type def from @ethersproject/abi
+ // Because of the type def from @ethersproject/abi
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
return value;
});
diff --git a/packages/web3-zond-abi/src/index.ts b/packages/web3-zond-abi/src/index.ts
index cd1b5526..883a4107 100644
--- a/packages/web3-zond-abi/src/index.ts
+++ b/packages/web3-zond-abi/src/index.ts
@@ -16,7 +16,7 @@ along with web3.js. If not, see .
*/
/**
- * The web3.zond.abi functions let you encode and decode parameters to ABI (Application Binary Interface) for function calls to the EVM (Ethereum Virtual Machine).
+ * The web3.zond.abi functions let you encode and decode parameters to ABI (Application Binary Interface) for function calls to the ZVM (Zond Virtual Machine).
*/
export * from './api/errors_api.js';
export * from './api/events_api.js';
diff --git a/packages/web3-zond-abi/src/utils.ts b/packages/web3-zond-abi/src/utils.ts
index 1c988705..09a5f1c5 100644
--- a/packages/web3-zond-abi/src/utils.ts
+++ b/packages/web3-zond-abi/src/utils.ts
@@ -16,7 +16,7 @@ along with web3.js. If not, see .
*/
import { AbiError } from '@theqrl/web3-errors';
-import { AbiCoder, ParamType } from '@ethersproject/abi';
+import { AbiCoder, ParamType } from '@theqrl/abi';
import { isNullish, leftPad, rightPad, toHex } from '@theqrl/web3-utils';
import {
AbiInput,
@@ -119,7 +119,7 @@ export const mapTypes = (
}
// Remap `function` type params to bytes24 since Ethers does not
- // recognize former type. Solidity docs say `Function` is a bytes24
+ // recognize former type. Hyperion docs say `Function` is a bytes24
// encoding the contract address followed by the function selector hash.
if (typeof type === 'object' && type.type === 'function') {
modifiedType = { ...type, type: 'bytes24' };
diff --git a/packages/web3-zond-abi/test/fixtures/data.ts b/packages/web3-zond-abi/test/fixtures/data.ts
index a2f3b32b..09e7ecf8 100644
--- a/packages/web3-zond-abi/test/fixtures/data.ts
+++ b/packages/web3-zond-abi/test/fixtures/data.ts
@@ -269,7 +269,7 @@ export const validFunctionsCall: { input: { abi: any; params: any }; output: str
},
params: [
'0x000000000000000000000000',
- '0x0000000000000000000000000000000000000000',
+ 'Z0000000000000000000000000000000000000000',
'170141183460469231731687303715884105727',
'-170141183460469231731687303715884105727',
],
@@ -452,12 +452,12 @@ export const validDecodeLogsData: {
data: '0x00000000000000000000000000000000000000000000000000000000000186a0',
},
output: {
- '0': '0x6E599DA0bfF7A6598AC1224E4985430Bf16458a4',
- '1': '0x6f1DF96865D09d21e8f3f9a7fbA3b17A11c7C53C',
+ '0': 'Z6E599DA0bfF7A6598AC1224E4985430Bf16458a4',
+ '1': 'Z6f1DF96865D09d21e8f3f9a7fbA3b17A11c7C53C',
'2': '100000',
__length__: 3,
- from: '0x6E599DA0bfF7A6598AC1224E4985430Bf16458a4',
- to: '0x6f1DF96865D09d21e8f3f9a7fbA3b17A11c7C53C',
+ from: 'Z6E599DA0bfF7A6598AC1224E4985430Bf16458a4',
+ to: 'Z6f1DF96865D09d21e8f3f9a7fbA3b17A11c7C53C',
value: '100000',
},
},
@@ -489,10 +489,10 @@ export const validDecodeLogsData: {
topics: ['0x000000000000000000000000cb00cde33a7a0fba30c63745534f1f7ae607076b'],
},
output: {
- '0': '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ '0': 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
'1': {
'0': 'Rick Sanchez',
- '1': '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ '1': 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
'2': {
'0': 'rick.c137@citadel.cfc',
'1': '+1 (555) 314-1593',
@@ -502,7 +502,7 @@ export const validDecodeLogsData: {
},
__length__: 3,
name: 'Rick Sanchez',
- addr: '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ addr: 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
contact: {
'0': 'rick.c137@citadel.cfc',
'1': '+1 (555) 314-1593',
@@ -512,10 +512,10 @@ export const validDecodeLogsData: {
},
},
__length__: 2,
- addr: '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ addr: 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
user: {
'0': 'Rick Sanchez',
- '1': '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ '1': 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
'2': {
'0': 'rick.c137@citadel.cfc',
'1': '+1 (555) 314-1593',
@@ -525,7 +525,7 @@ export const validDecodeLogsData: {
},
__length__: 3,
name: 'Rick Sanchez',
- addr: '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ addr: 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
contact: {
'0': 'rick.c137@citadel.cfc',
'1': '+1 (555) 314-1593',
@@ -897,7 +897,7 @@ export const validDecodeParametersData: {
outputResult: {
'0': {
'0': 'Rick Sanchez',
- '1': '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ '1': 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
'2': {
'0': 'rick.c137@citadel.cfc',
'1': '+1 (555) 314-1593',
@@ -906,7 +906,7 @@ export const validDecodeParametersData: {
phone: '+1 (555) 314-1593',
},
__length__: 3,
- addr: '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ addr: 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
contact: {
'0': 'rick.c137@citadel.cfc',
'1': '+1 (555) 314-1593',
@@ -919,7 +919,7 @@ export const validDecodeParametersData: {
__length__: 1,
user: {
'0': 'Rick Sanchez',
- '1': '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ '1': 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
'2': {
'0': 'rick.c137@citadel.cfc',
'1': '+1 (555) 314-1593',
@@ -928,7 +928,7 @@ export const validDecodeParametersData: {
phone: '+1 (555) 314-1593',
},
__length__: 3,
- addr: '0xCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
+ addr: 'ZCB00CDE33a7a0Fba30C63745534F1f7Ae607076b',
contact: {
'0': 'rick.c137@citadel.cfc',
'1': '+1 (555) 314-1593',
diff --git a/packages/web3-zond-abi/test/fixtures/get_encoded_eip712_data.ts b/packages/web3-zond-abi/test/fixtures/get_encoded_eip712_data.ts
index 946214d3..aacc77ed 100644
--- a/packages/web3-zond-abi/test/fixtures/get_encoded_eip712_data.ts
+++ b/packages/web3-zond-abi/test/fixtures/get_encoded_eip712_data.ts
@@ -75,16 +75,16 @@ export const testData: [string, Eip712TypedData, boolean | undefined, string][]
name: 'Ether Mail',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
from: {
name: 'Cow',
- wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
+ wallet: 'ZCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
},
to: {
name: 'Bob',
- wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
+ wallet: 'ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
},
contents: 'Hello, Bob!',
},
@@ -144,16 +144,16 @@ export const testData: [string, Eip712TypedData, boolean | undefined, string][]
name: 'Ether Mail',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
from: {
name: 'Cow',
- wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
+ wallet: 'ZCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
},
to: {
name: 'Bob',
- wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
+ wallet: 'ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
},
contents: 'Hello, Bob!',
},
@@ -213,16 +213,16 @@ export const testData: [string, Eip712TypedData, boolean | undefined, string][]
name: 'Ether Mail',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
from: {
name: 'Cow',
- wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
+ wallet: 'ZCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
},
to: {
name: 'Bob',
- wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
+ wallet: 'ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
},
contents: 'Hello, Bob!',
},
@@ -272,14 +272,14 @@ export const testData: [string, Eip712TypedData, boolean | undefined, string][]
name: 'Array Data',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
array1: ['string', 'string2', 'string3'],
array2: [
- '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
- '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
- '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
+ 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ 'ZCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
+ 'ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
],
array3: [123456, 654321, 42],
},
@@ -329,14 +329,14 @@ export const testData: [string, Eip712TypedData, boolean | undefined, string][]
name: 'Array Data',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
array1: ['string', 'string2', 'string3'],
array2: [
- '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
- '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
- '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
+ 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ 'ZCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
+ 'ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
],
array3: [123456, 654321, 42],
},
@@ -386,14 +386,14 @@ export const testData: [string, Eip712TypedData, boolean | undefined, string][]
name: 'Array Data',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
array1: ['string', 'string2', 'string3'],
array2: [
- '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
- '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
- '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
+ 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ 'ZCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
+ 'ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
],
array3: [123456, 654321, 42],
},
@@ -443,14 +443,14 @@ export const testData: [string, Eip712TypedData, boolean | undefined, string][]
name: 'Array Data',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
array1: ['string', 'string2', 'string3'],
array2: [
- '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
- '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
- '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
+ 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ 'ZCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
+ 'ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
],
array3: [123456, 654321, 42],
},
@@ -492,7 +492,7 @@ export const testData: [string, Eip712TypedData, boolean | undefined, string][]
name: 'Array Data',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
bytes32: '0x133d00e67f2390ce846a631aeb6718a674a3923f5320b79b6d3e2f5bf146319e',
@@ -535,7 +535,7 @@ export const testData: [string, Eip712TypedData, boolean | undefined, string][]
name: 'Array Data',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
bytes32: '0x133d00e67f2390ce846a631aeb6718a674a3923f5320b79b6d3e2f5bf146319e',
@@ -578,7 +578,7 @@ export const testData: [string, Eip712TypedData, boolean | undefined, string][]
name: 'Array Data',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
bytes32: '0x133d00e67f2390ce846a631aeb6718a674a3923f5320b79b6d3e2f5bf146319e',
@@ -638,11 +638,11 @@ export const erroneousTestData: [string, Eip712TypedData, boolean | undefined, E
name: 'Array Data',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
array1: ['string', 'string2', 'string3'],
- array2: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
+ array2: 'ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
array3: [123456, 654321, 42],
},
},
@@ -691,11 +691,11 @@ export const erroneousTestData: [string, Eip712TypedData, boolean | undefined, E
name: 'Array Data',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
array1: ['string', 'string2', 'string3'],
- array2: ['0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB'],
+ array2: ['ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB'],
array3: [123456, 654321, 42],
},
},
@@ -744,11 +744,11 @@ export const erroneousTestData: [string, Eip712TypedData, boolean | undefined, E
name: 'Array Data',
version: '1',
chainId: 1,
- verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+ verifyingContract: 'ZCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
message: {
array1: ['string', 'string2', 'string3'],
- array2: ['0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB'],
+ array2: ['ZbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB'],
array3: undefined,
},
},
diff --git a/packages/web3-zond-abi/test/unit/jest.config.js b/packages/web3-zond-abi/test/unit/jest.config.js
index 6acd2aba..ee0b9dac 100644
--- a/packages/web3-zond-abi/test/unit/jest.config.js
+++ b/packages/web3-zond-abi/test/unit/jest.config.js
@@ -11,7 +11,7 @@ module.exports = {
[
'json',
{
- file: 'web3-eth-abi-unit-coverage.json',
+ file: 'web3-zond-abi-unit-coverage.json',
},
],
],
diff --git a/packages/web3-zond-accounts/CHANGELOG.md b/packages/web3-zond-accounts/CHANGELOG.md
index 9c11ba18..2ad5a7d4 100644
--- a/packages/web3-zond-accounts/CHANGELOG.md
+++ b/packages/web3-zond-accounts/CHANGELOG.md
@@ -33,108 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [4.0.1-alpha.1]
-
-### Changed
-
-- `signTransaction` and `privateKeyToAccount` will throw `TransactionSigningError` instead of `SignerError` now (#5462)
-
-## [4.0.1-alpha.2]
-
-### Removed
-
-- These types were moved to `web3-types` package: Cipher, CipherOptions, ScryptParams, PBKDF2SHA256Params, KeyStore (#5581)
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Changed
-
-- Updated dependencies (#5912)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-### Changed
-
-- Moved @ethereumjs/tx, @ethereumjs/common code to our source code (#5963)
-- The method `signTransaction` returned by `privateKeyToAccount` is now accepting the type `Transaction` for its argument. (#5993)
-
-## [4.0.1-rc.2]
-
-### Fixed
-
-- Fixed ESM import bugs reported in (#6032) and (#6034)
-
-### Changed
-
-- Replaced `Buffer` for `Uint8Array` (#6004)
-- The methods `recover`, `encrypt`, `privateKeyToAddress` does not support type `Buffer` but supports type `Uint8Array` (#6004)
-- The method `parseAndValidatePrivateKey` returns a type `Uint8Array` instead of type `Buffer` (#6004)
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Fixed
-
-- Fixed "The `r` and `s` returned by `signTransaction` to does not always consist of 64 characters #6207" (#6216)
-
-## [4.0.3]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.4]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.5]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.6]
-
-### Fixed
-
-- Fixed "The `r` and `s` returned by `sign` to does not always consist of 64 characters" (#6411)
-
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/README.md b/packages/web3-zond-accounts/README.md
index 3ca18c2a..cc23184c 100644
--- a/packages/web3-zond-accounts/README.md
+++ b/packages/web3-zond-accounts/README.md
@@ -2,7 +2,7 @@
-# web3.js - Web3 Eth Accounts
+# web3.js - Web3 Zond Accounts


@@ -11,7 +11,7 @@
This is a sub-package of [web3.js][repo].
-`web3-eth-accounts` contains functionality for managing Ethereum accounts and signing.
+`web3-zond-accounts` contains functionality for managing Zond accounts and signing.
## Installation
@@ -20,13 +20,13 @@ You can install the package either using [NPM](https://www.npmjs.com/package/web
### Using NPM
```bash
-npm install web3-eth-accounts
+npm install web3-zond-accounts
```
### Using Yarn
```bash
-yarn add web3-eth-accounts
+yarn add web3-zond-accounts
```
## Getting Started
diff --git a/packages/web3-zond-accounts/package.json b/packages/web3-zond-accounts/package.json
index 3b345f74..bc8f6860 100644
--- a/packages/web3-zond-accounts/package.json
+++ b/packages/web3-zond-accounts/package.json
@@ -1,10 +1,10 @@
{
"name": "@theqrl/web3-zond-accounts",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
- "description": "Package for managing Ethereum accounts and signing",
+ "description": "Package for managing Zond accounts and signing",
"main": "./lib/commonjs/index.js",
"module": "./lib/esm/index.js",
"exports": {
@@ -45,8 +45,8 @@
"test:integration": "jest --config=./test/integration/jest.config.js"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
- "@theqrl/web3-providers-ipc": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
+ "@theqrl/web3-providers-ipc": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
@@ -64,10 +64,10 @@
"@ethereumjs/rlp": "^4.0.1",
"@theqrl/dilithium5": "^0.0.9",
"@theqrl/wallet.js": "^0.1.0",
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1",
- "@theqrl/web3-validator": "^0.2.1",
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-utils": "^0.3.0",
+ "@theqrl/web3-validator": "^0.3.0",
"crc-32": "^1.2.2",
"ethereum-cryptography": "^2.0.0",
"sha3": "^2.1.4"
diff --git a/packages/web3-zond-accounts/src/account.ts b/packages/web3-zond-accounts/src/account.ts
index 6cdf414d..062b5529 100644
--- a/packages/web3-zond-accounts/src/account.ts
+++ b/packages/web3-zond-accounts/src/account.ts
@@ -39,9 +39,12 @@ import {
toChecksumAddress,
uint8ArrayConcat,
utf8ToHex,
+ hexToAddress,
} from '@theqrl/web3-utils';
import { isHexStrict, isNullish } from '@theqrl/web3-validator';
+import { CryptoPublicKeyBytes } from '@theqrl/dilithium5';
+import { Dilithium, getDilithiumAddressFromPK } from '@theqrl/wallet.js'
import { TransactionFactory } from './tx/transactionFactory.js';
import type {
SignTransactionResult,
@@ -49,11 +52,6 @@ import type {
Web3Account,
SignResult,
} from './types.js';
-import {
-
- CryptoPublicKeyBytes,
-} from '@theqrl/dilithium5';
-import { Dilithium, getDilithiumAddressFromPK } from '@theqrl/wallet.js'
/**
* Get the public key Uint8Array after the validation
@@ -81,7 +79,7 @@ export const parseAndValidatePublicKey = (data: Bytes, ignoreLength?: boolean):
/**
*
- * Hashes the given message. The data will be UTF-8 HEX decoded and enveloped as follows: "\\x19Ethereum Signed Message:\\n" + message.length + message and hashed using keccak256.
+ * Hashes the given message. The data will be UTF-8 HEX decoded and enveloped as follows: "\\x19Zond Signed Message:\\n" + message.length + message and hashed using keccak256.
*
* @param message - A message to hash, if its HEX it will be UTF8 decoded.
* @returns The hashed message
@@ -99,17 +97,17 @@ export const hashMessage = (message: string): string => {
const messageBytes = hexToBytes(messageHex);
const preamble = hexToBytes(
- fromUtf8(`\x19Ethereum Signed Message:\n${messageBytes.byteLength}`),
+ fromUtf8(`\x19Zond Signed Message:\n${messageBytes.byteLength}`),
);
- const ethMessage = uint8ArrayConcat(preamble, messageBytes);
+ const zondMessage = uint8ArrayConcat(preamble, messageBytes);
- return sha3Raw(ethMessage); // using keccak in web3-utils.sha3Raw instead of SHA3 (NIST Standard) as both are different
+ return sha3Raw(zondMessage); // using keccak in web3-utils.sha3Raw instead of SHA3 (NIST Standard) as both are different
};
/**
* Signs arbitrary data with the private key derived from the given seed.
- * **_NOTE:_** The value passed as the data parameter will be UTF-8 HEX decoded and wrapped as follows: "\\x19Ethereum Signed Message:\\n" + message.length + message
+ * **_NOTE:_** The value passed as the data parameter will be UTF-8 HEX decoded and wrapped as follows: "\\x19Zond Signed Message:\\n" + message.length + message
*
* @param data - The data to sign
* @param seed - The 40 byte seed
@@ -152,7 +150,7 @@ export const sign = (data: string, seed: Bytes): SignResult => {
* Signing an eip 1559 transaction
* ```ts
* signTransaction({
- * to: '0xF0109fC8DF283027b6285cc889F5aA624EaC1F55',
+ * to: 'ZF0109fC8DF283027b6285cc889F5aA624EaC1F55',
* maxPriorityFeePerGas: '0x3B9ACA00',
* maxFeePerGas: '0xB2D05E00',
* gasLimit: '0x6A4012',
@@ -207,7 +205,7 @@ export const signTransaction = async (
* @returns The Zond address used to sign this transaction
* ```ts
* recoverTransaction('0xf869808504e3b29200831e848094f0109fc8df283027b6285cc889f5aa624eac1f55843b9aca008025a0c9cf86333bcb065d140032ecaab5d9281bde80f21b9687b3e94161de42d51895a0727a108a0b8d101465414033c3f705a9c7b826e596766046ee1183dbc8aeaa68');
- * > "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23"
+ * > "Z2c7536E3605D9C16a7a3D7b1898e529396a65c23"
* ```
*/
export const recoverTransaction = (rawTransaction: HexString): Address => {
@@ -226,17 +224,18 @@ export const recoverTransaction = (rawTransaction: HexString): Address => {
* @example
* ```ts
* publicKeyToAddress("0xbe6383dad004f233317e46ddb46ad31b16064d14447a95cc1d8c8d4bc61c3728")
- * > "0xEB014f8c8B418Db6b45774c326A0E64C78914dC0"
+ * > "ZEB014f8c8B418Db6b45774c326A0E64C78914dC0"
* ```
*/
export const publicKeyToAddress = (publicKey: Bytes): string => {
const publicKeyUint8Array = parseAndValidatePublicKey(publicKey);
const address = getDilithiumAddressFromPK(publicKeyUint8Array);
- return toChecksumAddress(bytesToHex(address));
+ return toChecksumAddress(hexToAddress(bytesToHex(address)));
};
+// TODO(youtrack/theqrl/web3.js/3)
/**
* encrypt a private key with a password, returns a V3 JSON Keystore
*
@@ -446,7 +445,7 @@ export const parseAndValidateSeed = (data: Bytes , ignoreLength?: boolean): Uint
* ```ts
* seedToAccount("0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709");
* > {
- * address: '0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01',
+ * address: 'Zb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01',
* seed: '0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709',
* sign,
* signTransaction,
@@ -473,6 +472,7 @@ export const seedToAccount = (seed: Bytes, ignoreLength?: boolean): Web3Account
};
};
+// TODO(youtrack/theqrl/web3.js/3)
// /**
// *
// * Generates and returns a Web3Account object that includes the private and public key
@@ -482,7 +482,7 @@ export const seedToAccount = (seed: Bytes, ignoreLength?: boolean): Web3Account
// * ```ts
// * web3.zond.accounts.create();
// * {
-// * address: '0xbD504f977021b5E5DdccD8741A368b147B3B38bB',
+// * address: 'ZbD504f977021b5E5DdccD8741A368b147B3B38bB',
// * seed: '0x964ced1c69ad27a311c432fdc0d8211e987595f7eb34ab405a5f16bdc9563ec5',
// * signTransaction: [Function: signTransaction],
// * sign: [Function: sign],
@@ -525,7 +525,7 @@ export const create = (): Web3Account => {
// * }
// * }, '123').then(console.log)
// * > {
-// * address: '0xcdA9A91875fc35c8Ac1320E098e584495d66e47c',
+// * address: 'ZcdA9A91875fc35c8Ac1320E098e584495d66e47c',
// * privateKey: '67f476289210e3bef3c1c75e4de993ff0a00663df00def84e73aa7411eac18a6',
// * signTransaction: [Function: signTransaction],
// * sign: [Function: sign],
diff --git a/packages/web3-zond-accounts/src/common/chains/goerli.ts b/packages/web3-zond-accounts/src/common/chains/goerli.ts
deleted file mode 100644
index d09be79d..00000000
--- a/packages/web3-zond-accounts/src/common/chains/goerli.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-export default {
- "name": "goerli",
- "chainId": 5,
- "networkId": 5,
- "defaultHardfork": "merge",
- "consensus": {
- "type": "poa",
- "algorithm": "clique",
- "clique": {
- "period": 15,
- "epoch": 30000
- }
- },
- "comment": "Cross-client PoA test network",
- "url": "https://github.com/goerli/testnet",
- "genesis": {
- "timestamp": "0x5c51a607",
- "gasLimit": 10485760,
- "difficulty": 1,
- "nonce": "0x0000000000000000",
- "extraData": "0x22466c6578692069732061207468696e6722202d204166726900000000000000e0a2bd4258d2768837baa26a28fe71dc079f84c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
- },
- "hardforks": [
- {
- "name": "chainstart",
- "block": 0,
- "forkHash": "0xa3f5ab08"
- },
- {
- "name": "homestead",
- "block": 0,
- "forkHash": "0xa3f5ab08"
- },
- {
- "name": "tangerineWhistle",
- "block": 0,
- "forkHash": "0xa3f5ab08"
- },
- {
- "name": "spuriousDragon",
- "block": 0,
- "forkHash": "0xa3f5ab08"
- },
- {
- "name": "byzantium",
- "block": 0,
- "forkHash": "0xa3f5ab08"
- },
- {
- "name": "constantinople",
- "block": 0,
- "forkHash": "0xa3f5ab08"
- },
- {
- "name": "petersburg",
- "block": 0,
- "forkHash": "0xa3f5ab08"
- },
- {
- "name": "istanbul",
- "block": 1561651,
- "forkHash": "0xc25efa5c"
- },
- {
- "name": "berlin",
- "block": 4460644,
- "forkHash": "0x757a1c47"
- },
- {
- "name": "london",
- "block": 5062605,
- "forkHash": "0xb8c6299d"
- },
- {
- "//_comment": "The forkHash will remain same as mergeForkIdTransition is post merge, terminal block: https://goerli.etherscan.io/block/7382818",
- "name": "merge",
- "ttd": "10790000",
- "block": 7382819,
- "forkHash": "0xb8c6299d"
- },
- {
- "name": "mergeForkIdTransition",
- "block": null,
- "forkHash": null
- },
- {
- "name": "shanghai",
- "block": null,
- "forkHash": null
- }
- ],
- "bootstrapNodes": [],
- "dnsNetworks": [
- "enrtree://AKA3AM6LPBYEUDMVNU3BSVQJ5AD45Y7YPOHJLEF6W26QOE4VTUDPE@all.goerli.ethdisco.net"
- ]
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/chains/mainnet.ts b/packages/web3-zond-accounts/src/common/chains/mainnet.ts
index d18bc733..fa91e6fe 100644
--- a/packages/web3-zond-accounts/src/common/chains/mainnet.ts
+++ b/packages/web3-zond-accounts/src/common/chains/mainnet.ts
@@ -2,106 +2,22 @@ export default {
"name": "mainnet",
"chainId": 1,
"networkId": 1,
- "defaultHardfork": "merge",
+ "defaultHardfork": "shanghai",
"consensus": {
- "type": "pow",
- "algorithm": "ethash",
- "ethash": {}
+ "type": "pos",
+ "algorithm": "casper",
+ "casper": {}
},
- "comment": "The Ethereum main chain",
+ "comment": "The Zond main chain",
"url": "https://ethstats.net/",
"genesis": {
"gasLimit": 5000,
- "difficulty": 17179869184,
- "nonce": "0x0000000000000042",
"extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa"
},
"hardforks": [
- {
- "name": "chainstart",
- "block": 0,
- "forkHash": "0xfc64ec04"
- },
- {
- "name": "homestead",
- "block": 1150000,
- "forkHash": "0x97c2c34c"
- },
- {
- "name": "dao",
- "block": 1920000,
- "forkHash": "0x91d1f948"
- },
- {
- "name": "tangerineWhistle",
- "block": 2463000,
- "forkHash": "0x7a64da13"
- },
- {
- "name": "spuriousDragon",
- "block": 2675000,
- "forkHash": "0x3edd5b10"
- },
- {
- "name": "byzantium",
- "block": 4370000,
- "forkHash": "0xa00bc324"
- },
- {
- "name": "constantinople",
- "block": 7280000,
- "forkHash": "0x668db0af"
- },
- {
- "name": "petersburg",
- "block": 7280000,
- "forkHash": "0x668db0af"
- },
- {
- "name": "istanbul",
- "block": 9069000,
- "forkHash": "0x879d6e30"
- },
- {
- "name": "muirGlacier",
- "block": 9200000,
- "forkHash": "0xe029e991"
- },
- {
- "name": "berlin",
- "block": 12244000,
- "forkHash": "0x0eb440f6"
- },
- {
- "name": "london",
- "block": 12965000,
- "forkHash": "0xb715077d"
- },
- {
- "name": "arrowGlacier",
- "block": 13773000,
- "forkHash": "0x20c327fc"
- },
- {
- "name": "grayGlacier",
- "block": 15050000,
- "forkHash": "0xf0afd0e3"
- },
- {
- "//_comment": "The forkHash will remain same as mergeForkIdTransition is post merge, terminal block: https://etherscan.io/block/15537393",
- "name": "merge",
- "ttd": "58750000000000000000000",
- "block": 15537394,
- "forkHash": "0xf0afd0e3"
- },
- {
- "name": "mergeForkIdTransition",
- "block": null,
- "forkHash": null
- },
{
"name": "shanghai",
- "block": null,
+ "block": 0,
"forkHash": null
}
],
diff --git a/packages/web3-zond-accounts/src/common/chains/sepolia.ts b/packages/web3-zond-accounts/src/common/chains/sepolia.ts
deleted file mode 100644
index 1de20e44..00000000
--- a/packages/web3-zond-accounts/src/common/chains/sepolia.ts
+++ /dev/null
@@ -1,100 +0,0 @@
-export default {
- "name": "sepolia",
- "chainId": 11155111,
- "networkId": 11155111,
- "defaultHardfork": "merge",
- "consensus": {
- "type": "pow",
- "algorithm": "ethash",
- "ethash": {}
- },
- "comment": "PoW test network to replace Ropsten",
- "url": "https://github.com/ethereum/go-ethereum/pull/23730",
- "genesis": {
- "timestamp": "0x6159af19",
- "gasLimit": 30000000,
- "difficulty": 131072,
- "nonce": "0x0000000000000000",
- "extraData": "0x5365706f6c69612c20417468656e732c204174746963612c2047726565636521"
- },
- "hardforks": [
- {
- "name": "chainstart",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "homestead",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "tangerineWhistle",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "spuriousDragon",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "byzantium",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "constantinople",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "petersburg",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "istanbul",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "muirGlacier",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "berlin",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "london",
- "block": 0,
- "forkHash": "0xfe3366e7"
- },
- {
- "//_comment": "The forkHash will remain same as mergeForkIdTransition is post merge, terminal block: https://sepolia.etherscan.io/block/1450408",
- "name": "merge",
- "ttd": "17000000000000000",
- "block": 1450409,
- "forkHash": "0xfe3366e7"
- },
- {
- "name": "mergeForkIdTransition",
- "block": 1735371,
- "forkHash": "0xb96cbd13"
- },
- {
- "name": "shanghai",
- "block": null,
- "timestamp": "1677557088",
- "forkHash": "0xf7f9bc08"
- }
- ],
- "bootstrapNodes": [],
- "dnsNetworks": [
- "enrtree://AKA3AM6LPBYEUDMVNU3BSVQJ5AD45Y7YPOHJLEF6W26QOE4VTUDPE@all.sepolia.ethdisco.net"
- ]
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/common.ts b/packages/web3-zond-accounts/src/common/common.ts
index 433efb6b..04e102e9 100644
--- a/packages/web3-zond-accounts/src/common/common.ts
+++ b/packages/web3-zond-accounts/src/common/common.ts
@@ -20,9 +20,7 @@ import type { Numbers } from '@theqrl/web3-types';
import { bytesToHex, hexToBytes, uint8ArrayConcat } from '@theqrl/web3-utils';
import { TypeOutput } from './types.js';
import { intToUint8Array, toType, parseGzondGenesis } from './utils.js';
-import goerli from './chains/goerli.js';
import mainnet from './chains/mainnet.js';
-import sepolia from './chains/sepolia.js';
import { EIPs } from './eips/index.js';
import type { ConsensusAlgorithm, ConsensusType } from './enums.js';
import { Chain, CustomChain, Hardfork } from './enums.js';
@@ -34,10 +32,8 @@ import type {
ChainConfig,
ChainName,
ChainsConfig,
- CliqueConfig,
CommonOpts,
CustomCommonOpts,
- EthashConfig,
GenesisBlockConfig,
GzondConfigOpts,
HardforkConfig,
@@ -106,80 +102,7 @@ export class Common extends EventEmitter {
...opts,
});
}
- if (chainParamsOrName === CustomChain.PolygonMainnet) {
- return Common.custom(
- {
- name: CustomChain.PolygonMainnet,
- chainId: 137,
- networkId: 137,
- },
- opts,
- );
- }
- if (chainParamsOrName === CustomChain.PolygonMumbai) {
- return Common.custom(
- {
- name: CustomChain.PolygonMumbai,
- chainId: 80001,
- networkId: 80001,
- },
- opts,
- );
- }
- if (chainParamsOrName === CustomChain.ArbitrumRinkebyTestnet) {
- return Common.custom(
- {
- name: CustomChain.ArbitrumRinkebyTestnet,
- chainId: 421611,
- networkId: 421611,
- },
- opts,
- );
- }
- if (chainParamsOrName === CustomChain.ArbitrumOne) {
- return Common.custom(
- {
- name: CustomChain.ArbitrumOne,
- chainId: 42161,
- networkId: 42161,
- },
- opts,
- );
- }
- if (chainParamsOrName === CustomChain.xDaiChain) {
- return Common.custom(
- {
- name: CustomChain.xDaiChain,
- chainId: 100,
- networkId: 100,
- },
- opts,
- );
- }
-
- if (chainParamsOrName === CustomChain.OptimisticKovan) {
- return Common.custom(
- {
- name: CustomChain.OptimisticKovan,
- chainId: 69,
- networkId: 69,
- },
- // Optimism has not implemented the London hardfork yet (targeting Q1.22)
- { hardfork: Hardfork.Berlin, ...opts },
- );
- }
-
- if (chainParamsOrName === CustomChain.OptimisticEthereum) {
- return Common.custom(
- {
- name: CustomChain.OptimisticEthereum,
- chainId: 10,
- networkId: 10,
- },
- // Optimism has not implemented the London hardfork yet (targeting Q1.22)
- { hardfork: Hardfork.Berlin, ...opts },
- );
- }
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
throw new Error(`Custom chain ${chainParamsOrName} not supported`);
}
@@ -187,14 +110,14 @@ export class Common extends EventEmitter {
/**
* Static method to load and set common from a gzond genesis json
* @param genesisJson json of gzond configuration
- * @param { chain, eips, genesisHash, hardfork, mergeForkIdPostMerge } to further configure the common instance
+ * @param { chain, eips, genesisHash, hardfork } to further configure the common instance
* @returns Common
*/
public static fromGzondGenesis(
genesisJson: any,
- { chain, eips, genesisHash, hardfork, mergeForkIdPostMerge }: GzondConfigOpts,
+ { chain, eips, genesisHash, hardfork }: GzondConfigOpts,
): Common {
- const genesisParams = parseGzondGenesis(genesisJson, chain, mergeForkIdPostMerge);
+ const genesisParams = parseGzondGenesis(genesisJson, chain);
const common = new Common({
chain: genesisParams.name ?? 'custom',
customChains: [genesisParams],
@@ -245,7 +168,7 @@ export class Common extends EventEmitter {
super();
this._customChains = opts.customChains ?? [];
this._chainParams = this.setChain(opts.chain);
- this.DEFAULT_HARDFORK = this._chainParams.defaultHardfork ?? Hardfork.Merge;
+ this.DEFAULT_HARDFORK = this._chainParams.defaultHardfork ?? Hardfork.Shanghai;
// Assign hardfork changes in the sequence of the applied hardforks
this.HARDFORK_CHANGES = this.hardforks().map(hf => [
hf.name as HardforkSpecKeys,
@@ -314,46 +237,27 @@ export class Common extends EventEmitter {
}
/**
- * Returns the hardfork based on the block number or an optional
- * total difficulty (Merge HF) provided.
- *
- * An optional TD takes precedence in case the corresponding HF block
- * is set to `null` or otherwise needs to match (if not an error
- * will be thrown).
+ * Returns the hardfork based on the block number.
*
* @param blockNumber
- * @param td : total difficulty of the parent block (for block hf) OR of the chain latest (for chain hf)
* @param timestamp: timestamp in seconds at which block was/is to be minted
* @returns The name of the HF
*/
public getHardforkByBlockNumber(
_blockNumber: Numbers,
- _td?: Numbers,
_timestamp?: Numbers,
): string {
const blockNumber = toType(_blockNumber, TypeOutput.BigInt);
- const td = toType(_td, TypeOutput.BigInt);
const timestamp = toType(_timestamp, TypeOutput.Number);
- // Filter out hardforks with no block number, no ttd or no timestamp (i.e. unapplied hardforks)
+ // Filter out hardforks with no block number or no timestamp (i.e. unapplied hardforks)
const hfs = this.hardforks().filter(
hf =>
// eslint-disable-next-line no-null/no-null
hf.block !== null ||
- // eslint-disable-next-line no-null/no-null
- (hf.ttd !== null && hf.ttd !== undefined) ||
hf.timestamp !== undefined,
);
- // eslint-disable-next-line no-null/no-null
- const mergeIndex = hfs.findIndex(hf => hf.ttd !== null && hf.ttd !== undefined);
- const doubleTTDHF = hfs
- .slice(mergeIndex + 1)
- // eslint-disable-next-line no-null/no-null
- .findIndex(hf => hf.ttd !== null && hf.ttd !== undefined);
- if (doubleTTDHF >= 0) {
- throw Error(`More than one merge hardforks found with ttd specified`);
- }
-
+
// Find the first hardfork that has a block number greater than `blockNumber`
// (skips the merge hardfork since it cannot have a block number specified).
// If timestamp is not provided, it also skips timestamps hardforks to continue
@@ -374,41 +278,18 @@ export class Common extends EventEmitter {
throw Error('Must have at least one hardfork at block 0');
}
- // If timestamp is not provided, we need to rollback to the last hf with block or ttd
+ // If timestamp is not provided, we need to rollback to the last hf with block
if (timestamp === undefined) {
const stepBack = hfs
.slice(0, hfIndex)
.reverse()
// eslint-disable-next-line no-null/no-null
- .findIndex(hf => hf.block !== null || hf.ttd !== undefined);
+ .findIndex(hf => hf.block !== null);
hfIndex -= stepBack;
}
// Move hfIndex one back to arrive at candidate hardfork
hfIndex -= 1;
- // If the timestamp was not provided, we could have skipped timestamp hardforks to look for number
- // hardforks. so it will now be needed to rollback
- // eslint-disable-next-line no-null/no-null
- if (hfs[hfIndex].block === null && hfs[hfIndex].timestamp === undefined) {
- // We're on the merge hardfork. Let's check the TTD
- // eslint-disable-next-line no-null/no-null
- if (td === undefined || td === null || BigInt(hfs[hfIndex].ttd!) > td) {
- // Merge ttd greater than current td so we're on hardfork before merge
- hfIndex -= 1;
- }
- // eslint-disable-next-line no-null/no-null
- } else if (mergeIndex >= 0 && td !== undefined && td !== null) {
- if (hfIndex >= mergeIndex && BigInt(hfs[mergeIndex].ttd!) > td) {
- throw Error(
- 'Maximum HF determined by total difficulty is lower than the block number HF',
- );
- } else if (hfIndex < mergeIndex && BigInt(hfs[mergeIndex].ttd!) <= td) {
- throw Error(
- 'HF determined by block number is lower than the minimum total difficulty HF',
- );
- }
- }
-
const hfStartIndex = hfIndex;
// Move the hfIndex to the end of the hardforks that might be scheduled on the same block/timestamp
// This won't anyway be the case with Merge hfs
@@ -431,7 +312,7 @@ export class Common extends EventEmitter {
);
if (minTimeStamp > timestamp) {
throw Error(
- `Maximum HF determined by timestamp is lower than the block number/ttd HF`,
+ `Maximum HF determined by timestamp is lower than the block number HF`,
);
}
@@ -443,7 +324,7 @@ export class Common extends EventEmitter {
timestamp,
);
if (maxTimeStamp < timestamp) {
- throw Error(`Maximum HF determined by block number/ttd is lower than timestamp HF`);
+ throw Error(`Maximum HF determined by block number is lower than timestamp HF`);
}
}
const hardfork = hfs[hfIndex];
@@ -451,24 +332,17 @@ export class Common extends EventEmitter {
}
/**
- * Sets a new hardfork based on the block number or an optional
- * total difficulty (Merge HF) provided.
- *
- * An optional TD takes precedence in case the corresponding HF block
- * is set to `null` or otherwise needs to match (if not an error
- * will be thrown).
+ * Sets a new hardfork based on the block number provided.
*
* @param blockNumber
- * @param td
* @param timestamp
* @returns The name of the HF set
*/
public setHardforkByBlockNumber(
blockNumber: Numbers,
- td?: Numbers,
timestamp?: Numbers,
): string {
- const hardfork = this.getHardforkByBlockNumber(blockNumber, td, timestamp);
+ const hardfork = this.getHardforkByBlockNumber(blockNumber, timestamp);
this.setHardfork(hardfork);
return hardfork;
}
@@ -529,7 +403,7 @@ export class Common extends EventEmitter {
* Otherwise the parameter if taken from the latest applied HF with
* a change on the respective parameter.
*
- * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')
+ * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pos')
* @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)
* @returns The value requested or `BigInt(0)` if not found
*/
@@ -546,7 +420,7 @@ export class Common extends EventEmitter {
/**
* Returns the parameter corresponding to a hardfork
- * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')
+ * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pos')
* @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)
* @param hardfork Hardfork name
* @returns The value requested or `BigInt(0)` if not found
@@ -585,7 +459,7 @@ export class Common extends EventEmitter {
/**
* Returns a parameter corresponding to an EIP
- * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')
+ * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pos')
* @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)
* @param eip Number of the EIP
* @returns The value requested or `undefined` if not found
@@ -611,22 +485,20 @@ export class Common extends EventEmitter {
}
/**
- * Returns a parameter for the hardfork active on block number or
- * optional provided total difficulty (Merge HF)
+ * Returns a parameter for the hardfork active on block number provided.
+ *
* @param topic Parameter topic
* @param name Parameter name
* @param blockNumber Block number
- * @param td Total difficulty
* * @returns The value requested or `BigInt(0)` if not found
*/
public paramByBlock(
topic: string,
name: string,
blockNumber: Numbers,
- td?: Numbers,
timestamp?: Numbers,
): bigint {
- const hardfork = this.getHardforkByBlockNumber(blockNumber, td, timestamp);
+ const hardfork = this.getHardforkByBlockNumber(blockNumber, timestamp);
return this.paramByHardfork(topic, name, hardfork);
}
@@ -774,37 +646,6 @@ export class Common extends EventEmitter {
return null;
}
- /**
- * Returns the hardfork change total difficulty (Merge HF) for hardfork provided or set
- * @param hardfork Hardfork name, optional if HF set
- * @returns Total difficulty or null if no set
- */
- // eslint-disable-next-line @typescript-eslint/ban-types
- public hardforkTTD(_hardfork?: string | Hardfork): bigint | null {
- const hardfork = _hardfork ?? this._hardfork;
- const ttd = this._getHardfork(hardfork)?.ttd;
- // eslint-disable-next-line no-null/no-null
- if (ttd === undefined || ttd === null) {
- // eslint-disable-next-line no-null/no-null
- return null;
- }
- return BigInt(ttd);
- }
-
- /**
- * True if block number provided is the hardfork (given or set) change block
- * @param blockNumber Number of the block to check
- * @param hardfork Hardfork name, optional if HF set
- * @returns True if blockNumber is HF block
- * @deprecated
- */
- public isHardforkBlock(_blockNumber: Numbers, _hardfork?: string | Hardfork): boolean {
- const blockNumber = toType(_blockNumber, TypeOutput.BigInt);
- const hardfork = _hardfork ?? this._hardfork;
- const block = this.hardforkBlock(hardfork);
- return typeof block === 'bigint' && block !== BigInt(0) ? block === blockNumber : false;
- }
-
/**
* Returns the change block for the next hardfork after the hardfork provided or set
* @param hardfork Hardfork name, optional if HF set
@@ -815,11 +656,7 @@ export class Common extends EventEmitter {
const hardfork = _hardfork ?? this._hardfork;
const hfs = this.hardforks();
let hfIndex = hfs.findIndex(hf => hf.name === hardfork);
- // If the current hardfork is merge, go one behind as merge hf is not part of these
- // calcs even if the merge hf block is set
- if (hardfork === Hardfork.Merge) {
- hfIndex -= 1;
- }
+
// Hardfork not found
if (hfIndex < 0) {
// eslint-disable-next-line no-null/no-null
@@ -843,7 +680,6 @@ export class Common extends EventEmitter {
: // eslint-disable-next-line no-null/no-null
null;
return (
- hf.name !== Hardfork.Merge &&
// eslint-disable-next-line no-null/no-null
hfTimeOrBlock !== null &&
hfTimeOrBlock !== undefined &&
@@ -866,68 +702,6 @@ export class Common extends EventEmitter {
return BigInt(nextHfBlock);
}
- /**
- * Returns the change block for the next hardfork after the hardfork provided or set
- * @param hardfork Hardfork name, optional if HF set
- * @returns Block number or null if not available
- * @deprecated
- */
- // eslint-disable-next-line @typescript-eslint/ban-types
- public nextHardforkBlock(_hardfork?: string | Hardfork): bigint | null {
- const hardfork = _hardfork ?? this._hardfork;
- let hfBlock = this.hardforkBlock(hardfork);
- // If this is a merge hardfork with block not set, then we fallback to previous hardfork
- // to find the nextHardforkBlock
- // eslint-disable-next-line no-null/no-null
- if (hfBlock === null && hardfork === Hardfork.Merge) {
- const hfs = this.hardforks();
- // eslint-disable-next-line no-null/no-null
- const mergeIndex = hfs.findIndex(hf => hf.ttd !== null && hf.ttd !== undefined);
- if (mergeIndex < 0) {
- throw Error(`Merge hardfork should have been found`);
- }
- hfBlock = this.hardforkBlock(hfs[mergeIndex - 1].name);
- }
- // eslint-disable-next-line no-null/no-null
- if (hfBlock === null) {
- // eslint-disable-next-line no-null/no-null
- return null;
- }
- // Next fork block number or null if none available
- // Logic: if accumulator is still null and on the first occurrence of
- // a block greater than the current hfBlock set the accumulator,
- // pass on the accumulator as the final result from this time on
- // eslint-disable-next-line no-null/no-null, @typescript-eslint/ban-types
- const nextHfBlock = this.hardforks().reduce((acc: bigint | null, hf: HardforkConfig) => {
- // We need to ignore the merge block in our next hardfork calc
- const block = BigInt(
- // eslint-disable-next-line no-null/no-null
- hf.block === null || (hf.ttd !== undefined && hf.ttd !== null) ? 0 : hf.block,
- );
- // Typescript can't seem to follow that the hfBlock is not null at this point
- // eslint-disable-next-line no-null/no-null
- return block > hfBlock! && acc === null ? block : acc;
- // eslint-disable-next-line no-null/no-null
- }, null);
- return nextHfBlock;
- }
-
- /**
- * True if block number provided is the hardfork change block following the hardfork given or set
- * @param blockNumber Number of the block to check
- * @param hardfork Hardfork name, optional if HF set
- * @returns True if blockNumber is HF block
- * @deprecated
- */
- public isNextHardforkBlock(_blockNumber: Numbers, _hardfork?: string | Hardfork): boolean {
- const blockNumber = toType(_blockNumber, TypeOutput.BigInt);
- const hardfork = _hardfork ?? this._hardfork;
- // eslint-disable-next-line deprecation/deprecation
- const nextHardforkBlock = this.nextHardforkBlock(hardfork);
- // eslint-disable-next-line no-null/no-null
- return nextHardforkBlock === null ? false : nextHardforkBlock === blockNumber;
- }
-
/**
* Internal helper function to calculate a fork hash
* @param hardfork Hardfork name
@@ -938,7 +712,7 @@ export class Common extends EventEmitter {
let hfUint8Array = new Uint8Array();
let prevBlockOrTime = 0;
for (const hf of this.hardforks()) {
- const { block, timestamp, name } = hf;
+ const { block, timestamp } = hf;
// Timestamp to be used for timestamp based hfs even if we may bundle
// block number with them retrospectively
let blockOrTime = timestamp ?? block;
@@ -947,12 +721,10 @@ export class Common extends EventEmitter {
// Skip for chainstart (0), not applied HFs (null) and
// when already applied on same blockOrTime HFs
- // and on the merge since forkhash doesn't change on merge hf
if (
typeof blockOrTime === 'number' &&
blockOrTime !== 0 &&
- blockOrTime !== prevBlockOrTime &&
- name !== Hardfork.Merge
+ blockOrTime !== prevBlockOrTime
) {
const hfBlockUint8Array = hexToBytes(blockOrTime.toString(16).padStart(16, '0'));
hfUint8Array = uint8ArrayConcat(hfUint8Array, hfBlockUint8Array);
@@ -982,7 +754,7 @@ export class Common extends EventEmitter {
// eslint-disable-next-line no-null/no-null
data === null ||
// eslint-disable-next-line no-null/no-null
- (data?.block === null && data?.timestamp === undefined && data?.ttd === undefined)
+ (data?.block === null && data?.timestamp === undefined)
) {
const msg = 'No fork hash calculation possible for future hardfork';
throw new Error(msg);
@@ -1019,8 +791,7 @@ export class Common extends EventEmitter {
// eslint-disable-next-line no-null/no-null
(hf.forkHash === null || hf.forkHash === undefined) &&
// eslint-disable-next-line no-null/no-null
- ((blockOrTime !== null && blockOrTime !== undefined) ||
- typeof hf.ttd !== 'undefined')
+ (blockOrTime !== null && blockOrTime !== undefined)
) {
hf.forkHash = this.forkHash(hf.name, genesisHash);
}
@@ -1101,7 +872,7 @@ export class Common extends EventEmitter {
/**
* Returns the consensus type of the network
- * Possible values: "pow"|"poa"|"pos"
+ * Possible values: "pos"
*
* Note: This value can update along a Hardfork.
*/
@@ -1123,9 +894,7 @@ export class Common extends EventEmitter {
/**
* Returns the concrete consensus implementation
* algorithm or protocol for the network
- * e.g. "ethash" for "pow" consensus type,
- * "clique" for "poa" consensus type or
- * "casper" for "pos" consensus type.
+ * e.g. "casper" for "pos" consensus type.
*
* Note: This value can update along a Hardfork.
*/
@@ -1151,13 +920,11 @@ export class Common extends EventEmitter {
* Expected returns (parameters must be present in
* the respective chain json files):
*
- * ethash: empty object
- * clique: period, epoch
* casper: empty object
*
* Note: This value can update along a Hardfork.
*/
- public consensusConfig(): { [key: string]: CliqueConfig | EthashConfig | CasperConfig } {
+ public consensusConfig(): { [key: string]: CasperConfig } {
const hardfork = this.hardfork();
let value;
@@ -1194,7 +961,7 @@ export class Common extends EventEmitter {
for (const [name, id] of Object.entries(Chain)) {
names[id] = name.toLowerCase();
}
- const chains = { mainnet, goerli, sepolia } as ChainsConfig;
+ const chains = { mainnet } as ChainsConfig;
if (customChains) {
for (const chain of customChains) {
const { name } = chain;
diff --git a/packages/web3-zond-accounts/src/common/eips/1153.ts b/packages/web3-zond-accounts/src/common/eips/1153.ts
deleted file mode 100644
index a7440d29..00000000
--- a/packages/web3-zond-accounts/src/common/eips/1153.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-export default {
- "name": "EIP-1153",
- "number": 1153,
- "comment": "Transient Storage",
- "url": "https://eips.ethereum.org/EIPS/eip-1153",
- "status": "Review",
- "minimumHardfork": "chainstart",
- "requiredEIPs": [],
- "gasConfig": {},
- "gasPrices": {
- "tstore": {
- "v": 100,
- "d": "Base fee of the TSTORE opcode"
- },
- "tload": {
- "v": 100,
- "d": "Base fee of the TLOAD opcode"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/1559.ts b/packages/web3-zond-accounts/src/common/eips/1559.ts
deleted file mode 100644
index ef3f0442..00000000
--- a/packages/web3-zond-accounts/src/common/eips/1559.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-export default {
- "name": "EIP-1559",
- "number": 1559,
- "comment": "Fee market change for ETH 1.0 chain",
- "url": "https://eips.ethereum.org/EIPS/eip-1559",
- "status": "Final",
- "minimumHardfork": "berlin",
- "requiredEIPs": [2930],
- "gasConfig": {
- "baseFeeMaxChangeDenominator": {
- "v": 8,
- "d": "Maximum base fee change denominator"
- },
- "elasticityMultiplier": {
- "v": 2,
- "d": "Maximum block gas target elasticity"
- },
- "initialBaseFee": {
- "v": 1000000000,
- "d": "Initial base fee on first EIP1559 block"
- }
- },
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/2315.ts b/packages/web3-zond-accounts/src/common/eips/2315.ts
deleted file mode 100644
index d29efa30..00000000
--- a/packages/web3-zond-accounts/src/common/eips/2315.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-export default {
- "name": "EIP-2315",
- "number": 2315,
- "comment": "Simple subroutines for the EVM",
- "url": "https://eips.ethereum.org/EIPS/eip-2315",
- "status": "Draft",
- "minimumHardfork": "istanbul",
- "gasConfig": {},
- "gasPrices": {
- "beginsub": {
- "v": 2,
- "d": "Base fee of the BEGINSUB opcode"
- },
- "returnsub": {
- "v": 5,
- "d": "Base fee of the RETURNSUB opcode"
- },
- "jumpsub": {
- "v": 10,
- "d": "Base fee of the JUMPSUB opcode"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/2537.ts b/packages/web3-zond-accounts/src/common/eips/2537.ts
deleted file mode 100644
index 14fa62ab..00000000
--- a/packages/web3-zond-accounts/src/common/eips/2537.ts
+++ /dev/null
@@ -1,179 +0,0 @@
-export default {
- "name": "EIP-2537",
- "number": 2537,
- "comment": "BLS12-381 precompiles",
- "url": "https://eips.ethereum.org/EIPS/eip-2537",
- "status": "Draft",
- "minimumHardfork": "chainstart",
- "gasConfig": {},
- "gasPrices": {
- "Bls12381G1AddGas": {
- "v": 600,
- "d": "Gas cost of a single BLS12-381 G1 addition precompile-call"
- },
- "Bls12381G1MulGas": {
- "v": 12000,
- "d": "Gas cost of a single BLS12-381 G1 multiplication precompile-call"
- },
- "Bls12381G2AddGas": {
- "v": 4500,
- "d": "Gas cost of a single BLS12-381 G2 addition precompile-call"
- },
- "Bls12381G2MulGas": {
- "v": 55000,
- "d": "Gas cost of a single BLS12-381 G2 multiplication precompile-call"
- },
- "Bls12381PairingBaseGas": {
- "v": 115000,
- "d": "Base gas cost of BLS12-381 pairing check"
- },
- "Bls12381PairingPerPairGas": {
- "v": 23000,
- "d": "Per-pair gas cost of BLS12-381 pairing check"
- },
- "Bls12381MapG1Gas": {
- "v": 5500,
- "d": "Gas cost of BLS12-381 map field element to G1"
- },
- "Bls12381MapG2Gas": {
- "v": 110000,
- "d": "Gas cost of BLS12-381 map field element to G2"
- },
- "Bls12381MultiExpGasDiscount": {
- "v": [
- [1, 1200],
- [2, 888],
- [3, 764],
- [4, 641],
- [5, 594],
- [6, 547],
- [7, 500],
- [8, 453],
- [9, 438],
- [10, 423],
- [11, 408],
- [12, 394],
- [13, 379],
- [14, 364],
- [15, 349],
- [16, 334],
- [17, 330],
- [18, 326],
- [19, 322],
- [20, 318],
- [21, 314],
- [22, 310],
- [23, 306],
- [24, 302],
- [25, 298],
- [26, 294],
- [27, 289],
- [28, 285],
- [29, 281],
- [30, 277],
- [31, 273],
- [32, 269],
- [33, 268],
- [34, 266],
- [35, 265],
- [36, 263],
- [37, 262],
- [38, 260],
- [39, 259],
- [40, 257],
- [41, 256],
- [42, 254],
- [43, 253],
- [44, 251],
- [45, 250],
- [46, 248],
- [47, 247],
- [48, 245],
- [49, 244],
- [50, 242],
- [51, 241],
- [52, 239],
- [53, 238],
- [54, 236],
- [55, 235],
- [56, 233],
- [57, 232],
- [58, 231],
- [59, 229],
- [60, 228],
- [61, 226],
- [62, 225],
- [63, 223],
- [64, 222],
- [65, 221],
- [66, 220],
- [67, 219],
- [68, 219],
- [69, 218],
- [70, 217],
- [71, 216],
- [72, 216],
- [73, 215],
- [74, 214],
- [75, 213],
- [76, 213],
- [77, 212],
- [78, 211],
- [79, 211],
- [80, 210],
- [81, 209],
- [82, 208],
- [83, 208],
- [84, 207],
- [85, 206],
- [86, 205],
- [87, 205],
- [88, 204],
- [89, 203],
- [90, 202],
- [91, 202],
- [92, 201],
- [93, 200],
- [94, 199],
- [95, 199],
- [96, 198],
- [97, 197],
- [98, 196],
- [99, 196],
- [100, 195],
- [101, 194],
- [102, 193],
- [103, 193],
- [104, 192],
- [105, 191],
- [106, 191],
- [107, 190],
- [108, 189],
- [109, 188],
- [110, 188],
- [111, 187],
- [112, 186],
- [113, 185],
- [114, 185],
- [115, 184],
- [116, 183],
- [117, 182],
- [118, 182],
- [119, 181],
- [120, 180],
- [121, 179],
- [122, 179],
- [123, 178],
- [124, 177],
- [125, 176],
- [126, 176],
- [127, 175],
- [128, 174]
- ],
- "d": "Discount gas costs of calls to the MultiExp precompiles with `k` (point, scalar) pair"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/2565.ts b/packages/web3-zond-accounts/src/common/eips/2565.ts
deleted file mode 100644
index 1c1743e9..00000000
--- a/packages/web3-zond-accounts/src/common/eips/2565.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export default {
- "name": "EIP-2565",
- "number": 2565,
- "comment": "ModExp gas cost",
- "url": "https://eips.ethereum.org/EIPS/eip-2565",
- "status": "Final",
- "minimumHardfork": "byzantium",
- "gasConfig": {},
- "gasPrices": {
- "modexpGquaddivisor": {
- "v": 3,
- "d": "Gquaddivisor from modexp precompile for gas calculation"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/2718.ts b/packages/web3-zond-accounts/src/common/eips/2718.ts
deleted file mode 100644
index f8815c6d..00000000
--- a/packages/web3-zond-accounts/src/common/eips/2718.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export default {
- "name": "EIP-2718",
- "comment": "Typed Transaction Envelope",
- "url": "https://eips.ethereum.org/EIPS/eip-2718",
- "status": "Final",
- "minimumHardfork": "chainstart",
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/2929.ts b/packages/web3-zond-accounts/src/common/eips/2929.ts
deleted file mode 100644
index f52dc217..00000000
--- a/packages/web3-zond-accounts/src/common/eips/2929.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-export default {
- "name": "EIP-2929",
- "comment": "Gas cost increases for state access opcodes",
- "url": "https://eips.ethereum.org/EIPS/eip-2929",
- "status": "Final",
- "minimumHardfork": "chainstart",
- "gasConfig": {},
- "gasPrices": {
- "coldsload": {
- "v": 2100,
- "d": "Gas cost of the first read of storage from a given location (per transaction)"
- },
- "coldaccountaccess": {
- "v": 2600,
- "d": "Gas cost of the first read of a given address (per transaction)"
- },
- "warmstorageread": {
- "v": 100,
- "d": "Gas cost of reading storage locations which have already loaded 'cold'"
- },
- "sstoreCleanGasEIP2200": {
- "v": 2900,
- "d": "Once per SSTORE operation from clean non-zero to something else"
- },
- "sstoreNoopGasEIP2200": {
- "v": 100,
- "d": "Once per SSTORE operation if the value doesn't change"
- },
- "sstoreDirtyGasEIP2200": {
- "v": 100,
- "d": "Once per SSTORE operation if a dirty value is changed"
- },
- "sstoreInitRefundEIP2200": {
- "v": 19900,
- "d": "Once per SSTORE operation for resetting to the original zero value"
- },
- "sstoreCleanRefundEIP2200": {
- "v": 4900,
- "d": "Once per SSTORE operation for resetting to the original non-zero value"
- },
- "call": {
- "v": 0,
- "d": "Base fee of the CALL opcode"
- },
- "callcode": {
- "v": 0,
- "d": "Base fee of the CALLCODE opcode"
- },
- "delegatecall": {
- "v": 0,
- "d": "Base fee of the DELEGATECALL opcode"
- },
- "staticcall": {
- "v": 0,
- "d": "Base fee of the STATICCALL opcode"
- },
- "balance": {
- "v": 0,
- "d": "Base fee of the BALANCE opcode"
- },
- "extcodesize": {
- "v": 0,
- "d": "Base fee of the EXTCODESIZE opcode"
- },
- "extcodecopy": {
- "v": 0,
- "d": "Base fee of the EXTCODECOPY opcode"
- },
- "extcodehash": {
- "v": 0,
- "d": "Base fee of the EXTCODEHASH opcode"
- },
- "sload": {
- "v": 0,
- "d": "Base fee of the SLOAD opcode"
- },
- "sstore": {
- "v": 0,
- "d": "Base fee of the SSTORE opcode"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/2930.ts b/packages/web3-zond-accounts/src/common/eips/2930.ts
deleted file mode 100644
index 52500d0c..00000000
--- a/packages/web3-zond-accounts/src/common/eips/2930.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-export default {
- "name": "EIP-2930",
- "comment": "Optional access lists",
- "url": "https://eips.ethereum.org/EIPS/eip-2930",
- "status": "Final",
- "minimumHardfork": "istanbul",
- "requiredEIPs": [2718, 2929],
- "gasConfig": {},
- "gasPrices": {
- "accessListStorageKeyCost": {
- "v": 1900,
- "d": "Gas cost per storage key in an Access List transaction"
- },
- "accessListAddressCost": {
- "v": 2400,
- "d": "Gas cost per storage key in an Access List transaction"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3074.ts b/packages/web3-zond-accounts/src/common/eips/3074.ts
deleted file mode 100644
index 538b0569..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3074.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-export default {
- "name": "EIP-3074",
- "number": 3074,
- "comment": "AUTH and AUTHCALL opcodes",
- "url": "https://eips.ethereum.org/EIPS/eip-3074",
- "status": "Review",
- "minimumHardfork": "london",
- "gasConfig": {},
- "gasPrices": {
- "auth": {
- "v": 3100,
- "d": "Gas cost of the AUTH opcode"
- },
- "authcall": {
- "v": 0,
- "d": "Gas cost of the AUTHCALL opcode"
- },
- "authcallValueTransfer": {
- "v": 6700,
- "d": "Paid for CALL when the value transfer is non-zero"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3198.ts b/packages/web3-zond-accounts/src/common/eips/3198.ts
deleted file mode 100644
index d949d976..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3198.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export default {
- "name": "EIP-3198",
- "number": 3198,
- "comment": "BASEFEE opcode",
- "url": "https://eips.ethereum.org/EIPS/eip-3198",
- "status": "Final",
- "minimumHardfork": "london",
- "gasConfig": {},
- "gasPrices": {
- "basefee": {
- "v": 2,
- "d": "Gas cost of the BASEFEE opcode"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3529.ts b/packages/web3-zond-accounts/src/common/eips/3529.ts
deleted file mode 100644
index 2e8b0e39..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3529.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-export default {
- "name": "EIP-3529",
- "comment": "Reduction in refunds",
- "url": "https://eips.ethereum.org/EIPS/eip-3529",
- "status": "Final",
- "minimumHardfork": "berlin",
- "requiredEIPs": [2929],
- "gasConfig": {
- "maxRefundQuotient": {
- "v": 5,
- "d": "Maximum refund quotient; max tx refund is min(tx.gasUsed/maxRefundQuotient, tx.gasRefund)"
- }
- },
- "gasPrices": {
- "selfdestructRefund": {
- "v": 0,
- "d": "Refunded following a selfdestruct operation"
- },
- "sstoreClearRefundEIP2200": {
- "v": 4800,
- "d": "Once per SSTORE operation for clearing an originally existing storage slot"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3540.ts b/packages/web3-zond-accounts/src/common/eips/3540.ts
deleted file mode 100644
index 39fdb91e..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3540.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- "name": "EIP-3540",
- "number": 3540,
- "comment": "EVM Object Format (EOF) v1",
- "url": "https://eips.ethereum.org/EIPS/eip-3540",
- "status": "Review",
- "minimumHardfork": "london",
- "requiredEIPs": [3541],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3541.ts b/packages/web3-zond-accounts/src/common/eips/3541.ts
deleted file mode 100644
index b3e7a0ce..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3541.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export default {
- "name": "EIP-3541",
- "comment": "Reject new contracts starting with the 0xEF byte",
- "url": "https://eips.ethereum.org/EIPS/eip-3541",
- "status": "Final",
- "minimumHardfork": "berlin",
- "requiredEIPs": [],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3554.ts b/packages/web3-zond-accounts/src/common/eips/3554.ts
deleted file mode 100644
index 36a9d16e..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3554.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export default {
- "name": "EIP-3554",
- "comment": "Reduction in refunds",
- "url": "Difficulty Bomb Delay to December 1st 2021",
- "status": "Final",
- "minimumHardfork": "muirGlacier",
- "requiredEIPs": [],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {
- "difficultyBombDelay": {
- "v": 9500000,
- "d": "the amount of blocks to delay the difficulty bomb with"
- }
- }
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3607.ts b/packages/web3-zond-accounts/src/common/eips/3607.ts
deleted file mode 100644
index 6c122728..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3607.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- "name": "EIP-3607",
- "number": 3607,
- "comment": "Reject transactions from senders with deployed code",
- "url": "https://eips.ethereum.org/EIPS/eip-3607",
- "status": "Final",
- "minimumHardfork": "chainstart",
- "requiredEIPs": [],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3651.ts b/packages/web3-zond-accounts/src/common/eips/3651.ts
deleted file mode 100644
index c6ebe81d..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3651.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- "name": "EIP-3651",
- "number": 3198,
- "comment": "Warm COINBASE",
- "url": "https://eips.ethereum.org/EIPS/eip-3651",
- "status": "Review",
- "minimumHardfork": "london",
- "requiredEIPs": [2929],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3670.ts b/packages/web3-zond-accounts/src/common/eips/3670.ts
deleted file mode 100644
index 5b36d99b..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3670.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- "name": "EIP-3670",
- "number": 3670,
- "comment": "EOF - Code Validation",
- "url": "https://eips.ethereum.org/EIPS/eip-3670",
- "status": "Review",
- "minimumHardfork": "london",
- "requiredEIPs": [3540],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3675.ts b/packages/web3-zond-accounts/src/common/eips/3675.ts
deleted file mode 100644
index a8035030..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3675.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- "name": "EIP-3675",
- "number": 3675,
- "comment": "Upgrade consensus to Proof-of-Stake",
- "url": "https://eips.ethereum.org/EIPS/eip-3675",
- "status": "Final",
- "minimumHardfork": "london",
- "requiredEIPs": [],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3855.ts b/packages/web3-zond-accounts/src/common/eips/3855.ts
deleted file mode 100644
index 2f5ac064..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3855.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-export default {
- "name": "EIP-3855",
- "number": 3855,
- "comment": "PUSH0 instruction",
- "url": "https://eips.ethereum.org/EIPS/eip-3855",
- "status": "Review",
- "minimumHardfork": "chainstart",
- "requiredEIPs": [],
- "gasConfig": {},
- "gasPrices": {
- "push0": {
- "v": 2,
- "d": "Base fee of the PUSH0 opcode"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/3860.ts b/packages/web3-zond-accounts/src/common/eips/3860.ts
deleted file mode 100644
index 0e1aeb99..00000000
--- a/packages/web3-zond-accounts/src/common/eips/3860.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-export default {
- "name": "EIP-3860",
- "number": 3860,
- "comment": "Limit and meter initcode",
- "url": "https://eips.ethereum.org/EIPS/eip-3860",
- "status": "Review",
- "minimumHardfork": "spuriousDragon",
- "requiredEIPs": [],
- "gasConfig": {},
- "gasPrices": {
- "initCodeWordCost": {
- "v": 2,
- "d": "Gas to pay for each word (32 bytes) of initcode when creating a contract"
- }
- },
- "vm": {
- "maxInitCodeSize": {
- "v": 49152,
- "d": "Maximum length of initialization code when creating a contract"
- }
- },
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/4345.ts b/packages/web3-zond-accounts/src/common/eips/4345.ts
deleted file mode 100644
index 0e571b32..00000000
--- a/packages/web3-zond-accounts/src/common/eips/4345.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export default {
- "name": "EIP-4345",
- "number": 4345,
- "comment": "Difficulty Bomb Delay to June 2022",
- "url": "https://eips.ethereum.org/EIPS/eip-4345",
- "status": "Final",
- "minimumHardfork": "london",
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {
- "difficultyBombDelay": {
- "v": 10700000,
- "d": "the amount of blocks to delay the difficulty bomb with"
- }
- }
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/4399.ts b/packages/web3-zond-accounts/src/common/eips/4399.ts
deleted file mode 100644
index ed948d62..00000000
--- a/packages/web3-zond-accounts/src/common/eips/4399.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- "name": "EIP-4399",
- "number": 4399,
- "comment": "Supplant DIFFICULTY opcode with PREVRANDAO",
- "url": "https://eips.ethereum.org/EIPS/eip-4399",
- "status": "Review",
- "minimumHardfork": "london",
- "requiredEIPs": [],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/4844.ts b/packages/web3-zond-accounts/src/common/eips/4844.ts
deleted file mode 100644
index 2795067c..00000000
--- a/packages/web3-zond-accounts/src/common/eips/4844.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-export default {
- "name": "EIP-4844",
- "number": 4844,
- "comment": "Shard Blob Transactions",
- "url": "https://eips.ethereum.org/EIPS/eip-4844",
- "status": "Draft",
- "minimumHardfork": "merge",
- "requiredEIPs": [1559, 2718, 2930, 4895],
- "gasConfig": {
- "dataGasPerBlob": {
- "v": 131072,
- "d": "The base fee for data gas per blob"
- },
- "targetDataGasPerBlock": {
- "v": 262144,
- "d": "The target data gas consumed per block"
- },
- "maxDataGasPerBlock": {
- "v": 524288,
- "d": "The max data gas allowable per block"
- },
- "dataGasPriceUpdateFraction": {
- "v": 2225652,
- "d": "The denominator used in the exponential when calculating a data gas price"
- }
- },
- "gasPrices": {
- "simpleGasPerBlob": {
- "v": 12000,
- "d": "The basic gas fee for each blob"
- },
- "minDataGasPrice": {
- "v": 1,
- "d": "The minimum fee per data gas"
- },
- "kzgPointEvaluationGasPrecompilePrice": {
- "v": 50000,
- "d": "The fee associated with the point evaluation precompile"
- },
- "datahash": {
- "v": 3,
- "d": "Base fee of the DATAHASH opcode"
- }
- },
- "sharding": {
- "blobCommitmentVersionKzg": {
- "v": 1,
- "d": "The number indicated a versioned hash is a KZG commitment"
- },
- "fieldElementsPerBlob": {
- "v": 4096,
- "d": "The number of field elements allowed per blob"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/4895.ts b/packages/web3-zond-accounts/src/common/eips/4895.ts
deleted file mode 100644
index f70f2ec3..00000000
--- a/packages/web3-zond-accounts/src/common/eips/4895.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export default {
- "name": "EIP-4895",
- "number": 4895,
- "comment": "Beacon chain push withdrawals as operations",
- "url": "https://eips.ethereum.org/EIPS/eip-4895",
- "status": "Review",
- "minimumHardfork": "merge",
- "requiredEIPs": [],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/5133.ts b/packages/web3-zond-accounts/src/common/eips/5133.ts
deleted file mode 100644
index de3b55c9..00000000
--- a/packages/web3-zond-accounts/src/common/eips/5133.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export default {
- "name": "EIP-5133",
- "number": 5133,
- "comment": "Delaying Difficulty Bomb to mid-September 2022",
- "url": "https://eips.ethereum.org/EIPS/eip-5133",
- "status": "Draft",
- "minimumHardfork": "grayGlacier",
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {
- "difficultyBombDelay": {
- "v": 11400000,
- "d": "the amount of blocks to delay the difficulty bomb with"
- }
- }
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/eips/index.ts b/packages/web3-zond-accounts/src/common/eips/index.ts
index eeb5d952..5c65774a 100644
--- a/packages/web3-zond-accounts/src/common/eips/index.ts
+++ b/packages/web3-zond-accounts/src/common/eips/index.ts
@@ -14,50 +14,5 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import e1153 from './1153.js';
-import e1559 from './1559.js';
-import e2315 from './2315.js';
-import e2537 from './2537.js';
-import e2565 from './2565.js';
-import e2718 from './2718.js';
-import e2929 from './2929.js';
-import e2930 from './2930.js';
-import e3198 from './3198.js';
-import e3529 from './3529.js';
-import e3540 from './3540.js';
-import e3541 from './3541.js';
-import e3554 from './3554.js';
-import e3607 from './3607.js';
-import e3651 from './3651.js';
-import e3670 from './3670.js';
-import e3675 from './3675.js';
-import e3855 from './3855.js';
-import e3860 from './3860.js';
-import e4345 from './4345.js';
-import e4399 from './4399.js';
-import e5133 from './5133.js';
-export const EIPs: { [key: number]: any } = {
- 1153: e1153,
- 1559: e1559,
- 2315: e2315,
- 2537: e2537,
- 2565: e2565,
- 2718: e2718,
- 2929: e2929,
- 2930: e2930,
- 3198: e3198,
- 3529: e3529,
- 3540: e3540,
- 3541: e3541,
- 3554: e3554,
- 3607: e3607,
- 3651: e3651,
- 3670: e3670,
- 3675: e3675,
- 3855: e3855,
- 3860: e3860,
- 4345: e4345,
- 4399: e4399,
- 5133: e5133,
-};
+export const EIPs: { [key: number]: any } = {};
diff --git a/packages/web3-zond-accounts/src/common/enums.ts b/packages/web3-zond-accounts/src/common/enums.ts
index 0661dd05..779143a2 100644
--- a/packages/web3-zond-accounts/src/common/enums.ts
+++ b/packages/web3-zond-accounts/src/common/enums.ts
@@ -16,90 +16,21 @@ along with web3.js. If not, see .
*/
export enum Chain {
Mainnet = 1,
- Goerli = 5,
- Sepolia = 11155111,
}
export enum Hardfork {
- Chainstart = 'chainstart',
- Homestead = 'homestead',
- Dao = 'dao',
- TangerineWhistle = 'tangerineWhistle',
- SpuriousDragon = 'spuriousDragon',
- Byzantium = 'byzantium',
- Constantinople = 'constantinople',
- Petersburg = 'petersburg',
- Istanbul = 'istanbul',
- MuirGlacier = 'muirGlacier',
- Berlin = 'berlin',
- London = 'london',
- ArrowGlacier = 'arrowGlacier',
- GrayGlacier = 'grayGlacier',
- MergeForkIdTransition = 'mergeForkIdTransition',
- Merge = 'merge',
Shanghai = 'shanghai',
- ShardingForkDev = 'shardingFork',
}
export enum ConsensusType {
ProofOfStake = 'pos',
- ProofOfWork = 'pow',
- ProofOfAuthority = 'poa',
}
export enum ConsensusAlgorithm {
- Ethash = 'ethash',
- Clique = 'clique',
Casper = 'casper',
}
export enum CustomChain {
- /**
- * Polygon (Matic) Mainnet
- *
- * - [Documentation](https://docs.matic.network/docs/develop/network-details/network)
- */
- PolygonMainnet = 'polygon-mainnet',
-
- /**
- * Polygon (Matic) Mumbai Testnet
- *
- * - [Documentation](https://docs.matic.network/docs/develop/network-details/network)
- */
- PolygonMumbai = 'polygon-mumbai',
-
- /**
- * Arbitrum Rinkeby Testnet
- *
- * - [Documentation](https://developer.offchainlabs.com/docs/public_testnet)
- */
- ArbitrumRinkebyTestnet = 'arbitrum-rinkeby-testnet',
-
- /**
- * Arbitrum One - mainnet for Arbitrum roll-up
- *
- * - [Documentation](https://developer.offchainlabs.com/public-chains)
- */
- ArbitrumOne = 'arbitrum-one',
-
- /**
- * xDai EVM sidechain with a native stable token
- *
- * - [Documentation](https://www.xdaichain.com/)
- */
- xDaiChain = 'x-dai-chain',
-
- /**
- * Optimistic Kovan - testnet for Optimism roll-up
- *
- * - [Documentation](https://community.optimism.io/docs/developers/tutorials.html)
- */
- OptimisticKovan = 'optimistic-kovan',
-
- /**
- * Optimistic Ethereum - mainnet for Optimism roll-up
- *
- * - [Documentation](https://community.optimism.io/docs/developers/tutorials.html)
- */
- OptimisticEthereum = 'optimistic-ethereum',
+ // NOTE(rgeraldes24): one entry is required for now
+ CustomZond = 'custom-zond',
}
diff --git a/packages/web3-zond-accounts/src/common/hardforks/arrowGlacier.ts b/packages/web3-zond-accounts/src/common/hardforks/arrowGlacier.ts
deleted file mode 100644
index e38f1782..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/arrowGlacier.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export default {
- "name": "arrowGlacier",
- "comment": "HF to delay the difficulty bomb",
- "url": "https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/arrow-glacier.md",
- "status": "Final",
- "eips": [4345],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/berlin.ts b/packages/web3-zond-accounts/src/common/hardforks/berlin.ts
deleted file mode 100644
index df30229f..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/berlin.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export default {
- "name": "berlin",
- "comment": "HF targeted for July 2020 following the Muir Glacier HF",
- "url": "https://eips.ethereum.org/EIPS/eip-2070",
- "status": "Final",
- "eips": [2565, 2929, 2718, 2930]
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/byzantium.ts b/packages/web3-zond-accounts/src/common/hardforks/byzantium.ts
deleted file mode 100644
index 2c358c8f..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/byzantium.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-export default {
- "name": "byzantium",
- "comment": "Hardfork with new precompiles, instructions and other protocol changes",
- "url": "https://eips.ethereum.org/EIPS/eip-609",
- "status": "Final",
- "gasConfig": {},
- "gasPrices": {
- "modexpGquaddivisor": {
- "v": 20,
- "d": "Gquaddivisor from modexp precompile for gas calculation"
- },
- "ecAdd": {
- "v": 500,
- "d": "Gas costs for curve addition precompile"
- },
- "ecMul": {
- "v": 40000,
- "d": "Gas costs for curve multiplication precompile"
- },
- "ecPairing": {
- "v": 100000,
- "d": "Base gas costs for curve pairing precompile"
- },
- "ecPairingWord": {
- "v": 80000,
- "d": "Gas costs regarding curve pairing precompile input length"
- },
- "revert": {
- "v": 0,
- "d": "Base fee of the REVERT opcode"
- },
- "staticcall": {
- "v": 700,
- "d": "Base fee of the STATICCALL opcode"
- },
- "returndatasize": {
- "v": 2,
- "d": "Base fee of the RETURNDATASIZE opcode"
- },
- "returndatacopy": {
- "v": 3,
- "d": "Base fee of the RETURNDATACOPY opcode"
- }
- },
- "vm": {},
- "pow": {
- "minerReward": {
- "v": "3000000000000000000",
- "d": "the amount a miner get rewarded for mining a block"
- },
- "difficultyBombDelay": {
- "v": 3000000,
- "d": "the amount of blocks to delay the difficulty bomb with"
- }
- }
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/chainstart.ts b/packages/web3-zond-accounts/src/common/hardforks/chainstart.ts
deleted file mode 100644
index 32f5630b..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/chainstart.ts
+++ /dev/null
@@ -1,439 +0,0 @@
-export default {
- "name": "chainstart",
- "comment": "Start of the Ethereum main chain",
- "url": "",
- "status": "",
- "gasConfig": {
- "minGasLimit": {
- "v": 5000,
- "d": "Minimum the gas limit may ever be"
- },
- "gasLimitBoundDivisor": {
- "v": 1024,
- "d": "The bound divisor of the gas limit, used in update calculations"
- },
- "maxRefundQuotient": {
- "v": 2,
- "d": "Maximum refund quotient; max tx refund is min(tx.gasUsed/maxRefundQuotient, tx.gasRefund)"
- }
- },
- "gasPrices": {
- "base": {
- "v": 2,
- "d": "Gas base cost, used e.g. for ChainID opcode (Istanbul)"
- },
- "tierStep": {
- "v": [0, 2, 3, 5, 8, 10, 20],
- "d": "Once per operation, for a selection of them"
- },
- "exp": {
- "v": 10,
- "d": "Base fee of the EXP opcode"
- },
- "expByte": {
- "v": 10,
- "d": "Times ceil(log256(exponent)) for the EXP instruction"
- },
- "sha3": {
- "v": 30,
- "d": "Base fee of the SHA3 opcode"
- },
- "sha3Word": {
- "v": 6,
- "d": "Once per word of the SHA3 operation's data"
- },
- "sload": {
- "v": 50,
- "d": "Base fee of the SLOAD opcode"
- },
- "sstoreSet": {
- "v": 20000,
- "d": "Once per SSTORE operation if the zeroness changes from zero"
- },
- "sstoreReset": {
- "v": 5000,
- "d": "Once per SSTORE operation if the zeroness does not change from zero"
- },
- "sstoreRefund": {
- "v": 15000,
- "d": "Once per SSTORE operation if the zeroness changes to zero"
- },
- "jumpdest": {
- "v": 1,
- "d": "Base fee of the JUMPDEST opcode"
- },
- "log": {
- "v": 375,
- "d": "Base fee of the LOG opcode"
- },
- "logData": {
- "v": 8,
- "d": "Per byte in a LOG* operation's data"
- },
- "logTopic": {
- "v": 375,
- "d": "Multiplied by the * of the LOG*, per LOG transaction. e.g. LOG0 incurs 0 * c_txLogTopicGas, LOG4 incurs 4 * c_txLogTopicGas"
- },
- "create": {
- "v": 32000,
- "d": "Base fee of the CREATE opcode"
- },
- "call": {
- "v": 40,
- "d": "Base fee of the CALL opcode"
- },
- "callStipend": {
- "v": 2300,
- "d": "Free gas given at beginning of call"
- },
- "callValueTransfer": {
- "v": 9000,
- "d": "Paid for CALL when the value transfor is non-zero"
- },
- "callNewAccount": {
- "v": 25000,
- "d": "Paid for CALL when the destination address didn't exist prior"
- },
- "selfdestructRefund": {
- "v": 24000,
- "d": "Refunded following a selfdestruct operation"
- },
- "memory": {
- "v": 3,
- "d": "Times the address of the (highest referenced byte in memory + 1). NOTE: referencing happens on read, write and in instructions such as RETURN and CALL"
- },
- "quadCoeffDiv": {
- "v": 512,
- "d": "Divisor for the quadratic particle of the memory cost equation"
- },
- "createData": {
- "v": 200,
- "d": ""
- },
- "tx": {
- "v": 21000,
- "d": "Per transaction. NOTE: Not payable on data of calls between transactions"
- },
- "txCreation": {
- "v": 32000,
- "d": "The cost of creating a contract via tx"
- },
- "txDataZero": {
- "v": 4,
- "d": "Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions"
- },
- "txDataNonZero": {
- "v": 68,
- "d": "Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions"
- },
- "copy": {
- "v": 3,
- "d": "Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added"
- },
- "ecRecover": {
- "v": 3000,
- "d": ""
- },
- "sha256": {
- "v": 60,
- "d": ""
- },
- "sha256Word": {
- "v": 12,
- "d": ""
- },
- "ripemd160": {
- "v": 600,
- "d": ""
- },
- "ripemd160Word": {
- "v": 120,
- "d": ""
- },
- "identity": {
- "v": 15,
- "d": ""
- },
- "identityWord": {
- "v": 3,
- "d": ""
- },
- "stop": {
- "v": 0,
- "d": "Base fee of the STOP opcode"
- },
- "add": {
- "v": 3,
- "d": "Base fee of the ADD opcode"
- },
- "mul": {
- "v": 5,
- "d": "Base fee of the MUL opcode"
- },
- "sub": {
- "v": 3,
- "d": "Base fee of the SUB opcode"
- },
- "div": {
- "v": 5,
- "d": "Base fee of the DIV opcode"
- },
- "sdiv": {
- "v": 5,
- "d": "Base fee of the SDIV opcode"
- },
- "mod": {
- "v": 5,
- "d": "Base fee of the MOD opcode"
- },
- "smod": {
- "v": 5,
- "d": "Base fee of the SMOD opcode"
- },
- "addmod": {
- "v": 8,
- "d": "Base fee of the ADDMOD opcode"
- },
- "mulmod": {
- "v": 8,
- "d": "Base fee of the MULMOD opcode"
- },
- "signextend": {
- "v": 5,
- "d": "Base fee of the SIGNEXTEND opcode"
- },
- "lt": {
- "v": 3,
- "d": "Base fee of the LT opcode"
- },
- "gt": {
- "v": 3,
- "d": "Base fee of the GT opcode"
- },
- "slt": {
- "v": 3,
- "d": "Base fee of the SLT opcode"
- },
- "sgt": {
- "v": 3,
- "d": "Base fee of the SGT opcode"
- },
- "eq": {
- "v": 3,
- "d": "Base fee of the EQ opcode"
- },
- "iszero": {
- "v": 3,
- "d": "Base fee of the ISZERO opcode"
- },
- "and": {
- "v": 3,
- "d": "Base fee of the AND opcode"
- },
- "or": {
- "v": 3,
- "d": "Base fee of the OR opcode"
- },
- "xor": {
- "v": 3,
- "d": "Base fee of the XOR opcode"
- },
- "not": {
- "v": 3,
- "d": "Base fee of the NOT opcode"
- },
- "byte": {
- "v": 3,
- "d": "Base fee of the BYTE opcode"
- },
- "address": {
- "v": 2,
- "d": "Base fee of the ADDRESS opcode"
- },
- "balance": {
- "v": 20,
- "d": "Base fee of the BALANCE opcode"
- },
- "origin": {
- "v": 2,
- "d": "Base fee of the ORIGIN opcode"
- },
- "caller": {
- "v": 2,
- "d": "Base fee of the CALLER opcode"
- },
- "callvalue": {
- "v": 2,
- "d": "Base fee of the CALLVALUE opcode"
- },
- "calldataload": {
- "v": 3,
- "d": "Base fee of the CALLDATALOAD opcode"
- },
- "calldatasize": {
- "v": 2,
- "d": "Base fee of the CALLDATASIZE opcode"
- },
- "calldatacopy": {
- "v": 3,
- "d": "Base fee of the CALLDATACOPY opcode"
- },
- "codesize": {
- "v": 2,
- "d": "Base fee of the CODESIZE opcode"
- },
- "codecopy": {
- "v": 3,
- "d": "Base fee of the CODECOPY opcode"
- },
- "gasprice": {
- "v": 2,
- "d": "Base fee of the GASPRICE opcode"
- },
- "extcodesize": {
- "v": 20,
- "d": "Base fee of the EXTCODESIZE opcode"
- },
- "extcodecopy": {
- "v": 20,
- "d": "Base fee of the EXTCODECOPY opcode"
- },
- "blockhash": {
- "v": 20,
- "d": "Base fee of the BLOCKHASH opcode"
- },
- "coinbase": {
- "v": 2,
- "d": "Base fee of the COINBASE opcode"
- },
- "timestamp": {
- "v": 2,
- "d": "Base fee of the TIMESTAMP opcode"
- },
- "number": {
- "v": 2,
- "d": "Base fee of the NUMBER opcode"
- },
- "difficulty": {
- "v": 2,
- "d": "Base fee of the DIFFICULTY opcode"
- },
- "gaslimit": {
- "v": 2,
- "d": "Base fee of the GASLIMIT opcode"
- },
- "pop": {
- "v": 2,
- "d": "Base fee of the POP opcode"
- },
- "mload": {
- "v": 3,
- "d": "Base fee of the MLOAD opcode"
- },
- "mstore": {
- "v": 3,
- "d": "Base fee of the MSTORE opcode"
- },
- "mstore8": {
- "v": 3,
- "d": "Base fee of the MSTORE8 opcode"
- },
- "sstore": {
- "v": 0,
- "d": "Base fee of the SSTORE opcode"
- },
- "jump": {
- "v": 8,
- "d": "Base fee of the JUMP opcode"
- },
- "jumpi": {
- "v": 10,
- "d": "Base fee of the JUMPI opcode"
- },
- "pc": {
- "v": 2,
- "d": "Base fee of the PC opcode"
- },
- "msize": {
- "v": 2,
- "d": "Base fee of the MSIZE opcode"
- },
- "gas": {
- "v": 2,
- "d": "Base fee of the GAS opcode"
- },
- "push": {
- "v": 3,
- "d": "Base fee of the PUSH opcode"
- },
- "dup": {
- "v": 3,
- "d": "Base fee of the DUP opcode"
- },
- "swap": {
- "v": 3,
- "d": "Base fee of the SWAP opcode"
- },
- "callcode": {
- "v": 40,
- "d": "Base fee of the CALLCODE opcode"
- },
- "return": {
- "v": 0,
- "d": "Base fee of the RETURN opcode"
- },
- "invalid": {
- "v": 0,
- "d": "Base fee of the INVALID opcode"
- },
- "selfdestruct": {
- "v": 0,
- "d": "Base fee of the SELFDESTRUCT opcode"
- }
- },
- "vm": {
- "stackLimit": {
- "v": 1024,
- "d": "Maximum size of VM stack allowed"
- },
- "callCreateDepth": {
- "v": 1024,
- "d": "Maximum depth of call/create stack"
- },
- "maxExtraDataSize": {
- "v": 32,
- "d": "Maximum size extra data may be after Genesis"
- }
- },
- "pow": {
- "minimumDifficulty": {
- "v": 131072,
- "d": "The minimum that the difficulty may ever be"
- },
- "difficultyBoundDivisor": {
- "v": 2048,
- "d": "The bound divisor of the difficulty, used in the update calculations"
- },
- "durationLimit": {
- "v": 13,
- "d": "The decision boundary on the blocktime duration used to determine whether difficulty should go up or not"
- },
- "epochDuration": {
- "v": 30000,
- "d": "Duration between proof-of-work epochs"
- },
- "timebombPeriod": {
- "v": 100000,
- "d": "Exponential difficulty timebomb period"
- },
- "minerReward": {
- "v": "5000000000000000000",
- "d": "the amount a miner get rewarded for mining a block"
- },
- "difficultyBombDelay": {
- "v": 0,
- "d": "the amount of blocks to delay the difficulty bomb with"
- }
- }
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/constantinople.ts b/packages/web3-zond-accounts/src/common/hardforks/constantinople.ts
deleted file mode 100644
index dd576fe1..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/constantinople.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-export default {
- "name": "constantinople",
- "comment": "Postponed hardfork including EIP-1283 (SSTORE gas metering changes)",
- "url": "https://eips.ethereum.org/EIPS/eip-1013",
- "status": "Final",
- "gasConfig": {},
- "gasPrices": {
- "netSstoreNoopGas": {
- "v": 200,
- "d": "Once per SSTORE operation if the value doesn't change"
- },
- "netSstoreInitGas": {
- "v": 20000,
- "d": "Once per SSTORE operation from clean zero"
- },
- "netSstoreCleanGas": {
- "v": 5000,
- "d": "Once per SSTORE operation from clean non-zero"
- },
- "netSstoreDirtyGas": {
- "v": 200,
- "d": "Once per SSTORE operation from dirty"
- },
- "netSstoreClearRefund": {
- "v": 15000,
- "d": "Once per SSTORE operation for clearing an originally existing storage slot"
- },
- "netSstoreResetRefund": {
- "v": 4800,
- "d": "Once per SSTORE operation for resetting to the original non-zero value"
- },
- "netSstoreResetClearRefund": {
- "v": 19800,
- "d": "Once per SSTORE operation for resetting to the original zero value"
- },
- "shl": {
- "v": 3,
- "d": "Base fee of the SHL opcode"
- },
- "shr": {
- "v": 3,
- "d": "Base fee of the SHR opcode"
- },
- "sar": {
- "v": 3,
- "d": "Base fee of the SAR opcode"
- },
- "extcodehash": {
- "v": 400,
- "d": "Base fee of the EXTCODEHASH opcode"
- },
- "create2": {
- "v": 32000,
- "d": "Base fee of the CREATE2 opcode"
- }
- },
- "vm": {},
- "pow": {
- "minerReward": {
- "v": "2000000000000000000",
- "d": "The amount a miner gets rewarded for mining a block"
- },
- "difficultyBombDelay": {
- "v": 5000000,
- "d": "the amount of blocks to delay the difficulty bomb with"
- }
- }
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/dao.ts b/packages/web3-zond-accounts/src/common/hardforks/dao.ts
deleted file mode 100644
index a565ec89..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/dao.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export default {
- "name": "dao",
- "comment": "DAO rescue hardfork",
- "url": "https://eips.ethereum.org/EIPS/eip-779",
- "status": "Final",
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/grayGlacier.ts b/packages/web3-zond-accounts/src/common/hardforks/grayGlacier.ts
deleted file mode 100644
index 3c67d73e..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/grayGlacier.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export default {
- "name": "grayGlacier",
- "comment": "Delaying the difficulty bomb to Mid September 2022",
- "url": "https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/gray-glacier.md",
- "status": "Draft",
- "eips": [5133],
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/homestead.ts b/packages/web3-zond-accounts/src/common/hardforks/homestead.ts
deleted file mode 100644
index e6521fc4..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/homestead.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-export default {
- "name": "homestead",
- "comment": "Homestead hardfork with protocol and network changes",
- "url": "https://eips.ethereum.org/EIPS/eip-606",
- "status": "Final",
- "gasConfig": {},
- "gasPrices": {
- "delegatecall": {
- "v": 40,
- "d": "Base fee of the DELEGATECALL opcode"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/index.ts b/packages/web3-zond-accounts/src/common/hardforks/index.ts
index 6f646d19..3d6e768c 100644
--- a/packages/web3-zond-accounts/src/common/hardforks/index.ts
+++ b/packages/web3-zond-accounts/src/common/hardforks/index.ts
@@ -14,40 +14,9 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import chainstart from './chainstart.js';
-import dao from './dao.js';
-import homestead from './homestead.js';
-import tangerineWhistle from './tangerineWhistle.js';
-import spuriousDragon from './spuriousDragon.js';
-import byzantium from './byzantium.js';
-import constantinople from './constantinople.js';
-import petersburg from './petersburg.js';
-import istanbul from './istanbul.js';
-import muirGlacier from './muirGlacier.js';
-import berlin from './berlin.js';
-import london from './london.js';
+
import shanghai from './shanghai.js';
-import arrowGlacier from './arrowGlacier.js';
-import grayGlacier from './grayGlacier.js';
-import mergeForkIdTransition from './mergeForkIdTransition.js';
-import merge from './merge.js';
export const hardforks: { [key: string]: any } = {
- chainstart,
- homestead,
- dao,
- tangerineWhistle,
- spuriousDragon,
- byzantium,
- constantinople,
- petersburg,
- istanbul,
- muirGlacier,
- berlin,
- london,
shanghai,
- arrowGlacier,
- grayGlacier,
- mergeForkIdTransition,
- merge,
};
diff --git a/packages/web3-zond-accounts/src/common/hardforks/istanbul.ts b/packages/web3-zond-accounts/src/common/hardforks/istanbul.ts
deleted file mode 100644
index 96f3a66c..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/istanbul.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-export default {
- "name": "istanbul",
- "comment": "HF targeted for December 2019 following the Constantinople/Petersburg HF",
- "url": "https://eips.ethereum.org/EIPS/eip-1679",
- "status": "Final",
- "gasConfig": {},
- "gasPrices": {
- "blake2Round": {
- "v": 1,
- "d": "Gas cost per round for the Blake2 F precompile"
- },
- "ecAdd": {
- "v": 150,
- "d": "Gas costs for curve addition precompile"
- },
- "ecMul": {
- "v": 6000,
- "d": "Gas costs for curve multiplication precompile"
- },
- "ecPairing": {
- "v": 45000,
- "d": "Base gas costs for curve pairing precompile"
- },
- "ecPairingWord": {
- "v": 34000,
- "d": "Gas costs regarding curve pairing precompile input length"
- },
- "txDataNonZero": {
- "v": 16,
- "d": "Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions"
- },
- "sstoreSentryGasEIP2200": {
- "v": 2300,
- "d": "Minimum gas required to be present for an SSTORE call, not consumed"
- },
- "sstoreNoopGasEIP2200": {
- "v": 800,
- "d": "Once per SSTORE operation if the value doesn't change"
- },
- "sstoreDirtyGasEIP2200": {
- "v": 800,
- "d": "Once per SSTORE operation if a dirty value is changed"
- },
- "sstoreInitGasEIP2200": {
- "v": 20000,
- "d": "Once per SSTORE operation from clean zero to non-zero"
- },
- "sstoreInitRefundEIP2200": {
- "v": 19200,
- "d": "Once per SSTORE operation for resetting to the original zero value"
- },
- "sstoreCleanGasEIP2200": {
- "v": 5000,
- "d": "Once per SSTORE operation from clean non-zero to something else"
- },
- "sstoreCleanRefundEIP2200": {
- "v": 4200,
- "d": "Once per SSTORE operation for resetting to the original non-zero value"
- },
- "sstoreClearRefundEIP2200": {
- "v": 15000,
- "d": "Once per SSTORE operation for clearing an originally existing storage slot"
- },
- "balance": {
- "v": 700,
- "d": "Base fee of the BALANCE opcode"
- },
- "extcodehash": {
- "v": 700,
- "d": "Base fee of the EXTCODEHASH opcode"
- },
- "chainid": {
- "v": 2,
- "d": "Base fee of the CHAINID opcode"
- },
- "selfbalance": {
- "v": 5,
- "d": "Base fee of the SELFBALANCE opcode"
- },
- "sload": {
- "v": 800,
- "d": "Base fee of the SLOAD opcode"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/london.ts b/packages/web3-zond-accounts/src/common/hardforks/london.ts
deleted file mode 100644
index 6d0ec4a4..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/london.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export default {
- "name": "london",
- "comment": "HF targeted for July 2021 following the Berlin fork",
- "url": "https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/mainnet-upgrades/london.md",
- "status": "Final",
- "eips": [1559, 3198, 3529, 3541]
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/merge.ts b/packages/web3-zond-accounts/src/common/hardforks/merge.ts
deleted file mode 100644
index db48aa32..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/merge.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export default {
- "name": "merge",
- "comment": "Hardfork to upgrade the consensus mechanism to Proof-of-Stake",
- "url": "https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/merge.md",
- "status": "Final",
- "consensus": {
- "type": "pos",
- "algorithm": "casper",
- "casper": {}
- },
- "eips": [3675, 4399]
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/mergeForkIdTransition.ts b/packages/web3-zond-accounts/src/common/hardforks/mergeForkIdTransition.ts
deleted file mode 100644
index f4df67bd..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/mergeForkIdTransition.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export default {
- "name": "mergeForkIdTransition",
- "comment": "Pre-merge hardfork to fork off non-upgraded clients",
- "url": "https://eips.ethereum.org/EIPS/eip-3675",
- "status": "Draft",
- "eips": []
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/muirGlacier.ts b/packages/web3-zond-accounts/src/common/hardforks/muirGlacier.ts
deleted file mode 100644
index a7d02c61..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/muirGlacier.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-export default {
- "name": "muirGlacier",
- "comment": "HF to delay the difficulty bomb",
- "url": "https://eips.ethereum.org/EIPS/eip-2384",
- "status": "Final",
- "gasConfig": {},
- "gasPrices": {},
- "vm": {},
- "pow": {
- "difficultyBombDelay": {
- "v": 9000000,
- "d": "the amount of blocks to delay the difficulty bomb with"
- }
- }
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/petersburg.ts b/packages/web3-zond-accounts/src/common/hardforks/petersburg.ts
deleted file mode 100644
index cca4005f..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/petersburg.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-export default {
- "name": "petersburg",
- "comment": "Aka constantinopleFix, removes EIP-1283, activate together with or after constantinople",
- "url": "https://eips.ethereum.org/EIPS/eip-1716",
- "status": "Final",
- "gasConfig": {},
- "gasPrices": {
- "netSstoreNoopGas": {
- "v": null,
- "d": "Removed along EIP-1283"
- },
- "netSstoreInitGas": {
- "v": null,
- "d": "Removed along EIP-1283"
- },
- "netSstoreCleanGas": {
- "v": null,
- "d": "Removed along EIP-1283"
- },
- "netSstoreDirtyGas": {
- "v": null,
- "d": "Removed along EIP-1283"
- },
- "netSstoreClearRefund": {
- "v": null,
- "d": "Removed along EIP-1283"
- },
- "netSstoreResetRefund": {
- "v": null,
- "d": "Removed along EIP-1283"
- },
- "netSstoreResetClearRefund": {
- "v": null,
- "d": "Removed along EIP-1283"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/shanghai.ts b/packages/web3-zond-accounts/src/common/hardforks/shanghai.ts
index 736e331a..107d6f73 100644
--- a/packages/web3-zond-accounts/src/common/hardforks/shanghai.ts
+++ b/packages/web3-zond-accounts/src/common/hardforks/shanghai.ts
@@ -1,8 +1,541 @@
export default {
"name": "shanghai",
- "comment": "Next feature hardfork after the merge hardfork having withdrawals, warm coinbase, push0, limit/meter initcode",
- "url": "https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md",
- "status": "Final",
- "eips": [3651, 3855, 3860, 4895]
+ "comment": "Start of the Zond main chain",
+ "url": "",
+ "status": "",
+ "gasConfig": {
+ "minGasLimit": {
+ "v": 5000,
+ "d": "Minimum the gas limit may ever be"
+ },
+ "gasLimitBoundDivisor": {
+ "v": 1024,
+ "d": "The bound divisor of the gas limit, used in update calculations"
+ },
+ "maxRefundQuotient": {
+ "v": 5,
+ "d": "Maximum refund quotient; max tx refund is min(tx.gasUsed/maxRefundQuotient, tx.gasRefund)"
+ },
+ "baseFeeMaxChangeDenominator": {
+ "v": 8,
+ "d": "Maximum base fee change denominator"
+ },
+ "elasticityMultiplier": {
+ "v": 2,
+ "d": "Maximum block gas target elasticity"
+ },
+ "initialBaseFee": {
+ "v": 1000000000,
+ "d": "Initial base fee on first EIP1559 block"
+ }
+ },
+ "gasPrices": {
+ "base": {
+ "v": 2,
+ "d": "Gas base cost, used e.g. for ChainID opcode (Istanbul)"
+ },
+ "tierStep": {
+ "v": [0, 2, 3, 5, 8, 10, 20],
+ "d": "Once per operation, for a selection of them"
+ },
+ "exp": {
+ "v": 10,
+ "d": "Base fee of the EXP opcode"
+ },
+ "expByte": {
+ "v": 50,
+ "d": "Times ceil(log256(exponent)) for the EXP instruction"
+ },
+ "sha3": {
+ "v": 30,
+ "d": "Base fee of the SHA3 opcode"
+ },
+ "sha3Word": {
+ "v": 6,
+ "d": "Once per word of the SHA3 operation's data"
+ },
+ "sload": {
+ "v": 0,
+ "d": "Base fee of the SLOAD opcode"
+ },
+ "sstoreSet": {
+ "v": 20000,
+ "d": "Once per SSTORE operation if the zeroness changes from zero"
+ },
+ "sstoreReset": {
+ "v": 5000,
+ "d": "Once per SSTORE operation if the zeroness does not change from zero"
+ },
+ "sstoreRefund": {
+ "v": 15000,
+ "d": "Once per SSTORE operation if the zeroness changes to zero"
+ },
+ "jumpdest": {
+ "v": 1,
+ "d": "Base fee of the JUMPDEST opcode"
+ },
+ "log": {
+ "v": 375,
+ "d": "Base fee of the LOG opcode"
+ },
+ "logData": {
+ "v": 8,
+ "d": "Per byte in a LOG* operation's data"
+ },
+ "logTopic": {
+ "v": 375,
+ "d": "Multiplied by the * of the LOG*, per LOG transaction. e.g. LOG0 incurs 0 * c_txLogTopicGas, LOG4 incurs 4 * c_txLogTopicGas"
+ },
+ "create": {
+ "v": 32000,
+ "d": "Base fee of the CREATE opcode"
+ },
+ "call": {
+ "v": 0,
+ "d": "Base fee of the CALL opcode"
+ },
+ "callStipend": {
+ "v": 2300,
+ "d": "Free gas given at beginning of call"
+ },
+ "callValueTransfer": {
+ "v": 9000,
+ "d": "Paid for CALL when the value transfor is non-zero"
+ },
+ "callNewAccount": {
+ "v": 25000,
+ "d": "Paid for CALL when the destination address didn't exist prior"
+ },
+ "memory": {
+ "v": 3,
+ "d": "Times the address of the (highest referenced byte in memory + 1). NOTE: referencing happens on read, write and in instructions such as RETURN and CALL"
+ },
+ "quadCoeffDiv": {
+ "v": 512,
+ "d": "Divisor for the quadratic particle of the memory cost equation"
+ },
+ "createData": {
+ "v": 200,
+ "d": ""
+ },
+ "tx": {
+ "v": 21000,
+ "d": "Per transaction. NOTE: Not payable on data of calls between transactions"
+ },
+ "txCreation": {
+ "v": 32000,
+ "d": "The cost of creating a contract via tx"
+ },
+ "txDataZero": {
+ "v": 4,
+ "d": "Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions"
+ },
+ "txDataNonZero": {
+ "v": 16,
+ "d": "Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions"
+ },
+ "copy": {
+ "v": 3,
+ "d": "Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added"
+ },
+ "depositroot": {
+ "v": 19992,
+ "d": ""
+ },
+ "sha256": {
+ "v": 60,
+ "d": ""
+ },
+ "sha256Word": {
+ "v": 12,
+ "d": ""
+ },
+ "identity": {
+ "v": 15,
+ "d": ""
+ },
+ "identityWord": {
+ "v": 3,
+ "d": ""
+ },
+ "stop": {
+ "v": 0,
+ "d": "Base fee of the STOP opcode"
+ },
+ "add": {
+ "v": 3,
+ "d": "Base fee of the ADD opcode"
+ },
+ "mul": {
+ "v": 5,
+ "d": "Base fee of the MUL opcode"
+ },
+ "sub": {
+ "v": 3,
+ "d": "Base fee of the SUB opcode"
+ },
+ "div": {
+ "v": 5,
+ "d": "Base fee of the DIV opcode"
+ },
+ "sdiv": {
+ "v": 5,
+ "d": "Base fee of the SDIV opcode"
+ },
+ "mod": {
+ "v": 5,
+ "d": "Base fee of the MOD opcode"
+ },
+ "smod": {
+ "v": 5,
+ "d": "Base fee of the SMOD opcode"
+ },
+ "addmod": {
+ "v": 8,
+ "d": "Base fee of the ADDMOD opcode"
+ },
+ "mulmod": {
+ "v": 8,
+ "d": "Base fee of the MULMOD opcode"
+ },
+ "signextend": {
+ "v": 5,
+ "d": "Base fee of the SIGNEXTEND opcode"
+ },
+ "lt": {
+ "v": 3,
+ "d": "Base fee of the LT opcode"
+ },
+ "gt": {
+ "v": 3,
+ "d": "Base fee of the GT opcode"
+ },
+ "slt": {
+ "v": 3,
+ "d": "Base fee of the SLT opcode"
+ },
+ "sgt": {
+ "v": 3,
+ "d": "Base fee of the SGT opcode"
+ },
+ "eq": {
+ "v": 3,
+ "d": "Base fee of the EQ opcode"
+ },
+ "iszero": {
+ "v": 3,
+ "d": "Base fee of the ISZERO opcode"
+ },
+ "and": {
+ "v": 3,
+ "d": "Base fee of the AND opcode"
+ },
+ "or": {
+ "v": 3,
+ "d": "Base fee of the OR opcode"
+ },
+ "xor": {
+ "v": 3,
+ "d": "Base fee of the XOR opcode"
+ },
+ "not": {
+ "v": 3,
+ "d": "Base fee of the NOT opcode"
+ },
+ "byte": {
+ "v": 3,
+ "d": "Base fee of the BYTE opcode"
+ },
+ "address": {
+ "v": 2,
+ "d": "Base fee of the ADDRESS opcode"
+ },
+ "balance": {
+ "v": 0,
+ "d": "Base fee of the BALANCE opcode"
+ },
+ "origin": {
+ "v": 2,
+ "d": "Base fee of the ORIGIN opcode"
+ },
+ "caller": {
+ "v": 2,
+ "d": "Base fee of the CALLER opcode"
+ },
+ "callvalue": {
+ "v": 2,
+ "d": "Base fee of the CALLVALUE opcode"
+ },
+ "calldataload": {
+ "v": 3,
+ "d": "Base fee of the CALLDATALOAD opcode"
+ },
+ "calldatasize": {
+ "v": 2,
+ "d": "Base fee of the CALLDATASIZE opcode"
+ },
+ "calldatacopy": {
+ "v": 3,
+ "d": "Base fee of the CALLDATACOPY opcode"
+ },
+ "codesize": {
+ "v": 2,
+ "d": "Base fee of the CODESIZE opcode"
+ },
+ "codecopy": {
+ "v": 3,
+ "d": "Base fee of the CODECOPY opcode"
+ },
+ "gasprice": {
+ "v": 2,
+ "d": "Base fee of the GASPRICE opcode"
+ },
+ "extcodesize": {
+ "v": 0,
+ "d": "Base fee of the EXTCODESIZE opcode"
+ },
+ "extcodecopy": {
+ "v": 0,
+ "d": "Base fee of the EXTCODECOPY opcode"
+ },
+ "blockhash": {
+ "v": 20,
+ "d": "Base fee of the BLOCKHASH opcode"
+ },
+ "coinbase": {
+ "v": 2,
+ "d": "Base fee of the COINBASE opcode"
+ },
+ "timestamp": {
+ "v": 2,
+ "d": "Base fee of the TIMESTAMP opcode"
+ },
+ "number": {
+ "v": 2,
+ "d": "Base fee of the NUMBER opcode"
+ },
+ "prevrandao": {
+ "v": 2,
+ "d": "Base fee of the PREVRANDAO opcode"
+ },
+ "gaslimit": {
+ "v": 2,
+ "d": "Base fee of the GASLIMIT opcode"
+ },
+ "pop": {
+ "v": 2,
+ "d": "Base fee of the POP opcode"
+ },
+ "mload": {
+ "v": 3,
+ "d": "Base fee of the MLOAD opcode"
+ },
+ "mstore": {
+ "v": 3,
+ "d": "Base fee of the MSTORE opcode"
+ },
+ "mstore8": {
+ "v": 3,
+ "d": "Base fee of the MSTORE8 opcode"
+ },
+ "sstore": {
+ "v": 0,
+ "d": "Base fee of the SSTORE opcode"
+ },
+ "jump": {
+ "v": 8,
+ "d": "Base fee of the JUMP opcode"
+ },
+ "jumpi": {
+ "v": 10,
+ "d": "Base fee of the JUMPI opcode"
+ },
+ "pc": {
+ "v": 2,
+ "d": "Base fee of the PC opcode"
+ },
+ "msize": {
+ "v": 2,
+ "d": "Base fee of the MSIZE opcode"
+ },
+ "gas": {
+ "v": 2,
+ "d": "Base fee of the GAS opcode"
+ },
+ "push": {
+ "v": 3,
+ "d": "Base fee of the PUSH opcode"
+ },
+ "dup": {
+ "v": 3,
+ "d": "Base fee of the DUP opcode"
+ },
+ "swap": {
+ "v": 3,
+ "d": "Base fee of the SWAP opcode"
+ },
+ "return": {
+ "v": 0,
+ "d": "Base fee of the RETURN opcode"
+ },
+ "invalid": {
+ "v": 0,
+ "d": "Base fee of the INVALID opcode"
+ },
+ "delegatecall": {
+ "v": 0,
+ "d": "Base fee of the DELEGATECALL opcode"
+ },
+ "modexpGquaddivisor": {
+ "v": 3,
+ "d": "Gquaddivisor from modexp precompile for gas calculation"
+ },
+ "ecAdd": {
+ "v": 150,
+ "d": "Gas costs for curve addition precompile"
+ },
+ "ecMul": {
+ "v": 6000,
+ "d": "Gas costs for curve multiplication precompile"
+ },
+ "ecPairing": {
+ "v": 45000,
+ "d": "Base gas costs for curve pairing precompile"
+ },
+ "ecPairingWord": {
+ "v": 34000,
+ "d": "Gas costs regarding curve pairing precompile input length"
+ },
+ "revert": {
+ "v": 0,
+ "d": "Base fee of the REVERT opcode"
+ },
+ "staticcall": {
+ "v": 0,
+ "d": "Base fee of the STATICCALL opcode"
+ },
+ "returndatasize": {
+ "v": 2,
+ "d": "Base fee of the RETURNDATASIZE opcode"
+ },
+ "returndatacopy": {
+ "v": 3,
+ "d": "Base fee of the RETURNDATACOPY opcode"
+ },
+ "shl": {
+ "v": 3,
+ "d": "Base fee of the SHL opcode"
+ },
+ "shr": {
+ "v": 3,
+ "d": "Base fee of the SHR opcode"
+ },
+ "sar": {
+ "v": 3,
+ "d": "Base fee of the SAR opcode"
+ },
+ "extcodehash": {
+ "v": 0,
+ "d": "Base fee of the EXTCODEHASH opcode"
+ },
+ "create2": {
+ "v": 32000,
+ "d": "Base fee of the CREATE2 opcode"
+ },
+ "sstoreSentryGasEIP2200": {
+ "v": 2300,
+ "d": "Minimum gas required to be present for an SSTORE call, not consumed"
+ },
+ "sstoreNoopGasEIP2200": {
+ "v": 100,
+ "d": "Once per SSTORE operation if the value doesn't change"
+ },
+ "sstoreDirtyGasEIP2200": {
+ "v": 100,
+ "d": "Once per SSTORE operation if a dirty value is changed"
+ },
+ "sstoreInitGasEIP2200": {
+ "v": 20000,
+ "d": "Once per SSTORE operation from clean zero to non-zero"
+ },
+ "sstoreInitRefundEIP2200": {
+ "v": 19900,
+ "d": "Once per SSTORE operation for resetting to the original zero value"
+ },
+ "sstoreCleanGasEIP2200": {
+ "v": 2900,
+ "d": "Once per SSTORE operation from clean non-zero to something else"
+ },
+ "sstoreCleanRefundEIP2200": {
+ "v": 4900,
+ "d": "Once per SSTORE operation for resetting to the original non-zero value"
+ },
+ "sstoreClearRefundEIP2200": {
+ "v": 4800,
+ "d": "Once per SSTORE operation for clearing an originally existing storage slot"
+ },
+ "chainid": {
+ "v": 2,
+ "d": "Base fee of the CHAINID opcode"
+ },
+ "selfbalance": {
+ "v": 5,
+ "d": "Base fee of the SELFBALANCE opcode"
+ },
+ "coldsload": {
+ "v": 2100,
+ "d": "Gas cost of the first read of storage from a given location (per transaction)"
+ },
+ "coldaccountaccess": {
+ "v": 2600,
+ "d": "Gas cost of the first read of a given address (per transaction)"
+ },
+ "warmstorageread": {
+ "v": 100,
+ "d": "Gas cost of reading storage locations which have already loaded 'cold'"
+ },
+ "accessListStorageKeyCost": {
+ "v": 1900,
+ "d": "Gas cost per storage key in an Access List transaction"
+ },
+ "accessListAddressCost": {
+ "v": 2400,
+ "d": "Gas cost per storage key in an Access List transaction"
+ },
+ "basefee": {
+ "v": 2,
+ "d": "Gas cost of the BASEFEE opcode"
+ },
+ "push0": {
+ "v": 2,
+ "d": "Base fee of the PUSH0 opcode"
+ },
+ "initCodeWordCost": {
+ "v": 2,
+ "d": "Gas to pay for each word (32 bytes) of initcode when creating a contract"
+ }
+ },
+ "vm": {
+ "stackLimit": {
+ "v": 1024,
+ "d": "Maximum size of VM stack allowed"
+ },
+ "callCreateDepth": {
+ "v": 1024,
+ "d": "Maximum depth of call/create stack"
+ },
+ "maxExtraDataSize": {
+ "v": 32,
+ "d": "Maximum size extra data may be after Genesis"
+ },
+ "maxCodeSize": {
+ "v": 24576,
+ "d": "Maximum length of contract code"
+ },
+ "maxInitCodeSize": {
+ "v": 49152,
+ "d": "Maximum length of initialization code when creating a contract"
+ }
+ }
}
;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/sharding.ts b/packages/web3-zond-accounts/src/common/hardforks/sharding.ts
deleted file mode 100644
index e164e5f8..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/sharding.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export default {
- "name": "shardingFork",
- "comment": "Internal hardfork to test proto-danksharding (do not use in production)",
- "url": "https://eips.ethereum.org/EIPS/eip-4844",
- "status": "Experimental",
- "eips": [4844]
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/spuriousDragon.ts b/packages/web3-zond-accounts/src/common/hardforks/spuriousDragon.ts
deleted file mode 100644
index e1ed0eda..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/spuriousDragon.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-export default {
- "name": "spuriousDragon",
- "comment": "HF with EIPs for simple replay attack protection, EXP cost increase, state trie clearing, contract code size limit",
- "url": "https://eips.ethereum.org/EIPS/eip-607",
- "status": "Final",
- "gasConfig": {},
- "gasPrices": {
- "expByte": {
- "v": 50,
- "d": "Times ceil(log256(exponent)) for the EXP instruction"
- }
- },
- "vm": {
- "maxCodeSize": {
- "v": 24576,
- "d": "Maximum length of contract code"
- }
- },
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/hardforks/tangerineWhistle.ts b/packages/web3-zond-accounts/src/common/hardforks/tangerineWhistle.ts
deleted file mode 100644
index ffb2bf43..00000000
--- a/packages/web3-zond-accounts/src/common/hardforks/tangerineWhistle.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-export default {
- "name": "tangerineWhistle",
- "comment": "Hardfork with gas cost changes for IO-heavy operations",
- "url": "https://eips.ethereum.org/EIPS/eip-608",
- "status": "Final",
- "gasConfig": {},
- "gasPrices": {
- "sload": {
- "v": 200,
- "d": "Once per SLOAD operation"
- },
- "call": {
- "v": 700,
- "d": "Once per CALL operation & message call transaction"
- },
- "extcodesize": {
- "v": 700,
- "d": "Base fee of the EXTCODESIZE opcode"
- },
- "extcodecopy": {
- "v": 700,
- "d": "Base fee of the EXTCODECOPY opcode"
- },
- "balance": {
- "v": 400,
- "d": "Base fee of the BALANCE opcode"
- },
- "delegatecall": {
- "v": 700,
- "d": "Base fee of the DELEGATECALL opcode"
- },
- "callcode": {
- "v": 700,
- "d": "Base fee of the CALLCODE opcode"
- },
- "selfdestruct": {
- "v": 5000,
- "d": "Base fee of the SELFDESTRUCT opcode"
- }
- },
- "vm": {},
- "pow": {}
-}
- ;
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/src/common/types.ts b/packages/web3-zond-accounts/src/common/types.ts
index 2086af62..97bbae88 100644
--- a/packages/web3-zond-accounts/src/common/types.ts
+++ b/packages/web3-zond-accounts/src/common/types.ts
@@ -20,20 +20,11 @@ export interface ChainName {
[chainId: string]: string;
}
-export type CliqueConfig = {
- period: number;
- epoch: number;
-};
-
-export type EthashConfig = Record;
-
export type CasperConfig = Record;
export interface GenesisBlockConfig {
timestamp?: string;
gasLimit: number;
- difficulty: number;
- nonce: string;
extraData: string;
baseFeePerGas?: string;
}
@@ -42,7 +33,6 @@ export interface HardforkConfig {
name: Hardfork | string;
// eslint-disable-next-line @typescript-eslint/ban-types
block: number | null; // null is used for hardforks that should not be applied -- since `undefined` isn't a valid value in JSON
- ttd?: bigint | string;
timestamp?: number | string;
// eslint-disable-next-line @typescript-eslint/ban-types
forkHash?: string | null;
@@ -72,8 +62,6 @@ export interface ChainConfig {
consensus: {
type: ConsensusType | string;
algorithm: ConsensusAlgorithm | string;
- clique?: CliqueConfig;
- ethash?: EthashConfig;
casper?: CasperConfig;
};
}
@@ -83,18 +71,14 @@ export interface ChainsConfig {
interface BaseOpts {
/**
- * String identifier ('byzantium') for hardfork or {@link Hardfork} enum.
+ * String identifier ('shanghai') for hardfork or {@link Hardfork} enum.
*
- * Default: Hardfork.London
+ * Default: Hardfork.Shanghai
*/
hardfork?: string | Hardfork;
/**
- * Selected EIPs which can be activated, please use an array for instantiation
- * (e.g. `eips: [ 2537, ]`)
- *
- * Currently supported:
- *
- * - [EIP-2537](https://eips.ethereum.org/EIPS/eip-2537) - BLS12-381 precompiles
+ * Selected EIPs which can be activated, please use an array for instantiation.
+ *
*/
eips?: number[];
}
@@ -137,7 +121,6 @@ export interface CustomCommonOpts extends BaseOpts {
export interface GzondConfigOpts extends BaseOpts {
chain?: string;
genesisHash?: Uint8Array;
- mergeForkIdPostMerge?: boolean;
}
/*
diff --git a/packages/web3-zond-accounts/src/common/utils.ts b/packages/web3-zond-accounts/src/common/utils.ts
index 9e1cd6d0..a28ab156 100644
--- a/packages/web3-zond-accounts/src/common/utils.ts
+++ b/packages/web3-zond-accounts/src/common/utils.ts
@@ -35,20 +35,6 @@ export const stripHexPrefix = (str: string): string => {
return isHexPrefixed(str) ? str.slice(2) : str;
};
-/**
- * Transforms Gzond formatted nonce (i.e. hex string) to 8 byte 0x-prefixed string used internally
- * @param nonce string parsed from the Gzond genesis file
- * @returns nonce as a 0x-prefixed 8 byte string
- */
-function formatNonce(nonce: string): string {
- if (!nonce || nonce === '0x0') {
- return '0x0000000000000000';
- }
- if (isHexPrefixed(nonce)) {
- return `0x${stripHexPrefix(nonce).padStart(16, '0')}`;
- }
- return `0x${nonce.padStart(16, '0')}`;
-}
/**
* Converts a `Number` into a hex `String`
@@ -63,19 +49,15 @@ const intToHex = function (i: number) {
};
/**
- * Converts Gzond genesis parameters to an EthereumJS compatible `CommonOpts` object
- * @param json object representing the Gzond genesis file
- * @param optional mergeForkIdPostMerge which clarifies the placement of MergeForkIdTransition
- * hardfork, which by default is post merge as with the merged eth networks but could also come
- * before merge like in kiln genesis
+ * Converts Gzond genesis parameters to an ZondJS compatible `CommonOpts` object
+ * @param json object representing the Gzond genesis file hardfork
* @returns genesis parameters in a `CommonOpts` compliant object
*/
-function parseGzondParams(json: any, mergeForkIdPostMerge = true) {
+function parseGzondParams(json: any) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const {
name,
config,
- difficulty,
mixHash,
gasLimit,
coinbase,
@@ -83,14 +65,13 @@ function parseGzondParams(json: any, mergeForkIdPostMerge = true) {
}: {
name: string;
config: any;
- difficulty: string;
mixHash: string;
gasLimit: string;
coinbase: string;
baseFeePerGas: string;
} = json;
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
- let { extraData, timestamp, nonce }: { extraData: string; timestamp: string; nonce: string } =
+ let { extraData, timestamp }: { extraData: string; timestamp: string } =
json;
const genesisTimestamp = Number(timestamp);
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
@@ -105,19 +86,6 @@ function parseGzondParams(json: any, mergeForkIdPostMerge = true) {
// eslint-disable-next-line radix
timestamp = intToHex(parseInt(timestamp));
}
- // gzond may not give us a nonce strictly formatted to an 8 byte hex string
- if (nonce.length !== 18) {
- nonce = formatNonce(nonce);
- }
-
- // EIP155 and EIP158 are both part of Spurious Dragon hardfork and must occur at the same time
- // but have different configuration parameters in gzond genesis parameters
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
- if (config.eip155Block !== config.eip158Block) {
- throw new Error(
- 'EIP155 block number must equal EIP 158 block number since both are part of SpuriousDragon hardfork and the client only supports activating the full hardfork',
- );
- }
const params = {
name,
@@ -126,10 +94,8 @@ function parseGzondParams(json: any, mergeForkIdPostMerge = true) {
genesis: {
timestamp,
// eslint-disable-next-line radix
- gasLimit: parseInt(gasLimit), // gzond gasLimit and difficulty are hex strings while ours are `number`s
+ gasLimit: parseInt(gasLimit), // gzond gasLimit is an hex string while ours is a `number`
// eslint-disable-next-line radix
- difficulty: parseInt(difficulty),
- nonce,
extraData,
mixHash,
coinbase,
@@ -138,52 +104,16 @@ function parseGzondParams(json: any, mergeForkIdPostMerge = true) {
hardfork: undefined as string | undefined,
hardforks: [] as ConfigHardfork[],
bootstrapNodes: [],
- consensus:
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
- config.clique !== undefined
- ? {
- type: 'poa',
- algorithm: 'clique',
- clique: {
- // The recent gzond genesis seems to be using blockperiodseconds
- // and epochlength for clique specification
- // see: https://hackmd.io/PqZgMpnkSWCWv5joJoFymQ
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
- period: config.clique.period ?? config.clique.blockperiodseconds,
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
- epoch: config.clique.epoch ?? config.clique.epochlength,
- },
- }
- : {
- type: 'pow',
- algorithm: 'ethash',
- ethash: {},
- },
+ consensus: {
+ type: 'pos',
+ algorithm: 'casper',
+ casper: {},
+ }
};
- const forkMap: { [key: string]: { name: string; postMerge?: boolean; isTimestamp?: boolean } } =
+ const forkMap: { [key: string]: { name: string; isTimestamp?: boolean } } =
{
- [Hardfork.Homestead]: { name: 'homesteadBlock' },
- [Hardfork.Dao]: { name: 'daoForkBlock' },
- [Hardfork.TangerineWhistle]: { name: 'eip150Block' },
- [Hardfork.SpuriousDragon]: { name: 'eip155Block' },
- [Hardfork.Byzantium]: { name: 'byzantiumBlock' },
- [Hardfork.Constantinople]: { name: 'constantinopleBlock' },
- [Hardfork.Petersburg]: { name: 'petersburgBlock' },
- [Hardfork.Istanbul]: { name: 'istanbulBlock' },
- [Hardfork.MuirGlacier]: { name: 'muirGlacierBlock' },
- [Hardfork.Berlin]: { name: 'berlinBlock' },
- [Hardfork.London]: { name: 'londonBlock' },
- [Hardfork.MergeForkIdTransition]: {
- name: 'mergeForkBlock',
- postMerge: mergeForkIdPostMerge,
- },
- [Hardfork.Shanghai]: { name: 'shanghaiTime', postMerge: true, isTimestamp: true },
- [Hardfork.ShardingForkDev]: {
- name: 'shardingForkTime',
- postMerge: true,
- isTimestamp: true,
- },
+ // [Hardfork.Shanghai]: { name: 'shanghaiTime', isTimestamp: true },
};
// forkMapRev is the map from config field name to Hardfork
@@ -231,36 +161,10 @@ function parseGzondParams(json: any, mergeForkIdPostMerge = true) {
(a: ConfigHardfork, b: ConfigHardfork) =>
(a.timestamp ?? genesisTimestamp) - (b.timestamp ?? genesisTimestamp),
);
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
- if (config.terminalTotalDifficulty !== undefined) {
- // Following points need to be considered for placement of merge hf
- // - Merge hardfork can't be placed at genesis
- // - Place merge hf before any hardforks that require CL participation for e.g. withdrawals
- // - Merge hardfork has to be placed just after genesis if any of the genesis hardforks make CL
- // necessary for e.g. withdrawals
- const mergeConfig = {
- name: Hardfork.Merge,
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
- ttd: config.terminalTotalDifficulty,
- // eslint-disable-next-line no-null/no-null
- block: null,
- };
-
- // Merge hardfork has to be placed before first hardfork that is dependent on merge
- const postMergeIndex = params.hardforks.findIndex(
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
- (hf: any) => forkMap[hf.name]?.postMerge === true,
- );
- if (postMergeIndex !== -1) {
- params.hardforks.splice(postMergeIndex, 0, mergeConfig as unknown as ConfigHardfork);
- } else {
- params.hardforks.push(mergeConfig as unknown as ConfigHardfork);
- }
- }
const latestHardfork = params.hardforks.length > 0 ? params.hardforks.slice(-1)[0] : undefined;
params.hardfork = latestHardfork?.name;
- params.hardforks.unshift({ name: Hardfork.Chainstart, block: 0 });
+ params.hardforks.unshift({ name: Hardfork.Shanghai, block: 0 });
return params;
}
@@ -271,16 +175,16 @@ function parseGzondParams(json: any, mergeForkIdPostMerge = true) {
* @param name optional chain name
* @returns parsed params
*/
-export function parseGzondGenesis(json: any, name?: string, mergeForkIdPostMerge?: boolean) {
+export function parseGzondGenesis(json: any, name?: string) {
try {
- if (['config', 'difficulty', 'gasLimit', 'alloc'].some(field => !(field in json))) {
+ if (['config', 'gasLimit', 'alloc'].some(field => !(field in json))) {
throw new Error('Invalid format, expected gzond genesis fields missing');
}
if (name !== undefined) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-param-reassign
json.name = name;
}
- return parseGzondParams(json, mergeForkIdPostMerge);
+ return parseGzondParams(json);
} catch (e: any) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions
throw new Error(`Error parsing parameters file: ${e.message}`);
diff --git a/packages/web3-zond-accounts/src/tx/address.ts b/packages/web3-zond-accounts/src/tx/address.ts
index 4f89eb7c..6f754ac0 100644
--- a/packages/web3-zond-accounts/src/tx/address.ts
+++ b/packages/web3-zond-accounts/src/tx/address.ts
@@ -14,7 +14,7 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { bytesToHex, uint8ArrayEquals } from '@theqrl/web3-utils';
+import { bytesToHex, hexToAddress, uint8ArrayEquals } from '@theqrl/web3-utils';
import { assertIsUint8Array, zeros } from '../common/utils.js';
import { getDilithiumAddressFromPK } from '@theqrl/wallet.js'
import { CryptoPublicKeyBytes } from '@theqrl/dilithium5';
@@ -54,7 +54,7 @@ export class Address {
* Returns hex encoding of address.
*/
public toString(): string {
- return bytesToHex(this.buf);
+ return hexToAddress(bytesToHex(this.buf));
}
/**
diff --git a/packages/web3-zond-accounts/src/tx/baseTransaction.ts b/packages/web3-zond-accounts/src/tx/baseTransaction.ts
index edcc5224..b698fa3a 100644
--- a/packages/web3-zond-accounts/src/tx/baseTransaction.ts
+++ b/packages/web3-zond-accounts/src/tx/baseTransaction.ts
@@ -16,7 +16,9 @@ along with web3.js. If not, see .
*/
import { Numbers } from '@theqrl/web3-types';
-import { bytesToHex } from '@theqrl/web3-utils';
+import { bytesToHex, toHex } from '@theqrl/web3-utils';
+import { cryptoSignVerify } from '@theqrl/dilithium5';
+import { Dilithium } from '@theqrl/wallet.js';
import { MAX_INTEGER, MAX_UINT64, SEED_BYTES } from './constants.js';
import {
Chain,
@@ -26,22 +28,14 @@ import {
uint8ArrayToBigInt,
} from '../common/index.js';
import type {
- AccessListEIP2930TxData,
- AccessListEIP2930ValuesArray,
FeeMarketEIP1559TxData,
FeeMarketEIP1559ValuesArray,
JsonTx,
- TxData,
TxOptions,
- TxValuesArray,
} from './types.js';
-import { Capability } from './types.js';
import { Address } from './address.js';
import { checkMaxInitCodeSize } from './utils.js';
-import {
- cryptoSignVerify
-} from '@theqrl/dilithium5';
-import { Dilithium } from '@theqrl/wallet.js';
+import { isAddressString } from '@theqrl/web3-validator';
interface TransactionCache {
hash: Uint8Array | undefined;
@@ -54,7 +48,7 @@ interface TransactionCache {
/**
* This base class will likely be subject to further
* refactoring along the introduction of additional tx types
- * on the Ethereum network.
+ * on the Zond network.
*
* It is therefore not recommended to use directly.
*/
@@ -79,13 +73,6 @@ export abstract class BaseTransaction {
protected readonly txOptions: TxOptions;
- /**
- * List of tx type defining EIPs,
- * e.g. 1559 (fee market) and 2930 (access lists)
- * for FeeMarketEIP1559Transaction objects
- */
- protected activeCapabilities: number[] = [];
-
/**
* The default chain the tx falls back to if no Common
* is provided and if the chain can't be derived from
@@ -102,10 +89,10 @@ export abstract class BaseTransaction {
*
* @hidden
*/
- protected DEFAULT_HARDFORK: string | Hardfork = Hardfork.Merge;
+ protected DEFAULT_HARDFORK: string | Hardfork = Hardfork.Shanghai;
public constructor(
- txData: TxData | AccessListEIP2930TxData | FeeMarketEIP1559TxData,
+ txData: FeeMarketEIP1559TxData,
opts: TxOptions,
) {
const { nonce, gasLimit, to, value, data, signature, publicKey, type } = txData;
@@ -113,7 +100,21 @@ export abstract class BaseTransaction {
this.txOptions = opts;
- const toB = toUint8Array(to === '' ? '0x' : to);
+ var toB: Uint8Array
+ if (typeof to === 'string') {
+ if (to === '') {
+ toB = toUint8Array('0x')
+ } else if (isAddressString(to)) {
+ toB = toUint8Array(toHex(to))
+ } else {
+ throw new Error(
+ `Cannot convert string to Uint8Array. only supports address strings and this string was given: ${to}`,
+ );
+ }
+ } else {
+ toB = toUint8Array(to);
+ }
+
const signatureB = toUint8Array(signature === '' ? '0x' : signature);
const publicKeyB = toUint8Array(publicKey === '' ? '0x' : publicKey);
@@ -137,40 +138,18 @@ export abstract class BaseTransaction {
const createContract = this.to === undefined || this.to === null;
const allowUnlimitedInitCodeSize = opts.allowUnlimitedInitCodeSize ?? false;
const common = opts.common ?? this._getCommon();
- if (createContract && common.isActivatedEIP(3860) && !allowUnlimitedInitCodeSize) {
+ if (createContract && !allowUnlimitedInitCodeSize) {
checkMaxInitCodeSize(common, this.data.length);
}
}
/**
* Returns the transaction type.
- *
- * Note: legacy txs will return tx type `0`.
*/
public get type() {
return this._type;
}
- /**
- * Checks if a tx type defining capability is active
- * on a tx, for example the EIP-1559 fee market mechanism
- * or the EIP-2930 access list feature.
- *
- * Note that this is different from the tx type itself,
- * so EIP-2930 access lists can very well be active
- * on an EIP-1559 tx for example.
- *
- * This method can be useful for feature checks if the
- * tx type is unknown (e.g. when instantiated with
- * the tx factory).
- *
- * See `Capabilites` in the `types` module for a reference
- * on all supported capabilities.
- */
- public supports(capability: Capability) {
- return this.activeCapabilities.includes(capability);
- }
-
/**
* Checks if the transaction has the minimum amount of gas required
* (DataFee + TxFee + Creation Fee).
@@ -201,7 +180,7 @@ export abstract class BaseTransaction {
const txFee = this.common.param('gasPrices', 'tx');
let fee = this.getDataFee();
if (txFee) fee += txFee;
- if (this.common.gteHardfork('homestead') && this.toCreationAddress()) {
+ if (this.toCreationAddress()) {
const txCreationFee = this.common.param('gasPrices', 'txCreation');
if (txCreationFee) fee += txCreationFee;
}
@@ -222,7 +201,7 @@ export abstract class BaseTransaction {
this.data[i] === 0 ? (cost += txDataZero) : (cost += txDataNonZero);
}
// eslint-disable-next-line no-null/no-null
- if ((this.to === undefined || this.to === null) && this.common.isActivatedEIP(3860)) {
+ if ((this.to === undefined || this.to === null)) {
const dataLength = BigInt(Math.ceil(this.data.length / 32));
const initCodeCost = this.common.param('gasPrices', 'initCodeWordCost') * dataLength;
cost += initCodeCost;
@@ -250,12 +229,10 @@ export abstract class BaseTransaction {
* with {@link Block.fromValuesArray}.
*
* For an unsigned tx this method uses the empty Uint8Array values for the
- * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant
+ * signature parameters `publicKey` and `signature` for encoding. For an EIP-155 compliant
* representation for external signing use {@link BaseTransaction.getMessageToSign}.
*/
public abstract raw():
- | TxValuesArray
- | AccessListEIP2930ValuesArray
| FeeMarketEIP1559ValuesArray;
/**
@@ -326,20 +303,6 @@ export abstract class BaseTransaction {
const msg = this._errorMsg(`Seed must be ${SEED_BYTES} bytes in length.`);
throw new Error(msg);
}
-
- // Hack for the constellation that we have got a legacy tx after spuriousDragon with a non-EIP155 conforming signature
- // and want to recreate a signature (where EIP155 should be applied)
- // Leaving this hack lets the legacy.spec.ts -> sign(), verifySignature() test fail
- // 2021-06-23
- let hackApplied = false;
- if (
- this.type === 0 &&
- this.common.gteHardfork('spuriousDragon') &&
- !this.supports(Capability.EIP155ReplayProtection)
- ) {
- this.activeCapabilities.push(Capability.EIP155ReplayProtection);
- hackApplied = true;
- }
const msgHash = this.getMessageToSign(true);
const buf = Buffer.from(seed);
@@ -347,14 +310,6 @@ export abstract class BaseTransaction {
const signature = acc.sign(msgHash)
const tx = this._processSignatureAndPublicKey(signature, acc.getPK());
- // Hack part 2
- if (hackApplied) {
- const index = this.activeCapabilities.indexOf(Capability.EIP155ReplayProtection);
- if (index > -1) {
- this.activeCapabilities.splice(index, 1);
- }
- }
-
return tx;
}
@@ -470,14 +425,10 @@ export abstract class BaseTransaction {
protected static _validateNotArray(values: { [key: string]: any }) {
const txDataKeys = [
'nonce',
- 'gasPrice',
'gasLimit',
'to',
'value',
'data',
- 'v',
- 'r',
- 's',
'type',
'baseFee',
'maxFeePerGas',
diff --git a/packages/web3-zond-accounts/src/tx/constants.ts b/packages/web3-zond-accounts/src/tx/constants.ts
index c0ef7d58..8c6c3356 100644
--- a/packages/web3-zond-accounts/src/tx/constants.ts
+++ b/packages/web3-zond-accounts/src/tx/constants.ts
@@ -21,7 +21,7 @@ along with web3.js. If not, see .
export const MAX_UINT64 = BigInt('0xffffffffffffffff');
/**
- * The max integer that the evm can handle (2^256-1)
+ * The max integer that the zvm can handle (2^256-1)
*/
export const MAX_INTEGER = BigInt(
'0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
diff --git a/packages/web3-zond-accounts/src/tx/eip1559Transaction.ts b/packages/web3-zond-accounts/src/tx/eip1559Transaction.ts
index 68b23859..c935a5f2 100644
--- a/packages/web3-zond-accounts/src/tx/eip1559Transaction.ts
+++ b/packages/web3-zond-accounts/src/tx/eip1559Transaction.ts
@@ -67,7 +67,7 @@ export class FeeMarketEIP1559Transaction extends BaseTransaction.
-*/
-import { keccak256 } from 'ethereum-cryptography/keccak.js';
-import { validateNoLeadingZeroes } from '@theqrl/web3-validator';
-import { RLP } from '@ethereumjs/rlp';
-import { bytesToHex, hexToBytes, uint8ArrayConcat, uint8ArrayEquals } from '@theqrl/web3-utils';
-import { MAX_INTEGER } from './constants.js';
-import {
- getAccessListData,
- verifyAccessList,
- getAccessListJSON,
- getDataFeeEIP2930,
-} from './utils.js';
-import {
- bigIntToHex,
- toUint8Array,
- uint8ArrayToBigInt,
- bigIntToUnpaddedUint8Array,
-} from '../common/utils.js';
-import { BaseTransaction } from './baseTransaction.js';
-import type {
- AccessList,
- AccessListUint8Array,
- AccessListEIP2930TxData,
- AccessListEIP2930ValuesArray,
- JsonTx,
- TxOptions,
-} from './types.js';
-import type { Common } from '../common/common.js';
-
-const TRANSACTION_TYPE = 1;
-const TRANSACTION_TYPE_UINT8ARRAY = hexToBytes(TRANSACTION_TYPE.toString(16).padStart(2, '0'));
-
-/**
- * Typed transaction with optional access lists
- *
- * - TransactionType: 1
- * - EIP: [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)
- */
-// eslint-disable-next-line no-use-before-define
-export class AccessListEIP2930Transaction extends BaseTransaction {
- public readonly chainId: bigint;
- public readonly accessList: AccessListUint8Array;
- public readonly AccessListJSON: AccessList;
- public readonly gasPrice: bigint;
-
- public readonly common: Common;
-
- /**
- * The default HF if the tx type is active on that HF
- * or the first greater HF where the tx is active.
- *
- * @hidden
- */
- protected DEFAULT_HARDFORK = 'berlin';
-
- /**
- * Instantiate a transaction from a data dictionary.
- *
- * Format: { chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,
- * signature, publicKey }
- *
- * Notes:
- * - `chainId` will be set automatically if not provided
- * - All parameters are optional and have some basic default values
- */
- public static fromTxData(txData: AccessListEIP2930TxData, opts: TxOptions = {}) {
- return new AccessListEIP2930Transaction(txData, opts);
- }
-
- /**
- * Instantiate a transaction from the serialized tx.
- *
- * Format: `0x01 || rlp([chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,
- * signatureYParity (v), signatureR (r), signatureS (s)])`
- */
- public static fromSerializedTx(serialized: Uint8Array, opts: TxOptions = {}) {
- if (!uint8ArrayEquals(serialized.subarray(0, 1), TRANSACTION_TYPE_UINT8ARRAY)) {
- throw new Error(
- `Invalid serialized tx input: not an EIP-2930 transaction (wrong tx type, expected: ${TRANSACTION_TYPE}, received: ${bytesToHex(
- serialized.subarray(0, 1),
- )}`,
- );
- }
- const values = RLP.decode(Uint8Array.from(serialized.subarray(1)));
-
- if (!Array.isArray(values)) {
- throw new Error('Invalid serialized tx input: must be array');
- }
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
- return AccessListEIP2930Transaction.fromValuesArray(values as any, opts);
- }
-
- /**
- * Create a transaction from a values array.
- *
- * Format: `[chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,
- * publicKey, signature]`
- */
- public static fromValuesArray(values: AccessListEIP2930ValuesArray, opts: TxOptions = {}) {
- if (values.length !== 8 && values.length !== 10) {
- throw new Error(
- 'Invalid EIP-2930 transaction. Only expecting 8 values (for unsigned tx) or 10 values (for signed tx).',
- );
- }
-
- const [chainId, nonce, gasPrice, gasLimit, to, value, data, accessList, publicKey, signature] = values;
-
- this._validateNotArray({ chainId });
- validateNoLeadingZeroes({ nonce, gasPrice, gasLimit, value, publicKey, signature });
-
- const emptyAccessList: AccessList = [];
-
- return new AccessListEIP2930Transaction(
- {
- chainId: uint8ArrayToBigInt(chainId),
- nonce,
- gasPrice,
- gasLimit,
- to,
- value,
- data,
- accessList: accessList ?? emptyAccessList,
- publicKey,
- signature,
- },
- opts,
- );
- }
-
- /**
- * This constructor takes the values, validates them, assigns them and freezes the object.
- *
- * It is not recommended to use this constructor directly. Instead use
- * the static factory methods to assist in creating a Transaction object from
- * varying data types.
- */
- public constructor(txData: AccessListEIP2930TxData, opts: TxOptions = {}) {
- super({ ...txData, type: TRANSACTION_TYPE }, opts);
- const { chainId, accessList, gasPrice } = txData;
-
- this.common = this._getCommon(opts.common, chainId);
- this.chainId = this.common.chainId();
-
- // EIP-2718 check is done in Common
- if (!this.common.isActivatedEIP(2930)) {
- throw new Error('EIP-2930 not enabled on Common');
- }
- this.activeCapabilities = this.activeCapabilities.concat([2718, 2930]);
-
- // Populate the access list fields
- const accessListData = getAccessListData(accessList ?? []);
- this.accessList = accessListData.accessList;
- this.AccessListJSON = accessListData.AccessListJSON;
- // Verify the access list format.
- verifyAccessList(this.accessList);
-
- this.gasPrice = uint8ArrayToBigInt(toUint8Array(gasPrice === '' ? '0x' : gasPrice));
-
- this._validateCannotExceedMaxInteger({
- gasPrice: this.gasPrice,
- });
-
- BaseTransaction._validateNotArray(txData);
-
- if (this.gasPrice * this.gasLimit > MAX_INTEGER) {
- const msg = this._errorMsg('gasLimit * gasPrice cannot exceed MAX_INTEGER');
- throw new Error(msg);
- }
-
- const freeze = opts?.freeze ?? true;
- if (freeze) {
- Object.freeze(this);
- }
- }
-
- /**
- * The amount of gas paid for the data in this tx
- */
- public getDataFee(): bigint {
- if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {
- return this.cache.dataFee.value;
- }
-
- let cost = super.getDataFee();
- cost += BigInt(getDataFeeEIP2930(this.accessList, this.common));
-
- if (Object.isFrozen(this)) {
- this.cache.dataFee = {
- value: cost,
- hardfork: this.common.hardfork(),
- };
- }
-
- return cost;
- }
-
- /**
- * The up front amount that an account must have for this transaction to be valid
- */
- public getUpfrontCost(): bigint {
- return this.gasLimit * this.gasPrice + this.value;
- }
-
- /**
- * Returns a Uint8Array Array of the raw Uint8Arrays of the EIP-2930 transaction, in order.
- *
- * Format: `[chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,
- * signatureYParity (v), signatureR (r), signatureS (s)]`
- *
- * Use {@link AccessListEIP2930Transaction.serialize} to add a transaction to a block
- * with {@link Block.fromValuesArray}.
- *
- * For an unsigned tx this method uses the empty UINT8ARRAY values for the
- * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant
- * representation for external signing use {@link AccessListEIP2930Transaction.getMessageToSign}.
- */
- public raw(): AccessListEIP2930ValuesArray {
- return [
- bigIntToUnpaddedUint8Array(this.chainId),
- bigIntToUnpaddedUint8Array(this.nonce),
- bigIntToUnpaddedUint8Array(this.gasPrice),
- bigIntToUnpaddedUint8Array(this.gasLimit),
- this.to !== undefined ? this.to.buf : Uint8Array.from([]),
- bigIntToUnpaddedUint8Array(this.value),
- this.data,
- this.accessList,
- this.publicKey !== undefined ? this.publicKey : Uint8Array.from([]),
- this.signature !== undefined ? this.signature : Uint8Array.from([]),
- ];
- }
-
- /**
- * Returns the serialized encoding of the EIP-2930 transaction.
- *
- * Format: `0x01 || rlp([chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,
- * signatureYParity (v), signatureR (r), signatureS (s)])`
- *
- * Note that in contrast to the legacy tx serialization format this is not
- * valid RLP any more due to the raw tx type preceding and concatenated to
- * the RLP encoding of the values.
- */
- public serialize(): Uint8Array {
- const base = this.raw();
- return uint8ArrayConcat(TRANSACTION_TYPE_UINT8ARRAY, RLP.encode(base));
- }
-
- /**
- * Returns the serialized unsigned tx (hashed or raw), which can be used
- * to sign the transaction (e.g. for sending to a hardware wallet).
- *
- * Note: in contrast to the legacy tx the raw message format is already
- * serialized and doesn't need to be RLP encoded any more.
- *
- * ```javascript
- * const serializedMessage = tx.getMessageToSign(false) // use this for the HW wallet input
- * ```
- *
- * @param hashMessage - Return hashed message if set to true (default: true)
- */
- public getMessageToSign(hashMessage = true): Uint8Array {
- const base = this.raw().slice(0, 8);
- const message = uint8ArrayConcat(TRANSACTION_TYPE_UINT8ARRAY, RLP.encode(base));
- if (hashMessage) {
- return keccak256(message);
- }
- return message;
- }
-
- /**
- * Computes a sha3-256 hash of the serialized tx.
- *
- * This method can only be used for signed txs (it throws otherwise).
- * Use {@link AccessListEIP2930Transaction.getMessageToSign} to get a tx hash for the purpose of signing.
- */
- public hash(): Uint8Array {
- if (!this.isSigned()) {
- const msg = this._errorMsg('Cannot call hash method if transaction is not signed');
- throw new Error(msg);
- }
-
- if (Object.isFrozen(this)) {
- if (!this.cache.hash) {
- this.cache.hash = keccak256(this.serialize());
- }
- return this.cache.hash;
- }
-
- return keccak256(this.serialize());
- }
-
- /**
- * Computes a sha3-256 hash which can be used to verify the signature
- */
- public getMessageToVerifySignature(): Uint8Array {
- return this.getMessageToSign();
- }
-
- /**
- * Returns the public key of the sender
- */
- public getSenderPublicKey(): Uint8Array {
- if (!this.isSigned()) {
- const msg = this._errorMsg('Cannot call this method if transaction is not signed');
- throw new Error(msg);
- }
-
- return this.publicKey!;
- }
-
- public _processSignatureAndPublicKey(signature: Uint8Array, publicKey: Uint8Array) {
- const opts = { ...this.txOptions, common: this.common };
-
- return AccessListEIP2930Transaction.fromTxData(
- {
- chainId: this.chainId,
- nonce: this.nonce,
- gasPrice: this.gasPrice,
- gasLimit: this.gasLimit,
- to: this.to,
- value: this.value,
- data: this.data,
- accessList: this.accessList,
- publicKey: publicKey,
- signature: signature,
- },
- opts,
- );
- }
-
- /**
- * Returns an object with the JSON representation of the transaction
- */
- public toJSON(): JsonTx {
- const accessListJSON = getAccessListJSON(this.accessList);
-
- return {
- chainId: bigIntToHex(this.chainId),
- nonce: bigIntToHex(this.nonce),
- gasPrice: bigIntToHex(this.gasPrice),
- gasLimit: bigIntToHex(this.gasLimit),
- to: this.to !== undefined ? this.to.toString() : undefined,
- value: bigIntToHex(this.value),
- data: bytesToHex(this.data),
- accessList: accessListJSON,
- publicKey: this.publicKey !== undefined ? bytesToHex(this.publicKey) : undefined,
- signature: this.signature !== undefined ? bytesToHex(this.signature) : undefined,
- };
- }
-
- /**
- * Return a compact error string representation of the object
- */
- public errorStr() {
- let errorStr = this._getSharedErrorPostfix();
- // Keep ? for this.accessList since this otherwise causes Hardhat E2E tests to fail
- errorStr += ` gasPrice=${this.gasPrice} accessListCount=${this.accessList?.length ?? 0}`;
- return errorStr;
- }
-
- /**
- * Internal helper function to create an annotated error message
- *
- * @param msg Base error message
- * @hidden
- */
- protected _errorMsg(msg: string) {
- return `${msg} (${this.errorStr()})`;
- }
-}
diff --git a/packages/web3-zond-accounts/src/tx/index.ts b/packages/web3-zond-accounts/src/tx/index.ts
index f02f90cf..df2df071 100644
--- a/packages/web3-zond-accounts/src/tx/index.ts
+++ b/packages/web3-zond-accounts/src/tx/index.ts
@@ -17,7 +17,5 @@ along with web3.js. If not, see .
// @ethereumjs/tx version 4.1.1
export { FeeMarketEIP1559Transaction } from './eip1559Transaction.js';
-export { AccessListEIP2930Transaction } from './eip2930Transaction.js';
-export { Transaction } from './legacyTransaction.js';
export { TransactionFactory } from './transactionFactory.js';
export * from './types.js';
diff --git a/packages/web3-zond-accounts/src/tx/legacyTransaction.ts b/packages/web3-zond-accounts/src/tx/legacyTransaction.ts
deleted file mode 100644
index dafb8701..00000000
--- a/packages/web3-zond-accounts/src/tx/legacyTransaction.ts
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-import { RLP } from '@ethereumjs/rlp';
-import { keccak256 } from 'ethereum-cryptography/keccak.js';
-import { bytesToHex } from '@theqrl/web3-utils';
-import { validateNoLeadingZeroes } from '@theqrl/web3-validator';
-import {
- bigIntToHex,
- bigIntToUnpaddedUint8Array,
- toUint8Array,
- uint8ArrayToBigInt,
- unpadUint8Array,
-} from '../common/utils.js';
-import { MAX_INTEGER } from './constants.js';
-
-import { BaseTransaction } from './baseTransaction.js';
-
-import type { Common } from '../common/common.js';
-import type { JsonTx, TxData, TxOptions, TxValuesArray } from './types.js';
-import { Capability } from './types.js';
-
-const TRANSACTION_TYPE = 0;
-
-/**
- * An Ethereum non-typed (legacy) transaction
- */
-// eslint-disable-next-line no-use-before-define
-export class Transaction extends BaseTransaction {
- public readonly gasPrice: bigint;
-
- public readonly common: Common;
-
- /**
- * Instantiate a transaction from a data dictionary.
- *
- * Format: { nonce, gasPrice, gasLimit, to, value, data, signature, publicKey }
- *
- * Notes:
- * - All parameters are optional and have some basic default values
- */
- public static fromTxData(txData: TxData, opts: TxOptions = {}) {
- return new Transaction(txData, opts);
- }
-
- /**
- * Instantiate a transaction from the serialized tx.
- *
- * Format: `rlp([nonce, gasPrice, gasLimit, to, value, data, signature, publicKey])`
- */
- public static fromSerializedTx(serialized: Uint8Array, opts: TxOptions = {}) {
- const values = RLP.decode(serialized);
-
- if (!Array.isArray(values)) {
- throw new Error('Invalid serialized tx input. Must be array');
- }
-
- return this.fromValuesArray(values as Uint8Array[], opts);
- }
-
- /**
- * Create a transaction from a values array.
- *
- * Format: `[nonce, gasPrice, gasLimit, to, value, data, signature, publicKey]`
- */
- public static fromValuesArray(values: TxValuesArray, opts: TxOptions = {}) {
- // If length is not 6, it has length 8. If signature/publicKey are empty Uint8Array, it is still an unsigned transaction
- // This happens if you get the RLP data from `raw()`
- if (values.length !== 6 && values.length !== 8) {
- throw new Error(
- 'Invalid transaction. Only expecting 6 values (for unsigned tx) or 8 values (for signed tx).',
- );
- }
-
- const [nonce, gasPrice, gasLimit, to, value, data, publicKey, signature ] = values;
-
- validateNoLeadingZeroes({ nonce, gasPrice, gasLimit, value, publicKey, signature });
-
- return new Transaction(
- {
- nonce,
- gasPrice,
- gasLimit,
- to,
- value,
- data,
- publicKey,
- signature,
- },
- opts,
- );
- }
-
- /**
- * This constructor takes the values, validates them, assigns them and freezes the object.
- *
- * It is not recommended to use this constructor directly. Instead use
- * the static factory methods to assist in creating a Transaction object from
- * varying data types.
- */
- public constructor(txData: TxData, opts: TxOptions = {}) {
- super({ ...txData, type: TRANSACTION_TYPE }, opts);
-
- this.common = this._getCommon(opts.common)
-
- this.gasPrice = uint8ArrayToBigInt(
- toUint8Array(txData.gasPrice === '' ? '0x' : txData.gasPrice),
- );
-
- if (this.gasPrice * this.gasLimit > MAX_INTEGER) {
- const msg = this._errorMsg('gas limit * gasPrice cannot exceed MAX_INTEGER (2^256-1)');
- throw new Error(msg);
- }
- this._validateCannotExceedMaxInteger({ gasPrice: this.gasPrice });
- BaseTransaction._validateNotArray(txData);
-
- if (this.common.gteHardfork('spuriousDragon')) {
- if (!this.isSigned()) {
- this.activeCapabilities.push(Capability.EIP155ReplayProtection);
- } else {
- // EIP155 spec:
- // If block.number >= 2,675,000 and v = CHAIN_ID * 2 + 35 or v = CHAIN_ID * 2 + 36
- // then when computing the hash of a transaction for purposes of signing or recovering
- // instead of hashing only the first six elements (i.e. nonce, gasprice, startgas, to, value, data)
- // hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0.
- // v and chain ID meet EIP-155 conditions
- // eslint-disable-next-line no-lonely-if
-
- // if (meetsEIP155(this.v!, this.common.chainId())) {
- // this.activeCapabilities.push(Capability.EIP155ReplayProtection);
- // }
- }
- }
-
- const freeze = opts?.freeze ?? true;
- if (freeze) {
- Object.freeze(this);
- }
- }
-
- /**
- * Returns a Uint8Array Array of the raw Uint8Arrays of the legacy transaction, in order.
- *
- * Format: `[nonce, gasPrice, gasLimit, to, value, data, signature, publicKey]`
- *
- * For legacy txs this is also the correct format to add transactions
- * to a block with {@link Block.fromValuesArray} (use the `serialize()` method
- * for typed txs).
- *
- * For an unsigned tx this method returns the empty Uint8Array values
- * for the signature parameters `v`, `r` and `s`. For an EIP-155 compliant
- * representation have a look at {@link Transaction.getMessageToSign}.
- */
- public raw(): TxValuesArray {
- return [
- bigIntToUnpaddedUint8Array(this.nonce),
- bigIntToUnpaddedUint8Array(this.gasPrice),
- bigIntToUnpaddedUint8Array(this.gasLimit),
- this.to !== undefined ? this.to.buf : Uint8Array.from([]),
- bigIntToUnpaddedUint8Array(this.value),
- this.data,
- this.publicKey !== undefined ? this.publicKey : Uint8Array.from([]),
- this.signature !== undefined ? this.signature : Uint8Array.from([]),
- ];
- }
-
- /**
- * Returns the serialized encoding of the legacy transaction.
- *
- * Format: `rlp([nonce, gasPrice, gasLimit, to, value, data, signature, publicKey])`
- *
- * For an unsigned tx this method uses the empty Uint8Array values for the
- * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant
- * representation for external signing use {@link Transaction.getMessageToSign}.
- */
- public serialize(): Uint8Array {
- return RLP.encode(this.raw());
- }
-
- private _getMessageToSign() {
- const values = [
- bigIntToUnpaddedUint8Array(this.nonce),
- bigIntToUnpaddedUint8Array(this.gasPrice),
- bigIntToUnpaddedUint8Array(this.gasLimit),
- this.to !== undefined ? this.to.buf : Uint8Array.from([]),
- bigIntToUnpaddedUint8Array(this.value),
- this.data,
- ];
-
- if (this.supports(Capability.EIP155ReplayProtection)) {
- values.push(toUint8Array(this.common.chainId()));
- // @NOTE(rgeraldes24): the following fields might be removed in the future
- values.push(unpadUint8Array(toUint8Array(0)));
- values.push(unpadUint8Array(toUint8Array(0)));
- }
-
- return values;
- }
-
- /**
- * Returns the unsigned tx (hashed or raw), which can be used
- * to sign the transaction (e.g. for sending to a hardware wallet).
- *
- * Note: the raw message message format for the legacy tx is not RLP encoded
- * and you might need to do yourself with:
- *
- * ```javascript
- * import { bufArrToArr } from '../util'
- * import { RLP } from '../rlp'
- * const message = tx.getMessageToSign(false)
- * const serializedMessage = RLP.encode(message) // use this for the HW wallet input
- * ```
- *
- * @param hashMessage - Return hashed message if set to true (default: true)
- */
- public getMessageToSign(hashMessage: false): Uint8Array[];
- public getMessageToSign(hashMessage?: true): Uint8Array;
- public getMessageToSign(hashMessage = true) {
- const message = this._getMessageToSign();
- if (hashMessage) {
- return keccak256(RLP.encode(message));
- }
- return message;
- }
-
- /**
- * The amount of gas paid for the data in this tx
- */
- public getDataFee(): bigint {
- if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {
- return this.cache.dataFee.value;
- }
-
- if (Object.isFrozen(this)) {
- this.cache.dataFee = {
- value: super.getDataFee(),
- hardfork: this.common.hardfork(),
- };
- }
-
- return super.getDataFee();
- }
-
- /**
- * The up front amount that an account must have for this transaction to be valid
- */
- public getUpfrontCost(): bigint {
- return this.gasLimit * this.gasPrice + this.value;
- }
-
- /**
- * Computes a sha3-256 hash of the serialized tx.
- *
- * This method can only be used for signed txs (it throws otherwise).
- * Use {@link Transaction.getMessageToSign} to get a tx hash for the purpose of signing.
- */
- public hash(): Uint8Array {
- if (!this.isSigned()) {
- const msg = this._errorMsg('Cannot call hash method if transaction is not signed');
- throw new Error(msg);
- }
-
- if (Object.isFrozen(this)) {
- if (!this.cache.hash) {
- this.cache.hash = keccak256(RLP.encode(this.raw()));
- }
- return this.cache.hash;
- }
-
- return keccak256(RLP.encode(this.raw()));
- }
-
- /**
- * Computes a sha3-256 hash which can be used to verify the signature
- */
- public getMessageToVerifySignature() {
- if (!this.isSigned()) {
- const msg = this._errorMsg('This transaction is not signed');
- throw new Error(msg);
- }
- const message = this._getMessageToSign();
- return keccak256(RLP.encode(message));
- }
-
- /**
- * Returns the public key of the sender
- */
- public getSenderPublicKey(): Uint8Array {
- if (!this.isSigned()) {
- const msg = this._errorMsg('Cannot call this method if transaction is not signed');
- throw new Error(msg);
- }
-
- return this.publicKey!;
- }
-
- /**
- * Process the signature and public key values from the `sign` method of the base transaction.
- */
- protected _processSignatureAndPublicKey(signature: Uint8Array, publicKey: Uint8Array) {
- const opts = { ...this.txOptions, common: this.common };
-
- return Transaction.fromTxData(
- {
- nonce: this.nonce,
- gasPrice: this.gasPrice,
- gasLimit: this.gasLimit,
- to: this.to,
- value: this.value,
- data: this.data,
- publicKey: publicKey,
- signature: signature,
- },
- opts,
- );
- }
-
- /**
- * Returns an object with the JSON representation of the transaction.
- */
- public toJSON(): JsonTx {
- return {
- nonce: bigIntToHex(this.nonce),
- gasPrice: bigIntToHex(this.gasPrice),
- gasLimit: bigIntToHex(this.gasLimit),
- to: this.to !== undefined ? this.to.toString() : undefined,
- value: bigIntToHex(this.value),
- data: bytesToHex(this.data),
- publicKey: this.publicKey !== undefined ? bytesToHex(this.publicKey) : undefined,
- signature: this.signature !== undefined ? bytesToHex(this.signature) : undefined,
- };
- }
-
- /**
- * Return a compact error string representation of the object
- */
- public errorStr() {
- let errorStr = this._getSharedErrorPostfix();
- errorStr += ` gasPrice=${this.gasPrice}`;
- return errorStr;
- }
-
- /**
- * Internal helper function to create an annotated error message
- *
- * @param msg Base error message
- * @hidden
- */
- protected _errorMsg(msg: string) {
- return `${msg} (${this.errorStr()})`;
- }
-}
diff --git a/packages/web3-zond-accounts/src/tx/transactionFactory.ts b/packages/web3-zond-accounts/src/tx/transactionFactory.ts
index dd74bee4..49cb36d9 100644
--- a/packages/web3-zond-accounts/src/tx/transactionFactory.ts
+++ b/packages/web3-zond-accounts/src/tx/transactionFactory.ts
@@ -16,12 +16,9 @@ along with web3.js. If not, see .
*/
import { toUint8Array, uint8ArrayToBigInt } from '../common/utils.js';
import { FeeMarketEIP1559Transaction } from './eip1559Transaction.js';
-import { AccessListEIP2930Transaction } from './eip2930Transaction.js';
-import { Transaction } from './legacyTransaction.js';
import type { TypedTransaction } from '../types.js';
import type {
- AccessListEIP2930TxData,
FeeMarketEIP1559TxData,
TxData,
TxOptions,
@@ -43,22 +40,7 @@ export class TransactionFactory {
txData: TxData | TypedTransaction,
txOptions: TxOptions = {},
): TypedTransaction {
- if (!('type' in txData) || txData.type === undefined) {
- // Assume legacy transaction
- return Transaction.fromTxData(txData as TxData, txOptions);
- }
const txType = Number(uint8ArrayToBigInt(toUint8Array(txData.type)));
- if (txType === 0) {
- return Transaction.fromTxData(txData as TxData, txOptions);
- }
- if (txType === 1) {
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- return AccessListEIP2930Transaction.fromTxData(
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- txData,
- txOptions,
- );
- }
if (txType === 2) {
return FeeMarketEIP1559Transaction.fromTxData(
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
@@ -79,25 +61,18 @@ export class TransactionFactory {
data: Uint8Array,
txOptions: TxOptions = {},
): TypedTransaction {
- if (data[0] <= 0x7f) {
- // Determine the type.
- switch (data[0]) {
- case 1:
- return AccessListEIP2930Transaction.fromSerializedTx(data, txOptions);
- case 2:
- return FeeMarketEIP1559Transaction.fromSerializedTx(data, txOptions);
- default:
- throw new Error(`TypedTransaction with ID ${data[0]} unknown`);
- }
- } else {
- return Transaction.fromSerializedTx(data, txOptions);
+ // Determine the type.
+ switch (data[0]) {
+ case 2:
+ return FeeMarketEIP1559Transaction.fromSerializedTx(data, txOptions);
+ default:
+ throw new Error(`TypedTransaction with ID ${data[0]} unknown`);
}
}
/**
* When decoding a BlockBody, in the transactions field, a field is either:
* A Uint8Array (a TypedTransaction - encoded as TransactionType || rlp(TransactionPayload))
- * A Uint8Array[] (Legacy Transaction)
* This method returns the right transaction.
*
* @param data - A Uint8Array or Uint8Array[]
@@ -107,10 +82,6 @@ export class TransactionFactory {
if (data instanceof Uint8Array) {
return this.fromSerializedData(data, txOptions);
}
- if (Array.isArray(data)) {
- // It is a legacy transaction
- return Transaction.fromValuesArray(data, txOptions);
- }
throw new Error('Cannot decode transaction: unknown type input');
}
}
diff --git a/packages/web3-zond-accounts/src/tx/types.ts b/packages/web3-zond-accounts/src/tx/types.ts
index b9267863..cbf1051f 100644
--- a/packages/web3-zond-accounts/src/tx/types.ts
+++ b/packages/web3-zond-accounts/src/tx/types.ts
@@ -14,43 +14,13 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import type { HexString, Numbers } from '@theqrl/web3-types';
+import type { Numbers, ZPrefixedHexString } from '@theqrl/web3-types';
import type { Common } from '../common/common.js';
// eslint-disable-next-line require-extensions/require-extensions
-import type { Uint8ArrayLike, PrefixedHexString } from '../common/types';
+import type { PrefixedHexString, Uint8ArrayLike } from '../common/types';
import { Address } from './address.js';
-/**
- * Can be used in conjunction with {@link Transaction.supports}
- * to query on tx capabilities
- */
-export enum Capability {
- /**
- * Tx supports EIP-155 replay protection
- * See: [155](https://eips.ethereum.org/EIPS/eip-155) Replay Attack Protection EIP
- */
- EIP155ReplayProtection = 155,
-
- /**
- * Tx supports EIP-1559 gas fee market mechanism
- * See: [1559](https://eips.ethereum.org/EIPS/eip-1559) Fee Market EIP
- */
- EIP1559FeeMarket = 1559,
-
- /**
- * Tx is a typed transaction as defined in EIP-2718
- * See: [2718](https://eips.ethereum.org/EIPS/eip-2718) Transaction Type EIP
- */
- EIP2718TypedTransaction = 2718,
-
- /**
- * Tx supports access list generation as defined in EIP-2930
- * See: [2930](https://eips.ethereum.org/EIPS/eip-2930) Access Lists EIP
- */
- EIP2930AccessLists = 2930,
-}
-
/**
* The options for initializing a {@link Transaction}.
*/
@@ -91,7 +61,7 @@ export interface TxOptions {
*/
export type AccessListItem = {
- address: PrefixedHexString;
+ address: ZPrefixedHexString;
storageKeys: PrefixedHexString[];
};
@@ -119,10 +89,6 @@ export function isAccessList(input: AccessListUint8Array | AccessList): input is
return !isAccessListUint8Array(input); // This is exactly the same method, except the output is negated.
}
-// export interface Dilithium5Signature {
-// signature: Uint8Array;
-// }
-
/**
* Legacy {@link Transaction} Data
*/
@@ -132,12 +98,6 @@ export type TxData = {
*/
nonce?: Numbers | Uint8Array;
- /**
- * The transaction's gas price.
- */
- // eslint-disable-next-line @typescript-eslint/ban-types
- gasPrice?: Numbers | Uint8Array | null;
-
/**
* The transaction's gas limit.
*/
@@ -146,7 +106,7 @@ export type TxData = {
/**
* The transaction's the address is sent to.
*/
- to?: Address | Uint8Array | HexString;
+ to?: Address | Uint8Array | ZPrefixedHexString;
/**
* The amount of Ether sent.
@@ -176,9 +136,9 @@ export type TxData = {
};
/**
- * {@link AccessListEIP2930Transaction} data.
+ * {@link FeeMarketEIP1559Transaction} data.
*/
-export interface AccessListEIP2930TxData extends TxData {
+export interface FeeMarketEIP1559TxData extends TxData {
/**
* The transaction's chain ID
*/
@@ -189,49 +149,18 @@ export interface AccessListEIP2930TxData extends TxData {
*/
// eslint-disable-next-line @typescript-eslint/ban-types
accessList?: AccessListUint8Array | AccessList | null;
-}
-/**
- * {@link FeeMarketEIP1559Transaction} data.
- */
-export interface FeeMarketEIP1559TxData extends AccessListEIP2930TxData {
- /**
- * The transaction's gas price, inherited from {@link Transaction}. This property is not used for EIP1559
- * transactions and should always be undefined for this specific transaction type.
- */
- // eslint-disable-next-line @typescript-eslint/ban-types
- gasPrice?: never | null;
/**
* The maximum inclusion fee per gas (this fee is given to the miner)
*/
maxPriorityFeePerGas?: Numbers | Uint8Array;
+
/**
* The maximum total fee
*/
maxFeePerGas?: Numbers | Uint8Array;
}
-/**
- * Uint8Array values array for a legacy {@link Transaction}
- */
-export type TxValuesArray = Uint8Array[];
-
-/**
- * Uint8Array values array for an {@link AccessListEIP2930Transaction}
- */
-export type AccessListEIP2930ValuesArray = [
- Uint8Array,
- Uint8Array,
- Uint8Array,
- Uint8Array,
- Uint8Array,
- Uint8Array,
- Uint8Array,
- AccessListUint8Array,
- Uint8Array?,
- Uint8Array?,
-];
-
/**
* Uint8Array values array for a {@link FeeMarketEIP1559Transaction}
*/
@@ -247,7 +176,6 @@ export type FeeMarketEIP1559ValuesArray = [
AccessListUint8Array,
Uint8Array?,
Uint8Array?,
- Uint8Array?,
];
type JsonAccessListItem = { address: string; storageKeys: string[] };
@@ -258,11 +186,9 @@ type JsonAccessListItem = { address: string; storageKeys: string[] };
*
* Note that all values are marked as optional
* and not all the values are present on all tx types
- * (an EIP1559 tx e.g. lacks a `gasPrice`).
*/
export interface JsonTx {
nonce?: string;
- gasPrice?: string;
gasLimit?: string;
to?: string;
data?: string;
@@ -274,6 +200,4 @@ export interface JsonTx {
type?: string;
maxPriorityFeePerGas?: string;
maxFeePerGas?: string;
- maxFeePerDataGas?: string;
- versionedHashes?: string[];
}
diff --git a/packages/web3-zond-accounts/src/tx/utils.ts b/packages/web3-zond-accounts/src/tx/utils.ts
index 13bf9be4..48405651 100644
--- a/packages/web3-zond-accounts/src/tx/utils.ts
+++ b/packages/web3-zond-accounts/src/tx/utils.ts
@@ -15,7 +15,7 @@ You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
import { HexString } from '@theqrl/web3-types';
-import { bytesToHex } from '@theqrl/web3-utils';
+import { bytesToHex, toHex } from '@theqrl/web3-utils';
import { setLengthLeft, toUint8Array } from '../common/utils.js';
import type { AccessList, AccessListUint8Array, AccessListItem } from './types.js';
import { isAccessList } from './types.js';
@@ -43,7 +43,7 @@ export const getAccessListData = (accessList: AccessListUint8Array | AccessList)
// eslint-disable-next-line @typescript-eslint/prefer-for-of
for (let i = 0; i < accessList.length; i += 1) {
const item: AccessListItem = accessList[i];
- const addressBytes = toUint8Array(item.address);
+ const addressBytes = toUint8Array(toHex(item.address));
const storageItems: Uint8Array[] = [];
// eslint-disable-next-line @typescript-eslint/prefer-for-of
for (let index = 0; index < item.storageKeys.length; index += 1) {
diff --git a/packages/web3-zond-accounts/src/types.ts b/packages/web3-zond-accounts/src/types.ts
index 4e6e74ae..abb748cb 100644
--- a/packages/web3-zond-accounts/src/types.ts
+++ b/packages/web3-zond-accounts/src/types.ts
@@ -16,8 +16,8 @@ along with web3.js. If not, see .
*/
import { Web3BaseWalletAccount, HexString } from '@theqrl/web3-types';
-import { FeeMarketEIP1559TxData, AccessListEIP2930TxData, TxData } from './tx/types.js';
-import { AccessListEIP2930Transaction, FeeMarketEIP1559Transaction, Transaction } from './tx';
+import { FeeMarketEIP1559TxData } from './tx/types.js';
+import { FeeMarketEIP1559Transaction } from './tx';
export type SignatureObject = {
messageHash: string;
@@ -31,8 +31,6 @@ export type SignTransactionResult = SignatureObject & {
export type SignTransactionFunction = (
transaction:
- | TxData
- | AccessListEIP2930TxData
| FeeMarketEIP1559TxData
| Record,
) => SignTransactionResult;
@@ -86,6 +84,4 @@ export interface WebStorage {
}
export type TypedTransaction =
- | Transaction
- | AccessListEIP2930Transaction
- | FeeMarketEIP1559Transaction;
+ FeeMarketEIP1559Transaction;
diff --git a/packages/web3-zond-accounts/src/wallet.ts b/packages/web3-zond-accounts/src/wallet.ts
index c97b1e4e..b4faf7cb 100644
--- a/packages/web3-zond-accounts/src/wallet.ts
+++ b/packages/web3-zond-accounts/src/wallet.ts
@@ -91,14 +91,14 @@ export class Wallet<
* web3.zond.accounts.wallet.create(2)
* > Wallet(2) [
* {
- * address: '0xde38310a42B751AE57d30cFFF4a0A3c52A442fCE',
+ * address: 'Zde38310a42B751AE57d30cFFF4a0A3c52A442fCE',
* seed: '0x6422c9d28efdcbee93c1d32a5fc6fd6fa081b985487885296cf8c9bbb5872600',
* signTransaction: [Function: signTransaction],
* sign: [Function: sign],
* encrypt: [Function: encrypt]
* },
* {
- * address: '0x766BF755246d924B1d017Fdb5390f38a60166691',
+ * address: 'Z766BF755246d924B1d017Fdb5390f38a60166691',
* seed: '0x756530f13c0eb636ebdda655335f5dea9921e3362e2e588b0ad59e556f7751f0',
* signTransaction: [Function: signTransaction],
* sign: [Function: sign],
@@ -110,8 +110,8 @@ export class Wallet<
* decrypt: [Function: decrypt]
* },
* _addressMap: Map(2) {
- * '0xde38310a42b751ae57d30cfff4a0a3c52a442fce' => 0,
- * '0x766bf755246d924b1d017fdb5390f38a60166691' => 1
+ * 'Zde38310a42b751ae57d30cfff4a0a3c52a442fce' => 0,
+ * 'Z766bf755246d924b1d017fdb5390f38a60166691' => 1
* },
* _defaultKeyName: 'web3js_wallet'
* ]
@@ -137,7 +137,7 @@ export class Wallet<
* web3.zond.accounts.wallet.add('0xbce9b59981303e76c4878b1a6d7b088ec6b9dd5c966b7d5f54d7a749ff683387');
* > Wallet(1) [
* {
- * address: '0x85D70633b90e03e0276B98880286D0D055685ed7',
+ * address: 'Z85D70633b90e03e0276B98880286D0D055685ed7',
* seed: '0xbce9b59981303e76c4878b1a6d7b088ec6b9dd5c966b7d5f54d7a749ff683387',
* signTransaction: [Function: signTransaction],
* sign: [Function: sign],
@@ -148,7 +148,7 @@ export class Wallet<
* publicKeyToAccount: [Function: publicKeyToAccount],
* decrypt: [Function: decrypt]
* },
- * _addressMap: Map(1) { '0x85d70633b90e03e0276b98880286d0d055685ed7' => 0 },
+ * _addressMap: Map(1) { 'Z85d70633b90e03e0276b98880286d0d055685ed7' => 0 },
* _defaultKeyName: 'web3js_wallet'
* ]
* ```
@@ -160,7 +160,7 @@ export class Wallet<
let index = this.length;
const existAccount = this.get(account.address);
if (existAccount) {
- console.warn(`Account ${account.address.toLowerCase()} already exists.`);
+ console.warn(`Account Z${account.address.slice(1).toLowerCase()} already exists.`);
index = this._addressMap.get(account.address.toLowerCase()) ?? index;
}
this._addressMap.set(account.address.toLowerCase(), index);
@@ -197,7 +197,7 @@ export class Wallet<
* ```ts
* web3.zond.accounts.wallet.add('0xbce9b59981303e76c4878b1a6d7b088ec6b9dd5c966b7d5f54d7a749ff683387');
*
- * web3.zond.accounts.wallet.remove('0x85D70633b90e03e0276B98880286D0D055685ed7');
+ * web3.zond.accounts.wallet.remove('Z85D70633b90e03e0276B98880286D0D055685ed7');
* > true
* web3.zond.accounts.wallet
* > Wallet(0) [
@@ -259,6 +259,7 @@ export class Wallet<
return this;
}
+ // TODO(youtrack/theqrl/web3.js/3)
/**
* Encrypts all wallet accounts to an array of encrypted keystore v3 objects.
*
@@ -286,6 +287,7 @@ export class Wallet<
// return Promise.all(this.map(async (account: T) => account.encrypt(password, options)));
// }
+ // TODO(youtrack/theqrl/web3.js/3)
/**
* Decrypts keystore v3 objects.
*
@@ -335,22 +337,22 @@ export class Wallet<
* },
* _defaultKeyName: 'web3js_wallet',
* _accounts: {
- * '0x85d70633b90e03e0276b98880286d0d055685ed7': {
- * address: '0x85D70633b90e03e0276B98880286D0D055685ed7',
+ * 'Z85d70633b90e03e0276b98880286d0d055685ed7': {
+ * address: 'Z85D70633b90e03e0276B98880286D0D055685ed7',
* seed: '0xbce9b59981303e76c4878b1a6d7b088ec6b9dd5c966b7d5f54d7a749ff683387',
* signTransaction: [Function: signTransaction],
* sign: [Function: sign],
* encrypt: [Function: encrypt]
* },
- * '0x06f702337909c06c82b09b7a22f0a2f0855d1f68': {
- * address: '0x06F702337909C06C82B09B7A22F0a2f0855d1F68',
+ * 'Z06f702337909c06c82b09b7a22f0a2f0855d1f68': {
+ * address: 'Z06F702337909C06C82B09B7A22F0a2f0855d1F68',
* seed: '87a51da18900da7398b3bab03996833138f269f8f66dd1237b98df6b9ce14573',
* signTransaction: [Function: signTransaction],
* sign: [Function: sign],
* encrypt: [Function: encrypt]
* },
- * '0xb5d89661b59a9af0b34f58d19138baa2de48baaf': {
- * address: '0xB5d89661B59a9aF0b34f58D19138bAa2de48BAaf',
+ * 'Zb5d89661b59a9af0b34f58d19138baa2de48baaf': {
+ * address: 'ZB5d89661B59a9aF0b34f58D19138bAa2de48BAaf',
* seed: '7ee61c5282979aae9dd795bb6a54e8bdc2bfe009acb64eb9a67322eec3b3da6e',
* signTransaction: [Function: signTransaction],
* sign: [Function: sign],
diff --git a/packages/web3-zond-accounts/test/fixtures/account.ts b/packages/web3-zond-accounts/test/fixtures/account.ts
index 691b3f5f..673ab251 100644
--- a/packages/web3-zond-accounts/test/fixtures/account.ts
+++ b/packages/web3-zond-accounts/test/fixtures/account.ts
@@ -30,25 +30,25 @@ import {
} from '@theqrl/web3-errors';
import { CipherOptions, KeyStore } from '@theqrl/web3-types';
import { hexToBytes } from '@theqrl/web3-utils';
-import { AccessListEIP2930TxData, FeeMarketEIP1559TxData, TxData } from '../../src/tx/types';
+import { FeeMarketEIP1559TxData } from '../../src/tx/types';
import { sign, signTransaction/*, encrypt */} from '../../src/account';
export const validPublicKeyToAddressData: [string, string][] = [
[
'0xd64a1cc77db0e77b70ee2cd5bbca52b06dde43423e03d8fb9f76e9698d15111a6b6042e9e2757edff6ddf54ea4c9656c6d6354ad538f308a2be1e67f4d39feb7765e31f048cc3403dd967fcdd405f3ef4817bb7bc70691d7129f2e4a10a7fd6b050ce306f77083c48f97b984e5f8232cc17473b55adf92a1fa2a31b0fbde0dba752530a7a4626b863f6deebb05695ad788df09ee49da26771ff5278445384dbc74b487486741077a58fa6881814f0cb99a502d4d384cb9b78b0bca4a681a6de448ddd25b6833b744a80bd9632b4dea700e00f9483a7e272691a8d77e4786dd311b41ec9933534e1b1cf1a402cbfefce230eb76bc5061be6d2902a18e35002743359a81b4dcb9da657af0bb1429bc757e6d2e5791299b07e8e5d65168c76d0e8b8a723466ab86a2f3ed53ccda578c60317052a5bb0d25caaabd4dde849dafecb4cd97e9213f4c8a4a2c317fae51d7d3371062d8381c925c686fced1213c8d930f6cf249e1a5a2d7ec160df0d82c2c7422b3fb258fca2a8db0ed4218137167cfaf37b7d8cfa3573b5e23f3694f21d41a1da987db1fbbcb579987e1928150f478987c8e7aad4833f2ea692014b5902153c95ab438e12d0b4d2f1436971f476fbd85947189dc0d6d37d91e76389aa52068fa3c501357aedcfbbf7a776e5950654034f8368a3df5e426713f6eeb7ae4e2d3467853dbb19e0d850e61eeac4dd7a5c010b6748872734a3cbee90e2bbf8e876682a1d9ee174e858a59ea081439c711e64c05ae3640b661038e251c33f0b7acff793061c87e843aa8389c0dad50d3ce5c217f9c2b37450378c3642c31cff85a7231df6dd5970c7fb26e8016afb29b355331fde585f0daed5e3c36f8fa3250fd18831d770342ac0272dc59e95ad03902917afe3dabd73cff58f02d60f29cc60074999d1ff152fcd8be139eee3aab59a512dc3a7d50cf534229420d96c38cb4b7c7e8bd806b5abe8c7bd12e427bc74039798e7b6fbcb4f4ecd851015a1a8962b15e83d4d8a4794307581d8736130a15c522de42dbf0bc331ab52443b17f222f7f534630e9d20a0aced9876b1911b6f808143a1e1265393568df45e0a02ea53ab24039faf4cf176f19a110322fb71afbd945572fe367c77d0c1dbfec85a8731a2e39bd41eb9e44bf0dfdc1ee1f564d06ad7c1adbf196ef31f2bd0247c674bdf3b416121aa49079cc69b9643829d7ae05a7213d31b8c9d334b441ebfb96cae49791130676e83bad0af57d5ec22d4e3e2c2a0977ed0560567a5c852a4916a39a15fb43a35c38680f9d88d5268327b211c4af40e93a6a121c9907ef9ef5d3d545cbbe504070c0acceacfa6df8e0b444573ecb2229fe850f6b44869065f2fccaf838af7b20cc8093aceced65b10a665fbd4a8ea513229642269e9cb9f5a7428d1c4aec329ef28e55ab3b0fe2658318b8681eae65f201dd387a32c4713bf8f1982ea91c0240f466c772ce5d203bfbb51e335ec3fd807ad7bb93691328721d970b7dfbf1c93550670da8e87fe27c9b8954916e8681095452b0dabbabacdc0a427586855d46618f164fce04f9fc57d40a1326d3fa968bd28f069a03ee558dd4cc063c8b77ca2d3f35dec70b0a12ad54be9e9871c43a3850707a4188166860c337e6026338e6ca6d3e4467a57c67e6ed64de11e377ebbbb581ccbe8d636a763797508d2848a13db3246c5232783905007d0c8529e6224d7a7985c59f12b8ba1e7c6d489da4e7d66ef9b0e4d9c1d040699107d6fa957defecb7243e3fada84ab90880070e2c4e7b5fe26fc630a70ebe89f418c14616e36c4a2902e3fdc8a2597c73ccbbf39d9a530bde406ccddbaac26af94125b0d9daeacfc160056e9e935e31277130bf5ad379e41fc25c62a96000cd50eda3b3f7857e4e6e481a923046e40e889313fa96948535196fe96e346513a9527475a9dedf1664b65e8cc8fef9af8bee1e7cc404710515f7ffb2361b40eebc317972766a79e86d0c29f042d153d877961f5459228e486d06a6b05c0eae71e8f14433db14528e10cd069e9dd3f10fa0d0ba8240ade03aedd0b25f7c80a54dae007f0c7b60d3fed7e1a2e055e6e5b16ff10bbf853f9d774951d1d0c40b724e26b4922a28f3acae60427e173dedcd359e2af2b9e08360996788fab227597043777e6d9eff5918ce99ada8b117f2395d500bbfcb0c528fb0ec0c90e5eddf28b56a4b6397ba0ae0ed20c67ccd78fce12c90f5465f68c820cb5342c1613b46c60fe329df2a9c338df3cf53cb6e17f8b25a798062bf2af6750aa877c0477b4796679dbb7e276f87c6df6341085cf7e98d2d3135561ec62795b39e47a16440ebdd98258662ef59a3e8cb2c2e09b660eabb55417ec810102c2378547f2a48736c1504e5efe2560ea4f5720865f8634541868acca16ae7904c563031a5c1de2c07a3118a3bb01f3c32c53aeda2cee111afce49c663bcc80a26d93ff3daa24a12678483fc6012e8b03bb92c7581da64249fc9d9c04cda20579ba24286fa21b21e7bbecc0e6222446532a00d581729db8cacdbca0b19f18e04600fd24c450737e16456fdefd37ba35c98f2cb6b1b3c4d329359b1e877cc8673d65fb7c1fa63ef6313ca7f51af60283a935d63403f7ca39818065d5dac105e81a95590c15f1991c397b980515d70bcd307dc7f9d2915f6e02db06927fd87274a0243ffaed29443e470b77d3bd7d0c55eb7af0674e8ab2b7136f45df1483bdc70380c0c0afa49033bd242020a126feb019cd819b6bc51a77eca7b1682066e73fe2db3eb01bfee0fe425ec0e03e1de4ff836657240f5890bf747f8301be29fe69280fd6403cabfd6ef4b97333cc351c606da702bef947b03c631178f48be47bc55ad42b9eacb81becd0b5d5bb5bff131b83df3a1ef2ec17383e263ac7c7ee6707a09ca1afb663d10c0376bcd7022eab9b25b01bdd584435711d0c28b2a8012ecd2b6f76469471799ff4a9940d2a1c19cb1730420c3ae806aef91249ec5a4b685adafbe4b58f5a4ac805c9013bcb9b937f616df6e9028e3a8a1148df3d665efac36c998976bdd1742abcbd583051102e5aad527335a62f6f3847115937475e7ba3643dd41c3b9fb021f9a4e57c8880f317d59ba3ddc0c95cfdfcd87eace88b03cb935ce35b4e4f8a7fcbb3c548f057d78a830379794f4328469e7be857607a5ea6f21090a4d7aab7243dd6e4f731f9db911216bda4a7b2b6a671c11617df3c2a772d0e91b8232f01f89a3a25cefb39ff50140e6fdaa8b4015a150841231fee3943b3c853da72f1fcf068682afee972f586d4a3a2ff06fbb9b19cd3ef7be2f8f735cdf500c36e41f67740b4e03459073c5f80db6488b25c24263f5d0b57ebb798bd0ae7d720103c7169e7500b95cb63ec5cff2ec6d0bd0ba5f69b3635e124f6bde5332a873eb515c8e57a99ca154e66582394122175361e9ef908356429ea2a3c6c85c1dd351b3b6d957905636ed9472eacc78d2a80ee7b01af018551fa3b26a5305d1d0b39869c903cb6e8317d5f027959bf57cd8b79033e5e7921e4f1da4e1ba09f4149caf93286e1f03efaed4d9bdec4050e488b088830d974543ab21cf0bf7fce1012802fb0b7e2a2ea85137064238bdd7399e28360bdac3b16d608f3a43a67b66469313925cadabe31ff5f9726d8cd850324b',
- '0x208b13bde416DF6e4Dd37E0C38Eaf0A8E05a9780',
+ 'Z208b13bde416DF6e4Dd37E0C38Eaf0A8E05a9780',
],
[
'0x7ebe91aa142f5bc260e1c737bccc46890c193e72b8310670a972d5c2ce647bd146d6584ce8804d52f1f412e56ee653e13beb63c8505e885c4b260d0762dbc5d8b151e86e94212eee8f98d02a69ea5618f17596a0f93f38751da6197fb68dfa848bc66896ca44281b5a5958c418033a43b8606938f77d8847374096c14aec283072f93d78096dd234b37d925c3aea97be95f83d96d4c183c738ad40e1ef82514dd54306f6fd200cee43ace14a8fd80e72088189ec4f2bbeb067607c8f2b1b7fd77ac474713cc428beaebc5ab7bd0c2825bc2d8d77903bd966204b4f87bc7df9eeb3eafebfe2f288ef7a743e4257de5837563c703f2c6b84e0ac7a66f92ba8fd08c2de9f5c81a108e60330a070ead18a35e39b109981b95ce7f3328666c10572a36a96ea342b27979191b3967f32038bf13942388b4d40d8ffc4fd919214811970567c8dde120807272af74165d6e43c966ac6d547c10c1f73db2c7835bae289667efbde24ad5510b5ff31755d4b71da9085ae44a644e1660f49a75b9e5e1ef7ca1aa608214eadd2c00e606937230a14d979b4fb65e7faa593004f478e3134861d93e7d3871dc1294ef28e1e4550fc87f0ff28db457716365a4f4b34787cecaaebd848cd30f902e7df85a11668baab39b8b4616418987fd734c90082b2d8fcc274412c171095c32466fdb5c4c8f729a4f71cb1862dabe89e9e52a2e065f87ef3d45ee4eefc0505921e1a987c05f5681f23bd3d4a571a186c29339bef27aca21ade90a3997afe12c50afdde466403956ce90deccb40d508c0675a68297d4b9ac9657454d4a4069a1b4e9d6d96e805555af1d46317428450417094582d65cd5da7a25457b926e87b18c09f3a11a2d544bffd0e6e1ee5ca6f8a05a53a3610c104ac4ddf62eba69cd52c970d252ed33d3ef76e9ccee18a10ad3134efd9da82a6537698a624f3ee66750bb8e9b0fdbdfac907399de563c5bda1275e7c1c35d34e066306cdf9529558b41107094dc718e5c33f89a28cbbb5ce438ca0e11a85a0ec35af8aa9c5a5094bc881ef4c86520703a83373f3a57927a129d3e88f3b55e7f90aa6d879aa657d6dc3e6c6ce648835029db4abfd675ac5209e6b5d18c9eb7ebc4a6c4c2bac7fb630bb3d88c585e91be9fa5f35dbbbb8f3cc6213f71aec195f31288a4e1b0a3911cc9c42877551bd39fb2623c9ad0cc705835dd97c1a28a04ece1d8e85449b2db68825c092cfb07d602c48b2459286b8f666ff66ffc54c9ee71ae231d0295bcdfab83c1ae9038e22f2fcdd189e5cab5880f56e2a726db4ba2c87ad8a1a44a6892ad99c3d007d5e380f4eba4369cfc8587de11fec82fcff3c91b57f05e62e6850b099436e40c642334958525d55170079e9662bbf70eb7e7e922a88e06621281e14b23869c0ae0df1526205531462993859d996ce573521c172df5e93ce4d5611f87cc67218705fd561073e792b74b8789b4c85b1c0a0dad909790ac1d1ab71abb90718956129f7f32e3f4db3f1ed43c569d65c465b70a89f39a4433eb5a5626819fbae5cf09d4d5c885584521e7a3511af52ca3d72804e56b9b4492529fa155c908eee332d90dd6d4b3c0e5c17872ba6cfb69573ef76661f16b9cbd10f8d03998a0f61cf467ad130391ef596b9cf5a78443aa8acb27c732fe605d5866b1679137cf9d7e2fa7ea1f7ab3e2b0c571ab91dd1dda7fa398e781f2c81fcf535e4e9a0341d3308b27db2413e3cfb0bac86ecfb9bbf123cac1e196ca478df0c14f5de41722f691281275c07d9955b2673047271816a8a1f17108db9784e71323c146d7b0dd21e450d7f66440cc45359e143cc3d87bd577e75e207583113d536bd1283b2db583c45e3d88b2303044e89a758490633043b1f88f1367189640986ef9b8687acb9996f1441cdf6553dabc104ae591efad4e02292ac0ee9652d769b0cb10255707bef0c6635b0d5cb2456520fe4cf65775f58250be8149468b87038d7a4098f74568cb1f8ed2dbb05aaa274cfb3dc517027eeca7e8ec08fe5e55e3ea814526ea59f0aa3e748acc8d1a5cb3f1f9141c3314539580edd9329bc6ef2b29526a236dc9a0b6d31c6acb4d6ffa9bad65e9d1eabac897a45f02adaaf387e9046b44ad30686b6fb004681c2979c2c483d3171bfee21ae01553251ebc955a635b2ec1e3404d82f0b40ebf6f57d96afecdc8801eabf0399c59a94d2c68bd31168681179be10b467a6f7d6bbdc9c7dce2badb07d08131c1e544cb718f19488179f27f8e36136adde46fb0cd4c95470bdcf2bd1ce1e9605667bf9a88868d65a5a3afbb6a033a2a2aebf049542a59bdc249ddac8491b514f4f0597d0e65b03f63c1e4655bbb67afd39c829cadbfbbc2bc30c07df35d6b2c33af7db49d1881ed77fbaad8fa193b274a2f4549c4b51e7c6bdda41e28b97e32486323cd3adac1b3d30360e11f79ee123024d2ce771f3559a4c74f2f53402c2a1744e8c801576374c3632fb73e027229237a2eb6a17dd73ac91bbb38436f5bd95e12205bb651f0151a5b6a78f09c1427cee8ec4300e35e60eae2a8462ca56f8eb8142a45f56baf2efb33fdeea5781c87324813583a32bcbe525a5ddce6e6c6b00f0a89dc46f9fe852ce8f4613cfb425ef51362d43e545ebf702fa94bdd667e012f99fd2ac21141e975b841a22a0c99897e5df5429b84ce543591fe4e23f6e073dbf2fcba2e1c15f8a248403069ef890950eda72ec02af5fcc4e792e6d270748a564cae949da0cea0dfdac21ac1dd05130e14c245c1ecc7170a896dc17cb2b2714fe490e628b3c405d164455a11a4bc30493696243449ddfddfa54f2d8627c829e5e11530f4d899586e5a27ea6d4b58ab883c03738540098475dc5d5129a2dfd223e55ed19ce6051cd3135e065ecc40e094ae2450534270d43922ad5a8a906f1d15e3f2ae5bea7955d9038729597169a59bec55906a2df631b06438eb878f2ca73d0dfa031ce73e7f2d16b28edfdf6fbe0083428c34afc50b9d6cc22d4014c69c7ead61f7046ab760e6f0b25dd8f5131a2d8fe6c0ba7165e6f369df539c91ccb769d745163052018a2754d0dd3c90817cb763858ceba519804c82dcf17c238d89991e6ac4d7f04dbb187e2b4200c3c95c8e8061647e22b2aab38a0cf0e8fcc1461b7cedf92f28bd2ff671eab90307e5602f918d6c46f676e63fec80a5f2e418f77aa2bead7e25c908be21723488b35e29faee3d64d9ca72b2aeddefa982cb64a09677a68b4c4d43c296bcbdaa6f1406014665e89d25e875621ec9f1b044b29f1294d2ec231154113bd3032d29a67bf0645e0f6568dc45c5e175c2477f9b058d132fc98d8a7caf0532a7d9e4595e50a1916f37320efbff98b0dedcdd53df9ceff014ccf47db85ac4f3e574681d9f6192db134a7c2e5242ff63231c171bc0a71473d531615f33da5dc3b89332ed2fd0f07ab47bad5291f6bac530bf3fe4c9612e73e04c94d793efa04d2f4f17df281a7297b5b33b03c4ce3f9ab546e866f35c6421a70da4d12f604066aa4faa2f788c72762e689b8080413460899967d20b9af92cbb1cd8561858a7009116d904863e6cb483ebd08ae18e6930e17f89995ebd34818f42ba6048adb19f9e0082b7680ec209a6f6da8d6df1ad735bee0b5a078f0b16bd54964bfdc7dbaaa0fc570',
- '0x20e0934142C8d04EdF630855729132f19C8A846f',
+ 'Z20e0934142C8d04EdF630855729132f19C8A846f',
],
[
'0xdb403f989f30a2fa65f24bef8c53bbae67abcb559b44097098bb505e7b2363609756a85409681d71eb628631fa5df5681a029a8aaf781bc698926f0583942331bf453f047ddc23bc55550f40d7c35b6ee2853a61d509e0c46e0a01b85780c75f28aabb4e555cde8bd4afa04cdeb4a3494ae0f31eb040eaa9322bb6376b91e4062c538e75e206bc92123914c54f130eda1f934edbe201f7a046fe6c6c9d01e5ce5dc64a77ecbaaccb739a0c9fe372a03d9e1b84e646c58367f3f7e151f378e54a5f3469b02ee833c07b6551ffe8005d2ac81e5efc61e0184df5579b9ddd1ffbd8f8ee838d8550f26b476d6f58e2b53feacd67d6d60b0d9044eed39a1295b8980b817396a474375b366efbca7e5f019454f78c007d00c7bc1db2759a7a3a012f1e3753da3b9508913556fe4fca413beaf54cb8f9e9b0f1f0319582bd402017de09ef62394092f487b8707f934e882260f0e24607cee55c5b30410abd4c4b452b32362696d726b056afc797f7e4b81ee72ebf92d679c319970cb87bd11f5b4b808ad899497111f4d0aabb4307d85269f6ad2af26af250731c50e053a68d83ef2ea5f3eb56c395ce04e06281e559785305a3b589a54e7b7988b87632a5c46987ac3c60289dc88f56fd6fd8e1e1589ad55e863baf8dbe2049b5164566bae9a8d469222cf0bb868e2b1f2523a48586a0d5707a8dabd0e60ca4579a1d143f31b4bd803d0f12b3927e1f79c46200f7f0265d26c7e1329b7adb6baffde4b7655f36f88e81a502517b078ddac4f03bf8c48508382e4bcf23ffc3f1654b35b4d07d27d6d9eafb9eff06c8df46bf91e4eef4dc9c9149144cea1c1744fcf8f4d7295210e1c5eac8c5527f02917d9cdbb0b0579d6c1fa8ab6a1bcad2f47b52b2ad7a1116b080f4cfcb5c4ec36d35a6d8d84095541a3397751e58abc9be9aa19af8a49ce7621900be402afcc33f21dddadf2cf20ed5e557b143325cac9b376387f24220d438c2bfc505ea502220544848b734108d010422fbb4832c69609da9f3fc315a4d500ac93d297afe8a71d1a837f6844327f7dfd9ef893c29dd30e394cbd2d1469ddba0ea255f8d3a11c5d5dd09a839b4e68b9c37b29a0a05263e897eff3dfd5595e16f0f0965b72ed0ab107bea58766f6b182e37d93799d8fefd3dd960d46e074ce19fa55b09522b025d7fef70ac91a66337d59feeda32913d7156133f227424fe20710dab11fc935ac5ce97c30eb530f8b1cd1f1f8d062f192cc2e42dcc8025651c4eb2cd026b99b145eaee498ab5186ad59cf337a772c448d05e6cf8d05f49631818eb7010b71ae5aa0dd773f870ba40b6436dd10cc550d9f5cb0c8357240789aae69b3a79dbb8c25508e4623d2346e1b3e5150279c6191e2a36db492f8ef0a1fa50faa8ce6bde2cdc892d9f7a515713ed31e02472aa0447366be58945ab7468c91c05958bc5e31cce33d3d9a339fd15ffc2e39e8ebea1eaf8370c6b4d6b6e0f8d20046ff7fe26752745a82735350f2b9b7b4d05f5c18d5bc0bec3e22010943c9a262d658fd83bd61daa2abdc7dac89f670acc8b1182ba04ab912959e50c8c8ec6a2da12d8b1506809d4ed86798abf0c1be6567e046c5bfd574df076533a87d1a7d3f3574941fad13aaa0e8232f8040b5a37d39d1abc9b7332c00b934ccd9d8b52f5767cee93fb58bfc3b19004a7217602e288add3001af9e590553015264683b614d3c9dccb5f54ede9a491250cb6e51c9eb3b983abb971f4c523fbfa746bf6306aa4cb3774b596e58a030407d47afb92a431ffdca4c33a3c0176beb6d57907ec6cc9a79134d44d7937619e37dad065a625ea987d60e64847e185edb350562f8ca70e6e52ffe81a87dec3accb883c5fd73a0a50dbbedc5b2b4e5e05bb3b18348389ff71c90469bca76bd4b433e4227528010d045e025c38435551129a20dae68b12bfdf278e2a1a068cc2a5b84da4cb2324c57e08e5655785b7d5b82af62ffeaf3a6e68f9e6036009905936a832637cbee9417ef9be6b17ac0f08bdcd13900bf4e84a9cd3a546352a96ad0c3686fb43e65d294944f2cfc50eedac3db99e27c1dfe9b6769c2f0baf01cf46b3c913c0ec4b93ff6999eaca89e57ef0b7c58664175e8c9005540125a15f8a59fc608a5afacb18dd885982ff004123ab380a23ca410c0998b48b69f0db251768d8bbfb9f876a6dac47f0143ca78420c9af93dae7000b050d1e9fc22064e94852aefe345482880cc0f658027aefcefeb63f046346941692cb5fe67b5dbfde98f95b81540ba3973976e861db8c607d221d52d581e3f1dd6a252a8b36858e72fdb4b34a7cec076de8cfa95331b4d6cac895046135f850796eee5ada6ec2890e45fdf730023b76c5fb7f710455fc334077791f24e94be1da2fc153ebfb0f057746dd3e171273839a2b511dc2b0ee65350d7a4f11d85cfedbeeb2a085f22787216ec031a1786d49eb012c8feb2586aa41b2354804823b5a8ee62072e16f85b20b1d289aaa70fb42973b288321dd8d4aa3266c0e2114d05ddf3c8ec042c9cf4597b1ce13e1ab105a52298658e3ca42c68fe23ccb4efc82f7493d4688583f37841d1d308552c3898fec8c063a9156f7a3d89fddd44049a7add58f769baf8e6b602dff6599a08382f859ee1ecee9834bf2276cd30688cfd2a719d5f1a6708ca9a4f1d9da8cebfb98e05afc0a0179795596c0d070923fa25473ea07f9b36059689b9ea2f220f60f47a08ad9b4b53594dcd57d48c580423d2e7981ea662d70f9565a4530cb781120e22e4c6e9ae94596b3a565980204b5429c3e744d4080d7af8a2c6517288b7dc82620c9284d243b7f9db81ddf2aa0a2fefd69fff3b60cac64e13cb324ba3bbc229a03fbadc336e65f591f976c46502ed89d8c55f33fde8fa55ba79ffdab06a3df8aba7c0b0a834400cac7e6bf090d4d9a4a07f61c99bfd415143aff2f572766ba5e7344375da086bbefc55da251f0ac36983ad18c43eea02b4dc3428af89589d2dbcd5bb1ffd2bcc6cd2f9d428b8320743844f181fecd3f62475c7aa2456163ca0e9b5e82ec35d73b414de5e62b3006f3e522eb81ba09359bdbd2ddca77fafa19c03f15749d29716da39b7dd8f2beb4a2d51205e9c56bcc03dd896609459fcbf21206405766004d6f8fe3b557b886e385e4ee1121c8cff72895a878ab2902cc9f1f40fee422af71aedf198ee68113b6392f9fcff751201746b0ce4219bbd9e3e21f93a5e00780df5977363aa6b122dc993e6d08062f2b1735146922ee0814c2014db90f7c756409542bcc8651a49da5fbb4a9a016ca034af5f263e201e4b2e2f9113c2711d522f50ad271fa8b7f6f78a5a989b7f966dd76899875e4ee821c552602921ea599d05266a6be7ad816a98e8a52497626f4cff399b7d292d34a646169b65a36bde064118b9406ffdbae67b7a79532a3f8dd06507fa80fdaee931e0dc2007bd6e665a36d07253104af170296ad73544b9d2807fe6a942f90dd700afcc3b89644bea570f7b5acad62de55aa2da41e1508ed2fdc122532d04f20bee1716afe3bca76674a431fe73f7d29c56eb1e84b864155f27abbe9e8f4d856f55898c7d909f0d46c3335f5afeea3cdb91b488acfe7f8b1ebf56741105f70162d4dd73807e7e3f2db7ee243b1fea17dd209cc19b896e4eedb',
- '0x20eB07072ce4C33851b2b397468ea46BDF57f45d',
+ 'Z20eB07072ce4C33851b2b397468ea46BDF57f45d',
],
[
'0xce1a0f0c5ac286b95605d6814fe6fc62bb15b1b24a10bfe6302404577a54ecbbb73ddc730dc78cbfc3e56aeede7f71af054c024a2f29bba9753ad6db0fb7985780ae4cf8bc6b2df1ba0e36b52d29f451a84b2338e45415e32c3bdbebf5323a8e3ca907c6fed49b0ef51f0e56b6d6793625e879a554046931688a99253ae9ff0a2c923aff9879f1ffacdad57b786b00eead006464cc0c0bc77b4ec66f1c4b5d033922e816db7a5672938a66adac90098e4d606cddf5862a0b13fa04ceae099dac247a923c9d64eaea3ecfbbe672934cb84df386f45c5c532ffb2cd2d5e26a04404b1dfbf0dd8c8ff086e0608e554a9d2f47f58b2ee830e0fdb599af8060205aeb06656d6de047824a910d1f5a4f8e664937d0df3cdc29dd03666888692307400d1066bd418b9655086756fc387b6c360fe4ca6594e53a648864a2eae22e0df153f28b6f5b060d96c5c731a411cc8093131180793505ddbf43da5efc7def6f202dbdf75e32114e1e703cbc1d1c370a253f25ed4c96ecc5600738a95c35a233c70c50b38a59d3f2f988997a4174a20dcca6cfbfed10ec5e47fb1cd0db9450400a703f3a67dd0bd506f8de3d69503e5d8cbd3713f82eda75a8bc5477ee701847a43ecf4c080cf713e36a7ad263241b94a51693d60849486cdad625868563f4047b6aa584c75a21ce679d8d2346a6aee29ee405a69ece9fe60ce8afb7c02fe6fa378a337de03ec7cb64a518364707c04821e3f31ec2c77670015d920c3ac5da6523908ba578e7d667caf4a75328087f324e6182e2b0f9b018ff8b6beeb294186c91520f0987c5abc19c50c877ab3fe27a1c36f05376f3e50c4256fd87c4e5daff831aa912a9aafadac3271c512aac76d19aea4797aa3482f798c3db6106ae775fdfcf64a165daf7f62555a9b7311c938ce9075ab7d1722651826bd3b685177592ab207fc68a28ce9279fbc3e156300cda089967c1ff94c895ca084a59a2f7d5a4df5015ef80b4ac337a3360f3102cd604a7b1afa82974174becef1a95fca7177b02179306c6744cc4c3c90469d180ac08f810d7f25bef61b86dc3f27fa422dbb4e5f8c2f5e54938f20b42a2f72c4a2253e8939d3858e73ac7ad5ad52aec2de982f30dc7ab7f759cdd13ea6b56a9849267328bddba386f3585c78a330bc6110270891c8163d06f7f194d45100573452dd11eaf563e40242f686041b20254d0481d086b7801cd7c4e216cc8e3fd07efe326902dbcb892ac3547191b2d927e78b6cbfc9a1c540ae6161241a751d74ad3deb297b119abc44599a0baca10b54b26913457c029061e24f0b53948dc89616da4d57b955fe675e3baf19c9bbf7ac6ab57815eddccfb2f2034c06b568cea0be0e968b5524e8bf2727da84a194b581e16811b40285b0ba832240dffcb78a8cebdbe26aaa037228a37fc54748d1a380d9132b54ff0171e88ae9fb6ccf87688955b7eae75eaf79f5a9bea2dac274215af93f09b4cea375a9ee2d350e1e4f936e433d9009ce5c03b666ccbb0477d68d083f59b472490f6ae68f045209b4d7c9c464ec3438a91e5fc7425e79c566271cc6933b225991a0472e3615741240d2fe31b134a398ef5351d68aa6bb185785293f0470caac8e66b7e4a9dbd7c40b6a4dc4095fd27b7218a9bc1d36247fa8ff4cc0760955b51d31353a917a716cbcfe48983d32b1e27de0e88660e3d874d567ae8f02c0666090d94dfaf47bfeaf50fd7f2025b573d2cfa9f8a0945ce046cc4855fe2c3c38d756d3ed753c02cc1be174c21ff14e6468651726b07e8ca435a5946ed3479c1496b6dea8bc27047f62f4ccfcc72fb564f4306548f47165c6ee6f14e450c191d050d21a36db97018a23b9785bace0ff68f53af2ddf463913bdbfcdbf6b0134841867177459fa33a2da7c171f79bf8c091181fe440ae92b1a13251d98914874b64bb335cd317f376309cb62f1d21d6e758f61f66b8a69853d71073e8e379846fd007b2c0ccfecd73df4aa49dbd265c0ab3c4f410dac37453fd2b0f84f84924cca4072c23908b17b93aab1a43f5ae8eefa0be486af53fe729116e20e6b0bc2398f58ebcbd323452b60d8d6bd1514e5d6bd6ea151028dd4615f55506a4c83b88fabd1e55bf4af953a22685de2fb9cb2473b76d6088105862a740a07b69ee549b1c5ee35bc45aa7cc8f218e0e8ec93b4c8a70c1240f2bf54c55fa0bc2f73dfdba5f24b8eb45bcbb34f4eca1acd80e272aff2c6163c0c7c3442aa8ccfa60946f5bc37483660de9cf42cb8521d95284e491dddc7235ae3e5501951a8118216d4c1e1ea5f069fe08273c590861d8ab2631a545df7a8bd3600ed93a9fec458350c166620bb1746bb85066429821bb5c6693f4b65dca46abdc8ba1e3e0c303c1eff1815691150c8271d6eca99d3333ef79a1ac20abd518cafc9a366e4bdf93f7c9887fa37733f0da895fc9e6254bb52e854d3da6d19e15a2dc6afa27cb81eb168ada4221319aa7704543475f2c3f047dd376a7f3a44b8e7193d0a7a9be5cc0b39c958662adc9d817dce646c557c1ba2f3d5efc696c25589af52ac875804062924451aef04e94475057fde3525cec8b5c2028fc90c3293793c11e73e790b82db568a725bad33aac6957ea4c5bb5251be415653fe4832d39e14f704c43302ad8a80dd523ff7a99d575a80d5b9dbd81144d695eea6144318a83976ba1b73c439368b8e896f9a1381d8ef7549d5581f8310562a0ee3244540ef7a0a381fd48261ed0d5d51c91e69bd610c5c7563c781cdacf05bfd8d651e7236db50d4febea3107987ef6c136ee5cd571254f1b320d6e5c3777be0ce0264f83817c649ccf206ab10b907728cc4878bf3ee2233f297d54a924006e4fb8432996c31399a2b12f565e784c6833e99c0f3b307df756f9cecac6ff66ed37b7b5962cc2030f4403d3b8a995de1191912cbf9fc1183f6f9d6eb7df786234af0ffc6f24446af7b5b0cee501f5e8b7b7e686a6f72b59cb96044a6d41ac5f7961fc8d00c060c59b9c027e52cab4641597293a9290efc53faedddd437014a8ef5c4986e722e8eeae2367ecf5fb5b1e968894978f4e21115ed62ee91da468e1997fe3028e34d0810bf393b43618b4224f01915c55f4d02e42631f6b41358e6746b76576926cfdd2159abb960d522c6392b6c53f889e4530d12c09ff7bb4532819976341474c591db070fa39fce96212c140c8c71628054acea47085b224becd9d8be7efc683c991f6d3b05b300b3ec890fd065984390b2992cbf495099862009afe9d2c561dcd10bc784892a8ce6d761be6de9f17a4ea69ed4e398c549c4632256d4b34c1e9ccaa3a956dccba3a888351363d0089eb5015e4cbce8c4cc6cf60c7be3cff9aaf4763cd3bacf43bd966225053fd54c0d98af70b5b0aa6654834858988a02ee863f9679fb5bd25fa548fca87ad2fa36a6d57761d0b2985a51b4e9e4f6264438a0d606d224e8bce4ea6c6aaa5b0e77e92b62edf66711f4bf153afb7c5247cfe1f648e8d4f602f589200fbe9a40ceb5c82261d23b8fb87e9308b162aff3395861e0fa47b097bb6e29f6dc5789825d4cadc3b09d2e53007abf0a4fa1ceb0e504e4580f4d355ae23a508451e94b33e3377899659fbb8be420ecc29930f197befa8547d6f92ca88985816c1fc2eaf4aca9dd51a3',
- '0x20C6955e256842369460e4aC5516Fd5c9CfC2Cf3',
+ 'Z20C6955e256842369460e4aC5516Fd5c9CfC2Cf3',
],
];
@@ -67,17 +67,18 @@ export const validSeedtoAccountData: [any, any][] = [
ignoreLength: false,
},
{
- address: '0x2054f0f00cB9925477DCd3Cd506dBb3d37742026',
+ address: 'Z2054f0f00cB9925477DCd3Cd506dBb3d37742026',
seed: '0x034da61fe50c659a3285549dc395571e2bf6891c462c041e3c6b9061fc73eb3687d03f940e5e65d582019ef10ce1327f',
sign,
signTransaction,
+ // TODO(youtrack/theqrl/web3.js/3)
//encrypt,
},
],
[
{ address: '0x7fc43a2ccb557f900d4ca924c187b4438a7f8185b8edbfbabdd26b87f125594495268f55ceac9c9eb23efaab76b0d4c5' },
{
- address: '0x20618F56c422D34b190B9B49a636a3429B927A91',
+ address: 'Z20618F56c422D34b190B9B49a636a3429B927A91',
seed: '0x7fc43a2ccb557f900d4ca924c187b4438a7f8185b8edbfbabdd26b87f125594495268f55ceac9c9eb23efaab76b0d4c5',
sign,
signTransaction,
@@ -90,7 +91,7 @@ export const validSeedtoAccountData: [any, any][] = [
ignoreLength: true,
},
{
- address: '0x2046B4F923f908201Ab8Ddd86330b3228720D589',
+ address: 'Z2046B4F923f908201Ab8Ddd86330b3228720D589',
seed: '0xc902ea9bbf1dd51aaa2ee9bed126aba921f6a6afac9cf09a21f3d915b057bace6787a894a71d1d103992aca0a6a4250c',
sign,
signTransaction,
@@ -103,41 +104,41 @@ export const signatureRecoverData: [string, any][] = [
[
'Some long text with integers 1233 and special characters and unicode \u1234 as well.',
{
- address: '0x20Ab9b8384f91B69839FDC0b16856eAeb508d551',
+ address: 'Z20Ab9b8384f91B69839FDC0b16856eAeb508d551',
seed: '0x77eda0d9c08a5a7134c79973c8fa16a1191f21c29a85f4d913b8d1289d0d1c3944d63d11d7e1c35a51925216de64e052',
data: 'Some long text with integers 1233 and special characters and unicode \u1234 as well.',
signature:
- '0x2c3c02ba85df3d1d1a7bedf1d266749b4dcd15dfdb3d53f44c17a248ad763710636e451d9dc02bfc9fef5c3518082e1a227d34ec1cb6fd1b900a4410004bd5bcc08fae75900b22e16c1e0d692e4f01c7c76721c0144610d37e4eaefed209fcaa423a59d1395d2e7ae5aa52b3038adcd114790c39bfd88a213fa2310904cba439226565f8fcb4c15df2a1374761459cb6387fc986a89ff6659f72a8a13114370ab07ccc37d650839bb4c7afaad21dbb6efc21cf65ca155135a8e47563c02ac52d3402c99b30011b12bb09ba0aa532366449ff741b457067fd813086ddd5a9313343a8642278f3dc9c427319857c3f4917567316946e59fa24157fd0749c08d9726136a972357f39a6626fd2b7c31c7b893e7bfc70c0b9778c14d435a2dccd53ce86070d318fa4b45841eb72f058528b1b68ee8ebe81163b9016635906dc3acb419310c971bfbd5b13db3d2045b3d1b7a84f50172da093d1fbd4e12d301a390321ebe5e532b270c3c5b2400bab4d0569ac1e699c46f1fecc0cad0e44cbae65f0296ca47b239e7ca9a72cecef2d0bad5c5e7f01f52b6bab4c2cf541482d0dcb24bc8ad891901fbf2ef2004b41ea736b466785c258aea3878b54b9046bb2cd94615f0671f41be4d1812980b949141bf24457f800b23020af589948ca993e7666dd283acc29204822e68570162edf7f86b4248c4e2aae4e0f693c850534ea332b4d310e547af9359c4b365a58f456e118b0c1167d811cb2b1d02b93eae0516c0f870718b7be368facf5419f46b488526732b24824a2f157b388e864647cc18f97a6e3ad613c247aaae6685988f3943b449a3e27d1b421573109c23e72ee609d2777f72580eddf63d1805c39d2337f93d23c613ffba2241db242e24c7657a4f540ba36eb2a71915b8f6d712219765cc0d270fed883ad83ada2682ef2b35df60ff895bb2d7425455faea5fed01f7f61f36cefbb27b134c80645569d9c96d4367c9e25263c381dc6f08f0f72b83018c8f99d6f8be4cfd944472c58bf96a4be46dd42e6b049c7f69656ddfd0e5df3eab5a32307c82f2f3c3f4e54edd5955e9f975c3a40366acb8a6ce22eeeceb575def5ab98a24731f6c00d2d5da0ae47c8f17ee2b96d95f37d03ca44f7836e134401cb01df4d053e46f747d9247005d38efc0801b8ab699f209b0c31f3284075310ae2c75b5e102c5c3426e58a21a0c923e00b79bb96a3172c834e54e6ef2790c2c4f1dc11e014990866bc74b21632e4eb6b4b70089862da07fbc739e156c8e455f0de2a0d91523cda548bb426c42c3c5f1e3c10e0aef7df2abd88e0eb45d0ce0b13475c7cb376282abd3350620a28922aa6ab1fd651ea5f657a886738044910648f19a3b677b2e8862494e8ba513236e9bbcc26a5b393146901cb22816413109ce180cda166bd351d6e8f47a80d99899abe2f3f937d28fc1814b42d5887e2d63a664cc600104f1c0b3ee82e31426fd553c932675ddadb019f9db898cb1dd508c6f4bac8387ddc0bbcf297e4d82958d7b619884d665369f7fd8366503610f5932af4870897db6dd92cfa251f2b65030e8329b2aa02be34e386580ea17b2c0ba59ad25bc49014486cea14b162302817db24e45ac91d9c90eab7c0d12c7aed2451801f76b84e9255dace608f825216ec9ef5bf294ce86c5bdd3be1db05df42bed76ed2575bf86e5cc2f584d874e8cae4a536740b8b7e275625eadb5f5ab38d60118cea28f80599bbdadae62395931ed4f765af84cad4dafa7e3b238cfe284f54b4e3266272183650944449b0e2881bf3983e4ae8d110cb40e7ef139230c682ec2fb8de04e91dfe650539a4c360f9ed2b4cbaba983b5f690b55c30116a45e2efb4562591410f7ab6a6e4f657a56182333e831e46fcc3a30b39f7eca2c338b0f69a21eff98b4b9f809e6d46179f251ec92f95764256091589e2a6f6ffa6d079f8ab24e170280317b265dbd0a57c532f80dff8ce5236dee11a5dd6642b464fb837c610448f22359cc759f398db9a9befbe451a3171d13e82f537532d4053938fc7086e57600579d752ebd605f071d3bdb4d68ec6526e2481e7544d98792b2b4d648df229b60f55b317d34baa3195c868f367efc88b6a0c758ef5964e0b48a156490e0d8e7b8739015778c34345ef5775351bc63b68aab63532651669eed33956eda0fbb40a60a5833ccfc14f5e69d44ae6ba80ff996c19456a1d53180f9418cb42201b4b06bdaf4dd912ae60c2a4d48d2f07212aea6fe25bbd34046add95b36c07f7dde4a60bf5903691ed950f57433c12110e417a86d339c5dacac441a8260e78d52f04cbec7f00048795034f7a69dd965d86aea96147e1d2f4d32a95891c5afa782301c787ba6cc294cbc5f6c963cae12ec8a944f9deea4759ff97b80696e7af8732c55ade4b376b44893487e866531679d6e2c19b74b6a0acdec674db184b6f5f918c7ad934ca5b40f0ae1d242aad3a30fe9edc6b0e997ece6561bb0ee37da714c36676da331a1e6fb7e949074bcbd0432a9391aa74e4d528edce5a11e9b630ff20420174e1d5dd9ecf2e9e15aadaea57bf6efaf2ecf523881a236772ea78524a2c27199e87ab720eea22c0395d2651a1844fab0d927e2647cf8652b14f98a051b1faf9e3cb1a4fea0f1856ff03824b406218c3c06c76cef5fb6ba2fc7f012d9b0d46f524d60fae0e73e3d2026a0a9a77da58a80890dde8b882223a5e728fc1f3df2e0641db59a3d589e65b8147622c486082779444b6f8c87ea8d5460558358f50c6b79935d05ee7652ac96988d2a581c2b4fa7841812ad23876b0d11366157af6dc8f7ee40c632425695370baf1f02dc358f2a8751ab4fc7f56f6627de359f5411250fc489425a58c2be630f6c287aa05f6de3f54d7bab9c65918de26fac51874614103e835bbd9fcc794714d66ffa3f195c805c1c6c3e4117f255682bcc64b045b823dbc344d5fdb8effea76a145c5d1626dbd9f1c0ce35edb66b556242166d6c3122f20176b2ffe5eae69d5ea8e0b2ea5df90c0bf915ae12075fd1f20c236c70f776aaf923ab82d95bae57325c7f2f90bc5d43b4ae0a0c639ce29fc587cb26e6cb111a74d3d9467a3e2d9e433a4b913b474a11e8727e3d7db25936c94e0e0575ca20de450725ebd5ee2432ec68d3939b754ea99547e1f17f0b47cac30e5c2d2642f7c6285faf170cba358db56f25dd1fb0787a53b92b24bf6ae632b7c1b15c81003f0b3a4110517a145e20b71e53bf2c05ddb02b7d2628064bba9ba589b1fd0d0fa86cecbfa2c139edf796e4ca0a806faad5eb3f2a10a17d811461bac142e0edf14d75c27de0ad7be86e69b7391e3a3246bb7300d5b61a3b285655a2b9fb2c0b95a8736fed635d92782946abd74ee36f0073015238319e01dbd98333a1f56714a216b27ef264d762a4dff696a208189dff13a676c4ffcec590be9ead8c5fdccfdc0e79e3672523e50da0f7264bc5d8bad98db75f220a30ae52dfe9f8c1f5c80f6d070a805964ed57c6c9171eccd82983c57025fb9310aab12abce8ba4bdbf6e0779756008c78285781a36b6c9df9b625c5ef7127c83c4393355f9895ce2a420c709655ac46fe063584013bef86bad0840af5963a02c997dae2e21061d3b1ac6147206933c8b28a260931010c821dc3bc52a28cdf5657071dc3b3e863df98393bc9e26b103b3737a688a18f3d197c9507f9ed8946e16287e768b3f550680afccff27b3103260bc6dc3c4bf31ac770330b7c4c0ca05848766dc5bff7f19b1bd5888cafe582c29dc71d3d79ab84250bdfbc0afaaff0589e42638442ccebc19a45e8fec9b0dc24529834ef2509665cca2821b85ae710c43ada71168d52b35af5557e45eb45b7631606a179ac5c86e9b02ac6f9de14b7ea13dcc01040e32e6d3d7729be3a29ccfdd6d0856dbc06af7605208aef6bf2e572f7f2df6b71e1bbd270129e51f79d5d0f2e7579754e44ff99e19bfa082151e6ffa09047a85b202db65e9ff09317aed89fe5b220ce6312776bd57447f87b876f5e2015ddbb88e024893c40758032da4d52eb77234b87bfc61453a348dfa58b3b2ee580d079b7b5d7a16374ebbb851766c67a68c454267186a86772eba3056b774de93eec1198be09ee4f8ded40fa06d521482208ceacc2ababe93e520a0a22bbdc901c607cd735e875b82933f6bf9e2ec4e132e2d22564cd32141a3a1c2431bf9e09f829a748c6ef8ef8a3ff8205542bf195a19385ddd69399f4103a7e77b62c5f09cdb0f156d3b1b91d8232357e9ba9f323aa15b47630c4fa6f0ed3a0af39755d8fafad6d56da550bd17609c7e65196f41483df5911185b019da86b39532d9dd524cc9b3e97c4ece88baff4fb77a573e5c120abe01fad785e241ebbbe4aa6599dec8480a44f03ad35f8f7a5d968f3a8453cc83cd8ff352cecaac1de2abc128cf269fdc612957aa9e4352dbde50e885eb4d708c8515b3b4a879e795bd9da44468f587f7bf19af37e6e3e53737b6168a3119a6a66e77668346f62940fa710b265b5678f2067cce67389469ec9ea9d7c4d0268616fa8dfe2d16b90fea91a911b0c8a70062cef906ee96e5d2aa8282b6c51f25f84b177559f983581e870d306ea14ad65237e011d0f4a3d442140c1a4e133cf9a98a36445d89269c9cb659ef3a3c3fb8b2ba8b32f264d744f287e45e36bb5f4f9dbcda39cf75a2360779a4f62074a7c8f8f9c7cc39e295e6f3a10c7b1d4d076bad518defd65ebd7e4d4c3f035b289965de14e2b17ad07cbd4ca00ea3313adeaf881fe6c50c2389dda7608a85f64b36a6075f833bbab03138e0f3beb387c42a7b614df7634e28d5aec19f4e9c79eb1b1aeca09b919812de8f298b445ae172b7f6c98f05642f30d126b9ce481fbe30804b3b19e2ffcb897a0bf769c13493831face5b7ce8f9f3e88a9a668a7dac55441159c2ee2bf911cbe23ccb3d875e8cf880538f8ec779c69f60644e8d8a84d85be97680ede0907513080f67fbc18dd76a6f34c1b61b64f4fa6ba27df87e16b6208c9da4442dcf04f92017875a2e9a21ca2345b74b13747d07a4aae6538f2d7bdaac8d84874b3c3fbe52e73a6ac6422ca6e6f9d1fce356ff6b8bd05d8472983544f5fd5db340873d80e86522e820ad33306451db0c439fbbfe3ccba4e4288523d38d4300153778a855363af53b92d68eaaf9618e3cfee27c7d6f36fa775b3812d441e957bcdd826453c53a825b3fbe735f9cb98d8a8122f7bb33b33f03a3a267f59bafea9b61d145c4dbb97e815111f8ab800a003c80236006bc3c8cf5814810d82e7c4938d6648fbc31ee83d826f51313b49be25b472f6f27d0bb72eef248451ee4d80489ae6aa04ead4a9b55389e70db1451a45ec07bb6d26c35d576cc6ee82bc65a36703fa314422ac80201ba0dcecfeb557c8178e5c6189faa7c8e1639956ae63b49e414a4d9bf7e7bc1897f9991826cffe2bed3677e72abb81ff2b2a7d6f1b46629cac7ae4e066670a83348937d35a161b1fe70482c987601d03c598122bd6b2aa90cb84288c41562baca7de2b4a7bf5f06da0a820463972ae64f34ff918b3a5f7a1e62c04b2941e4c52b4033778fb178557ec173e7bb54ac01aa4823d7f65eb8212a5d866d19d565933f2faaba82112a3ffd6f53b47d1cc0d8dec5f99760ac025112dee90bc5ac827f155d9222e4d42fa30377a29d8f20ed68fa1a68e9b05f6d08f00c96a70b78b1065a334530a7bf7ce5f239069b54b8118dc890b0dd1a8989d2486d4434e1abbf424dfe591a8d95fd30326a75b6c3257f744ab432dd0a30bf7627f31e60245c99d198f5e37cc729d698f5b52aae4b87df9d16dbd41d5182763df70079c3bc3f3050adef06c663b751a1f80c6526a18538efaa119f0cfec2ae288fcf1ef905c2f1b4ae8ecd16320a0d4d42ded74ee61b96551ef8281afd8f66c9214daaee052195e533505d92023cdf47a9ab404f2d9fb6c28f9183ad88983b31014e1fc745ac75c7340792fb4f73b5e82993ba04e637110980a0544676cb62bfca01361dff9ffaf49c64546f761849cb8185089d149f0f7236a51d61599b6a04f7193736c8e3d0372e28f49d0e88b119d5e8683dae7f09c3426786e31b4e20073d34999042919cc8b000dd44a12596f37ae5e28b935406399008e39b764d80b874e702a472652a26e0877c7057de41cb6b6c71a738dfbf2a4a258a38fa0eb107575cea138d112d918533414e15bf198ff2329653a91806b87097ada797a88b688f4242aa5506e059a19580067657a1c2cd0efb1328ae0d34c1f2e17744523147810cb38cedd39e29f92a1cef325a8f572e3c4d2fc9c093350c739b44b8f7988f6b90de4efee51e31110cd1ea24f4d98a7fdaa551efa7644837aea01416e4c30a2d6c8aa5b2d3d4449091989fbde2f00a0d497378909fa95869767f85edf50c19324c68c6d202173f6a79b8d30d2040414c595d6d72989daaf85c7879de000000000000000000000000000810181f262d3a3e',
+ '0x7fcb7ba6f63be2243f0d15a7c996e0bcbeaa565929ef30a64f4bef22301d919caaa8af4af50e1c58fbcd48fb7edc59bc8bbf07633ead1547bb7de9c7f2499f66b3814c6157768a360cbe1a4a400c281a5e1665f4cbf4e8f8e16d523407ceed05480bd0a1fd86cf1d35abde8c59bb9b72b59e1094bd47f9473199bec31f6ad45654b9be1e8c8e9eb85d4096be765acf4d5993c251dedee7768522c53736a10fcf7834cb09f834cea1c6cd4693778d80a58a7563a297811c9a5534d2111c7dd06f1d0d0d91c0a3e1f6150b5874f55ae98d277f5ec04f3f7ec8787e2923348769f0c711416b4def1f5b9a44b52cc3c6e0c93348ba175c6700ee92a0076833c118b89b35b5a1411007e2380cecc4523673cb64fe969215df436dcb71bacce9f481b2ad734fb5c64d63af107b70ccdb771c01fae3ee7a4fdf09edacc7777bdef7564eaa5c5eeb58d0c8ee648bcbff747f1cfcc89fc2d4a010052328bf17ae5b0119bd60d49b0335eb452087e5dd7b4215ad293aef02de1f9b3a1e8b44236f7acd4ebb12aba8a5843ddc3edb5102b62b3dcb7e9944d7913ecc2f1cc2507dbaa083ab84094db88c2ff5a2fd274ece8d9ffbff63a8fbd6119279c7dac9107eecc55ad9d12f4aa6066d2dec47235469ddfdae0167ff0e6e613ce6fdfc98d29cc0346041634f7f5cdf657094f64c37ff0cca84e2a6af1115005c578e4ce8d3ad90aacabdf73ff65523ffee6c314bf0a8359c1997690541321384b883a6fc9cba676adb37a872caba9270210f4143f21f249e987cb5d1f62a518a4d4d5f6e370bd2f0ae5a5dc0230ee300024d602bc9a63d9d5c3d11165fd65eb71bb373f47ab11db66a9c9ef435c8c34427ed56678a43f51bbd5589392a9dac3862fdab97241079467f99c38837dd12573b4fe868eb066e6f9ca4eefde49aa21cc283423bc9b798a7d14488afd3a5095b8e4b3a52fb4d9ac9d6d2037c3968480225b2006370a7b91c365787697a5351561ba45c0d64b7e3d257245aaff3ad69f59794b9a9e24ce9f22179ac570a3afc8cb91388a5bea2b820ae8cc927a27c533cdead92165ade4139d95df0f7d26ff4cc846e0444e4ceb6e8caec3fd57a68ec30a04e3b8444ec1899f2ebebe8ac17c98c3e79b4ebd70e2ac05f09f5499f4d0905248c58c5022839282b1031a833e69ba19689be38ba1e2309cb348b421be1964f7b04878e7ee4a31113abf6da39d70057b9bae2ac6cbcbb843e93d93bd570c13aff6233f42b9becebb6af770ebd64417aee91f82b0a4f4f23b18254c12c94440a308671739828a396001e82c22dacc630643a503390fefa1c582e31abf61e52b1a32c82ff5ad3d3b23613edcb20569470e48f2f6b5c578aa94f8fdb407914e34fef5ccfc37f5aca45015fa5aa1e28a4470b77d48c70732c13fd00f27d018299b9e7b6e8b05cf4ec56c37423fa0fcfe3e65f0a38d65b971d88aa068a38a617ccb62bbed3806f5a5fed1d8a7a75399d2c8a57481884802055d2981cffa3a26e8c02766960c1ec5759394db29843be133ebfb105a46924818a7ec294cfaae8f4dd3c1c093cdbaa30fd45cb09c5f8f933083a5277a1ff3d58edc6eff28616cfc329ed2b8fea233fa9a9cd0aa4a363cfb4d9c1d37e38ebf9880e63fb2f32b5529fa230b75bcacefbb20a8918074e47e41ce56846f7549c0fb1642828c249b46ebe40bfdd908f9ab32a4d51e155565881f921f4d18b8f7b309b2e9750e71cab0e8eaf31cb4898efe051ce7e07ae1d6bb33eb19a536aa9e7d8dd59bb916b062dfc6d4aa26daba459d180f1a5603314ca0fbd266e6c173932e3703a1552adb6bed58b3d6a45e4d4c082205dbb9b8ae2be90d8b68fdded57ccb0b675bb4d3147755d65ef140e3b8eeb4f52ebdaedaee17d3620384845044f2757eb1cc1eed6822bf54f12b13d6cc66daca196b146119aec7303c7082d6807e4dd78d2d8a4d4ebd064370f1f92337c651e81f93831469fcf7a25783aac1c7c399f5d54f5a1c4f70828a03cda5983cdd8a6a586a4edf893498ca387f908bbb52a276af814bd82e47c54cc6f8b62f2820ed947dd25f239e1b527751ab3c06fc52633fc5da8b5f90781d58cb5478fd22d7b2139139e7285023444396854176b68e3d7eb6c4c8f7cac7c3ca7402970d8c33f32a7bd9215f52769058ca48542eda0f0aba0ddd94d55d525ba6abf6fb7d954b0bb9e05c0227acb73a44f8e6da062ad4bd534d3e1bb4be6204e658f9638e61bb8797d8e3d34f4da1a2426e07938f539e0825d6d69ffe48182eacd19df773e9edad535abc7580a0851cbfa31cb2815c6d61d4e0672dbcb41ffb96fb9735ab567d73b32566506d52502dec7c013fb26869b69097d58ab48bda61845050940155af33d12aba5142e41ec085621a8a89fa6229f0b8c814ad9fdfbb7f646e4340fd50c530523c9f03465e1fa4f4daf957d9047b9cc33b10b064f9d9916dd993639f58c18ed072634e06ecccd0a2e8946a4a9af947ae07c99833939b5171a93573e16fdba7ffdc71738f2d7b50e3b31228a4e411ff7f5489992c43e46a79851ecf344b241f124a448b132eed0c1c1c5bb6264da1c6dd0973ddb0afc4f02eeb193b96672a886c910f3505537b2e52ab3b1e961e141905a9f68e902f634afd11b004bb86890c5ffb36263db8536aff0214551d7f4dace04c82e589e48270150691d9dd4569c58fd2a90ec402868151b385ab0f93caa641fc7db6e248171158287b217f5fc977503cd5dd934323f1354698f5e60fbce53fc2ae909ccb4caed0386a15365ad1ed4bc80d37ca8c7c57e50b801f9a33cfbfb299cc8b158864d5304ca729eb78729a925782ea76ff7d3735c0951662ad15326df677989f7e278ad67abef7be0eeb62f1ab7fb341a8e8cf5c37a43bc4723454920915bac46bb36a82a78223fe08c0ef0efd90a3fca1661367ef5d7e0d232f3917ed829422a4329a4fd368415cf3ee771a4cfa5b4f8c0450a709ce2613ddb542b9e062c0ed5ecef8edc9f1d9592771949fd46664e947e90e28dc2953628fa817d8efb49e0db62db7e86703d62fe70d2ccb2240d4c639ec409d95b6a25505785de79cbebbeafa83c8e0ad3ed69668ec8de56fc76950b27d589bbda146c8bc92ee9ec9e1e8ebe3ee1bd6f44734964a8f4f0faf907f6ef7d3bbf9360ba8fe032178de52fae2c77d31277ddcd0abe32fd6dc9c18f85e0bbdaae42d107ece5c880df7e001e1dadc6240e335c6ff17dd8570a8075ca5f7330624fcca0168bb014e57c63a384ba25dd5c2d7a170c3dc882c9f1d1375ecf9280c62cb87f82c822b6adf428cba41168f906facd232edfb032bd93eccf8cbbfb10ace2746794b1d6b7e860054c03f74c8f7992c7bdda7c186871b816a29f26d7005e35a15252ccf1e1a1d22e358de7b8703a40380677a4d533cd9c2d0bede06daae15558ba4a55a225d12e0eab3c76276fdd478653519c5871fb7be5808f2c5c49de695c0f1f6c02ced7a4c0ecaadec7cf47c3c53e166254d93a7d2a7162992d15b089d0078842fdc7569ee4f48e9acedb2cbac43135e8e22e2443ead02f86922be5f2eb68351c16fb567770821f03570a28e22fad3e69f7b208c70115e8de2180adbbe14491c0a6e98daca615c9689b599fa898d9dd9cb1629cc9fd8d0c2f084f905b129d9bb91c90205dab75f696419857829f7c423c6a44aafde1b252c28b4cc223efd3d31fe75bae84e4c223da6ccd4110d2c5ca844d89f2223b6cd9296d274f9286119ec5e3299a59c17ebc129509afb523a8ccaebccd7e9ef977b439435d81d9f1c1ded596dbcc12444bb0c114ff18ce9f65d1c6ed74418bb7e81e2a486e67f108961d523a82da5b9ec11f65c44786955121072230b39330f8f53089e3b6c883a434197a08086689a11728418cc727a9c91da94f1baaea78d37e75427b4c4d6ad7d930f7b0deb22de927e1935a6cb26cef292d8006c77a0b69993e7c4677e867058a213f10ba4e04af81d57be4b9de78077a42f2931ec932d017237f21a9c8cc53fd4b155660c9b5bf5b4328d061857a47808b949dd4f3d9a70c453b1f90eaedc7e7642c2f1f0f87e2baac504774a3ccafd3d1078d858d50d09dbc229f025923378794ab22ca5f3b71ce18df59fb88037c8f160a53b50d1dceb06ee4ec70274756c8af22085ebc8c05a76d25c886262a18b68540a0307e36db84aff83d0f92b14dff1b7578f178a29f13953cdf094a1211af207282a42803c454b6e96b0c50ffa4d1197529203581764fd7068b6eadd0c8aceb322c9249a147b4b6beff113a18d2379cbc784f628c3e32738b540b9a5160b94a8685827ff74d1cfa58cee00e4c83a34646ae2fb52e14b5d73a6d7b3e606f5e9f593fedbdf30f5b8da617529a72b49fba531429b380c21156a46ad26500a4b9cd34ff076d1b4da021fd0443b710dfc74ae3426807c24149de2085381c2a9c654c4621d2af58c8acd7b792e8aba17f8a6b5ca18f669bc7b21d02c69bb7cb05b6a44eb430ba0a851c285726139f05a37ba33fe24166f84035068a79dcace8aebde960782fc7b0d47f919a05ff1d092e841002777add2587303f87a925b6acd16cf7adc339606fca1e0deff9194d0f5d10208c7e0a22c27319993db9cf415a33246dfb25c8b1df4a9b5ba2cf04283b39c3771f8dbec2d6cbfd5a5508f278a162b72b384914e55a7938a23cab44532cbf9ac1f83c3fc19bcd401f3c549bdadc4d0e9e1f01fad1b180ffbaeb060bdfcee03ee60c3a5df1c96f48f19655bf58c367da2c00579aee44c29e107ee2b4e1a51b5f462f73c99fda05da03c84dc4ad608f5e51fae093764898209b1e8d5d4cf6fc6ea98a6073cdb4f6b9b481d683598a9bdc0b094b2e50d7f06195270006e2515f3522f4aca12f1e53cb40f00ac7784437c3dfb6a96e83091a72ef5212ecdaf9611a61baf87c70e982a95fd2475d65f0d73b369f2080d61fa8986d8910de307b46276672825b04be5331c7d644b60aa7613b2071af2ba3316b7b345ffac7216c8bb8a77c01e0ea347961ddc988c12a56d33f57231533d25ed8b30832fcb939090552573bb384bb91e492d15a713a73f0200b999a0cd10d13df0d054daf2078fa25bff84c78e23161ea46ca5e708363b9d1effed35e7792cb70e809550f99a8be1a791b3f7d4858b7f06520fc87b660470a682bc9eed5bcb5f64c7c98d0bf82ddc5ae506110b20621933bff3b21cc696662d9ccd880bab903830b82ee713650fa297c06557929cf0a96ed5b52007f4ba6706ff982c96ef861e03d9efbdfecc8e2891d4a514ca688e3cb3b9dd6d4b9d355767388d920a5fe0313f9464092cff65906329199c03c42eb80a6ff9c88587f4fafc3276d931e7a04ffc827909ed9534db4ac71a0d31f9172f50abe4aa5c24b1cf8df3ae1efc228cdf4fac62701b1041370746065673c7ee0a5e9d3270748aa4edc5b583e4de9e219b9a13dd5ce5840a31d76542f3ebb21fe6edb9ec347c4a91402dfaad3c0508e9179ae4b4ab1cefb8389044fae2ddb6be097ff8201edf5fc4572b0b500848bb9241f70bc5b2966d9e8ebabd8e66afdbe04a9fafcfac219dd88fc3040f06a24911a4b0d4d08c5f91084e53dbc5450a3ca3bdf48fd7a32e279275e611bf4d1a1ce8b755c60e2ab3eab7016a8d230dd03c036f1454879ab8e3314392e8eb706690809a9ed0b13f564b17b04db7ff0f5db671895d23d94e4abd50122d14060e0830f4ca1581e50a3c03f3bc8a90f8d4e7131c492e88e2649e5a4ba582cff1f6075e26221e35f9d04383011298605e7a940249b719ffb6160f2672fc2e5f48747e7f3fa5ae5a6094a75e7b348ffaa5c5a3069135fda3aa7947f44aecdc29084b3484aa52121ea45966570841c029e560bb983d277b86220e356a91eda50a891b4fb4051200a817a4f2ab34e805a9b6416931063c5ed6047a3f3cd95657895dc16fac58a580e8e50a838f9853dc2311728dd6d59be8ce85cc8170530199cd6ee409b7242e4613bb9b7d47500ab53f71f3362ac4f501f389fb2d84abdd5e4264da93fc3fdb44d68a13ddd9166e6f55b4ce7b7b94f253af717fddf074c7d27971b06f3040ca8c6dd1162d25589b014981cd2f5a29b63c6596b8cccc86d9044155f8052acb2d3dc7849102ef33def177bf1303e353b8759857148d51a75916a44398bf8ac098215177bd07b8ff9f0de8774ffb0a9335d2f4c4be369ff6d93acadae9d49177731adfbebc89615f9a7788962ca28e44c5ee497f74ee07e8c05bc3fcab5ab068316bc7477469c1d72472d7cd8f517726fa7476bb71901a74bd94929c0716dcbd483fbc63b336e2623fa26aa04878b864f60d73bb4c281e4989603a3a8dac89a694fd396e1f8cb4786b6616d7b889de3fbfeff477c1046550b12216f819fcfec0c56596e6fc3daf81d3a5478949c9fbcdce42426687cbed0de00000000000000000000000000000000000000000000000000030c0e1119212b32',
},
],
[
'Some data',
{
- address: '0x205f2Cd3c4B65a999Fabb5496D78c896d141B018',
+ address: 'Z205f2Cd3c4B65a999Fabb5496D78c896d141B018',
seed: '0xef3a996efd6133a749a1cb9a15e7679adf68d240d9eaba3349e679969068e5f83ed6f1f7506eeb0d87e2d94f8ebcd914',
data: 'Some data',
signature:
- '0x4ecd756befb10421786b18c44c77403eca884f3a4ae232accbb81bc2ac12b8530d332801afb550a55766a0a02b3926e4780c1665c8156cd54c8ca88571ea70e349e56ccd2cfd7280152931bc5260fcfba9392cf2a7626211e0cf2d3557957b3615db405440333088ab396f29986c1a554f05eb8f5fe48a1d61fb848b3782af51cddfa97063174c71e15b2e15aab5af5b21bd8c4aa6aecc261e809465f109d0775fee226d099bd537162b4414a3b6164d205bac2b2523f67dac273d701ebfa1ba1c1d5f973ab97cd940bde10538b9e1c1e0438dc91330c7505962ca9c07fcee852ac438299d90accdcb02beaf723aef4c91566f49259667fa91c3099b4b08cb56b36162d353d50301ed10b44f154c9d7cd5427f01e8b06bc579c97118863c53c396569ce7a4af89715f32e6eef48c934e1d78d9759cb55be8016d612b974b2e74121746ca8b2c16fdf114f9fcec9858b429d1f76cc2ce09df1467e10cedd2ec5783fd89922b53d28b9fe19edc1e10d0d1f1275d8bc4db36e0966af571df6c77abc343e1541964f357cd8dc1020b35222cc05a7b06190bd65f9a58e41b27113d99a579e23242827ba70ddb984165f68edb3e35b662246ac1d10c8d36ec8f9d61478ab391d73b9b6c21f4422d1db033fe754a088319187a6944841b62c47671cb5fdf67f1efef93bb7659864026dd4411db21c22d6cf4fc995c5500f55137f067d24d83bf55fddd3fa972ae5c2fade009affe5dbf36bf2c26a95b087775d8caed52dfe4012960c856c9473f10fc429dee5a13d9295e1ba9c1dab4259d2f7de4c81a61dc56ceec68cd1098823487f5d96e06a4a797729263110406f2c79b31dbea31d38e5a82d3474b0beed92b99b1278a30f42de4cdc3f69005830c0600678c96de12787b84d91fd2f6f69de8794c3cde20f8192c443977183eaa0a50885b55c270cdd376ae7051c26c4d73ed320d0b1c20739a50e31dc17c2eb0c717741f98ebcf64683f4307f9bb0442d2f3ce7051a4322c511599f921a4d2928d0ba3855852acc30062cd6c0afa51d6c85c6a26769d5188c3e2f918a90b5018077186473de649211828d14e44f381992be7bd882eb301b013c883b0fe9158abf86b3fbf2b44c8c6859ce47dfd370d633f93df807f772e593b01e779489c256e302f6a5a8f1a2d6d349c780f20f23cad1aa1d375807abf8325b22ad781f1f29fefb7f592e21f1aa7fb7d6ee0a2f253b74fa0ec579f264499f1a17bf36d614a3500098b88e2f98f3cd01bee038d56290c6f55deed3f2ff811e442fe28e90245c68f74544c9454e54ff983a45b4117161942095d777d7319f64ebe04694e6b62646df310872751b640a21de2c421d7c7e4928f268911b3a47f61f7972c5b23e6cc213ad4551dc8b71e45cdadc5540f062ffa23b2ee6f3c99ae98c242a2e4436bee47d960c74cd42f2b81c44e61a615b228bb7cf581b8ad1be5cfc9a4b6a21db8a2936f75d74ea9714d4d0374933ea8fa0f1ea70af24f508c21a23171622ea31af835c611e05f86f0428e441b1a75658ef48fcb8b274d704bc08e0c2a61d6ce9f39a6ade37085e13044d123bcd7a1df3d1183ae323e3445a0bd244a95eb717e50623258e6fefb3fb19763183200f3e6bfd4e6839bb4955c25feb078561089347da7e931629a32e068e7d0dc485c0e5e6e290277d1fc6bce10ed91837a0a49f29c643281476167f4b753f1bb00aeb6b92df159d2a7bd91aca0c1f31e83bc1856d7a6b5f7ee92e944586692899478861357c6b5d59792b8298628302406f3f1265e6968fc207af4a2a51fc12df228fdf14f80699ebc071117a0b02ff83a92c2d884175acdae8b1c946fc999ef293efaf41559be3e591e0dfdf1a6b90ae002b74636227dc7bca198f5eb5dd2dd581b73d71883f8aca6c9e5f4f777b4cae1223aa868b3da1f6b85f56d9db11aaa530b1b7e19d7fd245520bbc427751d44d8c4989979abf0d411a66f00d8783222ed2249165276be74dc192a7ca0fb6e362e7b5f1a5611258dfdea78118d54f1870b82a316c88cd5060e759ccfcaa575b1428399c3a4b57770f190e60a0dbdaf93852a34828ec7865a0bf71b0881fabed1e0ca676cf5c96bdbbcf5bdd1b2620db90e3f1f1b2b92d97a5a568e38c3d776292cadfdf94aadbe205276a7569c90a320b87fedf8113967b57f96d6ddf1ef052d4cb81bb9ad20e7983bf39e1ec48065a94cb13dfbac2af2d989f646b9d8768c3cd4ae6e9f9279551307cc8e136d785c05c9f3df9410fe32ad36b556b386bc193d233c806e5d97c3d76b7c91c708c784149a4ac64232c5ea14a45bad338dfb3fe2b2866fb99764b7fe36bc75ffe1df0e9a10c1ff465fb8c6bace4a8ed7950535e0d2736c456e6d2235c184c50da40c10b0562438473976cf1871f5ff0147f85b4329e18f014820a239ef562b0a9efbaf288d0f18464d8283fbd87b22f062d33da0ddc82d8ce192b9d81ed837857334f471863b74da34574db602619151ba5e04570a1ec357ac868e67d0510f6716cecef7579af1eab2ae67c958034f44c8b2fbefb11dae6ac6bd76875d8d7153798657629a88e54da574677e0953ae3f82c995c813afa346e26405b6b53440d27b3afae0b09be1d635f7ab47616f833da264d7b7635215b92ab5d2b552f7cef6ecdcf2983d1cbd431718629fd49faebc6517351bb79ebdcfff6fcd85280df00e062981ba7352eeb794b1aa1962c1b90f8e69efb35993e35f8596214687efcdc2e58b08e90226f4d6deeded03e81d830a21bdb157b948785ed5837b18fe10ddf6b2e3c2f1bf64aaa4d10180bcaa2c9ad50ceafb1804502d1696d3f25d5153dbef433f60db0d82381259561097d6426cc5dc66ab8692526225943be0e7b774b42b21e7dfa07a9e7453cd9fdd31fb51748cd375f946b5f942bb23865aad5d5cdcab1e8b3e8c7ba7a262cbf4f7ce70df81b9760ed8eaf2410094aead97f89ebd5aecac71674e955028da6cb4e5650e533d477975f7fe0d44a03504a6e90cdacb0e50e170429dc6cc654192f103e4bb9689e1f2b3bea09610eb06566b530bd836d2221c6b124cd7b2f18ea8b36dee16e9a641270a4a602225a6311800ca8a83f0e9e50c5ff65537a91c2783537fbe0a15412f501d55b6c3a5756bc7f88a9fb64d7b7b82ac11391cab0f404bb55d04b520d0de36cd4e5478ae101a631f7760d9dd2d2ec9ed3c82f173fd884c69e9b727f93f8c21db91c3544849f888929c407666599c5c036b093d09f0305125616eb0eb639aa15892d2e663da65233c0b05f9fea0a122a78f3e0e6d79b9e06b1f774982e912b558a0cdc018b9befd4574c207f11f3351edf6010c4314218a83f73354148ff232be6e5c44147c72c464c59994e97ef977e71a3603be34de448286023c391af179312d655bc82ac2312182864a2e6effcb9096ff05cb34a27a59de0ab9c8ddea5ca93dfe2260a8eec5db63ea66344834e4e2a58f2a172268c40a58fbda38ae580b61102f0bf545cb1836f81999ddef5b554dbab96f3c4636d4637018e700754186723d0fa43b3e0e2f16a84a99bf2c0f585b6585b698deace5ee2084aef1486f009f0762b5bdc2466b38fc15ae2437cb0246686466c28e27744c0e7dd825c0c22f67226872dfc63b308e2d245aacd6c8520ac74e7c48af940d6c4d6873e6078f5326cd86dc648241e6594ae30a387dadb2c0f4b4bec223983c209c2f56f1f2f90f44727c841d963bab0ead471e102fc8f58f4f60f26896bc2a72698e4bf8446c5cdd3496aef2fdfbb6dd094fd70fcce908544bdc04f8cf76cb949aabd3dc33d8412a2bbaa279c9787cecabb5f70834fd2e315f286aba21f5261bad5f571cd138a9c511c649aef8357311e958a2e72ce5a43ffd485b53501ac3a95b94d1572526116ec74d49b3649001e18ee8654813dda0a3820d8ff0d9c74e2475fd5adb73623dcc4f5cedfc7ed0938f35ae308e66266ef2c674c99b85d7e2b972ba4c1f8027358804387a6009d5a9706f6a67df0460e2adf1796bff9d9d187a96416fc2dc21f3c0d9aa5275a60d7fee8c65258f8ad5858741b0903116f65f987b0640bb4c07522e38a5c9c64976f4d4e83fc01742566c63be1de99e11603a8b53f55084c0cf3260baa0941f700d7d1c4c7ee7b9ace8e3e87bf50e7e58fd7a1dd32fa31530c2ec11b8552166ded9025b1b85abe311b31e437f03fdf94cbbd46011fc4ad0f5fc706744f5b700555609c0c1606531edaa905b3effde2ac3caa36165e62b9aeb447a6ae6240c2f33290464e8f5e2dc197d6661c1b12c1ed1d512a3949b0375c9dd2112ea44f33eaf767373973b06d10e77ff5a55ae268e66146548ab39812857160d5e23121503f3dd038da02c3f771563fceb63f90484efad3ccba29f46a74d57ac6551383820b50d56fd202382b154c4ac7de3c84da6df619b379516b60a1ba06fd80d4f31e1032b2ba79cf68e76effb1a3d9c0acadc0362cb2d0160e58215fff25511eaf76069147dc353db5fbea5a2d60ed6f4671184a720f3c8f2298f3fea50d0712241c32e3b885c88721e3b97b738d1a1a659d5be64a31ea1eb8687a76c767883085be9dcf01e583f90eafb745c1fe88f3151947a083b212afc1bf768c64259c747daf610ae385727171039fa974a8b23a50e82cb19d291b545e8df9770ba2bfda55f603337b5f2b55c662b98be89065187f6c6b505dcfa25db7c6c7aa2844821b6cd2dbfc0de2def400ef3e6152d1886761522d8a682c91b39c476731463cccdee34c3374c08267d51e9f201a28fdc1e71f07d41e5c5ca981856f09aea0968ca03ce5c440113cd929cf2baa4170570176d4e2dcf6b53de7e2a274556883590b748d6a95df1daa279e106d28d8dfd2c5840cc89bd60d0c2979f5ed814219ea249ff74a9c5123d97f274980b2d40a4001bb67c6b3621bf698a980956404f72ab10d2d05878260eb2664e3298987209cc6df6081ba54cdddc7a5f7a5da842c49e0259de6a63283d61cf2b30ef243e07bbda0de6bbb312bf1380268f3b9b56794254c4942901c28f870e04889e28866e85bf668dba21fd41f1b589240ebae760bd033d5f5f131c3c75fd0b2b8113ab4aebf5cf3c96be9a9d976b92a7bffe6c9d4f91ea610ac3b4108b55c7e69a920fb5d39e4ad63e337a57b625c5ac2a8a258b6c981ee9482e915ad78928487b398c9c4c3bb3cbbb119072a589358ff02dc3d8df8ca2954f735ea1abf6dcc512d5240fa5f3db5e96e98f68e5b40d7b2738be566fdc1980fb6cb1f05a8ac3b0b4f93a7d20cf6340d050af314c28483260bfabead73eda4c93ac4cc66b775a979b02760e9f22d4894cc977d611fba2da472875db16e7516b74102710e19d69fccd69c83a8d78e844c126b63410b107701081e032c8bbc00d0b5ec07c4eeb6c0cc4b282bcd13d9b143967c11756a1891b6c6dd2aae2bdcded82c770c1e5a1a7126973db527d69ea2285dfa31bdde41a967ff49149c86bf2d8695023075eafad837d532889935a2026076327e19f37a4071fc565c871e93f28bf7656983c8d06ae2c9a9922ec7084d833e791fa4b2355b5e48b512681788b5bed7417cee6680c4b0e13f5dc4ce45d4b1dc1d18db388182ad3c78b4a587e6b5756f3af75062f4e159eab3efa1170af8c7993510da894b4a062e475bdf42ce9e878e9f052fbb4d48b17e131a17b6c3262bc1184dc18676d56047a1b97d31ddb70605098930a19310e9a842291019bb9b74c8f2510655a0c31bc2b29789c4ae20ad3784d591665dc4836b98f0343c1bbd4a1bac632666230807c2489fdac51928f9fcf393a28db2f739d568ff4cb7f1fee057258e63da6cbf5ce07bfde0ca72cce14941f4cc3414ffe4dd15ab0495106f88c11a9451ac3a2f610bd03a44aa7dda7adc9ea87a1021c1447698cc08babfb7137b06b6f9012c83f83e131f6ba59217aae4f090ffb3d1123999e6b581ad076db89ceb89030247bcbab126642413dd398f272fc84958f751f0d966abda9d3478861f2ee1639388adcd478a532787d631b47ad94bed93c2e796538aecaedc597763f3332d5de3ad1ac3fc43bd1b4fbdc4798778f0306dc616456e6ed9f34ba2875af8699ac7d501490fabfd999cbd25de7e7b9f74e1f1c3dafde2c5cef007d4e35ecf93c152c0af776bca957ed2d40dddcfd83ac3575956cf340a4fa73e426cb3cad285f880a9e82386275177b9bb41350beac4e2e86302e97ff8aee133860cffa80a9497a14d5e567f9affdade9d8073fe061075766ec3d58aca74f155166512739cf0ee874223854f294159d5607c5990cbd2e5b3b055765e000fd9af130ecb36f1059fe0e5f71a345a91831b25a4f7b0f236da6cceb1a9cfc438d841340476794a0a2ebfb001016191a3a7d8898a7afbecbf1f5011726999fcf063159af1b282a3f4c65c4ccf3289923676e80899acdd5d7e62b495862649bc9e6f2000000000000000000000009181e222b2d3740',
+ '0xe76acf2ac7cd78f905ed15a8ce11e5ff40f25e71f58ae6e5cfa31e2e2ffb7ef9a43c1f044291868723103bf0b3912cf187c54c9306248fd6ce43882d37edf86939c7689bca2f17d27dc8b4f9d7c9cfe210be86c3b9e93fba2a9b8ee281ab60fb2487d7b47925adcbdda640899e8ae4f8ada3e9bf5794b1fafeabae68e3850a8ac834f19b106dfa8f068571fa3d45692c1c47d6b3de72877ecec3767829b73b038adc8ef3036f7ae03ea89c06284073107211c3213fe6f8606490082ff71a812803af141fb78164eec916541cf0d568bde65bbbb17145e140943a7e3304cd426515423f50e70ee5cf0570904991a1c623145ac84170a87673465e59dc51f0c36add9ec5af63baf3b6b8ab42d5eca416b38a38d556ea3d99f5dbde86cba220b1957b7adb82f09b9a4d27767fccbad66548197139feffc521fd99a0a999d8b9c14a38b84031cc2d5e8adafb6dbf697e77df1483ff5bab26bbaf5d48566ec1a712cf701664b5565eda676a718845838eb000ef3e61397593e321c0cc95aa0d1d0f66188599e23af14e28f9c6c9b62000bfb9fe4485125912eaa447db173b194cf0c55166b304a20acaada29712da8dcd1f3e3bf834843de782364f92aaaf9728e9f5a77adb4733f9860cbd642eefbdb8d7bfa9006d3ef6091a5122ce6fdddfbde4e73535fe5c8e0ef3ebdde62f189a141b3f006b14dcafb082e81422cd8ea0252185b57e5d2d964e5f85735ffe94afed7603027ea365ad359079eaeffb9f2f9d273c66d2b047da3ca72b6561284374bb0e46db43ef21cfc65e52c2b430ca8e0f5468beb2799cb13a0982e24c6aa6445dbb0a885788fd7957c2267d860fbba8048ab91c42cf71df7d6b7933493c39ebdc0914de30e748308cc6e08bd7ed92b31556a66b775ababbe2b9fb63c3b47c04f8f7e45077a95a94a912ce70d8e8046589e19f412edb6b9821b63a3a53612f3b7299dbfc789c7cd84c29e8e40d4f118ee9fdf8f9d2f0732defc159e7fdede60905b90bbc1e444a5c1b01ccc0a6373bbec9ef28ccf8b047422ccf4c1e5e3d2a4bd99df996e9919c30790363c5f92c01c020394139213335210f1afc3865fc5f2c9c0e5c8f2af7e5b6511a2aeec21c1a28b5ebce62fcdd162673d477fa013e34fe368999c8d9436d20d182353f3e04000963abe056d35c5446c425c72d6f39225713bf32b2dc09232a07dc0f846a214f19135f2ec1d5959aa54dca000ac7ceeb0ece2dc9e2ed268b53683287ef8bb408e3606b570ce7acf81422e71b07e95d675843ed7aef7dcf5baf776600c35767bd999727a7c9fdc00d3c88b404f864a1c3c4af5ba899af4fad7476af0fa441f73214d1fd848636feef42f788c5358bd212c397c0370965a80659aa10c2236e4205e8767aae1e8429c0b797548e4cbda78423a92330cdb30bcfb7ba6a9f35322088f649fa3fa66ec084cc2879f209270398efc533dfefae33d46e3613d03295c7d2ebf2f3a139171617ad24a76f1daca49dc70127cdbaad119df85ff799056487435d549950bf22b1788fa1e8cd9b485c4fad934038c042088f3aff52a7275077541a183b203165dba701b6c2ae0e403aa7ae5408b4487035ab7f95b6b858464bcfa00b95de419780325c02724b8ca7175b81eaba3cd89db89b338bdc4587e6a66154ce85224e15e71ec02f85ad6616a6d867ce6838bb31e0afc89a3d5f2dccaf71ee98b510cd056f8f6c87bf04d94d0612537834ec36c72d74c5cc15aec7a74cc5511fc657d857852b880f17ce56491aa145ade4da3fc1a41e9d563698eeb85f289367495844e13c4d2e3c0945f877c8975f771c500e0d52b081f33523a5ed554f964d34feeebb46b40a1bb2a02f2002d3f487f6d56b6f50c3928817088aa8a46f188d80f1c26f703dab657e781bfb8d7a5678cdcda2294380c51b5467baa5b2c92a4088b7cd09319709f30061ec2a849f90730d5d738870985d5a927a81cfa5596c8020ac6843ad3bae4a825f607ef8d5be3362b1949fb68d9b70acf957c688792c10c3de5744af5fa803fdf3a2c8890932ad3131c305a06fb4b9ea2c88ae5b66be70b1447ee39d27cfd2143c621a85e4d96bc1f7063b8a03ad99737baa3d0f7cecaa39dd19825bd1462d4ec1fe2985e85d82ea6fbfaac4fb17096a50545708a9b80142766a692416070fe8eace77d0b3780784d640ffcae6b003b17eed66da11a810aa88d9665a78c08ca281d0e65eb81b0fd627dfc6fe842170e5611de317246a309d48aa180ae1f7bddac0c2866623a9e2dfe19571aff5846e280761111ceff559259ec62b251144b5372d1180156b0d85e69fe74d08a94fe1ad48a391c788c97ae91b252e07956598b7b333861aac41ff5e4e5fa338368edb9c18d7c02118172559856d2cd75e041348cf6bf8a71f0f643f81fb7a6aaef391e0544f56ab839ce90a59659ea507e8371da26c2f4e2373261463075cbc72d2a556bf8798d81a039fcd527fe4080b7b0d8d3061c9849c37cc1c47341b7f8080cf407387f912cad294bbee5b4bbdb1c8b8ba7e5fb70676ce0d64c8a1d19e92eb028c6d888375576dd7f28cd302d1a1e0948d81aeec84d0c85e37bbc45ad88beecdef9ddca8bdf80fecb667f5fc0c1ba9f2689d6463e3690c3d365706e17af3e055e99b5affe7b3b50aa6fc044b68a4c5ec4f5d8829a4f8687b4d9a43e90a747ef718b7060c90f308939c1d0d58fbacfa0fb917b49434d9242f1727ecf5eb173d861364afec129bbb9852c603cf3bb8649944f6496ca7133258edbd3b0cc8c7858ed6c7324f27d446db3e7f7230cea9179f874e44adf4148bf8213bb72be114476f63e71d0fa64f771e2cf3b7a05d3eac1654224dc3a3b80069e18f51049e4aa5510b42a9592269bc23757dd4c29e7d6c71ef514ea85329f4263680bba1e6994282edd1c50c806e1c86cc595eb84f6ab363fc278db88a8b146a3c785f98328a4a527061e2e8b28c3103c97c738478fb2451628397b8694d258a2ae80087895590d028c7b6a871fdacae20195ee3331f02747d69f0e79dad7ed07c40fd2296c8e48ffc834f4d66b5de6653ea29631c03e3f3c06c9af07a3a6b53f7ce5e00b817b5aa51a114a7f34537a887cdabd4a1309d2f18a5c193f294c142bb75d3f3a1c39b902d8833e7369d5827f45f1a8bd7847458f1947d568235af06841af01b6e676b1590e0a93cf54564dd8841c35107e3c038c4f7d494f1218da4bd5363a5577278e62c0c2123f8da4485d4de99a8ca7a1cf839440473f12f0696189648aee709aa1071df087a61e71829b98281a1fd243d6ff99bf62a79ec5b762674a252afba14900fb3af4ee1025807bffe4211c182aaf93b29c9a3bedf7ff8e732dc62c054ebd768f54e7b32b624c51c3720f57527be64f9e8600fd37a7682c8ada88cf4c9679b8ff0aea4e5815b736b7848edef3f6d196f6dfa6f4b5445832f211fc592337dc1f5423a6c4d4d6722b76691882434d857be95051ed6e70a0cbce6cfd67d779b9762d7a909612bea950d9a651fea21e1eedff9b38eb4541b8e780f1b59a9825e8890242cc4922c3f3fd4e8951ad8474c69584222764fa2762fd88dd2c37555daad1f852309d57955d96b590f45e5553ee94608898f5617cd53b841534eaf7d8545eb24a2f30177b626acf1fa87cb06fb3e9280a1808be7ec185bbf49d9dc86047bed0a91c63853c75b5fda66493d5cc6b34e2bece9d0265f2310d78f6da232a9099fce0c719bdaa7499543866d17d7be336838a245f232e36c1b9cec2988fe28e0d0364f78c29f1ca561da19177a854a6d6cf13d5096f0211aa0652fd00e777a7c679f535563a17bb92fa3286367ba91ded0b99133adbad15fbf9d10fb57a9b536b32ef9ac0297df2f74b35abe277070a3452777f06fc93d6ba45b88cfdfa10914588f51021384e5cd345b3a453a0e7537ad062d0c26507ebce71b40a95915d7abaf3c821ad64e4fbfe68190bde273c7c2644d815e4495735091c3d8198f80cfddf8a9dd89c6c896c9b67edcfe6ca48726c2f6f72cf1b27620f138d4168d3705bbf3a0e312eb680296f13cf3f47c92e4ce0d5c9ba57fbe4a50a215b1c339a1a2ec56e571233f507b817021b1083debc12358f283b86c73189fbb2b0d2768d7cb850c613fe651afa565fa9468696ef5156e777a3826291afe7371ffe5be1943e84990cc5e22c1fcf9013fcbfbfa13d9c37d30f7e63997f6212989f7000100019b2202597dea7fa122168e93e4ccb02e3aa6e9d2a0f6ee3efc92af1fe43e881dba0c4c96921a742b475c57ca71f4f907a6c95601aacc02a6588c120bf745ce6089bb17e8c6087851c2fcf97e6e7a48dcf87687bdcbbc040f7cebab1c47527b891e5651bb6a50f66d8bc08f409d68de996e2a968f6d6b33d4cfc4e7e6d7bd4d980ab1f9b7e312828de34f14bdb835777d6a29b0ee11a1b4406796a30d7966b47acfb4ed8f95717860badc3876911e6041a0e1f8dc1a65e5a5bf77b6d02ea95428ea8af3d6c587d12d5fd0cc3f4b7a10ba73477052bef0880b154f90c886b630099b9acc11714e1d4d63412349f92da836b64138988471f9964ebb201a391c9da2b9e668bc6feeae4ab12529f5b43c6c63176dfc56b51ed3ec5425a7fbd85fef7cd06f3b8d5b14a06e0ade912302657caa0449592c78035fd60ff01d4c8017cbc74c3a0c4f17635923c128def0a2e5a8b95b82df9e93ca279a486cd491a3ff205682f4b8b099d9949f32be41ae15987e84f4ac2192ef80949d0bcf471bd0aad46c8535a4ed132e531cdeb6488f293188cf7f4923ecbd3281ad2523a61512db8ebf4fd00a6522859d8a33edab1768274bcbbb077a86bcc2d5d64657a73647a9288575099723cd50c2d00790976c5034b399615d6634663716f928ee728715fe21a61f7b69f4244335338c09905bc6ea323699fcf5687798f2482373463d797f0ad1b08df4481cb93953401e12c409663c94ac3ae069371138687f7d0b583a2c7dc9de7eba345905a64b4e701ccb7d0a7b2c1aab99ec5f80f6c670b1bfea3f44b01379e6e9a952caf45a0cc6f8353f902102c3e26a5ef832b8135d23aef8791f1b11cc8a474a888f49d93a07ba9fab3b9a9a2a68fc8a2bfc38c749aa9b0cdd171080d1917474665e7e668b54446e36f0445b90df3214cb9d53235cae02098ac6f1e4b519d6aa9f316b8bac1ed3e48b982eb5ab8c1c4c014421236fadc6caea72f736b9bfa735704eff2551a057bb6d5caf58573a23483954a12b8c4fc21c3af7349a2df20443675a829f671eac54acc41738b75dc9c52292c11aa768349a8164c08fe078fee8ce41c158770972cd582c99e3d2e8a6838bbab2a11681cc0730c8272202514ca319a8d3c0e110476239c7ee9c5e36288cead8fe17e2dabbfc6482be41e3e3dd098cfed08726b833ee6d59d72f6b56b4ab75240e4f8d567871626d7a926d15e735ec49996336776015a5c2579277a63ebabb0c59e1e6be55da06d972f71b82cd31876069f3dec29477737a23a2d95a4ef5e5aa5e0d3fa651c8bcf682e249f81eac5ea0fc40d6fe060395e9eb4b99ae8f5093802b49359cb7ca59a758f03d5ee8ccc9d831eb6b72795011d338b82b6ceedc74c9e0b4944de8eb427f0e9c63290b869029eb3246d77455c090ad18a3f82aa0f56c3854f52022aec3e9a73da5a27bfb09e8574e32fc137acaf800c0ff5430423fa54faa83acc12dc4b182efa74aa60a5b4a1e11725d045b36add2b651f35e503e65c9ff549436e7bd73411beef7be542aa783de42b226998a5efcc0278360cb06c7054e1dad11131a760e2435286a8cfc7de5171716366b857e531c7f7fe6eaf44bccab471deeedcb6418418eec69f56942752c3f8cc97d41d1021d64e33ca42a89c745f6a19aed4c3f577b7d9118435435ca3215cff6600dab660b6e1d2620621b85390911077ae7b0b7cfbb34e9bcec8f0aa04bbebb9896fbd52bd091a95d033a4cc68847ed330270679e8aa6666aff6a6f30f6706854455e8f14858fc46456f0b6b25640a4c89306f928182fbd76df5b4569a952253c4a33e71dd093b1e936a77b01accdb5cca5b3ec502e1fe652a0738f3a672ece3c8aac017092f8ea915f00bc08e3b7a72402b87c6766ed2988128d96aad039666b23af756e3d922b3f5d406b52b8713fa7e83e8c6c9a29e51636d85cdd38fe4f76dd08120bd44d48bdc5cdadb67227e12ad2cabcb845cc2d620409205be4da7399adfc6f43e7098280eb13a6c54128ed7b8efcc21315b805c955d9728c7efd360959b83fe6215a486b377f773072288a88daec3dd62312057e8cb57883996745c47dbfc24df68f0e7611084294d451741fcfcc905c0cea78c55a58c713c1ea8fc5092328547e888bb01732383a6388b0de979ab2bbbfe60351777c9ce902464b6a85b3d76a6f7d92a3d0141b2a393f4279baeaf3ff28374acd000000000000000000000000000000000000000810161c23293438',
},
],
[
'Some data!%$$%&@*',
{
- address: '0x20fE39238877509b60DF7e2958bdBc6f88398F1a',
+ address: 'Z20fE39238877509b60DF7e2958bdBc6f88398F1a',
seed: '0x6ca868b6b469e210b079f6742d2e149b6db46f4ed416c11f5d9636e1bd7f35f14d5b5daa84f0a69e54052bcff1897ba2',
data: 'Some data!%$$%&@*',
signature:
- '0xa2349c63cb2b0a5a6ba9bbdf856857ff610646afa359ccde5a713bb13ff031f24eaabcfcc46e15d14d79d2d836d6461dd3fbf2a52624cbae6999a57ffca79fa272ea65606799112638d85d3f61367bcfdf73688681416fe59bd60a96bfe2e6b6a0726b607234439a470dac3ac5e691d274cf8f599da57de47883cf293a64260ffc75ec7c4412be6446feb1f222727fa1f4989209f4421b4c0532fda499f59da595f1b0b887fa982f51b2d5aad46ec0669fbecb198dcab8fe92e915d31ede372f6824654e91f6b18392d560aeacb69d941371b6b39cddafbc136e109862d2b0f12c19868bf9db8341b1b9439d66d66c35029909276312ae0a851244903c0dcc6da4c92a5e9c95a747f0271ba7c70ffe8cf868423bbc196517c1387b580407696424a2a598fc554eef84f77bbdf237a6a1bd481128daa261db717b6d99dd38cad44d0de8f6da41012fd6888e4e0d74baa0ec6239f62e1497c5b6d1f4ceeb4d6580b82d022c56558d057adeef32a2e0b6ab15ba1f1b8d3ac2a605e7aace8bd5704862ae886d3777f1031313366e8a1e96d8b67fb042a57f9e4a2f7a6780abf831cbeb5e7e6abea530c738b52e532aaf4cf80b6246c65e84e5fa1864b630bddbe1c3afe5d171fbc22144557e978ca51a87361a833a1862334fcde22edaa13f98e55e128a5310cc7cd9e597b1f84559ef65a0aef367502263d6234eed0d81e1a2f7961309df9e06f21d13b6984e1bc1a5f99535b0a92e6f21c508f752130c5790b370560133788cd505c58ae279b861504903ce714e52d3d3e1fb780c9f43883d4e67a1f7cdc3f42d562d1d205ad38f48df5c1751d2b4927b0bef1348ee16688d66db2b3ff82adb8302607bef644e4c5c7f3ece43cde5bd77fe97d756e6a0ae532699d101d64a32b47b67fb8a1ec91c2034a6391b22e010f3690e4ad8ce30fc7a65bb71b423bf5d7c4a4f0382956763b024093f4beed510f29129e5452f461b33c2d8d8042650344c554c7d6c85d36bc15cb410cb9a33f25307dc206ba255bc65592058e71b4616e766ad7ba68242ba22b75c9aa4be5a86da20153cd3ed13c6466a65875dc17db498f291e1d2c407b77019ecfe0c496c5451bb728595325ace9be2f40568c6c566834f68bd816f6daf6106a9060afa173a71ff2d6f9e61752bfd86d4a36fce0c0e2676b839caed089102dbc1aceec38074201ea4e6228212b4c8e3b723b76073bada4a0d83aa18e372382165f6d81744deafaed49b8c23d16a6f648c705ef2625dc6d4383361aedf9e798714d145dbdd8050104592991124daf95afe83d8a3f539de2351403f486d796e1cd5817558a2d25754b6c0538ded2eda4d5d9d1895ceb55b42a0a92d7b6315c20e9d219dabdf91562865203b3bb74a425c1783dac147826d16fe3c771cfebab0553e5342e5c23a2faf6eaabb2bbf2f0205ed5c6ea226d3b6bc9eb2e11d27977f555c3c054fa6fb178916611b9a4023f7cda4782c7e5f69d22bebdec32ec5d18e8b2f0946a6925cfb35b9f0323bbbdd54483041edbac21493e80dacafb78b5a276609386276d047ac7313353d45a231c6add52eb9d74621f5ffa4e08b970dd9baa76eab1df9295c0a3b6e49f8eaad4ffab36d3633d5a3fc755b7c2e9e16e188b8b710989cf67aeada43429e7dbfa147d78b4c65b3c68594193aad1d7d4ad60cd078fb890899956a1259719c8c261cc7aa8a301f204b33c98b5d2be7dba219b088b305781fd6a4870111a279b2b4caa4830a272faf7132adbf6878ccf4f5134d7a0b2c8242de922cb176bbc70a13390c1dd3f2f93b7632de3b03c4ef9f96dfe7705410e58ed57e80582ed2212223da258feb27418d69eec58e3b631429cb4c9e6b0f8dff9c5d4ed9a1728664b55dd54f88784c2a576dfd27948782d8c4643f39f40c61f67c9c84d7e58126840d57a28b9b962137e535563a4750e2277bdc0c2eecd8b683cd683a8d30a33f5a88ac414b489a06faced587f18e32168997c8579c25302c69f490260635056b17cbcc39fdd2bed6e8613db10a16037e9a85c10bd66fbb89af0a931e376b006eb8faaac6f6589a694056ed51567423174109be681f6d4eb4264910d2c13c2a8e859972e59519e0f4f8b6caf97c806f0cf01a9cab9cd4ed2bf7f4bc6af2039ca5efbc80e9edeac6497b91c0936fed00a5cdc4d193988272e39875f61815ef8691faa064729392bf45e065c4bcb02fa9ea60d998505a3b7e67743a3878bf70bd7a082254cac7b4b398ca6d2ba5e66f6779e8b39eef2fbebbb43999206b93f58b8e38a32c8f891a2785d3ad9575513cb52e3acb2f064c0a1e79c68ef9ebf3fdca7e0471e827c4ab3f19ad52f98d55eeda4afae75496299d65606ef249388e66d68bc420014b473cee5d2e0a7e82710b62a8c01d46f45d5952c91051bd2483f78f3b982beb20efe398ff73759dbf6b795f396d254aabb11fef435490edcd6c43175c833196efccc7d98ba13a209725c5a8a8d5acdd31440e16740699741411f466f4ff02cfa9cd639a8cc3f01cb2fd9f74be54cd90a561b58691c8b7d730ddb85c3ad82354a795405ac54962218011b0b687ae32066e1dc74ecc1f8a79842f3b95e00cdd1958e07879977921b8ceca3c314fe348f26c81479ef5930fc93ea57ef3b40590d10f57939ff27e17ea30ec67f3c0d1d433db719a6c4d8b3a0bf35fd489e7812f76affc48288c98b11434680274b7131b465a8785303b23be6a98269ca6d81a2d8692e4e8fd63af29f7d4181e69ccbaa29cf3fbaf5da3d5c8c1e3d0b85f7aa872622cc6c7e484a716eda3f57df7dc4a9cea05bb106ca579eb479982fe8b534f563c051649faca283f1af8a523a3357b274bdc60c381758925e256415cbac526e867c4c26726eedd68e547631c905eeab0090256800e48bbcf9b389a9598fafcbb5a104189bb488055cbb190bf854d4cee12e60cdcf099c1e599cb19a03c52bbfe9fb22f69db6bb6021a1736e11a24ef690d0e38e0c2b260243049f8fa861d984001f5aa9d3fa4b769335ea7dc24f38d726114485c74d8f197a06cc10767d9dec97b6ac420beaf1bddd7f960ed8a6d381a771d63034c701d3dc43a7a2969a2d26d9bc34f9ea80d9958e564393f8b422e2813192f41ae1bf9e4a938ec217eccaa2f4b73d1346c9a6fda56bf6a3731f19ed8d38d7636790e6757cd9d71ebaff6c8f9c51c518bf94f74cb21c51fc466f659b09ebbae7379d39232332eee99502fbefc69a1ae50405c1dc1075c5d5b40b96b49bba6b9db214ce803bde2525bbee7b9e365358fe80842921f3591d7915915fba1895f3a42a2aa65ee59df0a49c974fbb88169208f65fe688dd1dc47780aef7325cc9d49255df5eaf55d61367deec363e9255395411ad0553ebc52fc062244b8954ef245be8b68766f626c19f51425f78b7e8abb5f3be7aced26ee40975aa26bc6eb9984e1b5b693c18a34768ace2c94daa2af52da67a98bc0382e629b633ca8e9ad157b5ac60748ea1a7e8112c70c097b70293cac79da730859f570f28b8337e60a3c4b7ba4aa52916dbcf095ada6708433b0856f7a56ddb3b2cea3ba58bf943153254720effd50b0b5dc04be209a79cadf366666d713057748a0aa55bba1b209b021f0583ad2dfb69ca903d57826e1ae46f914a7a8c081d74dfab2f165758d9c5e9f54d192d876acda8c6128c433bed4ee4bece55b4f6723c6f6112d4a82738764d0afca227ca0ee8a5fc1795da23304aa51a9d896e05b3da19eb5d1537787c901b8d695c10c8b8a6fcd51343b722897404ded4c648726dea016a7307705da33e17ef9e8c6672c95c945e96701ed0938d943b8b00eb668f4cdc483f024b9d2960ba15e4641e73fb6e89bcef61195344f9bc890c4584ae13c185ee768bd3f99a3b7ccefe13f0b52ed5208fd6b5f7728f3d07712259cefa13c2fd6e1c4ff51b78b60c3397f9f09f00a611dca4a23b8d3ae0091f85a3bd3dbd3731b75c8793b410c376faef7ca8fbcbb014debce88d3ee5a3b8433a0c1b1d3cdbbfde6f7065f1fa5d4cda8eb873f5b4bfffb878664e493ebda6caeda46de3e3b50354b34d716b3d4bb5a51a21e25f72348d154f43943441535ed2e11b56d6d2038568d9fcb5ab0b417f39a78fe52e5dcb768800cb34e10e7d9818f976c03d86204b2f1d21cdcaf462813718203c91e451da00599d58f5fac615ecbb11a4f8ec2f74b12d82800389619fcfee32d5ac25fb7d9748fb3509e0faec628e9214ec550490032951a99d95b8a16bbe02b4f74a4e6bdf2ac5b435b71e7d733b1f9bddf8de45abab9f517e105c6eb87414a1a332c5abf8a66d31a49e9de2c80c5aad32a74a62250ec25bac9dadffec080f65da7f859d12b1183aa0c88fa526ae51372e03ba94dafac571f2329c1b3130aa9cb767ef8497a16a39ba3927fde25accabb4b80788d2ee3c8e7f1055f6a141cdd5244f611da6d1349422e041e6f4128c7709e2b5692657144f287bafb32fd82a3d1de686f7c1f4d2307ca950885070042999c3004d4c630be12fd00a153a6c52e53c2341369603ded5677b9abc47846eb9e114963b72cde2e20195cab2e7352e5a0d0df2f23dc4bebe8014497c93a1e792c2847de39bf8f377d176ef6d0ffb8174054810750b760254453b3ad38c8796b4c823fa7511753392d5281336c3269e1a963c869663fa87f96a9542ee4667f345400114f6a38db8e4b5dd1efe197e564201ef9d23b7e4df2c44481908d3f860bc5f8ac99497ef6f84c511ae2fb9941e8abe1f4adf41793e8850f76a73a6f88d3334ecbb287a9554e9091bce40fa65ad2d3340c8bbab862dbf55d7c868a9297ace52f1ea53eb98403a3f58e29f82b0cad64a64420561a296e49564ca1dd18e3dc262af3d286e15b8ce856265d0e99a2a3ebaab3a4a5c8d202a993b5c2d39c477b208bf30c12e7c812fb7883f729272d77bae23c61b9586a9301fdb477979bd31324aad36af4d77426903efc0c64c6af808d0c8a0c49f095f59edc412c30d1147a959bcd8ede13eb08568d8ed2a50535f2a347618133416517477610a5cb1c14645e825aab565be2eaccf56b12725985c547e59cb7df245c4f5db434ceb56c5fe3c4472d3defd4bab591d8ce25a82ea61d5a26070eacfb988699f5f597df71a10207c9cb9d85624745c8d3e1c776611d660d3348103a48fa868ebec4cdafd57eb2b8e76a240f57c24ec6ae653ef7451d77156416a2f1e63a4a8741af2a8d09d31953b79c4ccc45167a90e311b0745eb0c2c3db06fcd2481ab7627fc8ac4a5eb14bfcd972a3d4d8cb1c45635e256e24aefe67a8081d9f74cd23d0eee17c4733b323c7e7f8a29df603f4dba2ce46a50a6b240bdf2304a7c8ef3e3c440a5b84de01280e7e73d4b28b8082732ae8e17c2966880cd16ce567e646caf98216b1bbdddab7caf070fb15aa1ee556b5974090a17b016d563865f95d4e6b7f1eb1b3ef1c9566d10a81e1c415f97098bea9c4fe9dafb65c45b9f1ecce6d5ea91fd800a9667a6cf1f892aba7ccf1470bc71bd6b2454ea31fcbc98374c0c6b245c14b7bc667f45d517df25cf7c582030a9aa73d4eb7e15868def02f1665a388e1b2458aeaa9fee9eea4dcf286f3b8c0361c3c6879a7f191b083b73a97a7b0875fd02329ce1303c8d27ae819c3c2461490454617489041e7edd308e59f864afc3a135748f5211c180b3f7a83056602ad94cc3fc6e9889c6b63fae87901959136fcb7fa540ec8e4cf2dae92f6606356d37e5fb79fd1426030b6d5910cf1da3f3c9f225d2b730fa4f16471ae1656d15036ae3a4b8e6b8ad33ac571276ac81d59983d0ae18fefa0e3b2893efaea3b2bfa2ceb7295ebb42107e404be6ef9ac877dbe3ce9bfa3cd009f8aea5e6a3ded4be5250b19ae42700e4607f12ff9b98837c3d039f7bba85cda098eb592dcfe03309e370e8fdb71fe6c78fb23aeba30e15be52bd60bb6777f3f38b568e79c3623d5b12fa46a11d2e8d96b4f6b9f908a57829d1b193b7c14da408510f61285dc55f4c58e0c5116ef2b9fe867838f4bdc07ba5e40d6490103d0c035ee061f4ac53407e5fb2a1f8ea11940e6d9d4f91122cb431962aca4b0d972ec25e25577bf172b1a78894ddc4f8016151de81466b987c81196d35ae7fee5b81b3ad4dc0b881c86df2fb2ef4b850e938c27f3e36de7872ecdd026034ed41b12f751ddd0ef22c612973671d8f34a70eab9f6d53fb5d6c424fc2d2b99624832a237c8afd7e5dd93c2b00eaf53858ef4fb576cdcea594cb609ff67c2df0d876ab8043035445d9ccce79b3cc2220f63065e5f653db4b90d7eba41cf7d7e9d2311e4b5270e41881f8a283bbce399088450e53656251660d3a8ad1f8a4fd328feb3c0ced0ccb32756a1e95d9dbcccf792aad8e596b1bee5ef131d2a3a3b5e9397c3e30918314b54e0283d5673acdae3f3020408979eb6c2000000000000000000000000000000000000000000000000000004090d121c222a31',
+ '0x2146f32c6732f94b7bdf2be5a58f170867a095c7fb885a7c7d0e126f7855cb70b38c1eb9776440fe28710055b393573b941fcf363e1461eb23591c3bca7808e78e87dbc3a07e8dc2545441a81285013e9592a6b8fe9fc78bae2789aa2f6bbd5690780ad2ac5ae76ed30eb8a52da5b1c5eb12aec3cfe129ca368af5673e5ba4d43bbec21b86df4738c43dcbef30aeddeb92872abed2caf5377afd9153f3d385640f99a7df27ed27b4434ceb078b49c5d416cac218b66267556f216874375ab5e8b41ee8227e80741b9511f648ca805902212c3a7b46391c54bc8a6f5282f905502d5e9303ad8a4b047675c5913ec2ed7187a8c58fde67200664c73460df5b0f1e5aa30012cdcb139c2488bcb7447479ffd0e3d8c0985d14492e4ed7d703cdf419e6f5541ff07b760bde71f7fa38457f5e8e3caa231f52ee6098ff74c791062ecfc052d87ac373818c635ee7a180fee115784693e08fbace0950b50bf78b8301b6f2fb9a0cebc430a2799c89ef699bbe71c7b62cef6a08233ca1edb8ff136d8482333100d02cdcc3d8a1d94d6983466e19b35572a0f07e68cfed8e98bfa7ed155a3438a9655e98f30a3ae63dfbb8d9417976f155806158c4312b1dfa081759389d32dd924f8475cb43bbd5040bbe2947c253aa05e72f6a906654364b985203b28116e8ed4bbe543f22323a0b89ad4118ed9fc56e64ba4fb9c1a0e5770799ccabb88a64b639a526bacbc15ab7c303874a04465378488ed38fd5e70b5ed3cb2b21dcd150db31ecd0239d3b10f1720edcebaa9bb90ecaf74143b80cdb59f87d8bc5b2c192ccfd3a743261acd44064f1ce6cd61d4e09931c389d7381bd3e1188a7ace82a07d3ffe27d29667b2297b19be1e71a7cc46c95f5b0f160aac0353ae5d1683052bf06cb497ac6531f03d57f2d660e3210ff28e2778f2599d61c268aafcf1f900b294e111f8462269b8b01717628a44eb42e7ff5dfc64f4fae034086d85b090858fc01adf871138c8eb0067669c2c9517a816b7bfd522408cdcc53d08aee7aa981dbdfe43a5c27ea4adbabfc3987c682c5e1923c36e341df7e21f20db0d63c3d6ebda209136b1dfd75c6911398fd5ee787be228814e27a28b0c0f1aa18e7c279ffc057a2d970ad4a2d34a3f535408bf849f007a1805e21124d042e0126a8d3ba39a76704760fd02aaf8190318af91e5e07687d4beb84189e070bdae69bdf7d49a3734a6ad32727e9d85970f22d86621115d3acf9b54835a603e26dd3e4abb1de419dfad365c862046e402d3628d9be0b62f4d57c2d25c975729fbca364d6b9c215ad5d43435212a4497bf484167aeae252c77b43ae0dd62045e35d2017603ca115a6f1ba157bf3be093d817395bf586ab56ac31ce2994626cbaab55e43cd5fd89c2a4f1a32a655a15ca1f3cfe768a03cfe144300d325b5545ceed84afb1e5345b361e9ec1010a4fad2bf89bd46692fad466692198cf0b5206913cea5581ddcddc3fd44160b9d81dea8ce517fde25f7be0f8b482e0913d3abef23a9764b405f60a215df146d6584d3aa7c4c472dbe1ffe50bce5310bc56c07cfa7981105599f663dc63c8c7519f83b27f08afa9bef2e82fc24fd940bd73adc4ee1f1f8eb74b020d39b37117be4801e29d21574fb633348837506fc2018c8b786c5b1a43000abedae7ab8c2fd86767381b7ea1b6be0b7f86e94f47a8fd49638b22feb93ee78fcab2a1c4a5d2d4b022d6d4751e166ebb2a9bf3777328c51920910f5bbcfdde57da4f8e2c564addae1684c9707b14fdce9830b3fba5165a1bb46b887c3b93a0f6c3093b41e95744e27ea359af2df7f3695f6c1f02e268f788ead5b20e1d802d27bbeb09d4eb1ca880d150db61a53aa86a26f86530745c2194c5440b2b7a39b6d6b959da77ec0cc6bae15abd2bb62904187a848085a09feba243e61c192c0561805441e99e42b59343932adac2cd575660d95dd60cb1ab4bab4c2d78f1548a6264a5f767f56e82eab9850c57a21a605158854fb8a9a2a0038b4057c1c8d2d0ef1a6e5418d34222ea14a3f92855bc01f943bf4b6c13a1b0add67be4b809b117909cb09ea635f9ee36164e08b9dfe9c6b71f3aa3fd6da21b5b6c5b1aa7d99502a1b6bf08d4ad65a3e66da1bd6e628cc2f0e2bf13d04e48c3a7ba058199de2c55e42f8ef8285ea70cbc91c58a35a46aa1bb89aa30606970cdff8fb19ce1114957708381c5a0cef8aa7ac91757db5a09688dfd086be1a8bf541562bc6adb4da9d788e8a0b434422160da052cd8c2787f047dbfe21b6292c736624d87436dd12f04fce7ac800e04556b165776c5c2bf741ea8a3759e5af36ea116b767942734e085d21257c9bc3fc00c1a33c09064307eaf2736321b99710ce40bf8d4574fef0451ab9c17aaace12e47ea2287a39503cb8d9c6ada76aada589d078c3059204aee09cb1af3d32b2ec31fb967b432c78272da6ef3272a5241590cf373753416992ae0ed8d78c1a72dd9e7201491b64a7c76184fa87eee54a51ad9133c6646feb079a0f6d7b7439128b73fd234f52e86cc15d8bb7dcf86b11cc231ca712bac070a96434ca72d4f698e00b1d96e12eec3f7f85215ded0aea608871b5735820f996c657e2e46a5b1968f6dad84afb56ca5975a01c88789c1ebf99c473cd8e3143dbc822b402e1b256ea02680d743b5305e06d832258819626d1f5a6862cb5223c947fd7b8aad31fc91a838612dbaf8c030a8341ff3ad082b8af13a9c0b0a4725683917eee332985938ad58f8d8b62626eebdd9365ebe6aa32ddf768ded76c3c6ac327a8752a3ceea5ccc0ef0265e326bad51dd5a8db9945011dadd20390f0f2be34c9823b76bcfc84559b59e4772ba3296dbbc816b92b5186982c2b08020b0716be0c4ccf24120949dbaae72f520c7e9c0c40b083f7ea34558119ae7496474511a0b3c6f0394da7f769e5b70fa904c23af309324dc528df03020212995ad2bf86b851b4cd31f730f5bf396a9d6a2f5ad93c111ed765f0740c90045bed09c89444d119b48eae0451d3c547d3cb25989198e2405ee34b74b17f631caa4492e07a9390a89b71d760f5822a4768f0579fb1124c52a7f9b8c897b4597e8c5e88f68ad4e5357ac767e15fb38a73cd9edc1afd188ba7a1dfd33ac0aff81187b8f389222b350b0928b97b2312983dd81597221fbd70ad0cae2f0477d34080bf82f89bc863dfe26dfb260ff788bbc0c5b33600e3ac491fbefdc0c7b0e3f523190c22089c2447eb02bf5d6c4631700bfd3917f0f0d2b91da908d42c739b595b4c8aeb002d79f513985c971fa7647b30ea3f074126d99c03c611afb39de8f7d5e4092b2796fc086718183125eb883829a454e4c9566f10d2346838f2acb9e81c2743f035639316de10af3e87339c03ef75dd8dd17f87d0af4f095e759e63cc94afb81737458ac5ade1ac6365992c7e93cd4580d2546184004fcc87e034044f59c6a357714436f798abc7cff1cc409dab04dea5e18bd73ab569c36ad7705f700d62f0963e96508564dc572cbc7b49b6ff63826a99d65f074305725c3cd40033349bfbf7006b676a27acfc9e46cd9c4565c03241a3e189f0d9d6d9655a1557ba59e7f9f4736c57e2cdc84393a767de94f2d75893ecebc7696079da93dcf2893d0d500fde51b61afe54544f1ea99d739f307e84a7b05d4f352f08f50db40b0c229be8eb2243523c253c08e94e72ad780ca153977f068b56af67f2314a897eed010eb633865753c93fd60988d50b10c1b0636cd3908b456ecb53c57664d8c53c15961470015138d59611864d59e513793d51eb78d4dd0e9743e4aba97cfe85a59665ad47c79642231b9877812dbedd476740145bfc03ab8f119f073b6fce11c20e1809c6550e43302a13581cc209b9bf98725f27c15735db495fec70e4ba7425ff2dab4dab1604258c84dc15924328af12dbe8d12dec2e08acfa2ad6c04af90f4d083c59fd9411f2e26132a475e9df9d256fe25c034265ad1ac6fe2985005caad8b8d79535af06c5a8c49bdd975fe3b2702b11c00717d36727f6d7ba5baf01588a36cecd450b8713d867d71049f5b2efcd28814049daf978ce2e6ea8ed56481d383a0968e1e616032841cdd7cbb066143e9dd55ef109b02928c5d0778bd054f21c5614166fcc824236bb337b21732098a3424594e2be317525d9f2924b2bf7717a428c1eb1b23939cb7ee5586e7364f4827b57727eecd04a525a3e5d005a2aed517c04f73e460093ca80ef766b4352200f2cdd5dcbbcb32b2b24fa4f18d4faaa320aa3e0c2f1ecba89efa5d5a598a3babba17086f95f4393652c7f00d20775a6e922f72ef6d1f28d61aeefd874ac7aeb192bc2bc665e137db1c6b1ade7badd9f9c8b6a413e085b4e7d109bb87c5ed3858b51fd7aae67337972d11123269a728f45b860c6411330a76615b094c57a06eb2407a78270129dea15537c261bd1b3f84a27acf3792ac5631fb2cb7a572da7354d8762d211ce9a6d65d242a5f8d3a16cd6205f137b3a2f7cbd108c40f51624ba08fc006f2fbf9b90485400941af457211342abc51aa9d01530575d7951dcad69b6029be953637b1f2c9ba783d8d7d1b46dbc017f872b7626aede69c177ab206fa55370c50a44f095e6e79e8af2b49f7c5678db6bef8e1443b33a4b117f4646fa0523fb35fe0efa5c12584ed7fe50eb7f8c5e910f3dbd2e6d003afae7ef55f80d7d7a9b825232af04428fd2b799ddb5dd75a0cf842c78bbe9ad9b2b189f2f7a7f016a39c71a18487125985242d897411219a8a03a823e68d87f6bf0f02fbc1e5feab09512789e2ed477f025a909e1cee7db84aefc02f66713c0b054e11d1beb84ee179b9b0ec4421a1c033fa77a2f43d183ee1ea49caaf4fb578fa3b0b1076cc0298cc36253eb4a7b020bb3b05e030c777a3be7d5477335483dc96d34d3e12a6d8a8b9d669dec5cd3ec30008803f87da4fabdc3412fa58c017f92b63cf7ebfb51e5c5c07b4a4d7119899c5a0d23f3167f58b555b76d2270309aa918071f164c554185f5fd55f422e1a50afab78165d2d319feef0d9cc7fa9cd9d1c5180679a87e0b42af077f3fe1b36ceacddf676cf85debe1ef923492cb64a1361c351be19a5af222f96d255da290d372d94addd7ec1a70689a9183f4ce4f545f545d5b64ef8898a2b28bc7d4f2da23103c87cc0fe6e1587ecd4871b698dd4676f1b7634d013373dfd420f91c22cdaf84989c470b1ea9eaa7efb8697bb8a83dcfef5646be111d0b913b7f92de906928fe55851fed8096dbd02aeb20d22094a398a070cace9b02eb8c582514f6da52dd7cf8283d5cac31a0d71a9da9af90f61bcb824fc2c0c5ad4916ea24b0262c1ac29a6245e33460441092c5a41bfd14bd25cf1c29e25604288bff18214a2e23c3ed5cd2b9501843857e5138de333da32f06463322b73998454e2da28c6a275b3e9150843dd4e615476b63511bbd1532acaa9bcf53589ded1931172e92f91aca215664fcbd63c96cc0ebaf231f39924ea1f6500db3dc778aba4eaa6123ca8079fd0ff3508f356b3bcaf24fea9faa153d02722a838790925d98498b1d00f861f621cfa880c4f3ed1113c9b984f754a8c030b30adeeb84347f5aa94e90556b34040c72e9ca1bf0311591759cc50a5e76e3588fdc7d80b6a687fc638c986e0521df2b4ae5a4579541c10a36ae65bdd746d7050040001302e37e716fb7782e1336fa30e9e22a351bea261864f9fd62233a9715f4fc2bdc101404072a7de05492217688eeda0da0b60d2e238b3ceda138c1279a38d4820870372657313b2dae3e22fbf865b373c55734563d41378c06adaf04cb97659a1a528e53fddaa0099e2be5086ed1fec983bee3f71b4d3935f319e04d53099eb0e9b2257f793a41700ec1827b9b8d5ba327f35f04ff316719fd6a8f2efe89e7feb967e6892b033d922c842a6098622a79e2d94ebbc151ec30abca8c7bb2611d1e2478750277ba8938f4aac330b5f196559fe0d11f06bab7dab66d43862d8d522bce9def62d7dcbb6ef4fab4ee8ec21d702bfc7cb8d80c30a7f88ddf42007dadcdb8fb2b4f7b179f582fb5f195e99ad13f84f80da64357223e346a6e9611e6956afc1ef4ffee5aecb08f3c7ce4764c2cb5a29a01d0400f6237e4560cccb36e39ffc62791a37333af881984974ff142b2eb7cc6a8b1051054f2c71fc0d3dd00948d2dd8b3b3042a456fd5cade1b6c1b19f10195f18817799e778f9ca7f8514cc738cbff7a86ce13f3f68d0f0290aec32c6f4cf21862771da3532e6545a5f452d2d5da0531e91bdc961765223203d5df840220fdd8c49bbb500e3e4516fe7654391985ebdeb0e563ea0cab5b08d34d456e4652c21b8d55f2c162aaa401082878ab26ad0b32c2494d636cb0ce0317286e727e404d5379c3cf092e2f90b0d6f2fd6899ecf61f47646b6c0317589ebecbfa1015263a4b4c5cb6e9fa0000000000000000000000000000000000000000000000060c121a1e232a34',
},
],
[
'102',
{
- address: '0x20f3531Ff6BdBbED17F5DB48d1129f5395011b79',
+ address: 'Z20f3531Ff6BdBbED17F5DB48d1129f5395011b79',
seed: '0x7815f4ef272b06985c8089e2c28ff8076fdfa9feed8cefdcecbfbee3d0b52cbddc59fdb1226b95292464567b9fca978e',
data: '102',
signature:
- '0xd88a477c7abd70ed2d28970da54c33037cfab34efa7ced8c4e682c4fe623f98ce6e5a218173622f1ee1f71b903064d148f9dc40a4f18fb2db3794f05f35078d9e9d648fa67af07e1292159589b12563403e2c52f9734c54e9ba7f294c5349a530fba8beedb53b8f3ff8deec19ec273d604d2c6ea680d0f6943f609bd4c7aea62f1f1416875417582e542ddd8a1e20ae2f78d9f8b957d43a1c5322144ea8b02f0c76bd4cd8ad66add0d6e5cbe8a8c507f6320204ffc0a5830e73c2f204dbb486dee2cba896cab7c12b6ab95797af8b9c7d7c627f4fed4e1e66d86edfee87cd2149a41eab5c1c70552bfc668af84af10d4dae4b76093ac7c7f8870da513bad4cb164cc7c7f9653c300b773156d7ae002970b59b2353793c10cdefdf023bf7b49baccb086fb87a4f4a7bb5833fd6874cbf41e00d9ab03bbfd89ea811b68d823df2aac73216c6a94c084408c0508b518fa924bb17fb368fdeca3a5ecf41447525ce9dbb1fd8ffe4a8c14c16e265677df0890629ed33cc4c67db56af4d0721e2fa29f9263349e78097e3a4d2a6a34dacd7f851d6c310784f9ce63579c53bfa99be23c415341b31607e4d6bf7628dfca7f548b085dd05bba01de3ec7301a5ed671f1968487135bd1a2dc0295fc6e396a7d78d41c34598fc248da2a5fd5b75fe84c9f007624959116fdb19ef29c71fa5a7ef6337db42fc59a7d8d553050de33bcc75edc066f1e3cd04f1ea8073a60ea72442b19a014f43e85170463d75f24e89c277fd4bc1e8c855378a592734ff961c42a3f02007c4a079ce2282d380bc3e9b61a77aa45c1618b68d51a2f65838d06eeb2e2c86a40e0ad83530e5394a73bcbc8a40a175c13387633592807d99e1e5a16ac52f1c63880dc5f5c92f64fc8781caf16318e1ff18c38d5fd36879d5030b658f895f141268ee33b654d8fa9276ef11c52b134301cc49e0bae643692b2abce71041c8bf6659d34f1e987dda4d96002a60175b4dfa5ea88327e7c35fb357bbfc52a1c8bcfa7ab5cd5d85a5025e7f4c302f4a77fcb60ed491d6ab6b65c6de27289645b9b490e087e4bd4b3a6afc8cd24755355bebfcd30f027e5a82f92ab1c02ad8e6426e40ed95aed162695884214e917bbe1e6f9d36209a8afdf515e1c44a11c9bb5ab694be6c4470e44bdb55da569238d0efc279793fe0fc105297372cc4dc42005a3171adc88df745ca66aae6c57cf51c7b21e9a5efd7c42003267af91ecae1252ee9eda582f6bcfd46766e00f1d7886e718a6b266eb91653a88569371d58e5f3c06885919362ab3e64bf1e28fbc4c6f0f54a640c34a324a5b6e90b0185241ba44d7c320c034e0941b37faca4f917b66622599f6c3ce5262efe98ae250a4b9f5655c1d9976784e62a15e74ff427e195585eb6b1405a74bb6eca25d449dd4d9bdc40d93c70dd449872cde490291f5f2e979fd9874c5e681949e0da451f40479685c94325a97f59afffb11439f891bac2775676029380cd3a82e0f04c3d96183e833102b630e3e15f29239a2089d59afd7b4a937d04b9ca8dcdc2a45aed7ea766989afdd08f65bf9bd9fafa136ead0f2884311704551f3124dc4e14ed732ad9bb8ff53b0c4f6ef0c75cc69c752efaf0e0431bddb2038bd8a66dda62b175f741cbad0667d53eafacf646fe1842746d34249a294e6086a1d17494ea230324055ad829da44f08b582b6286c41895ae8c08fb44aa4ecc6dd31997085521c4e34d9e1a45274aa49894ad61b0fc8a29abff954bd21b6285c374480694979ca62ed3f78f0b1ae4a0ce7aac39858649f8ba6ada82a260ff159f65873b14d12710ffb0354ad5bed4e2f33e1f3f3aeaf8a158b54d9803cb6f8c2797d7966b987f1f1ab9a81e5f4bb90382a950d97cb0678ede36690e15de6e90a694beefd33920583c2c15ebb00132e6d1b1495ba288b3b6eaefd9add13de4b7f2ee34ef5ad8cd25caf1b6d64802949e18baf1a39f5733982e8ebdaad1f343bad5d7018539f211921d88eea5c2a5e1612e7baf50002e65cabed950acc599e8bfc6dd09bf38bcebbde26e2e2abf63d543b497bc9562fb0ac0bc3ec777ed60712b8ff67678a0a5520d309a76fe9bff6acacae6fcdcdf9c91c6c59428dcfc8db6430fe40faea449b34d173aea4e2715a0d192e30a859a1823ec5de4b596ad55c6b634547becefa3eb00a7ae059082d681d03ac28d44cbcdf4e45c6b7f1926f6575ce9fd77f97a2f29eeb64be54fe4565af00850511ecfa357d71d0970e2870f402e66536ef857afee3c8744419749eb71dcf7ef3be0574c18024c58223968d5a09b871a8f66b89f0ce66b73b616230dd7106e73f05cd66d8f71d9403d99dbf45f0facbcb32f1a60a9f6ca58f2c69d2cc7570b25921f48b9f9d77a0d693d74da54706958b4a86fcc27b38441df048f89c665f2eeadccf0ff0dc2c1524811b84a981f2bfd2ac920137a44e2c488f3ab70c3ec9137266cd1401d66135b54a189b5a77110af52a7c3a984f6d499a6c665a8cd8fa851b28b5d78b8c2707f6166fcc9760dc691685b0200da3b777c8eefb78e244b7325154f365c3805578a8f3c7149990c3db827fea354b6841026314b92d3763c5e0dd8dbcc903681475d020a7064a8b53e56b9d01ed396ae92bab9999b08a85686ed854c6c128f7c09c0b9cf2f2d1dc2c58995926f549abd5d5544e03a6efbc0d713125be72491f73faa851088344190cf15706a13300eb7d16b5e3df962d99056f4f35500c5c7ae33b316857febccbd8779b2179df0216a3a8c1ed4d26e8c2b7a71129f0f1c09c6a47d3c511afeca6017ce160526bfbe6b579e4691af29bffe2a30599c4341d4b096ebac89aac61731fea9471b6456bd0a125623b722b1fbb79ff6b2760c429e9697a07e8f43939ad5cd306bcaa0ee8e7685c0a3722615899ed5e67a0ae4f45ed54e8e1e23f11bce00500ce5b01b9d29701d4a8d7b88da42ddddc2a44c7ec46271ee9507115ad99a982e315d57946851bbae556b708f39aa6b9590c0af9f7c166a4c9dda95544736f58f34e89a771935debaf37615679ffd3d0bb4eb1d4012624b9c9bda37136849bb63d90eea67f800553870623baef1c18de526d21e3633b53ee65ad11c123fc2eec959066b32b486e637b96c847109fb70b32c21eeaff491c3531aea120f63751254abbe65316766c997aed86a515a88d6faf18d3ccf684709108db7c6fcca64e29ce080bd281933faee964259c6ba2043c3531f9816d56c3d6e098f5f8d87903ced4c676d03b360f115425ee65a2101e5417c612999b388e029022f78dd7598e8a76f4c63a444a0b20db4eff0ebc6af9302edec30f35b49930f641f02e57b197a106d016cafd779bb4cf7c44f289cc028db73ef90d057d9d277080854882afa80370fe7ee6dc3a17134d58e6fb7ce5f84c7b9b013fbf4c468828293de0dacbf00ec46c32c0bc3e715e9eed38b944e4226c92f43250beef5e3363ae1850abcb4528e8edb0d4674f6a806879a3a83eb02f76e32579d9cc021bd3906cf9aaa20789a206a7bc2b45f35394b2f808d6c4e9c4cbc8a8e950a4762e40fd1f2bbe534c1e90f6f899f7e15e213b4bdd84c53bd2bb1f67c98a05bc60a6578f2948c5719214b43f1683db7855b49f7644b58f5fd0393abc585a73516737d9c9e2316d11d635e0f09076adc03e0f9f497160f2c3138d195245acfbe4ce5e24e33dd309b709b1afdc3f4920a605c735d12b4e4e6546fc1caf5d113031567e5c89bb6c95b92f7ee66ca1eec5917152b2c4af68c86cc1b985c5bd4a631ae0bda9d811dc673225f4af1d0c040f0ddc503e37a5384500c5ac54779f21544cd2216d22e3adb39c7d81f863eece70358832bf2574e1be5c18dcbfa5d91cf0e88ccc674188e83c8f12e80aa0fe0761086808696e09f900ed98d5808c5453386899ac752733de9db509c363aceadca8c6b3fea53cba1b0ca9947bfaea9f188b7397e910ed8f6a59a6da296ddd8b9926c57b316c17e547f2a1da77655e8118f4709f0bb5669f267927590371413ed50ed005776c740138dc575036bee15e5a028a0254a4b7c9566b2178bae81d212def2a741e5a022905c3e31daec2d01e8690b3cb4c31f95c3362f93b6153bd73c04063e1f8976283bee4fcd4b7d2684b93a37acc26919c378c98cce48472833cf33ab4da72d67e6f8d117042fe34dfd629be04f5be6146e34aaa7b70f8769d754af7c7a9302eeccde28d3ff96fa4b525fcf32e9843e974172dace2c3f526f3f6d482bb9a61df2ee208d3d8bebf3bdcbd9e294a22975fdea2625fea0e0865f4f38ad045fb135c30c9a4dcdfcffe36e4183eb0fd35ee1d7b6a4e3d11d5e63af59e55da0efb375a1bb619673968d54146ca1fe485217619c7f1df44b317819b228a38e4e7623f15c96b07a096d3323492656ce2a2aaf317a1d3b59e915935b38485dfb90d1494cac5f79d420a4e90735c766582a65aae38eef295798607d31dd07dd22ef3ad76a9db472a457ba313fc8456e021aac84a0414a2a2c16f10c365a50cb544506a3f6addfc9680fafd2d33934194a109d4c4a500911e0d599a0ae4e0c89e5e0ae5401ddc0bcecb8d2b3e13009be127adf88106236315f348e0202a5ae16b63c6cef1695655de568f4ab613fccb7e96b56926a183a48b7a6d848d093e12dd7e6871299eb4e4efb122590e76c03004c76dec3bb408ff851662007445e2316d7887ab556827514c06384e744d08f1846aeb492188609cd8e506f075650805d93e19eb0dd7ab6198aab02bfe11c8d37542d87677e7780d6aafeb791173fcc7669036fa29576b549bef69fd34cd7cc9ceb38a71f3f78e9662efb03c6535947a6cf35fb229a07d58d61b304c5e589e436b64ceb64938c5e77126abfd449f0af1899958dcac386835ccff931ed476f754c746619b603720c3486fbb2a72489b85e35b7506fb7b5574b8fa345aa2bd50c0831a2bf2ff331bed2648e2715d593b79eb78e19c4b4e10798cf73738bd056af03da7a70a3796fb72e5f47d7d4f538fd45dcb617f51c4fad154cfad46c813ee15cca44d065897f4649470bdc0cf74604bc4d7836e2c1a52fb919d8378250d773e25ecad9735ac0167a457277846e1cda469e3f082d71ef59a2c98d49c4a2c8cdc04e93659a74c75caa3e7c6260c05f046ad21522cda077150437f0e9613ed6d142a4d42cad707d697a03d272dad50cca68733db1e8bef9af02dedfb522c517ef93ede647863a5b6a96e9a50ad7c23400c0cdae3ded290d94142a2dba715911c1f95d919889bdbb130a9095e66588826888b2bec161a0edc472a61165706270f5e324d7c2664adf6887ed300f48bfc17c8068569f81bc710f50ec9a6e12e7098c26f734479581e3a6de6f626a353a9f4fc1b3f9421dbf0366a14ae2a9fa5299321dc176bd810a713322a06a13dd6b61fc974f7221f7072694790f6ae795621976aff6c5f42bed0e37faeff34cc026f833c2ca6eac5c9f2a52afc5ed62af20d6eca17d701ba61193c483eaeb7c9e68d2642bd122008faaf0b74a835535480ec03292c4615c5f11baffe69caacc9b8e3b4224aaf9eff1384df505cb28aecebebd4546f69a8b09b4ccabbd61c0cc23d0638a009778fc64c8eaaaf24043533396afe60a0d33396c597784519fe51f40e9d4735fb5e8da1b7b1a9ef29e5bb3c904da8cb3def402a5a5927911fb8f75a54ab42ad3f1d5959493fff185fef55fcb44e2ce38f9a4c0f964cbb96cf80634f7fc0f30c5a2c7d7dc235cbb7bcc0166a3e625b5d7386c19040405d0f40c76932bb47e91983562c2bd007f014c4c44abd28acadec9046790cbc580d50c7c4de2c49f6ffbf65a2eb9af34aaf78db939d4460975844aae99a10c0b2a93fb2722c786ef32c8de6b08e94f2bbdb95e574bf34af7e93f0244e7716a4a7697ea033961fcb748b7258e71f84f60eb1e56b94d1e149eadfb900680e57d5f46529cea28475db71127325eb7e938b8e66eb08534b4f5aa55d28128c4cb2f7d50de07f0a81d70041f3859a7d669de518a4a61ee7b829afb0e904cbef07be043b99854d54714a6eb3f997676933a383d8fb62b2b7419e7bf6eaf4a4cba4ae6e8594105b727f367a2958a7e1360c9ac8a0cc727402993e1f0422bacf2af567cf735340d7d7b2cc7276101fdfcb78786dd3f025ea95adbf973cb812501706f5446610208e3702cf2dcaa35222bb30831c4153d2fbf7e17e87e8497f59ae03488a82e77c01773d14cb933d00a0080ad6fdbeaf5abfbf0f37d4c12d9cbadd167b421d2e42bfbfcee17b6d8b413b9f025582c6afd5b03fcd32f748a153417d6dca58301800e339eebb5cb86b6d6e179c02dafc5b236283b8549d01f160699d15ee25ebffd0069b3dee7c8aaa0a0c12254484939ee4effd0a0e4a4b66709bcfd8f54a5573777a879db5bcc0d3f21b3d456780acfb134872b2073453588af344475895b9d2df000000000000000000000000000000030e18242b2f353c',
+ '0xecb7ff66d64c8288eb65d97bc4b51ffe81fb0d20d23ca2851091c8cdaf604b25d4ee7c0d96d7442d860f85bb13dba5df16699bca9f61896ce749416d303c03c153bc8f6c7c2ec6c5373e709ead8b6e90d048ad5eedebebcfb1bdfc63aaaaffadc3137e55b995b33502628a78736f22c3cb29da401dd5a39b8d9bba2c6cb25657f4d1a5704e09142b5ca1891ed81c0c9f57daa2f52f471de505f73785d405a0d37a5f8c80233e8cfe96c0aa0f7294414982a2dc6945e69a9db2ce083d35220b950f8c9ce5480874265aa495e4169300f33b25cfab21001e66d521307cfe04d85876a92dc2cdb5d53a0fdd2a81e3ffed6244ce6cf3616d37b9b84c8391a9c7e4ca60cca86c0515975265e62ca159cf22bdd6a5bdb0e4c2b00a5524837ac0c1d7dcf95ecef42278548735baf8993838020fdefedb3c4f6f4338d581e737c59438cd52ea9c9f7bde33d9fdef4d54115c120b4498c075b9e89c54afc65cc5e4dc653d8f390bd29be9fd1102ff28d9a794672fcd48ba65810e7079575ea315cc5d7422d55e5b3872f6bc9f8c6477cecac17f25afcfbe437b2b2060f31ebb4b8e89ef1534ded6567c5dad7eb5ae42e5ed84ac3c23e45a9efce60ec0cf7ceb91b533a2f7a9f84ea3bfb39d436237e09b3563ed23cfcc301b039f15576415f4c10787c9325f69efb7a7d436da65d388045da5ecd74cd87d3b26820bed3d778f260ac7bd6088f781b7d39b49c60d394351670698fee48379fa69e28b86dd931b099ee08a9b71e90fcdafab0ad18022c222d28e384f1f6df0a6ab5d1bda68ed3ff1c858ab094d1b57ee4f40c69b9a1f5e6e56e7597c4b50d732af5188846d07d152a1cf7fa3b01fe724349b173182877e6185d58969ebceca76305c20ccc5b2e61c7e930e9009ea5a26d273139e1a4b5e2c74fb4de9945db85b1d4599b3ef3fb3c20f10ada63182150da094160dc2b41264ed6b8c4f3bdf49bac329c516a3a6c787bee17298e027fdbbf1076252fb98aaaf42b61cb9fd7a9b4547fac8c70f2676f6ce7257386efa65dbc1e7ddc7af9d9cc5829fda3df013b3060cf6ee1efcd7cdca13789990188c0148c373b2c75893753ef7d2d812ebdb01da0dfb5d14d012b3e910cd04f8eb5c9a2274af8ab584288c016f4e2583e7cae75912b9713f4b2833e1e85f289ff16c1f234492f4845cfb24d00cceeb87729575beef5875595f4feaa21de80beb643f3781d9231e3224a679fdcbede9b818e36588ebc5d25c71bdd352b644f70a5b344af7ad026037aa530e267b9c0bd35d5ca82450ac4a63b4630a3cb77c217b5d2fb1df2cb239444ab5f4a624da4c79d7b62e4633c4930db5e54c160765cef7f58209d58c89d8b2150e8165c4af08cf8a06553f21e6a7f3e8ec85c9d323caac1473ebae03348f79d1ba934b0a11a82a8b6362932c2862e1de087b25aa45f84f9b74a2f7173b5eb0b34b99bbe542d015288f5c3dce23c21ca6b6095df257e2077fc76e7f0547aab10a35f30efcc878cffb57e7c8e229463677c4f36bc8e911a2a0f4293cbe5ec42acd527a3c97fcc539273c362e8abadce93fd0cdec284610a56f355a4893f7b63aeb0bc49d7c120425bc41ddcad2a59e0c5b6c7e0a7d8e3c5c858d4b9597cad597be924128a272156d1a502a1508efc384a056b35bc08357320e56617d37e1a7b4976615b2553aeee0930e47120b6b615c10789aabf9807825a247858847549b3d5b30b3b5eedee25024dc4082cceb55ef94db5e517884bc8dea7f6622d8ea2538db5901efff56c1e0e932aeb9a910d98f324f55c6880074cf5ecb09bcd69efb805224a3f56b78ad6e33c8729ccbd76afb129421a504b17f19641bd189e7f2b445e4f0e8250aa62693d848320eecfeb58bde73146d05986af26daf269708f0f8f4a777626c620b391ee3b2978349087fb2820da9c5ee27285d3fb76a82a19e06644b7f532401649349ae5d50ec3c7d4f57afa432f12c7d52377af4c37f06c74dc9c48d149c539667644195e01dc446ed6fa5e8f6bd22b47f6aa0c704cb1b275a03e744da1deaebae17b6f743b7a977e0b5991de2411f9eedd376910accd6b18d3bf786fe5576c69f664e5df8db03465339590acbd0e7e3b0786e96cc080a3812cae9e0c8af83aae5fe79e9842242f7158daae255b58f00374594667cad4c98d78a7578f0f0eb180f2c9951eb0dd2251918d3311f87e76cf401c6b442d8faa751639eb2e3fa58d7a189d6ead302038b225317a88e6b5d4c99465fc5016d006adcdc35f05e5266ab64ac24b48dfa3ede967eb776db51f32699fd6dbba8f6444d900adfa5aa7ce39fd23b66f7b0febedf3664a1abcdeb35e26a90273141e5f9a0bae4a7db58b9b462737bed1a0eeded4e0dc373dce493bd6effedaf4c20b20048186829af3bb54a402b0948485930c1d417cf93370287c2daa4828a3f5fce082e5b89d47326ff3fa8e7bceee6fed42c147994700ce2a5cb94baf894d2bec2a7b73d72eeacbba584c59bcbb7b94bf24093451b8a994651e4a8f3bc3d20dbfedd6e9b0c124e8e667accf27869bd205004eb104d5a3f0b656217797d67e1073f4bfce92b78fdbfcc93a9422da9640384e02558283cc4a4f77c534b677f57f27f267f1c56b283c5ee4efb4e99b1a4a857d59661982be40c6f93751d60444d918d0030133b24feee6689786bf5660520963bdbe8fff9205cab93468428813bfd69c8bddfdf255b25f043eb780f42ed868d65b11d6487df629a1703d7f76fa1dcb1da0b7c0ecdee8f99225e41bb489fd2e352d2a24f42696c9e050e4a64ed39c5e35ffe1c0b7b9007d7b613a3d156e88f79b30321b464742b1ae3c707141860f37a9de24f1bfb306935fdbcfacd952fe82e5033436cb45188b5bb0538562a0960749901d341a51e56cf23310e9e8a008c3459a418ab04c997dc60e5daf58a8da93e75b9968e68249c2eb2b2ed26fa898a03015cdb7fa29f57dcae30c84aaf6269b4a48c3b549df83d2ce087934847bf417630cab32195bb3c943488dea37510f313458c460f985a839e57875793cc4c6dd62e9d9e55752c6a30643f380691b1b2be1d545256d4120f8c75c55621fec14b1b3f1e1ee9e6fff8498374890717ca2cf66f9f917a80ad620473706b452a47756f168f9419c84348829076adc2710e5a6501cd48f01e5130f5f94bd7246a7a06024230fea8807a5aeaa996ec3894f5b7c31387f61d5feb8686866b40ed562625a2c7299ddaf75afb07a0517981e2f5f405d63f3a7626e736d6470eade76eb7713138b6f44d133e6b453b55b9a54fb72b88c7ba302768a75290f413a3a405c412b916a60302bcce0e9fc21e55f70d1abddad5d26796c444705800495764614fda51278355c3c8a554599aaf244acfead7d3804b464aa3fd16183b4f83c1b923e754542331176a07f84306b45762146dafc50db2fca3def49e5493c97ebe8f7d9af019a46a6125d353524ebe89f8a2a2801de7d9a2026d39886196c26aa322b7048fc46e2a9d70f9da1d56d1818be40ad98125974ecb622a4f9902bfd89fd2d485f8a13616bec74970a5f62663cb34ffdfb4b5b567349df2e80545bb1420937b6c85dbe8021b3826ca7ba1c1a9316747704ac1f6c019432e5057c6d4cda67eb71b5450bff0c278dcec9693287b2f0339ff92addcf481ec0c3c8ccf174b65d63a9348ad26665de0c44a01e70e9a3e68e881e0c339f2b04eaa91b76c0e6cd011b63349e652091e71226a0973775793611ba059c1b21d548614495e4d35893711e47ed6c93aed54923a11ddd618565f76a0ab925ba2e3977b35e19b2c32b8cc4d064bef9158ab01354c0e78779438591f7d6809ca9305c3d9934d723007c403d8677ff98a48edd066d70d832b59356ab2a75714a494c135ae3fa903b0f11e644ee89b15d1b7dede3036128bb05c137f3a700eb92659bcc9418a4b33ae229f9f0e4218668436089c83d359a072723a4cb5a5c3aa3f8868af21f92d5c00fb407c7fda20f29b4444e0acf291cbef309f2b532db7c93066d6bd152fbdb3367b8ef913e8d1057f48162d69031c854ab90418fdb6dabbb044cf3c3b087f03588b4ed1026940a1f57a2c806facba6e72cf137eac5d2ff845f242e97e031ea15688b9d7276432f3a15ed83374921c7d3f331e250a8587d74ce2e9b14027a803d02a2e62372cdb57a5f82b6787cea5ab383138cb197dad0f7672b1e510d630616ea86c3854a06c822d18a1fb00c2c601c16a39d24bb992a57f22323f354f29f75cd5bb060a760c34637e6875f132afc2619c1d53f19f6054ec9019838b0ecb7359febd301244a836c2aa6eb75ec8dd916599377b2b968314bbccc8252aaf5af6b4539c622279115c88cea8cf8be5634acf8482ebaa2a97994ac99912373ce3e58a9423a17e8d32313c43f51adddf9f38b42c841194064dbbff0b1bcefb93464d33fec99f24ffdf0da9ff6ad4b0825207856e65fb8a835dae781e88c95959754d7b67e75fb93c5265000cda7a44642e556daa7921bf304a908b6677d23bb0be6211dde17da4f516f7d231f72b077ce32d9545ad503e6ce99f1d6ea0e5565ad1e4099aeb1a8b9f0b7084d081eab5adea4988f8823e8d77a31d44fab640e3904ddd4ee584143741a7f0a9bb785e619da06bd5901a9ae3549c9e97d959bf09aa1943a67f289465ff044e83650991aa972969b11cbe79f0baa15adb513686bd43bff5725c7102584dca16acc3071f8d4ef629d520ff1bfd5fe8e78fbfeed134ce5267e5a84e1b8effee34db415e767cd83eda2084baedbc0be45484add1e59c5355176f3855665eb17b8e81960227ffd7050653081c62bd45ebf6d5abbd3c510cdb9c6033733b4d8b8388d36629e590b1d9af05f5378a1239efe44364accbf1e91e19ecdea20d4db8178747509482bd0e5f0b301e71d1f2d69ed3328d75f56d7c1ccac152c3542df9ede6aa9e8e40388f025497e90b10b1b97901a7281f350d0d6e6fc6f5b5ee6c33f7924ef27e4b184c78c0a36136f9a9dc15fd262d9cec9a3a9c6c62d5fc228197575fc05d154a5f648c445c24bf9ca988a972f0d84de0a4ec8300f3b185937915da7fd3cd3b101ca6f70c5e912b6aba34ec845ca977ac6724aaf2efb2df6812a483bab9310e8eadfcacae1eeebb4bf507486c9459e129e28af30d4ce06a193ba42c0ff5370042ef3fb87d8cc7c26fc50545de178f000a0b6e2b5e03769eb207153d2b3ab94c24726ea5c27dfec66c64755bc2a1dd36acdb75e9a86ed55f9164655d9777227aec5b5acee0f2aeb921c469c99bfe249029d336414ffee41211a50e629dd3a90eba8fdd999538738879f20096f47ee9671e414cd4c18b649b61668156149404b9ea117752092446a17d5bde63986c5e9fa97ffc7771b92fb59fdb1dd6b4f6e280f7c008f8dc7c1c44fe1935f67447b9de2dec4e12dc917b5b0e0f93db0a17c08218ea817cddda11aa1bd490afe1285f5b3f23d090c557ae9707c68fc97cb22ef451037949dea1062a45cbd9cf38078241b00bc289d327d9d73a79ec5d9715525cf8b03ff7ceaebe134c39051c470b9d14d84105e9337b22d34b2e2691a9010ae5022ce3cee1f136f79b834913762ff9a4b910aa48085da347c7bde125124ddc7bf69215ee727fafb0a5c4c1e66b7416de3d5fc9d8f588bf35d146884f710275a3a0c490866b0efee58b1d15b6f35a618673aaf950f4995b63266cd43a067e9ccacfe4d24158a640ef3d3bcffb1d235345d7770c98c32220a23fef425e4a40fdba6e3e8450fe510f1532eb542bc0795230c2c4da272becc566925b284a333198f6f2f7678ffab67d8d56a73b3efb9b5a9a27214cfb919821d1e407dbb53d3bc404c69131a58b5634ce5837f1a3d455a69ec2e4e09ea18ca6397f92e8e54f5e58e660a58a7d2846b666be3dd360f794636c4bbaa3716efa386256ea24d2e61594c1d92edadc4b2078fca81c9ed265426ded3e099a70d9ba950a94c3538b3a4eef6768bdd15b2f5508b0f0468700c6aacddcab5c86b5f369c7c5fc683a2516dfcc736e6bb1033abd636ed6487d6d4e8d0f1be1d789cefdd2ee3696c3f53af1c7d7b133384b0d2679908fa39e9fa9d067f8d9a64689a6b4fbc04d45b4aa344d4f35dab7ac84ad6acc8c4c13426c88ecaf4ec6dd61af876691fd2051e7e20a1a60bb84fc3cf3e1c1220935e4ddb9c3bdf7337ae6a86f6d36692fbdc895c9ba75d76d8101f583aaab3ebf03ed1ec92c13d1f4f3517aff4fb10a6eedc734519440336d879bbc16a75fe26beb3c1b59af8b0f5569c877ba6b954e744e946abf258b4de8e1975d82bddeb62b6fd4029cb9d82b43b3359e9653682e58d84ddd83e0f286fc0e2d760272e56f0bf4141b1c36acb0b1ebf914181e585e619e9fb9e8ff1113294052536b85a0a8eef629576f979da8c0d4ddef2cda28293ca0c0e31735434a54d1d3daf5181f364a566a707993a5bfe6fb0000000008131f292b313a47',
},
],
/*
@@ -146,7 +147,7 @@ export const signatureRecoverData: [string, any][] = [
'some data',
{
prefixedOrR: '0xb9be9700e1c7fd9c3e5e1b511de5c6f62680480a7f8c68962a74375cabe51c18',
- address: '0x54BF9ed7F22b64a5D69Beea57cFCd378763bcdc5',
+ address: 'Z54BF9ed7F22b64a5D69Beea57cFCd378763bcdc5',
privateKey: '0x03a0021a87dc354855f900fd15c063bcc9c155c33b8f2321ec294e0933ef29d2',
signature:
'0xb9be9700e1c7fd9c3e5e1b511de5c6f62680480a7f8c68962a74375cabe51c186fcbbcf5b1bc357d3e56bef2ef8a1b3ad7e48564dd886d7636eb1c18e1e41f1b1c',
@@ -155,26 +156,12 @@ export const signatureRecoverData: [string, any][] = [
*/
];
-export const transactionsTestData: [TxData | AccessListEIP2930TxData | FeeMarketEIP1559TxData][] = [
- /*
- [
- // 'TxLegacy'
- {
- to: '0x118C2E5F57FD62C2B5b46a5ae9216F4FF4011a07',
- value: '0x186A0',
- gasLimit: '0x520812',
- gasPrice: '0x09184e72a000',
- data: '',
- chainId: 1,
- nonce: 0,
- },
- ],
- */
+export const transactionsTestData: [FeeMarketEIP1559TxData][] = [
[
// 'Tx1559'
{
type: 2,
- to: '0xF0109fC8DF283027b6285cc889F5aA624EaC1F55',
+ to: 'ZF0109fC8DF283027b6285cc889F5aA624EaC1F55',
maxPriorityFeePerGas: '0x3B9ACA00',
maxFeePerGas: '0xB2D05E00',
gasLimit: '0x6A4012',
@@ -184,29 +171,6 @@ export const transactionsTestData: [TxData | AccessListEIP2930TxData | FeeMarket
nonce: 0,
},
],
- /*
- [
- // 'Tx2930'
- {
- chainId: 1,
- nonce: 0,
- gasPrice: '0x09184e72a000',
- gasLimit: '0x2710321',
- to: '0xF0109fC8DF283027b6285cc889F5aA624EaC1F55',
- value: '0x186A0',
- data: '',
- accessList: [
- {
- address: '0x0000000000000000000000000000000000000101',
- storageKeys: [
- '0x0000000000000000000000000000000000000000000000000000000000000000',
- '0x00000000000000000000000000000000000000000000000000000000000060a7',
- ],
- },
- ],
- },
- ],
- */
];
export const invalidSeedtoAccountData: [
@@ -476,11 +440,11 @@ export const invalidDecryptData: [[any, string], InvalidKdfError | KeyDerivation
];
export const validHashMessageData: [string, string][] = [
- ['🤗', '0x716ce69c5d2d629c168bc02e24a961456bdc5a362d366119305aea73978a0332'],
+ ['🤗', '0x5dca29429d962d36cf39f6eaa8aea2aa9bf584bf3a6619ba02e4a976713ee419'],
[
'Some long text with integers 1233 and special characters and unicode \u1234 as well.',
- '0xff21294f27c6b1e416215feb0b0b904c552c874c4e11b2314dd3afc1714ed8a8',
+ '0x62bfdbf332b439bf3fdf4b09a59f79185cb3c7d4bf5608ac6e46f92e8639a19c',
],
- ['non utf8 string', '0x8862c6a425a83c082216090e4f0e03b64106189e93c29b11d0112e77b477cce2'],
- ['', '0x5f35dce98ba4fba25530a026ed80b2cecdaa31091ba4958b99b52ea1d068adad'],
+ ['non utf8 string', '0x3522c3467a6b9a063d7e3bfd9cab19e572e8abcd7023a7559f0d329d655cbeea'],
+ ['', '0xf4d7cd857bdb263484abcda09985bc942f6a7d986544fc3202d7a92d20173a54'],
];
diff --git a/packages/web3-zond-accounts/test/fixtures/common/gzond-genesis-kiln.json b/packages/web3-zond-accounts/test/fixtures/common/gzond-genesis-kiln.json
index ecaad9b8..50c7e2cc 100644
--- a/packages/web3-zond-accounts/test/fixtures/common/gzond-genesis-kiln.json
+++ b/packages/web3-zond-accounts/test/fixtures/common/gzond-genesis-kiln.json
@@ -1,789 +1,777 @@
{
"config": {
- "chainId": 1337802,
- "homesteadBlock": 0,
- "eip150Block": 0,
- "eip155Block": 0,
- "eip158Block": 0,
- "byzantiumBlock": 0,
- "constantinopleBlock": 0,
- "petersburgBlock": 0,
- "istanbulBlock": 0,
- "berlinBlock": 0,
- "londonBlock": 0,
- "mergeForkBlock": 1000,
- "terminalTotalDifficulty": 20000000000000
+ "chainId": 1337802
},
"alloc": {
- "0x0000000000000000000000000000000000000000": {
+ "Z0000000000000000000000000000000000000000": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000001": {
+ "Z0000000000000000000000000000000000000001": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000002": {
+ "Z0000000000000000000000000000000000000002": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000003": {
+ "Z0000000000000000000000000000000000000003": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000004": {
+ "Z0000000000000000000000000000000000000004": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000005": {
+ "Z0000000000000000000000000000000000000005": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000006": {
+ "Z0000000000000000000000000000000000000006": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000007": {
+ "Z0000000000000000000000000000000000000007": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000008": {
+ "Z0000000000000000000000000000000000000008": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000009": {
+ "Z0000000000000000000000000000000000000009": {
"balance": "1"
},
- "0x000000000000000000000000000000000000000a": {
+ "Z000000000000000000000000000000000000000a": {
"balance": "1"
},
- "0x000000000000000000000000000000000000000b": {
+ "Z000000000000000000000000000000000000000b": {
"balance": "1"
},
- "0x000000000000000000000000000000000000000c": {
+ "Z000000000000000000000000000000000000000c": {
"balance": "1"
},
- "0x000000000000000000000000000000000000000d": {
+ "Z000000000000000000000000000000000000000d": {
"balance": "1"
},
- "0x000000000000000000000000000000000000000e": {
+ "Z000000000000000000000000000000000000000e": {
"balance": "1"
},
- "0x000000000000000000000000000000000000000f": {
+ "Z000000000000000000000000000000000000000f": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000010": {
+ "Z0000000000000000000000000000000000000010": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000011": {
+ "Z0000000000000000000000000000000000000011": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000012": {
+ "Z0000000000000000000000000000000000000012": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000013": {
+ "Z0000000000000000000000000000000000000013": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000014": {
+ "Z0000000000000000000000000000000000000014": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000015": {
+ "Z0000000000000000000000000000000000000015": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000016": {
+ "Z0000000000000000000000000000000000000016": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000017": {
+ "Z0000000000000000000000000000000000000017": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000018": {
+ "Z0000000000000000000000000000000000000018": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000019": {
+ "Z0000000000000000000000000000000000000019": {
"balance": "1"
},
- "0x000000000000000000000000000000000000001a": {
+ "Z000000000000000000000000000000000000001a": {
"balance": "1"
},
- "0x000000000000000000000000000000000000001b": {
+ "Z000000000000000000000000000000000000001b": {
"balance": "1"
},
- "0x000000000000000000000000000000000000001c": {
+ "Z000000000000000000000000000000000000001c": {
"balance": "1"
},
- "0x000000000000000000000000000000000000001d": {
+ "Z000000000000000000000000000000000000001d": {
"balance": "1"
},
- "0x000000000000000000000000000000000000001e": {
+ "Z000000000000000000000000000000000000001e": {
"balance": "1"
},
- "0x000000000000000000000000000000000000001f": {
+ "Z000000000000000000000000000000000000001f": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000020": {
+ "Z0000000000000000000000000000000000000020": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000021": {
+ "Z0000000000000000000000000000000000000021": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000022": {
+ "Z0000000000000000000000000000000000000022": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000023": {
+ "Z0000000000000000000000000000000000000023": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000024": {
+ "Z0000000000000000000000000000000000000024": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000025": {
+ "Z0000000000000000000000000000000000000025": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000026": {
+ "Z0000000000000000000000000000000000000026": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000027": {
+ "Z0000000000000000000000000000000000000027": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000028": {
+ "Z0000000000000000000000000000000000000028": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000029": {
+ "Z0000000000000000000000000000000000000029": {
"balance": "1"
},
- "0x000000000000000000000000000000000000002a": {
+ "Z000000000000000000000000000000000000002a": {
"balance": "1"
},
- "0x000000000000000000000000000000000000002b": {
+ "Z000000000000000000000000000000000000002b": {
"balance": "1"
},
- "0x000000000000000000000000000000000000002c": {
+ "Z000000000000000000000000000000000000002c": {
"balance": "1"
},
- "0x000000000000000000000000000000000000002d": {
+ "Z000000000000000000000000000000000000002d": {
"balance": "1"
},
- "0x000000000000000000000000000000000000002e": {
+ "Z000000000000000000000000000000000000002e": {
"balance": "1"
},
- "0x000000000000000000000000000000000000002f": {
+ "Z000000000000000000000000000000000000002f": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000030": {
+ "Z0000000000000000000000000000000000000030": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000031": {
+ "Z0000000000000000000000000000000000000031": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000032": {
+ "Z0000000000000000000000000000000000000032": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000033": {
+ "Z0000000000000000000000000000000000000033": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000034": {
+ "Z0000000000000000000000000000000000000034": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000035": {
+ "Z0000000000000000000000000000000000000035": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000036": {
+ "Z0000000000000000000000000000000000000036": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000037": {
+ "Z0000000000000000000000000000000000000037": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000038": {
+ "Z0000000000000000000000000000000000000038": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000039": {
+ "Z0000000000000000000000000000000000000039": {
"balance": "1"
},
- "0x000000000000000000000000000000000000003a": {
+ "Z000000000000000000000000000000000000003a": {
"balance": "1"
},
- "0x000000000000000000000000000000000000003b": {
+ "Z000000000000000000000000000000000000003b": {
"balance": "1"
},
- "0x000000000000000000000000000000000000003c": {
+ "Z000000000000000000000000000000000000003c": {
"balance": "1"
},
- "0x000000000000000000000000000000000000003d": {
+ "Z000000000000000000000000000000000000003d": {
"balance": "1"
},
- "0x000000000000000000000000000000000000003e": {
+ "Z000000000000000000000000000000000000003e": {
"balance": "1"
},
- "0x000000000000000000000000000000000000003f": {
+ "Z000000000000000000000000000000000000003f": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000040": {
+ "Z0000000000000000000000000000000000000040": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000041": {
+ "Z0000000000000000000000000000000000000041": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000042": {
+ "Z0000000000000000000000000000000000000042": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000043": {
+ "Z0000000000000000000000000000000000000043": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000044": {
+ "Z0000000000000000000000000000000000000044": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000045": {
+ "Z0000000000000000000000000000000000000045": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000046": {
+ "Z0000000000000000000000000000000000000046": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000047": {
+ "Z0000000000000000000000000000000000000047": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000048": {
+ "Z0000000000000000000000000000000000000048": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000049": {
+ "Z0000000000000000000000000000000000000049": {
"balance": "1"
},
- "0x000000000000000000000000000000000000004a": {
+ "Z000000000000000000000000000000000000004a": {
"balance": "1"
},
- "0x000000000000000000000000000000000000004b": {
+ "Z000000000000000000000000000000000000004b": {
"balance": "1"
},
- "0x000000000000000000000000000000000000004c": {
+ "Z000000000000000000000000000000000000004c": {
"balance": "1"
},
- "0x000000000000000000000000000000000000004d": {
+ "Z000000000000000000000000000000000000004d": {
"balance": "1"
},
- "0x000000000000000000000000000000000000004e": {
+ "Z000000000000000000000000000000000000004e": {
"balance": "1"
},
- "0x000000000000000000000000000000000000004f": {
+ "Z000000000000000000000000000000000000004f": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000050": {
+ "Z0000000000000000000000000000000000000050": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000051": {
+ "Z0000000000000000000000000000000000000051": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000052": {
+ "Z0000000000000000000000000000000000000052": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000053": {
+ "Z0000000000000000000000000000000000000053": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000054": {
+ "Z0000000000000000000000000000000000000054": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000055": {
+ "Z0000000000000000000000000000000000000055": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000056": {
+ "Z0000000000000000000000000000000000000056": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000057": {
+ "Z0000000000000000000000000000000000000057": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000058": {
+ "Z0000000000000000000000000000000000000058": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000059": {
+ "Z0000000000000000000000000000000000000059": {
"balance": "1"
},
- "0x000000000000000000000000000000000000005a": {
+ "Z000000000000000000000000000000000000005a": {
"balance": "1"
},
- "0x000000000000000000000000000000000000005b": {
+ "Z000000000000000000000000000000000000005b": {
"balance": "1"
},
- "0x000000000000000000000000000000000000005c": {
+ "Z000000000000000000000000000000000000005c": {
"balance": "1"
},
- "0x000000000000000000000000000000000000005d": {
+ "Z000000000000000000000000000000000000005d": {
"balance": "1"
},
- "0x000000000000000000000000000000000000005e": {
+ "Z000000000000000000000000000000000000005e": {
"balance": "1"
},
- "0x000000000000000000000000000000000000005f": {
+ "Z000000000000000000000000000000000000005f": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000060": {
+ "Z0000000000000000000000000000000000000060": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000061": {
+ "Z0000000000000000000000000000000000000061": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000062": {
+ "Z0000000000000000000000000000000000000062": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000063": {
+ "Z0000000000000000000000000000000000000063": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000064": {
+ "Z0000000000000000000000000000000000000064": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000065": {
+ "Z0000000000000000000000000000000000000065": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000066": {
+ "Z0000000000000000000000000000000000000066": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000067": {
+ "Z0000000000000000000000000000000000000067": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000068": {
+ "Z0000000000000000000000000000000000000068": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000069": {
+ "Z0000000000000000000000000000000000000069": {
"balance": "1"
},
- "0x000000000000000000000000000000000000006a": {
+ "Z000000000000000000000000000000000000006a": {
"balance": "1"
},
- "0x000000000000000000000000000000000000006b": {
+ "Z000000000000000000000000000000000000006b": {
"balance": "1"
},
- "0x000000000000000000000000000000000000006c": {
+ "Z000000000000000000000000000000000000006c": {
"balance": "1"
},
- "0x000000000000000000000000000000000000006d": {
+ "Z000000000000000000000000000000000000006d": {
"balance": "1"
},
- "0x000000000000000000000000000000000000006e": {
+ "Z000000000000000000000000000000000000006e": {
"balance": "1"
},
- "0x000000000000000000000000000000000000006f": {
+ "Z000000000000000000000000000000000000006f": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000070": {
+ "Z0000000000000000000000000000000000000070": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000071": {
+ "Z0000000000000000000000000000000000000071": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000072": {
+ "Z0000000000000000000000000000000000000072": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000073": {
+ "Z0000000000000000000000000000000000000073": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000074": {
+ "Z0000000000000000000000000000000000000074": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000075": {
+ "Z0000000000000000000000000000000000000075": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000076": {
+ "Z0000000000000000000000000000000000000076": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000077": {
+ "Z0000000000000000000000000000000000000077": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000078": {
+ "Z0000000000000000000000000000000000000078": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000079": {
+ "Z0000000000000000000000000000000000000079": {
"balance": "1"
},
- "0x000000000000000000000000000000000000007a": {
+ "Z000000000000000000000000000000000000007a": {
"balance": "1"
},
- "0x000000000000000000000000000000000000007b": {
+ "Z000000000000000000000000000000000000007b": {
"balance": "1"
},
- "0x000000000000000000000000000000000000007c": {
+ "Z000000000000000000000000000000000000007c": {
"balance": "1"
},
- "0x000000000000000000000000000000000000007d": {
+ "Z000000000000000000000000000000000000007d": {
"balance": "1"
},
- "0x000000000000000000000000000000000000007e": {
+ "Z000000000000000000000000000000000000007e": {
"balance": "1"
},
- "0x000000000000000000000000000000000000007f": {
+ "Z000000000000000000000000000000000000007f": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000080": {
+ "Z0000000000000000000000000000000000000080": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000081": {
+ "Z0000000000000000000000000000000000000081": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000082": {
+ "Z0000000000000000000000000000000000000082": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000083": {
+ "Z0000000000000000000000000000000000000083": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000084": {
+ "Z0000000000000000000000000000000000000084": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000085": {
+ "Z0000000000000000000000000000000000000085": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000086": {
+ "Z0000000000000000000000000000000000000086": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000087": {
+ "Z0000000000000000000000000000000000000087": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000088": {
+ "Z0000000000000000000000000000000000000088": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000089": {
+ "Z0000000000000000000000000000000000000089": {
"balance": "1"
},
- "0x000000000000000000000000000000000000008a": {
+ "Z000000000000000000000000000000000000008a": {
"balance": "1"
},
- "0x000000000000000000000000000000000000008b": {
+ "Z000000000000000000000000000000000000008b": {
"balance": "1"
},
- "0x000000000000000000000000000000000000008c": {
+ "Z000000000000000000000000000000000000008c": {
"balance": "1"
},
- "0x000000000000000000000000000000000000008d": {
+ "Z000000000000000000000000000000000000008d": {
"balance": "1"
},
- "0x000000000000000000000000000000000000008e": {
+ "Z000000000000000000000000000000000000008e": {
"balance": "1"
},
- "0x000000000000000000000000000000000000008f": {
+ "Z000000000000000000000000000000000000008f": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000090": {
+ "Z0000000000000000000000000000000000000090": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000091": {
+ "Z0000000000000000000000000000000000000091": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000092": {
+ "Z0000000000000000000000000000000000000092": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000093": {
+ "Z0000000000000000000000000000000000000093": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000094": {
+ "Z0000000000000000000000000000000000000094": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000095": {
+ "Z0000000000000000000000000000000000000095": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000096": {
+ "Z0000000000000000000000000000000000000096": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000097": {
+ "Z0000000000000000000000000000000000000097": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000098": {
+ "Z0000000000000000000000000000000000000098": {
"balance": "1"
},
- "0x0000000000000000000000000000000000000099": {
+ "Z0000000000000000000000000000000000000099": {
"balance": "1"
},
- "0x000000000000000000000000000000000000009a": {
+ "Z000000000000000000000000000000000000009a": {
"balance": "1"
},
- "0x000000000000000000000000000000000000009b": {
+ "Z000000000000000000000000000000000000009b": {
"balance": "1"
},
- "0x000000000000000000000000000000000000009c": {
+ "Z000000000000000000000000000000000000009c": {
"balance": "1"
},
- "0x000000000000000000000000000000000000009d": {
+ "Z000000000000000000000000000000000000009d": {
"balance": "1"
},
- "0x000000000000000000000000000000000000009e": {
+ "Z000000000000000000000000000000000000009e": {
"balance": "1"
},
- "0x000000000000000000000000000000000000009f": {
+ "Z000000000000000000000000000000000000009f": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000a0": {
+ "Z00000000000000000000000000000000000000a0": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000a1": {
+ "Z00000000000000000000000000000000000000a1": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000a2": {
+ "Z00000000000000000000000000000000000000a2": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000a3": {
+ "Z00000000000000000000000000000000000000a3": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000a4": {
+ "Z00000000000000000000000000000000000000a4": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000a5": {
+ "Z00000000000000000000000000000000000000a5": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000a6": {
+ "Z00000000000000000000000000000000000000a6": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000a7": {
+ "Z00000000000000000000000000000000000000a7": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000a8": {
+ "Z00000000000000000000000000000000000000a8": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000a9": {
+ "Z00000000000000000000000000000000000000a9": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000aa": {
+ "Z00000000000000000000000000000000000000aa": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ab": {
+ "Z00000000000000000000000000000000000000ab": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ac": {
+ "Z00000000000000000000000000000000000000ac": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ad": {
+ "Z00000000000000000000000000000000000000ad": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ae": {
+ "Z00000000000000000000000000000000000000ae": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000af": {
+ "Z00000000000000000000000000000000000000af": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000b0": {
+ "Z00000000000000000000000000000000000000b0": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000b1": {
+ "Z00000000000000000000000000000000000000b1": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000b2": {
+ "Z00000000000000000000000000000000000000b2": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000b3": {
+ "Z00000000000000000000000000000000000000b3": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000b4": {
+ "Z00000000000000000000000000000000000000b4": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000b5": {
+ "Z00000000000000000000000000000000000000b5": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000b6": {
+ "Z00000000000000000000000000000000000000b6": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000b7": {
+ "Z00000000000000000000000000000000000000b7": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000b8": {
+ "Z00000000000000000000000000000000000000b8": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000b9": {
+ "Z00000000000000000000000000000000000000b9": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ba": {
+ "Z00000000000000000000000000000000000000ba": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000bb": {
+ "Z00000000000000000000000000000000000000bb": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000bc": {
+ "Z00000000000000000000000000000000000000bc": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000bd": {
+ "Z00000000000000000000000000000000000000bd": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000be": {
+ "Z00000000000000000000000000000000000000be": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000bf": {
+ "Z00000000000000000000000000000000000000bf": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000c0": {
+ "Z00000000000000000000000000000000000000c0": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000c1": {
+ "Z00000000000000000000000000000000000000c1": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000c2": {
+ "Z00000000000000000000000000000000000000c2": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000c3": {
+ "Z00000000000000000000000000000000000000c3": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000c4": {
+ "Z00000000000000000000000000000000000000c4": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000c5": {
+ "Z00000000000000000000000000000000000000c5": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000c6": {
+ "Z00000000000000000000000000000000000000c6": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000c7": {
+ "Z00000000000000000000000000000000000000c7": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000c8": {
+ "Z00000000000000000000000000000000000000c8": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000c9": {
+ "Z00000000000000000000000000000000000000c9": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ca": {
+ "Z00000000000000000000000000000000000000ca": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000cb": {
+ "Z00000000000000000000000000000000000000cb": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000cc": {
+ "Z00000000000000000000000000000000000000cc": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000cd": {
+ "Z00000000000000000000000000000000000000cd": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ce": {
+ "Z00000000000000000000000000000000000000ce": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000cf": {
+ "Z00000000000000000000000000000000000000cf": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000d0": {
+ "Z00000000000000000000000000000000000000d0": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000d1": {
+ "Z00000000000000000000000000000000000000d1": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000d2": {
+ "Z00000000000000000000000000000000000000d2": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000d3": {
+ "Z00000000000000000000000000000000000000d3": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000d4": {
+ "Z00000000000000000000000000000000000000d4": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000d5": {
+ "Z00000000000000000000000000000000000000d5": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000d6": {
+ "Z00000000000000000000000000000000000000d6": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000d7": {
+ "Z00000000000000000000000000000000000000d7": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000d8": {
+ "Z00000000000000000000000000000000000000d8": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000d9": {
+ "Z00000000000000000000000000000000000000d9": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000da": {
+ "Z00000000000000000000000000000000000000da": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000db": {
+ "Z00000000000000000000000000000000000000db": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000dc": {
+ "Z00000000000000000000000000000000000000dc": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000dd": {
+ "Z00000000000000000000000000000000000000dd": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000de": {
+ "Z00000000000000000000000000000000000000de": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000df": {
+ "Z00000000000000000000000000000000000000df": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000e0": {
+ "Z00000000000000000000000000000000000000e0": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000e1": {
+ "Z00000000000000000000000000000000000000e1": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000e2": {
+ "Z00000000000000000000000000000000000000e2": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000e3": {
+ "Z00000000000000000000000000000000000000e3": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000e4": {
+ "Z00000000000000000000000000000000000000e4": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000e5": {
+ "Z00000000000000000000000000000000000000e5": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000e6": {
+ "Z00000000000000000000000000000000000000e6": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000e7": {
+ "Z00000000000000000000000000000000000000e7": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000e8": {
+ "Z00000000000000000000000000000000000000e8": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000e9": {
+ "Z00000000000000000000000000000000000000e9": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ea": {
+ "Z00000000000000000000000000000000000000ea": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000eb": {
+ "Z00000000000000000000000000000000000000eb": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ec": {
+ "Z00000000000000000000000000000000000000ec": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ed": {
+ "Z00000000000000000000000000000000000000ed": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ee": {
+ "Z00000000000000000000000000000000000000ee": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ef": {
+ "Z00000000000000000000000000000000000000ef": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000f0": {
+ "Z00000000000000000000000000000000000000f0": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000f1": {
+ "Z00000000000000000000000000000000000000f1": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000f2": {
+ "Z00000000000000000000000000000000000000f2": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000f3": {
+ "Z00000000000000000000000000000000000000f3": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000f4": {
+ "Z00000000000000000000000000000000000000f4": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000f5": {
+ "Z00000000000000000000000000000000000000f5": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000f6": {
+ "Z00000000000000000000000000000000000000f6": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000f7": {
+ "Z00000000000000000000000000000000000000f7": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000f8": {
+ "Z00000000000000000000000000000000000000f8": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000f9": {
+ "Z00000000000000000000000000000000000000f9": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000fa": {
+ "Z00000000000000000000000000000000000000fa": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000fb": {
+ "Z00000000000000000000000000000000000000fb": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000fc": {
+ "Z00000000000000000000000000000000000000fc": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000fd": {
+ "Z00000000000000000000000000000000000000fd": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000fe": {
+ "Z00000000000000000000000000000000000000fe": {
"balance": "1"
},
- "0x00000000000000000000000000000000000000ff": {
+ "Z00000000000000000000000000000000000000ff": {
"balance": "1"
},
- "0x4242424242424242424242424242424242424242": {
+ "Z4242424242424242424242424242424242424242": {
"balance": "0",
"code": "0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a26469706673582212201dd26f37a621703009abf16e77e69c93dc50c79db7f6cc37543e3e0e3decdc9764736f6c634300060b0033",
"storage": {
@@ -820,45 +808,43 @@
"0x0000000000000000000000000000000000000000000000000000000000000040": "0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7"
}
},
- "0xf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134": {
+ "Zf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134": {
"balance": "10000000000000000000000000"
},
- "0x2cA5F489CC1Fd1CEC24747B64E8dE0F4A6A850E1": {
+ "Z2cA5F489CC1Fd1CEC24747B64E8dE0F4A6A850E1": {
"balance": "10000000000000000000000000"
},
- "0x7203bd333a874D9d329050ecE393820fCD501eaA": {
+ "Z7203bd333a874D9d329050ecE393820fCD501eaA": {
"balance": "10000000000000000000000000"
},
- "0xA51918aA40D78Ff8be939bf0E8404252875c6aDF": {
+ "ZA51918aA40D78Ff8be939bf0E8404252875c6aDF": {
"balance": "10000000000000000000000000"
},
- "0xAA81078e6b2121dd7A846690DFdD6b10d7658d8B": {
+ "ZAA81078e6b2121dd7A846690DFdD6b10d7658d8B": {
"balance": "10000000000000000000000000"
},
- "0xFA2d31D8f21c1D1633E9BEB641dF77D21D63ccDd": {
+ "ZFA2d31D8f21c1D1633E9BEB641dF77D21D63ccDd": {
"balance": "10000000000000000000000000"
},
- "0xf751C9c6d60614226fE57D2cAD6e10C856a2ddA3": {
+ "Zf751C9c6d60614226fE57D2cAD6e10C856a2ddA3": {
"balance": "10000000000000000000000000"
},
- "0x9cD16887f6A808AEaa65D3c840f059EeA4ca1319": {
+ "Z9cD16887f6A808AEaa65D3c840f059EeA4ca1319": {
"balance": "10000000000000000000000000"
},
- "0x2E07043584F11BFF0AC39c927665DF6c6ebaffFB": {
+ "Z2E07043584F11BFF0AC39c927665DF6c6ebaffFB": {
"balance": "10000000000000000000000000"
},
- "0x60e771E5eCA8E26690920de669520Da210D64A9B": {
+ "Z60e771E5eCA8E26690920de669520Da210D64A9B": {
"balance": "10000000000000000000000000"
},
- "0xFC4db92C2Cf77CE02fBfd7Da0346d2CbFA66aD59": {
+ "ZFC4db92C2Cf77CE02fBfd7Da0346d2CbFA66aD59": {
"balance": "10000000000000000000000000"
}
},
- "coinbase": "0x0000000000000000000000000000000000000000",
- "difficulty": "0x01",
+ "coinbase": "Z0000000000000000000000000000000000000000",
"extraData": "",
"gasLimit": "0x400000",
- "nonce": "0x1234",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0"
diff --git a/packages/web3-zond-accounts/test/fixtures/common/invalid-spurious-dragon.json b/packages/web3-zond-accounts/test/fixtures/common/invalid-spurious-dragon.json
index f254e2e5..ec8b9b16 100644
--- a/packages/web3-zond-accounts/test/fixtures/common/invalid-spurious-dragon.json
+++ b/packages/web3-zond-accounts/test/fixtures/common/invalid-spurious-dragon.json
@@ -1,30 +1,12 @@
{
"config": {
- "chainId": 5,
- "homesteadBlock": 0,
- "daoForkSupport": true,
- "eip150Block": 0,
- "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "eip155Block": 0,
- "eip158Block": 1,
- "byzantiumBlock": 2,
- "constantinopleBlock": 3,
- "petersburgBlock": 4,
- "istanbulBlock": 5,
- "berlinBlock": 6,
- "londonBlock": 7,
- "clique": {
- "period": 15,
- "epoch": 30000
- }
+ "chainId": 5
},
- "nonce": "0x0",
"timestamp": "0x5c51a607",
"extraData": "0x22466c6578692069732061207468696e6722202d204166726900000000000000e0a2bd4258d2768837baa26a28fe71dc079f84c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0xa00000",
- "difficulty": "0x1",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "coinbase": "0x0000000000000000000000000000000000000000",
+ "coinbase": "Z0000000000000000000000000000000000000000",
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
diff --git a/packages/web3-zond-accounts/test/fixtures/common/merge/testnetMerge.json b/packages/web3-zond-accounts/test/fixtures/common/merge/testnetMerge.json
deleted file mode 100644
index 8f710633..00000000
--- a/packages/web3-zond-accounts/test/fixtures/common/merge/testnetMerge.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "name": "testnetMerge",
- "chainId": 55555,
- "networkId": 55555,
- "defaultHardfork": "istanbul",
- "consensus": {
- "type": "poa",
- "algorithm": "clique",
- "clique": {
- "period": 15,
- "epoch": 30000
- }
- },
- "comment": "Private test network",
- "url": "[TESTNET_URL]",
- "genesis": {
- "gasLimit": 1000000,
- "difficulty": 1,
- "nonce": "0xbb00000000000000",
- "extraData": "0xcc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
- },
- "hardforks": [
- {
- "name": "chainstart",
- "block": 0
- },
- {
- "name": "homestead",
- "block": 1
- },
- {
- "name": "tangerineWhistle",
- "block": 2
- },
- {
- "name": "spuriousDragon",
- "block": 3
- },
- {
- "name": "istanbul",
- "block": 8
- },
- {
- "name": "muirGlacier",
- "block": 10
- },
- {
- "name": "berlin",
- "block": 12
- },
- {
- "name": "london",
- "block": 14
- },
- {
- "name": "merge",
- "block": null,
- "ttd": "5000"
- },
- {
- "name": "shanghai",
- "block": null
- }
- ],
- "bootstrapNodes": [
- {
- "ip": "10.0.0.1",
- "port": 30303,
- "id": "11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "location": "",
- "comment": ""
- },
- {
- "ip": "10.0.0.2",
- "port": 30303,
- "id": "22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "location": "",
- "comment": ""
- }
- ]
-}
diff --git a/packages/web3-zond-accounts/test/fixtures/common/no-extra-data.json b/packages/web3-zond-accounts/test/fixtures/common/no-extra-data.json
index c7bbc4c5..b03fb0be 100644
--- a/packages/web3-zond-accounts/test/fixtures/common/no-extra-data.json
+++ b/packages/web3-zond-accounts/test/fixtures/common/no-extra-data.json
@@ -1,32 +1,14 @@
{
"config": {
- "chainId": 1,
- "homesteadBlock": 0,
- "eip150Block": 0,
- "eip155Block": 0,
- "eip158Block": 0,
- "byzantiumBlock": 0,
- "constantinopleBlock": 0,
- "petersburgBlock": 0,
- "istanbulBlock": 0,
- "muirGlacierBlock": 0,
- "berlinBlock": 0,
- "londonBlock": 0,
- "clique": {
- "period": 5,
- "epoch": 30000
- },
- "terminalTotalDifficulty": 0
+ "chainId": 1
},
- "nonce": "0x42",
"timestamp": "16",
"extraData": "",
"gasLimit": "0x1C9C380",
- "difficulty": "0x400000000",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "coinbase": "0x0000000000000000000000000000000000000000",
+ "coinbase": "Z0000000000000000000000000000000000000000",
"alloc": {
- "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": {
+ "Za94f5374fce5edbc8e2a8697c15331677e6ebf0b": {
"balance": "0x6d6172697573766477000000"
}
},
diff --git a/packages/web3-zond-accounts/test/fixtures/common/poa.json b/packages/web3-zond-accounts/test/fixtures/common/pos-exec-genesis.json
similarity index 97%
rename from packages/web3-zond-accounts/test/fixtures/common/poa.json
rename to packages/web3-zond-accounts/test/fixtures/common/pos-exec-genesis.json
index 68b5a3ea..2a4ed69c 100644
--- a/packages/web3-zond-accounts/test/fixtures/common/poa.json
+++ b/packages/web3-zond-accounts/test/fixtures/common/pos-exec-genesis.json
@@ -1,29 +1,12 @@
{
"config": {
- "chainId": 15470,
- "homesteadBlock": 0,
- "eip150Block": 20,
- "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "eip155Block": 40,
- "eip158Block": 40,
- "byzantiumBlock": 60,
- "constantinopleBlock": 80,
- "petersburgBlock": 100,
- "istanbulBlock": 120,
- "berlinBlock": 140,
- "londonBlock": 160,
- "clique": {
- "period": 15,
- "epoch": 30000
- }
+ "chainId": 15470
},
- "nonce": "0x0",
"timestamp": "0x61279291",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000728bb68502bfcd91ce4c7a692a0c0773ced5cff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x47b760",
- "difficulty": "0x1",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "coinbase": "0x0000000000000000000000000000000000000000",
+ "coinbase": "Z0000000000000000000000000000000000000000",
"alloc": {
"0000000000000000000000000000000000000000": {
"balance": "0x1"
@@ -800,5 +783,5 @@
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "baseFeePerGas": null
+ "baseFeePerGas": "0x7"
}
diff --git a/packages/web3-zond-accounts/test/fixtures/common/merge/testnetPOS.json b/packages/web3-zond-accounts/test/fixtures/common/pos.json
similarity index 87%
rename from packages/web3-zond-accounts/test/fixtures/common/merge/testnetPOS.json
rename to packages/web3-zond-accounts/test/fixtures/common/pos.json
index 9ed75d05..5833c514 100644
--- a/packages/web3-zond-accounts/test/fixtures/common/merge/testnetPOS.json
+++ b/packages/web3-zond-accounts/test/fixtures/common/pos.json
@@ -2,7 +2,7 @@
"name": "testnetPOS",
"chainId": 66666,
"networkId": 66666,
- "defaultHardfork": "chainstart",
+ "defaultHardfork": "shanghai",
"consensus": {
"type": "pos",
"algorithm": "casper",
@@ -12,19 +12,12 @@
"url": "[TESTNET_URL]",
"genesis": {
"gasLimit": 1000000,
- "difficulty": 1,
- "nonce": "0xbb00000000000000",
"extraData": "0xcc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
},
"hardforks": [
- {
- "name": "chainstart",
- "block": 0,
- "ttd": "0"
- },
{
"name": "shanghai",
- "block": 5
+ "block": 0
}
],
"bootstrapNodes": [
diff --git a/packages/web3-zond-accounts/test/fixtures/common/post-merge-hardfork.json b/packages/web3-zond-accounts/test/fixtures/common/post-merge-hardfork.json
deleted file mode 100644
index 55748a72..00000000
--- a/packages/web3-zond-accounts/test/fixtures/common/post-merge-hardfork.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "config": {
- "chainId": 1,
- "homesteadBlock": 0,
- "eip150Block": 0,
- "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "eip155Block": 0,
- "eip158Block": 0,
- "byzantiumBlock": 0,
- "constantinopleBlock": 0,
- "petersburgBlock": 0,
- "istanbulBlock": 0,
- "muirGlacierBlock": 0,
- "berlinBlock": 0,
- "londonBlock": 0,
- "shanghaiTime": 8,
- "clique": {
- "period": 5,
- "epoch": 30000
- },
- "terminalTotalDifficulty": 2,
- "terminalTotalDifficultyPassed": true
- },
- "nonce": "0x42",
- "timestamp": "0x0",
- "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "gasLimit": "0x1C9C380",
- "difficulty": "0x0",
- "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "coinbase": "0x0000000000000000000000000000000000000000",
- "alloc": {
- "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": {
- "balance": "0x6d6172697573766477000000"
- },
- "0x8A04d14125D0FDCDc742F4A05C051De07232EDa4": {
- "code": "0x60806040526004361061003f5760003560e01c806301ffc9a714610044578063228951181461008c578063621fd130146101a2578063c5f2892f1461022c575b600080fd5b34801561005057600080fd5b506100786004803603602081101561006757600080fd5b50356001600160e01b031916610253565b604080519115158252519081900360200190f35b6101a0600480360360808110156100a257600080fd5b8101906020810181356401000000008111156100bd57600080fd5b8201836020820111156100cf57600080fd5b803590602001918460018302840111640100000000831117156100f157600080fd5b91939092909160208101903564010000000081111561010f57600080fd5b82018360208201111561012157600080fd5b8035906020019184600183028401116401000000008311171561014357600080fd5b91939092909160208101903564010000000081111561016157600080fd5b82018360208201111561017357600080fd5b8035906020019184600183028401116401000000008311171561019557600080fd5b91935091503561028a565b005b3480156101ae57600080fd5b506101b7610ce6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f15781810151838201526020016101d9565b50505050905090810190601f16801561021e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023857600080fd5b50610241610cf8565b60408051918252519081900360200190f35b60006001600160e01b031982166301ffc9a760e01b148061028457506001600160e01b03198216638564090760e01b145b92915050565b603086146102c95760405162461bcd60e51b81526004018080602001828103825260268152602001806112516026913960400191505060405180910390fd5b602084146103085760405162461bcd60e51b81526004018080602001828103825260368152602001806111e86036913960400191505060405180910390fd5b606082146103475760405162461bcd60e51b81526004018080602001828103825260298152602001806112c46029913960400191505060405180910390fd5b670de0b6b3a764000034101561038e5760405162461bcd60e51b815260040180806020018281038252602681526020018061129e6026913960400191505060405180910390fd5b633b9aca003406156103d15760405162461bcd60e51b815260040180806020018281038252603381526020018061121e6033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff81111561041f5760405162461bcd60e51b81526004018080602001828103825260278152602001806112776027913960400191505060405180910390fd5b606061042a82610fc6565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a61045f602054610fc6565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f01601f191690910187810386528c815260200190508c8c808284376000838201819052601f909101601f191690920188810386528c5181528c51602091820193918e019250908190849084905b838110156104f65781810151838201526020016104de565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f909101601f19169092018881038452895181528951602091820193918b019250908190849084905b8381101561057f578181015183820152602001610567565b50505050905090810190601f1680156105ac5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284376fffffffffffffffffffffffffffffffff199094169190930190815260408051600f19818403018152601090920190819052815191955093508392506020850191508083835b602083106106415780518252601f199092019160209182019101610622565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610680573d6000803e3d6000fd5b5050506040513d602081101561069557600080fd5b5051905060006002806106ab6040848a8c61114a565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106107015780518252601f1990920191602091820191016106e2565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610740573d6000803e3d6000fd5b5050506040513d602081101561075557600080fd5b50516002610766896040818d61114a565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106107c15780518252601f1990920191602091820191016107a2565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610800573d6000803e3d6000fd5b5050506040513d602081101561081557600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b6020831061086b5780518252601f19909201916020918201910161084c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156108aa573d6000803e3d6000fd5b5050506040513d60208110156108bf57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b6020831061092e5780518252601f19909201916020918201910161090f565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa15801561096d573d6000803e3d6000fd5b5050506040513d602081101561098257600080fd5b50516040518651600291889160009188916020918201918291908601908083835b602083106109c25780518252601f1990920191602091820191016109a3565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610a495780518252601f199092019160209182019101610a2a565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610a88573d6000803e3d6000fd5b5050506040513d6020811015610a9d57600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610af35780518252601f199092019160209182019101610ad4565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610b32573d6000803e3d6000fd5b5050506040513d6020811015610b4757600080fd5b50519050858114610b895760405162461bcd60e51b81526004018080602001828103825260548152602001806111946054913960600191505060405180910390fd5b60205463ffffffff11610bcd5760405162461bcd60e51b81526004018080602001828103825260218152602001806111736021913960400191505060405180910390fd5b602080546001019081905560005b6020811015610cda578160011660011415610c0d578260008260208110610bfe57fe5b015550610cdd95505050505050565b600260008260208110610c1c57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310610c745780518252601f199092019160209182019101610c55565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610cb3573d6000803e3d6000fd5b5050506040513d6020811015610cc857600080fd5b50519250600282049150600101610bdb565b50fe5b50505050505050565b6060610cf3602054610fc6565b905090565b6020546000908190815b6020811015610ea9578160011660011415610ddb57600260008260208110610d2657fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310610d7e5780518252601f199092019160209182019101610d5f565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610dbd573d6000803e3d6000fd5b5050506040513d6020811015610dd257600080fd5b50519250610e9b565b60028360218360208110610deb57fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310610e425780518252601f199092019160209182019101610e23565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610e81573d6000803e3d6000fd5b5050506040513d6020811015610e9657600080fd5b505192505b600282049150600101610d02565b50600282610eb8602054610fc6565b600060401b6040516020018084815260200183805190602001908083835b60208310610ef55780518252601f199092019160209182019101610ed6565b51815160209384036101000a600019018019909216911617905267ffffffffffffffff199590951692019182525060408051808303600719018152601890920190819052815191955093508392850191508083835b60208310610f695780518252601f199092019160209182019101610f4a565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610fa8573d6000803e3d6000fd5b5050506040513d6020811015610fbd57600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b8260008151811061100057fe5b60200101906001600160f81b031916908160001a9053508060061a60f81b8260018151811061102b57fe5b60200101906001600160f81b031916908160001a9053508060051a60f81b8260028151811061105657fe5b60200101906001600160f81b031916908160001a9053508060041a60f81b8260038151811061108157fe5b60200101906001600160f81b031916908160001a9053508060031a60f81b826004815181106110ac57fe5b60200101906001600160f81b031916908160001a9053508060021a60f81b826005815181106110d757fe5b60200101906001600160f81b031916908160001a9053508060011a60f81b8260068151811061110257fe5b60200101906001600160f81b031916908160001a9053508060001a60f81b8260078151811061112d57fe5b60200101906001600160f81b031916908160001a90535050919050565b60008085851115611159578182fd5b83861115611165578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a164736f6c634300060b000a",
- "balance": "0x0"
- }
- },
- "number": "0x0",
- "gasUsed": "0x0",
- "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "baseFeePerGas": "0x7"
-}
diff --git a/packages/web3-zond-accounts/test/fixtures/common/post-merge.json b/packages/web3-zond-accounts/test/fixtures/common/post-merge.json
deleted file mode 100644
index 8b5da63e..00000000
--- a/packages/web3-zond-accounts/test/fixtures/common/post-merge.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "config": {
- "chainId": 1,
- "homesteadBlock": 0,
- "eip150Block": 0,
- "eip155Block": 0,
- "eip158Block": 0,
- "byzantiumBlock": 0,
- "constantinopleBlock": 0,
- "petersburgBlock": 0,
- "istanbulBlock": 0,
- "muirGlacierBlock": 0,
- "berlinBlock": 0,
- "londonBlock": 0,
- "clique": {
- "period": 5,
- "epoch": 30000
- },
- "terminalTotalDifficulty": 0
- },
- "nonce": "0x42",
- "timestamp": "0x0",
- "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "gasLimit": "0x1C9C380",
- "difficulty": "0x400000000",
- "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "coinbase": "0x0000000000000000000000000000000000000000",
- "alloc": {
- "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": { "balance": "0x6d6172697573766477000000" }
- },
- "number": "0x0",
- "gasUsed": "0x0",
- "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "baseFeePerGas": "0x7"
-}
diff --git a/packages/web3-zond-accounts/test/fixtures/common/shanghai-time.json b/packages/web3-zond-accounts/test/fixtures/common/shanghai-time.json
deleted file mode 100644
index c5848d15..00000000
--- a/packages/web3-zond-accounts/test/fixtures/common/shanghai-time.json
+++ /dev/null
@@ -1,853 +0,0 @@
-{
- "config": {
- "chainId": 1337803,
- "homesteadBlock": 0,
- "eip150Block": 0,
- "eip155Block": 0,
- "eip158Block": 0,
- "byzantiumBlock": 0,
- "constantinopleBlock": 0,
- "petersburgBlock": 0,
- "istanbulBlock": 0,
- "berlinBlock": 0,
- "londonBlock": 0,
- "mergeForkBlock": 0,
- "arrowGlacierBlock": 0,
- "grayGlacierBlock": 0,
- "shanghaiTime": 1668699476,
- "terminalTotalDifficulty": 9
- },
- "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"
- }
- },
- "0xE7c180eAdA8f60D63e9671867b2e0CA2649207A8": {
- "balance": "1000000000000000000000000000"
- },
- "0xD84044e7ba939A4a9b35aE427553F39c2B2f26A4": {
- "balance": "1000000000000000000000000000"
- },
- "0x90c91d6742113a07484cc1E2D4Ba1Fa3AB59aD16": {
- "balance": "1000000000000000000000000000"
- },
- "0xE0B1b0408471cb254a82B6367caB9c8C5A9B3795": {
- "balance": "1000000000000000000000000000"
- },
- "0x4ee57bc5947456eBB2E06Dd47e2614Cbed39b6Bc": {
- "balance": "1000000000000000000000000000"
- },
- "0x191db72a1700646167a40593e6DF44267Fd481Bf": {
- "balance": "1000000000000000000000000000"
- }
- },
- "coinbase": "0x0000000000000000000000000000000000000000",
- "difficulty": "0x01",
- "extraData": "",
- "gasLimit": "0x400000",
- "nonce": "0x1234",
- "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "timestamp": "1668697340"
-}
diff --git a/packages/web3-zond-accounts/test/fixtures/common/testnet.json b/packages/web3-zond-accounts/test/fixtures/common/testnet.json
index 5062cb7a..1b6ab3e1 100644
--- a/packages/web3-zond-accounts/test/fixtures/common/testnet.json
+++ b/packages/web3-zond-accounts/test/fixtures/common/testnet.json
@@ -2,39 +2,22 @@
"name": "testnet",
"chainId": 12345,
"networkId": 12345,
- "defaultHardfork": "byzantium",
+ "defaultHardfork": "shanghai",
"consensus": {
- "type": "pow",
- "algorithm": "ethash"
+ "type": "pos",
+ "algorithm": "casper",
+ "casper": {}
},
"comment": "Private test network",
"url": "[TESTNET_URL]",
"genesis": {
"gasLimit": 1000000,
- "difficulty": 1,
- "nonce": "0xbb00000000000000",
"extraData": "0xcc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
},
"hardforks": [
{
- "name": "chainstart",
+ "name": "shanghai",
"block": 0
- },
- {
- "name": "homestead",
- "block": 1
- },
- {
- "name": "tangerineWhistle",
- "block": 2
- },
- {
- "name": "spuriousDragon",
- "block": 3
- },
- {
- "name": "byzantium",
- "block": 4
}
],
"bootstrapNodes": [
diff --git a/packages/web3-zond-accounts/test/fixtures/common/testnet2.json b/packages/web3-zond-accounts/test/fixtures/common/testnet2.json
index 44b5b2da..fc56034e 100644
--- a/packages/web3-zond-accounts/test/fixtures/common/testnet2.json
+++ b/packages/web3-zond-accounts/test/fixtures/common/testnet2.json
@@ -2,43 +2,22 @@
"name": "testnet2",
"chainId": 22222,
"networkId": 22222,
- "defaultHardfork": "istanbul",
+ "defaultHardfork": "shanghai",
"consensus": {
- "type": "poa",
- "algorithm": "clique",
- "clique": {
- "period": 15,
- "epoch": 30000
- }
+ "type": "pos",
+ "algorithm": "casper",
+ "casper": {}
},
"comment": "Private test network",
"url": "[TESTNET_URL]",
"genesis": {
"gasLimit": 1000000,
- "difficulty": 1,
- "nonce": "0xbb00000000000000",
"extraData": "0xcc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
},
"hardforks": [
{
- "name": "chainstart",
+ "name": "shanghai",
"block": 0
- },
- {
- "name": "homestead",
- "block": 1
- },
- {
- "name": "tangerineWhistle",
- "block": 2
- },
- {
- "name": "spuriousDragon",
- "block": 3
- },
- {
- "name": "istanbul",
- "block": 10
}
],
"bootstrapNodes": [
diff --git a/packages/web3-zond-accounts/test/fixtures/common/testnet3.json b/packages/web3-zond-accounts/test/fixtures/common/testnet3.json
index dafaa9c3..046421ea 100644
--- a/packages/web3-zond-accounts/test/fixtures/common/testnet3.json
+++ b/packages/web3-zond-accounts/test/fixtures/common/testnet3.json
@@ -2,43 +2,22 @@
"name": "testnet3",
"chainId": 33333,
"networkId": 33333,
- "defaultHardfork": "istanbul",
+ "defaultHardfork": "shanghai",
"consensus": {
- "type": "poa",
- "algorithm": "clique",
- "clique": {
- "period": 15,
- "epoch": 30000
- }
+ "type": "pos",
+ "algorithm": "casper",
+ "casper": {}
},
"comment": "Private test network",
"url": "[TESTNET_URL]",
"genesis": {
"gasLimit": 1000000,
- "difficulty": 1,
- "nonce": "0xbb00000000000000",
"extraData": "0xcc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
},
"hardforks": [
{
- "name": "chainstart",
+ "name": "shanghai",
"block": 0
- },
- {
- "name": "homestead",
- "block": 1
- },
- {
- "name": "tangerineWhistle",
- "block": 2
- },
- {
- "name": "spuriousDragon",
- "block": 3
- },
- {
- "name": "istanbul",
- "block": 10
}
],
"bootstrapNodes": [
diff --git a/packages/web3-zond-accounts/test/fixtures/common/testnetValid.json b/packages/web3-zond-accounts/test/fixtures/common/testnetValid.json
deleted file mode 100644
index 522990e3..00000000
--- a/packages/web3-zond-accounts/test/fixtures/common/testnetValid.json
+++ /dev/null
@@ -1,814 +0,0 @@
-{
- "config": {
- "chainId": 5,
- "homesteadBlock": 0,
- "daoForkSupport": true,
- "eip150Block": 0,
- "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "eip155Block": 0,
- "eip158Block": 0,
- "byzantiumBlock": 0,
- "constantinopleBlock": 0,
- "petersburgBlock": 0,
- "istanbulBlock": 1561651,
- "berlinBlock": 4460644,
- "londonBlock": 5062605,
- "clique": {
- "period": 15,
- "epoch": 30000
- }
- },
- "nonce": "0x042",
- "timestamp": "0x5c51a607",
- "extraData": "0x22466c6578692069732061207468696e6722202d204166726900000000000000e0a2bd4258d2768837baa26a28fe71dc079f84c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "gasLimit": "0xa00000",
- "difficulty": "0x1",
- "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "coinbase": "0x0000000000000000000000000000000000000000",
- "alloc": {
- "0000000000000000000000000000000000000000": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000001": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000002": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000003": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000004": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000005": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000006": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000007": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000008": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000009": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000000a": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000000b": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000000c": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000000d": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000000e": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000000f": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000010": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000011": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000012": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000013": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000014": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000015": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000016": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000017": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000018": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000019": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000001a": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000001b": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000001c": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000001d": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000001e": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000001f": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000020": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000021": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000022": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000023": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000024": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000025": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000026": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000027": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000028": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000029": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000002a": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000002b": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000002c": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000002d": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000002e": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000002f": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000030": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000031": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000032": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000033": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000034": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000035": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000036": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000037": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000038": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000039": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000003a": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000003b": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000003c": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000003d": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000003e": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000003f": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000040": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000041": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000042": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000043": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000044": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000045": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000046": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000047": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000048": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000049": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000004a": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000004b": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000004c": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000004d": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000004e": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000004f": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000050": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000051": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000052": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000053": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000054": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000055": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000056": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000057": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000058": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000059": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000005a": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000005b": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000005c": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000005d": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000005e": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000005f": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000060": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000061": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000062": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000063": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000064": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000065": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000066": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000067": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000068": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000069": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000006a": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000006b": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000006c": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000006d": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000006e": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000006f": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000070": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000071": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000072": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000073": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000074": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000075": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000076": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000077": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000078": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000079": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000007a": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000007b": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000007c": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000007d": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000007e": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000007f": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000080": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000081": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000082": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000083": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000084": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000085": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000086": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000087": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000088": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000089": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000008a": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000008b": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000008c": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000008d": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000008e": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000008f": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000090": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000091": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000092": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000093": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000094": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000095": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000096": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000097": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000098": {
- "balance": "0x1"
- },
- "0000000000000000000000000000000000000099": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000009a": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000009b": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000009c": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000009d": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000009e": {
- "balance": "0x1"
- },
- "000000000000000000000000000000000000009f": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000a0": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000a1": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000a2": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000a3": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000a4": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000a5": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000a6": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000a7": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000a8": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000a9": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000aa": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ab": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ac": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ad": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ae": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000af": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000b0": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000b1": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000b2": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000b3": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000b4": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000b5": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000b6": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000b7": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000b8": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000b9": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ba": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000bb": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000bc": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000bd": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000be": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000bf": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000c0": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000c1": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000c2": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000c3": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000c4": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000c5": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000c6": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000c7": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000c8": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000c9": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ca": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000cb": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000cc": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000cd": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ce": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000cf": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000d0": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000d1": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000d2": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000d3": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000d4": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000d5": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000d6": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000d7": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000d8": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000d9": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000da": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000db": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000dc": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000dd": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000de": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000df": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000e0": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000e1": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000e2": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000e3": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000e4": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000e5": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000e6": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000e7": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000e8": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000e9": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ea": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000eb": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ec": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ed": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ee": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ef": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000f0": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000f1": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000f2": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000f3": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000f4": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000f5": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000f6": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000f7": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000f8": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000f9": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000fa": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000fb": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000fc": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000fd": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000fe": {
- "balance": "0x1"
- },
- "00000000000000000000000000000000000000ff": {
- "balance": "0x1"
- },
- "4c2ae482593505f0163cdefc073e81c63cda4107": {
- "balance": "0x152d02c7e14af6800000"
- },
- "a8e8f14732658e4b51e8711931053a8a69baf2b1": {
- "balance": "0x152d02c7e14af6800000"
- },
- "d9a5179f091d85051d3c982785efd1455cec8699": {
- "balance": "0x84595161401484a000000"
- },
- "e0a2bd4258d2768837baa26a28fe71dc079f84c7": {
- "balance": "0x4a47e3c12448f4ad000000"
- }
- },
- "number": "0x0",
- "gasUsed": "0x0",
- "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "baseFeePerGas": null
-}
diff --git a/packages/web3-zond-accounts/test/fixtures/common/withdrawals-devnet.json b/packages/web3-zond-accounts/test/fixtures/common/withdrawals-devnet.json
deleted file mode 100644
index c5848d15..00000000
--- a/packages/web3-zond-accounts/test/fixtures/common/withdrawals-devnet.json
+++ /dev/null
@@ -1,853 +0,0 @@
-{
- "config": {
- "chainId": 1337803,
- "homesteadBlock": 0,
- "eip150Block": 0,
- "eip155Block": 0,
- "eip158Block": 0,
- "byzantiumBlock": 0,
- "constantinopleBlock": 0,
- "petersburgBlock": 0,
- "istanbulBlock": 0,
- "berlinBlock": 0,
- "londonBlock": 0,
- "mergeForkBlock": 0,
- "arrowGlacierBlock": 0,
- "grayGlacierBlock": 0,
- "shanghaiTime": 1668699476,
- "terminalTotalDifficulty": 9
- },
- "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"
- }
- },
- "0xE7c180eAdA8f60D63e9671867b2e0CA2649207A8": {
- "balance": "1000000000000000000000000000"
- },
- "0xD84044e7ba939A4a9b35aE427553F39c2B2f26A4": {
- "balance": "1000000000000000000000000000"
- },
- "0x90c91d6742113a07484cc1E2D4Ba1Fa3AB59aD16": {
- "balance": "1000000000000000000000000000"
- },
- "0xE0B1b0408471cb254a82B6367caB9c8C5A9B3795": {
- "balance": "1000000000000000000000000000"
- },
- "0x4ee57bc5947456eBB2E06Dd47e2614Cbed39b6Bc": {
- "balance": "1000000000000000000000000000"
- },
- "0x191db72a1700646167a40593e6DF44267Fd481Bf": {
- "balance": "1000000000000000000000000000"
- }
- },
- "coinbase": "0x0000000000000000000000000000000000000000",
- "difficulty": "0x01",
- "extraData": "",
- "gasLimit": "0x400000",
- "nonce": "0x1234",
- "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "timestamp": "1668697340"
-}
diff --git a/packages/web3-zond-accounts/test/fixtures/json/eip1559.json b/packages/web3-zond-accounts/test/fixtures/json/eip1559.json
index 93515a5c..44705a28 100644
--- a/packages/web3-zond-accounts/test/fixtures/json/eip1559.json
+++ b/packages/web3-zond-accounts/test/fixtures/json/eip1559.json
@@ -5,7 +5,7 @@
"gasLimit": 35552,
"maxPriorityFeePerGas": 75853,
"maxFeePerGas": 121212,
- "to": "0x000000000000000000000000000000000000aaaa",
+ "to": "Z000000000000000000000000000000000000aaaa",
"seed": "0x43425e20ad82f0611295b1a8e583f10b45c41fd51837e5df4f2a745a4f4c5014eb7ebae166903c8c99597f7ce47cb9e4",
"signedTransactionRLP": "0xb91c4802f91c44048203338301284d8301d97c828ae094000000000000000000000000000000000000aaaa8402933bc980c0b90a201de9c19823cb94b05ce8a3aa5377e8332c9b2223d6e42d8cb9818c3fed182c667c401160d9e2024e6651382851e120e1fbff1d7d15a4596f626e61af263fd753ee3f80ca801682d7189b2c64bf3acb1d676033e49b432fdff76af56beab1b1e09a8269b4c2865aa9f603e6f53706b849ff1eb4219469fef70eca55d2786ff26373ba730ecd7eedeb77e3a8eee780da5393312446da09883f1db34e4b8e695b3f38b8b2c642f4d067194b2b7b4eb87250a29bcc49140dd41da57e9193531c0d0630cbe8830ed8a3f4ae6b527e6ecdd04b27f808823a5d8e564b6b9164f63f9553d0afdd8a8724c93ee8c4d6f700a7e069f4471411ae0aafffc312f94b1f3dda9eafba18d2551db4689cda39c6170448f8107edf97c13cb1b65cff5817aa62658fce4e4b5b15ac633558b803f73c9f3628faf7129bc4a4fa80b42b2ca162f8c2e37054dcce634aee3a411db807740939f381e40996ed7c2f683e20ea421fd535d046658d55843749b547d1f3ce9bbe51ba10a30279261bc4d988fad5c53774a2fb06718507e7b3f20bc0f6f030c07276e3bf45caae9a30af29f7397c1722c12051ea2f941a90783e38acfbba892ad63637dc113c0b354253e32ec71ade86d4f0890661ab1506e544576df4f3ef32ff0a15182ce7a178c6dbc1c5a536c6d6e61f1c7f860cd0fca797c929681329b15162933bcc7eb28e57f4a2e7e195399bc917e764218a74f99f7bd5180284d9e5f2fd5651158748d289befac922edefafe47c8352b9f9ed9a6b7639f5c1fbf31423dce815156696f0d3c582fad4af0a3711775ba93cffe3d8dc0149a2ae217c55a46452dd3dde99a1f718185b03833c1ed8deed4ab1d6ad20479229b37b687a991030962682d1ba1f430c2f494dec8a68c482e0c9181655d6eae7ef50f691319485f4ce08ebdbb87551c82122934061024b7619a96f849f484fae363ffb81e655112b7ebaf95d29311e917d9ce3fa0cbe73b8b982df394d43af1b0ac8ad6bab5583cf993d0101fcf1b34682f89d21efa189c8309f1a4d625edda4ae53583de2cd3b38e0e266ed313ff5fea263469ed9e9bc18c859dc97f6398554a7e84b6e7d4e980246a1107eb993a7d84a17d06055c3ddabf62d75fd917b888bf7a8bf232dc0960eeabebb6a87956f6905fe5cc87a964cadc71ae60f8a44264603559a2ca765c6a736a2ee413dfb00a4158823bf8bed5c3af1eb88367b1586d9695349c2ef61f227db765ad473172a835058dd03109c6fd2a3f22da9eb52cb3fd2d5bd4fb40dd4f6a743ca7b20b80937f828f726aac0f90981ac94b18ef2ad5c90d994d386d477deb4ee23091b6c87e26818e6ac634333bce48930a6fa091acd4c82048c5425c83f5d5682f76e20daa2fa0dd6e69af57b3731d1bfb89e6fd39790ce3300e331349c9925c05b335d813f933b9393622582e80ef2f0027133860191fda6ad963de03b6298cfcacf775e58f1099b68408a93835739a96696f36c3dd495c276f8a2f3f8ef972ccbff82a4ea46ec12b2f87571b0b213215548b914d055ba98e30ac9bc6ffb31ca8c4ae7219a69608479b96c7c0a600034d49589a63ac1740eef6994f2354fa7ace3223a7003b99288f397ab6a2497db78b4ee14d5716be55ff9ec291408e9e756c08092e2d8f5f2d994f0bf75d4afbf5b8a9c217df6982b64933c786dbb21d9a9ce4c5532572213922f750ccd9c8e5e08d578a2144240757adbc1bf53581f1ebd54dafe48a9f7102f1d87ae8a346cd4621392c589f73bc94ba1a027eaac7da1e29435398de3a354235839010bfb9fc711be2c84693f550b148913f3a9de1ded6ad41b0eeda1c8ea8eb5839a06fed3e36b7e8a220a5d5e7efacbba56a585c2664483ea68c95e42803e131240ac27499252b7dc5b06fa71b91662690979c5d8ea0ede78a801d6cde3b29aba83c3fb5fabbeaec63871ba4cc5772bcd7f97c78b16170e13f49dbe116300548c668dcb61d798dc834ff6693799e6ffe6f3b32f4f2b71349e301768e2397f904f045384eee863120bcc1686637dfe7152a2afaa1dabce08c8f16f8fd011e87268eff9e16f1bbe07f0bff3e23355d3c94767e8e43bc35bd632ce5fa1f6f983d4b2c1ff9bb04805395b006098e29c0d03facd9dd77d594fbace0ed5212e76425fed9dc96ad4191f6ffea72cd299d0369e1e7534b7585a9a35f430d86b00ded922a9cd2db891b7c203a01355dc78676390bf41598e0ef9be9ff9218f28e417061461d910fef22c3499002299c4fcef26e8352f5ccd036c91b8784205cb3f3c2e0aecff18d89faa59b4fb0cf4ad453be3736d2596bd739013fa8c75bf1e848865952c300be4d0a80f5dcb80d3cfd1f3f3c83a123d3aa471b17c7ce1c7ea50abbe5fe397187ff52438af55b5b64cd8f9a3d021c443d8ccc55befb1c513ae8afab0d5b1bb4154a09b50cc0a4605162cde421fd6e3003cab82cc8ec3ab7ed5d98ed7222d83e00cb61d3257c6503ad52f214f1e5a756ee9d4d4fddfc09d73b0a1378b437456a7bc42d9d43f916ccc61ff126a50841484f0f9addb261f38ac75d7dfcb0435fc4a6092e85d6ac4fae064e95870b0efd4269681099c2bb743773cfc61fd082ceb27c95468193dc1773b31906e638c9928c2d0a57a77e0d4ad0e77e703cc099be8a5390dffe6c4449c72036247db0a76a6899d6046eab2ee121e5d65540ede74eb76cc4bb2438edde71b126ec6be88a54f9981060dd8508b0f635938916f7bf3cba7a104c59b816f3c5256a11e1704c03461d0e9e22133b907dbf1edcc796c2daaaa07c42a01deacf8072a4b76cf060d386b0e0f30546811d03df36238c28c568b900777309c8d2c0e5c711c12820e96626dd88debc6e80c8e0627aef80acdbfac556abb17b91a4372aaf6eda4ce114ffb9fa1d81aadb88099dcb1ad953aeabb48611716aae98c8fbfbfe30d6cfa3e15a409f5d754bf1c2602e2f467cf32133a53929df8d34112871c66da00c7931fef9351275206acb60b6848db36360af2643b7cc793df85fad6c3b4201bb7b2ff8327ae8efaf928a2ba6c36eefd912f015f494a34656bee438f9a9ead1128e03e9b8a6fba651a0e0f0e6f043cb78f76ff2ed08e9796317948f5ce6b4c4fb48c5f5f6a79f2c576f0228be0da8b468f449deb3cc0a9319e02c2bf802eebce51d1019ebfdd7045fdb8a74e108edec98610e6ff95db9af4be713cf78d1a8f11baf81d7cf02e7aca5ad389acdf474490d86abb23acb44c319b2531d2d97024ad5454425ac803c40f19b382bc8e0ff277788e178b055e0a5908fe212efc62a8f86354e3c1a0a653123743b9b7fd7115bf16e4c12b233ff8122513d8bc09ec3a561dc130a901cf7d7ecc43188494bbed9813114f0ea79e7817be2471f437d395cf23710d40573f328490ae37454587173817b7ce18627b40a662dba0bbb9858971a505a0786a98526e49faf0d7aec553a3b74abf28d3c92106ac3361845d49a4a668d743e202ed690171a66575897531e65b453f2b016fc26e94412d07dc5bec7b72d5f2187893f297add3a34daa3a074c40af5f8f8a32d0e3e501e77ae14800c5a96202790e9ca6264d9d31bf4d251ed8c76f42c2efbc8628614fa41942081e281878a1c81b2d80c3e6677fd6e5f9bc016395e6247466240eb911f31e402bc3ca44e1e7e812865158f22a0e70f9790c6740afb514511bf908ee9e51deab654abb7f3a044934aaa0dc3d09c369dd6a1df0fb2c049130228dc82c4665f7fb026d516d4da5c7e08a601ce81f451e23283804e7c0960acddc202b6a52c4452015d64f3e480a0cfaadb7c5946318226ea172573c4a2ba16ed08c1bb91a77d3cf666895d90af09f37cbe322ef8a5ea647820cbfa04073bdd73522e9f4578c44a13e695f961c91e7b40f75c837c9cc9d5035bbdeb7a07518f8fe28583ae5d24a2e2167ee14f1e6ba9a7e59386b5639a550d918bae1f611504024b61deadd076680a315a5b63dd354b5cb462e9a045abff82077ec6c80e8f6842577565f3e10791cc324982aee8493d1cf8054f24e1d73e02604326593c4f210fad2cbe4f93993348af27c62a17b9ad1bfc92bdaeffa55d03187c37f95a0c92ed1ca77d8fb3d60abd6d6fb40545e634a0cca26134b262967b5af1285ecbd5fbe40bd33a15fa09b99bffcd7cea10c9d74ae401e2ba42fa1d3472dd5a7c772da3a7e8b49fe544569bd48a4f0d0194ce9738f3a4f3b349b997b5821e236fabf1739f1266893ff275ad1cfb090f216784d79200fdb10b3bfac7d92106135ba34e4bb00ee6252b90beb45e442eba2f9b8f5f073f9566ed11fd3afbc1b0d30248cbdbba2759ddcb2598914144b4c24ce3ff7c45135e7b251e4663123da99612813e920a209f2420f2f3ca56dcff7abce627f848acf70fb91ff4f792ab33f171c3fd2303cad7736186b805de5fb376739bff9d91d468d6306a623ef9b5360d3af8d55a11b9c984ce91a158e82108d0f174913ed567ef288c2b5dbe65f8c14f3a4386045814e0d432b17b13ee35408a2f934b76124fa0224d2e7fe0c3ed17f658c7503334b01aedf6fa24b3058fa8103aa247f5263098be603ee1f286b6df3f166a9fc27f8f5fb2f8acc464a3648e58a5345f949dfbb9a77615fce9738ceebfbaadff08d80e908a7d390a2f05745eedd67bfcf1dfc646337ff9db80753492800c9a0b6b22afcb4e4359b4aac9d8d19c2862a9f9430e5c75840ae2c9391c95336abd24b0f7fe12418c65969e7f6feea1da6e95acc73216e69d6fd0ed9595811150c25235fabaaccbc2d64dd63ddfbb8239b8481082b49ed28dad8ca3073365dc9159259ee178b4a192a0ec1e2621a9ebc710b20c4d176f00031dd807cab36be29ff5b7785d0ca066156cd5e9a4e4f14d3d073689a3ea6f9db3a7e51b30968f0f6cb949f8a689b3a4f3617c13519fc478b52ce134617361b327bde825cb4f6df785324cdb238b526538875761dddd2f45055cce869942c8f9117724035611c3cd3caa61f3960cd0d1292d26145fdf90ad85252a58af0ae4541748cbf13b99d0017bd5f34787d117d7a7a40278f43b5a1ac021bb7c415ea4fa7033e4d2b0d3ee6ce26d9642ebbe910d5ff7639b70e377f133ca43ca0069b2f996d27f694f935c9239cd2d74d1023e820a453d25ee0dd37c50d98dac08184b1749ecc877a8b3e83ac50d395d631874a5b51a9e7520929636583a3a8c3b8ea0c7a81424f834970c369348b26179f0c5663de1e62df1de5bf464318adaced1a6151bc73ce7c7885b0a3210ed1056d300083ae8030ff3ef8f653284b7080231cdc1c9e90fbc864f06460bb54de044930118d01e285f9a297c6ea3080241ee86b29c46e53392f149aa7d06d3133cf0995733f3f1c0cd5fe38858d9742ebd73b8d9eaf333b6440e9444c0a1618041c087863b4c222382e4551464b7166a3738cfb73015782a2ce3547efadece0f864db371a807fbaa7378047685a2c32def9c3a60147fb1bb536301edc0bce29fd06871f3125da6f14157457d6984d22e1d80e788bbe957c061f8cf46c1286f064447b597e7b0e63d16461bccbd08d5f306ec1ede2f66988b1de22700f2d0e9d324b612709ed7c9065920bfd179d83d444dcd27c370e75e0bcbc902b8873b3ddc66a35e42d1f2201441b73c68dfd211e52cdf249f76a3a8bc8224e0ac2d9c3eee48f29576900573f6e07fd728045443263612fb4eeea90847de0577b1a035ff52b9a25563f797dd0d58013c349d9735a6afd2bf5c7804a5e9827c41d56765abc198d96315e4afc442404a6af16f6c6bc4f27010710b75470d8960090476f96db76f361ba929b5c518321bdb1bf84375603774e663da29afd9e133fea0f5828494ea1cd59e8bf9ed5cfa5cb6d9b010eaed3e3f39029e3a4dd489941aa297c4b56aab66536cbec4abe3cedbfa82da3afc633f59e1b77680e123e0723966ae420afe2ed5c7ea15a86e3ab1b5168ee93637e965325e23bf07babf2821ae3f30799e5cf5d0572ce69860591c9e3d3d27c8f922e22b64f054827ecee8a30bf855098cc09a648d80117c4e8581692801286c22f2d4da0a7ec9769ddf530861a6673cd3b9bd6117bb2c71fee31c4713a73208639c646a98575cafbcc3cdc42746c32ef7aa24374a004f867b29cdc384c106ccd6a7f2fdcda7fdefa7df338092230b4a8ea6418e912b5609deddc3d602ab077c73273699e2cdf690b1b032a358b31a093aabb6fb93112decfd8c804e0ff2ad6c08ba6d33f8ef11dcda054a4a11f5d34d2378c8afe2aecd4a1719580fad793e2c31a4986b1e44c0bf7f838ccaaefc3ffc01ef0607ce532aca3f0aefc2bf545e1bfddd86fdc3e5569c974b978b434e2de9fdf820a4b547759ff80b36417bc5d69a52d195f9138ad6cfbbb06f992dede9e6d78ec3b9a3b2eacbcd45cfa3ea9da25d21cf55184e8bb6c7b4dbea7e2d3ded4fffbd4738da7367743c6ebd023498edc558f5143815094c6f6d2118ccf9b9827da40d8b27a1f6bc1ae43f5853458828bda54e58014de4a0cb3709d171370aee1a0c619567a0dc9103b92125666b37d2b45b4b9b0f25c15a6360841aa31804b756e617f3403c92d5507876e1c14aa70fa517fcae97b6018d934c9026c9799fed157417dd6f30527444967e10c47b39c1327643fab2c029804f23c1b051f41d8ccdf3c3acfd569750bc78e0396d3a694a7410a9703302bbd1c58e3507de5d56357b1590f563b2bb0bbf7048caa3fc7c89ea501d929d23c40776744f2fdd97ffc388e3fbe5640aee6972d8ec830408ac6703cdade9e329944dde141ba394f89786367a5af8a994702a2585bae24c23b8e772a42afa92b4d8ce1b7aa372b562baaf63977b34449f7ba4dd1b906a58e73045fcf5160adc09dcd360818694da9974dbb6adfc0f7784c1d31b6bb2bbbd914cc311981355f870fc1d90804da3bdba640f8c70878fc21844a4ce6e2b714598adfe415d67d7ee95983d8fbf28574390c5a2ef99076a428a62e4fbeb1218b09d3978416970be19347597c8d1c8b43bf9bd6f0f67e6fd9e935399e36b33e34717b9130802de354a38f3d4b7459a82c1d729fd52747ae8785534d24d3e5d870bcd004bdc8978d06e2c0c0e4135cc6dce11330ca0bc407c4acf5e1a2ecd033a485fab5db4fda5d51710da72a49240dd58fd725c6f856b0ee2bc07f8cc473c29376ce08ad9c1171d09bb072d432a5e0d15a9f695c95f2c7d2cfde9b3933e00a115fe6f3e446ef5cdd5ee75bf2c89e40a1bba154af228127385855f20916e9e3d47567b11d28b2a17140dfc7c014e70052e280f6f4f841aaf81d66a3c7740c3834daff8f65860ecef9debb7452a366ea77c42742eb9bc3cb88bd67a722794b3e85b501bd26ed9c2ff502b5b76a8368116fa98c67d2d9b74ea65bebe773342b87b2da8508a31bbc76d8c5a9c58b1ab93ced437c3a3570aded7fcd85eddb1d6d46080cf76c6fe719a67ad2585ef4f7f2b533350117b07cfc22c0b2b0f557b991d256e0b56844b8ca12dcbdeae2c27a8c0a0cc0e95fb4721e3df4a0ddd3429614a9d3aa023c78ae7c38c6c553072656ca4ecbc95c9785d6693973c8bb304caebc981b803923de0467d16714e5fd1b001999ef61f3919a3e0890ea6ca187b8ae906f9b57f33b6b21353cd9a370795db6812de5cb8a791a8963f32cbafa55f7dc681e345ff9c6c5675145e4b256fe657566a3e5f2d4eb0ba2c2adc407a0e2963fbdc6b8a880842b1d96932ec5f20ebe947f59e78d0f8aea5457df67db3162b464e37620d8cc04eddb68d020d019dcff85318e4ec4c025fd98e30933cf9ebfb9190a3f26e48e2e170bebe49900a763f3de7cd965556956e2a666c7c3d711bac457eb323287a033215f7161c5258b49f207d3c888521ca23a6b0c62cbba5d149916dfb0c5b81aba26f5e5cd21d574211d375020ba1b8c82abaf243db3c5d570aee4f4f455ba3efafc554bb8c263023dd741864a06542336239cd26a230c09280fc780fa8a0daa120b3a36e804c37cc5e927ce798246912f5bbe2ac9cdcad6d4a287ab875bef8e296f1c2c455511f2f440aa90a7868b4de594926a83b62cbeb338ae0b3f8e01d9bf17055d9c9c054dd4a73be3dc111810653c71b84a5c9bd7bce98e6e533aa40343396c9ba6b81e0b91781573ae9326213bc7e24064af7b9cd75f57a694cc111925c049d8f5e973e61a3600f6211a7144841cf13a9177b88f5ec41ef7b2c5cd7e06f1ceb494c4147283f629b8f31462b9d5c19c22fb652555c3bc3f500adb5117ab7b8918117b2a7c137e7325cd9aac85ac98d55cb55429fd61c0bd8ea858c1361dd269d2d461173b4e24ce02bb8d30521fe9f407d9bc17cb37418f7c9e4443298b92891a1d5fcea1361dfffb8db2aa181c8f007bd0163fd52b75b23bb66d99697b87eb27288cbc337372850f5458e364ab6646f94e17322ddd8d353c658fb4d5d29d84fb55acd736524c2bbd0edb0a6846e64aa7d77c6008614275b4435b38a3fc83eda59ee92a2d1e86059055eee97a6d5729b2a6bcf226c89597a370ee1c9f69bbd36cb5f36571f24d2742232f17a9d43524b5bdd7e17230e8efccfea3444216eb8870041798472c783a37c1fceb2f5be779ced9e328011476bbc9521557141512585ff09179c36829fdd9f11353faa2678522414304d857db8270ef918c901052ce190a3741d48536258c435275e4ed472275725569802fbeed0fe23c101a55d4a56d7d848584308415a06e6193f281390f95b4ac94249797a15ab2cf965ededf499a2dcc03705e50abeb21c288c505b4a7016e213818fb1d4b8c202f6cf84789956a5759c43a796838f2c2d720de65a11ed7d59cfb3342478db314084e57344a22020abc19cbf65d7c96bdb51a491acd2b92daeeaf20965ee7cad5166d4a20305f9fd439189d8a58c52dc34bd88e510fb810024963907d4fbde5343b978f3704d4f220b63e08b42599b2d535dfbc61f1b5705266fcc5e3eee37d4adbe6ac8332244c5cf52044e3ad63c38b9f6638fe06bacaa0178a3d5a553a6d49a561f21377690f1d14a00dafba76a9f154e7e27833c36261cfdce2cfee34e138fe346198fdd8fe6bcc6c5d34b88e77105757789ee27b7044aa8e05799e1241247cc744a31d556f854537e9af81df5ee9ef1c830b27e37d94b58b57f157866445b7aa324fee7916711e5227a9b6f7b14d3c39a60145bd4641f37aca4ee2b7bf9ddfd0b085cf4c42378090aa870e45d05b5dfbfe15ae6d6f07a7350a7c24bf4f90c66b616ef28f368b06a4dc1d12a4eaac07324a72235a6d6ae9dc48c1c80ae18c76d1364ad2a9d2ae4572a82ba2ef8aba40cc356a3fbd3054a7bf07fef0cd5b1db775c48bb5ec94e246b75b477bf28aafdaeb74c606e3e8b76e546ed7ec882d203078a3b982064d8ffd6bddd2225dd27ca7e5e9cd62d832a82fd61427845b5b8fbae90bff21886a526758d83de838234f93e603148bfad389c1bfaaca7b75ee6586b0c9147bdcafc8320388a24f9fc43b467d4d868710bc639888cb2a8d6b433333a3dc6a31464272e1aa0fc04491ff89ee5be994111c8781a706d80171b4ecbb86cef31403641d2071ffb8f297c814a63390cc4ec32f702913a7c08d92c1001441e3149aa4562fe663387cebd9d1ea71af1f5c14dbfb1733c2b1027381e56eb7e3d3768d1c6a2f29d53362947952c3a8598f67def0de814af7387ac6e558d30ba793f41c4008b3b9008337cf0f504a90041b884d4cd73695e98a622adb0175cda0bda6208026902113d11776eefef5c01f941fd4ae6ce6128e77882870a702c86530ba29c6df95183855cd5978b89a68fcf35bf075c98400b46eb419a098f4898e2738cc929cca9836f3140eb1e1dace42ee9c0ed46c93315375a581fbdda4ba065d1a5994bd99a124c08e3514c12ca411f18c3d4cdd2afed764bf330c5fe8f7da73117956c9f29ea6771f80cfea4658ca422b47bec6a7ea0a06d209cc8a8aeb4c81c68e6ed6aa1bcdda3453207e32efcb974589aff889543087c384d618d70135485f607b89b0b3ff838eb3c40b283f4487ddee094a5e8dd3f4555c6f7789f1f301091a33364d58dc18236686b0c8030f5a7e9196cdd8e7f400000000000000000000000000000000000a0e151b222a303a"
},
@@ -15,7 +15,7 @@
"gasLimit": 32593,
"maxPriorityFeePerGas": 38850,
"maxFeePerGas": 136295,
- "to": "0x000000000000000000000000000000000000aaaa",
+ "to": "Z000000000000000000000000000000000000aaaa",
"seed": "0x43425e20ad82f0611295b1a8e583f10b45c41fd51837e5df4f2a745a4f4c5014eb7ebae166903c8c99597f7ce47cb9e4",
"signedTransactionRLP": "0xb91c4702f91c43048201618297c283021467827f5194000000000000000000000000000000000000aaaa8403b08b3380c0b90a201de9c19823cb94b05ce8a3aa5377e8332c9b2223d6e42d8cb9818c3fed182c667c401160d9e2024e6651382851e120e1fbff1d7d15a4596f626e61af263fd753ee3f80ca801682d7189b2c64bf3acb1d676033e49b432fdff76af56beab1b1e09a8269b4c2865aa9f603e6f53706b849ff1eb4219469fef70eca55d2786ff26373ba730ecd7eedeb77e3a8eee780da5393312446da09883f1db34e4b8e695b3f38b8b2c642f4d067194b2b7b4eb87250a29bcc49140dd41da57e9193531c0d0630cbe8830ed8a3f4ae6b527e6ecdd04b27f808823a5d8e564b6b9164f63f9553d0afdd8a8724c93ee8c4d6f700a7e069f4471411ae0aafffc312f94b1f3dda9eafba18d2551db4689cda39c6170448f8107edf97c13cb1b65cff5817aa62658fce4e4b5b15ac633558b803f73c9f3628faf7129bc4a4fa80b42b2ca162f8c2e37054dcce634aee3a411db807740939f381e40996ed7c2f683e20ea421fd535d046658d55843749b547d1f3ce9bbe51ba10a30279261bc4d988fad5c53774a2fb06718507e7b3f20bc0f6f030c07276e3bf45caae9a30af29f7397c1722c12051ea2f941a90783e38acfbba892ad63637dc113c0b354253e32ec71ade86d4f0890661ab1506e544576df4f3ef32ff0a15182ce7a178c6dbc1c5a536c6d6e61f1c7f860cd0fca797c929681329b15162933bcc7eb28e57f4a2e7e195399bc917e764218a74f99f7bd5180284d9e5f2fd5651158748d289befac922edefafe47c8352b9f9ed9a6b7639f5c1fbf31423dce815156696f0d3c582fad4af0a3711775ba93cffe3d8dc0149a2ae217c55a46452dd3dde99a1f718185b03833c1ed8deed4ab1d6ad20479229b37b687a991030962682d1ba1f430c2f494dec8a68c482e0c9181655d6eae7ef50f691319485f4ce08ebdbb87551c82122934061024b7619a96f849f484fae363ffb81e655112b7ebaf95d29311e917d9ce3fa0cbe73b8b982df394d43af1b0ac8ad6bab5583cf993d0101fcf1b34682f89d21efa189c8309f1a4d625edda4ae53583de2cd3b38e0e266ed313ff5fea263469ed9e9bc18c859dc97f6398554a7e84b6e7d4e980246a1107eb993a7d84a17d06055c3ddabf62d75fd917b888bf7a8bf232dc0960eeabebb6a87956f6905fe5cc87a964cadc71ae60f8a44264603559a2ca765c6a736a2ee413dfb00a4158823bf8bed5c3af1eb88367b1586d9695349c2ef61f227db765ad473172a835058dd03109c6fd2a3f22da9eb52cb3fd2d5bd4fb40dd4f6a743ca7b20b80937f828f726aac0f90981ac94b18ef2ad5c90d994d386d477deb4ee23091b6c87e26818e6ac634333bce48930a6fa091acd4c82048c5425c83f5d5682f76e20daa2fa0dd6e69af57b3731d1bfb89e6fd39790ce3300e331349c9925c05b335d813f933b9393622582e80ef2f0027133860191fda6ad963de03b6298cfcacf775e58f1099b68408a93835739a96696f36c3dd495c276f8a2f3f8ef972ccbff82a4ea46ec12b2f87571b0b213215548b914d055ba98e30ac9bc6ffb31ca8c4ae7219a69608479b96c7c0a600034d49589a63ac1740eef6994f2354fa7ace3223a7003b99288f397ab6a2497db78b4ee14d5716be55ff9ec291408e9e756c08092e2d8f5f2d994f0bf75d4afbf5b8a9c217df6982b64933c786dbb21d9a9ce4c5532572213922f750ccd9c8e5e08d578a2144240757adbc1bf53581f1ebd54dafe48a9f7102f1d87ae8a346cd4621392c589f73bc94ba1a027eaac7da1e29435398de3a354235839010bfb9fc711be2c84693f550b148913f3a9de1ded6ad41b0eeda1c8ea8eb5839a06fed3e36b7e8a220a5d5e7efacbba56a585c2664483ea68c95e42803e131240ac27499252b7dc5b06fa71b91662690979c5d8ea0ede78a801d6cde3b29aba83c3fb5fabbeaec63871ba4cc5772bcd7f97c78b16170e13f49dbe116300548c668dcb61d798dc834ff6693799e6ffe6f3b32f4f2b71349e301768e2397f904f045384eee863120bcc1686637dfe7152a2afaa1dabce08c8f16f8fd011e87268eff9e16f1bbe07f0bff3e23355d3c94767e8e43bc35bd632ce5fa1f6f983d4b2c1ff9bb04805395b006098e29c0d03facd9dd77d594fbace0ed5212e76425fed9dc96ad4191f6ffea72cd299d0369e1e7534b7585a9a35f430d86b00ded922a9cd2db891b7c203a01355dc78676390bf41598e0ef9be9ff9218f28e417061461d910fef22c3499002299c4fcef26e8352f5ccd036c91b8784205cb3f3c2e0aecff18d89faa59b4fb0cf4ad453be3736d2596bd739013fa8c75bf1e848865952c300be4d0a80f5dcb80d3cfd1f3f3c83a123d3aa471b17c7ce1c7ea50abbe5fe397187ff52438af55b5b64cd8f9a3d021c443d8ccc55befb1c513ae8afab0d5b1bb4154a09b50cc0a4605162cde421fd6e3003cab82cc8ec3ab7ed5d98ed7222d83e00cb61d3257c6503ad52f214f1e5a756ee9d4d4fddfc09d73b0a1378b437456a7bc42d9d43f916ccc61ff126a50841484f0f9addb261f38ac75d7dfcb0435fc4a6092e85d6ac4fae064e95870b0efd4269681099c2bb743773cfc61fd082ceb27c95468193dc1773b31906e638c9928c2d0a57a77e0d4ad0e77e703cc099be8a5390dffe6c4449c72036247db0a76a6899d6046eab2ee121e5d65540ede74eb76cc4bb2438edde71b126ec6be88a54f9981060dd8508b0f635938916f7bf3cba7a104c59b816f3c5256a11e1704c03461d0e9e22133b907dbf1edcc796c2daaaa07c42a01deacf8072a4b76cf060d386b0e0f30546811d03df36238c28c568b900777309c8d2c0e5c711c12820e96626dd88debc6e80c8e0627aef80acdbfac556abb17b91a4372aaf6eda4ce114ffb9fa1d81aadb88099dcb1ad953aeabb48611716aae98c8fbfbfe30d6cfa3e15a409f5d754bf1c2602e2f467cf32133a53929df8d34112871c66da00c7931fef9351275206acb60b6848db36360af2643b7cc793df85fad6c3b4201bb7b2ff8327ae8efaf928a2ba6c36eefd912f015f494a34656bee438f9a9ead1128e03e9b8a6fba651a0e0f0e6f043cb78f76ff2ed08e9796317948f5ce6b4c4fb48c5f5f6a79f2c576f0228be0da8b468f449deb3cc0a9319e02c2bf802eebce51d1019ebfdd7045fdb8a74e108edec98610e6ff95db9af4be713cf78d1a8f11baf81d7cf02e7aca5ad389acdf474490d86abb23acb44c319b2531d2d97024ad5454425ac803c40f19b382bc8e0ff277788e178b055e0a5908fe212efc62a8f86354e3c1a0a653123743b9b7fd7115bf16e4c12b233ff8122513d8bc09ec3a561dc130a901cf7d7ecc43188494bbed9813114f0ea79e7817be2471f437d395cf23710d40573f328490ae37454587173817b7ce18627b40a662dba0bbb9858971a505a0786a98526e49faf0d7aec553a3b74abf28d3c92106ac3361845d49a4a668d743e202ed690171a66575897531e65b453f2b016fc26e94412d07dc5bec7b72d5f2187893f297add3a34daa3a074c40af5f8f8a32d0e3e501e77ae14800c5a96202790e9ca6264d9d31bf4d251ed8c76f42c2efbc8628614fa41942081e281878a1c81b2d80c3e6677fd6e5f9bc016395e6247466240eb911f370a530f88574fe49fb0e8979548f0452e68e6bf6c7d397793b24b59f87613dbfd838397aeef62ed3afa2b6e6a0cf990b6c550a6226d279a60d2b71b2bf3835db14cac660a97b9da52cf76217522e26f4a4e982f3dcec44c2502b27bd70a4e9360f15e7c745de77d75c31c1deb6083ec1b06b108e9e7fe7f06335c5cbae7f39746cd3315a2bbaff3a89818dbf82925520672703cae50ca652b99c20abe216fda3dc7355fbe3290a8aab8ddea9e09f1db68087ade5954fe849e3452411cd8e7b7f5ed6328b69bf4a60ff70b33338c1d1adba6e1fd2ecb47c8e0fd2443124647370a4c384d1d1ffcaf81f7ce57e734528ccfb8370e295acc6f8bda855882ac1eb7ce600465804be853f22708a0d562d1a5aa1f9b116da4b878b9d31ae6a3600d380d234fd20ff9a25cf86c9809c3d9b01ca45b502f3f9257e995d02679b1adeccb7273d330133eaa12015081365f0cd42ba0dfbeb21b49a97d1bd7726113aabcf9b0aa12bf214d89d14f55328ed06d4961579ad3b92174fb9e026494ec7d9c4543fd0af5a68506428051deddb7952f9faadd21bf28cb4feaf7056f1324a9b30865f035ebd89ec201fc3a412733b580499acf751eb8c70bef8cd59e4568bbea85633ec21790d150a4112c38d8080b362233d2b34cd4ce910e83915e3820e3a67a63542ca37cf69681ccedb7d143a92101ff92a504689c40d4e16b78ed46c36602985243e8aa1d57e3bd2ab828ec97b47a5260d9b5312f89b2cc202cf0ca23838cb560faa92b5404f11abc5a9c62827ffd3b12ebb77e074b4628ad63ce6e313dda3936ac9c26f7eadec03a6b00052018a7ce5a8713ef2fb8a9c612e46f40d42c924327cedd0d633e06d9573ced43a99101293e55f432ad6c6013b976b56482f6eb5ab7bd601124dae1141c5c7463424d0ef4df329c58f476b157527e70e4707d93da48c83b4ae0cd14c4b6737b6d88351eecbff6b0bbb58b5f30a8f1cf1f27a8a08e16d565b3a7ff5f08e52a97e0d3729c9e5e50cc844d40c0f52a7c40222db1f55e37cd66c79698337098cd5062f99502ba5e84df0c231b613cf250c40ab32e531b31514955c2c1151ba7ea1b30e6a4c2d9f46ac751b2e2dcfea3a3b37c664cb5d6e18b5dd0c8ea262a80ad66d53ec14638f8b5cba4706f70801da0a143393e40a8ef49767af44d4923b299c44faebef35e0b262c44f62aed49744340ea122469e067c0768a3e62f5c28fbd2b5b1d5c2f08fa7a000c6033a5b1a875862c16b1629160d92b13c691c7f01db56ca9f521ad13e82aa7c2f278377f42b58e9d6035095b76bd9afb0301bdbdff88e8e49aaba6bdacc9affff75278e463c323ab9309bbc61f8080d9ecc9382fe2ac6a17e09208f973bf46c740f543fac2ac12ea0bc5f2dbec026497da357bbb046751baf0a7e4a6ce586b980cc9efefb1c87d97db6444c2cc9faafcb5d061a71da1b154582f3664d0f93d9afdc77725900dd89d29dd6ed4571e1cb131ad3be5ffde3224cee6ee862bab6d2e5b208a94f0957ddafc3ba531b1554b92dfb03c204a0bf200e1c719473a0a1535501fdcff817b03499c35f75251d88fc5f2c214cd55b99f3e3ebd4d130b3e9e653306dd0cc89f5c12d932aff7ccbb42b0321d591b30eadeeb41630537a26737fd68fe05b80832d9f9351b37894ceba26210c54d55c173980eaba7d15495b440a14597c6e80151614d75895b7040edff5365277d3b1eab1bc778c1d981f9d3bd3e398014d34395dab0c1a1d8ce96cb217545a7d5ea4f5ddf48a02351e4680250026c199d5a059dc499ce56179ea3c3b5d674d2f3c294d4327ac9d686bba578b0c921b1576b4bf6f921074f1b0a202a1d4d07eb5c5bfaa2d387ef43d53b17f2fe969aada5082268527394895f514cb5716dabbbbb685dd73bc3624e08339e7c6deff52b9b3b23ff494e08c9e4f9adb8f6491bb8954d78b8156182718d7540be10473724b7ecfb599259bff8ccd0a2b1e5e75ee3f0b2bbac0cc6d2426b69f1a75253bb666d2e64fdefff8066e39874a3e7f5c095a773055c6b69ee086d1591f9c779d7f451297bf79de7246f6bf001c30c7081193a97a6fb0e544712db22d16f7db8d0142f9b9ff4593bd1ed95e88ee455473dabfe97d0cc3cc8067426e4ba2e0421b64dcfc7705dec27579e4bee63156c1321f72ce132289bc088cdbdebbf6a60fb85face1ddae70fe378b0bd2d48e5213f222e3ef6d5eca5536fbdcf0836fde048a975408120f7b8916a0709598c35a127d67f594210a0c8a6c11924dacb12dd60c6f5c2cfce46d20a4d88d77f6dd04954c7f92f6d0e91fbaf5baa22ea8864d009323f14d4b223856c81ac63618e2302ae2304ef7aab1b055313c762b3313256faf39fef46695cd5ffcc9f1ce1759c6a8be5862c711d27b1b5e08af8764109f3e6f26c977249529b74214e2e2bc581ce8029ddb7366567fd5018a3bb2f08ca9698748a58a97b89d405bb32011e083c4eba7d697e721a65504cdc2b85cdfe7262402687cb87ef65f926b35cb326a42bfab6ca0cdf5eae762eca5937197fe342e14b8dada1a0caade5bed7c6379482444adf0e330b1b87b600e75c2f00acd7c501bf4192f1efbefe6bfb7e29949af12e018afed825362fcdc9230bc321057e5348820dcda30e6cddff37b9a74feb6795ac36d86781fb3b537674992990b48be990f5b3a07392f34dbfdc8a807a63e83838444c5a671b810e582f619dc29d5b3d247735eeffd259721407b35994e6d96fbcd09fa754b1fb549a5b0eb1ec17c7d77e6b6a571a8ebd0997a8ffcd8383f70ab55c353992a3bd0f627722009aa338187f8f0f7c781c7d21d0175b0bec018e327074e2e0297d30627b2b081d0b75bd607247401f33200a820f214454c1218ad13a8d9fe1b23baa6e3edc9cb6ecc4ee5ccbd8038695ae6a8307597445951dcab7d9d3bc0843c85efbf15298873d956e0c2fb4b57ba53c4abfbf577f8c68d0cd133963dd4f8a70151e0afa9e8f7693eb8ae51837f63598ca221c29084441f7f85a6de073f05428cb9902f5f825660dfd3df94716e488db0de0d479e65344b3875c8c8524954d10afab391fb0cb65eb804fec6e9eef3a11f5a57e5eb77a3ccfc5087c818e1746bdbd302f44e6f9c704d501d95470013c3ead5b261e6623d9afd0a1af160c64c44d1ef5541c08a735807550ae8afff6cead6b27fc7dd4023721b04cd40bd617e89fb5644e4c0d56c24aa2bb888d8715500e4b800916e55c557d5c4e3a491da960e261c990ec4ebf1ff6b93c446c2e0f37d32da0a08a02888852bb53f8d31a2d47b260b60a2c3aa4ffcc31a067172bce3b9675be9d68c23b7300de8886ad593afd725540298c663100bef50fb21b71ffb993720f4b9ec28788ee70bb9d859710104ba899396df4a8521873bf3f16b53f251715c6a43e8381162537cd8271e3e0c9ab8005ceb8b8aa50d53de6fe7fc67bb80dbf1f1a550f4637725f52d8687fc1a85c7ca87e6eacaaa834df14ab2e0e3d4859329584fc03cf170567c93f05079b361eebfe862362c97ef1052f421c03768f9980e77a2124f1c7e1e85c38d879d9c9db518a25bb58612ddece1a87735b1e966652d4c4291b1eb520651f7eba36d9551cb7a4976dfb2d85c3f36f0e85d7e7074ecc48f793d7305d28b15c7e05b446723266d81d07a4e501c01f64d6413c1d90be95e87b185c80df9ad95e4bb0519eec9ed642e3eca067486289d673f0dbc48ea98640c7e0d9879766275f0f50e7db309ce56730edef2c2e8c3510a21068610e4be437bbcfd0bf62725330885f76344f85f6be07636ae7f463cbc99e7900520548df8727bae92167d5140eeaed329e411e2f1f18cbf52797909613b2141ae7bc8351f94efbc776fe58324b6088ae8277ca146c8d77768973b5acdf3184baa8795b4d7e0569c78bf965b4d4f45de00abbbeafeab5316be9c9f40bfd5779eb2c2545984d688096980c27bd64c9ec6e8d94b3039fab343c60badbba7746f4b497a17edd964bd61f3ae4d63d3f37b2c0af9889f3b2517531d529c80b9c9df37c8df110e651d1f0b587f26fb81690fbbe74b322638d843e71c818eee1eb6fa735cc75017d4dcefe00f73f91ebeb3d4f66988dab16cabc9524ae7c779580e20a8612f4e8eb585c5dfab9345cffdbfb51af32133a187cfd2f3c2655610ffc059f6e0c799cf7bf73dd5990367c8197b0fc0d6b881807dd0a1867f2960f2f6b600a05d3fa324352a406350e70bd9872bcb363df9f03245c2f58af28554e2684bb201c62110a7728f2e7a944619c66cf953e39a8826cfb37ee9565a3ae0b23247a0c8671797b9c795f255bcb9a2bf291e938e23c712907da77e8cae545685f0dacb140b8574a2528572f3cf980a7a2234f856915d281f750fbac09cd13bc2dea19a89b7f8ad6df039d04b8e8ec431eacd28abbb5a424daebc59324b174bed3f4161b69563366e43c867ac4415a3fa3790869aa2fa2a08d4b31db5270694fd1ecc4d3383ab46ea584ed98f8d6a85c4f993bd2735e92bf62ff00f83337adb9d03ee877298810db9a7dedf94d5bd39c01598ee03ac3a8993bd2ec51ea2c3f406b498d6fc05ea1eea6a6d35084f6238ab5005059f51ea0a8fb269b918b40a826c12cdbb0fc61895b33f2a1d27ddf12eb3be160879dffd38f3509c6ed5ac1ce1a7c7871b5077bb660f550fd70eaa4c6bc0f402551d811cde76f35a739b3aad6e81fecf817aa07ffb52a36faccc9b95ceac1f2c483a16267d0182a7b711e88a192c8f98c163d2f629fa2fb2f1edaf9635a6414d3a6f1c606b702c8656c4411189864b18029ac0862d1a95e0cfbff8927d58a20839830aaa97d29d3008a1128ccb91ba458ddd26538f9f6cb7f192136591c5dd6e85ec1a876e8582a362dd69e786a934869327f51c4279f5c670dbf85256073b8d3499fbd69e3ef16db5fa1c5fcc325198b1985af028bb6f4501c6fa7198baa634df26cc639ba46c3d908ab547dd98676a6f968fbfc3522aa1e5700a1616cd73a2644fa33767aab9d2d76ab6a794d81dfba6781c5043433a72624a8ae67d82faabd5fd0c309c5b4054de592eebd73e63cc9dfe888eff396e59e6b3b9e82c9b891b10b6d11f7ab56a79ce69cf567e6d60495523e00d93597ce02e7929cdc993ea7a3fb64a9e1a96022c7ed17be36f21e186c314fe489526b1fe462252fad8c0d5b95c1aed3673bf4db8c5fedf4a682f7d374bbbf145b4f8523809de99072ebf184208a759bc9b944fb670056a76e625395f04b324782ff353f0bc7beae46a6778626825d2289fc591626b06877666e8626f4d7073fdd2eb26718b637e90441672fba959ed52589dfe01b04045b96448657ec18f35f10790e90ba67d0a865992ab29838d6482a5f9ac10ee39637679ad6de429b5629071878a2b13b9b045dff60b4e4148873fc579819b0695a99f0f429899eda984775e0e57bca7c5f5e4b7e42cb48f71db9cf6326bca50ac63c962eca24141e3c02d8fa38afec2efd5124a74090cdaf35970c02f57469c1d54fbc114a5efb06bb625daf7942fb774d698f6bae2d84c27c054c02dd39baaa3c9e6491ea3b08c89b30b0652ef0c09e41ee28f5504eb79ee8f9996eff6055577af7cdcce6f34d44ffa503022eb22811fbfbdfa696ffe4660c25c682decaf7715c113377599d830bc0df5290beefb90fea66c24e236c29f458416bcf8e1a09d7b1b49e700299394bb76873a19da78109102544c8cbf7fb469673f154939be8a4daa0f17ac791137d11637ad062bb1ae2a8ac50e01cd280db9d981a918f9517c20faafd4577dc9e5c7355ebe233661fc33dba7f288b48b63463ba9a6d4e78fd6a320d5303911bfd41c1e6581913101abc7f7f3c3f3ffef830799a59c6cbf3defa293b55cd80ec23feed26c91bc4836c717227ce2017850c0f313fce8b6a975902f86667c3f3455788ee96e90afb1676ac62b639a34af33b7b4e81367fdeab5d107a62aebb7dfd280567fca1a3916525172f648849b3a84fa8bf90f3f98db25edb580b0ccf89bca26f9dd5e186401dd8aa02f6869c698f416dc9b3df61efd46c90994e73cd5a239f2dd1885d7454aa1133a10c073ab9664e1d6a874efa4282df95844884779c74129fdef27f9e05dfdaab9c3d557244d06da082600392f69aa2eaacbb26f15b08f03bd4cb1eb4e3b7342d3f97eaab2ea69c4678cb95514186033fbfe3c4a7b49c4ed4bf926da3ede05d0070c0eafbb3cec83ad50023fef39ca0a4b2962a46dddbb0d48eee4d7273116d9b766a6fd53a19ea1db61b8374de6e9ab71d43e4416ecd5ee639f6347278605921e4a4e3a51961b563af32c2d8d7f4335944fc33f611fe992697d8f7492e0c5ec0a825bf314182d353ab2ebfc153597c7d5013d575b78a1d1f4052780ae0839a9cc1c4f1a354b87a5b6b8bc060d0f84a9c3dd000000000000000000000000000000000000000000000000000000000000070c14181c1e262d"
},
@@ -25,7 +25,7 @@
"gasLimit": 68541,
"maxPriorityFeePerGas": 66377,
"maxFeePerGas": 136097,
- "to": "0x000000000000000000000000000000000000aaaa",
+ "to": "Z000000000000000000000000000000000000aaaa",
"seed": "0x43425e20ad82f0611295b1a8e583f10b45c41fd51837e5df4f2a745a4f4c5014eb7ebae166903c8c99597f7ce47cb9e4",
"signedTransactionRLP": "0xb91c4902f91c45048203d983010349830213a183010bbd94000000000000000000000000000000000000aaaa8401f0657180c0b90a201de9c19823cb94b05ce8a3aa5377e8332c9b2223d6e42d8cb9818c3fed182c667c401160d9e2024e6651382851e120e1fbff1d7d15a4596f626e61af263fd753ee3f80ca801682d7189b2c64bf3acb1d676033e49b432fdff76af56beab1b1e09a8269b4c2865aa9f603e6f53706b849ff1eb4219469fef70eca55d2786ff26373ba730ecd7eedeb77e3a8eee780da5393312446da09883f1db34e4b8e695b3f38b8b2c642f4d067194b2b7b4eb87250a29bcc49140dd41da57e9193531c0d0630cbe8830ed8a3f4ae6b527e6ecdd04b27f808823a5d8e564b6b9164f63f9553d0afdd8a8724c93ee8c4d6f700a7e069f4471411ae0aafffc312f94b1f3dda9eafba18d2551db4689cda39c6170448f8107edf97c13cb1b65cff5817aa62658fce4e4b5b15ac633558b803f73c9f3628faf7129bc4a4fa80b42b2ca162f8c2e37054dcce634aee3a411db807740939f381e40996ed7c2f683e20ea421fd535d046658d55843749b547d1f3ce9bbe51ba10a30279261bc4d988fad5c53774a2fb06718507e7b3f20bc0f6f030c07276e3bf45caae9a30af29f7397c1722c12051ea2f941a90783e38acfbba892ad63637dc113c0b354253e32ec71ade86d4f0890661ab1506e544576df4f3ef32ff0a15182ce7a178c6dbc1c5a536c6d6e61f1c7f860cd0fca797c929681329b15162933bcc7eb28e57f4a2e7e195399bc917e764218a74f99f7bd5180284d9e5f2fd5651158748d289befac922edefafe47c8352b9f9ed9a6b7639f5c1fbf31423dce815156696f0d3c582fad4af0a3711775ba93cffe3d8dc0149a2ae217c55a46452dd3dde99a1f718185b03833c1ed8deed4ab1d6ad20479229b37b687a991030962682d1ba1f430c2f494dec8a68c482e0c9181655d6eae7ef50f691319485f4ce08ebdbb87551c82122934061024b7619a96f849f484fae363ffb81e655112b7ebaf95d29311e917d9ce3fa0cbe73b8b982df394d43af1b0ac8ad6bab5583cf993d0101fcf1b34682f89d21efa189c8309f1a4d625edda4ae53583de2cd3b38e0e266ed313ff5fea263469ed9e9bc18c859dc97f6398554a7e84b6e7d4e980246a1107eb993a7d84a17d06055c3ddabf62d75fd917b888bf7a8bf232dc0960eeabebb6a87956f6905fe5cc87a964cadc71ae60f8a44264603559a2ca765c6a736a2ee413dfb00a4158823bf8bed5c3af1eb88367b1586d9695349c2ef61f227db765ad473172a835058dd03109c6fd2a3f22da9eb52cb3fd2d5bd4fb40dd4f6a743ca7b20b80937f828f726aac0f90981ac94b18ef2ad5c90d994d386d477deb4ee23091b6c87e26818e6ac634333bce48930a6fa091acd4c82048c5425c83f5d5682f76e20daa2fa0dd6e69af57b3731d1bfb89e6fd39790ce3300e331349c9925c05b335d813f933b9393622582e80ef2f0027133860191fda6ad963de03b6298cfcacf775e58f1099b68408a93835739a96696f36c3dd495c276f8a2f3f8ef972ccbff82a4ea46ec12b2f87571b0b213215548b914d055ba98e30ac9bc6ffb31ca8c4ae7219a69608479b96c7c0a600034d49589a63ac1740eef6994f2354fa7ace3223a7003b99288f397ab6a2497db78b4ee14d5716be55ff9ec291408e9e756c08092e2d8f5f2d994f0bf75d4afbf5b8a9c217df6982b64933c786dbb21d9a9ce4c5532572213922f750ccd9c8e5e08d578a2144240757adbc1bf53581f1ebd54dafe48a9f7102f1d87ae8a346cd4621392c589f73bc94ba1a027eaac7da1e29435398de3a354235839010bfb9fc711be2c84693f550b148913f3a9de1ded6ad41b0eeda1c8ea8eb5839a06fed3e36b7e8a220a5d5e7efacbba56a585c2664483ea68c95e42803e131240ac27499252b7dc5b06fa71b91662690979c5d8ea0ede78a801d6cde3b29aba83c3fb5fabbeaec63871ba4cc5772bcd7f97c78b16170e13f49dbe116300548c668dcb61d798dc834ff6693799e6ffe6f3b32f4f2b71349e301768e2397f904f045384eee863120bcc1686637dfe7152a2afaa1dabce08c8f16f8fd011e87268eff9e16f1bbe07f0bff3e23355d3c94767e8e43bc35bd632ce5fa1f6f983d4b2c1ff9bb04805395b006098e29c0d03facd9dd77d594fbace0ed5212e76425fed9dc96ad4191f6ffea72cd299d0369e1e7534b7585a9a35f430d86b00ded922a9cd2db891b7c203a01355dc78676390bf41598e0ef9be9ff9218f28e417061461d910fef22c3499002299c4fcef26e8352f5ccd036c91b8784205cb3f3c2e0aecff18d89faa59b4fb0cf4ad453be3736d2596bd739013fa8c75bf1e848865952c300be4d0a80f5dcb80d3cfd1f3f3c83a123d3aa471b17c7ce1c7ea50abbe5fe397187ff52438af55b5b64cd8f9a3d021c443d8ccc55befb1c513ae8afab0d5b1bb4154a09b50cc0a4605162cde421fd6e3003cab82cc8ec3ab7ed5d98ed7222d83e00cb61d3257c6503ad52f214f1e5a756ee9d4d4fddfc09d73b0a1378b437456a7bc42d9d43f916ccc61ff126a50841484f0f9addb261f38ac75d7dfcb0435fc4a6092e85d6ac4fae064e95870b0efd4269681099c2bb743773cfc61fd082ceb27c95468193dc1773b31906e638c9928c2d0a57a77e0d4ad0e77e703cc099be8a5390dffe6c4449c72036247db0a76a6899d6046eab2ee121e5d65540ede74eb76cc4bb2438edde71b126ec6be88a54f9981060dd8508b0f635938916f7bf3cba7a104c59b816f3c5256a11e1704c03461d0e9e22133b907dbf1edcc796c2daaaa07c42a01deacf8072a4b76cf060d386b0e0f30546811d03df36238c28c568b900777309c8d2c0e5c711c12820e96626dd88debc6e80c8e0627aef80acdbfac556abb17b91a4372aaf6eda4ce114ffb9fa1d81aadb88099dcb1ad953aeabb48611716aae98c8fbfbfe30d6cfa3e15a409f5d754bf1c2602e2f467cf32133a53929df8d34112871c66da00c7931fef9351275206acb60b6848db36360af2643b7cc793df85fad6c3b4201bb7b2ff8327ae8efaf928a2ba6c36eefd912f015f494a34656bee438f9a9ead1128e03e9b8a6fba651a0e0f0e6f043cb78f76ff2ed08e9796317948f5ce6b4c4fb48c5f5f6a79f2c576f0228be0da8b468f449deb3cc0a9319e02c2bf802eebce51d1019ebfdd7045fdb8a74e108edec98610e6ff95db9af4be713cf78d1a8f11baf81d7cf02e7aca5ad389acdf474490d86abb23acb44c319b2531d2d97024ad5454425ac803c40f19b382bc8e0ff277788e178b055e0a5908fe212efc62a8f86354e3c1a0a653123743b9b7fd7115bf16e4c12b233ff8122513d8bc09ec3a561dc130a901cf7d7ecc43188494bbed9813114f0ea79e7817be2471f437d395cf23710d40573f328490ae37454587173817b7ce18627b40a662dba0bbb9858971a505a0786a98526e49faf0d7aec553a3b74abf28d3c92106ac3361845d49a4a668d743e202ed690171a66575897531e65b453f2b016fc26e94412d07dc5bec7b72d5f2187893f297add3a34daa3a074c40af5f8f8a32d0e3e501e77ae14800c5a96202790e9ca6264d9d31bf4d251ed8c76f42c2efbc8628614fa41942081e281878a1c81b2d80c3e6677fd6e5f9bc016395e6247466240eb911f36f55262c289abd3df22a8cc8b1bf8b672475f799d01b6c250932279aeac0eac23acf86194fe5503895dcca80a43c0dbd174414b241b85983f9831b11490bde3a06b4eef1d7e1fba68ae12261330ec0c40fb6f124fd9d754f09bff1181aa0019a5abf7638cb6342513fd5f74d109fa828b1ea663f1472226e4bac8d5bc349547db8ed027d02ec030d53b5c1470dd3c94d3012d8e0abccd8cf916193624d7655691e150ba27ab7894ecb67f58cab7cfd4798ece2fa2f202ba5f55e04e7bf819c9fda95ef25a910247add60d3f371370a9016e972941e1c0352b8fc0c37386b15b3587f104e2de1289d637e883c2fa1be6dba5ea48a31c8c9cbd0627e622458c8eb4a39e9b88a2b0a97a8ac57c2a89e30c440dfe9bfd30e81518ffa5dd4fdb09490379d46c46f9d0dfa324b892988a5ad25f256e5b7e1a49efc02e34a4b16d69c0e796c8552efa2b4e70e9a9aa0dca66f2a635696dc281d7d388c2b361e321aebf175052b425d2928e955a777b40ca602db96e894c2a8c32b10c421f3ca35b7c6cf66502b9df8253b26fdf51d13d56aef552aef954ff8a843581d0b3be8f2ee9ddc2336921c18fdbe205b7d59caea4612194fee2aa4b915ae1a19001f038c434f4fe3965ed9b6d4f32f143cb477d252035d6cc768bc204f2e07a16089ea603ebc2a568e89de9c574e89e222a8f7a718d4209382f9824ccdb872f891560edb7e8e1abd71213a5c589a69e42fe9e234e6a5a0600686efc3a916d57c75a5bf932e9f19c26e2256d4dcaee036ab885fec9e03b99fdeb6b63fa91cc29e1bb8ba47c9bd85bf553d1a5767816983436ef2e0e763b79c16103e8133770048001c9d5ce581605aa12e9759769cb6522cfe270cdb9a3894d893d5ce5b02f10d2743c2852d70678ae5837b62dd0b4f3a7c1b16510782f195e46767a13f666d60049711bb80fba407c950baeacbb25697a53f3583b6dd43bee58e9cc542ca2afce49fabee99e4d6fcaf0034b26053e03fed78ae1e6113cbb5257300b3a5ff0597765e03ab6fc96961b18bcc44530673e998d257a401a45033da6b5861cf06f16785f4b855b2e663bbfcff752dac281421d1bd80ce597fd7bde69363983177430509497d73b2ef06d7dc25f7ecf50db9f8984883508a46027abaebd2b8025174cab0408cd24afcc59ec160ac22224e70c391b075d119a9b309b0f43b195fd14e9bfeac44310eb80fab2b8854c73584a55a093c1e68a17a018a9dc3723f3bb331ed2fed124f90087b743cd42e50ca5d41710b414ee6e7c79fea2740449f117b7123c25ac5db5ffbfa8fb88c5680a21aa739172b2c030ec55be796ae2176b74dcf0df41dcb8c510b336f88b1ffcdd9c5edf4a9280bcc047864d750457aff3eb80cf252d5822a34ea20ad1570fbe86e5a1c7c03c120d503cc62784fc15dc21dba0e4c8e13f1b8ba3f3a486459a69950e72439323aefb84854050beffb46f2909768d9e420cf8f3d10a09f2e47dda14be1c749daa584b114452ead0882382e8d3f42aa34f76dd079e768d630ee6ae77a1da4b3374184e2a264be3c2b8f040cd9547d867042b10ade19d6c157b859b2eec005a5828cc3929a2b4c8e2ab881822bbc5e92a629975a82022a3508c0b3e30134380c810fa2ee58c7afe5047c26e3f48f2620bf88844d3696e926f4a889c91f95ba523533e0d4e2b8725e06df80837473403a56da3861f9d2a83d5934776e5e6fadcf86ca3822f09feee60277df90e575b28cbcfc6faeaa053500812b64267435a45e500fc6577c65d5fc60dbe9f67a4c5ed5f4e9afb401ef9a579d63c6f3a8005f7483a0a49885b5fb2e3243b3b5492b7050eeb661e55d9b73cfb4be6ea5b912037e60e0ee647922fc6a4cd779be6bf311531045ac29eceef4f1f0da2ad1a3df1d4dd1bd11614b9d36407ba6585a79b2e6a9ecc2cabc49d50cde3ae5469088e8ed4c18a3c80451cd98d65457a2e75d27ed24936934dd0162516dcdd83099700083184c80850625f28cd934f7665ad1d2b5d3f7cf783aa30297056f74182d06e6cba83095a13ca31e1e39934fe0b78d68ef7b29480b304541fddfdb805700cf688831a05b9c725c0641cbe898f219b0ad985083df109065c92576a4db0863f526b830a1b637fad9ccb5a281153f5c6cd79ce924f7d60ddd8b24bd3b5d8033a27d4c0244ae0f51820133318d1f20c74d4cf6e3706b707effdca86ae3f5c9e16bb4a7f974bc8d1016ccd28591dbaaed1ce4ca72c7328f5cd3c76770ff68bd52e83af101b337ebb9986d809a5d096d94bfa74b5f5f1f75222656baf814612f9f3a10b5842e64dd93d7c23b9e587dbb02911a17309e00f505446067c20d7e6520e0b195032d366ccda99bd186721acd33c0e9e744c162005b512837330af1a4b167b0a97e3d18253c55f99b5d68ed0295fc8b3027d361bcc0653baa4c2aa206fc51793038e484c2c06d5ac18196c7a5f537402bef5793418ecf202fdc2ff603d5484f9507d900d9733c209787ce65d359f5c9ce882cb51f23a412c16556b3a6a9704c132158180eb93e9a6d339b99ad9fc73dedcf695aa1c07401d7b29862b258bb7df8bc7901f6bebd327ab23a972a14a94635e2f95d3cd082755c5619f5b86ba409054c32405346a119eeca838c8903c4562732cf6457320ac7155d025cf9f5d31f1d8a7810cf2958c2f6d837e69b368b38d002584bfe7ef78dd5ddadcb883aabffc697b18a2aee90c680ca1549cbbced7cba3bae03c3593f3eef95af2dbe4bd879a36d5832aad0ea8424d42353e73955d26bbd0887d1eacb17ba85af57f1c13d3bbda9a8a072d2fd8da93101e76f67ca154ffa80715e1f2151352ef1dc0b77f4ac6a257382efbe46399a098ea40cecdd21f11ceaee3baca7955b6109df0733658d01a9244b7b6ce39542ed2fc6fb274f8b29df13903b10be91983f6daee286d855cc75ab5e06c0c2ea71be56beca6b99026cf748cfe57562095a1e4545e52e6a55bf176e6b5f149179695edcb36219a4a7748872e0f9aeb096691925b5319c030bb757fcd00143b3346ad6180d62ab0385049975afcb284f71793dcec75bd438bea5ad107ca0162a7d116f7299cdbbf330d5f79608c7206e87a181d0af3ec47163e38a21617ebb850398c8a6beecdbd47b35718a8ac9207b660c4488569e3c5368b63a160c16fc1caa7c8474815305c8718bc73eb9f0aaa3a137dbd1e79fe29eaccb3505cc6f9736c640ce52f4b65d8d82c6562774e9ae53522ef98637c8f6febdccef6cf63d9a626d3e2502716af35696b48ef997298a5722ef7779ba97b377be34a2030e16cee6bd36bc18d0dff876121d4d25897d4735f4e5d5d956a65f6bd4e2089d4665d82de0498a8f0eb7421b81832017e827c1a48a8c49bd0cf5e1d296f1be4976a4b4bac101022fab2c0b023bdd9896254e4ce67d8f9854a432e7332001d87c585b634d98268046bf9ffa9b897086cb792d7e4d569b6fdb5d900671fe66d0036743f424537a325e63e2756f178cfa13500d60a57787702341e9b18c6c1bfbd9eff186e6aff13734527829fb933b5ef724ef8348064d08e30cc1627e41367877ad88693c1f90edbc0b771a6b8d6da57e812f9db7f63ea5d440f21c3b953fd16142a0cc50bd664e220dce1378dd2cbaa3f5a55745ea0ad63b65195058f7093729ab5a64b95cb046c119675bdb337b080eae6a54146087adb08a5ea4a62b02d6f95d0c64de0be8a2524c278b6238554f81a8daf334abeb31e039da921c0ab3518bf384997a123d558d8c540b66a2159f1fdc54ccb5081497b078009fcfd7304f67c09d414fe68e1b7797fd3e810ec6cc62f8958b65dfb344313f1a6fda6769bba16e450be277eedf9cb716c5f0e2afa05dc0bbc2583e71f7e07767b77f2170ae236794ca801ea9f4ae7b62463696e0f09c60b2d6bc2e18e513610e2e11bced82408e4b188567751aef2c6bed97eaa42b4f7421cb13ad9d6717de614c7b5d5ec52fece40b706ad6cc2b8a12cf464b08524170274bce3444ec400e5481accffe77d57d28c7290b071e873332a8f649067a19e6546b26ae91a786a368cbb1aa3617f2760c893eb753222f6b5bc4c15b06f7d0e35c7304c5582b9e2980534d04c681efabf641aeb979b42f7aa980ae021f393035da5f71d127dec1c5cf59999dfdc1100a52b0f36e680bbc13e84247c0661163f876eec050ca78bb9f9a931dec8ccf17562c4f31e9e2bdf055e77f80885c896f69b15855748e77c8a0d1b326fc063fb3894cf8387b1b7304b53fec5620c34180d0aeff6f50a2e87de49c8de44867a7eb903219ef99bc0692bf8ce073cd9af7154463442ba87353da22481271169eaacbf091fc4a2a8ee5ec6abbd2051898bf2603ca621daee683443a0d17a68b91b8ae889bc303231c24c0e182297370583ae12835a335d5a4a5621bc9b49651768c19e029373737e77219cbc5a195fe4a054df5af506a87e1f2c8b6963389c7e0b399efb22bbc21ab59fe60d46cc71fb557a7be33f7466ef74305015c67979d1e27876ea054b5f58f10dc6e1b954e5f1c376da7b8dc0a21d77a56f5f3b898783de66eb1ba68f2e81d84c0095050f39b80a090824766ba1fffbd717a6f3b316a6d5d4ef3e3855a130198a8f6aec3aa059aff46911ffb9affea7851f3d89afb6f131d7931835fa02bac26ec37b37b2b8489f43acafe45cb779e570d544b4e8e9e1e9c5da6df7e87e9262b58ffdf85ede26f28487f26779d07cf9dad2e982103a430db7ae975e66c9a08298df4be05ebc536fda0cd40462131f6a94792d81d534450ddfcd6b2555af103510c3d0d01c03b66796c89a051a7c59ace1a22ef2032d891600184d927b37935d48cec718600e8fbdd15fd0bf743add5f6501f3a1a64bdf364755a4189f1aa3c882b5d17446d1b69ab356024dd6392126deb9737bb6443a6dc5f2688ce49db7de7ee4c91cb1831f69c0678b60f8dc7aa0c610f51694b81de166ac6c09a69dcec1def48f5c9652f327f308a8093776e21917fef6387924d5442192ce25be27628429aab7c5ccf8f2bad9974537448c00792d9f5fc708957bb93cadd541971badf141191e58eca1c4982119b1c6b1fb84b76f050d05147b99f600bdff6730d3ede65eb9f2f3dc5122f624427f2cc0e228df17d80c06ad1ee1913d5a408c6ac3b37808d70d697d6728e60aab51efe8de7bb60a6444fec52be8c20c030a670da0635d7c42cfa2c4bc8e791925662c457a83fb1238f83555e9709e21cba529cd309fade5a4561d92d0d01f271c091bdffb74dcdadf2381e20f6f6980c6a0fde839d0b40e6f30030a04e4e185b487f886c000e560bf9e022205fafbd57b1c4a7fe07cc1855026324788f57d9a7fe7b8e3110ebdadf5cb6d47a91949297e9c736f289f6d8d9fb514fe2d14a180e2dab4f92ed42a220da0c53acd26206aa08a75706697748a31efae233d2427cee5af445b7eeb39a98d48a4dd4ae5c7efa6131ca3f3d163c01473e981d70338fe461c6ac02013d810d62eeb816b7069b128d1ebdf28b1ecef383c753d51717cda4632dff105762489115542af8580cf9e1c4a1aed8c97a4e1fb4426785687fe201cd4b98e8fba0496c753ef41a465e4b0b3640be7946e73e81bde4f983cc1bddf00c83a03cbdb1078c8bc35765aee8c1ad0f0c2c3cc3b5faab22b02be726b30163afa2cb14e91264467a2825022c28eea1ec3dc6fa52e4b5a18b549a08252cc213207d3bc7414bbcc8a666310d371fdf293847a243acffa95e84b84b8345e8e4f0e8c927c233c0822666b22ec7ccd0cb63131c13a628fc0ccffad55e0aaf1b40ad2b77c7c24c3548197cb723d517e2db6cf0a2a8ed363c7ebaa406162ec3b8909164ce37600ca38d9bc2397d920b6b12cd2e77cb38f68dae24a94479e7be32c5ccc0b92f3d152269158cd1c026991a33d1e35ce0702eb416e592c28cb9244e599c5616bbef26bfe6b5f9284e3fff989be28a5dc562a602e7d3ec45062ee9664182f9b66e088e70118d98f716a92351f49bcf0e3ebcb7efd0bdc9079ad1542426d95c71f0ed13295980e10fe993c93d4c1a96d20557055ee86a9fe66fe2c7bde85727b25114e6198a5a1696a5d21556a901be2c708e3bba02b3613311709b8ce69e57942432735b7fb61ba3aa1209b8aaf0e227bab4473954d66e5b2a5322f8ca6aa7754d5f2097b9af6bd29eecbca3c810e99709836cd6a0fcd305723bdd3d8abd1e7a6544a96c449e4789def08770b6fe5bf6217b5f2651fe1d0e04749ed7440562db860879f0a65313b523613adb49462972aff95c323fcffeeb3668b9763cb73627f282349524447fc16033a0dfba78fc170e6ec398366cab084f270996e53ea44cbe96336d4e5eccd3e6021b38536b79bcd10307253a5785122138939cc1cfea0a3e4e75b7dff71c3ef2f81e22233d6e0f12466b81969cb2b3d2eef40000000000000000000000000000000000000000050d131b22262b37"
},
@@ -35,7 +35,7 @@
"gasLimit": 57725,
"maxPriorityFeePerGas": 74140,
"maxFeePerGas": 81173,
- "to": "0x000000000000000000000000000000000000aaaa",
+ "to": "Z000000000000000000000000000000000000aaaa",
"seed": "0x43425e20ad82f0611295b1a8e583f10b45c41fd51837e5df4f2a745a4f4c5014eb7ebae166903c8c99597f7ce47cb9e4",
"signedTransactionRLP": "0xb91c4802f91c440482026f8301219c83013d1582e17d94000000000000000000000000000000000000aaaa84014a598780c0b90a201de9c19823cb94b05ce8a3aa5377e8332c9b2223d6e42d8cb9818c3fed182c667c401160d9e2024e6651382851e120e1fbff1d7d15a4596f626e61af263fd753ee3f80ca801682d7189b2c64bf3acb1d676033e49b432fdff76af56beab1b1e09a8269b4c2865aa9f603e6f53706b849ff1eb4219469fef70eca55d2786ff26373ba730ecd7eedeb77e3a8eee780da5393312446da09883f1db34e4b8e695b3f38b8b2c642f4d067194b2b7b4eb87250a29bcc49140dd41da57e9193531c0d0630cbe8830ed8a3f4ae6b527e6ecdd04b27f808823a5d8e564b6b9164f63f9553d0afdd8a8724c93ee8c4d6f700a7e069f4471411ae0aafffc312f94b1f3dda9eafba18d2551db4689cda39c6170448f8107edf97c13cb1b65cff5817aa62658fce4e4b5b15ac633558b803f73c9f3628faf7129bc4a4fa80b42b2ca162f8c2e37054dcce634aee3a411db807740939f381e40996ed7c2f683e20ea421fd535d046658d55843749b547d1f3ce9bbe51ba10a30279261bc4d988fad5c53774a2fb06718507e7b3f20bc0f6f030c07276e3bf45caae9a30af29f7397c1722c12051ea2f941a90783e38acfbba892ad63637dc113c0b354253e32ec71ade86d4f0890661ab1506e544576df4f3ef32ff0a15182ce7a178c6dbc1c5a536c6d6e61f1c7f860cd0fca797c929681329b15162933bcc7eb28e57f4a2e7e195399bc917e764218a74f99f7bd5180284d9e5f2fd5651158748d289befac922edefafe47c8352b9f9ed9a6b7639f5c1fbf31423dce815156696f0d3c582fad4af0a3711775ba93cffe3d8dc0149a2ae217c55a46452dd3dde99a1f718185b03833c1ed8deed4ab1d6ad20479229b37b687a991030962682d1ba1f430c2f494dec8a68c482e0c9181655d6eae7ef50f691319485f4ce08ebdbb87551c82122934061024b7619a96f849f484fae363ffb81e655112b7ebaf95d29311e917d9ce3fa0cbe73b8b982df394d43af1b0ac8ad6bab5583cf993d0101fcf1b34682f89d21efa189c8309f1a4d625edda4ae53583de2cd3b38e0e266ed313ff5fea263469ed9e9bc18c859dc97f6398554a7e84b6e7d4e980246a1107eb993a7d84a17d06055c3ddabf62d75fd917b888bf7a8bf232dc0960eeabebb6a87956f6905fe5cc87a964cadc71ae60f8a44264603559a2ca765c6a736a2ee413dfb00a4158823bf8bed5c3af1eb88367b1586d9695349c2ef61f227db765ad473172a835058dd03109c6fd2a3f22da9eb52cb3fd2d5bd4fb40dd4f6a743ca7b20b80937f828f726aac0f90981ac94b18ef2ad5c90d994d386d477deb4ee23091b6c87e26818e6ac634333bce48930a6fa091acd4c82048c5425c83f5d5682f76e20daa2fa0dd6e69af57b3731d1bfb89e6fd39790ce3300e331349c9925c05b335d813f933b9393622582e80ef2f0027133860191fda6ad963de03b6298cfcacf775e58f1099b68408a93835739a96696f36c3dd495c276f8a2f3f8ef972ccbff82a4ea46ec12b2f87571b0b213215548b914d055ba98e30ac9bc6ffb31ca8c4ae7219a69608479b96c7c0a600034d49589a63ac1740eef6994f2354fa7ace3223a7003b99288f397ab6a2497db78b4ee14d5716be55ff9ec291408e9e756c08092e2d8f5f2d994f0bf75d4afbf5b8a9c217df6982b64933c786dbb21d9a9ce4c5532572213922f750ccd9c8e5e08d578a2144240757adbc1bf53581f1ebd54dafe48a9f7102f1d87ae8a346cd4621392c589f73bc94ba1a027eaac7da1e29435398de3a354235839010bfb9fc711be2c84693f550b148913f3a9de1ded6ad41b0eeda1c8ea8eb5839a06fed3e36b7e8a220a5d5e7efacbba56a585c2664483ea68c95e42803e131240ac27499252b7dc5b06fa71b91662690979c5d8ea0ede78a801d6cde3b29aba83c3fb5fabbeaec63871ba4cc5772bcd7f97c78b16170e13f49dbe116300548c668dcb61d798dc834ff6693799e6ffe6f3b32f4f2b71349e301768e2397f904f045384eee863120bcc1686637dfe7152a2afaa1dabce08c8f16f8fd011e87268eff9e16f1bbe07f0bff3e23355d3c94767e8e43bc35bd632ce5fa1f6f983d4b2c1ff9bb04805395b006098e29c0d03facd9dd77d594fbace0ed5212e76425fed9dc96ad4191f6ffea72cd299d0369e1e7534b7585a9a35f430d86b00ded922a9cd2db891b7c203a01355dc78676390bf41598e0ef9be9ff9218f28e417061461d910fef22c3499002299c4fcef26e8352f5ccd036c91b8784205cb3f3c2e0aecff18d89faa59b4fb0cf4ad453be3736d2596bd739013fa8c75bf1e848865952c300be4d0a80f5dcb80d3cfd1f3f3c83a123d3aa471b17c7ce1c7ea50abbe5fe397187ff52438af55b5b64cd8f9a3d021c443d8ccc55befb1c513ae8afab0d5b1bb4154a09b50cc0a4605162cde421fd6e3003cab82cc8ec3ab7ed5d98ed7222d83e00cb61d3257c6503ad52f214f1e5a756ee9d4d4fddfc09d73b0a1378b437456a7bc42d9d43f916ccc61ff126a50841484f0f9addb261f38ac75d7dfcb0435fc4a6092e85d6ac4fae064e95870b0efd4269681099c2bb743773cfc61fd082ceb27c95468193dc1773b31906e638c9928c2d0a57a77e0d4ad0e77e703cc099be8a5390dffe6c4449c72036247db0a76a6899d6046eab2ee121e5d65540ede74eb76cc4bb2438edde71b126ec6be88a54f9981060dd8508b0f635938916f7bf3cba7a104c59b816f3c5256a11e1704c03461d0e9e22133b907dbf1edcc796c2daaaa07c42a01deacf8072a4b76cf060d386b0e0f30546811d03df36238c28c568b900777309c8d2c0e5c711c12820e96626dd88debc6e80c8e0627aef80acdbfac556abb17b91a4372aaf6eda4ce114ffb9fa1d81aadb88099dcb1ad953aeabb48611716aae98c8fbfbfe30d6cfa3e15a409f5d754bf1c2602e2f467cf32133a53929df8d34112871c66da00c7931fef9351275206acb60b6848db36360af2643b7cc793df85fad6c3b4201bb7b2ff8327ae8efaf928a2ba6c36eefd912f015f494a34656bee438f9a9ead1128e03e9b8a6fba651a0e0f0e6f043cb78f76ff2ed08e9796317948f5ce6b4c4fb48c5f5f6a79f2c576f0228be0da8b468f449deb3cc0a9319e02c2bf802eebce51d1019ebfdd7045fdb8a74e108edec98610e6ff95db9af4be713cf78d1a8f11baf81d7cf02e7aca5ad389acdf474490d86abb23acb44c319b2531d2d97024ad5454425ac803c40f19b382bc8e0ff277788e178b055e0a5908fe212efc62a8f86354e3c1a0a653123743b9b7fd7115bf16e4c12b233ff8122513d8bc09ec3a561dc130a901cf7d7ecc43188494bbed9813114f0ea79e7817be2471f437d395cf23710d40573f328490ae37454587173817b7ce18627b40a662dba0bbb9858971a505a0786a98526e49faf0d7aec553a3b74abf28d3c92106ac3361845d49a4a668d743e202ed690171a66575897531e65b453f2b016fc26e94412d07dc5bec7b72d5f2187893f297add3a34daa3a074c40af5f8f8a32d0e3e501e77ae14800c5a96202790e9ca6264d9d31bf4d251ed8c76f42c2efbc8628614fa41942081e281878a1c81b2d80c3e6677fd6e5f9bc016395e6247466240eb911f389085fa58011caedbf477cec0dde4f48dba516c75eaa699c11914cf32ed10da864138533635a67e4ec4b09fa8d68c13d8406b61aa8de995926dcce96276202010f5b9814e55f8239b9fbb5db686d8e2b182a6008c4013e2abbc13daa757622c87a6a438eec4adede24fc010fbb0fe1c6f2b6524494c60096c85bfaaa2d626edc8f810bbc46a67ab8e401fd90b51ea0d67ad0f0789b5cea998c1c7b89af8db6255a29752633c7dd30e32c29b64c0aa7ff088eb9857edc31a79d0a189ec2d7074bd1931739b6607ff9eaf676724c51712fd3f55311fed92ad0e34df44dc3397e61fc725bee343d2cb73659ee6a25001eda75125e50f7015d932bb0fa03c3ebb217ba67d2fd9534d37f807e4bf910b038ff9ee9dad8f3b4abccf085816e6205be0054907322fa4577a4bc4f210570b1b9148b43f74acfbb0f6e222428de5c55d6e2c50b98c34435a81f68ed3bd126f0fc3fc5116a0fc471d27ca229e956b6ff18ebe9b4c91a0a5428d499dd8c6ad0cb856949e0bbd8427b60a9f6910af9957a0d037b0a2307a799f43b32a7797cb06a6f5156d8d7b62c0562ef6dad2e95e2d58a1a30ff31863dfae96fb20462cf4b2203bccdb8e6fc55fae2f442a13772d8ca5c91bd4d6e454595b257824ee61378ccf8280976961c128d39942ea3ee9a06bc5888bdf29a242ed4ef97ea030b9bf630b2286f9c77dd2619652086b2c6d8faed92900d2ee5a4b49b3b4100a827699f6fb3c31ad97aebbb21599f4cf235ee1835d57fe9451d495390d7ff76f17c1f3a408925f1bf536430408cdbab29956bcd4d00118510865dbe35a7170df4c3f71f61b3c759f0fe03d67c21374ab442f16161ac21f4a212f31a4f69ff9628228a3ae3f4f189e3bced753a2a521f1b23c14904ebbc6a8df8bfb3425dd46698383c856fb040e0b9e58069699aa98631020751621fe5ea8058b27394f25873213db3742e246bf9de2a80bc3652644a1e4e7f1c301ad972a3df9f46a43e11751f9e6d89a5bf874f489a5a777bea7f6f87b1ded3f8ea3b7a0adf16d2c5b0b19290c4e028b56c8e3ef78c3345cd4d125cfc36b5ceec6b894321fdac094344f0a8907833f99ff7ceb2de10052a9a9bcbdee92dda96574674cf5880310225cdd23944c7da96084c1150a1eaef5a1ccb609c0e7e378127d6c5ac5f5a5f9d21c664770ab6a172f7abad5a024faf567614dce5f2e4e369293065b95de9c847bf1e9784fcff8e93af466a1a8e49abac8115d1cafcf78f6123137d657c062b500a8bf1c44f4047466ce95a55f92e207019e687cb60c91e1cdbef8130a0818db3eb59adef3e950a1dd1ffceacce3c3fac005b04a152ba27b5582aeb3b2ae3a1fc790bdc8fb754c52eeadd39d6980ee16876d431f7d864e0f6a526c8225c50ff440bd560ca5fe06bd38a5cfc127b654aa4ce97acab67d69fa852bb52e644b40767b6256bf5fb54698e0fc2cfd5b5296fb6fe50a15a2ea1298440559186886df7918be0d49cbeb580e0644ae72ec28801a6e0136ac8488600eebe53638cd0f50cb94cd6447f0a06cabb4fed96eda6add82f5d90b6ff1b1215bda7a18ce512efaa8259ea5a40e766602202ea7696a3b44f794374f7e7445ccdb35f0fa35a91e73d53f979c8261c434141aeeee21d1b23a4df15db58ef47fdf7dd493c8cc9c9b6eb31ca0afa52a4b6bfa08551562c4c12e4edf74f6f88982a86b4a1ab1b7b5bc9e0569a58051fc3134929ed8acaa8862766e9c57babedee0a092f9272cecac9f0bc5484ce48e38e7ca03e2cb272051d45bdcd4276847b649baff4d8d3a10d04bfc8f1c54329896db75998afaf07a4fa9b2191f000d4897a76b52eb860bac2b25b21515a3bcdeed9719fc868bc8e47d8f6e658ec6945ff7ac0ede7a6f79de1f0814d4ab752585cf86945edf8946f9df8829e136005d0750928cb7f2c9e201297569e0998204b1fa4a153081a6a7342c05b1b7f0b88ce9218b62e2451b22ec17a7c330070245c1e1519752b47aeaca22ff24427b525ee9b4eca5a08a49a6eca22699bb3d43f5266decb9985dee040a485830709a171f620917fdd2e7fe1f5e5bee0430d3a480fa7745493a506d1e3637b11744626fcdc690e52c077ed2fb40de755019943ab4607a01e403de777046e30de5730ec9accb3dd62ed888c400a5c1e040a0d7232e9640db327da1e88d482c55fbf241e83ccee14fc51465b5f6e23206033299222b3f5fcb6992ca5f4506d710ba8deb051627f6b8e54c5ddb28b3f1d28673f58c36b57bee171339fd949306d1e0e74504d2ff966cae07b2fa3dbdf7758d14aa7e1f5483af18e1aa3649abb1c015eccb9a7f4bb84000ad319a6348611b4aa1ee683a8f051b0118eaedf3ae967f9fcae1be3385a062e6f73cb65a22da0f1f2e7119974c12f5c6a2aa5d79ef8582d70d8b1c36dbbd2d03ab958f7ab219c4a3556fec7aeab9a26c56e7a0876de4809bceb43da949a7700ef4b6911fc3800f78ce93d34ac938caa48b946deaca33f57af49cb0a7f9b717e705c3aa30c92e8a3c8888b2a799d2b7825ca521f065a75f1d4df95b6da85c538a4208e0ba7c6809df543f09c6e197b3f41ebe286c714a3a9d96642d149d53234e085044f153c404f2fe95cca01fe802d78852f5694bc4e62c39cd745c085e33209295844527bba5c5a04a3b1f0539b3512d6596d21e57412eef9e7c3624366a49cca2eab0cef5971a57079bdee46f8315c117a6b2a1586de54c27edd29c9092a37e68cfa0b9301e8bc024c8d8179b2abe0cd80ace0113b231def14dc9353721cbe328db23a7a9ea189c57f117fb62ebd9ece7982b0fc9107b70240d46432b70d429cd1e56e6be8faa28ee392506a5b68e702ce946f1351039b39e53c6fe5194d3d4edb6c430cf353db073fc76be339c8dfc07439d550da81c4ea01413ffd64ee2272081880ec124d89e30887e6c2f227057acaee2dbe0e4b5666b770c3eabfdc1f22ab37df8bd8a0a8cf919075782fe159020285142365bb3eb320ac807036a62e508f0190b02e06382cbd7ee5794e159682ce0b2594597b3f31d2652816b728628a56b5bd660d98af99e816632fd81a866b9cf874b4b32096c2a417ebda7670d3b90abad137605fca5064e7a64f9d0e23f611b1868774a2c391529edb149906522977133a9c0b5b181aab76a03ccc1cfda7853bf0a4756d51b6e85a605e57e5420dcf35a8297a8c14c32d7e6e49886dbfb5513eb7a06e255ae9c39c022c24a441993acce31f39467e4d37241a1c228b66611160c33e4db7a94891536a60180e6cfb04fd0d2525ec207c10026f474c0bac29b54b667afcd7bfb50f4fefcafd1bd6e10f8678ec223b7cef75ea6f472bce3ffde2f996b106a26a87caae61edfe9c5b87ecede86c81a4e6d4fc27c92b7fc58f25ddfbe569705fbcda0295e5690728962fc95297c93ad53b052ab636397187946fb88bfa4470a689f89327a9dfd295aa711608a87834a281ff4bac7f3416c25f49ccbbc4867b1d5db9926c30c9f4e1a412a38f0e68717e1ca6b80e7bbff28c2a67739d1267f69623dc8caabd571e0c54ef91c02355353b5b2d4f82196c3ba377c056781740560f9e50b0fc1c4a76b69f301f9d2552cb7c464c218a1c135c0ebc2796ee47e00c054c0d4bc0a723fdb6715d65129fc5aa19f696cd6d1dee8ba9f149e3902d65effe47df633721e4cfd4d4c8414a22013993a2db666a3d212cf5b8350666ebe3d92fefe90cb270b7b31949dda6506a590a6df466ee4ca8154b7acae9b07cfd5d3dcd9c093bf2d70ddf57c8201527c2499dedbc029b5e408a81923d069f5d7a04a0d9535acb0b0c74e024ee5c39e58ef9ed3ffab125d728a0eaf6b027a1ad11aa4cfaccef5c53573a90dbe837bf3ae0a24431ff3da8cbbc3299a8be040ba18163846851d6a50200233bbfc1ffe838331f0e62a842c17255ae399e00c0a811d6aa51268cf7cedd261a88cfda36b8a5bd04508c89815ae9e4c418657db1654b67328d14b099d48bd0989bffd512470f7aedd8c58946319a0f77d46754ba9d57da27732facb8beb0840b47dfceb1ac53aec85eda558c5651e8ed05fc0e9bd5d30d6f15104e07eaf3b53487b012ca651512d2f401cc990de6258da8f603580d00be75c38aea270aeaff59ec63ee4fbfb1f80b62ca97fe6d7b744f806804f13577a8c2c07638073066982d7cccca30abba1072f8db33eb810881c23c3914fdf092e94ce28318c0e4e4078ee508657db4b6d4fc764e8fa3cef48bfd488d214ef0e76b6a24ffd42974400ff161e1de09264493a2533a802b83dc6b09a8732a01912e9ae1f8205e2ce63c587c57b668ec941969527d1ad829ce056417a7b73f6b1a65f6a1041fa120569d6c6a744250ca9e7c92052971be608e38a51be6d5f83bb706f49668295463baaeec5e0d17f788057e0ffc8a1c2ecaee422fcaabaeee6f00ac2a983e4c3035b9842cf04c94506ee8c4e328e94f8c5ac60694c82addf0617721ad5a4120f066cd833765f8fde78234d6dffef86343527c4ebaac4968e3ae33de73876b87d444cd123a662929055e30b44b04f3704f0fe0d80a15f9144ad894360b88386424c436f1a94a2ff810b6c8cd49c359491294777dbb67f57f885f3bb83fd97b4823762d1067daab778188b39b9610d0e30ae40e9c9e4f4193772f7d60c8e25c3214c5b9980dbf0fa529d6bd75bc42dd6ed1e4688dcd0101258b5a1f931a62829094afb804e4785b4a88b7c83d1ae057b5fea1b3240c51afd52761d72fbcad6a9d9a5d062e900f4492c576f0479f36282ae475f3386b843afd562078a740eb4e5ff32ef8ca6e8730e3ad4e3f0b592ba9eec8697523ef619d5cd140e42bb9691edfbdd174ad2100e59fea0c1ffe6884825d83a8f1690aaeecc77b12a1b38469b950b08c7c75c15b71362cbe7cabadf8281f9c6ede9aa26d45d3237c93fb9598a3a07ac0f90e76f03acf7c4a00c2901cdd23d17103b648513cc16a57cf461dc002ac704211376c979242b07a359452e84affd27b4f344e103a7addfd823a95a30572c47b0c4a84e4c81e5ebadb8d57835b2ee9a280e7f1b4738f228b7d6390316dc89f8675f856a2944d53780ae20744b86d45044da7c85e2b59e13898d3b256e79d4a54c85de2a436914c986bd632ddb8ae1e2d4b9881f396ead9e6a330ec9c2ac5810f07893477f17a1c487eb4d99d35699c8e1993fcc15a1df8107aafdd8af7e9fceedf673bdf1af7215387991c5be3d5e9a477003abe62f1ef96ee5bfc5d7cc05646ae6a391066bd4e4b48f2d711c33c9f9ba3f4e79df2c63d41c58c86c0098b47ab9e14753804196886ff49ac733f48a62fd45d95b55291f6aaf4f7d5219d04581c92e564060fe2d8ffff4c1297f4836e7ea11a1310e30edb63257a76f0ae55a55d56e16d0f1450db73d19cdf1d942257cc1705f009c7a3eb12cd96516c6cfc652d2dd28c5584a2d12492fc88f3cbd859d6d471bb51bf663d5e762a827ac06b4bf8ad4de4349ce1c479219b644a0365320c74962a2e67080f64269b72f159bb0bc6256cf180b2e31660fa4b47fd31641b29e99cfda1c772178036790baa3aac9436a538bdd4f83b173a130a47225967c097ef3e60076cd24dbea18c4bb5ae836c7d4ec71ac4f46baffe20247a196b144f344a7008f10df945515ced9efdeb343a2edbb530eaca7cd130386979db74921fba883bc0b1d8fe78ba687f137b7102a4b8138d0c5fde6692864eb7ad1392c3e2f4da261c18747f0dea03f9a651897a31b310f504998b820c6e245268a2f47bd5c355eaf74cbef77d02bd07a1cfcca458cf3c0057d6a001fb6047d78dc9cc746fb850992a49ee892446c59cce6fbaeec69bd9c7bec4b4f34aa67cfed049951fd95472f5a0f726bcc90a24157613597f475ec437c6aadf8199418baa5b2c84abb274e1d4fa235aef468a86fc8b5c948aecdd636c02ada9644400d131f55bf14ef6cd5108b8ae5044047afb7d5319157d4a9abeeb59feee4c98601d9ec5846c83d14562b1d2da0fcbcce19edf7d36ad7d71bd1814dfcb170ceef4dbfe5f9499cf3f12f2ee50db86831b2efa7ec54e46ff9df015fbee88b6d450ceedd377849be4d7690750165944286b27f403dc6a0e875968e681c5a89044f26db655977b0c4ae430f469b1cab979f8b2869283d8344711801978045d61f65a9d3604901b22bf672f38e7e324dfd3734c5bfbcee876e5b2f844057ed6981d0cdeeff8dd5ca86b048c5d8969b1d819bc6cecfc902a9dad6bf8766ac8afb46778fa452e036adef92ee2887e6e691354711e3aa6fea4e6d83e1228c5302a67caa61d38d17a36468cacd8c00bdc447c16689d58ee5a9e619724f5b930ab35bdc611824d4f5457748591b0b9dde2e816324297aeb1bdbfc9f519223249506792bac3fb2d577f98444756a5f75358696da9c3f70223393e777a8fa6c7dbebed26328ec0f90000000000000000000000000009131d21262d393e"
},
@@ -45,7 +45,7 @@
"gasLimit": 65254,
"maxPriorityFeePerGas": 42798,
"maxFeePerGas": 103466,
- "to": "0x000000000000000000000000000000000000aaaa",
+ "to": "Z000000000000000000000000000000000000aaaa",
"seed": "0x43425e20ad82f0611295b1a8e583f10b45c41fd51837e5df4f2a745a4f4c5014eb7ebae166903c8c99597f7ce47cb9e4",
"signedTransactionRLP": "0xb91c4702f91c43048203cc82a72e8301942a82fee694000000000000000000000000000000000000aaaa8405a2ec3780c0b90a201de9c19823cb94b05ce8a3aa5377e8332c9b2223d6e42d8cb9818c3fed182c667c401160d9e2024e6651382851e120e1fbff1d7d15a4596f626e61af263fd753ee3f80ca801682d7189b2c64bf3acb1d676033e49b432fdff76af56beab1b1e09a8269b4c2865aa9f603e6f53706b849ff1eb4219469fef70eca55d2786ff26373ba730ecd7eedeb77e3a8eee780da5393312446da09883f1db34e4b8e695b3f38b8b2c642f4d067194b2b7b4eb87250a29bcc49140dd41da57e9193531c0d0630cbe8830ed8a3f4ae6b527e6ecdd04b27f808823a5d8e564b6b9164f63f9553d0afdd8a8724c93ee8c4d6f700a7e069f4471411ae0aafffc312f94b1f3dda9eafba18d2551db4689cda39c6170448f8107edf97c13cb1b65cff5817aa62658fce4e4b5b15ac633558b803f73c9f3628faf7129bc4a4fa80b42b2ca162f8c2e37054dcce634aee3a411db807740939f381e40996ed7c2f683e20ea421fd535d046658d55843749b547d1f3ce9bbe51ba10a30279261bc4d988fad5c53774a2fb06718507e7b3f20bc0f6f030c07276e3bf45caae9a30af29f7397c1722c12051ea2f941a90783e38acfbba892ad63637dc113c0b354253e32ec71ade86d4f0890661ab1506e544576df4f3ef32ff0a15182ce7a178c6dbc1c5a536c6d6e61f1c7f860cd0fca797c929681329b15162933bcc7eb28e57f4a2e7e195399bc917e764218a74f99f7bd5180284d9e5f2fd5651158748d289befac922edefafe47c8352b9f9ed9a6b7639f5c1fbf31423dce815156696f0d3c582fad4af0a3711775ba93cffe3d8dc0149a2ae217c55a46452dd3dde99a1f718185b03833c1ed8deed4ab1d6ad20479229b37b687a991030962682d1ba1f430c2f494dec8a68c482e0c9181655d6eae7ef50f691319485f4ce08ebdbb87551c82122934061024b7619a96f849f484fae363ffb81e655112b7ebaf95d29311e917d9ce3fa0cbe73b8b982df394d43af1b0ac8ad6bab5583cf993d0101fcf1b34682f89d21efa189c8309f1a4d625edda4ae53583de2cd3b38e0e266ed313ff5fea263469ed9e9bc18c859dc97f6398554a7e84b6e7d4e980246a1107eb993a7d84a17d06055c3ddabf62d75fd917b888bf7a8bf232dc0960eeabebb6a87956f6905fe5cc87a964cadc71ae60f8a44264603559a2ca765c6a736a2ee413dfb00a4158823bf8bed5c3af1eb88367b1586d9695349c2ef61f227db765ad473172a835058dd03109c6fd2a3f22da9eb52cb3fd2d5bd4fb40dd4f6a743ca7b20b80937f828f726aac0f90981ac94b18ef2ad5c90d994d386d477deb4ee23091b6c87e26818e6ac634333bce48930a6fa091acd4c82048c5425c83f5d5682f76e20daa2fa0dd6e69af57b3731d1bfb89e6fd39790ce3300e331349c9925c05b335d813f933b9393622582e80ef2f0027133860191fda6ad963de03b6298cfcacf775e58f1099b68408a93835739a96696f36c3dd495c276f8a2f3f8ef972ccbff82a4ea46ec12b2f87571b0b213215548b914d055ba98e30ac9bc6ffb31ca8c4ae7219a69608479b96c7c0a600034d49589a63ac1740eef6994f2354fa7ace3223a7003b99288f397ab6a2497db78b4ee14d5716be55ff9ec291408e9e756c08092e2d8f5f2d994f0bf75d4afbf5b8a9c217df6982b64933c786dbb21d9a9ce4c5532572213922f750ccd9c8e5e08d578a2144240757adbc1bf53581f1ebd54dafe48a9f7102f1d87ae8a346cd4621392c589f73bc94ba1a027eaac7da1e29435398de3a354235839010bfb9fc711be2c84693f550b148913f3a9de1ded6ad41b0eeda1c8ea8eb5839a06fed3e36b7e8a220a5d5e7efacbba56a585c2664483ea68c95e42803e131240ac27499252b7dc5b06fa71b91662690979c5d8ea0ede78a801d6cde3b29aba83c3fb5fabbeaec63871ba4cc5772bcd7f97c78b16170e13f49dbe116300548c668dcb61d798dc834ff6693799e6ffe6f3b32f4f2b71349e301768e2397f904f045384eee863120bcc1686637dfe7152a2afaa1dabce08c8f16f8fd011e87268eff9e16f1bbe07f0bff3e23355d3c94767e8e43bc35bd632ce5fa1f6f983d4b2c1ff9bb04805395b006098e29c0d03facd9dd77d594fbace0ed5212e76425fed9dc96ad4191f6ffea72cd299d0369e1e7534b7585a9a35f430d86b00ded922a9cd2db891b7c203a01355dc78676390bf41598e0ef9be9ff9218f28e417061461d910fef22c3499002299c4fcef26e8352f5ccd036c91b8784205cb3f3c2e0aecff18d89faa59b4fb0cf4ad453be3736d2596bd739013fa8c75bf1e848865952c300be4d0a80f5dcb80d3cfd1f3f3c83a123d3aa471b17c7ce1c7ea50abbe5fe397187ff52438af55b5b64cd8f9a3d021c443d8ccc55befb1c513ae8afab0d5b1bb4154a09b50cc0a4605162cde421fd6e3003cab82cc8ec3ab7ed5d98ed7222d83e00cb61d3257c6503ad52f214f1e5a756ee9d4d4fddfc09d73b0a1378b437456a7bc42d9d43f916ccc61ff126a50841484f0f9addb261f38ac75d7dfcb0435fc4a6092e85d6ac4fae064e95870b0efd4269681099c2bb743773cfc61fd082ceb27c95468193dc1773b31906e638c9928c2d0a57a77e0d4ad0e77e703cc099be8a5390dffe6c4449c72036247db0a76a6899d6046eab2ee121e5d65540ede74eb76cc4bb2438edde71b126ec6be88a54f9981060dd8508b0f635938916f7bf3cba7a104c59b816f3c5256a11e1704c03461d0e9e22133b907dbf1edcc796c2daaaa07c42a01deacf8072a4b76cf060d386b0e0f30546811d03df36238c28c568b900777309c8d2c0e5c711c12820e96626dd88debc6e80c8e0627aef80acdbfac556abb17b91a4372aaf6eda4ce114ffb9fa1d81aadb88099dcb1ad953aeabb48611716aae98c8fbfbfe30d6cfa3e15a409f5d754bf1c2602e2f467cf32133a53929df8d34112871c66da00c7931fef9351275206acb60b6848db36360af2643b7cc793df85fad6c3b4201bb7b2ff8327ae8efaf928a2ba6c36eefd912f015f494a34656bee438f9a9ead1128e03e9b8a6fba651a0e0f0e6f043cb78f76ff2ed08e9796317948f5ce6b4c4fb48c5f5f6a79f2c576f0228be0da8b468f449deb3cc0a9319e02c2bf802eebce51d1019ebfdd7045fdb8a74e108edec98610e6ff95db9af4be713cf78d1a8f11baf81d7cf02e7aca5ad389acdf474490d86abb23acb44c319b2531d2d97024ad5454425ac803c40f19b382bc8e0ff277788e178b055e0a5908fe212efc62a8f86354e3c1a0a653123743b9b7fd7115bf16e4c12b233ff8122513d8bc09ec3a561dc130a901cf7d7ecc43188494bbed9813114f0ea79e7817be2471f437d395cf23710d40573f328490ae37454587173817b7ce18627b40a662dba0bbb9858971a505a0786a98526e49faf0d7aec553a3b74abf28d3c92106ac3361845d49a4a668d743e202ed690171a66575897531e65b453f2b016fc26e94412d07dc5bec7b72d5f2187893f297add3a34daa3a074c40af5f8f8a32d0e3e501e77ae14800c5a96202790e9ca6264d9d31bf4d251ed8c76f42c2efbc8628614fa41942081e281878a1c81b2d80c3e6677fd6e5f9bc016395e6247466240eb911f3626a00ed5b85c01c1ecaf59fadbd5f67e2b2ca4b6cf71eb131e198d4910dd7f9864777ff38303cf0edcffd7360f3239da539f3c00bec25e82cc981aec7a66232c0801e5376b1d56fad6180e4c1cc71d8482cfa0f2cd21a2f5fcded0222c74f40069e86b400e35900df1b1d4777ae42d79f05d636cc5f4aea6aabc82650911633f81f3039f9490e3f8fb0600370e7e429be5e38440afd318e3f527857516c732af4b63dcb89e285411c4b91ad3b0441c8da9ef691c304292025e0333133f638c581ab79cf4e423b47982dbe397ba26dd2ec7ea01487a0fd1035d88c25da52fc95695d859fc5ca257c97e174107487ae9765bc4e7d1bae40fa924ad6d6b50bbfe99b1aa928f1db1fa43e6224d82360336dc4dba5ed83198557b5a2c6c7c0cd24085bf24656e27f40fcf8cd2048f6e6ef0716b93b92d79bcd6302bf3aab36bb41f80afe792f0cb49ffe27bde269a8132d4e7c687e9fe5817c6acb0f5d9ec1872147464ae274449c83174a274a612a50d9940bf62f8b908318a57699df0c30d411c9d09175339be07a905b76644de9b34068364f7de250729055b0425c5e61a727991c6596d3457845e589ca59742e59b29b9e51e50796950e31192ed5f3782ad175f4a4c8a1c2d95965a0fc91f89931c980880aa84fba6d341cfdbace46735a6d7b5b53c9f1fc24855be63670bc48266d4acda27f10ddf18bfc2b9fb2f4d1d57b958fd2266df602d9ba8b28e0db3b3638799aec903fc8c7785fcbfbc0c2a1c4248ecd0ff9700d596ab8ee89e14016671d0d75a7d1f216c82c727e01726821d030d53eecbb68b3aab6cf7fc3c818982464ea14deb34fa8b2fe5dd2e3e412a8a7c60f630cee37e6b4d655efbee0841588c12120d8d558ce2dd9da93d2fbedb154875c123dc93add9b6071abf02c4e5d15535aa9c23ce2f02e32bbf73a425616d308bac64e9730a6e1dd91598e68248b647aec71b090c031518e64ffba1fc072f9e543abe9a56e66bdbd392894e5010c7454561d40cc2fac75869c6e73bfb921ee54b6c3f45426533ef89954ea6a36190920aa4ff6ed7a84c850d8853d3b9494ef46217e1c5e6fb5f8fd0b4e68d940acd032e98f53166ed5e9a84263a0627da0a042122822b7d70e2819bfef3fb0046c8d30e3ffc5a4a917575565aafc795e8f3b881d781e419259d5bb1e8d270ab3329bc21d5527b71b87b238df9ae9300d0f4b734ebe6931dfa80b983a365b67bee45bcebcf960a10ac04d8dd65b4ec7f4676931f41a6cd305d2ab86e5fb0ee8a6ff08dc72c36ebdc5729205ab358ac57ccfc95d1ce49cc07c15cdf3bfabdb0b5745881fa8a8432ca6e4ab1746fe14f385b87e9e263ed5816bc5069c252250343742934ab6bc8bb9b2e23d61e0d86b0b35169004a823e293d00aa9bde8fe748ef2b73e39a705b6747883c354dff1629de102aafad5db7f75b4df3e460826cb7364250e1264f3eace2b76a2d1a7db7aaee5d80e3acc40815dc944f133c537de3b8a1d4e7a6f9d26fbb4fac25a0d1f3258a9fc205e8f264a4a15467eb777e8ba16d14eccc2800de314c056a686254a70831a7e89eb889ccd8c38cdd90cfe691d4ec460ef3cd764754f9caa7e90312bedfd1d7d0e1ecd02ca9590003bf66ebbd0338aad9af56115caab09de72e0d0ff9e129bb4b162c6913a031277229b0a1ecff4f383d2da966faca5c334a966de9e60f3ceb96b909a1fc97fdbeb9cddb9ed837a996c882ab4672afe225de30736deb43fd518855c0a14f439e53a0292e4d3965fdf4f3562f9eb38af5e42a18396d58ca75b4fba94e2ba6fa03328b3b093a88e045d4c4f42e5dd4e5f51fd7d5574bd575fff16f11e8af98d48b3badfefc3108cf25bce5d547baa1fe48e61498157f63c72c235565a2e4e58f1c48dcc7f48ddbf083cc4955633249ce39a752d6f87514e6c79dac735b452928a328619e790ec0fa6b1a644c541c4ab2cb8067c7c5e957cf9ab97d600288406b741f8311741192c492e881fca8550516effdd91ca5ba6b319ca4909c85e43f83d4ab0748e4eede8bbb1cdbf7f9c392714354a35f3329f9c5036812a59da6f6067130caba18634fc82990a552596332674f4995393d6e2693c79773fa64380024cb578dba1af2e815f5c5a5888e263e8c720dfedac4c7c52242c60d97882fc2f0400759de9f7d5716f5da56dfb110f9c26403737e77b4a1bcb33f227aa01a94a00cd748aa3257044deb85404d3787617db5e893ed81ffd7e5f201377e23ca4b8b88a47b73753b0b54d2d41ef673825e5a24ca7641a2979c2a04cbd48b71f620b80bb628a611bde2160d567e626f98ac2dc9a935521c42006a0e2dec2d788d324e732042c7acc5e618f5a3ac33b47e39cf1821c16326cccaf7061436572a5f91ddd0041bdc8e4cb9f7f30458e648882a368e08ebc757b5d5c7c48ee025687398773748595b164f875e7bb305b07ad796c88e7d2cbd3d9a9377bb7fb0e07396ec65a7f7de2d4b64faaa4b192ea0effb0e7989b66cc234f35efe0a6ac83047f36cf0f20e4759c7da68b6bc3798a2b8c9a93a489dd9cf0c2e0b13649bce638ade69c51af2e67cefe993fd42c0bb9d38e6dbc108b778979970c8ef880a47ce3810bb5e2d67a6e3724b5617d84ea3e9f993633a75cdadfe05e4268e0e895cb2b0df8fb927ecf5420d7eeb046c1e92d187ff20bc3f9376d754c01199973c48e62a3ecf8191a764f0153f5c57f297757f326335e9fcab37b00532058ff0d3a3073614a29f487dabad52b66addf6aa655c3a6174dcdc0d9f5ca477515fef97b08605ad25c6bc24b9a63965e84d597d85b39452009b5f8ed6f357f64bc6bf49afc11d527960821037552b990819a3f46a3a24fe521ef0014a214f6b793b4ff12d29609290023fbbe5b5054e2b5910b74d1d14505a502ee04a71e205b9df17a86210a5e379891a1a260736fab7402b3e45030d986f76e4275c017dfd70caed528a4262362d5c4fbe99361bfb5b47cb32c78e1e23625af71c52a515adf37d43a55320cd22f675686baa36bee304667ccf1f480ddf0a36f542ed6e94d5eb65b88dfba15fd809f20ca4f310398996cf75dbee419eb098fec75ae44e610396e771ce6f755b5a8cfc3639de208424d0521d3e3d7d212d563fdcdcceea592ad53f85373686c3da6b949b57baa18e712cd945dabeb0f3b1dd1a0ab11fda0aad995d1210f8868e456399ddeef632e98453caa51214a07e468874b13b6eccd9832c9adf24a486903af0f3a70923de792622f50af7f6677e2c80106a5765e3c329e152e1d15f98908637bdfd38cb2e96c743b87e7497f7b69c8727fb202d61bc9bccd85cf1f3e3c3ed9c56e8f9763e51ee63a12608f61345a7c0ba53e9a5de7c6d75d6f86e7b10301af74cacc4d3796e1e98fb3175c010630d06640a70cad431a9abb3d9126c3accb90e7d2a50b3f8629aa83a0432e2b8c646c5a1d488f8f814094de73f226f66e064484bf4f7c1733beb87cc6a54039d6d391a787030526157e99b262d2b234e3285d7b9cd2580e9fce6082fd659cc2e90232480a63ba1038ac73cc0b52b1df811efb2cad318a2c9fc69bd090da5dc1f4cc2ada3d48703ac43d861bc50ab2ea9d8f63d8a164d7506c8c7dbe947e3fa4a9dffada7f3dc80af25b877673a1ec4aa72c238bd146a473592a3cd34a2097be62113977bde0db4e7d593800c8e31d146f2603539434d08e241082eecdb8709fa63710a9b45651d0525ab3df180de75f19eff426251f7e92dc6260ec8ea223f3e721bfa8c43aeeb2a7efd605a949e77a024aab20d9962b1a213d81569ff0ef65ad25d7c2d61a1786ef09b01c931c72a4693abe9bb88505ce879c9c213032a3c2f05decaa6bfb59b2f3303302239e933feb2e18097e08e5e592fbd659832be83bf268ba6b01029ecd5acdaba20be089e610d3824242cd0bf2712bc3fec808264f8a50fa1498ea83b460aea04cd516509b53aa501678cdee5f87a34b4e1d0bf3da15f93b39f9180440536b0319c6a277d911421dcc06ebf7a83c6c48219fc5693b610bf48578fd95caa34d03dcd72bd11884cbf4095f79cd204dd8d3282e52790dcd0171ba0523ddf1addc3f855870f5973623f3a14c607bdaa27f2aca824148a7aa03dc27b3434ca86f8c7a56529973985fd1ad980bcda4132584313dd5a768f17a4fee94b15d94f885406c2873a43413dabdec48505cfa5d859b7ee9a72df4ddf5f996e1bc7056ca5e66af09c359ad021dea2763597ec9a7a75396d8881c515314e49637ff55d45821bd5d86ab2348bb7868a1eace63808321f11dcf16d61291e7143836e10b9c753ef0154475cb79c3a836eb5e318e9dfc1dc73efa7f7ba3b4b3617ef7f60dfe0f2145f415688417a654480269d6aa41e07decd52f8a38111d8913a02f8d74de7ceab85de8e751dfeb2d936aca10bbdf8194167fcda9b72602e91bdac75105eb170557753e242664997a2c08afe330f332ec4edc4c0b15f27fe148391f317f4a45f51854ad22b9b645ffc3de0c569362f3ba7a27d8d9b8d910a2b0ad09a62b1a1c741c7de85eaf2a9494e611adc27b21188d032390415fde53e9f9c1fbf141e9db0e59f16b531ef524d63b0a627f563eaf0145b07d5097efbf93deb8463fda79e06a129ee89cf19018efd7e1240e62708b6e1ecb69b264698beccedbbd634148ae825d74356267dd2edc077d0cc41f668008708ed36dfc2d190f5ba3f94bb0190cb3b8606ffafa7ef18008baa7f2f4d13a2a7350451adeb03445a9636d0ec708edb058beda2f561d7ad492f91b04350eb9795dedc3c30c7484674053874a505f7ba2106e9ac0213b065118ceb6eef4657b90022c138558978b144c76271e52c99b0dbe7fb5b5245372ddfe538cffa7cd1885f27e40d7065f2080b89aa630d8d11e926d87237fe954f46ba77fc443936b3f0b3ba0f31196ab4b80b0d74eaafcc3e04fcc9825cf594892e5e3c26be421da4d7bc5b851d8e0140341e56969e3fc4fb2e4e05e82bf57ee02fa8ee6553897cf9d9a1be67bd2ed39285ba452145b61624c8ceb6dbaf61a94a8aa2c028daa7ee807a20c2d932b2a86d0b9b7ed7e3ef13b69b9d9819f82ec5d2ec4d7bef26085134f98f47bd0d90b8bd17db5a12883aee126968d790f7ffd5f671fd189700e207307158328e5adc656a268f7b31df163f4864c23a295eb07b473a4fd19696fd14b2f19957860fb5f049b99884c4569a28aa8fec978875d15b5e04fcb9cc6154f431a66a5c10c4b1eff0fbc883793cc5447e9b0cb81061d017cf5566ba04c85c20489e69eea7d8c7578f8716765773fd7a45c50dec6bda2cb84a04d4a63d7570d6aa32c5d1c04d7108bd728db39c25d50b523185069d050de2d4a8d13d3663df2b1bb8c97822780d84aba359bf467eef726c3747df57f5bd5f973746e0610c0613321b549583abbf32acf6d9b2457304507fbfd71f4956acb56a20e298ba4651b38c4d788599de8de12de614e80656153445ab3f3849f44d36442318a9f17c194001e638a34e19338ead9081b48da6891ea0b9f755d79efd7485e7230ce0f992cded308b1c5cc802cb1dd2b2b87c765f7423e7660a8f62639181ed50549b1f9644de58e872e28fc83f658256b386e5d4cf7eb55fbfb255169af5658eb058b4056e07b271dad73b75328a1ad9f043147035ee81b4606bb8b54bdb42f7d577fba2c80a413aaede218b948b69cdb45f987872417a07ed41ff59a7fced9a41cb140dbfa2fa3838669d636f96ab0ff861388999483a148643792dce4f57dd3ffd443cfc5ec3764267b14ff9c39956202a1f11aa3b832f02675a01b219e774c99e17f263430488107d5170be5ec9218ad696a79802c20ff068abbf065a54e61270ca9c1003b787cabdf10d8f7f4ff698aa11ecf3c2902d61bebb604c8bb10a1c7591c75ad4e74f4e0966ee92cc297b3a7f8bc24d7d9e2c642c3c94c7257f9578595367b8a533f3799a7f9af5cfa9240b3a6de8b2e6660ce695f185dd13ee1fcc8902cddc350412027a681928252f30ca5cde6205eaccd65e3fb33724b49597b64971536c887004baa9cb7ec229b7a789cd235284afba8d5c025aa7019d78fc2b1625a35113fc974ea5850edad91e573f9fdb64397c5bf16c71a35a9c6936a9ac9b2f5fffd2ddc3bc5b6edf90fe7a175152f72ea24a0dd08a91034cf02cba40c746117fda813637498f317794c5f29fcfe3c9908b145eda95fa762cfc396ac6493cb4ea6b86905cfdad29da7bf5cc395172e5feac461c64238b7a0e95218fec1f117a238d6907176957fecb47d882549c25b48f0e916e4ed5866623780f71dd2fa25d9b0fff1beda64248a6d7073c7ae6109796c002ea1d686c5bf74d6e2193c405e69ceeafa44808586bfdc132c6589909ec4c5f2212248697f8babf30f15173680a0b4d0e02f6a9c9da8cedce3f70b11727fa3b0bff90d1765a0bb000000000000000000000000000000060c151d262f373c"
},
@@ -55,7 +55,7 @@
"gasLimit": 37274,
"maxPriorityFeePerGas": 87890,
"maxFeePerGas": 130273,
- "to": "0x000000000000000000000000000000000000aaaa",
+ "to": "Z000000000000000000000000000000000000aaaa",
"seed": "0x43425e20ad82f0611295b1a8e583f10b45c41fd51837e5df4f2a745a4f4c5014eb7ebae166903c8c99597f7ce47cb9e4",
"signedTransactionRLP": "0xb91c4802f91c440482024c830157528301fce182919a94000000000000000000000000000000000000aaaa8405ec1b9f80c0b90a201de9c19823cb94b05ce8a3aa5377e8332c9b2223d6e42d8cb9818c3fed182c667c401160d9e2024e6651382851e120e1fbff1d7d15a4596f626e61af263fd753ee3f80ca801682d7189b2c64bf3acb1d676033e49b432fdff76af56beab1b1e09a8269b4c2865aa9f603e6f53706b849ff1eb4219469fef70eca55d2786ff26373ba730ecd7eedeb77e3a8eee780da5393312446da09883f1db34e4b8e695b3f38b8b2c642f4d067194b2b7b4eb87250a29bcc49140dd41da57e9193531c0d0630cbe8830ed8a3f4ae6b527e6ecdd04b27f808823a5d8e564b6b9164f63f9553d0afdd8a8724c93ee8c4d6f700a7e069f4471411ae0aafffc312f94b1f3dda9eafba18d2551db4689cda39c6170448f8107edf97c13cb1b65cff5817aa62658fce4e4b5b15ac633558b803f73c9f3628faf7129bc4a4fa80b42b2ca162f8c2e37054dcce634aee3a411db807740939f381e40996ed7c2f683e20ea421fd535d046658d55843749b547d1f3ce9bbe51ba10a30279261bc4d988fad5c53774a2fb06718507e7b3f20bc0f6f030c07276e3bf45caae9a30af29f7397c1722c12051ea2f941a90783e38acfbba892ad63637dc113c0b354253e32ec71ade86d4f0890661ab1506e544576df4f3ef32ff0a15182ce7a178c6dbc1c5a536c6d6e61f1c7f860cd0fca797c929681329b15162933bcc7eb28e57f4a2e7e195399bc917e764218a74f99f7bd5180284d9e5f2fd5651158748d289befac922edefafe47c8352b9f9ed9a6b7639f5c1fbf31423dce815156696f0d3c582fad4af0a3711775ba93cffe3d8dc0149a2ae217c55a46452dd3dde99a1f718185b03833c1ed8deed4ab1d6ad20479229b37b687a991030962682d1ba1f430c2f494dec8a68c482e0c9181655d6eae7ef50f691319485f4ce08ebdbb87551c82122934061024b7619a96f849f484fae363ffb81e655112b7ebaf95d29311e917d9ce3fa0cbe73b8b982df394d43af1b0ac8ad6bab5583cf993d0101fcf1b34682f89d21efa189c8309f1a4d625edda4ae53583de2cd3b38e0e266ed313ff5fea263469ed9e9bc18c859dc97f6398554a7e84b6e7d4e980246a1107eb993a7d84a17d06055c3ddabf62d75fd917b888bf7a8bf232dc0960eeabebb6a87956f6905fe5cc87a964cadc71ae60f8a44264603559a2ca765c6a736a2ee413dfb00a4158823bf8bed5c3af1eb88367b1586d9695349c2ef61f227db765ad473172a835058dd03109c6fd2a3f22da9eb52cb3fd2d5bd4fb40dd4f6a743ca7b20b80937f828f726aac0f90981ac94b18ef2ad5c90d994d386d477deb4ee23091b6c87e26818e6ac634333bce48930a6fa091acd4c82048c5425c83f5d5682f76e20daa2fa0dd6e69af57b3731d1bfb89e6fd39790ce3300e331349c9925c05b335d813f933b9393622582e80ef2f0027133860191fda6ad963de03b6298cfcacf775e58f1099b68408a93835739a96696f36c3dd495c276f8a2f3f8ef972ccbff82a4ea46ec12b2f87571b0b213215548b914d055ba98e30ac9bc6ffb31ca8c4ae7219a69608479b96c7c0a600034d49589a63ac1740eef6994f2354fa7ace3223a7003b99288f397ab6a2497db78b4ee14d5716be55ff9ec291408e9e756c08092e2d8f5f2d994f0bf75d4afbf5b8a9c217df6982b64933c786dbb21d9a9ce4c5532572213922f750ccd9c8e5e08d578a2144240757adbc1bf53581f1ebd54dafe48a9f7102f1d87ae8a346cd4621392c589f73bc94ba1a027eaac7da1e29435398de3a354235839010bfb9fc711be2c84693f550b148913f3a9de1ded6ad41b0eeda1c8ea8eb5839a06fed3e36b7e8a220a5d5e7efacbba56a585c2664483ea68c95e42803e131240ac27499252b7dc5b06fa71b91662690979c5d8ea0ede78a801d6cde3b29aba83c3fb5fabbeaec63871ba4cc5772bcd7f97c78b16170e13f49dbe116300548c668dcb61d798dc834ff6693799e6ffe6f3b32f4f2b71349e301768e2397f904f045384eee863120bcc1686637dfe7152a2afaa1dabce08c8f16f8fd011e87268eff9e16f1bbe07f0bff3e23355d3c94767e8e43bc35bd632ce5fa1f6f983d4b2c1ff9bb04805395b006098e29c0d03facd9dd77d594fbace0ed5212e76425fed9dc96ad4191f6ffea72cd299d0369e1e7534b7585a9a35f430d86b00ded922a9cd2db891b7c203a01355dc78676390bf41598e0ef9be9ff9218f28e417061461d910fef22c3499002299c4fcef26e8352f5ccd036c91b8784205cb3f3c2e0aecff18d89faa59b4fb0cf4ad453be3736d2596bd739013fa8c75bf1e848865952c300be4d0a80f5dcb80d3cfd1f3f3c83a123d3aa471b17c7ce1c7ea50abbe5fe397187ff52438af55b5b64cd8f9a3d021c443d8ccc55befb1c513ae8afab0d5b1bb4154a09b50cc0a4605162cde421fd6e3003cab82cc8ec3ab7ed5d98ed7222d83e00cb61d3257c6503ad52f214f1e5a756ee9d4d4fddfc09d73b0a1378b437456a7bc42d9d43f916ccc61ff126a50841484f0f9addb261f38ac75d7dfcb0435fc4a6092e85d6ac4fae064e95870b0efd4269681099c2bb743773cfc61fd082ceb27c95468193dc1773b31906e638c9928c2d0a57a77e0d4ad0e77e703cc099be8a5390dffe6c4449c72036247db0a76a6899d6046eab2ee121e5d65540ede74eb76cc4bb2438edde71b126ec6be88a54f9981060dd8508b0f635938916f7bf3cba7a104c59b816f3c5256a11e1704c03461d0e9e22133b907dbf1edcc796c2daaaa07c42a01deacf8072a4b76cf060d386b0e0f30546811d03df36238c28c568b900777309c8d2c0e5c711c12820e96626dd88debc6e80c8e0627aef80acdbfac556abb17b91a4372aaf6eda4ce114ffb9fa1d81aadb88099dcb1ad953aeabb48611716aae98c8fbfbfe30d6cfa3e15a409f5d754bf1c2602e2f467cf32133a53929df8d34112871c66da00c7931fef9351275206acb60b6848db36360af2643b7cc793df85fad6c3b4201bb7b2ff8327ae8efaf928a2ba6c36eefd912f015f494a34656bee438f9a9ead1128e03e9b8a6fba651a0e0f0e6f043cb78f76ff2ed08e9796317948f5ce6b4c4fb48c5f5f6a79f2c576f0228be0da8b468f449deb3cc0a9319e02c2bf802eebce51d1019ebfdd7045fdb8a74e108edec98610e6ff95db9af4be713cf78d1a8f11baf81d7cf02e7aca5ad389acdf474490d86abb23acb44c319b2531d2d97024ad5454425ac803c40f19b382bc8e0ff277788e178b055e0a5908fe212efc62a8f86354e3c1a0a653123743b9b7fd7115bf16e4c12b233ff8122513d8bc09ec3a561dc130a901cf7d7ecc43188494bbed9813114f0ea79e7817be2471f437d395cf23710d40573f328490ae37454587173817b7ce18627b40a662dba0bbb9858971a505a0786a98526e49faf0d7aec553a3b74abf28d3c92106ac3361845d49a4a668d743e202ed690171a66575897531e65b453f2b016fc26e94412d07dc5bec7b72d5f2187893f297add3a34daa3a074c40af5f8f8a32d0e3e501e77ae14800c5a96202790e9ca6264d9d31bf4d251ed8c76f42c2efbc8628614fa41942081e281878a1c81b2d80c3e6677fd6e5f9bc016395e6247466240eb911f36203d797ba0623d4c18ef335223568d3cde022df2670f327722268441712645b31149bf219abfe96e88670c20367f9958e8469c5f4f828b9dfd2bc8959d752e6d6df3151a35692a3a536e646b6844ff3a09566c5094047c57cb51a22df467410c79b85c6abd6075a2196689e5de785a84747c7da91d9294a0df8bb95cddaf97d6415f42c60cc54d9ff4ea900f0713e45386e6739297b87f00fff37f844eda791a88b785374f28af0e18f0e40edd36daf28372a7dcdd4bd223af296a7d373358555fedbec8315ea332d49618da6f4e4920bb581d1d31090cba84d41b8189583170aba6679e303340d1d09b19a3e013ab2d1beb93a9d2b2e6a4852ad54216d1388eabd99294aa787221d20e54c586e73d51e466bc6de7c4ac2a337bbb2456d1547bda73ecec70d8d0a5e0b2aae132711551a4547705ff5fb74415cfa307086a41f9c80aa9302f8faf6bb7b390b9535bf0d447cbed7b2813059ea773730ed5b5d7dde603dddd30eec74cdfb5f833c5ed1a9d2ea9ede90c3d450ba9dcf8f4852bd393cc2d1b4856864474ec34f67758dec60cf05d325475bf21de9aa5585fc4f8735df17cf9ff97ad8adb04355a2a67d09282b225e045f9cd168624b3fadccdbee0cf17e8029fda3140b22adbf9a96b6f117f40323492e10b82647adab4f8cf820dd46c48f978643dbc3d0419ccb4bb4041ff59b94e9f45fa27aae3b308dc344e11420974d8e90f53b2f90d7248d533558f26a15b7c2c66767a531faebe78f663347cde462c4732f881c44faf3d8cd3ea85a7f471f6ff9a7cf26ef4c1acf9f25b5f78c875005af429071518538e9d85a046c367c43624fce26606eba7658c2a7f54df2e0c5af01e2b005457bc71289864769318508e8597b33d8279ae36d0c9337d814adf03c158111f342fb7fd56b59ac25d7c8f35977e4c21e6c1f51359cdc9556c26fefd705e6a7d29e3eacb27c2cdbf7abc43e6f4a2e2bb2069e32f2b991c39279e757c4da7460bc72881bf572b065e30aee9e15f2262dadcb890a2aedeb50b5f2233ebf88ef0b95d2261018bb267079c8f03b7f2eaa1014a1eeff39974e77944a88068a5bbbbda0d7683336f8c9feb9f57d6afe73a36fb0511b1239a4da567024dcf0a37c212e5bc6a3953aaee76921f857791044ef95f8e4113a155c0bbddced1d2328df166fb4d6b44080093d6e7cffc0a62d17fc4a6b09089d1a7da90b316ae7c716d28d2f9298678132b42a1fce5f0871f9d8b02d86ae5b76640aa4737afd7ad5d45c0ed6a96f130813b7d51261b1f8030605edaa1258d0df2d20edfb4130e76c13273170da0c81d0c722b2f336e3bbc9101494ece58773f328bb1c8b9688be47fcf1c207835e8f2fe5225df5e56bde9acbc36134091972f33d33866e148ce59d986d4d6c5bf39601b0c687be47e450ee4f9397f211beaa0f5e837b776fad5b7e80bd9639f6d482cbfd6fd7f86e58c967154f2512bbf776fcdec5bbf9df1fa9587f2bafb277187fc7eb2a2578e38ceede9046928bd33ec72d046325f1ebbfac9dc00636fd017b6ec6a4e0516b222ce511e2eec18f00510f3da055345f671403044e6cdad3575ba071bc6e8f73b2ed5d4cb5226988027604ec5f9b784041744636cec5ab009d460622a4b6fe83a06508b5d1341d46c2300859069273d0c9197032426684e5e1555fffc384e1513c44a043409ccf46cdd037f0acf22310e3919fa215527c3c885978a489296b2e6419b452fb8ce2df53834e362771ca8c60846cfd2c28e021c03182c526b4d4ffc9e77db3176bb56f78e572ebbde5659d1f646a2dfd630fa637c412ee8eb5150492b998084b1e1bef37e61b5bc91e45a0c92c331330f586980ca97bbd4165809195b36155cfe0375c1e245b8cfb0d0c5a0d2858072ec13991278c0983348b71df4e8998431d4022ef112ba775bd55c84db9eeb28726ce6fc484eb52012dcad90f8fe5caaed3cd709c6ab7d6bd52feef2f3e0aaa5d50e1c4b02e227ca4db6731491f14ab7ef808a69b7e3cdb6853904a3aac9cea3f962a97d1eb0b0837b10abaef2b6bb4eb7efcadd7ba4b8b931799d2e767a845b379b7f4e79e77c69886955c06effcf11f97266c5772a313e04fa3f3934476135fb9208d19c4bb87bdb79324803352b432740ddf9443dbaeb542769ec92a27117daa35f4ab3d6e85944f8d7dd411ad31fee8cb0b7f15bc67f0e752bc2ecd28f14fe18076a26b442590819eb3918458ee4bc7cdefd9e37f3b1b26e4a7a79d33ed113c8881a5cd69df82dcd699eb321e9482811199d33c936427e352a1619246e645ef94ea79618e26d843ba9e8f48a0653b43d29a03ab231623eb559d733fc0826b544220c8a46665edd5c2c24b8f6d79ba512773fea8d397ec39e3a003746b9c515e58a463ea3587ede2f36d203392355c1c39b0932945e1111e48c9cb39879a81eccffbdf32f3bec52ceecff9281e521d309a5fff71c9bfd66fe33c3c94dfa67aa32b42548d7987b6b30c9a24041a19a32fc3b31611712caec6e062c164e0fa1905e6ebaab7ef06cea8737c952a7850f7c3a4852a7e3cf320918e1222dbdc34c1080da3b7e4ec5886e5474d9347a37d701a38e1736e14feb51957ae36afd49dbde2c5124073a9f59cc177c8ed7dfe3c71416b862a8481865896c99eb03a68cf597823cf5a63de31849a66c4ec9c629a9b87dd28e747df8905c2ebb083f782346f06ff5613799fb95122dfde046aab65b553dc7f3e8da9fa9795e76e8c117344eac257ec2e557ff6534dd5869255af47d41f08e18c5825976b897303512a2f95d04d7a4ff96bd81281c1c0f96e7054f6ca485343b3c594bfc37777a3223276837cacb4b373f5b2e419e0d603db049c06dd2525c768463c236f6655110c310f5cb8777eaac56fb59cd43cb31d53d5655704208e0acfd85cf1b22a517484f4bf8f258b7050eb69b4aa498ed05aa12fa77f5eeb2a46656bfe843fe5324c33a4943cf88a63da5419787073eea5bcd60baa70aa20af89b46bdd308eadfad1a8ab239d8db76581a84bd1d632b2909a1cfa82716901dfe154e623fc51fdddb641506a42675edd22d89193b648fdfc800e6fcd51cae3bff3f9bfd003ceeba492864374d694e5366dfe95c03cb798aa6d70cb128f73ec437754684cdf15799f1b61d97918126acbc9e9ab662009b1f32e28915871c51bc3252044d396a1dbdd66744e1114add9748c9466427864c5f6618eb2cf920fb8fe21a4ac835f47063723f856292a23395ab6e791c0190cde48eedf23b6dcbaec2756100d8d06c499a1a854f2ce77d9ddbc5edc705d4456ec8765da73c3fe685ba4f44e4ce478bcf3a5df0f651299522a4e71ec60376c6e950e7ec644dced9bc66b13b450d45ffcf8e942f5f476a83f10e29aea805a7b117a7ebac315fa698da3ce9ea88824cf2aad389a82ed28ff702fce0da6bdb5a79d7c94f27fbbede8ed26c4a6db5a97f9e336b6ff1d6bfa89bf6f4f1ec80c634c66d5897771f0033aa75fc90533ed60ed477bc656bc4c1bd8d65a0f5fc39d4372b6c526585dc826f2b54e0f74effa1c9e97013384e3780e4403290c732dc2846b067e9aecc2fc5358c25aa67b6217ae7c88d1a6d8c77941261a48f5c8126b9c00f649b1d71b35124e96f9b0517d276b31e512ee0e37fc766a041bdcc6e92c2a7621de88e3cf7b01a023a04d76b5e1e20fe7989121b9c073d6915a2a679e173620198e7930adbf9118a5627db30420ec87ab6117412aefc07b9032fd348ad8e298c5958fcfd4f4ef1e1840b78616110d8416880018a96e4765cb9b6c99bf92ee003020bd0db409ff379516805c196068bddf34d88cef6abf4120ad64c3909c27e412225d6daa7784df9c7bd0f920a71cc0037dea71219107ac82e3fc031a07c0c8f4c6b6853e9d655c71f3cdac9bb0fc84774f150bb108154391581c55511f5afe3890cf0126d4f7cb64f3b02597db4315cce85fcfe42fdfaac18d7da32aed0f070ceb628ea42f290c4e4d2aa6d6485f923a4379efa3d7b9262d83e6d62ac3d748de678f59ecb3aa48fa8aeaf8e4b84a028aa910052c8a6a197ae51953f0a76dbc19530020f4018bc43af5b29e636427478a6507f80761d715df0492eb6a24fd53a2c87c81ed36b0d3241d57bb74171c47f5850823c7951cc7c6d56805fd48b9d4c8deeff92f0ac344b24a1434d66b648974333c8d5d236a4ab3f0dd8b7650774a0c8514efa48115b285f385d7768beda878ad564cc4ac0cbe7e1934caba476318d9f673b99bd8ef5bb6c678592ce59b3b8f7bdf8e2c60169e08689ae83144a2327b629c6ad97f4588feee746f70d28305c9397769e067705dd45b9715f02fc1156e9633aea009febe9698492b0d785055dd26f80cbe2aa9cdf779d77f56cb82dbe74d2acb05a153c43206247fd8b54f1c06bdae138f5ee9e4fdd5cf8a9a8a0943632265bc849402559ed5d4e3c406de8505de80ebaaed0893f4529b6bab329b37d5a21c41fbad93964f7a04154d2c30b6db5d09dd02e51b7fbcb0c0d971e12294eeaf55a1af3681a7deb9ba679c77cfb7d3a4fa1f411f9d1ee37204bc76a319ab58c27c88856591d146dcf638936e88c429dc74f6365820ad794b313a9be903bae13e72abbb26a0461a5c526a039d50aa251f281c9f4c2e5190655f2583af2e2ed869a0309aa447398224a5123b4229c0156a1433c8112545ce504fde1ab13b0e9c1807beebf2158b5e4e4f9cd520ce4f3fdbb1c28a6c2a4a24d22304cd8e82a74116fa77d5c58b605f33d4124374876cc322e8510286745ab744d4efc8b49ee5879fa7a2ff86ff97072fabfcde477068fa8077eaa752b8f283c183808948f65f89eb40b6aa9eda82361871da9585b4f6f384cf97cad670ed2c60c02096b414f336092bd8abba8b64f5217ac3a18abd9914b40d6ed9f5dd94702d2b474687b83bae309eb5006b02b6b521b2f9a936eeae94df3fd76fd6eeb9f08495fba23dceb4969477e056ae538e8850a97055498a15b520429a27e772be631badd0f6acc806f46424c55a3201c858e99f9ca04a6e9fb0a72577ec61475779a8203d975edc55728170c93477368e051b41cecd23e0835252950c4a1adf8de74db4759df4574816ea329a773c68e276005fb330cc2454ad916270a96c632c61a0dd9274ec6ac88d563fe5c9c604466eb5f26643bbc3bc21dee6a8e8923037cb5fd9c8b9a401de7d53b6c8269d8d0abec77fe2585f29c8bac13022dcd4c01f5ba34f6d3024a9e943fdc92b441f6f29e203b761db3e5f22211264371b97f6cc7099e2439db71e26f88ab3e7a0b9dbeb7f99ddaad0a87b9743694931b5946a60ea6ddd7613b0e95e116f2df837be8456f264805dcfbf8818fcac37f821d0f9ad1ea1535fee033bef784215e70b52f73f4ca6a74fde656781b545c1daefcef810de5789bb77e267c45a35c26f0e55b066d83c63dc20d80d5bd3b6c6f2d6f5cc608aaafca221e575b4ec0feafa1ae8dfe23f1155b92258c4c9684df5ba90d70a1b55884a2e33026c4b986aba3f0ba33b7dd04eff8b5f40f561c97f8ed2c4791e22361d63074a2b9f9f84af0b7f8d34fc16a0f7b6afe1c4cf9adadacf3cf0e764dbb0962a2137bf8f2b381b8ad946cec4390d03deae302094086e7d15af275602ed9a128542bba7cd321f50b2d2aaa35ba1cb5e15850116b160fa44b6cb44713da08ec67b16bbab0377aedf846161c4a8d388631076ea888bc28cb5f48696f2d0eb8e0d8b507a29a2030b33584991d92b2d30cb0f364c9d5ebf8212acf74a2b7f6c93bf42576ccf2f627139e9c8a1e4ebd1f353b076913e81df4a5d6ff148e4d0286fd9e1c0799af8e1036dfb2b666c7aac7268cf1f36114f679cbe7b813b183da4a272e803378e986826b31af75609271831eb3eef701cbfb4cdc2752035159500afa0fbea6bca34ea1513919316ede7685484ac84f024f2f27222dc59c7bb650fc0e58e8f161f5cf22e8b6736c1b2297034ef6cff42e0bd5ccaaa9b4fa0e857766e5ecc9a698b192a9c3c4e37abb126e8beb4c210ffeb55fee0ae6b918f4dc5abeaf73db74bb6396dec2a633bfef1e69a0f2c22a68aca02cd9e687abf466f5487540c765c43d9cd1747e27f617876dd9b9c6014a9d1d66e540885ceb25a76272968f5309a770157b8c7685054a6e1655d5080dc3da39c33b09799c1f2e6586328718aae5c407367708168d8aa3de483b538be12b22ba38db49f1bd7babe5304399c6e5fe68203e3b03638f511648bd8da760a111ad0147ad33a6ac875ba264a17275aae2f852341a8524019c7450da38739f76be40bedbbfa7018d5bdea1a9e9fdb5a7e624549089451f357a6bc70a33d1f110fe1d92ce3a9a163e16aae5f060b125f77848bcaddebeff20b3c4573749db5c022838ca2b4d5d8f2f6f81f4a72d2d307294a5c71cbf90f3b40449ca6a8b9c3eefa002442717d9f052657bcee00000000000000000000000c141e232a353b40"
},
@@ -65,7 +65,7 @@
"gasLimit": 76053,
"maxPriorityFeePerGas": 8714,
"maxFeePerGas": 112705,
- "to": "0x000000000000000000000000000000000000aaaa",
+ "to": "Z000000000000000000000000000000000000aaaa",
"seed": "0x43425e20ad82f0611295b1a8e583f10b45c41fd51837e5df4f2a745a4f4c5014eb7ebae166903c8c99597f7ce47cb9e4",
"signedTransactionRLP": "0xb91c4802f91c440482038482220a8301b8418301291594000000000000000000000000000000000000aaaa8401cfe6d180c0b90a201de9c19823cb94b05ce8a3aa5377e8332c9b2223d6e42d8cb9818c3fed182c667c401160d9e2024e6651382851e120e1fbff1d7d15a4596f626e61af263fd753ee3f80ca801682d7189b2c64bf3acb1d676033e49b432fdff76af56beab1b1e09a8269b4c2865aa9f603e6f53706b849ff1eb4219469fef70eca55d2786ff26373ba730ecd7eedeb77e3a8eee780da5393312446da09883f1db34e4b8e695b3f38b8b2c642f4d067194b2b7b4eb87250a29bcc49140dd41da57e9193531c0d0630cbe8830ed8a3f4ae6b527e6ecdd04b27f808823a5d8e564b6b9164f63f9553d0afdd8a8724c93ee8c4d6f700a7e069f4471411ae0aafffc312f94b1f3dda9eafba18d2551db4689cda39c6170448f8107edf97c13cb1b65cff5817aa62658fce4e4b5b15ac633558b803f73c9f3628faf7129bc4a4fa80b42b2ca162f8c2e37054dcce634aee3a411db807740939f381e40996ed7c2f683e20ea421fd535d046658d55843749b547d1f3ce9bbe51ba10a30279261bc4d988fad5c53774a2fb06718507e7b3f20bc0f6f030c07276e3bf45caae9a30af29f7397c1722c12051ea2f941a90783e38acfbba892ad63637dc113c0b354253e32ec71ade86d4f0890661ab1506e544576df4f3ef32ff0a15182ce7a178c6dbc1c5a536c6d6e61f1c7f860cd0fca797c929681329b15162933bcc7eb28e57f4a2e7e195399bc917e764218a74f99f7bd5180284d9e5f2fd5651158748d289befac922edefafe47c8352b9f9ed9a6b7639f5c1fbf31423dce815156696f0d3c582fad4af0a3711775ba93cffe3d8dc0149a2ae217c55a46452dd3dde99a1f718185b03833c1ed8deed4ab1d6ad20479229b37b687a991030962682d1ba1f430c2f494dec8a68c482e0c9181655d6eae7ef50f691319485f4ce08ebdbb87551c82122934061024b7619a96f849f484fae363ffb81e655112b7ebaf95d29311e917d9ce3fa0cbe73b8b982df394d43af1b0ac8ad6bab5583cf993d0101fcf1b34682f89d21efa189c8309f1a4d625edda4ae53583de2cd3b38e0e266ed313ff5fea263469ed9e9bc18c859dc97f6398554a7e84b6e7d4e980246a1107eb993a7d84a17d06055c3ddabf62d75fd917b888bf7a8bf232dc0960eeabebb6a87956f6905fe5cc87a964cadc71ae60f8a44264603559a2ca765c6a736a2ee413dfb00a4158823bf8bed5c3af1eb88367b1586d9695349c2ef61f227db765ad473172a835058dd03109c6fd2a3f22da9eb52cb3fd2d5bd4fb40dd4f6a743ca7b20b80937f828f726aac0f90981ac94b18ef2ad5c90d994d386d477deb4ee23091b6c87e26818e6ac634333bce48930a6fa091acd4c82048c5425c83f5d5682f76e20daa2fa0dd6e69af57b3731d1bfb89e6fd39790ce3300e331349c9925c05b335d813f933b9393622582e80ef2f0027133860191fda6ad963de03b6298cfcacf775e58f1099b68408a93835739a96696f36c3dd495c276f8a2f3f8ef972ccbff82a4ea46ec12b2f87571b0b213215548b914d055ba98e30ac9bc6ffb31ca8c4ae7219a69608479b96c7c0a600034d49589a63ac1740eef6994f2354fa7ace3223a7003b99288f397ab6a2497db78b4ee14d5716be55ff9ec291408e9e756c08092e2d8f5f2d994f0bf75d4afbf5b8a9c217df6982b64933c786dbb21d9a9ce4c5532572213922f750ccd9c8e5e08d578a2144240757adbc1bf53581f1ebd54dafe48a9f7102f1d87ae8a346cd4621392c589f73bc94ba1a027eaac7da1e29435398de3a354235839010bfb9fc711be2c84693f550b148913f3a9de1ded6ad41b0eeda1c8ea8eb5839a06fed3e36b7e8a220a5d5e7efacbba56a585c2664483ea68c95e42803e131240ac27499252b7dc5b06fa71b91662690979c5d8ea0ede78a801d6cde3b29aba83c3fb5fabbeaec63871ba4cc5772bcd7f97c78b16170e13f49dbe116300548c668dcb61d798dc834ff6693799e6ffe6f3b32f4f2b71349e301768e2397f904f045384eee863120bcc1686637dfe7152a2afaa1dabce08c8f16f8fd011e87268eff9e16f1bbe07f0bff3e23355d3c94767e8e43bc35bd632ce5fa1f6f983d4b2c1ff9bb04805395b006098e29c0d03facd9dd77d594fbace0ed5212e76425fed9dc96ad4191f6ffea72cd299d0369e1e7534b7585a9a35f430d86b00ded922a9cd2db891b7c203a01355dc78676390bf41598e0ef9be9ff9218f28e417061461d910fef22c3499002299c4fcef26e8352f5ccd036c91b8784205cb3f3c2e0aecff18d89faa59b4fb0cf4ad453be3736d2596bd739013fa8c75bf1e848865952c300be4d0a80f5dcb80d3cfd1f3f3c83a123d3aa471b17c7ce1c7ea50abbe5fe397187ff52438af55b5b64cd8f9a3d021c443d8ccc55befb1c513ae8afab0d5b1bb4154a09b50cc0a4605162cde421fd6e3003cab82cc8ec3ab7ed5d98ed7222d83e00cb61d3257c6503ad52f214f1e5a756ee9d4d4fddfc09d73b0a1378b437456a7bc42d9d43f916ccc61ff126a50841484f0f9addb261f38ac75d7dfcb0435fc4a6092e85d6ac4fae064e95870b0efd4269681099c2bb743773cfc61fd082ceb27c95468193dc1773b31906e638c9928c2d0a57a77e0d4ad0e77e703cc099be8a5390dffe6c4449c72036247db0a76a6899d6046eab2ee121e5d65540ede74eb76cc4bb2438edde71b126ec6be88a54f9981060dd8508b0f635938916f7bf3cba7a104c59b816f3c5256a11e1704c03461d0e9e22133b907dbf1edcc796c2daaaa07c42a01deacf8072a4b76cf060d386b0e0f30546811d03df36238c28c568b900777309c8d2c0e5c711c12820e96626dd88debc6e80c8e0627aef80acdbfac556abb17b91a4372aaf6eda4ce114ffb9fa1d81aadb88099dcb1ad953aeabb48611716aae98c8fbfbfe30d6cfa3e15a409f5d754bf1c2602e2f467cf32133a53929df8d34112871c66da00c7931fef9351275206acb60b6848db36360af2643b7cc793df85fad6c3b4201bb7b2ff8327ae8efaf928a2ba6c36eefd912f015f494a34656bee438f9a9ead1128e03e9b8a6fba651a0e0f0e6f043cb78f76ff2ed08e9796317948f5ce6b4c4fb48c5f5f6a79f2c576f0228be0da8b468f449deb3cc0a9319e02c2bf802eebce51d1019ebfdd7045fdb8a74e108edec98610e6ff95db9af4be713cf78d1a8f11baf81d7cf02e7aca5ad389acdf474490d86abb23acb44c319b2531d2d97024ad5454425ac803c40f19b382bc8e0ff277788e178b055e0a5908fe212efc62a8f86354e3c1a0a653123743b9b7fd7115bf16e4c12b233ff8122513d8bc09ec3a561dc130a901cf7d7ecc43188494bbed9813114f0ea79e7817be2471f437d395cf23710d40573f328490ae37454587173817b7ce18627b40a662dba0bbb9858971a505a0786a98526e49faf0d7aec553a3b74abf28d3c92106ac3361845d49a4a668d743e202ed690171a66575897531e65b453f2b016fc26e94412d07dc5bec7b72d5f2187893f297add3a34daa3a074c40af5f8f8a32d0e3e501e77ae14800c5a96202790e9ca6264d9d31bf4d251ed8c76f42c2efbc8628614fa41942081e281878a1c81b2d80c3e6677fd6e5f9bc016395e6247466240eb911f351c0fd45239b2d9235bebb32ace00c6c74f32d9a7b2c68d2262926ac6965da191194feea472c5533a47bd2817b3550f507ced144ccf46308774d76e8f127336c2aa9ec2a6bec3ecccf7af971a4c98e39d309121f0a8d3fbac8ce19005dddac0be12c1746d6c386713c44033f55dfd987fe91117de3341d5ced0f48ffaa1c329df5d9e7a2ac7433ab3d3ed4958a50f5056e62c1a175b470d8f64f120a6f99502fe5c61dc581194ae1de716ccf8a779383cbc933d148fec9e9929d73574a2099ef6fff48c84358f36ec54cb95bdffb63fc30a538ed8a83e6d2e0ed97c0733dde3075c524c96fa44e92a0f6d3742628dc1bf5a4f6b39aa40b7d5e2b1fe187cc4f6dfd1ee26236ae36ffef9d34ad53879e7a2703ec7f2474624b775a2c7201a3af798425c09e88b9712b392a07df51a781a3c6c68e116eccc51eaaa72646406387cf945ec40944a84af09ea43948fe11efc2b5164e0c43ea3e216987e6ca11228a7dd6b394a793d83e59caec6a756fffb4401dd718c09586a1ce980daeb548d383b2795e512ca15c08c286de8df58c36ee1d2bbb53455c1a7bbb62d89ff9dcf5cecb30995feba8c354776f0bc73bed74a08a2c3ebff11eee963930f5081bf10c702bc33df8bb61e3d35752c3c9d6e019d828a5739a0e609d1da9db626d27f65ecc06ad92ebf02172a7add565c86ce9826d2dc2c4a7b3d0da83670adea13ba40bfb071b38f7d22a858eaa69280a75050ee73df9f7702d925911e58e6db04a4db86c2bb0ace5dc0f36654d6c496fa64e636739079d50956fd4022558e1972831ce3dafb6b8de84228e7305f2217c19a5c8f4b00ad7b3a625824e0f9d30039eef39eb5cacf51b542691e154dc32baf932f3a77f8ca550636cc597e57fa3e99a9d5c129dc46c4176a8123b7305b9593f32eb75011f181f0070f0a4c58e8d3c28453b18bf0be9210aa9327f096de2c2394d98b4a8975dfdb693af69118b30c2d197411a26825f3d68d524cd73279fd6011bdb3c79f54726e79ce6185436762dbdb673596f5a721ec9a1e34e876a407000d73b3227bf2e5674d263299c0a067fd41ddd85702243906bffa04a710c8be6614946013bbfc192cbaa89c4d3fad364ef3edceeeecaff9a1dff146f17d10dfb66a51246403c6f5b4504d9afda1349818d014cda5b9677e7965de222c48d6881280877b48259791b117e2ea8e93fbc7fb42974176a796416418661fd3fd22cb70cedbda3a9b4c4baf0af287bd4f225c5ace125a81b921e637a584bd3f6474ddaccd1fa898e0fee2666e964f6d23160573b65559b3b5b23d08bfebd7cdbfefee9dbfb2ce99b9672486433916bd02867573709408b3785f836a83b04c7d76edde83ba116df01a68ace99281b341ca34baba05acf3a14575d0e6019cff340c0800a52f79848f5e75abf2b42d53e49f847df9666e36fc697eaebcaaea0d558303a877a0c7f890bc06568c2c7c19a24b513e14231fc31531684facb1d897988ab87fdd31cecc2d6c0393c158013f9a49569d6da6e18fe438f8ae6c3fb018be25da1b955ef8d8c551e2fa6d75438c9c8d61383c52cd13084a936b19ef5f4efbc1da0cf937bcd68b924087d703d5b0f66063f6e65ddd23ae24039158b783807869427f7b7618d4c3703fe40a9b82882d80731705ae222a47315fe7be8f1bf5623ec069510f08f3994154b0b77ed1108feee548d19e83e39edf8e4710c231e61a21402342f78b686b030f87f4dd617512c50f22abae49beaefb8076d350cc615f4e1fe2b5391825f5e6093ffc010f329b93d6b39329535fd30cd60a95bb398fe8b42e380ced928056f92be1514afb8bff538884c7c68c9e868560b2c81ad1f7687aedef47dd2261283c90d90d594198c5e73d3c7758537f03de24dd4187442b5dc08ba1dd192ce3d11a5b2bd80aef9d45e6e8d370d2e5f7facac6ff6a01db9dca1cbba4634e433079ee08002248ae9e117c1ba83811d9f6f953265f84b52f88534cdaa5683a1896c87ac1e312d3ca9be1ef731389b3714545413b31bf400e85beef7681b3f7fa549819721fc342fe5d48951e2d7e1068118cedaba5f74585ad2e51725bf70f918eabe576a0c645f4567a266ec3d07649b637f33bf685702c76818f90ad867dc5cf91d854a7e540ffbaaa1bd17b22d3202cf319159a35b1bb6021708a7855b36b66aecdde8fa1ee193851bb350f2fd450dff0391cd2f8edce7e2327417432e3c0329d683c0df06f4fe59337399d6fa20835c793caa90c9d013dd4f1577589c012949b7af88c5943762f8f18252028e2d882c26f6ec4a687afc321d4f8b935d095ffb20ccd635537e67ac57d30a7ecf39d83f92f6de8ddfb8d233075fd788f3f70b700694a9b4f8741066e679623a0b01b688d62f5768f94fac14f6a6a41a0a1ce096bebf7a94b3140b752e0dfed1f92f857882c67e8276721a818fb3f78649ce64acf42530d996c2e5d118c90047993cd6ad0acea12434587a6175ecdcc9ca99284e2e4e7017a9b2b073e30e882684893bcd350dd2c53885b0dbf188d1551843c0eb7f9bde51b2780ba6469d0d0d082dcc6ea516fcdc48866bbeddcd74d9561a298d51020d8ca9cac2d2f62e4c51aef9d7265fd6098e09e92f7739363898780c0ae310ffd0cf8e5a61e648570a881a2d52a9b811888f9aff9d4ee3b32504d76dc2f0c6a0f17587d94bd80a644d59385681a63288654975b4a678ea7864d5b7e6914896a7d4e4cc0291cfccb5119844111f5a3a6a13b0bb4eeecbad66c5a53c424eaa5c3f4b1b36dc552cade08c0a337f8d213a693ccfae76866fdef6fcbfff50b97c492381562aca77ae98a7e837121e3531ec0c3bae693ac9131a2440fe80495e58c90d16cb76299e23510c966cab6681572b8a9258e8f5e2e18eb40586ca23068b396420897beb5af1f11084eb1ba7de277f55fe7be2400bb734d2ed3784c1661784cff4c9a8fcafb27849470c2d2f959e55877286d8b2bf3d90870f3f8b18fe700f10ecdc32fe5129e56c19e723a39ea9f18b75fc166b684f59d0d101c755dde353a2527d8bace4f10b0978fcbedcf8a8fe49c5d961a6c20fdab4926262a4aec12408c5b188cc9de19411c15cf2578c88b868433e57391341cb44db065e2f20e70d46ed8d1ed8c848b6285312494cfe726632e9acffde94d4c9867c43d61618f7b33d1c0378a1395ee6e7831da1d9b38c8fcc95555d838f301404859b083cf00eebfcd5b4d02b09ec8d037d02a6f74b1b3d86ea539f7c08c888f4560fcba1db36e706116069009037afb5969da00f816527dfcc9691012362fa873bed7d74f9d7a1d238feecfce2eccbc63b22f6e28d659d2766c6e25ed1ea1cb170a0fb3fb19d0749be1368caf621fe8a2d5d8783effeb71a9fa8bd6b70a625c2ea6eabc330ebb9faf2107936c7bf82c916fb925040ec885b399dfb4bbef7bf4649b9844357a508008591077c1a5aea7ed42cd962c6dc995bcdf34a6abf5727f115dd0dbdfb62617b182ebe63d0e49b664333dc7ff3f5e490dd391b45964168208e33941292d5fef99d9a5e15c7a756a218b83d28b746a2c9ddb8b24a33b9c4fef6747854515b35d1ab0172b80626fad2b6d78a86c5804b6df7d86a2a1276194e92f33b65a3d55da9fb0358740c2cd24b83dd0be973cb73426b841941603aac8d9bf565bc200ebd5c3dab81a990c1bd6c1921dc4ca92043d0ce81a686aafb9e2a06a34c2048fd8c47b5361cf10542912c8b54c670154c493e7423c8b5a9f9ec04cdd362df54cf13fc5d2b6d0f01705f4861749f048685226a92ef58d25fa8ded6792a1cb9edd2b69a99ac7da39c2cd720561dfd4a551fe5662a22bf16fd09ea26964a6d5fd6c1b51452ab99804374c6359cc857e5c0b22962f29b25fa83dbb69e95994a8e8a8717445657a8f41593859abdfb8ee8d358cbd0b9a2bf56bb376384d3e447f9efaad688742586d4fb027b97a57cbfc6db44de1a441caaaea92bfc6f6380d31125bc7051abbd17667593be1fa5fe438b6c29928b039fbb3a6235b2f5a9d9b56e25d42549bc2331066537e9262029d78c19946a252fb79a4d8dbb3f907f6d9799f06bc88d866b962d2db546813933ebe2d35e01ecc771f77253810f553725b3a17eff75bf85fd40741692a6200adc0233120486409c611db74c072d22fb4321ac8c030d23c5ef45289b58e35aa63d0f36b57bc47d3ce628b6dedf5cda9199b81b0e9601477fb562bf4293e7fd0b5ac4853c4ad9ce47d5a761c7a91bb71d1e898a27127dc5d17ad0e1f60b74244376f1c8d073670bc50cd02e1f746a8a826b6bd56de61635b16ea2e1db38e172c2716a392659b20f627d779017102ae8dea4e20e80538ceb63315c3c270c62108ed9ab38fae3a0733f0a480186b28c91a400bf7c553fdc9407f1f51fc08ceecfa3b2306fa31a72f75ff56e23997ddcf2930809f4737377d1c5da8528f216fdf28ddd279bf0ec64ad0f819d1e13194e68baf4f421ce48eec5773a65f6da1ef221fe5adf9a391d21ba38e6dfa9c94c713fc8e092ff590f1b83b5cdbc4443b9c77fbc856ef305174fd84fdf3aa8fdd841b5ff75b70c160a39ea2f817439b25bfb7a4b78c3ce4b484673f88c944cb9da1c9635f29480c7490f8417a055c6e19b5d32299a802726feadb2f02b8fbbc1a5300e1e813e0efd01a7619393023ee77e74122f7aba187b2d39f82eaf63a30bbcaa75ea223caee9b0682640d549f3b1f5ebdf2ed8abbcafbf42b2d4aee6dc6e2318d567d2a84177be6673e1b176220b1bba332e2ccb050bab684ae1de274c1750dd281ff8d2a4f398330ad5c265270693c2dba1b6e29486abda0aeccabcc3fa813691c5ed4e49db982bc9df1dbc4b99d4460c882b30c02a8eef1ef13f378b75970eda5786fcf025636af5bd7ca2a0cfc4ad5f26e287d840b1989d3e9fa197e3e31e643b575c388ea474a5ad16011fdc50c322f64db35fca37a9f5d1f2083970b39a6d1c4f21acc9a300cb176da23b39d415aec72256521a2cb5ea03eaa178c226e593dfa891abc2fe33e2770867477de1cf3738968965d8c554c28b9e66a87f816200c022446860e97500f022426650fb23551b3d7b6292235db665dbdfe2a5533f2fb03e84272a20fd1388278bf80b582e2e6652c2c8f1d1dd987cf5cc574eabda8df7daec21cc519d3c731e1293eeec6129515f47d5b63a98a723c07bd463b654a17aea4a76ca7cf4d561876545f5036dee9503a4a7c5cedaeb469d6dd69ed6b7f08ff3a8f5de9c20c747e12829c575700b9552400d755bf3c16d77b6ce443ecd27a97b330e8017411879790a01ae342d31fdc0cdeb796f5edd5b4ed73c3820d3889bc5ddfe23f7628434eb22d89a0a48afa802ed3203db384b601502fc28fbcd3add127371e2eb0987e54f6ae761cb6417a836d1fcd837944e6593da4d043392b92860d3aa956f391fb3b134078555f4e7b2e47eeac2c1098baf2cf4346fe5d26a7da2b34f6470b182ac617b10f67a8c156e08b7ce60a388e9a74620ffe645e556054ea8bd73f7569396941cd925403bcb1d3f197e373b0d2b8c32e1cef0bf892e2fa6f0ec54ad62d05978b6a62b806a36be76542786cc748136eca8e2bca3e91fef9cfc437ffaae0f64e4b179eee024556b9c1a6a413c8d7c3117f320c225f73ec2740d147f2104cc2dd42ea1695a0b691e325ed1dfb017b94d58df8a82abe85d4c4139bbcb62a4903a364e0ddbda772744956de0f92f61f44eaefc98e6e9b5154aeea17bb0586af25b1ef183ec2125dbf8a56b79668920d8dcb27045882ae99a8c5b05e854e6ba59f3d213bde8f56e0b51bd941e97dd0edf2b936122449c35edb301abb7df7acdf34ecbee604b8f967d1ee09fad9a9667dc52b9a87c9a75861b21d2a5de419724159742b86d42a6f145e33367795746472c98d577b5550475e9b8bc99ac6aa5a69d2b462a3597085cb8ec851ba0d8d89b81afcbe750b1519bbd10c41e4c621493c8fab5e0bb5b425f210c816ccaf19005814c6d01f854578bdbb57cd445c3ea9bc47ce287893288de1f921ec5d131c064b20061f4ea53f972c3f5dae734678a5b73ee5f156c3898add8d2cb2607b28bf9a17caa98ae10749034795505e0dc33f00114d483a073e715eb71ffd0f4f2af99e7f789ac51c2be529999b519c928827bed3d6f5cc9819d1fb730e13305b4429e965225dae99ef7b63f481fb311b7c7ff0d20774281aeff2eb8ea34e58577df3ea25aba65650d9e59b17a338097ce054653e99606c522d2b6fad2865ece28800c4145bc10d8e60f5b3cbead04638e2c44bc7af68bd751ba645c1e0e1f696110b07cc340cf99a820df4f5ef12c6c00339d3c4ad19d8ea5da66ee7377a58a4de0331c3e484f5c6f757a829cb7be162c5e8295a7ae1c2036525f606376788caae7f55d7997cad7242b378eb0cf21274a4d8a9495a3c1c4ea103a71b0b3bbbedd3960fa000000000000000000000c1320252b363e41"
},
@@ -75,7 +75,7 @@
"gasLimit": 28335,
"maxPriorityFeePerGas": 86252,
"maxFeePerGas": 94636,
- "to": "0x000000000000000000000000000000000000aaaa",
+ "to": "Z000000000000000000000000000000000000aaaa",
"seed": "0x43425e20ad82f0611295b1a8e583f10b45c41fd51837e5df4f2a745a4f4c5014eb7ebae166903c8c99597f7ce47cb9e4",
"signedTransactionRLP": "0xb91c4702f91c43048202c5830150ec830171ac826eaf94000000000000000000000000000000000000aaaa8362d8db80c0b90a201de9c19823cb94b05ce8a3aa5377e8332c9b2223d6e42d8cb9818c3fed182c667c401160d9e2024e6651382851e120e1fbff1d7d15a4596f626e61af263fd753ee3f80ca801682d7189b2c64bf3acb1d676033e49b432fdff76af56beab1b1e09a8269b4c2865aa9f603e6f53706b849ff1eb4219469fef70eca55d2786ff26373ba730ecd7eedeb77e3a8eee780da5393312446da09883f1db34e4b8e695b3f38b8b2c642f4d067194b2b7b4eb87250a29bcc49140dd41da57e9193531c0d0630cbe8830ed8a3f4ae6b527e6ecdd04b27f808823a5d8e564b6b9164f63f9553d0afdd8a8724c93ee8c4d6f700a7e069f4471411ae0aafffc312f94b1f3dda9eafba18d2551db4689cda39c6170448f8107edf97c13cb1b65cff5817aa62658fce4e4b5b15ac633558b803f73c9f3628faf7129bc4a4fa80b42b2ca162f8c2e37054dcce634aee3a411db807740939f381e40996ed7c2f683e20ea421fd535d046658d55843749b547d1f3ce9bbe51ba10a30279261bc4d988fad5c53774a2fb06718507e7b3f20bc0f6f030c07276e3bf45caae9a30af29f7397c1722c12051ea2f941a90783e38acfbba892ad63637dc113c0b354253e32ec71ade86d4f0890661ab1506e544576df4f3ef32ff0a15182ce7a178c6dbc1c5a536c6d6e61f1c7f860cd0fca797c929681329b15162933bcc7eb28e57f4a2e7e195399bc917e764218a74f99f7bd5180284d9e5f2fd5651158748d289befac922edefafe47c8352b9f9ed9a6b7639f5c1fbf31423dce815156696f0d3c582fad4af0a3711775ba93cffe3d8dc0149a2ae217c55a46452dd3dde99a1f718185b03833c1ed8deed4ab1d6ad20479229b37b687a991030962682d1ba1f430c2f494dec8a68c482e0c9181655d6eae7ef50f691319485f4ce08ebdbb87551c82122934061024b7619a96f849f484fae363ffb81e655112b7ebaf95d29311e917d9ce3fa0cbe73b8b982df394d43af1b0ac8ad6bab5583cf993d0101fcf1b34682f89d21efa189c8309f1a4d625edda4ae53583de2cd3b38e0e266ed313ff5fea263469ed9e9bc18c859dc97f6398554a7e84b6e7d4e980246a1107eb993a7d84a17d06055c3ddabf62d75fd917b888bf7a8bf232dc0960eeabebb6a87956f6905fe5cc87a964cadc71ae60f8a44264603559a2ca765c6a736a2ee413dfb00a4158823bf8bed5c3af1eb88367b1586d9695349c2ef61f227db765ad473172a835058dd03109c6fd2a3f22da9eb52cb3fd2d5bd4fb40dd4f6a743ca7b20b80937f828f726aac0f90981ac94b18ef2ad5c90d994d386d477deb4ee23091b6c87e26818e6ac634333bce48930a6fa091acd4c82048c5425c83f5d5682f76e20daa2fa0dd6e69af57b3731d1bfb89e6fd39790ce3300e331349c9925c05b335d813f933b9393622582e80ef2f0027133860191fda6ad963de03b6298cfcacf775e58f1099b68408a93835739a96696f36c3dd495c276f8a2f3f8ef972ccbff82a4ea46ec12b2f87571b0b213215548b914d055ba98e30ac9bc6ffb31ca8c4ae7219a69608479b96c7c0a600034d49589a63ac1740eef6994f2354fa7ace3223a7003b99288f397ab6a2497db78b4ee14d5716be55ff9ec291408e9e756c08092e2d8f5f2d994f0bf75d4afbf5b8a9c217df6982b64933c786dbb21d9a9ce4c5532572213922f750ccd9c8e5e08d578a2144240757adbc1bf53581f1ebd54dafe48a9f7102f1d87ae8a346cd4621392c589f73bc94ba1a027eaac7da1e29435398de3a354235839010bfb9fc711be2c84693f550b148913f3a9de1ded6ad41b0eeda1c8ea8eb5839a06fed3e36b7e8a220a5d5e7efacbba56a585c2664483ea68c95e42803e131240ac27499252b7dc5b06fa71b91662690979c5d8ea0ede78a801d6cde3b29aba83c3fb5fabbeaec63871ba4cc5772bcd7f97c78b16170e13f49dbe116300548c668dcb61d798dc834ff6693799e6ffe6f3b32f4f2b71349e301768e2397f904f045384eee863120bcc1686637dfe7152a2afaa1dabce08c8f16f8fd011e87268eff9e16f1bbe07f0bff3e23355d3c94767e8e43bc35bd632ce5fa1f6f983d4b2c1ff9bb04805395b006098e29c0d03facd9dd77d594fbace0ed5212e76425fed9dc96ad4191f6ffea72cd299d0369e1e7534b7585a9a35f430d86b00ded922a9cd2db891b7c203a01355dc78676390bf41598e0ef9be9ff9218f28e417061461d910fef22c3499002299c4fcef26e8352f5ccd036c91b8784205cb3f3c2e0aecff18d89faa59b4fb0cf4ad453be3736d2596bd739013fa8c75bf1e848865952c300be4d0a80f5dcb80d3cfd1f3f3c83a123d3aa471b17c7ce1c7ea50abbe5fe397187ff52438af55b5b64cd8f9a3d021c443d8ccc55befb1c513ae8afab0d5b1bb4154a09b50cc0a4605162cde421fd6e3003cab82cc8ec3ab7ed5d98ed7222d83e00cb61d3257c6503ad52f214f1e5a756ee9d4d4fddfc09d73b0a1378b437456a7bc42d9d43f916ccc61ff126a50841484f0f9addb261f38ac75d7dfcb0435fc4a6092e85d6ac4fae064e95870b0efd4269681099c2bb743773cfc61fd082ceb27c95468193dc1773b31906e638c9928c2d0a57a77e0d4ad0e77e703cc099be8a5390dffe6c4449c72036247db0a76a6899d6046eab2ee121e5d65540ede74eb76cc4bb2438edde71b126ec6be88a54f9981060dd8508b0f635938916f7bf3cba7a104c59b816f3c5256a11e1704c03461d0e9e22133b907dbf1edcc796c2daaaa07c42a01deacf8072a4b76cf060d386b0e0f30546811d03df36238c28c568b900777309c8d2c0e5c711c12820e96626dd88debc6e80c8e0627aef80acdbfac556abb17b91a4372aaf6eda4ce114ffb9fa1d81aadb88099dcb1ad953aeabb48611716aae98c8fbfbfe30d6cfa3e15a409f5d754bf1c2602e2f467cf32133a53929df8d34112871c66da00c7931fef9351275206acb60b6848db36360af2643b7cc793df85fad6c3b4201bb7b2ff8327ae8efaf928a2ba6c36eefd912f015f494a34656bee438f9a9ead1128e03e9b8a6fba651a0e0f0e6f043cb78f76ff2ed08e9796317948f5ce6b4c4fb48c5f5f6a79f2c576f0228be0da8b468f449deb3cc0a9319e02c2bf802eebce51d1019ebfdd7045fdb8a74e108edec98610e6ff95db9af4be713cf78d1a8f11baf81d7cf02e7aca5ad389acdf474490d86abb23acb44c319b2531d2d97024ad5454425ac803c40f19b382bc8e0ff277788e178b055e0a5908fe212efc62a8f86354e3c1a0a653123743b9b7fd7115bf16e4c12b233ff8122513d8bc09ec3a561dc130a901cf7d7ecc43188494bbed9813114f0ea79e7817be2471f437d395cf23710d40573f328490ae37454587173817b7ce18627b40a662dba0bbb9858971a505a0786a98526e49faf0d7aec553a3b74abf28d3c92106ac3361845d49a4a668d743e202ed690171a66575897531e65b453f2b016fc26e94412d07dc5bec7b72d5f2187893f297add3a34daa3a074c40af5f8f8a32d0e3e501e77ae14800c5a96202790e9ca6264d9d31bf4d251ed8c76f42c2efbc8628614fa41942081e281878a1c81b2d80c3e6677fd6e5f9bc016395e6247466240eb911f32a860e3ef684b354b98585e5bbff5ccc4dee8b2e576325a4ee1e3571b7f0f9956f6441c10f6b2f90865b9162cf026c5abb65611111e330370008204873d7b1c701770f64f3a2bd8c063c8dae1dbaa93121ba3f831305fa1dffce7e089b8a900c1470825cdafb401950d6f0d8e2fc6ff7cd56b3f3025339b32ce3ebb19ae066277d261f783b9d810ed23acce45486914bfd5f88a17c6c9ded8cf5efac467466097f5fc9a7499d47bc9423c96d16a8f4a736ae565cda622f72f76e498657e83f619c355b7152f9b54746b8e7879e322566d54da3a03e0ca0f8c5f44fdc91b467590dd8bce5c5899ebbaad86ae3893e19aa2924a44f505b8f7df0c4a9d7ec59a2e6daa0d33acd3e1e9076f8531290425ff0af19b58c5bf8614ee567de68b2e8acff3493269f12a49998edd73a8de88b3c90e36248c250a24c047ddc35f0aef665225551d3fd4942569ec6aec74ffb8e1bfc546ef80e52ed938434c5c31c58eef71377a1da3714f368ad84ffd4193f59642aeb6f0a6a1c36471ffd38e27b4c7da33dbe30a5f3f25aac5b7b3e30ad6099fa7784ecda783f1fd75aff409d7b5e84a91a2bed3d0812b3e054411e0ee9fa8a1260ff29e79b52c8c796602481a6b40f8ceaac1e2570be95a2f9a3babe5e0f042df1f97e1cdaeed4682645ca03d3dbe5ef4f7364f52a556db86b1d9e700b72d92a0a7c5dd4ef57a4c45fd3fa4b92a192da710ccf926ee856a3c6030f02dd7adfac1071396b7a7ab7cdf4ff22e4e044bd9269328980ac4e6149a0f549cd8d22c3971639a337d1eda621520dbe399cd49f53572377b3f4371e28cf78904fcefb44a1a70ef1818cc30f81f94fb38c926bcd75cd0d5e5f6171f152734eefb7f935a98f9f0a052bbcd67d787d5de205a52c4eac0dfe2a515ae8d42be9c01af42abc15fd66d3852852ac474e85903d42e289e2ffb046c18a121a8470c398d71cf40bbe50c38fb67a1bb7f2619fe5cb49995e01909964a2f86c926859e6f5743f03c1dc01b9db8fbff7c52b432f451c46ccb842a9e2ac419e662069359b8ac9f0fd1da48c2a7bd5e6b49b19b6a8cbb7844fdde0dab7031a5c2d630c10326dcd0c4a2d283dce7d69f88f6177d5b22b9fe28ec6947a614338a92cc240ff1d28c74a6a46f864aeb6e0a29811dbf4e884d5e06d2de8a351be59ecff4fa416509d212317e94a9f143ff1be20eaf1d7da37e4fccbb93b06d477bd4d08550f27a868289909930b16d544daf26b8b7e0e5d6df4e45fc3a70f280eb8d80d016c608d20b2633c446fa2a7a4cdd50e3b9400321f549a4576a1f37d82057f13b2ea92a0e2d15f1d3d07aa4d45def8aa772457823becb902c37754da9fee7121bb4349852da1e93f64f6ef4fe4133b2c4340630d3a983b62711503826a0efbaebc683ac999b2650f72194ba2ac47c243cd3dd5b45face1fdef95c0b5f464b3692c7b8fe5754a7eef2d1148ee81019018392e27605c0d02a3b32afb16dadff1c8204c66efe285be27c7f4a1a6df8e5c6c21c44111b1896a59325a3afe047b57019007136d88e1e0a6ab4c476b463d715a08802bc94900a31ea1ad05c702a10b81ff93cfef894dd688f09957bc1a6aec7ee5c46e264a1293dbe3d76d87b234f33aec0385c3f2cc470a9cc9ef3d222537d3141e1ae54b551d8262881491f525db00d1249615fc056d1d1ee9a5dbb1bf9fe71ae4a6eda8a3e7472c3419af2d52144aa072ae61d2346ddf4cd11b05d89022e7753a08d7275167ea2a4afe0f187e3dd9ee76a002c61126894b63784c01be419e585d0a72653ec2737475cce2c1a02e11c5b88e405aac023c768c08a92c571e622789e8fd9e1029171419c6f8695bc37cbd6911689e3057fc46659462234760c121a9278f64746387aeb799b3d72d875a2cccd890e1fe7b9e4a67b01fad7ebe5c30646651b218613545cf4335c351210d6e86592fa6df5b691ba989e9019f12488f8067e50f79a8b832854ce2b1e11170f07b66c319485af0ca95eaaed22d52c01dc20fa43843e944cca67564da74931b0674ce0b278729dff6044beacdd88f8b9a09304185186739d18e2cdc4978ea50addc98be92e6a4a80848e7d5ddf78fe9a403246a6f92325d7789131124e7a43113ed6d9dc8c2c52d74b2e17aacccf3d42bf6f50c305345592be0f2872d1d5afc6f47f1ac07e19fa4fa7335d11515b5246540e8b992fa04a70683fc179231f641d6437703239d7ca29db9e8bef9a1624a4b6564dae5d0e8f3c0ec19c6f0090b9cb7ef1442356cc37e076d05433fe0ebc11ed22aae6a3885bcde0a4ef78e979cdabfd0e8f07abcced9fb04c4acb1d511f9a067f010313f5a43aabf230889073f8bdbd85bdf068b8ca7a36790449a7488a8302c4bba94433e4acf17a8196c49e3cb1eb97523cb2134e04197ff1e3ea569b865bb757555b76bde94b013c37356c8acb7ffb54b6c05dd56a9249551c2f6c7426b8762bda7fab12ff1ce1383a0b76d2a0bff96ea351a022934647ab38e9372f242a4f27d5e46ce87849cb40d2055492f35a3774e3781aa80d2e6f1bae348f1f4f98c09d8e18f67c25ad16f5dc72b0ca2631d61151a480702dce28bfa71f79f76a7fd72b0d477d15b9faa7c128f1ed03b51881540572eb281637dbd86b74af9720b1855062bc58f41b41137394253c300bb23756f734e4da4d9f9b2465a8b4d8bbce586c2376611b7cff2427bc9c92cd3ae1eea5355e6e27721298aa6964f060d412f2d34d15e6e097e8c47703b2662dfb76e24e4037167b927d0995f9b881f44087f5e31bc908c133b445848f7e88d47d687006b36fd16a897849672061587781388e5e79574a9af39d18a8b87b02f0c573eca081d5ea7cd87acb082fea1ee7c7aa402b62de14494f0c5f105dadf42a826e1c7c38bfe9afab5b0962faf2d00adfeec7d47366c9113812088c2838a6472cbe2dcac21ebc7c6b43a5bc4687128db20498eef748b566beafdfd741856465f132546d539846bd3dd367ed082845fc6d1eb861c7bf04fa003b9ac4daa2a72015ea099ef950617915afa94f1737eda92d13f03e96adfd772ef6e58e3ce76dba81f51ba816427379420855fc9c9151a11114629238498fa620c640ba3165587e914892f5da739fa4b45be87f7f6ede8fb421e0969cb735c0485d8a13cdc3babb4025c3565923188d150f5dd7ee4ce4da02ac6591760b88ee3bb5c16b591e2e4806c451c4568a038610bb8e8eb4a93551ea6f7d6b656ce2dd24a755ef3be6398fecc376f8464c56923944669d73f4bf7186f9f01a552e004478b9344cd2aabe7a7151fbf0ae8bf09d40decccd38ce0019818f8741f0a4d679e49483cc486075373f5864f38ca0df221cce14b7e525792cdacbef9a51be06de9d0c033240c220ac54ab0e993289825984e793f65497e7ad086e56cbdf1b59b1d9fc687fa1b2f8c785e39de01c5217d1a947c3bdc622a798a68285b9873addc35ac0ba5171527de195db3dff4c20af09c695fd1fe00fd5b37c6f9a339964f50e6800118beb42593b6dcec61ff56b5e4a84af8f8ce27a9e19395de4557cb89be3a7eab50edee9cf15604e1b1f74d9e79676f85d80b265edf8da382dae880fa3e64d0d559eeb302c76c953e5bf845765eecb44f697bea0f66eb64f3b0993a11b1bfc8abe711994be26459a04f932f79219c859059900611c086c2ddbd2fb2599a480385a35f39dfffe81e4398eb46cd09f4653f0917753fabc1840e37622c67bb89aa2c342f51fae9e26c47a5c50c443e090ff0ee5a72f5ddc895ad94194c8c49aabb50688b595c0d81b7598d5665e19f68e63916fe8315c7fdf3b3df5d2d21d0e4c90f1205968617fffea2653349d70e96ad48d9d807daa9d214c7d173241e0c1195a3dd096fdf1275fc4a6e8f40286266116bed20ff1da3309e963ffb5ee90b3d004f98ff7d6612f620f8571dc49290370e06359742979e7dbc1fb8f419110e36244fccf45d2b14700f19877539608482bdacb6df7af7d1443ab99116100e69f584f860a2b9239dd1515255a288a07b9c5fec86a8a8834bfa299709e6b37077ac09ad5612c6325d3c4e4c6bf8776cee7c9f782e3a2622a47550f7f89aad2a32c00778a843f1db5d7ebe22bf400a10591d82ec7097b7f9c4669a8a7eeeba73427af3e85b041729e8bbb88250df117c0a11c84c55faf1474600fc64c2a63a56f7bde71358f7a288d37e9c80f518e95e347f79d850dad86daf2370c01b948f9ef0b2a00507815560452b9e5d2c700e53a6424ae06d6d704c51725083cca9e731f1fdec0e05740bb35c2b3c3686aa3b64c653404d58886c66dd6f64124ad7485236fedc8ffafa0543bd93b8278f2af806c3d89a857e17aeeec2f51be518afe3564f7ba9dfd3eebc1aca157d7d8edc2d146e1b4d0c521cdce15dd9362925c76285cdd622ab6ed4c119c0d15f9e0f5c3ed4061308de22e3f2dbe5d39c54908ebbe91b8b062a914fc52463a6eadf991064e5c2de792c064260918ccff6b68c3cbba2ae8df563a75de89a27ae9d2e880d453dd04e19504af3e78c7396905cf59adaf2f5785a24a9bdb18fb340b249e566e286f5c4a8c98801fac90bc83364c30c430a58c8515fc40e5ea36512301845498fa6e331bb0f4d61ef5accedafce61918606e9693dc0da65fce43c924b556cfa6aa0ff6baef5b58b2859332bea3ca0b5a94d99a86467e88f36be317b9e9677bc17b022d35ad5ea14138f173ddf70f3561a496ef63cc48d22a685768b4f4a0ac68a219865f2f3aed705c86a9803e4a68bf1efa3e3fdd6a7b5d780e0e30ddc07c4e07a405db8068df48e658e13c27deece7b067438ecb6543d0fd78d3c440e63c3833f6aa8fbf0e540a51ac18b641bec0d88d9cb012977094240a17aafb1e107c8fd0ed1b0dd9d818ce643e27662b94dcc0eacdc8dd466c01ecd0b99e3680b7c244f029b598af34971b581bc37d5cc809737febb208c028ce120ab4147e523c8077becd60cc2e3cb7d6ff0e5255be60e7689b96a52234cf5af0a3ce6d645790358466cd4a79fa865042b05aa7be89b462535f0fc5eddacd5782470c84dbee84303a349606b1bc6a1eb9a1a103a537180583e8cbd09cc2c4a88150bf281c9bbf78d5db3a9fe8afe1f51b73d5482b8784910d0332b0e3bd04396fb24c9377b7877831b2aa265c8fab4208669cf91bde2ab7e3afeef4126ebd055e3d4dfd9c3711bb195836ad72376fe42654c90b53c524ddd4993f6e1478bd4490d0d31793f5d275c47466a7b91962b10fe1dcbcaddd06f6cae50ac866669501780e3de1f18200cc6b56cfd718fcd573667e2e483c60368f13b0cd3ed0be08e278ae7da3f3d5adf3f7a4f51da1c9f6fb317fad4550b5a2696a10b4b7c0f1a6ae751fb55a8866ed7f2b62fbe34ac24890eb1102db4daaface0681adfe66bdd922545df28866329bec52c8ba50a0f7124a6ebad62acc2e43cf174d328371ae50b875ecafffe23dad431205e0eecb5c369faad2b37de1e66175718bcb75b43a727906e72fc904f910b018fd519949380ccc42e43111a863da3e10afcbd135c7af84b410c17766f952a6a74858bd2d8238d4ebd71045bdc103dd8754ca519d2de40af212e616ddc2a66ba6e7db85efd6e4dbc3259b543246d5019c70eff9309d6bfda5d7c4c6ec4a1bd623416eb3c6261f920fcdbc47534738944f2a476722f0360fe0f36c0b438976ab27672099b5fd54bfba93d9039bc69d044f8d04ab17c696d3a1112154942a3817fb452824fb047c582b8fec47a6808928bb39be957c24642102d2f4907a7fd8be5fa984ac218536e66665f76332d93584f9be3f4b9fce3a167b8d362b4801376562035cad57c39a65b5a3ac5f0b156799c22aafbe8b9f2a322053d9c2b8fa40deba2bac1ebedb0cfb6938a6a72da6f59ff4851a2b9872418cf83fda097e0bef9f2db0a3e892d56ff2299d76c40502f1d3c8f560d35a4f501023c9d6b474bcda2b969ebf0e0d671d0131d4a0c2caeb29c2b5d8572f64825cca24333342d2f99b3b7672db98382c766d33599cf73934e86b0b1eea2dc35ab7b22d6e6616c833aebae92d3e22c8658b419853bbdd26303cdf79d57b5b5bf30a721581d43310360f84dd07249d30c1c5279503622a4e6a8191440a42e7461ad24df026f484774084e272ea1178e73011314545cb5a2163b2c07ae229dec889a9f97697918b4dd040959bdf7ea6d9e2d174f895402eafe125fe7da7ba163a892cff76cdaee275e68b7a36046e397024c3b80c93ce61594984092dc9b87e7fbd8407ceae3a31e8a37162415b98dc7b1c3c9193041807ce5c386dd12c63fc8f7c77da742bb3c559afdb9a83787abce67aee09346589b79f414f12ecede192149b9de362140717294c9cdd8274d5d70889ecbdc080f101a244445637aa7cddae83842617a90bed8f7383c7a0360b5b1cacddc061f2e6d80859bc9cddf00000000000000000000000000000000000008101d25282b2f39"
},
@@ -85,7 +85,7 @@
"gasLimit": 45047,
"maxPriorityFeePerGas": 45216,
"maxFeePerGas": 91648,
- "to": "0x000000000000000000000000000000000000aaaa",
+ "to": "Z000000000000000000000000000000000000aaaa",
"seed": "0x43425e20ad82f0611295b1a8e583f10b45c41fd51837e5df4f2a745a4f4c5014eb7ebae166903c8c99597f7ce47cb9e4",
"signedTransactionRLP": "0xb91c4602f91c42048203ab82b0a08301660082aff794000000000000000000000000000000000000aaaa832a76b980c0b90a201de9c19823cb94b05ce8a3aa5377e8332c9b2223d6e42d8cb9818c3fed182c667c401160d9e2024e6651382851e120e1fbff1d7d15a4596f626e61af263fd753ee3f80ca801682d7189b2c64bf3acb1d676033e49b432fdff76af56beab1b1e09a8269b4c2865aa9f603e6f53706b849ff1eb4219469fef70eca55d2786ff26373ba730ecd7eedeb77e3a8eee780da5393312446da09883f1db34e4b8e695b3f38b8b2c642f4d067194b2b7b4eb87250a29bcc49140dd41da57e9193531c0d0630cbe8830ed8a3f4ae6b527e6ecdd04b27f808823a5d8e564b6b9164f63f9553d0afdd8a8724c93ee8c4d6f700a7e069f4471411ae0aafffc312f94b1f3dda9eafba18d2551db4689cda39c6170448f8107edf97c13cb1b65cff5817aa62658fce4e4b5b15ac633558b803f73c9f3628faf7129bc4a4fa80b42b2ca162f8c2e37054dcce634aee3a411db807740939f381e40996ed7c2f683e20ea421fd535d046658d55843749b547d1f3ce9bbe51ba10a30279261bc4d988fad5c53774a2fb06718507e7b3f20bc0f6f030c07276e3bf45caae9a30af29f7397c1722c12051ea2f941a90783e38acfbba892ad63637dc113c0b354253e32ec71ade86d4f0890661ab1506e544576df4f3ef32ff0a15182ce7a178c6dbc1c5a536c6d6e61f1c7f860cd0fca797c929681329b15162933bcc7eb28e57f4a2e7e195399bc917e764218a74f99f7bd5180284d9e5f2fd5651158748d289befac922edefafe47c8352b9f9ed9a6b7639f5c1fbf31423dce815156696f0d3c582fad4af0a3711775ba93cffe3d8dc0149a2ae217c55a46452dd3dde99a1f718185b03833c1ed8deed4ab1d6ad20479229b37b687a991030962682d1ba1f430c2f494dec8a68c482e0c9181655d6eae7ef50f691319485f4ce08ebdbb87551c82122934061024b7619a96f849f484fae363ffb81e655112b7ebaf95d29311e917d9ce3fa0cbe73b8b982df394d43af1b0ac8ad6bab5583cf993d0101fcf1b34682f89d21efa189c8309f1a4d625edda4ae53583de2cd3b38e0e266ed313ff5fea263469ed9e9bc18c859dc97f6398554a7e84b6e7d4e980246a1107eb993a7d84a17d06055c3ddabf62d75fd917b888bf7a8bf232dc0960eeabebb6a87956f6905fe5cc87a964cadc71ae60f8a44264603559a2ca765c6a736a2ee413dfb00a4158823bf8bed5c3af1eb88367b1586d9695349c2ef61f227db765ad473172a835058dd03109c6fd2a3f22da9eb52cb3fd2d5bd4fb40dd4f6a743ca7b20b80937f828f726aac0f90981ac94b18ef2ad5c90d994d386d477deb4ee23091b6c87e26818e6ac634333bce48930a6fa091acd4c82048c5425c83f5d5682f76e20daa2fa0dd6e69af57b3731d1bfb89e6fd39790ce3300e331349c9925c05b335d813f933b9393622582e80ef2f0027133860191fda6ad963de03b6298cfcacf775e58f1099b68408a93835739a96696f36c3dd495c276f8a2f3f8ef972ccbff82a4ea46ec12b2f87571b0b213215548b914d055ba98e30ac9bc6ffb31ca8c4ae7219a69608479b96c7c0a600034d49589a63ac1740eef6994f2354fa7ace3223a7003b99288f397ab6a2497db78b4ee14d5716be55ff9ec291408e9e756c08092e2d8f5f2d994f0bf75d4afbf5b8a9c217df6982b64933c786dbb21d9a9ce4c5532572213922f750ccd9c8e5e08d578a2144240757adbc1bf53581f1ebd54dafe48a9f7102f1d87ae8a346cd4621392c589f73bc94ba1a027eaac7da1e29435398de3a354235839010bfb9fc711be2c84693f550b148913f3a9de1ded6ad41b0eeda1c8ea8eb5839a06fed3e36b7e8a220a5d5e7efacbba56a585c2664483ea68c95e42803e131240ac27499252b7dc5b06fa71b91662690979c5d8ea0ede78a801d6cde3b29aba83c3fb5fabbeaec63871ba4cc5772bcd7f97c78b16170e13f49dbe116300548c668dcb61d798dc834ff6693799e6ffe6f3b32f4f2b71349e301768e2397f904f045384eee863120bcc1686637dfe7152a2afaa1dabce08c8f16f8fd011e87268eff9e16f1bbe07f0bff3e23355d3c94767e8e43bc35bd632ce5fa1f6f983d4b2c1ff9bb04805395b006098e29c0d03facd9dd77d594fbace0ed5212e76425fed9dc96ad4191f6ffea72cd299d0369e1e7534b7585a9a35f430d86b00ded922a9cd2db891b7c203a01355dc78676390bf41598e0ef9be9ff9218f28e417061461d910fef22c3499002299c4fcef26e8352f5ccd036c91b8784205cb3f3c2e0aecff18d89faa59b4fb0cf4ad453be3736d2596bd739013fa8c75bf1e848865952c300be4d0a80f5dcb80d3cfd1f3f3c83a123d3aa471b17c7ce1c7ea50abbe5fe397187ff52438af55b5b64cd8f9a3d021c443d8ccc55befb1c513ae8afab0d5b1bb4154a09b50cc0a4605162cde421fd6e3003cab82cc8ec3ab7ed5d98ed7222d83e00cb61d3257c6503ad52f214f1e5a756ee9d4d4fddfc09d73b0a1378b437456a7bc42d9d43f916ccc61ff126a50841484f0f9addb261f38ac75d7dfcb0435fc4a6092e85d6ac4fae064e95870b0efd4269681099c2bb743773cfc61fd082ceb27c95468193dc1773b31906e638c9928c2d0a57a77e0d4ad0e77e703cc099be8a5390dffe6c4449c72036247db0a76a6899d6046eab2ee121e5d65540ede74eb76cc4bb2438edde71b126ec6be88a54f9981060dd8508b0f635938916f7bf3cba7a104c59b816f3c5256a11e1704c03461d0e9e22133b907dbf1edcc796c2daaaa07c42a01deacf8072a4b76cf060d386b0e0f30546811d03df36238c28c568b900777309c8d2c0e5c711c12820e96626dd88debc6e80c8e0627aef80acdbfac556abb17b91a4372aaf6eda4ce114ffb9fa1d81aadb88099dcb1ad953aeabb48611716aae98c8fbfbfe30d6cfa3e15a409f5d754bf1c2602e2f467cf32133a53929df8d34112871c66da00c7931fef9351275206acb60b6848db36360af2643b7cc793df85fad6c3b4201bb7b2ff8327ae8efaf928a2ba6c36eefd912f015f494a34656bee438f9a9ead1128e03e9b8a6fba651a0e0f0e6f043cb78f76ff2ed08e9796317948f5ce6b4c4fb48c5f5f6a79f2c576f0228be0da8b468f449deb3cc0a9319e02c2bf802eebce51d1019ebfdd7045fdb8a74e108edec98610e6ff95db9af4be713cf78d1a8f11baf81d7cf02e7aca5ad389acdf474490d86abb23acb44c319b2531d2d97024ad5454425ac803c40f19b382bc8e0ff277788e178b055e0a5908fe212efc62a8f86354e3c1a0a653123743b9b7fd7115bf16e4c12b233ff8122513d8bc09ec3a561dc130a901cf7d7ecc43188494bbed9813114f0ea79e7817be2471f437d395cf23710d40573f328490ae37454587173817b7ce18627b40a662dba0bbb9858971a505a0786a98526e49faf0d7aec553a3b74abf28d3c92106ac3361845d49a4a668d743e202ed690171a66575897531e65b453f2b016fc26e94412d07dc5bec7b72d5f2187893f297add3a34daa3a074c40af5f8f8a32d0e3e501e77ae14800c5a96202790e9ca6264d9d31bf4d251ed8c76f42c2efbc8628614fa41942081e281878a1c81b2d80c3e6677fd6e5f9bc016395e6247466240eb911f340b0924de85693fe92e69fd8d56ccac03943a4f11c70b3ae910c20937b61396cd8c864a86bebc07372a540b6f4b8d3cbe6d9d4b6b9bd3b37d1ddecac61663f8d48f4c5eac6e3999475f5f3671c9a26895aae1267084e2bcd368535992ee906430a7f5cd5b7209da714c378bcbb9b512b61887c823e675e8fe987b7b59e369b440fe46ea54458fe74907ebfef0f3abe3404071c17679f51665143aab03f949014cf4d9dbf8652bed20f97fa48054382718cb0ab187ae5f11d46782e93587b0902d11aa8046477fc4dbdb8c2b09057eee6293c068bcbdf07b1ac82a837b6829096abf303bda8413a4007904fbf18bac678686de145ec6e2ae326bfc1dcf3c91d48c3dde3cd67a0e06cd7c664c987e0254f1606d583d43aa7a8c8b7e27267b703f5185788ab4c5a3f06e4d28e3f4ad00ac0cebd6bd485156f7bd9046ae3cb46633119c395cf344049767f4852e9d8bac2f41c147c78756d400630bdb2f101727ccdb96b593d0ef88c1b5715517c527eaf5672b6c71b369f7eaff7ed64ae8b27585861bdcfdda4bf9eefe263b7261fb05ca8569aeef90a42313b862fcc30910404509508207cdbe202ed3c223aba2ee96e3d75ca09d676b79914cf80ee64e58cf08f83afc841b3b44eadc56a3fecf8b7b8a3687e9eba3bf07620be6368b317949a6c8edf1d6ca2241b3f8a511ea470398489f485d655c4cfab172c5e8bcc191090ac3b00b271f895d5ec8658ec3663839c97548aed689a81feeab7b03aef3f3c69ac3c87da9165273f9d9e9cf755ad34b95ac066dd7dd76e571a12436920c41816fdf7964cbb98a499626a1efa2eec9cfe20122b84fc0528b5e775d1b37ea5e4506554a2663f1fc76b31ef284c5618a16be51d280f84ca377cf7a479a28007d747e147171b31c6a7097ee77927868110191919459a5b28fff313d778fe6b42c9dd398dc9979af2fa438c584844882c691fb735caffb6b97bb422731525b9c8acbf1c0fa742aaa43fd7b1336d7dfe7d1d58f8bd16564d1bfb2f4dff85b0141d03ba98c03ca6094aad3dcf9d327bfa44075ea0317217261473b23262312b8951e3b9d079664037adcdc50fb446c698f78d88524761e019eafe2d82b1333ab45472dea75b5cf1da9f22dd98f6efe9095c636f6be427e1b0a021681c9aaee376cee9618db9b0a5f3f6cb6fbcffb0e22dcda7f4bd85b7f34059fb28dca9aae2d78c6a74d62d1663090f8f98c58a212a504959dc012027871623697cb62750d767ebb52dba6b1cab7cefee4676b3de083af12b948adcb9ed69eb41a7b9d690d6a8b8734f3907553053f3b539ab0c95075ce76746f0c4a6312eb3ec035e61e139b782332e3dec3555a29bf3135dae9615d61ec3d0c9154e48b7e4cf5af43ace046cff98079b22a2e528eb36fd1f6792834b2d7e4df693e1071ee639018bffc73bc276d9ccb0dc3e9fd1d8f36dae1478fe03d23b518dcff11312f5ca4029c8739f91852272403a17a1ff96d2cf5e19423c29e23de0fa7cefb79590dbb842dc41a9003791445937302328d82ccf74d36f52275816e8b5b152be8e4b935575d80f6c2d27e79186dab1bc30554a3a7722fbb3a4d4929397c687a938b1e2dc7445adbe358d4f218cdfe809fdc48dbe03a181b2878a9724b121011cda7073ba6c7c1ca0ea89316af8d9d98be6f7de01bec145e13d597eb3c1619e1640b0e9e1c5a5ad25378faec053be41591611f291159f0bac5d8202bd6422db1e44b132e584e20ec2519e16763b2557f865479bdeb3599ffabb188aa89decba662152d2997409681f69e1bf922541e7a1f7af9c0ab93eb014f9a029d14942588890368cbc71750d14bb3b05234d4f68fc1fc2cf7e1783e97ad9baa1ec1887226ae050f03b61cb66acd029e8d236b985754ed7c8e5b85dd41ae0a63be20f5e31d6e22337206a34d3be4dacd58eddf7642c8f8e414ce16d373effc795d86f1f8f2d7df3d25fedbffb08a3ac065c5e666554923086432db62bc064596609dfbba27ece15b5906ee56b5ae6cff1a23a876c79cfc661b81f17540a5865a54e23dfb973307d108287a8ff91582e31f37d91816e97644dc69bf9096402464c9981180986dedbbefab8575c6a47c6c9f6ad49e977f60cec17dbdf5813e011d11c119c31621a57877ef1c6c2fa8f7e4589f1792917a2a6e1a19fc0ca62c166605f61fdb1d789d85933ce402c2ca74e1699b7eccb0fbe4486be9f8e4b9ccf85ca5e4c1773941df8de66c62482892ead422be0aa35c6e8ea07635693e07a7a47073ab68caaa892646cb9aa81fe050e5a310a71bded9437fb95f0df035abe066e77c7804113dc363c1c06acd0e07ae0d5c74e042fcdbe52861ce60d7ff00247a91e32e827b2d809e8d4d250f4eb60520a59bcccaedba1243859988607c8c18c1d946c0fd3bb93afd85ba209d002e84aa4f32ec22a664a61f5b8928f593a19faed8421ebf16d2e67003df4baf1f873fe17e37647ac19c0cb166734214c40b1de55ec72292963466c01277d5d8ac30a9d91ab211001818ae1be363b4e3ddd6b7a456c545d5dca6f1f840b0f57681ead99e0c2bb65fea5fc876a77da5ebdb3927d63d53b04f074d5c25efe078bf146c1e923efaef9be45ce46252bb77af8ac1432d811917d2b530de59180f1eb2bf14f8998def32afd35a184000ac10bd4c356ee199a430243520ba1d45d8c48f986ffcdd6ffa6a245bfab06f663e8b9a13931b9e5dee0950037c5ee026d592814ed0a3d9376ffb8f7ce368a4bcd11de938944fee1cf8d3dbb133e7403f634d6783c9a3b78f8602f690e30c4792469fe36e6d1e40c08d1dbb0654c2c4350fb5f0337a803f40a0f5ca2ab0ea26f076e703882ba676e4552152427bb5b3b2119faa457ca38302b2bded65b0b76bc39dca9ab9dba05d6d59618f14532020666a657317c8d631648a381c545fe60efbcb5c9f62bf7c257b6c26e2b48ff31deed9dc36653a282299406c27a8af5db21091cf21aa362196a93face23f1442ee100304397841a52bd5202d49bc33b1723ac28e702b67ddd4569ebe1e46429646d8ea42449ccb9fd2caaea520379e6ff6d0e62776a71047792ed829423a496340987f5d0d956132836232090812c1558ccfc7e9277c1540e4d20bb1001de87eb7a77c6fa5611c783c87dd2df6a56d987ffc1bc0b986d9e3ca77a6eaf4958a38b251265975987f21aad974b8763e46e6f8722f641696a61b41723f5e018b7b968a11cbce2d72d5680bc524d3dfbbdba3ad1f91f0f521b6371d4ad0b2f2a4f28f91d0a39c31b83e67e7398afa406ef0ff610962a64b1273dd0f4e6a9c79db9cd4a5e73ee82a8d6ca454d66d66cecdaf0dc1686d0b0a593ca66de3e45f87961c8ada010683e5ef3f4fee3db253e0af4dda1f6a11de415589e92e49aa5c4b4db34906cb690dfd8e1202d7feb67e6b7ccf34de885d3f074fa55184f4f448c9ce60078e23ec58530714ad2c672eb2e003d41eb21dcb6d92b85925e04322c80391b65a4216d163b32dcf8cda511917df359e1e8ea5f535178aa9f9b50e623df872553ad3546f3b9b5b26b4359563c04e83a0e29e34a048f4930f00576cdb9428a05501b601b91f204b38767ce2f43b009a2da3a0cbe9b2d15a505f82a92984292c9806c28fda04b99777779edc8b3a69c85ddd0f7080876268f38619b5e92808fb23214bf53fea9f6e1f4ea834886110ef0fd9a8bd71aaa9ac4fbf1e1fc27ed7c80b5598f98f81e54a38148dd45bd953af2b577090ce8ef686b066766ffa581baeb29e6e07ed14ed870a26ea7a7605b34b5b97ac02333b38b1a49ee23db5111eb72228dfd6659ae29983ffc24e33d28c6f5764368fa1783aa585412d6f9e3f3373deb6892cbb7e856c69ac2efcb9a8d87d0fcda68b9de86fc22b326e9252b6b2be92cb8b960c4f8257480594a168d0e31bf16546d31f5d8624e4a0d207f397a34472361696afe2d4aa6c13161b3dd65a60108fa887a689405b17e00a018d89919fa9c88546fde9f0b87e4a5322d04c6ddc9446f67d6d256e371a5b74ec2af18438c2977a330e0eb7314715c72502ffeb84de241075f96308850a164d07cd65b8dbba52bbc6d46f6c4b461efa9eb03322b5ac2ef922524efe2303f63a777a7fdfdb369065efa44272a54690fd53a0f951e6b430b79f337883bc4a4f119cdc1908d369fa20968ceefe99d334e7fcaddac06547c385cf079dd2cc81d132f8a9f706fc6fad5003e6ebe12cb8f2d10f284e5cb3e1e73f585b7aeb190d2c57ea907a03b60e54717de56b902ef9d9080ab064366ddea997c4ae2899142f755a2256b02ab793779737e48993362e55024b1e24c69b907aaca6524acc637c8ba3f83d993d60e16746122f50f2a33f82be5ee25f4e4e491af8712ac1d91852369ad28fb213b9aba270f9bde27efc17773a8e826ac7aa2b240683390e7179eba27796fe13e36f3d12008d458a045d91d87ee14ab5988312889429010a51483bdace49eb88f4aeedb0edf95d3381f7c082c53bac947357e72a468c280ded0487235f3cb0cb91a478667285f5bb21f08082d10b76e871296edb4d9f878afc6a38871058a9cecec5f2317a7d83703803eb32db6fc2e892657e9bbf173021c477e53328e2cd0234b531b8d554be430b9dc550a8cd6b44318e013f912e5648a031a4f9027d353b6fabd6b7ef029f049834af0afbdbc361bd707142f152e4712a6a9584f5d7b96df2b219d85d1f9ead1f82dae22816b912436d9a13a06aa49ae3c2177c56be4effd925bc61da981022e57521bc090224234effff07216c59582c4686b2f9cb0732e72b5659d61ecf448a1707be09e052a709134673b3a21e471ecc22fe1cf98430edbcb94eb6e43665f1bcb63c6ea7740da8340834e2b64052f036a0c683d5603fc64129d7b6b43e81cf660b91ee2956f0355e5e7eff70bc5f2fb688be469c868dcb6b57ca568a51f7ae259f092d5763b2750357468e53dee4ed2dcce62f23f94df44c9f3e9339d1f487e07bc205ae968c38db7173126370391bbf89d151e9284428f7fe1b5f8d3a7492b3dd80c58ac7cd94f34634513282080df65d148759e8df11d6111349d1640431f2d32d2d9fbe0ce57ffa4e749b369121f8dabcacd467b9c94912ae783970dce7dbbc46b7cd9097cb50156b9e79d6f46ec3a7c072fa0cb983e9c08ac3f564f652368be7c83d776b0733da66f2b7fae1027dc570ae9552715f2d0bbfbb6a3edec73c1b211c6cbfb170f565446aea3dd760e1f9238cf9b9df88b87c0d8e5904482fd12e13e65ad9e3fdc8157b971c6e414f6ab18b3cd3d3ebb407ffc6e299cdb6d8989db94de8cfac3a1e68db6d658eac4b951b434cfb043fe36d8f6ecbe48943722bd15af68c5a7f47c3b54fef728bea49622f6f2710f5ccbbeab47ef6edaca885ae4d9143507652b61f1fc0b0d249b27fab9ed392ffa29a267a0d88f80454eab5de9146854e47d602bef8b3a167ccce22c457014a4a10b0a1038fd470f63622658307a76d0096b215983be5a574362ae26c3fcff2c5762dfa4441617b7e736cf014ecbe8655658eb49ab01aa8e83d5bfe173b5b2969ed3a08898722b709e4805cda8db060ce9c129e7a9614dc8cd57ffede7429696d99f3463122b56a947055fc66e86c7713d75c4a34583050269d60d92ddd8c14a40041cf4d2b83cacc22137bcc740185171dc0146fea16c1efa79f47ded9e254610a4a6abfb9a743e0d96ae2f7abc62c08bf31bfce3c6f3ba71d6217883ae77b99999ee38c30e7332eb79eafa45d7f6b27aa2f68ce4469c23dd3857aa6e6c3dcb6b5467c70965f247215d2598ad5eb90326c4256d754e7d0257bdf55b35bff26e41fbf545e7040ba6ace60bf97f498171c3ef534305cd3d7b412eb7244dfc56ad29362689f54ebdbfcdbaa47ca7cd5edbc05820f38b4d3b344382a141316c57dbad18c6e8c206bdd3d661dcf8ee286f81056361fd7f02ebddb93a7e6fbbc0357e26ad3c22b4d68b82523adc6351fb596c4ecea9597db4cba097e80cfb3993c753e77efeb29402ecd6c77bb6328fe32a60eaf5ad73162570238357726c1d4412253755212c885d283f24d2302cbe8c1163668ca6202f0829612e8c1dae4dc0b76c0e1d08f0c38781a848e8662079133ada796ac5ee24f105ae931baed243de9faa5a559cc039b79d4514ee2d54020e81c2ada48e9e6ff993a2b48636f58692bfc02fe43546ba6711afd60a580a393db2daefd4e52f493a4abcdb4631068fe71abf60880b5aa312f6242b0aea8cad87bd1253de785499298a9300b5807d1e28e7b6dc22f06a83ad52ec0adecdfaf3bbcc409dfd59dfa9ec065092c82c3c17d97b4451fd4bbd465ad9f54971dd15292967118226f6101143adb1bbe626585984c2f3f4f70416394149d2f74c54662b4a59687d0e1f366870c6d9dadbee0f343d6062adb9d3d5d7fd080e3f6184898cad00000000000000000000000000000000070f16191e28333b"
},
@@ -95,7 +95,7 @@
"gasLimit": 62341,
"maxPriorityFeePerGas": 24721,
"maxFeePerGas": 107729,
- "to": "0x000000000000000000000000000000000000aaaa",
+ "to": "Z000000000000000000000000000000000000aaaa",
"seed": "0x43425e20ad82f0611295b1a8e583f10b45c41fd51837e5df4f2a745a4f4c5014eb7ebae166903c8c99597f7ce47cb9e4",
"signedTransactionRLP": "0xb91c4502f91c4104778260918301a4d182f38594000000000000000000000000000000000000aaaa8403e6c7f380c0b90a201de9c19823cb94b05ce8a3aa5377e8332c9b2223d6e42d8cb9818c3fed182c667c401160d9e2024e6651382851e120e1fbff1d7d15a4596f626e61af263fd753ee3f80ca801682d7189b2c64bf3acb1d676033e49b432fdff76af56beab1b1e09a8269b4c2865aa9f603e6f53706b849ff1eb4219469fef70eca55d2786ff26373ba730ecd7eedeb77e3a8eee780da5393312446da09883f1db34e4b8e695b3f38b8b2c642f4d067194b2b7b4eb87250a29bcc49140dd41da57e9193531c0d0630cbe8830ed8a3f4ae6b527e6ecdd04b27f808823a5d8e564b6b9164f63f9553d0afdd8a8724c93ee8c4d6f700a7e069f4471411ae0aafffc312f94b1f3dda9eafba18d2551db4689cda39c6170448f8107edf97c13cb1b65cff5817aa62658fce4e4b5b15ac633558b803f73c9f3628faf7129bc4a4fa80b42b2ca162f8c2e37054dcce634aee3a411db807740939f381e40996ed7c2f683e20ea421fd535d046658d55843749b547d1f3ce9bbe51ba10a30279261bc4d988fad5c53774a2fb06718507e7b3f20bc0f6f030c07276e3bf45caae9a30af29f7397c1722c12051ea2f941a90783e38acfbba892ad63637dc113c0b354253e32ec71ade86d4f0890661ab1506e544576df4f3ef32ff0a15182ce7a178c6dbc1c5a536c6d6e61f1c7f860cd0fca797c929681329b15162933bcc7eb28e57f4a2e7e195399bc917e764218a74f99f7bd5180284d9e5f2fd5651158748d289befac922edefafe47c8352b9f9ed9a6b7639f5c1fbf31423dce815156696f0d3c582fad4af0a3711775ba93cffe3d8dc0149a2ae217c55a46452dd3dde99a1f718185b03833c1ed8deed4ab1d6ad20479229b37b687a991030962682d1ba1f430c2f494dec8a68c482e0c9181655d6eae7ef50f691319485f4ce08ebdbb87551c82122934061024b7619a96f849f484fae363ffb81e655112b7ebaf95d29311e917d9ce3fa0cbe73b8b982df394d43af1b0ac8ad6bab5583cf993d0101fcf1b34682f89d21efa189c8309f1a4d625edda4ae53583de2cd3b38e0e266ed313ff5fea263469ed9e9bc18c859dc97f6398554a7e84b6e7d4e980246a1107eb993a7d84a17d06055c3ddabf62d75fd917b888bf7a8bf232dc0960eeabebb6a87956f6905fe5cc87a964cadc71ae60f8a44264603559a2ca765c6a736a2ee413dfb00a4158823bf8bed5c3af1eb88367b1586d9695349c2ef61f227db765ad473172a835058dd03109c6fd2a3f22da9eb52cb3fd2d5bd4fb40dd4f6a743ca7b20b80937f828f726aac0f90981ac94b18ef2ad5c90d994d386d477deb4ee23091b6c87e26818e6ac634333bce48930a6fa091acd4c82048c5425c83f5d5682f76e20daa2fa0dd6e69af57b3731d1bfb89e6fd39790ce3300e331349c9925c05b335d813f933b9393622582e80ef2f0027133860191fda6ad963de03b6298cfcacf775e58f1099b68408a93835739a96696f36c3dd495c276f8a2f3f8ef972ccbff82a4ea46ec12b2f87571b0b213215548b914d055ba98e30ac9bc6ffb31ca8c4ae7219a69608479b96c7c0a600034d49589a63ac1740eef6994f2354fa7ace3223a7003b99288f397ab6a2497db78b4ee14d5716be55ff9ec291408e9e756c08092e2d8f5f2d994f0bf75d4afbf5b8a9c217df6982b64933c786dbb21d9a9ce4c5532572213922f750ccd9c8e5e08d578a2144240757adbc1bf53581f1ebd54dafe48a9f7102f1d87ae8a346cd4621392c589f73bc94ba1a027eaac7da1e29435398de3a354235839010bfb9fc711be2c84693f550b148913f3a9de1ded6ad41b0eeda1c8ea8eb5839a06fed3e36b7e8a220a5d5e7efacbba56a585c2664483ea68c95e42803e131240ac27499252b7dc5b06fa71b91662690979c5d8ea0ede78a801d6cde3b29aba83c3fb5fabbeaec63871ba4cc5772bcd7f97c78b16170e13f49dbe116300548c668dcb61d798dc834ff6693799e6ffe6f3b32f4f2b71349e301768e2397f904f045384eee863120bcc1686637dfe7152a2afaa1dabce08c8f16f8fd011e87268eff9e16f1bbe07f0bff3e23355d3c94767e8e43bc35bd632ce5fa1f6f983d4b2c1ff9bb04805395b006098e29c0d03facd9dd77d594fbace0ed5212e76425fed9dc96ad4191f6ffea72cd299d0369e1e7534b7585a9a35f430d86b00ded922a9cd2db891b7c203a01355dc78676390bf41598e0ef9be9ff9218f28e417061461d910fef22c3499002299c4fcef26e8352f5ccd036c91b8784205cb3f3c2e0aecff18d89faa59b4fb0cf4ad453be3736d2596bd739013fa8c75bf1e848865952c300be4d0a80f5dcb80d3cfd1f3f3c83a123d3aa471b17c7ce1c7ea50abbe5fe397187ff52438af55b5b64cd8f9a3d021c443d8ccc55befb1c513ae8afab0d5b1bb4154a09b50cc0a4605162cde421fd6e3003cab82cc8ec3ab7ed5d98ed7222d83e00cb61d3257c6503ad52f214f1e5a756ee9d4d4fddfc09d73b0a1378b437456a7bc42d9d43f916ccc61ff126a50841484f0f9addb261f38ac75d7dfcb0435fc4a6092e85d6ac4fae064e95870b0efd4269681099c2bb743773cfc61fd082ceb27c95468193dc1773b31906e638c9928c2d0a57a77e0d4ad0e77e703cc099be8a5390dffe6c4449c72036247db0a76a6899d6046eab2ee121e5d65540ede74eb76cc4bb2438edde71b126ec6be88a54f9981060dd8508b0f635938916f7bf3cba7a104c59b816f3c5256a11e1704c03461d0e9e22133b907dbf1edcc796c2daaaa07c42a01deacf8072a4b76cf060d386b0e0f30546811d03df36238c28c568b900777309c8d2c0e5c711c12820e96626dd88debc6e80c8e0627aef80acdbfac556abb17b91a4372aaf6eda4ce114ffb9fa1d81aadb88099dcb1ad953aeabb48611716aae98c8fbfbfe30d6cfa3e15a409f5d754bf1c2602e2f467cf32133a53929df8d34112871c66da00c7931fef9351275206acb60b6848db36360af2643b7cc793df85fad6c3b4201bb7b2ff8327ae8efaf928a2ba6c36eefd912f015f494a34656bee438f9a9ead1128e03e9b8a6fba651a0e0f0e6f043cb78f76ff2ed08e9796317948f5ce6b4c4fb48c5f5f6a79f2c576f0228be0da8b468f449deb3cc0a9319e02c2bf802eebce51d1019ebfdd7045fdb8a74e108edec98610e6ff95db9af4be713cf78d1a8f11baf81d7cf02e7aca5ad389acdf474490d86abb23acb44c319b2531d2d97024ad5454425ac803c40f19b382bc8e0ff277788e178b055e0a5908fe212efc62a8f86354e3c1a0a653123743b9b7fd7115bf16e4c12b233ff8122513d8bc09ec3a561dc130a901cf7d7ecc43188494bbed9813114f0ea79e7817be2471f437d395cf23710d40573f328490ae37454587173817b7ce18627b40a662dba0bbb9858971a505a0786a98526e49faf0d7aec553a3b74abf28d3c92106ac3361845d49a4a668d743e202ed690171a66575897531e65b453f2b016fc26e94412d07dc5bec7b72d5f2187893f297add3a34daa3a074c40af5f8f8a32d0e3e501e77ae14800c5a96202790e9ca6264d9d31bf4d251ed8c76f42c2efbc8628614fa41942081e281878a1c81b2d80c3e6677fd6e5f9bc016395e6247466240eb911f3999b0361bd22fbf469783c3209c96bdd607ebe73c8c764a5d6f1dbc2715532b1dcb9065a1fc6f52576645e459e3937ccd229bcfd64e6c5fe38f6fee80672df432d2fd8519ba4e5e42db3a83bc2648290e15bd7da4108dfb8721104c77507b33b2de8c205c0ee8bb3a7cfd2026ccc0165ab5310d3cf0db14444c152e6ca3ddc5025e16cd3676625b83dfe576dd0ff736d35fdaf639a919790ab28791c5ddb15cdf4c1e22b00f4337f7bb7807ebd348a11ffa5cf904870f4914b5a63efd52de98e36af94671e5fccacdaa83cccbf923de4d3f350c8d7e7c4c9aace867e7711c2be18dda3b4acd4c043a48c991be7aaee8f6309173a72a96fd43ad0444794364d6aa56fef68f802a47de1263af714f87c90840b581cd3c76c1340a99b4f6c9b42cfd2b59c3c6a52c4bc212f29a6dafb601678435553e0026ad969d992cc17dad3360bc5f5539010e325b0dfb25989abc84c9f5a4c5600b314e23fdc1e1fb2804fdc7d4c290c1fc74833b185a96e580ad1b818bbd1424c9d977c0487257f28ebaae495daa526699ea7e1b4e8186a7c80c7e17843b27b49f298a6662138483f0cebbc114f36f070966563d9c69fe97a2e7fa7fe35912355dbf69e0df3c613b439d6ac8145f77a93b5d8342f554045d558bb88fe43b93896eb28b981fe4e31b8c885aa4a4efc3a21433967e36286d8d6a651cd0b574c4b0d1c2be684da0b1333fa241a6d76d2f0bd86863ce8702988baf81c216af359443fb844e6cb9de1282800a950b3af67b621105f400fce8dabddaa3552e4dc0b04fdb0bf50fea7ba2964cf1c88c4f939f0979c15adb71e49e84c7fc7f52c601ce8cb5ea655dfe0040760c8514e21a81711143c2eb66efc50396e1462e7e0184af093c530652d6c04f2a3bced8c0c4e36b84db582ac461462a4fd54574bf34c156a6442e0f5099cfaa69edc4885c0caea2afb303071cdbabdbe3a28681de67abce6f45dfeff0ef66e323be880fd8fa7c634daf1a11fdeca23e9a03f6610791a7b2276325d47f2a95b9c94ae6acf26562b1c9b5ae5e4c07a21548f479e0db61af6cefba171616a5a1452009be4d3e73a3ad0781cbd010990f17af2c125cc8b31f50c9dd8c8e2b7672dd171904e005c8e8ef55055a718a37e1938f2abed1e0ba8d211133113ed9916ea17b210970031fe05e42e85b8d4fcf3311f8c687c110bb7d7d91a29343fefddba912f03bf0549ca27ef591cff440f95765d474af6da62e821ac7147f3761d7f26e990187875b8b095bcb27b09a97a6ee0cdbdd24a977a175cfb8a1c3cc4717c9e544fc6129426da54c64de09943d20aeac2bf73c44d5b20c0f0c3c848539b2af32b561855da934d6e991ee309bd0e343f6732eb0c01b41f92eacb885516797c58ca6bb2e4ae50c5f6ffaea0f98c30b5cbca2f3fdb34d05e9f7245a8543df1a094972151c1ab60e928fd4a15ed19d59bf1a8bc8aaea5e0fbc4fa1e848696d9bce08e597731bcdd39122c730799e0cacd912805df3d07de2d9e55469cf8e73be55ab26e49b3566794153f1dba003879bed58fb5092e894d5fdff69faf1fb02ef3bf2d0544fb821f9d7063aca08dad5fd2e36665a311ab8232e4ad0e60c873bec9e03efb21b5188e46a5b82d38c57ff1926b1520c16fb89c9108fbaa3ce32c42e4a78acf010848c39f01e2048b8fe0b71447d4f7a952f9760be363143fdd45da929459a7542775b0a63602293721ffd7753d9f73e2cc9d8ae0b0afd637f543b1e097dc430aeb7f7b8c9aee994185c0bccb2e3fa8a53e6110ee1bba9b2520353a35e64ae58d7ea199c849341eb3d077553574e66789f014ed2736d450164680bbad8369e03b5f90059e4b5e2057e708b8114bfd40f791f0903987a807f00be701874b5498384f53c377322fbe98e4efca5cb8a99bd11e0c931b5562fd416f630666c62b86cb3699c0bc6d9f1de382c6e46bca1c508e22fdbcbb2beb70c9aed8926c2385c4dc6b654fa4364ddd930e4366c2f6aea54553a2f0798431f974162bac9d1e91712c1acbc6407beab9d6ddfbf97d3c114817f19b956618a573c3a561750cb81ef1d4e776c831a94f4bd6fbb645bf01c6f36e2f0c4aa812f193a7bd2829d756cfd793d1cb47761596a4d0255dd7c8d32752b1c87055093c620346a5445b1d6e7be785aa3b88bc02c626e0c4f9d56d397b2aacd08f72d14ed9b2444b924381d25df086106eb2056181211cd0a3346104cbd806a38087a8c228053d33dcc83e8938ab27bf681f293f5a6a02816d35e50e251c8f6684093062bee877b89c7a902cad984be546fd91b97e4bc391623a43c3bd0316ea0a342a91add5223edb298946122e6c361c4e190b8677a766a24d1cb2ee1b83702557d22ad372ca3c0ae95a1af5039b08c9b3df06e5029083d8d33c90094025162293d48155bfd8b5faecedc60505f943fc1b51470eda0fc8dc0f0e537745a4a40c9f4046447b4692deb4d9ccd056641698cc26acf4781116ca927b37a0b57572a49566cbd610bc03710a8501cb23532b18ecc3e0a39835b2e9e8ba76f7a7b82744142023a20e9bcb7dc51a1ffedfe98acc0854f77758d3fd03f0d54ef0ec8094632f2740d5b659ae0efc87c5206b0e616ba0f228b41f7b4a5e1fde4a2437150f11681cac2614b10ef92eb86fdc445465bf535cf3b570a382290808da3e5c45dc09f9b8b4be2ed0773ca9061c2e3d8c3e5493091f123908eb609c38d4e501a6a7e60e57d8ded0b387278da50753e9c036a4d2db4be30b319143ca00782a274031a016bc6a19ca8ac02ac3ad1e1eaf3e2bd5767499111cfad82b3393762cec23ede4f2e85c305c767f0225a87802eab2d7e3a6e4d486d1e0ec3ef63c16a5a72da94a4ea4bf9d17834f3b3b5050c828a6abeea82881fc7aa4cc7bf6ecfdeda47511a10e8bc52b71666770d4235800e99d41e36a38fb33bcc4a3bbedb3f3979583b9dc923361c518db6cef078410491f95ec594aae88b9a332efb28e97672092f457f963df249d3b42bfa67d4fbb249eb2c5b0b8ee7eaa20014bf1118f106a87bdd7fb11cb4d7695567f3a685799950fcc9a77e78e6d5267855820a0035c64739a53ea6656e1f96ee9a6029eb47e80faaaf5398437d3e07ac8111aec35ecf16ccccb591f858af6ebc113aa7e292eeef0538c5a5e5257eef83295c859368e0572d054c5a046a7c408c3693e05a7cee00bda13d3c8eecef7b40cc803e11b818f2b038e095e3b8e49f698614775402a25cf877b8313af36c372183dfa6e6db21e37f1c85a96a27c99728fe8627c00db8a00a4238ca53cbb729572598012e3e773fea53cc5526cee3163e2b1a4be8c3567162bb1a1d9c34f7ae7dcbd0d3f3b64371199dccc35a431a9a9120720d313e5dfc6e3dd5c01b568291720c4f5b53da80efbd106ab379011a8b910ed8d054a0ccab41a0ba679330888c36e5808bda580268ad11c420c4c76700389ff271bd331ea86230f9ca01cd336c3660808dd03980520b8c706b6783d86a29172e531262c86d1e639d671bfe161c62cb83232c9b543fe42ec9b70ea3f66c335247f44358b664bf6b98497b124638eea4200303338b40f62aa10e3429bf5dfdb10ccb01922d17629a68639d85482cd3f7f3363b7168e8341df98d3684695d0b2b9011e0e99324890034fe9c6f34d0b4c0877ef2b3c0dea4087e436aa31ebc6cb4c56c4bc0a275de2ec6f3938e163a42a68016116c6c81d96654947ba5aaea9f9e8a451b6addc0bf307b0cd72242cb5829c285759d086cef6ed8d5f5da076bdda0e18c9f0f5170470086fdc6308f2afc5e192cb795651ec673c11b75330cc7554a05c4eae0546600788b52162f866057a950c005f42aec242805f0b11dd1949ba96c1b1aa4d65cc00ca7bfe48bc1b79a58e980b55b7df794bd3b1bf80276327d3c8ab4a3256c0b92d0d489f576ca89122e235e301f36bdd704ad2455f6ed1832d78eb0eab055952b07389d50f65412fae85a94e042310d10d52b704840f3de603bd8477857d26be7532043e3c3b3e272f283fb85b3ada96bd537b108626ce7757b95cfc0f255aa61e6ece37cb8084bc9e4932df0003ea7bc82f4a7b9d55261b7e6740c912383d5424ab4cbb8e4c2a89ad61583766460eea2b95650c9403f286b0735a4abe7ec9535fad3cc0a7ff557e0e8006f0a5ad2891a2cd42554262797b71f2115d145493a93fccf832d6b98b4573b06e7dd0e39552dd4070bdf91161c83290e91f79c05de155645cac4407d339b69610332963eac4bd36cb47f1c440354302e16b5523a9f02c9700647ca2a38b7290e5088ebbf0779c91f780e0eeb3129c363b73da29e96b7e4a9aec8c6ab885045396b9ca7f8c92d412f9748be09347ec3da355c1c34a616169ad8fd6b949c1ae3587da6d6f1cbd5811118737db1627a264110356c404ddd4c6dad4672ec23571c0d2dd2aeb87fffcf5125bd997dc7072c78717c20935b0e3a6eaa84eba60df9b38f001fca266279812bcce764753f4c6bcb9118ec0924cf0bc282862d5b00261039b426e7721daada9a3cfed5bebb7f4417f30fdb433cf2c2f19bbecb0be7f85c66a642392f0ebb5e66e424730bef47be2a29e00268e80d36e88a5f4933a3931ac6877048d21203baef5e29d38148263c8b9168c97f2401ba09a7ae1e3a0ecd9c68d0d51606e2a71a86d0cb7178f7957840c6a4ab6db989c3ac7fb819c272f168c307f8cc78e66cef6b66fc58457d59a7b4824d85ac9b8556955603e5120d3c808122940378e85faae31493298c90eb6b70009e9bc43c5655b85e89429248b251b3d135a7527dd3b47fe927e19c41aaac9134c219357b277d00c465ae6b4b2232ead87aa18ab8acfa82f737b6ed959c8798d99bd10b1ccbf6b3d79278d70bdc72a06ab01d022a8d0f9520cad330d84508ae75b6c1ee4dd3429e41e1297c219aaa6cf26f4b6853643ccc6d4b34fd7bca0be8df3f4fa39680f7ae2a88da89eeb803dc4b237d8cb0de7e6c7d58b6ebbb915a6d7bf7b2c9f49c9b7832e0256758fa17bbcce2ec9eac7d88feafb4633a6af59b9a8881b8f7c85b43f7e3dd6fa25385da6a3bfaeb8afc5ae0e429a2f68d663fd7f5e02a239f0efcb4221cd3fbecdcf8ad1f0ae3984de8390fdaff8d42db0495c8a6fcf9a354072df1ffb2882e6926fb02f1d046684011a8e957a45fedcaae1f22f171f829b24cec5cf344f948691ece49cb352c111836b1799676802a4601ca8253d6eda16142befa25674b0ce1e6d441ede6875c6bc00783218b3defe754e899db2f44478407ce5d2bf7a4443745907ba3cfe1568326fe5419fb50a3ba57dc116e96a54ef763a1af163233b009f6b727192c94b9d519af5be5f869b4aa0ec83fff1c5b4ce9f6a647bd1a8a7bd7dc9b7e1274f74e98fde72d2db71b666cd23963668a54896b098ed8b4e64fc09f69d7328b439069188ed852f34f375e761e1453721bf7cc98cb687be17a9c3a9316e1af876d7101dc93c3ecfd748a43a39aa5c07e781cca59b7423df8a43780fa8dd214d8dd769220fef06a0efa36f05d7baa2e88e0841b10a5c7fbf5024cd642345e3ad77265a3ac569684940441a1603eb0d8d244bf26da341447b06d7b21ea8fd84886f59954e06d54eba638777c507235e68f1f9854c8ac5e9659b1dab5d4cb56eb6372faf44d4ed7adaa5a70819dd8a471319e9700edf28b95478c26d7d3a8bd211568466807a637658e83423b8fe29d196458d993668e195750588be5563c83d42047f3e60aa6ceaaa02370f104693256e26275f86ac84bf55055eeb1c80a2673ace2c352b2242ff59b386a7f66899726e5fed155ccfcc86c86761715a446346dee59395de48373b2debe7895fc565dac73af52330efefa466bc5ac9181a1963fb57cbfa83df3e3ee54fb51330f1e648afda7ec80b41d04a72c6d70945e66e63eb164c23b5f2d044eb81cc6d54bcf90f47d0a0a63dc1523d77898679b5db8955670496d9dd6a056eebce0157e8e62e81c9f25554e16d4625cb3d779f254c14dec656c11e6a2897dc48dacc999d2efea178f2ee867487b3558b5bc5b16cca3c0121076dd81d22183b8e21b3599f434c2f9e3560a52261a0ccdb139f253c6f4439512d7eabfb28270ca721bbe9ccf6034fcca31c7f2719d90bf2ba0b2dc3195bcc578ecb6246b8b3c9005241cedbb48237dea567e263bd5307524d8293fc4495a4d69cb5fda91117f7f51a3281ffad32eed14f61d2e1516bf581d91d7d7579661aca5c48108f4053852c11d01fda7fdd3a065f861858e48b2e321cd35c4e260d1913ede000ae26a59a3284988eedcaf1570daed71be8130b3438b6882cb4ab22ba353e0af8b9667c996618d1a19cda284b4754f143111c5e16282673779c424d5253b5c40e0f2536698da3a9cfe4111475b7db090b4c4e6cf41b354e929dc5cd0927646b767886898da7d601114f546f868f9ce0f10000000000000000000000000000000000030913181e25303a"
}
diff --git a/packages/web3-zond-accounts/test/fixtures/json/eip1559txs.json b/packages/web3-zond-accounts/test/fixtures/json/eip1559txs.json
index b779f29b..063cb36a 100644
--- a/packages/web3-zond-accounts/test/fixtures/json/eip1559txs.json
+++ b/packages/web3-zond-accounts/test/fixtures/json/eip1559txs.json
@@ -1,7 +1,7 @@
[
{
"seed": "4c3f1b0ce35b22ae3d02d9b6f8584e993638d538990606cf31200159eb23c99ff836a13b55cf93867488d21a1cf009ad",
- "sendersAddress": "201bec2fd7f2384f1f1312d18f0f9d218de77336",
+ "sendersAddress": "Z201bec2fd7f2384f1f1312d18f0f9d218de77336",
"type": "message",
"raw": [
"0x01",
@@ -30,14 +30,14 @@
"maxPriorityFeePerGas": "0x01",
"maxFeePerGas": "0x01",
"nonce": "0x",
- "to": "0xcccccccccccccccccccccccccccccccccccccccc",
+ "to": "Zcccccccccccccccccccccccccccccccccccccccc",
"value": "0x0186a0",
"publicKey": "0x94ef47878aea6c24a6aac5d43465cc361bbaf8bc8c9eba9abccda48977767f5604b8150337fd5ca7cf90bf8f63fca0e6fc0728a3071e5ccae2766a15679d2a57ddc95f6f51ff8bb831aaa937271eb80d599566ae1e73173aad708f68330bbd9c6555c0f9366763011f7aa4edebab101f99a4007c8ae1123a13e7c7cc19e2e7699b549bb770d3753bea49ec9e31104bae89fc38abe75e1f140267a2f492409d25f188aec4783afd2c8140f6a8c6850077536cb2760c65779d165b6f03f9b149210d8160f58803d31171be717baf887aa612c02f806bd9e3332ddc21c0e6e912d053d4d49c13d2de8a75266e6157610175d4897e58886aae12bf7b949e20351d80a4a994e7c70c9ba76a2472818343609061ffa393f6f270dc8b4aa806d5616e55e936f26cccd3e1006bf185196ae5457d224fca6555068bfb64a228e8b44b4221e85d2f1137224992f41a78301ff768527e953e50424a45d21e8877a16a915629f45aba1aca08769c561260d4d58bcf36af98c26e6b81365b91720f3155c1f9383d8c7ab295aabe6c9799f625d29da42bd4002fbd337ceaf991573678f6384da18541c4e3a3c9472620c19129bb41e2b5e71884b98a8ac319a0ec2be11948f4c02b0b824a2347e00945ec89f45f431dfb3605d8228ce69136867570bd0149f4fe2b53f19d1458e7d6f9688af7c5ec3021fbe61cb331a5a44c9f5e9a4a1192d5eeddf98f47e1c8379bf000ae6886cc3eb5442fa8586652550876a4ef31dd941eac082e9fb1ff26db706159ec7be0a5051b408fc955c55335db1f46c6e87113aabb03960f2f4fc986e4e583021b6b69e7c68b0d1093429630cf7f4a7e895ad45a41363c53d0ddce0804a8858092bc7a069852fff02773e0abd6c7cc7d3d34c0bebfb34e1c5e95ddb184c4a0fc77ed09fca96dc472ba0391214c489890ea410085d4c6ecc69f3facf0b1587372752a421641597563fedc9fc64452d7a7a0db9560ec1c8564a3180a5e623b65e1dd494f967556bde56f9bf58cf5e07a050258e4a90cc2700831a4113391877c65ebaadea8710e23ca9f7afb8c5bd90edf38211b32874b65bef5455159c1a1d17ac3da17819f8adcb254a62d7f4c362cc470f75fddaf6f6624f3a56b0187c4e21295534a832a0f2720c411d0685751fff095078d18bc854856f7e1abe14eb76e9e45fd1eca282804784d9c27fd15ab00bb6dbfd864c401f759d0f2da8ad8640b81066038b72c6cf26605f8388cdd67aeca21dda79d6dd01bc3d3ff5ee29f5e016ea681ba581940d0130685d42e9635c6ca27e1eb9fbf08f44879f4f479eefbde7b65476fbe379f771b0f116a2e6e5f65416b72f2c49452c40b2f108ab86ac7dbb8e252ed32946e5be280b512734c96db9511b21eeec3d0caeac51f8ca315ad7dd62efd1113e03932856d5eef73035a0ae24fef22a2c8aa1db28bc87702c34b2d2d722ddf0ad9d2eb4a6c16b85a7e22c49d115c676afeef8f66ec95ec805e4c1423df5dc2eeece55f107005e15b3ded7c5ff7b7d6fd8530049ede7b776bee594fc18e29a4ae177419bfcb2a0185f51ab35c389baf9b37742192e1c36c2ba7d5c46f683dfa8ca8103a824033c68d844d0ed55e560b96b8421162f57e2daaef5853bfe476903fcb42196e78ae2afe3d5da230de9628e2d268dfc50290b2a8ddae0ade58e2919e0f9be4b538220b885e20b28741cce7c6072aa27cf076197d8e046072045f4a4e20058e7ff428419ce7629b7f76dc0568d99586fc4095107b02228d4f2e9978abe68ef302747a67805d0158b88e94bdb73f1c6e1ca8918b311b0a5d101130e142d2085778d1546532c842f2673cb7a3774eb6d23fa901883aaa682aa7ed0195c3f899f6b485e09715a3791ac9102c177b37465344523fef3e9479ce39d358db0106b5b4cfe26415c5ebc2d00ab36af1171ca33f2c95ff16b63f91e10de4405aec7d6368afc20643616bf30505507f7af84a6f70a36c9f6644bf22bb141f88f15c01f99fbb0344b6db03c042cb8e80e6e38717c3e749cae3782b3d3529cbcfd68a04ade376a7f334ea471d21ebbc62035a57cced3f74a1612edb492a13aacc93d51348249451616f01bbd0e89f46fa53acc5490c7164ef8b2ac0a236b9da37f696db7d2e2dd51243966d2deeae418f2edc6f38fabe746ec5bc832db5af6856266c140e78ce15c2699778910c8e002290b52a68bd14c3be294154c7f448be0160d4adc856b307aa4d3a3ec82af0d25d951d25dc2027ed7861c9ef7d0228179a9fd38ba45f8721d6ce3dd42dce8f58f917d3555c04151cae3e0fc761291c632c0f13e618958cda614f7650efd18e1ffed06bc171530b5bde901becb2b021db47e541679bbb55f7337e1d205e1031eb2ef9a332e84bcbd9b5e27682159c86d3031ab01d741fedf1b05a4e1bc82da108855c8d833abb99821c8be81df68818e2aa094a3cde6f3d5e1bd8b2e86daba12aa2b572ffc81c65c3e498432edb00f1fe6fb04ec92a96b2c206a36a5623f8710c06cc20fdc661230f8b441ce4ebfa45a2890a4a43f2dbd498a9ef9d1f4e748ec81bca42a27aa8acd72406ca303050a32aa644f60e1c58a036ca2b0f0ca69092f6d08a40ee97ff700931b87039bdff71043a75b1578b33d98b391ae0dccbd46f5428cc80016412cbce9532b70454ab801c77072249412a2d49e8f608ab7480b1a9416714c825bd07a96641b865daeda71a5bf6b9e28bbf4a9042e79a6d6dd0c1d99dd3cabf4d580b6bc22999acbfb6f25a33e622104c13aa173e2191eb70dd0db82ae47d1ddbbdb24d3d4403bcaa64bcde88c86ce5bd535694b24f117e729abb3582e2166658f969a206b44aa37837c6efd7f094443c65f43b95826aa97ab1d3dc9aa3e56b31b1d2fe5e2eb44d2b5ccb1039118ac3917148fe4dffdc81daac74007ce71dd5e779be416de62b271bc4379e0a24c6c42e8e8c0213dee8588752d54b12b4da7be2e7a75c6b3e8ad9a92a4768d0611bc91ddd4aebda0cfb84226280ce6f621b5a83016b51bc9de2fe0413ce43ff967cf3680c9e1c359316ab207d93382df330b6a1fff25f01506952465fbdc1d36aeb0124b593b29619b712867c63c7e872d65d18b8834c505ff23688bda7b9d4e4969d6b69aae0b5ff14a152191c5f94a061aa3a7db71bc4ad9ce217a931a92b35e6faec8e00800f96b0efe6d42d1edf25573f12da245539f8fba9ab270cf738d585a144d9098e5d529f3e8662903de413ca9174b9bc6da0a70be23cce8b1dd7b0a1db109605f20d3ba5d72d4361e63cdbfe58ba1e19c0cbb0ab65090c8dc30265ac76a191707804756107d14e1ec41b6b8765286f99960fb601394bb1db089bd5ea19f3b98666e003affb6e9477a42f1c836efdb2355ce392849a777a6c4ac9e1eeb7bad57faa0f25eec2adf2d2d3b20e5ad1ce82ffdd9264e90a37a269f24841742479ccfadb38664c503191da287b16ca59d06b0ebb09e658cc0090665d8ca90b917c4a089b9474b9d76ba7d9deeb96f9a82ed10365d756da05f23bc9f81222b09e5d4b490977052f0bdd3afacd28b2f6730b3a6784eff8653fc8dcca5d17f7c34b05a30cf939ca10c52b714a5ab51b77b523917963a9f3374c7004b81588e06103615fb793dc267e8e3677d8fed75cb371",
"signature": "0xec8a3ad1630b82a6a15686e79666d7a24a7f8c692acbba3f62456c49d7d1c3e473e94f8b4cb9360e995122c48841d17eef79bc6e8eeeb40d643941c07aa850dbbf1342b9549c48271cfbfd48cb67568e6220ebdd6ab43624c11a5176ac75ebce1ce9481cb368fc7b1066640482bf4e33f336bf386f238973f10b5b8a08a1ce5babb0f5060236dafcdbfb80cb91b4e34fd338f1c6751e47e47e8ad94f5daa4825cadab08c0cac808666697cb01deabc718dcd84703cb4045552c1d2cab176b19dc377810db8f21e331030860a831e385b199f66787fe589052c1a9353dc3350ad65e86f16ba79e5694da51c9fa4c882c9411e2a95f6011fb7dbd86bbb9d60f9d81ba38954d53f4cd81fe24909de070fcefed7edd55cb7e41249d605674003bf9f73a9d228b0c3881df78987720cbfc6aac68f64ab7df7069a4b2076088ff4d8f7806f99e269d32707a437a79775af93ec37a995ec4e25722b217b12d9c7bb49a2ff957e02bd94b4ccd8d3f9b855825d6f08354f95233c55c855a7e7b53fbada7380dea39cecca6695629c6949c4fe95e7e3bc29714bdd638de966adf2015fe9e6e5bb80b457d17ad9b8a7395bcbdb5b06e809017646a9e911521d22b9b42775e5bb5f2035f5df0224db461ce4f4896331e2568e8c960a076f3679682fb2b10b3ed50ede3f0bcf1cc8b1c50c802690d97ec15a130a36a41209ba9a5332476812427552ba99a52192e92b87a66abcaf6d8e456156f3f87d2d3a0b4498b30d155a8e2f4d50180988c74fb3dce018797c584fc8f55f89c723255ff4dc277cf3fc6afe45b3a372eb8948248aee7270f9d081ed231d5c4559ce24bcfc0efde8ea708adc8eea99628a718575b6369bfcdddbe02de626bb6fc8bb5ed4e643c0579fcfc78722b690631827cbc229fdf09c3f3af6ee72908756e5bb01b1ee1b31e96f16d5531ae06fbf7ed703e4e852af82d3164b23b42a8377c60a7ef66cc9f2e8733ab27068665c71745276dfd0e4e9e4a71f108806f2b39e790c7a19099bb4065961362fcb4ffbaaf9af64a527366542f19f4d8dd45c0da879123d9b23d73ccad5979398364f75a629c35aba791a708630175470ff5f3bcf340502c3b1745bec52dcaa2d063be76a598838fd0bb49ce80b084aec62030c7f53b02ac8c7b8dc07a7548f4bb9732d83c37fc0c70f7d7f9002a5a522ef4f5f8f98ae43c3b5da4db846964b40ae6034651c05e38e9836a9d72ec4a75cef2a5dca38401203cd7fe60fb1138ceb9b09bbb36483f3f1366953b484889126f74ca37389cc0639c368f8228de1fc70e8adbf1de146fcfc78e9989cff60efa9cd32d7e05be5c57eda2006e32c7019dcf3df8bd9b0935c34a2030e46d498fb89d098ed9639bb84f39ef0deb2e2c3a333150bff2a0abc0065cd1d717a18e2acee9da902ed7fd1b370f0617643638aaac8267fbefd3bf3cc3835a3ce4d9bddde7c01d28ba106e75a2c084995280ba95e1ba2a483392fbfa2c5094ed93398b7b0d1df00449f91baea21a0fd9010f738838480930dbdfe41ef70acd8d04e9dde5e6ebdd440646b8af1f76fee5cfb1a27fc0250dd553623b03aceac99a3b65e336888c975ad552fc5d9adb49047dc793ee20f1224da07e9f3a85cf43d1205c7b974810e9c0cb4cbc7ca930d9e2aa9b162156e3db57c80d1933931240a407fd710b8267c7f72f202b766318fb0679aa4e863aaac111b8d556963e60a3deb595599e85cbbfb9ad7f483d052d311cac389f1a67fa982f8c08cf94f547ace0d0123275e32bf5e8d304d1386d1d46c73891b88c4ea09f240e939e1f8d9b8aa64d0e18da9a235843463984d5c37fcc6c633b2f887c652d7b2589de2934ca3b3edbc706ef4c14688dfc762eacb27dfa7feb4f6d03c41c3f6eb7aadcec862d0bd03d61e087e336893b81d8d57e206faf36d487378bb866bb5fdf7e5659e69d93351c7c97c162d698ca5de5f7d287853b6672d14e5f49793cee9367a5a910db12c4c098e08e7e4233e4598e36c4907946753925e79d61db0a9a361dc1195b726294c603fd9b7798ca98f34655949e24dd8ad33d2bc512e38f7c26f248a7959548f844fe7c3ecc367381c529e77efe43ba23b59e6cda14ce27ece81e2d1e2fe2c55f2f29dadaee24dc2b2e638e1cad38fae7819e63e5275502f0f0a3825465d65cc017e873235ef4a871d8a0235f833adb6346d79c59f29c5e939e8cc2050eb9c64498654ef1e6ca975eeea8658eae664c26c5e9d667a29b7c36098c20701e2fe4ca0b922d6664e92c8ff7be49a75414c980d3545f915153006d60e092a2dd2b5e023508a256479d8f596ea57ae7e3548d6771a1b8298aa46df9ca7f49243281772aecbc79702c701dc85eb3b0813e0007551c5612f8351eaaec691079fa21363b8c07c8ae7a6301f65984936eef6f628b1157404184a6eadc87cec3bd34c498c7d9eb4355b79285bfd54a31b9e8f2cae2bd033cf8c4c4d4fd7cd3bd47c6bcd990152aec280a2a5617adfe2c67e6cfad40bd09d21675c9bb00e3bffa1efc2cbf9dcccedc5e0e7693ad6e04e5ab2330b8a432d79d6dac75badcce73129ca2cbe07074f4290622b165231b9fe2fa0ca028bf964b1e4dbd66e62d97b475c167145b302e7bd11c93884cdb76b2fb2ba0069492c9973aab5ce80a6152d3c14b9ba4e07af5201ebfeeaff572c2abd4a2158e31e8ef22132fa57f908318fb7ad52c7689f1a88e5c8cefdd460cd8fc2709dba564a3089a77513ac2e0500a6800d4f3b2245a230d90ed10218f08edacac2df43a1b62e8bcf343378dc1b14d6dc70f2e0ee848c263ddf52c52d14126c27379c1215b9b7555785767529d12e2e737eb346b3eef46150f7d7075e0ad16933b24c6ed6b12812b2878917062524bb0ba9a04797bcee675df0bb8062ffca21a6ed58c0fabd14b30f408714edd978199514ef267328ea96fc599e106ae3957b23f80d21bdf763c0e994c9d26ae2a3a98a7405098a151e51415f2d4d1ed87bf43fe7b6b6a632418fa1e996c237fca547773d847bf6f63800331c1bd77d9a0adb4f930dc1917e1f9f9163fbb086a91a5d7493899bed1658f6476808c393cde0d024d476840c28f8a40c5b8d179c2afb60c9f540e68c0cb6d9d0c383e6676fc0628242ac53c1be40a9bd5fd85366ca7af3e8ec5f087e0628a90378acaf16d0aee85e96e18447db68451336bfed0729ca71ff90e089740b87fabe5f702d3e37ac43fab6074d540c455f69251b0751d918cb4c40256fecbdff7c281b8e567762d2655c9e9f57ed5c59ab81744ef07598e70403a2561703f7274158540c0af52e4428213114803bba9e180dd7bb0ae2d20aac927af0d209ae331449261d5f72374ed37977daaed33860cf7bef036377274f86a8394b721773a6c9aa3ab895dd13188d75137cd25640ccf34af8d4a0e022a0aa992c96bf4642ee23def8178bd5f7376c7ae50fda9f9f13a86430d90af27fa0899c369112152cfed5e78b843f7e0864fd7e7edcc50ed36c5d9195109148ea9771a61651a187c059946a457fea2fa0dec08596a8c6dd85f4695fecc593c96c9480552eee4e4b3b7855b7d8b4ce079e783c024c224f2c15703a7cc77ef22d796a559b740184f963d234250f279c3bd77be36e5d1783d06c6ce45a29ac6e174ed4c761270938383cbba38df3e68f637f49b3a7b955600303fe8f2d3e4d3e7409af56d55f1229672a5b643fded07918cf3a7c3071f1f152627cdd366581328451c0aa7c202fc1106efb38d179c8bcde0f0716af45471bd09ad73d5902691605b3219ac223b7596714a81746032e30d0152a16f48516220937d3b6d1981553cdb9e8efcc70351da541d65505862e929140188e6058706f0950fb32f015935fcc67f859145a215fea9ca345a729bee8d96ae156f35283473306665ced9f8cb5cb926c6751f5f02f5d0f6ffcbd2de5dc0ebaf85d5c46ad9bca54305aa5e7e5848f2208889a5e0a187a0677b0bebf7a3326324a90de601c1ec0a99bfc75a397d56c0f535448450a798cdd45b931d1151605de65a2ae751cd34924c66891f84a200c56a4c0f9a3ff9a8766198dc0be298868770bbee13ec6d46dc6d6fecf63196848a5e3bb2f6991dc1be3d6fa85245710e8efb17b3ffe5848ff90a874fc69ddbc6f18c4c037a019216aafd8e35512d3d01d262baf840cf940c8f41c78be04299383b89461d26dda3a6862027edeafd9f50fa6fe0dfd3b8fa5f535b985cf6a3d0bc0f44b2f77e66ef583ab6ffb97170b30331e01e183a77ce65bcd6fc3cc7961f475a4f8e425a0068e9f9393abe6d3f178b3dd2d63353089e3b1315459619d18d9ebecc203b502207b56f570e539cab8e8755316d050f9890d34c3e60e1ee618e07b62fae542d687d74b20f7eaa395831276b279f9487effa05514670d08beb7365fd3fd1b090b6838d4650618e2a450fe6cb54ac34b1824b4314ec34b9a961eb6f264086f35b23602b077bbe5a5bb20cfd74583ef27323f2be31f8967d096e70e68dc8a6331cd07c4566f3871d7003a3738892e1831c10803efaf4e70eb534062369731109795421bd017ac1daf088e051cdc0255cc6fbca99c84ecabe92ad150d759555cb92aed8d1e7963384c0b6fc869518545e007626f94577ab0807a974040d3009c7b0ccdbf9f6c88d371af0ec7226be236bdf5db306b65456dbc599a9b5ecaeae707f0f31717e866b1e1f0ffbc225d6d9352ddf9454677fd38b833e111fa3f14cf9a795a5904d84ab8ff4c3c4b9aeecf3a46ab744a0462e1f8d1f994d230486c07211a13b632e7ea08883076850863bd89114fd1f883a036edd06a23e3772c02863c1dae722f522d42bcab9a3613eae46a2bb4bb93d72937d4702fb072e65566875f26192a2578b5b917d367f271b02e411342a5a9d68ecd72aaef0ff685e24919a3c1b6d00be9f29d46633dfaa58cd2968989f0162ec2d64458a3c76b0bb6d989eca1bdc30c37e825e0329108046eb8c18e66ee83aaaf12d0c13fef9583df3beb1d15d3e29b4a8720c984420b1e05d1ad5adfb07b720fa9c69c847bc038be8a8f1cbbd5a853a8259a72e3f06d0d195e77af858e7a7e8c594496b009a6899bf2161230072f58483e9a88fc10db1261716049114e3a00baa184aba4400d6ea34c709303579ca7bc6f83275609e27d2cd98babe1e37cf11bedd5e5df6be2e585898d9058cf22ee3bb44673b783d1e72849342935a4e6eca9759044e1f87d7be7dc1fea50cfed8cf6232f7a47132ee8fdc39b85e99f7da8d65a2ec82598a19ec4f598af3937a0fed0a6ba53cbe6bbd7538dd06868500e31262a9cee3cab333df177c30c698941c695bbf1c506604e1cabb8c9f1bf9df09f0a0cb7432a8c029f37b6e025918236ee495c7f6c32d52716e87c977451713125f58425b00657ddbdd94d3bf98cfb5ef0c469160745dc88c8d5296de9be6488a49ad7b2afaf76dc7bb7f7ca4ca1a1433ca77405ce2e2e6c934beb868f02a505d1750720801ad76d91d59810fce76760d4b747204d891673aa0d5c08df0a042cec89d0c00666e3cfe77650d138d2cf35cd3af012539248c98d1c0842952c209781cadafdec3b3c394ec8ff1a777c11a3727175a279a536da1489397d4af5f26d8184234797933da301454553f31b78ae001922324f23034cdd62954482f4a723fc82b614eeceff97fa00dab2a9e9c354c5a9369c1537a4747872e59e8805f0b738885c0ead943ab6fabcacba150db1ad68e767b8a62ef94c9909f872e7b3cac8b4ad970e14284f3e5dbbde9e541d943c1f421bcca18e9463d3766582deab592f7e003e82ef10f407f58b241a98c0c824251af48dbb874aceaf4f44d88a86f15c71eaaa8b8ea0e6821ab968be91da29802c9909aa554d781c072ad3109e6e8f124d77d2b12adb685c663b8725a82581a0be33a4ee1abbbf72b30d6ca950ba51ed4b3e813be7891dd5d775649124b0e3f76471461c451ecd643ceeb3d2162cbdd70be1676fbbb16f874bad11ca57b330f4d508b9511fac45bf16a4ea6d7bafd6cca9388746ff46ff3d73133f3102e57cbfed7929a8f75cbb91151c4ab6521727213ab383fadeb3065c28adbdbbc4d926f45baed69d212004b34c03cebc6bdda3b92490047218997447498be655e25b5786ab7a18c35d2f761e0e3a1fddb73aaa32e2985258747aa7af7bb4e8454df1a0cc864f9e36a62e9a9fe3ebe98b3109a4d201c3c98bb42166423f84f0cdfb8af74bc77b81e47d5b5b5c12c0bfa307fd9ab0c13bd3b38d25e0425441fb22bdc4a75d8eb4b72c836d2b5e9264ae9f20d9708ffedfdb81a2379510432657ff855a147610d4f08e06ce30d928e094c07d907f14ada32fdc4f3cb2bc7f0c0d24748eb0d015455972808287b8c9dae4e70c1a2e61678aafe2f5274d5867376a6fbabfef00133839a5e9f42b3e46636f7da6b01360b30000000000000000000000000000000000000007131c20262d3538",
"chainId": "0x01",
"accessList": [
{
- "address": "0x0000000000000000000000000000000000000101",
+ "address": "Z0000000000000000000000000000000000000101",
"storageKeys": [
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x00000000000000000000000000000000000000000000000000000000000060a7"
diff --git a/packages/web3-zond-accounts/test/fixtures/json/eip2930blockRLP.json b/packages/web3-zond-accounts/test/fixtures/json/eip2930blockRLP.json
deleted file mode 100644
index 498ed5f7..00000000
--- a/packages/web3-zond-accounts/test/fixtures/json/eip2930blockRLP.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "rlp": "f90319f90211a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a0ef1552a40b7165c3cd773806b9e0c165b75356e0314bf0706f279c729f51e017a0e6e49996c7ec59f7a23d22b83239a60151512c65613bf84a0d7da336399ebc4aa0cafe75574d59780665a97fbfd11365c7545aa8f1abf4e5e12e8243334ef7286bb901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000820200832fefd882a410845506eb0796636f6f6c65737420626c6f636b206f6e20636861696ea0bd4472abb6659ebe3ee06ee4d7b72a00a9f4d001caca51342001075469aff49888a13a5a8c8f2bb1c4f90101f85f800a82c35094095e7baea6a6c7c4c2dfeb977efac326af552d870a801ba09bea4c4daac7c7c52e093e6a4c35dbbcf8856f1af7b059ba20253e70848d094fa08a8fae537ce25ed8cb5af9adac3f141af69bd515bd2ba031522df09b97dd72b1b89e01f89b01800a8301e24194095e7baea6a6c7c4c2dfeb977efac326af552d878080f838f7940000000000000000000000000000000000000001e1a0000000000000000000000000000000000000000000000000000000000000000001a03dbacc8d0259f2508625e97fdfc57cd85fdd16e5821bc2c10bdd1a52649e8335a0476e10695b183a87b0aa292a7f4b78ef0c3fbe62aa2c42c84e1d9c3da159ef14c0"
-}
diff --git a/packages/web3-zond-accounts/test/fixtures/json/eip2930txs.json b/packages/web3-zond-accounts/test/fixtures/json/eip2930txs.json
deleted file mode 100644
index e615016b..00000000
--- a/packages/web3-zond-accounts/test/fixtures/json/eip2930txs.json
+++ /dev/null
@@ -1,48 +0,0 @@
-[
- {
- "seed": "3f1a26b15220373806f141d3e0b74e8c6c29d16aeda43027ccea7fc6933b759f9b51541a7c1bcd767adb92f7e67c723a",
- "sendersAddress": "200ee2e8b28c956e99337c7dfedd0038031ea947",
- "type": "message",
- "raw": [
- "0x01",
- "0x",
- "0x01",
- "0x02625a00",
- "0xcccccccccccccccccccccccccccccccccccccccc",
- "0x0186a0",
- "0x1a8451e600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- [
- [
- "0x0000000000000000000000000000000000000101",
- [
- "0x0000000000000000000000000000000000000000000000000000000000000000",
- "0x00000000000000000000000000000000000000000000000000000000000060a7"
- ]
- ]
- ],
- "0xb3724c58e5e483af16e52de3f0b42cf004379cf287751bfe6d7a307ae127cc500724ab6ca3e8f44342fa479eedb7296b1096bb4f33dcf5f5c0e0ecdf775ee15e170147acc3404c897fec4e2d8afc7ba62549026d2d1aedc1b53d36d9f8033205fa0aa051e365065e83219fbe0e9718ceb164e991ef931c6f09232350923065ae07292956211524b086b48e9f000b1f93e3e02c66d176f86bb4ca3992237300823d53f5720b3932a4d9cf6155fbecd35f3bbd76a134ef19e5590d708bd514b042a26693eb572a11f49885196b1d03be04807fc4a6ed1a0860c3d8ac00361ef70ae5bebc6283ed7792ce6b0cc64998e613deda75be35a06269b75ff2d8d8ffcdcf2fefab055b51cc373c8896a8a7c50e3bb6c71243c7965d0bf37408dab6e4b14865d1446505aa297d3e68e6d5a09b6cc88224b4f150ff6caf7aa236ba183e0e28908d91a27fc0a6fb1f397146d1d1e8d83001bad83bceb8fcd22472539f495ef88c39d486176a246c0ac5ca44f02db9be76dda3ea3a3f49ec3a539e3f4d2592317c534c783e3a242461a43e01288b3c574f798fda7fed975ec0823d859fb9f4a76b9f3bfb1bc92455a8c8536525b21d16ec78b3864f7f80560ed3b1d0c71cd05d9464404c7a0277b5adfb07a3db8ee2c491d25d48e85a5ef13b97de007d8d33f711ea07483b33595879a8e18ed767f81b316ee259fdb3e924b3e1b35d832a97ab152b4d1e9f762f816be4db7bb152819333cc1812e163ef1672738446bfdcd2a6d569a14098b7a0fc82e93023b3dae177b7d528697b55f853597af7e47593a91a547fe6e7f7c42cb6ca90940b75589db75f11198bd02503d1a0c98b648b03734575b7e4553f1778be8fe119c3f9d0ce580542601d20def01caa58897d0bae07147665aed7e5c7ee6473a478d453f5032cb650f8844ceb5ba14761fd547693c866e0672fbaff0ba8f13eb65c261faa02a2cb13372dc10ea8dc5ed3162659d0b94f8f58f0555256b5fd299c12eecbf1993b87d74b3987fe7458d71d64e02febf8810d0144a20b89beb22601d5e44f5acc6841f66f920312f19325be5e8205e6e02fb1de24d2a60d64d3d354a4683ef74bc481ea97f59e47624bc4fd3ae95a2d7fb41bd3f364a74b0ec58b02e9b303acfb4b7637243f42dc3c507202ca59f1dd60c24da97321d7d4b98fba311ce0c514c12ab5d8426ce716c12c2d0055ec46a8edc5c717fc1cd878a0ad268c330f08779cfa5d133a77d60f66e33f32bb2f5eb424429e17e2884cae3669ddb020f46b594f8b98cf68c69416449655051f8020191dfaed0c4990a9298899c36534dc5c123f51998e6b827247223638aebcbf29fd6c8f0fde8cb7a4c77e7424e4453b5547223e053124e062ac15846049309e3255d9fd27f5288eb8af0126b893bdc65f77dc44da5fcd8c9796fe3dac3a53886be1e61cc2942a4b292a072d7a134a97a61727b4beefa31280bab8fbb75f567e5c021bdc122e1ea8fa04f79f43e6a1e3d3f2f7951f42e873ec6ae53aa13234a2dfda73663f0763ceba04744857a17729bc3cc55b645e46d6e9ad8810c9e1481ca96540cf94cd746abf2ceafa693e19fdc58e7e88d4f2a1e548a08ba4634a3c0149a97077d638232d38d1b20b3113e26ece6f4e06cf2a78ec107f2cc132b5de11676cabea8a83b49fda16f48e35c74ee309833c53de426d5ac8f11f47ae75f3ae91a72eb7cf44f341022bb03afdfc0efe6943332420bfc4f437c535b48b0e6805bc8e0bab159cc44a8c94d76803d056afa0a65106f38593ffa7982a1e3483cf5494704acd88ff8d85dbbe6a5ed2694768aedb4f8a4499ce13b5bb2aeca8b65da35e1a5bbcade65eb21a3069f956bbb36956541a233b2332e33a0470e45806a2a1b11ecc2294337578e6d24e1f606e8ef4cad1f37929402bdf8d698aa85628aabd097c226d750315b9eacf8b60a7eb02528658bb1f4680121d110c5eb68e65cc19109b8db7569d9395dd0d691337ebdee6efeb4d57f607e34d5e58728e002afd8e124f9b34e9e2701e9ca139398ce6858b6c96a2e84f8a54a03972a6c1516ae90e26290dbcb639c7ae599b56f6b93cd664f64ad6cd06583d96b90978e4911b4e036f8915e369cfcdbfcd190a045e51c0274f7bc326698aa82ce8aef552364913e0983a63998d1252a611f92a56b0874768761d7e11861cc74b4d17c1d13b482eea8adb42b26dec915f1af6cbaf1aa5a8a3145e3efc810ffea2700ae6fea2826724c1782d5321b6499e52153edc37725288fae8f8428164d77252e3690c85ff35588b3f1c8d8fbec7ab7c80aad77a6f231d79366cf5f82f92c1f41c726c1bfbeb97eb930db74fd5460d89cbce58e5cfe1308e8a3bee68647123c53a3307625a6e5cb5ca5c2334b0e49930a6078d0f98b8e1f7c27572db99519833a81f7d9d23b21270c5b6771cb8ce5fc7a9f58b6c9b1a7d1e3bb57b945a802cb527c5be47f17eb1467f1a0ac4ce6d933961c6c941a3a371952d5bf562d07d58fb58aa7d9797d3e3e371504fc93138b8fe7ef7a243a21c970641a242e8a6adf69a32052aab13203f37857ce491de3fa75d69ec1f05f8a55ebc2d342eae7bbbb0576bad81b1af00447115d3076a8b7933142096cea7485d3c3a434c9bdc22aac51b126a3ee9b46eb6a6e319eef5aa4fd5b908f6906a582eaa62c49da0ddd7e6d327e65499fa49afe5b82ba79a15a4755ae77943cac6d2a26a8d96603a95da599c35ce0521c631a91b0b50ec77b075652298020a7653a67fc1846ac2790917d698d35edf5b5300c70ab38c18f4ecf6931f74c15d9e15e2e2b572c59fa6f3a664c507b736e94544d06270fde9bc0c6142d0e2765b3b6db4ca4a4739c69b4f9cad0d6ac8df6a1ac233f94aec567b58681a509fc22b2020cafc43128228115295abb5f6b463b5ffda7add4239ef7c82935506fc6df7f346eddf476f6d42e8e57c1a6f94c415063b24690d7c31b90e8ed24a46a4a0bc6b95050240227e1eb90440829db85aba748002d1f2a002b85505915babe7d6d5a4af5278ba593f1dafbb6200a9b8fc1b211d44b31f68a2c80b8afbfe943ad34a6a1f2cf4d5a6f05c5deb4fe29bbeab7d417a4e160e908c7a2f9b3a649e83f329d9c2e8a9562c88a33c7f475a945538368bcbb2c7728e254d3bb93f54c0d84b4bbac5b90a41da315b2795bf2d370e3dbb7144f33c6e8d67ab7800407b5984b61a225d58c3a582554e18382ef521669a895535ebed856f08c6226ec9121c2db941f81c2363104c58ae244736d1254b3e6b522cb55b1331c0f28045b71e8331c8950a0f52bf48564af8192b4ae7324d1a2289845dd280f3eb13e4fd2ee6c225e659abe124687cb6800b2dd062fc3cb440d0bab234c819509ddcb5a3c28354b6a4c563ef61cd9056a6ff5640618f49b177dcb7ba5440b1495be60b9cef8618ce1013fcec7389243b273c17c54a74a64fd353ac19d3feb4dacf129ef22477877bf619636206b0f2e2edb7ea53aa510976c89291d46ce06a293c06bb5a79fd8621f17d78ee593f943784a546c0474bad71e9b4aa03878cdf3cdf7cb3c287bb9dd7c06cf9c543e2d53014620e84a244e5b3b7c3e32bd1645a64267c0cfcf605566c893c206a69ce96432a19117b1f08e403f49ddb350610352b194041",
- "0xd8fe324619815725ddf1f68eebf95d3a9809cbc83ffa2cc91d0ac6c80c5b74d14aed2bc08b2859b1e6ebac3f46c8ac110b0eec2a8ed065b0604796b3aa9bda6e94fab38e8b0c8caaa7438327d41747891c226884f4cc970e75255462589dbcd1a7bd536b1286cb44a0bbb8f110f42c5ab027319677e813a07b36d4dda00aa354d7a983acd7e5ba3d199c8e21194a220d39c8402086507f4265d2075bc9ee26b23c571c5bea96ddc9326dad043d59345e7d14ddd0f7d1facb7ea5c27dbb9c1ee37081e39825028884f70cefa64ec57342825f5c35a3761dd2b509d6d27b2f0502fb4db49d4e71e0c5022d5e45f4932bc2f86c511ee2aa0b333b69a4717b00b9e14594786b0d72923b5b54d1602c18d6bcfb985dd25d44cc1bfaca0f31c20c0395684b3f673a023b7bad6512112ff4c4be0f7fb4a0429b51510114d22dfaba9a53762b23b4a0c8c73104cafd70e195ceb7696849299f96d515b5de2c1a5eb829998d1593cd877f3946cc932af4ae8e458cf598b2fc426d104cdb964b73b9eec878cfe58c5be8e18ead830c3baa3e9e0a6f5037cffd682770032230becab7098ca20d6f0cc949e89d40ec093b37ff5e966dceabf62078ada87729d6058ba41a37436b224de77981a68ad507c583a5feaebf28bddfec5aa06f9304d395ae173a8c7fbc9a0b7b346c38eea5e940c661351ee4f1905cb8f05fbc3c06b7cc22d4cae6f0b9ab185e184e3061aa5e0453da37f07a91da503a8942096c96e4209d2a58d0a59f57cb6db96d219e6342f07c874c4925e5d8465e10dc3dc51f12087151cdd977e887bc2098cd6b6455cff9f567cc6bff93d5308b41ff1cd43d967452d3c74d7712fe976aba836eef029b38888c75098145e8110714a7427cf2a2fcd566bc601594eb09f8ca4fb78c5072a59d843832988addf09eec4275afd9de4b791a5f55428a3891a4ac2bf3c6afc7ed36ba71949f58415c2c39bd4e663c7414e1970bbb3a0825f96f14ba931b93ec547be94049b13238bb2ba3286ade63f98e31b9c0fce06ebe9520b3e8fa31eb3b03a6b6bd3e0816b4e500851fe3bbfde7c178c7ffaa6d9d166ca113f5248a4c2fa808ea8b9e57152b98d156dce8229732249b4fe86e197603681131efa13ccbf9f2844d45626962212e1a34658fec1aca8e88293916cee29600ac1edd4ee1b99ed8d27726882286cd9aa2678361ddf86de9774a8b62fba8ab831506467e326e8af06cea6656cc3ad165b96ca9f20f1a885f37191d86f3dd3ce3f788a727d781721d680e5c6c1355ec0dff7fea0f9fdcf8052c17655aeba56cf14c2d95079090fd2b9441c52a2529990709a41eced7c25d741c9485cdf97e799081b010d47c93b745dda7c984dd33579c242d0f3ec8d18908ef5d1b78d588ac257ab14344ad3c33f4ed09f40cdb653167c97f95d7b2a93bbecd7b34e52322fe4803c225fb13f9abee0c6805e97d2a102799cd9f298363ee451fbca1641e772617ba88a1d71f306bb96fa47da8f91fde1bf6a3aa8b303ed88abcc93047d92f6706907349b45ba2ebe6daf4d635c648f89c92d0e381c8a1fa17550bacb760ab35699d3453ccce27ed0122586453363a365b1d57d3a9f5b48620bfb57d69fd071dc6de37c76f0f842f167cddd9cef6cfba09556740158f9bb581e34e5c4c8648cc600bee6ca2fb716111eb823608314589dcff1d53bf679e22e60cdcab2f2ce2a741374b6e3ef300dd87c056567c2249688a92b2f9f6703076199d6b96c5c0177d687f8976f285c8a5496276aede0327790acbc0f2cdffec3214e3cf2a2c26e6f2127f7c81f228d4b1f25621e9bf6eb47204f1a0ad1fed4f0dc55c34b3c2eb5dc49a1c86abdf435b7ba202a396c81b412a6fce64eaa8122e6975d5f4d1edc7daa46a9a9fd370c9029e179e58ad89f2bd2b6672146383fbbcfd1d0b605e04a09629a7b97c79eee12e9d9f3e5f1537644990cd5f21576dc618f382b5834f18bc516da02144ce968bfe7ead613d337c55f1e836767a079b5d86a3d8936430b2f8a0dd9bb2ffca0c39c5e930fbbaafafbd5eca4b82f0ee11a85a60f73f4c36a974bb03deca4e2ebeb9d5056269992f847eb3c9283484bd246d8fce0786b283ddfdea18a49c05f519c6a2769aa3f54aab28bbcd4dc8012969bc1a5618503917e149aa0605445c5e40efb1b9a5c6fca3b6057b057924f6b6421345fda49181d5ecdcf3305f67e121b7264f64d791acf08dc5fb95cae45c4cec0dd4910fee1b4d88e90614bd587a0477db79c8d029772d9727538dba6c2f89a8ba8f03905bf537e6274558e59c50263b4ba468dc814ad6646b057ae24bb38b1212ddb87d887fc9795ed835e924c6f528f66d370f15c43e589bcaed4e8b97dd023e1bcc92342f99fc55d0dd7e8a2c18ed4d4402c9789ecbac9ff0a6a8e5f01e7d2c002ab4333d12d1d1f69060147d6ed0afdba2711d48428e0377884c01bdf32c953e1dc9d689c0f0553f3a6fda528ba1b82dcd1c680810cf400b1913374c82f74ecf7bf109664ef9084c3932c0c6af4410b090aae171792f8e74e6cb40eedbfa0a1231ae22a4c2902d9d4c4b50e0e8c5e9e53081fd717874d81531a079ecf9b003e235f0dd1e75398b46a0140504f5ea7bf874806790cd0f491619554e0b9d8011e341cfb2cdacef09eaeb9eb254c952d7b2451c62b1bcfe25a8711465136700ae0b47af57f419b6a7f49d15432623df792ccbc543a486b7b544657e709e53908181d3d17f3c81c3f6f1a544bb20a2901e6674b695b93b5f59e569dca3dab636d533d0b4c105010c93f85ce9ab46d30c88faa4dec43567578c258e47cc205c0bdccccb3657591cbddf3ffe036272a67e0d13b26c59c196e5b09e6e924707a6eb7e96722354aa23f6e19726e718e16e60475ef0103ccf5910585ab8c10d38dab9dde2098ff4a59d0531c0bacb38138fa3c9b74a953f93aca795eb0988b876d69ea6c2ee9f92fee2d51e18c523cf9d210f6f096fb6e7c6d1789ace67ed6a9b5279203945110027447707524e9b65c9c6e408f84731f25f69210094bce122e639cad89b095e7bdc363efebfd5b92b09756af80115e592ddea7386994a354a5ebdedb65ba033f85eb9d57264c0d1eccabc4c7564097b19c743d9c0310f0de1ee193a43e2f3b7661605c1c9f3ce07e83603048a840f1e450a915531cf97d688ff74451c76c87c65483eefd621d30e418a51867cbfa94239d6d0837addf2618e70dcec6f3174837ec8109092f8d5483c95c22ce6cd00c419f3d4100841577432e6a7419e707050c74810ac5aa934f9759ce23312a9eb0370ed4dc3b1fd4f76bc3924120edb275e8f0f0fd5e0a842e33e5927be7856341bff317ed8df8d333592bb2bf69b6362b40498a72499cb0bfbbcb24e526e29c3a3484cb4ac2fa493c69ba1bd5a2e83435c548d5433379b50581aa533701184088a7f4b10afb2b63f28a395b80d3fae9aa117fa0d7e5aa347953d900525cc3480d2a13e99fa64c694d033d0b70432211cd0b493c42db5579065868c420da953d24698451de7b5f42e8d423bbdf7b392f4128fc6ef767fd8c5c597d70b71bfe27761cc2c78c8ed066fbc1beb9170515da65c1362316cfe04b354714f96db59fe96fab2fbd593b5e209ccf9692d5498a6344bed322ad22709c6eef221cd1eeb0e2c1a7dd04eb47e51c90bd110127ff8ffadea7d9d30f5e1d78816d3f20babf033892428d31a65bb84d1aed9ad264c29f4636b834d649d155ba0dff33c916b3377f22ce7500b5d16a8226f527df6fb901287bbadb027a6698ef93e12b8851f6541a1afb1bb0f830d38232541d5c079228a89cdeca665f550d7ea2f07ce4764673667c5750203ec1876a20bc24df13fe1ef7460a44c51285422e7777e97a4d79d1cefc045b063bacc6d596eae75bf60c731dce09756dce7becc315731fe5df16e74df6f4d9119e8292d2da9a7a5a3af7f1bc8d72b382cc78cedf8bbac8c47be76278efff818629583861597666caec8fccbf66af577ed5576ad4b1d495762abf2773dfbaf436de786da52d5215b2b753acd738876f001f18bb68efc77164c4cb98c0bac1ee80017b578b570ae565eea175b1555e77d6b30a4f31d939d9be6749c1f0605762e06ef5aed7a4530e0ae12301c0d591a64b3ec22f58c798e20590c4528b32b00b2a2464cb3ba84a2e53267f9e088cedbe0a495ca77ea2428ae3202656e735fcbf542440d2a302140e70f28cb57dc037ec577d2d28ea9064a811d7445042831a898fd97926039eed681bdb61cf4a3cda300dad2e46ee912c05f42e36ad22fb8e767e1046c6eb0ed8a90f8232bf848fefae903402ee1811a08862f5bb8d1ec16322fa518a5bc9e36fdbce35fcde85f7b368722df2a8887989a4a4bf7e48ac6eef6614b4ceff50b6aaeb1c1c23a22b00cbacad3129353b0a77b8a8a242755d2d1264200e2b1e540b29a6ef67924c6eca5104161805ceb9099dcf98d838a595a3f870b9237e433dc1a784ef7510a027efaea3664a39b8f7710369295c572d8ee79b72b1e2a81b373f8508b727bec02d7b17c37412f5b0f052be53fa4809a2875ae7f00ffbe6bb5b2d2747a848388ac0f898e9e9bbff46ec7e89b0d3c9089ea356a9b9f248a9261a18ca150a1a841e6d6fbd3d30541fb1b9eef20d46ce447b6b5dfcff52019b0b6ba8b504c0155820dbdc876bdf036ec125d83cfe9d0eac642607900b5ba75c06a871a0bbb7f67ce75db1e9e335830dec71982d82a0a64aef3e6400231da878341f512e8dd6bb98a668cf7bc6347c936f3c82b540b8e2b2ecfceb80e6801b0a7a0db7a602aea892f50d0fa1fc64dfb96c11f0c3b58c56c90cb26dc6d1216c25b294dc3ba5e19187aaa20fc8b1f310f25ac1b79ddc7af4460d2e5312a2262789599c5613d3340194289c16cbb9e87a40fdac348d43bb425d4fcdbdef98e75e74c501b9fff4f0359fc0b88e03b395796a3e24ffaa2eeac5406b7892758f16bd8da574a93af1f69d5215e729b37798edcfe8d30ed06ae5433ad76e6f9abfa5f12b8e08e7a508da0558ac490a94bc66232cbf0b63304c6b4f74497f1c94007e0c4d79c71dee094f4f2fad1bc7ea99b6c64b8b21e14e0ce0bf374926ef14707682bdf7633ab94f26694ad4fff97f3f7d8c3ea189f18588da2155b0cbe5e05b2b30b41d698e2135231c563c00f56a404a3a8548d4c1ba3c4c1d25300d57772ccb02e42b7aff1ea5bd0c7e9885ed412632cb0e476a7375606400703a239fce0cef3aaf2a9a8cffd8f566e97834561e752b50889b30591b42886c59c903420acce2d9b980cfd67921a4297c68a6c86e80ed67d564cc8dee5cd3d1c4f8f3e99c31d81e5968f28a7862187821a12098de0f66e9eee33b2d96b335c56668546f1dc4aa9eb2af0090afcfe9c713775be62cece9089ad314859a4307fbda211f598eaf522e174676d0713c4028ef274aded1e6fbb203756a79536ca7d00a9af6aa5a7ef57b52a162f6c5d87b56b0205c9deba4a0ba92a823a8146cfa9b04535b0a41c0067927a671ee8931d9e363d1f0ead80b1677ae2bfb928f18c64c59fba7a9ba234be69db33f0a4e29f795f7974594ef26fa59b584ec3e9c1540961100cd88382a1f09af79762b7cc324cb6f6c4c58c9f6eb9248fa26eeab8c22bcb6bf51a87e8b42e8002ef442f530ed4057fd00bdd389fa7b72a24cc78c86f9b8ebf453121a595f5e3ab175a5369358c2c302e995ae5a042e151ed9018be3a8c74e8481a2f31e12b99e248d2e2d76d8d448845fcd438115ed43d8c7513970b728bb28b65bf8e954c103419e46a879a5c231184b6112a2b1878bb34c28620d8842f4404cd21db6a2efd78d97740f8d869dc20bf87cfe2d518c85b79f188f7c8146b7ada40ef55ba3216dae6f2c21c0ad4f1def1d8a4119b21b9f346d1b9cc4e8a70159273167f92aee27b50c5872d9229084fa85eddcb04d8f1c7c21b5cebe32beda0756b7866bf9f13480ba478b3714323a354da2eab7d2b97e5a048b85723311529bc627ff84e241798c4091c6fe3c8bc721142096b3727a5b29f63793d15efa975c970dcfabdd485aec8531e1213d8b08d88025cde0392d966d168dd75913fb8a32ca5f86c6f52fd8ae2befcb84b1b7db4f08ac009237cc355cd1982738a405f1947da98b904a50d34d25659d148d583c0a1c31d1c6804e507ca3d5dc0e5bc71ec2dfe7c9ad8177948524d7456a79de2c0c92ab8cd4153653e0533e47154ce7220d5e36e57feb6db44bccf18080eff85e366f69e560011d09b2dc6012eef0b47c53ae143f84b9721538978e194efede35d69ebba752275a0a330d57937b4afa0828835aa8fc246f8eac54a0a4c1e34f2ef0e54a77a9150dfa72842acf61a3e667f85a9c9032f7779d3e3f1215375a9c9dfff48699cdcfa3f596592a4dbf0f4f916a1a8c80717243f5b899be4fa0000000000000000000000000000000000000000000000040b12191e272b34"
- ],
- "data": {
- "data": "0x1a8451e600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "gasLimit": "0x02625a00",
- "gasPrice": "0x01",
- "nonce": "0x",
- "to": "0xcccccccccccccccccccccccccccccccccccccccc",
- "value": "0x0186a0",
- "publicKey": "0xb3724c58e5e483af16e52de3f0b42cf004379cf287751bfe6d7a307ae127cc500724ab6ca3e8f44342fa479eedb7296b1096bb4f33dcf5f5c0e0ecdf775ee15e170147acc3404c897fec4e2d8afc7ba62549026d2d1aedc1b53d36d9f8033205fa0aa051e365065e83219fbe0e9718ceb164e991ef931c6f09232350923065ae07292956211524b086b48e9f000b1f93e3e02c66d176f86bb4ca3992237300823d53f5720b3932a4d9cf6155fbecd35f3bbd76a134ef19e5590d708bd514b042a26693eb572a11f49885196b1d03be04807fc4a6ed1a0860c3d8ac00361ef70ae5bebc6283ed7792ce6b0cc64998e613deda75be35a06269b75ff2d8d8ffcdcf2fefab055b51cc373c8896a8a7c50e3bb6c71243c7965d0bf37408dab6e4b14865d1446505aa297d3e68e6d5a09b6cc88224b4f150ff6caf7aa236ba183e0e28908d91a27fc0a6fb1f397146d1d1e8d83001bad83bceb8fcd22472539f495ef88c39d486176a246c0ac5ca44f02db9be76dda3ea3a3f49ec3a539e3f4d2592317c534c783e3a242461a43e01288b3c574f798fda7fed975ec0823d859fb9f4a76b9f3bfb1bc92455a8c8536525b21d16ec78b3864f7f80560ed3b1d0c71cd05d9464404c7a0277b5adfb07a3db8ee2c491d25d48e85a5ef13b97de007d8d33f711ea07483b33595879a8e18ed767f81b316ee259fdb3e924b3e1b35d832a97ab152b4d1e9f762f816be4db7bb152819333cc1812e163ef1672738446bfdcd2a6d569a14098b7a0fc82e93023b3dae177b7d528697b55f853597af7e47593a91a547fe6e7f7c42cb6ca90940b75589db75f11198bd02503d1a0c98b648b03734575b7e4553f1778be8fe119c3f9d0ce580542601d20def01caa58897d0bae07147665aed7e5c7ee6473a478d453f5032cb650f8844ceb5ba14761fd547693c866e0672fbaff0ba8f13eb65c261faa02a2cb13372dc10ea8dc5ed3162659d0b94f8f58f0555256b5fd299c12eecbf1993b87d74b3987fe7458d71d64e02febf8810d0144a20b89beb22601d5e44f5acc6841f66f920312f19325be5e8205e6e02fb1de24d2a60d64d3d354a4683ef74bc481ea97f59e47624bc4fd3ae95a2d7fb41bd3f364a74b0ec58b02e9b303acfb4b7637243f42dc3c507202ca59f1dd60c24da97321d7d4b98fba311ce0c514c12ab5d8426ce716c12c2d0055ec46a8edc5c717fc1cd878a0ad268c330f08779cfa5d133a77d60f66e33f32bb2f5eb424429e17e2884cae3669ddb020f46b594f8b98cf68c69416449655051f8020191dfaed0c4990a9298899c36534dc5c123f51998e6b827247223638aebcbf29fd6c8f0fde8cb7a4c77e7424e4453b5547223e053124e062ac15846049309e3255d9fd27f5288eb8af0126b893bdc65f77dc44da5fcd8c9796fe3dac3a53886be1e61cc2942a4b292a072d7a134a97a61727b4beefa31280bab8fbb75f567e5c021bdc122e1ea8fa04f79f43e6a1e3d3f2f7951f42e873ec6ae53aa13234a2dfda73663f0763ceba04744857a17729bc3cc55b645e46d6e9ad8810c9e1481ca96540cf94cd746abf2ceafa693e19fdc58e7e88d4f2a1e548a08ba4634a3c0149a97077d638232d38d1b20b3113e26ece6f4e06cf2a78ec107f2cc132b5de11676cabea8a83b49fda16f48e35c74ee309833c53de426d5ac8f11f47ae75f3ae91a72eb7cf44f341022bb03afdfc0efe6943332420bfc4f437c535b48b0e6805bc8e0bab159cc44a8c94d76803d056afa0a65106f38593ffa7982a1e3483cf5494704acd88ff8d85dbbe6a5ed2694768aedb4f8a4499ce13b5bb2aeca8b65da35e1a5bbcade65eb21a3069f956bbb36956541a233b2332e33a0470e45806a2a1b11ecc2294337578e6d24e1f606e8ef4cad1f37929402bdf8d698aa85628aabd097c226d750315b9eacf8b60a7eb02528658bb1f4680121d110c5eb68e65cc19109b8db7569d9395dd0d691337ebdee6efeb4d57f607e34d5e58728e002afd8e124f9b34e9e2701e9ca139398ce6858b6c96a2e84f8a54a03972a6c1516ae90e26290dbcb639c7ae599b56f6b93cd664f64ad6cd06583d96b90978e4911b4e036f8915e369cfcdbfcd190a045e51c0274f7bc326698aa82ce8aef552364913e0983a63998d1252a611f92a56b0874768761d7e11861cc74b4d17c1d13b482eea8adb42b26dec915f1af6cbaf1aa5a8a3145e3efc810ffea2700ae6fea2826724c1782d5321b6499e52153edc37725288fae8f8428164d77252e3690c85ff35588b3f1c8d8fbec7ab7c80aad77a6f231d79366cf5f82f92c1f41c726c1bfbeb97eb930db74fd5460d89cbce58e5cfe1308e8a3bee68647123c53a3307625a6e5cb5ca5c2334b0e49930a6078d0f98b8e1f7c27572db99519833a81f7d9d23b21270c5b6771cb8ce5fc7a9f58b6c9b1a7d1e3bb57b945a802cb527c5be47f17eb1467f1a0ac4ce6d933961c6c941a3a371952d5bf562d07d58fb58aa7d9797d3e3e371504fc93138b8fe7ef7a243a21c970641a242e8a6adf69a32052aab13203f37857ce491de3fa75d69ec1f05f8a55ebc2d342eae7bbbb0576bad81b1af00447115d3076a8b7933142096cea7485d3c3a434c9bdc22aac51b126a3ee9b46eb6a6e319eef5aa4fd5b908f6906a582eaa62c49da0ddd7e6d327e65499fa49afe5b82ba79a15a4755ae77943cac6d2a26a8d96603a95da599c35ce0521c631a91b0b50ec77b075652298020a7653a67fc1846ac2790917d698d35edf5b5300c70ab38c18f4ecf6931f74c15d9e15e2e2b572c59fa6f3a664c507b736e94544d06270fde9bc0c6142d0e2765b3b6db4ca4a4739c69b4f9cad0d6ac8df6a1ac233f94aec567b58681a509fc22b2020cafc43128228115295abb5f6b463b5ffda7add4239ef7c82935506fc6df7f346eddf476f6d42e8e57c1a6f94c415063b24690d7c31b90e8ed24a46a4a0bc6b95050240227e1eb90440829db85aba748002d1f2a002b85505915babe7d6d5a4af5278ba593f1dafbb6200a9b8fc1b211d44b31f68a2c80b8afbfe943ad34a6a1f2cf4d5a6f05c5deb4fe29bbeab7d417a4e160e908c7a2f9b3a649e83f329d9c2e8a9562c88a33c7f475a945538368bcbb2c7728e254d3bb93f54c0d84b4bbac5b90a41da315b2795bf2d370e3dbb7144f33c6e8d67ab7800407b5984b61a225d58c3a582554e18382ef521669a895535ebed856f08c6226ec9121c2db941f81c2363104c58ae244736d1254b3e6b522cb55b1331c0f28045b71e8331c8950a0f52bf48564af8192b4ae7324d1a2289845dd280f3eb13e4fd2ee6c225e659abe124687cb6800b2dd062fc3cb440d0bab234c819509ddcb5a3c28354b6a4c563ef61cd9056a6ff5640618f49b177dcb7ba5440b1495be60b9cef8618ce1013fcec7389243b273c17c54a74a64fd353ac19d3feb4dacf129ef22477877bf619636206b0f2e2edb7ea53aa510976c89291d46ce06a293c06bb5a79fd8621f17d78ee593f943784a546c0474bad71e9b4aa03878cdf3cdf7cb3c287bb9dd7c06cf9c543e2d53014620e84a244e5b3b7c3e32bd1645a64267c0cfcf605566c893c206a69ce96432a19117b1f08e403f49ddb350610352b194041",
- "signature": "0xd8fe324619815725ddf1f68eebf95d3a9809cbc83ffa2cc91d0ac6c80c5b74d14aed2bc08b2859b1e6ebac3f46c8ac110b0eec2a8ed065b0604796b3aa9bda6e94fab38e8b0c8caaa7438327d41747891c226884f4cc970e75255462589dbcd1a7bd536b1286cb44a0bbb8f110f42c5ab027319677e813a07b36d4dda00aa354d7a983acd7e5ba3d199c8e21194a220d39c8402086507f4265d2075bc9ee26b23c571c5bea96ddc9326dad043d59345e7d14ddd0f7d1facb7ea5c27dbb9c1ee37081e39825028884f70cefa64ec57342825f5c35a3761dd2b509d6d27b2f0502fb4db49d4e71e0c5022d5e45f4932bc2f86c511ee2aa0b333b69a4717b00b9e14594786b0d72923b5b54d1602c18d6bcfb985dd25d44cc1bfaca0f31c20c0395684b3f673a023b7bad6512112ff4c4be0f7fb4a0429b51510114d22dfaba9a53762b23b4a0c8c73104cafd70e195ceb7696849299f96d515b5de2c1a5eb829998d1593cd877f3946cc932af4ae8e458cf598b2fc426d104cdb964b73b9eec878cfe58c5be8e18ead830c3baa3e9e0a6f5037cffd682770032230becab7098ca20d6f0cc949e89d40ec093b37ff5e966dceabf62078ada87729d6058ba41a37436b224de77981a68ad507c583a5feaebf28bddfec5aa06f9304d395ae173a8c7fbc9a0b7b346c38eea5e940c661351ee4f1905cb8f05fbc3c06b7cc22d4cae6f0b9ab185e184e3061aa5e0453da37f07a91da503a8942096c96e4209d2a58d0a59f57cb6db96d219e6342f07c874c4925e5d8465e10dc3dc51f12087151cdd977e887bc2098cd6b6455cff9f567cc6bff93d5308b41ff1cd43d967452d3c74d7712fe976aba836eef029b38888c75098145e8110714a7427cf2a2fcd566bc601594eb09f8ca4fb78c5072a59d843832988addf09eec4275afd9de4b791a5f55428a3891a4ac2bf3c6afc7ed36ba71949f58415c2c39bd4e663c7414e1970bbb3a0825f96f14ba931b93ec547be94049b13238bb2ba3286ade63f98e31b9c0fce06ebe9520b3e8fa31eb3b03a6b6bd3e0816b4e500851fe3bbfde7c178c7ffaa6d9d166ca113f5248a4c2fa808ea8b9e57152b98d156dce8229732249b4fe86e197603681131efa13ccbf9f2844d45626962212e1a34658fec1aca8e88293916cee29600ac1edd4ee1b99ed8d27726882286cd9aa2678361ddf86de9774a8b62fba8ab831506467e326e8af06cea6656cc3ad165b96ca9f20f1a885f37191d86f3dd3ce3f788a727d781721d680e5c6c1355ec0dff7fea0f9fdcf8052c17655aeba56cf14c2d95079090fd2b9441c52a2529990709a41eced7c25d741c9485cdf97e799081b010d47c93b745dda7c984dd33579c242d0f3ec8d18908ef5d1b78d588ac257ab14344ad3c33f4ed09f40cdb653167c97f95d7b2a93bbecd7b34e52322fe4803c225fb13f9abee0c6805e97d2a102799cd9f298363ee451fbca1641e772617ba88a1d71f306bb96fa47da8f91fde1bf6a3aa8b303ed88abcc93047d92f6706907349b45ba2ebe6daf4d635c648f89c92d0e381c8a1fa17550bacb760ab35699d3453ccce27ed0122586453363a365b1d57d3a9f5b48620bfb57d69fd071dc6de37c76f0f842f167cddd9cef6cfba09556740158f9bb581e34e5c4c8648cc600bee6ca2fb716111eb823608314589dcff1d53bf679e22e60cdcab2f2ce2a741374b6e3ef300dd87c056567c2249688a92b2f9f6703076199d6b96c5c0177d687f8976f285c8a5496276aede0327790acbc0f2cdffec3214e3cf2a2c26e6f2127f7c81f228d4b1f25621e9bf6eb47204f1a0ad1fed4f0dc55c34b3c2eb5dc49a1c86abdf435b7ba202a396c81b412a6fce64eaa8122e6975d5f4d1edc7daa46a9a9fd370c9029e179e58ad89f2bd2b6672146383fbbcfd1d0b605e04a09629a7b97c79eee12e9d9f3e5f1537644990cd5f21576dc618f382b5834f18bc516da02144ce968bfe7ead613d337c55f1e836767a079b5d86a3d8936430b2f8a0dd9bb2ffca0c39c5e930fbbaafafbd5eca4b82f0ee11a85a60f73f4c36a974bb03deca4e2ebeb9d5056269992f847eb3c9283484bd246d8fce0786b283ddfdea18a49c05f519c6a2769aa3f54aab28bbcd4dc8012969bc1a5618503917e149aa0605445c5e40efb1b9a5c6fca3b6057b057924f6b6421345fda49181d5ecdcf3305f67e121b7264f64d791acf08dc5fb95cae45c4cec0dd4910fee1b4d88e90614bd587a0477db79c8d029772d9727538dba6c2f89a8ba8f03905bf537e6274558e59c50263b4ba468dc814ad6646b057ae24bb38b1212ddb87d887fc9795ed835e924c6f528f66d370f15c43e589bcaed4e8b97dd023e1bcc92342f99fc55d0dd7e8a2c18ed4d4402c9789ecbac9ff0a6a8e5f01e7d2c002ab4333d12d1d1f69060147d6ed0afdba2711d48428e0377884c01bdf32c953e1dc9d689c0f0553f3a6fda528ba1b82dcd1c680810cf400b1913374c82f74ecf7bf109664ef9084c3932c0c6af4410b090aae171792f8e74e6cb40eedbfa0a1231ae22a4c2902d9d4c4b50e0e8c5e9e53081fd717874d81531a079ecf9b003e235f0dd1e75398b46a0140504f5ea7bf874806790cd0f491619554e0b9d8011e341cfb2cdacef09eaeb9eb254c952d7b2451c62b1bcfe25a8711465136700ae0b47af57f419b6a7f49d15432623df792ccbc543a486b7b544657e709e53908181d3d17f3c81c3f6f1a544bb20a2901e6674b695b93b5f59e569dca3dab636d533d0b4c105010c93f85ce9ab46d30c88faa4dec43567578c258e47cc205c0bdccccb3657591cbddf3ffe036272a67e0d13b26c59c196e5b09e6e924707a6eb7e96722354aa23f6e19726e718e16e60475ef0103ccf5910585ab8c10d38dab9dde2098ff4a59d0531c0bacb38138fa3c9b74a953f93aca795eb0988b876d69ea6c2ee9f92fee2d51e18c523cf9d210f6f096fb6e7c6d1789ace67ed6a9b5279203945110027447707524e9b65c9c6e408f84731f25f69210094bce122e639cad89b095e7bdc363efebfd5b92b09756af80115e592ddea7386994a354a5ebdedb65ba033f85eb9d57264c0d1eccabc4c7564097b19c743d9c0310f0de1ee193a43e2f3b7661605c1c9f3ce07e83603048a840f1e450a915531cf97d688ff74451c76c87c65483eefd621d30e418a51867cbfa94239d6d0837addf2618e70dcec6f3174837ec8109092f8d5483c95c22ce6cd00c419f3d4100841577432e6a7419e707050c74810ac5aa934f9759ce23312a9eb0370ed4dc3b1fd4f76bc3924120edb275e8f0f0fd5e0a842e33e5927be7856341bff317ed8df8d333592bb2bf69b6362b40498a72499cb0bfbbcb24e526e29c3a3484cb4ac2fa493c69ba1bd5a2e83435c548d5433379b50581aa533701184088a7f4b10afb2b63f28a395b80d3fae9aa117fa0d7e5aa347953d900525cc3480d2a13e99fa64c694d033d0b70432211cd0b493c42db5579065868c420da953d24698451de7b5f42e8d423bbdf7b392f4128fc6ef767fd8c5c597d70b71bfe27761cc2c78c8ed066fbc1beb9170515da65c1362316cfe04b354714f96db59fe96fab2fbd593b5e209ccf9692d5498a6344bed322ad22709c6eef221cd1eeb0e2c1a7dd04eb47e51c90bd110127ff8ffadea7d9d30f5e1d78816d3f20babf033892428d31a65bb84d1aed9ad264c29f4636b834d649d155ba0dff33c916b3377f22ce7500b5d16a8226f527df6fb901287bbadb027a6698ef93e12b8851f6541a1afb1bb0f830d38232541d5c079228a89cdeca665f550d7ea2f07ce4764673667c5750203ec1876a20bc24df13fe1ef7460a44c51285422e7777e97a4d79d1cefc045b063bacc6d596eae75bf60c731dce09756dce7becc315731fe5df16e74df6f4d9119e8292d2da9a7a5a3af7f1bc8d72b382cc78cedf8bbac8c47be76278efff818629583861597666caec8fccbf66af577ed5576ad4b1d495762abf2773dfbaf436de786da52d5215b2b753acd738876f001f18bb68efc77164c4cb98c0bac1ee80017b578b570ae565eea175b1555e77d6b30a4f31d939d9be6749c1f0605762e06ef5aed7a4530e0ae12301c0d591a64b3ec22f58c798e20590c4528b32b00b2a2464cb3ba84a2e53267f9e088cedbe0a495ca77ea2428ae3202656e735fcbf542440d2a302140e70f28cb57dc037ec577d2d28ea9064a811d7445042831a898fd97926039eed681bdb61cf4a3cda300dad2e46ee912c05f42e36ad22fb8e767e1046c6eb0ed8a90f8232bf848fefae903402ee1811a08862f5bb8d1ec16322fa518a5bc9e36fdbce35fcde85f7b368722df2a8887989a4a4bf7e48ac6eef6614b4ceff50b6aaeb1c1c23a22b00cbacad3129353b0a77b8a8a242755d2d1264200e2b1e540b29a6ef67924c6eca5104161805ceb9099dcf98d838a595a3f870b9237e433dc1a784ef7510a027efaea3664a39b8f7710369295c572d8ee79b72b1e2a81b373f8508b727bec02d7b17c37412f5b0f052be53fa4809a2875ae7f00ffbe6bb5b2d2747a848388ac0f898e9e9bbff46ec7e89b0d3c9089ea356a9b9f248a9261a18ca150a1a841e6d6fbd3d30541fb1b9eef20d46ce447b6b5dfcff52019b0b6ba8b504c0155820dbdc876bdf036ec125d83cfe9d0eac642607900b5ba75c06a871a0bbb7f67ce75db1e9e335830dec71982d82a0a64aef3e6400231da878341f512e8dd6bb98a668cf7bc6347c936f3c82b540b8e2b2ecfceb80e6801b0a7a0db7a602aea892f50d0fa1fc64dfb96c11f0c3b58c56c90cb26dc6d1216c25b294dc3ba5e19187aaa20fc8b1f310f25ac1b79ddc7af4460d2e5312a2262789599c5613d3340194289c16cbb9e87a40fdac348d43bb425d4fcdbdef98e75e74c501b9fff4f0359fc0b88e03b395796a3e24ffaa2eeac5406b7892758f16bd8da574a93af1f69d5215e729b37798edcfe8d30ed06ae5433ad76e6f9abfa5f12b8e08e7a508da0558ac490a94bc66232cbf0b63304c6b4f74497f1c94007e0c4d79c71dee094f4f2fad1bc7ea99b6c64b8b21e14e0ce0bf374926ef14707682bdf7633ab94f26694ad4fff97f3f7d8c3ea189f18588da2155b0cbe5e05b2b30b41d698e2135231c563c00f56a404a3a8548d4c1ba3c4c1d25300d57772ccb02e42b7aff1ea5bd0c7e9885ed412632cb0e476a7375606400703a239fce0cef3aaf2a9a8cffd8f566e97834561e752b50889b30591b42886c59c903420acce2d9b980cfd67921a4297c68a6c86e80ed67d564cc8dee5cd3d1c4f8f3e99c31d81e5968f28a7862187821a12098de0f66e9eee33b2d96b335c56668546f1dc4aa9eb2af0090afcfe9c713775be62cece9089ad314859a4307fbda211f598eaf522e174676d0713c4028ef274aded1e6fbb203756a79536ca7d00a9af6aa5a7ef57b52a162f6c5d87b56b0205c9deba4a0ba92a823a8146cfa9b04535b0a41c0067927a671ee8931d9e363d1f0ead80b1677ae2bfb928f18c64c59fba7a9ba234be69db33f0a4e29f795f7974594ef26fa59b584ec3e9c1540961100cd88382a1f09af79762b7cc324cb6f6c4c58c9f6eb9248fa26eeab8c22bcb6bf51a87e8b42e8002ef442f530ed4057fd00bdd389fa7b72a24cc78c86f9b8ebf453121a595f5e3ab175a5369358c2c302e995ae5a042e151ed9018be3a8c74e8481a2f31e12b99e248d2e2d76d8d448845fcd438115ed43d8c7513970b728bb28b65bf8e954c103419e46a879a5c231184b6112a2b1878bb34c28620d8842f4404cd21db6a2efd78d97740f8d869dc20bf87cfe2d518c85b79f188f7c8146b7ada40ef55ba3216dae6f2c21c0ad4f1def1d8a4119b21b9f346d1b9cc4e8a70159273167f92aee27b50c5872d9229084fa85eddcb04d8f1c7c21b5cebe32beda0756b7866bf9f13480ba478b3714323a354da2eab7d2b97e5a048b85723311529bc627ff84e241798c4091c6fe3c8bc721142096b3727a5b29f63793d15efa975c970dcfabdd485aec8531e1213d8b08d88025cde0392d966d168dd75913fb8a32ca5f86c6f52fd8ae2befcb84b1b7db4f08ac009237cc355cd1982738a405f1947da98b904a50d34d25659d148d583c0a1c31d1c6804e507ca3d5dc0e5bc71ec2dfe7c9ad8177948524d7456a79de2c0c92ab8cd4153653e0533e47154ce7220d5e36e57feb6db44bccf18080eff85e366f69e560011d09b2dc6012eef0b47c53ae143f84b9721538978e194efede35d69ebba752275a0a330d57937b4afa0828835aa8fc246f8eac54a0a4c1e34f2ef0e54a77a9150dfa72842acf61a3e667f85a9c9032f7779d3e3f1215375a9c9dfff48699cdcfa3f596592a4dbf0f4f916a1a8c80717243f5b899be4fa0000000000000000000000000000000000000000000000040b12191e272b34",
- "chainId": "0x01",
- "accessList": [
- {
- "address": "0x0000000000000000000000000000000000000101",
- "storageKeys": [
- "0x0000000000000000000000000000000000000000000000000000000000000000",
- "0x00000000000000000000000000000000000000000000000000000000000060a7"
- ]
- }
- ],
- "type": "0x01"
- }
- }
-]
diff --git a/packages/web3-zond-accounts/test/fixtures/json/rpcTx.json b/packages/web3-zond-accounts/test/fixtures/json/rpcTx.json
deleted file mode 100644
index 3ddd5cea..00000000
--- a/packages/web3-zond-accounts/test/fixtures/json/rpcTx.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "accessList": [],
- "blockHash": "0x72c897034f7b99c69f66b3b86da59877c69fdf47367603f7abe1f0676b5e8ebe",
- "blockNumber": "0xec738d",
- "chainId": "0x1",
- "from": "0x7b0f34615564cd976fea815d9691cc102f4058d6",
- "gas": "0x5208",
- "gasPrice": "0x3480a01a5",
- "hash": "0xed1960aa7d0d7b567c946d94331dddb37a1c67f51f30bf51f256ea40db88cfb0",
- "input": "0x",
- "maxFeePerGas": "0x3c2152056",
- "maxPriorityFeePerGas": "0x3b9aca00",
- "nonce": "0x2",
- "r": "0x2c4f99fdc33af2979df594c8683efe57c4012a21a0b438284fb24577a666444f",
- "s": "0x472eefae0813ff0d7235210e2697228aca35e68987038b9529beb27a3cfa8552",
- "to": "0xcad621da75a66c7a8f4ff86d30a2bf981bfc8fdd",
- "transactionIndex": "0x1a",
- "type": "0x2",
- "v": "0x1",
- "value": "0x3c305ddbcbc1f5"
-}
diff --git a/packages/web3-zond-accounts/test/fixtures/json/ttTransactionTestEip155VitaliksTests.json b/packages/web3-zond-accounts/test/fixtures/json/ttTransactionTestEip155VitaliksTests.json
deleted file mode 100644
index dcf77dba..00000000
--- a/packages/web3-zond-accounts/test/fixtures/json/ttTransactionTestEip155VitaliksTests.json
+++ /dev/null
@@ -1,178 +0,0 @@
-[
- {
- "blocknumber": "3500000",
- "hash": "0xe0be81f8d506dbe3a5549e720b51eb79492378d6638087740824f168667e5239",
- "rlp": "0xf864808504a817c800825208943535353535353535353535353535353535353535808025a0044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116da0044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
- "sender": "f0f6f18bca1b28cd68e4357452947e021241e9ce",
- "transaction": {
- "data": "",
- "gasLimit": "0x5208",
- "gasPrice": "0x04a817c800",
- "nonce": "0x",
- "publicKey": "0x044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
- "signature": "0x044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x00"
- }
- },
- {
- "blocknumber": "3500000",
- "hash": "0x50b6e7b58320c885ab7b2ee0d0b5813a697268bd2494a06de792790b13668c08",
- "rlp": "0xf867088504a817c8088302e2489435353535353535353535353535353535353535358202008025a064b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c12a064b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10",
- "sender": "9bddad43f934d313c2b79ca28a432dd2b7281029",
- "transaction": {
- "data": "",
- "gasLimit": "0x02e248",
- "gasPrice": "0x04a817c808",
- "nonce": "0x08",
- "publicKey": "0x64b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c12",
- "signature": "0x64b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x0200"
- }
- },
- {
- "blocknumber": "3500000",
- "hash": "0x24fd18c70146a2b002254810473fa26b744f7899258a1f32924cc73e7a8f4d4f",
- "rlp": "0xf867098504a817c809830334509435353535353535353535353535353535353535358202d98025a052f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afba052f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
- "sender": "3c24d7329e92f84f08556ceb6df1cdb0104ca49f",
- "transaction": {
- "data": "",
- "gasLimit": "0x033450",
- "gasPrice": "0x04a817c809",
- "nonce": "0x09",
- "publicKey": "0x52f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
- "signature": "0x52f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x02d9"
- }
- },
- {
- "blocknumber": "3500000",
- "hash": "0x42973b488dbb3aa237db3d1a3bad18a8d2148af795fb6cdbbbeef5c736df97b9",
- "rlp": "0xf864018504a817c80182a410943535353535353535353535353535353535353535018025a0489efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bcaa0489efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
- "sender": "23ef145a395ea3fa3deb533b8a9e1b4c6c25d112",
- "transaction": {
- "data": "",
- "gasLimit": "0xa410",
- "gasPrice": "0x04a817c801",
- "nonce": "0x01",
- "publicKey": "0x489efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bca",
- "signature": "0x489efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x01"
- }
- },
- {
- "blocknumber": "3500000",
- "hash": "0xe68afed5d359c7e60a0408093da23c57b63e84acb2e368ac7c47630518d6f4d9",
- "rlp": "0xf864028504a817c80282f618943535353535353535353535353535353535353535088025a02d7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5a02d7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5",
- "sender": "2e485e0c23b4c3c542628a5f672eeab0ad4888be",
- "transaction": {
- "data": "",
- "gasLimit": "0xf618",
- "gasPrice": "0x04a817c802",
- "nonce": "0x02",
- "publicKey": "0x2d7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5",
- "signature": "0x2d7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x08"
- }
- },
- {
- "blocknumber": "3500000",
- "hash": "0xbcb6f653e06c276a080e9d68e5a967847a896cf52a6dc81917dc2c57ae0a31ef",
- "rlp": "0xf865038504a817c803830148209435353535353535353535353535353535353535351b8025a02a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4e0a02a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de",
- "sender": "82a88539669a3fd524d669e858935de5e5410cf0",
- "transaction": {
- "data": "",
- "gasLimit": "0x014820",
- "gasPrice": "0x04a817c803",
- "nonce": "0x03",
- "publicKey": "0x2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4e0",
- "signature": "0x2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x1b"
- }
- },
- {
- "blocknumber": "3500000",
- "hash": "0x244e4b57522352c3e9f93ad8ac8a47d1b46c3dcda6da2522caedad009ac9afb7",
- "rlp": "0xf865048504a817c80483019a28943535353535353535353535353535353535353535408025a013600b294191fc92924bb3ce4b969c1e7e2bab8f4c93c3fc6d0a51733df3c063a013600b294191fc92924bb3ce4b969c1e7e2bab8f4c93c3fc6d0a51733df3c060",
- "sender": "f9358f2538fd5ccfeb848b64a96b743fcc930554",
- "transaction": {
- "data": "",
- "gasLimit": "0x019a28",
- "gasPrice": "0x04a817c804",
- "nonce": "0x04",
- "publicKey": "0x13600b294191fc92924bb3ce4b969c1e7e2bab8f4c93c3fc6d0a51733df3c063",
- "signature": "0x13600b294191fc92924bb3ce4b969c1e7e2bab8f4c93c3fc6d0a51733df3c060",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x40"
- }
- },
- {
- "blocknumber": "3500000",
- "hash": "0x581c0b79498b1cf1b8fa4f69bc5f21c0c60371cd08d4682b15c4334aac1cccfd",
- "rlp": "0xf865058504a817c8058301ec309435353535353535353535353535353535353535357d8025a04eebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1a04eebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
- "sender": "a8f7aba377317440bc5b26198a363ad22af1f3a4",
- "transaction": {
- "data": "",
- "gasLimit": "0x01ec30",
- "gasPrice": "0x04a817c805",
- "nonce": "0x05",
- "publicKey": "0x4eebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
- "signature": "0x4eebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x7d"
- }
- },
- {
- "blocknumber": "3500000",
- "hash": "0x581c0b79498b1cf1b8fa4f69bc5f21c0c60371cd08d4682b15c4334aac1cccfd",
- "rlp": "0xf865058504a817c8058301ec309435353535353535353535353535353535353535357d8025a04eebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1a04eebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
- "sender": "a8f7aba377317440bc5b26198a363ad22af1f3a4",
- "transaction": {
- "data": "",
- "gasLimit": "0x01ec30",
- "gasPrice": "0x04a817c805",
- "nonce": "0x05",
- "publicKey": "0x4eebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
- "signature": "0x4eebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x7d"
- }
- },
- {
- "blocknumber": "3500000",
- "hash": "0x678ae2053a840f5fe550a63d724d1c85420d2955a0ccc4f868dd59e27afdf279",
- "rlp": "0xf866068504a817c80683023e3894353535353535353535353535353535353535353581d88025a06455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2fa06455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2d",
- "sender": "f1f571dc362a0e5b2696b8e775f8491d3e50de35",
- "transaction": {
- "data": "",
- "gasLimit": "0x023e38",
- "gasPrice": "0x04a817c806",
- "nonce": "0x06",
- "publicKey": "0x6455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2f",
- "signature": "0x6455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2d",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0xd8"
- }
- },
- {
- "blocknumber": "3500000",
- "hash": "0x81aa03ada1474ff3ca4b86afb8e8c0f8b22791e156e706231a695ef8c51515ab",
- "rlp": "0xf867078504a817c807830290409435353535353535353535353535353535353535358201578025a052f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021a052f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021",
- "sender": "d37922162ab7cea97c97a87551ed02c9a38b7332",
- "transaction": {
- "data": "",
- "gasLimit": "0x029040",
- "gasPrice": "0x04a817c807",
- "nonce": "0x07",
- "publicKey": "0x52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021",
- "signature": "0x52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x0157"
- }
- }
-]
diff --git a/packages/web3-zond-accounts/test/fixtures/json/txs.json b/packages/web3-zond-accounts/test/fixtures/json/txs.json
deleted file mode 100644
index b9cbc01d..00000000
--- a/packages/web3-zond-accounts/test/fixtures/json/txs.json
+++ /dev/null
@@ -1,132 +0,0 @@
-[
- {
- "seed": "43532ff92b9526b54a874219759fe52cd69c42ef8f855ee1ef0a1223a8bd328d773ade9047946de404025d86ca799bee",
- "sendersAddress": "204cf2c9d755d48671c5d06c805b0327ac3a30ef",
- "type": "contract",
- "cost": 680,
- "raw": [
- "0x",
- "0x09184e72a000",
- "0x2710",
- "0x0000000000000000000000000000000000000000",
- "0x",
- "0x7f7465737432000000000000000000000000000000000000000000000000000000600057",
- "0xb8d2144dd60656b39d17a09c729ec305c577e072b611e158d6aa3b54c9c86a7d26d5e5791c50db8d10ccd811c5c3eb6bba62b407ab5abc633c2fdd1bf626557acd60d31b7dc4bf5ee2b8350620474909da56db8e2dcf5560e7ab946b7bc38ec07bf3aa92ece813a5fe280bfe6b4b4a7c2a4869a760736839b704580f234d828a05c66e9c5f50007f53d7e475dfee54c8ee8b7c8e9a97dad3bdae9a15b2544a49227ea5cc0aa3482610122a7a9ac6b3fd5d330af00c128f108a531e24f5cc53675589147dbe50b24006461125536c824d4d642ab9b8b0c3521026fc04ec7ef270413baf31bc5cc4909e461a871c146b9106692a4b31167dd3b36c354e5a229da3cc43cd34b8965d00877895322d5596d46a1bb9c167767930b7d1302298d94dac11811f20b1e0f606ada03cc21880d662bab8ba54848d16770017a18cd5922cbc57b08e43152d50cf4480b0fe55fe7e872ec72d966a758f9e7fbf69d8239ccec415086692c300b34ca1cadc479298bd07f22b4385c9f78229553936a6a606112ac7db7726e0841f061a907e40faf8bf3b606d9776369f5da2d652f5d6e9337fb3496030eba32a608db9ca9eec3d1206488a931509da69a4ba6ffc90d2908eb7cda8f1fdffd4da93caad8f2a4b5a30c5182c17ee387a9d508486fe5439eb55e5ae3aedccf35bbd2f116bfdb63d75190882dcbee3cf391981ed6c0576cfa4af6fbe457651c8d6c7719aeeba83a1b72b354796ce2f1a7eedbcbb71ce731f730f9b8a9e57466f2c75cfaa089184744e623198bf750b183b3d513555156bd8fb30bacc54075b02efa54d669028277b074f7b40d1781756c8b976326269bcba2ed9e7ab2147071d68fb6021e981fde283efb626492e4ddc09db2d31c7b1c15417fca5a2443f206a6caa4577dc17a7bcfe96afb4845f68ca1654d9f65e31e68d5b54bcdbf8904731dcd8c59381297506ecde8d6fdf34ffff69bc15d57fe42126556b433035536191d80e901654cf4a77fde91c191b0c5908239eb8d71b92f70e5fb4ed4b2a71e78166642cd684def590913447242a1b2a54c3cded619211b5ae9d2716d32a913aea3061fe7063e673860bd153f6796c7fca908defbc631a2e2313628437b1b02ad0532f31bb2fbe23fb9667e59ad9715f92fb72823b1efdaf0aaf017dc32bac0a3b7745e4a16b4d2d552ef071f76f0fbb078e88f45226649e166a80c02006965b603cdbbcb0c14edd2dc2ff76112d41f74d16886390512a53a5ffb50fb09da684498076fe2bb8b9092f1b9bb20c6d1def4eb0cbb528e0ba3cb79053736ca9ef6af221d6696de78344a0cfa23c1228aa20babcb8126fb1d8ecf7baadc43c967c675dbe91f467550de4cdb2bf40c773cc35c05b7fc2b03925c9197ab9e88e145672aa6a84970b02bb576f9c0c4fedb2f79d892e3fa5a19811f3dcf097947296e445c2f6cfd166735493021965574666b332785d1bb46387c22fe07a8f833ad331c709624cec58f98efafa16ec03d684569a8c60ced0c5041b251c95c6bcc4a3e89970d7cb1d394547166e3ab9a336d64ab5a53eb6b05492ba265c529eb274dc8616624e51298204dc6e2e3409a285ed9459b9651fdd234e2b469a225f95e46cc6a73148dcf96ebf2b97eac451a2728590607376f71fd73317f97bd6c584382acae97a3db5f23666ca4e602cbdf78f7b6f0be57aacdf322b27fcadb0100f36a1a70da10d1753fbc967ced3ec91b509606c02b218ba6519bb16cd2c7a081ca7490282abe2a2107f4ae7562c879624d85dd16f6ad7143966c7e57f16f1040abd73f0a99f99f6794ba5aeaeec9a7c91d7e64f281690ae53131e19f6de1f97ccc1cefc7135c99dc10d63190fdfdb44ac6485c50826d32bcc7af57456fa1dd12b940a52f86aa95b464d19eac4ee8d251862f5077092798e4cf0bf20ecc1ca9da8c3dec56bf619a666ead0beae8b350b9291d325ea55c842bfbae7b5f5a40fb3438f2c905ba1c37378087c2c5a83ee5469ea849bb06a952af35ca9a98d7800c94bc79e9c0004e214fa29cd28b3d8206c9cee245bc2a89c1c767088a28b0c93feb6fdfe2be7b3ab5c101472c52b86f9261117eb16cc90a65ae0f73bf330818ed329f351d847a41e1bca8454ab648106146d95cc3265e3a8a9a062cb55ad3e85892c00f15a9c606bcbbecafc7447fb905104f7ee70ff4eccb91f30142b23b63193693bc19f0a78245d036da7f1632016c0cc7d2d7fe6791a9eb00b428538c084c76264e241e0642154ed6972696694cd1db1d2889c858dec9ab4ee798d6f1cdd864736631da8b0dd74796261351945e4b1e0341591166d69e8e6cda615ceea91e481f049b1b0af16d2fee516421c346a9466c8406d34a658cd5f5768c04bb17620d32d8185060d6b8ec42dc7e7b442a3cf128ae085b4893e6f85712884f728c3cb6a765efcbca6dd0e9d046bc4680ef5c4c3c4ed4ed6d3da2c1ac5d40d91a0fee01362c6f2783de82493f1c59ffc15bdaef88cc2c9b1d45e4e098e09cde74361a0f115aeb4c840f39f064c101a0eb1202472c5ac09d6979da1e9b9d89305c0177997cd5589eff9ef8b53468adb877d0ba07c2da7b8c6874bee3320b26fd3221df3fc9e04412e96119d351ba17244646dcd37da0431cfce4e09c132334459597200b15a23794c4f02d37c6231cf4e291609c7fb1e0f77e49503d10055ee83a22a25008df24fdaadb379a9303ccd4dbf2506fc4bf7f8499840fb0919da8ddc2205cb560bf16741f3e3e62b94b814d6ecb8bfc3f1779a8d81e04b4d1224b0679cfca11e0982134b135d28f968cdb7f91b8516b40c6e277be194dba2d4485511e180cbd58df358a2a8a3056018bccc643243b16a4e9e42d5fd642b9e355e271c270a91abf873d5052f8022f4bd5fa40d23dd7ab5daf4014424e059dfc0ef09361a5600dd47cd6fa4d8432e6008a401c3c7412e743536f78a32a36ebd82a666e0bae1ce543206a9013d9da28f8618430238ae9cc2bc197ab96657e4f46e0b289daf3aa0bd416ea2c09dddb96e39a53ee8ec6bf8b257f9ba5b19f7ccb7ae2be8867f360ebbf3c42b5e7d9ffbbc8a7c1fba05f598b62ec7e6306032c609285aa4305e2024614f8d40942dde1fd556cde3cd5c8d5cbe3448a6fb16af5032458772d50ea8d501616260922fd4f8738b494315c0f8b02fa8816491aae2de531f5c647758f4d6f4a8d4a15ca08a29479454ead7d7b7153138c58a48c04fecb7a912bf1738a7fc8a6bc9f709bacd711344c454389685677ada830be0fb04fdb064a76b458336071e4fa6173a4a758c18bdd31326fe255428f36764a4903bc4bedd3e781e45e9689a2e0a7d57c49584f40d52b0f2ce3aed0310d9ae9b5310c1a1d1ce840cd7d49c04084b550f284f3471eaf2ee7ae597af209f5ada3692eb07ce43f54c4afd260d268dfb79dcb8b971a8d250cb0c6d70417fcaac00808d1605ef3716a3dcdbefe92e420ff81475f4d5dc443a2bab10854d91f7bbb8c066e373effc6f7230f85c162109af0f808c3038973eff63bc99afa73a6a635d854a052c5b64a65cff744bceb1c212274af06a2c009f81f4b670a23447a53877848b1d303e7c7159c593b7a7bdcd5c11d90e77b35e3f61a3f76db203eb61eabd0d6c471c3d396c98db00da3135e8",
- "0x6fde8f78a945275f699c4a918b2728ac1cdc403b0b64f12745fe70ec4bed7232e5eb2e2bd2aa864358699cf4669e882fb1c7c2299faabf84892bb08f2a6b0eb3e6c16c554922a030ba557c6693643a2a5636db152bd3301fcdda7e1abd195feb8e00a7f61b28942b14dff0a7f8b3e1453d333abb4a69ab27470128ead6f7adbf4d527ec2c0336f81756fe8db2ed830ce9af9a9a3df6f81feff7a8d27d23e9e07011208d87c3742f0491a5956ffe6962cb2d3f7abdf0511c183012cfc2472c03da5cb48465f365a82bce8da70cea57854f3084416f5ef473d913d634b26c66f2da4af342bf2cacafe9abec7e2806e4b33add7e01e3d1fef3663142984b9e0806d851e031f27711367c8e3fac5506590b2dd1c870b23dee864c64b2f389212daf873d425ddd21e11b3fd403fd6dadef4c812a69609cd96ed8503e954b48a60edd89ab3460df491ab15ffb77001c36c54f349373914fecd31cf31d0a7b91f12391527fa95487f77beb02ed001cc18d6d776f4f9679ba20ae13f2fa5c71d1523157dabbe650d8f840c86eacb9544fea94f33b56f7056c0148ffc0a01eb3c10040707243668d289b088e471b44a693136052db27c46d6d602cc78f441d7afea896cdf463c1a62899ab608640c929084317a071875445eaae748b38e510bcb3ca51d072a198a33d44e6bf16e7512f8b6b438cf0a2134480a0c8d5342c9d5a0d40b4138bd7dcd0575232b6c385238c8aafc471f67a7c9d2c56755de5149da330e6acb60f75dc15f66e06cda98bba17d2705304c26f2d6d659a6cce7b95e33632c067fc08621b7fbf9ab845bd3da5f1c4b589430d974b51d4ec95c016c2da2f39cc5936419be0bd17e2ff44100a37bc2d7fea3fa1be6927ac27cc338212c32698f466cd4421452218c9c907fe3856913b440d2ff36b09cd57c913bd6286d530694d33652d75cabda3d8e9fe90bd906dd5e8b8e2dd4d5db68f32557f9f84f3944ebc043fc7c656d8ebfccfdbe40661b4a3ec55a4c80b7fdad518d319e2ddc5b171caff4de3a6741fdaa0d3e9ea0e719b0498c58760b6692ffae4a2f79c2782c1fc7064d9dbd10e018a971cc8f2df78aa956e8233ee452d3c5aaf6b44f09a95523dc0543e39060c5c6e06111b07f0174c23984220264605a899df0abb2e9aea53f7c166ceebc099d328886d613a1b556c2a74155b0e32b1c4e69fbe68dba27969bc6ac388778f158097368f0f5c530906f8308a6c7455ad7c2e53a47681adb884344a84131341000aa585ece2cb557edb7f1f4d2b15932476104c9e03146b5e2f895573ed315f74dfc4bf60277aba362038a9b2dff125ebac4ff0ec8635eef6e325799fc4d50412e53cff1031e5ea03101ef0f76595460c0c030d73a961c2ed6f8a18c6c5e92c8ed7b0a187cc4d71792a9b56e40fb82ef0aef0345f4619e7ed59aee3c666d0e38bab406f9f422935bedef43b93c4530763467ecafe3de39b518a040aa589e43aad0ff70e7596362272906fc4892fcc6f257f36162bb1d4459d59ce6e137de2483070f4af3e8a4a0647194799e35027f1ffcd02698beb99a5c380150e077a8943b87a6f6e9dd1f71ce3596a8efd663c3f14f56294809d5ae846af4504eef05cfe28af3b7f29f8d0b2511982901af2131a8607234c208a59eabd49cc3dd3aa9a1f3e7ad7d39635381ed412a27275dff5d88c7aea8c97b5f39a30be849b0fda7ad8bb1722c0892e4b60df1290e1144563b2d6aff7970e3c5956af53f0a2a01139d78dd37eec647a9217d68bd49c30f14974e7066b9192c340db7b75079f046bc6ca574e12a94c1089c8a10b74bf21e79fecb39a52556b4d7cd735674d25c3481283e9f11b057ba82ed7cdabdf57e0fb68f7d7602851340295c6b8eb2cba26d1791398bbe67f9a5403b056825bdf60bbacdaffee75f1fe88a63127b685f01ce95431cbad1a9008832b430a75c4c9a19a22a1bdf53d489bade4f769efc8ba54470526186581ee10124853620f8f965c351699d8d17d66418f93938def8f6d798af73dc5bc68811aac05904d1f20a89be861ea0b6caf17d1b3db6ca9228f67ec6ea5f277afc5b770979148c9bc075a8552b5446cf61cc5066b99f3354818cf129e3c565b15de3d9612300db16eed2fea604f2ca3458697a9240464ca3132baf91d851508d8e752a09303da08d034f38012b394b9d4e4ac7f81942ecfe565edb61baa20841623afceab8a11a087db5514affd89fbf4c52ae82f92973b749fc202f394cb5328fa3bcc16bc0febad85a9d563bbd9c847de779b07f18ef28fe97bad69d124aab7fd8388adcdbf132489a7dccfd38940949dec5f9837f3a8e52edaf5f89e37cec63bd29bf72edf8ddbf5033857ff39ed95d956cbd4751d1f182010dfeda8e57aebf51655e0e8edf4b63f21209308963d0c32e6fdd1e2363fa963cfb6f1b64c166885bbe3ff93a7623147876f3cd8ba39af6b9ee4eb3bee7160d4d02949fe8682d2daf9300515204ad635aebdd3ae41118d7d7bc2b3b58c586e10381fe40f23ae269fc2754a8656a66413e1abcc7e1890c5263d4b56bfa92eca29594dfc14d9c7b26647db56b7eaf10d2cbf104249462aafc4c03598b46d5a2f4cf47a0bd30e8a956bacc09f3841efd7cba8a401f3c17d3f0fbfc1700409f05b6aa564964c5b4947d3a6f08ede73863b6bc504fcb9c397449e78bccd0a345056241f31162f4054a6cff6dfcb21cfe8f75c1396e6a90ccc149263a2abc4140961b8eac55db58ed5cf4af5b558ea9e654cd98901259d7f3631de0e5cce19deec3f219343063a1519c5deda3ea665a635c8307fa566218a30de6e4d1e9d99fa14a853ca5b60a012d600bf4a74976bae8ef619f4be59d8c48448dda74f6c892688e4a75b2fe0c1765205fa4f9f85b03f59ca5c5a3fed6096c693d3610bab3ca480a531f267bf44caaa53193e7c74cda4e716206cc2b8491cfe8c770b2c3092849bcb30374611933a1497c30c7ebb2a52e326b4731d80cc56315cd44354bbcbcb5e617e459c2ac09e3166b0c1e6514d20a7906938b78367b7cfde98ea6dde6fdb628ee7cd003a85917f6f1816cba4bdb215c88e15d7d25bd2cea43f6fbcccbe9ec6112652eaca1af36d191b0c9bc75a09259961aecc50127731c90d19a4e3129b4e32db2dc15e406a214c7be4ce3288cccbed72adca8eb5d6a7c0bac4434b960706fec589890db7b3ca4480b1047649ce6b24fc338d2a4ae79e5917d891ffb47e1a08e25d8dee91d13ace0a366ffa8f7a6c679bf135fa096fae78db8d89448a82b95eee816b6147e96089fd3b01032c865d6f9f630e5c9fa447b85ad89819d5cad720489b2182fecff8702cfcd94b4463e63d52556eeff7c7d13d29394cf81206455fb4da01394b78558dd29946147d0de3fd4da3b753afe86a1ed9bbed66b88533fecdabd4ecefabdcf4732f095fca4ff7a93416a8984eade49b6acba8f272ae81e88fb4b14f50b42ad6d4894e75df2da4b0b28a117ba70d4e76db6a0eb9392da0f0e2322429e4482de546028bb49533317ab21619ec28a9bdacf8271b8c23f9e6cf46900e0313b1ecfe5da52fe85fecc1135330aa42618ee2b47341d413b545d431fdf46f6075a701484d015968261fa54c9ae13057c86e55f16e5a73bb1dc11dfe82fee69c5073aa28182d1234f76e078a9170efced509f2e55d97290f613dddf5262508abb49ce91fd8b55ab009e74f0dc183c7e0f0bf1372a3472cb136720da9fdf373e3de8bacb96076a11acada7bfefd1b50a7d2d626c054d4c32df717338ab742f8faf3f3908d0006362809c5dd38e68f9aca450dd5766ad071747790952f6e45dc23067b85b786494b6bc317b7a9ef0c051a46b8058bac8340fa27c2e2941391b191468eacf34f7d8dec44199cf19b80887c64d0740261ab75b4691b917a5dae05759907ca65e33ab3973dad5962a9d7f115d9e4d5f99c35256b85d5844257a85d2ba6f549773e506094fbc8a6ca384db821fc073201e120b777ce74d7d899a931ebec8398112097e2e45d11b52101a6204a71f27c7d816ab68e48c15e5f072bdae4aa7aa4f9de403ff87ea5e58444fc6f6ac129643624ee4ae7824d56683290e17210e7955e8d32c14b1a995476f408c183c34a0a7691d0b6d655c5460630a7c7141989c07fa2b032303ff9d2ce3c2ea76d6d345c787b9e3b629b9500fbc60baf3f82f5eeccedb61be2674a7906a81df98279f1e4ca56038e210986188f7bf52190363e27749e234244acc17d9e831bc36c873667ae5108c4db82ebf4172653723beafb889925201dbd99ad9404de0a7234c28d7db724e507590c1bfdc435d99effab3a0646661ca9d38a51179ac683e8edd79c77ab2ac1ce7e2563a41d6075f05f81fd069ce545a80feeb8d2f540427790aaeba518ee0584464fb00c1bc6041c07cb7118cb28cb1ee4158f41e83a87932e45021792dba161743879cfc62f6262538a2dec123fce80c3c186104c70b0b1846b9404d0c0afde668d0f07191af260622c51d1f062a8174042be97c8a5f237f8d35266fbe45e0aae56ce717da766bb15c9e2fe7d034134e2491ec7cad312b40c1e68ff8c2ce6f639408d6d8a92f3f876e679230ff334db9f933bb99db7337c3734966c64f2449ae54f4c626789130cee05a3584c53a6ec6dd1b4baeadcb59903210f604004b02a5ce9d844946de83eb095e88edddcc387c442a852ec376e5e34e6c36f6976a022ce483c6bb8e376882fd533a0d0cdf19ad8f0c432726019f92f66852a506fecb5b9a4726a343ec13a70a2bae41d92a8365b10f9e6a696d781c2f6514784340030fb3f5dce9f186564f19b352903a7463706f7487c87344867a6ccde73a91ecbc3748ea3ca6c9054a068ca100284acb7bd56be840ff81416405a671fb80cb95e8e258f57beda98a19fea7107666dc0e2efe0c52df1249c81c02a268ef122f53ec7eb5803c3bd762ae7417aab384435ae271e490d1e83de33457f9cdca6087dbdf0f43d4e2f93c54a6567c5e3771280444b769cda09a3c008b013a149c2ae0005dd6351a59c7384e4b38651ae6449b011a48813c8ea38868eb17bf4aa1b29049a073e212d72ce8161ebba748d5d4dfc57df4623f38b1d479d1625ef868c44d55dc7d0afbba1e17c8ac9f5446a4e2400d2cc1620ddfdbbcf056113d3b8a2a7990a9cc40943f35a5d89d1c250a0b2af6eac186832522571e223e57871d9972b59cc1f754780b541b0cbd778ad9abb7169f035fe958f352dc2ae2052695adc775c3cf42f31d3abb1be3d1c2b8f9e57c37540c9b924821f72c03fd47b5a7818caa4df13232cecbba992fa667ff694e511620669ef49696621f538af101850b8e89a8ec63db1176a732e4809099dfb95389c335db09913bb0a937e850a48d4fd43247079a8d6252b3e696e70d23b5d5762ce821633e77893051af46b5d28bd4ee18a8fb0441b9e6bfae5c9d651acdc4aba51fc77f895b663a95e08dbe372c0543604c7832add9427eab9543e21edb84fdbb5b85d0c8026b1945d1c4164c4f1df2479db6ab61f686df2e28be6cb612e8a9f5d20e18e20e93d7dcb6242c7244ec8d2c2c1e17999972dabcc131142f44161d603e47b0a3dfeb3ef6284417d60f40db559cbd1b23384622092c4784b8edeba87429b44aaaa707ef01574ab5cfc514df7662fedf921e01bd7458de96c364d970852a23a3c93d3d9eb923822c45d2dc544df77d4a084b1c59bc79b1ebec1d6ab14d4f636cdd9439d7bb607be0e59a7a74b51aa68fef63b84eb70ee3bf179a46a1e61eb88e7dfd078e9836afdcebd5a9a1a402930ed66b1b031ec02861f68de287be187e32c7b862f67e014276b967081b40b16c95f940b2a7c5b053d9875320b81e20910a68d45ade6f986e77e5e4c97642862e311feb1d5a1e5b1e3aab01c4e2b4192a54b8bb9257c226e814fdc8dc74a9af884f9b84b1d45b23ae031d160aecad0ef2f5a8b6bcf3b31c52d70c155c091d419484f6ec26ed0c7e91051e05051e02eb0895e9273db1b368a6117abf0c1e0c8e12c8da020d43e4e254aeae2b86d926a806d3070b00e82c608d00c09fdb19b6f5d015461ff7bcc9c9c4624e776554032b0782d938f302501a91ea33576c4215d664d9494004f16f031f9cab0b640b3becbec9fc11bfcfece9605bdbf5f2a2e5c0b7e400703fd97fc1c3210f0412d865b38cf269833fbb67e1d8c0426b797cd61462b52f10e37ca55b313e680bb7223262af3115f677e30cd2e7b693a55c4ccd500e9fcdecf13bb67c2a4e201a3381c5a9332aba0c2886c2f01db96ad7c3379b1db4d45e8a01244b407130102f3564c5d2ab57526e070a571e7816cd869b8b518bfbf9b2a8d96d8bc62b26dc2232649ec0dc183a679ab4c0d6e643506b8fe337434a5a6673a2c2cbe30b1217296cb5cb4495ad07262d436795adc6e27f878dafd700000000000000000000000000000000000000000000060e131d24273035"
- ],
- "data": {
- "nonce": "0x",
- "gasPrice": "0x09184e72a000",
- "gasLimit": "0x2710",
- "to": "0x0000000000000000000000000000000000000000",
- "value": "0x",
- "data": "0x7f7465737432000000000000000000000000000000000000000000000000000000600057",
- "publicKey": "0xb8d2144dd60656b39d17a09c729ec305c577e072b611e158d6aa3b54c9c86a7d26d5e5791c50db8d10ccd811c5c3eb6bba62b407ab5abc633c2fdd1bf626557acd60d31b7dc4bf5ee2b8350620474909da56db8e2dcf5560e7ab946b7bc38ec07bf3aa92ece813a5fe280bfe6b4b4a7c2a4869a760736839b704580f234d828a05c66e9c5f50007f53d7e475dfee54c8ee8b7c8e9a97dad3bdae9a15b2544a49227ea5cc0aa3482610122a7a9ac6b3fd5d330af00c128f108a531e24f5cc53675589147dbe50b24006461125536c824d4d642ab9b8b0c3521026fc04ec7ef270413baf31bc5cc4909e461a871c146b9106692a4b31167dd3b36c354e5a229da3cc43cd34b8965d00877895322d5596d46a1bb9c167767930b7d1302298d94dac11811f20b1e0f606ada03cc21880d662bab8ba54848d16770017a18cd5922cbc57b08e43152d50cf4480b0fe55fe7e872ec72d966a758f9e7fbf69d8239ccec415086692c300b34ca1cadc479298bd07f22b4385c9f78229553936a6a606112ac7db7726e0841f061a907e40faf8bf3b606d9776369f5da2d652f5d6e9337fb3496030eba32a608db9ca9eec3d1206488a931509da69a4ba6ffc90d2908eb7cda8f1fdffd4da93caad8f2a4b5a30c5182c17ee387a9d508486fe5439eb55e5ae3aedccf35bbd2f116bfdb63d75190882dcbee3cf391981ed6c0576cfa4af6fbe457651c8d6c7719aeeba83a1b72b354796ce2f1a7eedbcbb71ce731f730f9b8a9e57466f2c75cfaa089184744e623198bf750b183b3d513555156bd8fb30bacc54075b02efa54d669028277b074f7b40d1781756c8b976326269bcba2ed9e7ab2147071d68fb6021e981fde283efb626492e4ddc09db2d31c7b1c15417fca5a2443f206a6caa4577dc17a7bcfe96afb4845f68ca1654d9f65e31e68d5b54bcdbf8904731dcd8c59381297506ecde8d6fdf34ffff69bc15d57fe42126556b433035536191d80e901654cf4a77fde91c191b0c5908239eb8d71b92f70e5fb4ed4b2a71e78166642cd684def590913447242a1b2a54c3cded619211b5ae9d2716d32a913aea3061fe7063e673860bd153f6796c7fca908defbc631a2e2313628437b1b02ad0532f31bb2fbe23fb9667e59ad9715f92fb72823b1efdaf0aaf017dc32bac0a3b7745e4a16b4d2d552ef071f76f0fbb078e88f45226649e166a80c02006965b603cdbbcb0c14edd2dc2ff76112d41f74d16886390512a53a5ffb50fb09da684498076fe2bb8b9092f1b9bb20c6d1def4eb0cbb528e0ba3cb79053736ca9ef6af221d6696de78344a0cfa23c1228aa20babcb8126fb1d8ecf7baadc43c967c675dbe91f467550de4cdb2bf40c773cc35c05b7fc2b03925c9197ab9e88e145672aa6a84970b02bb576f9c0c4fedb2f79d892e3fa5a19811f3dcf097947296e445c2f6cfd166735493021965574666b332785d1bb46387c22fe07a8f833ad331c709624cec58f98efafa16ec03d684569a8c60ced0c5041b251c95c6bcc4a3e89970d7cb1d394547166e3ab9a336d64ab5a53eb6b05492ba265c529eb274dc8616624e51298204dc6e2e3409a285ed9459b9651fdd234e2b469a225f95e46cc6a73148dcf96ebf2b97eac451a2728590607376f71fd73317f97bd6c584382acae97a3db5f23666ca4e602cbdf78f7b6f0be57aacdf322b27fcadb0100f36a1a70da10d1753fbc967ced3ec91b509606c02b218ba6519bb16cd2c7a081ca7490282abe2a2107f4ae7562c879624d85dd16f6ad7143966c7e57f16f1040abd73f0a99f99f6794ba5aeaeec9a7c91d7e64f281690ae53131e19f6de1f97ccc1cefc7135c99dc10d63190fdfdb44ac6485c50826d32bcc7af57456fa1dd12b940a52f86aa95b464d19eac4ee8d251862f5077092798e4cf0bf20ecc1ca9da8c3dec56bf619a666ead0beae8b350b9291d325ea55c842bfbae7b5f5a40fb3438f2c905ba1c37378087c2c5a83ee5469ea849bb06a952af35ca9a98d7800c94bc79e9c0004e214fa29cd28b3d8206c9cee245bc2a89c1c767088a28b0c93feb6fdfe2be7b3ab5c101472c52b86f9261117eb16cc90a65ae0f73bf330818ed329f351d847a41e1bca8454ab648106146d95cc3265e3a8a9a062cb55ad3e85892c00f15a9c606bcbbecafc7447fb905104f7ee70ff4eccb91f30142b23b63193693bc19f0a78245d036da7f1632016c0cc7d2d7fe6791a9eb00b428538c084c76264e241e0642154ed6972696694cd1db1d2889c858dec9ab4ee798d6f1cdd864736631da8b0dd74796261351945e4b1e0341591166d69e8e6cda615ceea91e481f049b1b0af16d2fee516421c346a9466c8406d34a658cd5f5768c04bb17620d32d8185060d6b8ec42dc7e7b442a3cf128ae085b4893e6f85712884f728c3cb6a765efcbca6dd0e9d046bc4680ef5c4c3c4ed4ed6d3da2c1ac5d40d91a0fee01362c6f2783de82493f1c59ffc15bdaef88cc2c9b1d45e4e098e09cde74361a0f115aeb4c840f39f064c101a0eb1202472c5ac09d6979da1e9b9d89305c0177997cd5589eff9ef8b53468adb877d0ba07c2da7b8c6874bee3320b26fd3221df3fc9e04412e96119d351ba17244646dcd37da0431cfce4e09c132334459597200b15a23794c4f02d37c6231cf4e291609c7fb1e0f77e49503d10055ee83a22a25008df24fdaadb379a9303ccd4dbf2506fc4bf7f8499840fb0919da8ddc2205cb560bf16741f3e3e62b94b814d6ecb8bfc3f1779a8d81e04b4d1224b0679cfca11e0982134b135d28f968cdb7f91b8516b40c6e277be194dba2d4485511e180cbd58df358a2a8a3056018bccc643243b16a4e9e42d5fd642b9e355e271c270a91abf873d5052f8022f4bd5fa40d23dd7ab5daf4014424e059dfc0ef09361a5600dd47cd6fa4d8432e6008a401c3c7412e743536f78a32a36ebd82a666e0bae1ce543206a9013d9da28f8618430238ae9cc2bc197ab96657e4f46e0b289daf3aa0bd416ea2c09dddb96e39a53ee8ec6bf8b257f9ba5b19f7ccb7ae2be8867f360ebbf3c42b5e7d9ffbbc8a7c1fba05f598b62ec7e6306032c609285aa4305e2024614f8d40942dde1fd556cde3cd5c8d5cbe3448a6fb16af5032458772d50ea8d501616260922fd4f8738b494315c0f8b02fa8816491aae2de531f5c647758f4d6f4a8d4a15ca08a29479454ead7d7b7153138c58a48c04fecb7a912bf1738a7fc8a6bc9f709bacd711344c454389685677ada830be0fb04fdb064a76b458336071e4fa6173a4a758c18bdd31326fe255428f36764a4903bc4bedd3e781e45e9689a2e0a7d57c49584f40d52b0f2ce3aed0310d9ae9b5310c1a1d1ce840cd7d49c04084b550f284f3471eaf2ee7ae597af209f5ada3692eb07ce43f54c4afd260d268dfb79dcb8b971a8d250cb0c6d70417fcaac00808d1605ef3716a3dcdbefe92e420ff81475f4d5dc443a2bab10854d91f7bbb8c066e373effc6f7230f85c162109af0f808c3038973eff63bc99afa73a6a635d854a052c5b64a65cff744bceb1c212274af06a2c009f81f4b670a23447a53877848b1d303e7c7159c593b7a7bdcd5c11d90e77b35e3f61a3f76db203eb61eabd0d6c471c3d396c98db00da3135e8",
- "signature": "0x6fde8f78a945275f699c4a918b2728ac1cdc403b0b64f12745fe70ec4bed7232e5eb2e2bd2aa864358699cf4669e882fb1c7c2299faabf84892bb08f2a6b0eb3e6c16c554922a030ba557c6693643a2a5636db152bd3301fcdda7e1abd195feb8e00a7f61b28942b14dff0a7f8b3e1453d333abb4a69ab27470128ead6f7adbf4d527ec2c0336f81756fe8db2ed830ce9af9a9a3df6f81feff7a8d27d23e9e07011208d87c3742f0491a5956ffe6962cb2d3f7abdf0511c183012cfc2472c03da5cb48465f365a82bce8da70cea57854f3084416f5ef473d913d634b26c66f2da4af342bf2cacafe9abec7e2806e4b33add7e01e3d1fef3663142984b9e0806d851e031f27711367c8e3fac5506590b2dd1c870b23dee864c64b2f389212daf873d425ddd21e11b3fd403fd6dadef4c812a69609cd96ed8503e954b48a60edd89ab3460df491ab15ffb77001c36c54f349373914fecd31cf31d0a7b91f12391527fa95487f77beb02ed001cc18d6d776f4f9679ba20ae13f2fa5c71d1523157dabbe650d8f840c86eacb9544fea94f33b56f7056c0148ffc0a01eb3c10040707243668d289b088e471b44a693136052db27c46d6d602cc78f441d7afea896cdf463c1a62899ab608640c929084317a071875445eaae748b38e510bcb3ca51d072a198a33d44e6bf16e7512f8b6b438cf0a2134480a0c8d5342c9d5a0d40b4138bd7dcd0575232b6c385238c8aafc471f67a7c9d2c56755de5149da330e6acb60f75dc15f66e06cda98bba17d2705304c26f2d6d659a6cce7b95e33632c067fc08621b7fbf9ab845bd3da5f1c4b589430d974b51d4ec95c016c2da2f39cc5936419be0bd17e2ff44100a37bc2d7fea3fa1be6927ac27cc338212c32698f466cd4421452218c9c907fe3856913b440d2ff36b09cd57c913bd6286d530694d33652d75cabda3d8e9fe90bd906dd5e8b8e2dd4d5db68f32557f9f84f3944ebc043fc7c656d8ebfccfdbe40661b4a3ec55a4c80b7fdad518d319e2ddc5b171caff4de3a6741fdaa0d3e9ea0e719b0498c58760b6692ffae4a2f79c2782c1fc7064d9dbd10e018a971cc8f2df78aa956e8233ee452d3c5aaf6b44f09a95523dc0543e39060c5c6e06111b07f0174c23984220264605a899df0abb2e9aea53f7c166ceebc099d328886d613a1b556c2a74155b0e32b1c4e69fbe68dba27969bc6ac388778f158097368f0f5c530906f8308a6c7455ad7c2e53a47681adb884344a84131341000aa585ece2cb557edb7f1f4d2b15932476104c9e03146b5e2f895573ed315f74dfc4bf60277aba362038a9b2dff125ebac4ff0ec8635eef6e325799fc4d50412e53cff1031e5ea03101ef0f76595460c0c030d73a961c2ed6f8a18c6c5e92c8ed7b0a187cc4d71792a9b56e40fb82ef0aef0345f4619e7ed59aee3c666d0e38bab406f9f422935bedef43b93c4530763467ecafe3de39b518a040aa589e43aad0ff70e7596362272906fc4892fcc6f257f36162bb1d4459d59ce6e137de2483070f4af3e8a4a0647194799e35027f1ffcd02698beb99a5c380150e077a8943b87a6f6e9dd1f71ce3596a8efd663c3f14f56294809d5ae846af4504eef05cfe28af3b7f29f8d0b2511982901af2131a8607234c208a59eabd49cc3dd3aa9a1f3e7ad7d39635381ed412a27275dff5d88c7aea8c97b5f39a30be849b0fda7ad8bb1722c0892e4b60df1290e1144563b2d6aff7970e3c5956af53f0a2a01139d78dd37eec647a9217d68bd49c30f14974e7066b9192c340db7b75079f046bc6ca574e12a94c1089c8a10b74bf21e79fecb39a52556b4d7cd735674d25c3481283e9f11b057ba82ed7cdabdf57e0fb68f7d7602851340295c6b8eb2cba26d1791398bbe67f9a5403b056825bdf60bbacdaffee75f1fe88a63127b685f01ce95431cbad1a9008832b430a75c4c9a19a22a1bdf53d489bade4f769efc8ba54470526186581ee10124853620f8f965c351699d8d17d66418f93938def8f6d798af73dc5bc68811aac05904d1f20a89be861ea0b6caf17d1b3db6ca9228f67ec6ea5f277afc5b770979148c9bc075a8552b5446cf61cc5066b99f3354818cf129e3c565b15de3d9612300db16eed2fea604f2ca3458697a9240464ca3132baf91d851508d8e752a09303da08d034f38012b394b9d4e4ac7f81942ecfe565edb61baa20841623afceab8a11a087db5514affd89fbf4c52ae82f92973b749fc202f394cb5328fa3bcc16bc0febad85a9d563bbd9c847de779b07f18ef28fe97bad69d124aab7fd8388adcdbf132489a7dccfd38940949dec5f9837f3a8e52edaf5f89e37cec63bd29bf72edf8ddbf5033857ff39ed95d956cbd4751d1f182010dfeda8e57aebf51655e0e8edf4b63f21209308963d0c32e6fdd1e2363fa963cfb6f1b64c166885bbe3ff93a7623147876f3cd8ba39af6b9ee4eb3bee7160d4d02949fe8682d2daf9300515204ad635aebdd3ae41118d7d7bc2b3b58c586e10381fe40f23ae269fc2754a8656a66413e1abcc7e1890c5263d4b56bfa92eca29594dfc14d9c7b26647db56b7eaf10d2cbf104249462aafc4c03598b46d5a2f4cf47a0bd30e8a956bacc09f3841efd7cba8a401f3c17d3f0fbfc1700409f05b6aa564964c5b4947d3a6f08ede73863b6bc504fcb9c397449e78bccd0a345056241f31162f4054a6cff6dfcb21cfe8f75c1396e6a90ccc149263a2abc4140961b8eac55db58ed5cf4af5b558ea9e654cd98901259d7f3631de0e5cce19deec3f219343063a1519c5deda3ea665a635c8307fa566218a30de6e4d1e9d99fa14a853ca5b60a012d600bf4a74976bae8ef619f4be59d8c48448dda74f6c892688e4a75b2fe0c1765205fa4f9f85b03f59ca5c5a3fed6096c693d3610bab3ca480a531f267bf44caaa53193e7c74cda4e716206cc2b8491cfe8c770b2c3092849bcb30374611933a1497c30c7ebb2a52e326b4731d80cc56315cd44354bbcbcb5e617e459c2ac09e3166b0c1e6514d20a7906938b78367b7cfde98ea6dde6fdb628ee7cd003a85917f6f1816cba4bdb215c88e15d7d25bd2cea43f6fbcccbe9ec6112652eaca1af36d191b0c9bc75a09259961aecc50127731c90d19a4e3129b4e32db2dc15e406a214c7be4ce3288cccbed72adca8eb5d6a7c0bac4434b960706fec589890db7b3ca4480b1047649ce6b24fc338d2a4ae79e5917d891ffb47e1a08e25d8dee91d13ace0a366ffa8f7a6c679bf135fa096fae78db8d89448a82b95eee816b6147e96089fd3b01032c865d6f9f630e5c9fa447b85ad89819d5cad720489b2182fecff8702cfcd94b4463e63d52556eeff7c7d13d29394cf81206455fb4da01394b78558dd29946147d0de3fd4da3b753afe86a1ed9bbed66b88533fecdabd4ecefabdcf4732f095fca4ff7a93416a8984eade49b6acba8f272ae81e88fb4b14f50b42ad6d4894e75df2da4b0b28a117ba70d4e76db6a0eb9392da0f0e2322429e4482de546028bb49533317ab21619ec28a9bdacf8271b8c23f9e6cf46900e0313b1ecfe5da52fe85fecc1135330aa42618ee2b47341d413b545d431fdf46f6075a701484d015968261fa54c9ae13057c86e55f16e5a73bb1dc11dfe82fee69c5073aa28182d1234f76e078a9170efced509f2e55d97290f613dddf5262508abb49ce91fd8b55ab009e74f0dc183c7e0f0bf1372a3472cb136720da9fdf373e3de8bacb96076a11acada7bfefd1b50a7d2d626c054d4c32df717338ab742f8faf3f3908d0006362809c5dd38e68f9aca450dd5766ad071747790952f6e45dc23067b85b786494b6bc317b7a9ef0c051a46b8058bac8340fa27c2e2941391b191468eacf34f7d8dec44199cf19b80887c64d0740261ab75b4691b917a5dae05759907ca65e33ab3973dad5962a9d7f115d9e4d5f99c35256b85d5844257a85d2ba6f549773e506094fbc8a6ca384db821fc073201e120b777ce74d7d899a931ebec8398112097e2e45d11b52101a6204a71f27c7d816ab68e48c15e5f072bdae4aa7aa4f9de403ff87ea5e58444fc6f6ac129643624ee4ae7824d56683290e17210e7955e8d32c14b1a995476f408c183c34a0a7691d0b6d655c5460630a7c7141989c07fa2b032303ff9d2ce3c2ea76d6d345c787b9e3b629b9500fbc60baf3f82f5eeccedb61be2674a7906a81df98279f1e4ca56038e210986188f7bf52190363e27749e234244acc17d9e831bc36c873667ae5108c4db82ebf4172653723beafb889925201dbd99ad9404de0a7234c28d7db724e507590c1bfdc435d99effab3a0646661ca9d38a51179ac683e8edd79c77ab2ac1ce7e2563a41d6075f05f81fd069ce545a80feeb8d2f540427790aaeba518ee0584464fb00c1bc6041c07cb7118cb28cb1ee4158f41e83a87932e45021792dba161743879cfc62f6262538a2dec123fce80c3c186104c70b0b1846b9404d0c0afde668d0f07191af260622c51d1f062a8174042be97c8a5f237f8d35266fbe45e0aae56ce717da766bb15c9e2fe7d034134e2491ec7cad312b40c1e68ff8c2ce6f639408d6d8a92f3f876e679230ff334db9f933bb99db7337c3734966c64f2449ae54f4c626789130cee05a3584c53a6ec6dd1b4baeadcb59903210f604004b02a5ce9d844946de83eb095e88edddcc387c442a852ec376e5e34e6c36f6976a022ce483c6bb8e376882fd533a0d0cdf19ad8f0c432726019f92f66852a506fecb5b9a4726a343ec13a70a2bae41d92a8365b10f9e6a696d781c2f6514784340030fb3f5dce9f186564f19b352903a7463706f7487c87344867a6ccde73a91ecbc3748ea3ca6c9054a068ca100284acb7bd56be840ff81416405a671fb80cb95e8e258f57beda98a19fea7107666dc0e2efe0c52df1249c81c02a268ef122f53ec7eb5803c3bd762ae7417aab384435ae271e490d1e83de33457f9cdca6087dbdf0f43d4e2f93c54a6567c5e3771280444b769cda09a3c008b013a149c2ae0005dd6351a59c7384e4b38651ae6449b011a48813c8ea38868eb17bf4aa1b29049a073e212d72ce8161ebba748d5d4dfc57df4623f38b1d479d1625ef868c44d55dc7d0afbba1e17c8ac9f5446a4e2400d2cc1620ddfdbbcf056113d3b8a2a7990a9cc40943f35a5d89d1c250a0b2af6eac186832522571e223e57871d9972b59cc1f754780b541b0cbd778ad9abb7169f035fe958f352dc2ae2052695adc775c3cf42f31d3abb1be3d1c2b8f9e57c37540c9b924821f72c03fd47b5a7818caa4df13232cecbba992fa667ff694e511620669ef49696621f538af101850b8e89a8ec63db1176a732e4809099dfb95389c335db09913bb0a937e850a48d4fd43247079a8d6252b3e696e70d23b5d5762ce821633e77893051af46b5d28bd4ee18a8fb0441b9e6bfae5c9d651acdc4aba51fc77f895b663a95e08dbe372c0543604c7832add9427eab9543e21edb84fdbb5b85d0c8026b1945d1c4164c4f1df2479db6ab61f686df2e28be6cb612e8a9f5d20e18e20e93d7dcb6242c7244ec8d2c2c1e17999972dabcc131142f44161d603e47b0a3dfeb3ef6284417d60f40db559cbd1b23384622092c4784b8edeba87429b44aaaa707ef01574ab5cfc514df7662fedf921e01bd7458de96c364d970852a23a3c93d3d9eb923822c45d2dc544df77d4a084b1c59bc79b1ebec1d6ab14d4f636cdd9439d7bb607be0e59a7a74b51aa68fef63b84eb70ee3bf179a46a1e61eb88e7dfd078e9836afdcebd5a9a1a402930ed66b1b031ec02861f68de287be187e32c7b862f67e014276b967081b40b16c95f940b2a7c5b053d9875320b81e20910a68d45ade6f986e77e5e4c97642862e311feb1d5a1e5b1e3aab01c4e2b4192a54b8bb9257c226e814fdc8dc74a9af884f9b84b1d45b23ae031d160aecad0ef2f5a8b6bcf3b31c52d70c155c091d419484f6ec26ed0c7e91051e05051e02eb0895e9273db1b368a6117abf0c1e0c8e12c8da020d43e4e254aeae2b86d926a806d3070b00e82c608d00c09fdb19b6f5d015461ff7bcc9c9c4624e776554032b0782d938f302501a91ea33576c4215d664d9494004f16f031f9cab0b640b3becbec9fc11bfcfece9605bdbf5f2a2e5c0b7e400703fd97fc1c3210f0412d865b38cf269833fbb67e1d8c0426b797cd61462b52f10e37ca55b313e680bb7223262af3115f677e30cd2e7b693a55c4ccd500e9fcdecf13bb67c2a4e201a3381c5a9332aba0c2886c2f01db96ad7c3379b1db4d45e8a01244b407130102f3564c5d2ab57526e070a571e7816cd869b8b518bfbf9b2a8d96d8bc62b26dc2232649ec0dc183a679ab4c0d6e643506b8fe337434a5a6673a2c2cbe30b1217296cb5cb4495ad07262d436795adc6e27f878dafd700000000000000000000000000000000000000000000060e131d24273035"
- }
- },
- {
- "seed": "3f58b164069a5f0d1372faa94e22d6b6c6e6050164ed9a622749de7ac74945df26c89d5e8a58ee4585ccbe34d4882914",
- "sendersAddress": "201a3bc0adb750f3c22c8edcac1e5e93e708e91e",
- "type": "message",
- "cost": 500,
- "raw": [
- "0x09",
- "0x04a817c800",
- "0x2710",
- "0x3535353535353535353535353535353535353535",
- "0x0de0b6b3a7640000",
- "0x",
- "0x598d7c9e918f4330e113fb90615ad84cb13a81fbee9d73aa0b1145e89411d100d23790551df3df64466cefdc75816d9b29e161fa281587091c4ee859ff9ef4a4a1b420aab86829a3338334df00fdc83bf36c14466ab7e0cd8ddda6b1f2e442e143f06a1d788b998f09756311a7843507ae2cece5c1cd2a0c48158bf4fbc239113a175db9cae9d8e9124e93cfd87676b881f737f04640291ba8f0aa2bcd46d45d42a004c6e2b57b4b5b2662029629a301d59aafc561752523a1381530561b3942ee78025cb3b7f7f7400b86e4a739a55ad5f0ec3985010628c8c3f59ac7873dd59ac82594d48979811d43e4d54c689df1ee183043c1732a440c883d15a8f014b659bbb8440c9f6949141813156804b22b18629ec6e572f60db711b6e386242ba4ff57c0e8f14cecef09af11986f8958450ace3d6ef4023a96047dbddfecb4241e14de76d6a50252dc6dbe3f36ac151c3e8e3146e0def1a0ccca211073b64f6ee80cbbc74d5798456931454dcd967c8794f5bca75b026a13040b5ab73ffeba5f05cb40edf8d242f09523d91958a84b348c1d8d30edf87c7c64dd3fc0491fff27f829b9c002f113f1505f16a119184cbeefed3317dfbf0e448aa64d9b08caa1637aa09e1b4631e701a9d68d435115e646434c10e4bb2b68da4f18d3fd02fdfeb828cd789b00f6916eaed49754094d9f7a83b3929c31a567d7a1dfd407e9c41b47a42e837b523789e3d557969bac046ada04f9710320f9fcd5312f14b8839e4269027a78e7b4180f10e0cd38caaa267e66bd90c6e74d919f6112fafc86e590c02e432d5260d5c1ac91cda21c8f7ab44bc6e5e66d67a59ddb67af6ae50968dca0f0c975966fead1bb30bf4fbe3380d2421b310a5dd28d226af82571372c3f3590d5609fc5bc04259c4edc2dbc778fdf381fb401286882010b8922e3a3bf2137a06c3a5cfc71656d793d96270e0169aca8f925323dc7d3647fa6c70a64936908ca8521ec7bb0e056bbe1cb32737ffaac8a3bbacb6e3376b72681f9d9315b034de355b1dcddba0164983c2c9f79632870564ec2715e4cef2c7eece3f9fc756e7e28921570b1ca1775b33378c56a59a384b7328da838de2bc0830854acb3a40a83c916816699deafab1d8f2b02d6b7c56c76af37fd008df9bd7eff54adc928f7355fd266d198fbb1d08eaec99ffc3c99d0b02af864efc61154e14fdffa98203667427110d723aee27df7613c0a254f03c27c5c1f7d70e8656432bc2b452d0e94e54db4251f7401957d3a3c6b9fe364b2b47d58c9f49131c4591ee4556246d07a87d934d0eabeeeed092497d0f7b038531158078c3b2fbef35ff1152f1f960c1f74bb7943bf12b6a67804f5cc93e449d4e3429df62ec9319c796a66e7f422454ae8100f28d478934fdfe49583ff33e822d0cdf261458e00bf6582c8450809777659d9e61350da078a9540f7eadb6279aeaca7fdc4a09769879e0321c3ba6df7e67c0ee056957b4b3dba5e62ce4301c620851f9fe97ec15bb915670e81f17798e9670684ec5f1fdb84e49a417b85513a0e9d243da6f7901bc0d25940d5199cf34bb9b9b5ea47c360665cd83c817cdf029e37fb7deb646fd89842c522bb9c5b71882a65c675d4f429536ebf69cafee49679c1e1293af91e8d7c673b65dfaa28290db5294e574b01a8d4cdfd0eb3151ec477cdcb98298570de0df1f701cd67fb3dec02eaadbd4caac5df3f7697ab7c61da0239b9fe370ea4bc695d643db6ff2f27c50fb77c375a444e7b20d46e5c5ed3e12bbdd72aa577455e4e754c1c1abbf155de0dfdec75f6191ecf0c82ed05749f50611d61b65f6c3e00224b0971f04a7b69f0f0a4635fcaa68baba870402f7a425a7a3200eb51c5dc60d99d2e6b8e3127eb2a2b2647cfdb9b86da546f996dded15949d5a1327a5d46ec574ed58a11fe8d598e1d6477a837f184c63418e9f5a2d0bea14330db2fac6bb03c7ce49fc0cd97f9cc09357c61760011d6f0c146e824f1f689529be7561c5b91a1a358a196e8843a28aefffd40d3d8900d4638696f0bf7cd4651ddd09d942075d20091313caa59b1dff07c310dcf20d7c04b8b3060e9a0fa127b01053ef3e09cddd87d2351099eb6945943ad95be70e07c415444da07ddc065af2db48dc1547c233c511936211273c56a27a6b684e9b5b8a5098a4ead995d57d383e10be7a14098c6ec847f948e655cdbe506881080cfb4fcbe75f4834c2005e1557f7fcb64e066028db8196ee4b977e0084a1f6db1bb825d0457ef44ac0f8be75f9e93430ae1ff11aeb3fe205280f8a99e4ff6df608040a99b3db5c9600f0f8136e2e0ee239deb52ef256d3af55ccb729f18a6d5b3496eacc945431a1e80340b4c55f6e9468ca2b0b72fa28d66332a91d6339229151d2df7259229b8ad329edd590fc62a8778c0e7ea33fcbda5479a931576c36d1ac458a08218a6ac433cf562d39620802735fc365a9856c56fb0ff340e6ae4d0b569519bef22f537fd556fb1bc34cc75a21db7bc9ab2c69d74d34e49048150ee2a9c068c14a2585182ec5206b0ac143d775201858737fc02149c55a18fed6d05d7567572b5d5512ef89a7abf912cc15824ed9c0e97bb7e3c1d15a8a3a787932ddbc0a1f0b76059968de72fe136c93d712025633498b09662d75de09b218baedaa53f12909c99307a45fcdde44da1ecbd98feb2d9c0c0a8f3d23de8861015d1c8a96ea7837b30053b94b23d9aba97ca58f6fe39a44d01c62b69c65852935045799b6d2375cc09120b44387af03bdb69802b06cd4856f6c9ac1f54328b7eecc5d494351165885b2f05fb5d08392a8effc15f7855a3f19a6b1b618f3c69bab7d4a52c9ef2e72539ee59894db88e2d5bfcfd0d6c52cf3655ef98490fea55c4eae9256eaa4166d752a7ec82952f62eb4e5ccffed9845d3e4c076ee0757cccd27d1e93cd5eec6bd65bc5f4007fd047b90c7ec07882a35624ef7393466c413e11e23e95b6c56cf0ee2b84af2599aee25d5b997457c37b15b542976cd93263f94ea0683b393a3c0eae5f411be3038e6d6a4c39f88b5bd75d7138def5cf089d8bb901664408e7dfcc2e1be9294dcf6e6d84fad9f0a87c452df3643c833d0389569b8abbca4560f5a01203a8dfed92209a1b724eb70526aabb6cec99c620552f94857cb725e9c2c788d6c38016dfc529ff910e58ef9927036e35e86bc2d4ec2d893c298ef2a888690cf885ecc995db4cd4cdc7dc036643850b43320277ee4a3a1be222f994624ac60c8550e409795a573a5b12c6c97e1b93602f2014f0df1e51cea74beb30b58efd9fd7794cfe4af9d1085b32afa75e80d53d7f4673e4ba64cae50d87ef0ec13ee74f9a3629e900933983268517677f85990bcf601fa4c5efd01440a402697853e766401de5ca5e78021cc0151faca29d350a9ec65357f2c590a61a19f45df2430881ae7a659089b6343a2f35ff9f4b842eca7c730034d4e8b9c58d1f30a8479fe2cc4d1941edd91644398bbaec45c1d5ad1d4a13b4eab618f487ec10bdc9e7e687adf877a665124db99a6bfa5575b5c1312d3724f88ee6040192188dde58b173807d1c6d9587ee1a4b0b30b39d72a2919b884b8b248644393be5db92758d95223c9a93ce89d753a0892a993cc7468f0f0c7c9c9f403c0ab12659e98703",
- "0xc3047685c1df2f78fead218f454ca3761fd143a30734000c1a06d20a896d70a3c6e4a740b3f82020b8f9de6ced2c1621acb907eaba8a586b609dd022209c46fdb35449c6a8a0e969614a6fa7e4ff28adbbf1c20219e7374b0b7c3632afdeef89eb90b1daeaeb8901dae9ee60e252681b454a6daa3c9ddae6875b1d8a3334570e36edd1acca881517b21e8569b63677480605f50e004d83684e42fd017d2e0c1f457da19e9156430da8930a10660f6d20a2423b48f1ab829f7b7f6cb3e0fc439edb8db740009914b277b14c3a7db052fd8514a9eb98613845f60aee20c9fe3db1d91450dd423cf4ff8e768227091fec1866a4b4a215c877b6850f90ad5f35faa97d284bdf395151bf6eac2248713f68fab2491c9454d499d1434cc5b5f044896322fd98e8fdcd7770f0a392d77109f4ea6955bae7599c2e627fbc8eab119d2ea3e36b5624904c511005e44c67e70f6cb161aef86f64a33e23e9eaa9ee49006dca042b04575e1f62a68959cc1d5e846095a80c0081f07d9421c27352cfa1f84de3e83f7bd526d47455f49c3968a3d8629dd927c75b889726bfb5adca8f2a1731a773f7b1b7590835dff903839cef067830789eb9fdf040ea4bc83986ba4c6fcabe588947f8d637cbd83683270b8b4d0c02f2437016f8de15f7f4b8eaba9aa7086f5360f0536e3934dd0a57e1a1ade3a27990be99924c93a9c18aa92b589bdbc55f981685610a4ee25c0d4b0c04bc32887933bd63b72c41a45209e0cfa84b671340425eb8952e850a1d0b5a87f3adee4bf9e4386583b4e1067f706e896493154a8d3c28b2de902613ef93b75d992cbb08b6bfa4ff79ad265553779073e5054fc02ca53c3a1192205e0889209d8879a52ccf3512baf6d0c67ae8b79e0bbc9e59c2fb3d12d21abe953a2b554d89c1166ebfe87b6ce0efc56a979e38bc6e870dd839d970a57705086323b33d9f3e8f5314c01605466b23a8e15cb6548473e20ac3ae101ea859f04cff7cf472b50d5c99a4fc164694c6e94eb3bf7ce9acd2f3736dacefcf2ebcf48df075b755b79d8d591b3dc9c9fee36ef73e697bd470e3f854ff3e24ac4c45c307c777e0b2a9c3a9486990c3c57907d75b44e22afcf3c62f991b8eb192210fd9a0d93dd918f6bbe87d362a30a4c5bc92af8c699b524b61b880e33ab0c0cfcc72fddac9e5fba6829cdbf6c313cfd110b944b2b70f4f398e4bec3592ad493d4a70e37d3216833d74c9a6021e506dab067de51a2ff3f33968b5a903dd739ee64ae5f6427c6d7824ae88b5626c67d9350576c9a4fca11b87d2fe037b23d0a7fd54cde761b498eaf7df8bf03abfb7e8a6fb4f4587eb62ee1ae7bea8236484ae4fdd3d14988ba8c7143ecbfb957d4f7308e7a779adcc6bf3693a1e9660ad0ed75cd8da74d9888dab5d8690c9bff94102b06b55da410ade69e05569a13304e4647ba97247f89d9f40a9386fb1c3793cb061766cccf16c96e48f38bd1dcab5e92fd2f0eb933ba7ee7493d688fab89dd79a873b0e2816e330ec0ffd993b2cfa172f8b2a4266812e345be0279055f69634bc13f037ef1ec236b7229115a00ecdfd14a93706512640926727b02c0460415e0c55a32f95a41854a50df93cd18ade17beb83384f7bba062f453cac1747eaacce3eeafa9bfb81ea16144b3c7e1e03f3c415d43d480cac8082a0a09427b44dd5a32c7bd294cd35052eb38cdfc8b5157d745db7fdbe118650b39f34200af9c7bec6e6e59733f0ef2a44a133082684f6bca991e936f9c27aab94296a7b9cd4a1b3581ead7d61233c2ad60c5f0102dc78ed04524f99f7299998e62195b8164b1502ef0de63844e098fd7520e8643095f9ebb44abb4a1a8c9331e57fd8b6af0dafc28ed37a50b33d508720927d8dd1877ab61322e7a78f89cb73fde3e646e9e6cbf37fbd7a864c776ac0643c59ec7c955cd59c5a30aa35b5f8dddbea28ce412a711f216b455dfac10d64244378009fe1da4319ff682660abd9f3519f892af52e0dfdb5e21460810c6c26c96e1ba91dcd6955d6a1d8a06f14af284bb8eca63ba422d954e607ab2ec78b593c09f3a99b59bac41adee86545ba4112a20562b46b540771cb0f165f34f56f42c7c29f2dc323b4bfce8361cc73b690570b93a612ceca3a9f4ecfd3215def48b2686e31eae5dedbaaa8be245bd188b246aebcf49da5ee71a6acb0fd047350db79f566b04dc9d2a584d475c4eb4962ffeee7dc505bd9e85864ba610350f9ea98a283d9d3325796709275adc10e617b17b1505854682fcc517fca6005f213039ca8842e279117934e77f299b90e4ed2b797f368b89119686fe0b433eb6bb8bce4dfe2ec8595f29204190227d526b2e4cbc5dffa317c00052047c4d3ddcacbddcd4a12dd2510f937cfb3b7acc4c10cf76578a3d0285533d499ce1cf8dcf185b2ad5f6e14e1c4b85de0378dba215b64e0160d912febeff868d2c177cf249a3c2799f424a1d82c591f42a5af130718644e80144ed01015cfc51a16c1e64081a5183efcedf96862d646f17200cc1fe9aa88951449a48cb52527c8d6734998a0a4305ca7b1ed96549c0d5d3b544cad4a8791ae9d1e326365cfb194e373454ad12fe98f0a249ea486761630e7ae55c5688968d26366a6bf5c310a2a0579543938e71ec2c3e2d2aac4383b629fd6495b72b004365950c77c864cf5f652f05aa87de5a833e5d071cca73a6e87417bf0061305ba6a6ddd20ee893bd695db129e1da56eb1fb053b3b6809a54254ea5b13ea49bc646b33bb5a2955145f164e4d45ff6277d4db840631b7684218d9947b93790fb9b9ded69ff2b62c7e1dcb9dc52279daf28204bec8b59027cf5d6ea9c311383125744dc1c7756f3e965866ccff6ca48795674923d3c8e2cf479c9c75b36f7e283d98d6503d9b35173c1ce7089b72847086c91f1aa4daa5f36fb2939407b403ba68db54fbd73e66d4cd8840da1ef42327906e8c666b7f092393eaac7191953cd9d9b444b2920f120a4216287595bd3da5c1b4f2560953a03b1c4f753fd673f675ace9ebdc0c8b788c8393ec32f70ec5e10856ca01abaf7225d25974a26e969c019f2e8a961399810fd9f8dfd59eb6e299ebcd44eba0fb2ac39644dfa95b089e5bacb9fad12e7c9266d30ccb053bfa8f8e40edecc7c8c7381de54737eeade4f5e990480ddce22ba2371e01056cf48494b244f4bfff9b35d4d90a2b8ac8b78dc23ecc2873a805a5ba01fd3a0bb5f863d96ac9b044fb9c7c26f5a7221b4cd74c2e208b8baf5f98cc55cfe83d2221d3dccc564f6e41cae05cec1a4705883e1c92362de19ce44203d05232929fc267e6ee68dea32036994afa25f75d9b953520a6421ccb533924d00d84259d057262146de8d6f9d15ab539b9e3abcb7b1042d5d508d847b39bc3a1cb43fb18cedbb83f05c96eadcee53f44c903fbe25a7e68f610f6f6de9c95b4158d23998e0d8a32a03322fd6d1bae835c8afef0051dfbb641ee6c5bf09def429c6ce9f84d3d4692489a4b4f0f98c83f78dcbb973caaf5a0d4079d1b3a80fb67e9cf0cdfc076cdae4cdeb2c2ab0c1d1917bf5d876aabee9c2bfcb370204dd557b5d7949f2cd26c120d6f54db6080ff19a2f85ac0a89456a8b875670e50ef16e56174ac2e5501f1bc752f71de2ee547ab4efd3fd28a9edfe758f0c943d06ee35982ee179c198e5b736b1fb8a99636dbccc2d0a0ac44e8e24d58e20a3faf98c133efc21726ba91dea7d5fd97144a6b66dd840bdc079b0077ef629dbc0c5bc1f43c8dad42561ff9527bd7efc9bfe7cdc209a8a425df93365ab9793fc981dc9b1102eab472b4d8a7bb0303e553eda677f06c0092b863bbe0807cab87b932483e8c4736b57c9603f9589fa3f05e63711d0627405623a01cc9c2c83c86d4eac0cbd0c480ed1b8940edd601d56de96b19b83f4366e6a10aeb9c50f9fc8da100486cfbb8f777436a6ffe0f42335e2df16b17c7504e6973c8a274a144043919a38e41c1a24eac6736860198185a016a780f6ee90727fdd0d9600f95351d05e03cc41ad31191fee48c105b7fb9e80dbfda9dd716eeea53b55267fbd43c98416a94cc9ee9a62e7b15e99373118e936e9a3c0a166c259b175e6776447f4a2a09960edfceba0b2ff57f713c6f316fff50c3543c64b4f19c236b5df82fa38a013f73848ddc24a3e1b3027ff170f06b9ef89d04d76dc9bac6d8de74eb85c0e302dc4acfe139569b73881237f0347e199d7e2047764eba130d03fca659eea1b5c688ef69d577e51f5d50fe2f20b1d987d4342767bedbdfe079f79a757767e024218a8dd9840b8a3f19881780c2316231173937df3f757ad8ad8d4635b3eb4235c9fc6b4c0c6c8828bca99fbd3e4325289513f605de00bd2abbc36a102f573bdaf4d827d21ec948b5b80e9dd1bb3043d715d2d179aee624a03fbc9d137c6a1b69255b91a7ceb9b18aa75f01d6eaeebb6d85c8136d35c72b82852aa1e77fd7bdb5be1016e8ddbed4f41cdf9b9af185333cb1f3d8f09755851187a4dbb9b29196d29493c5eb89e8313254e9de4417e6ed683d3f9a13705d24047f09f3a89be45525d4db4ec7e577a955364b98c2b9e8ec6685ac071086d76406866a86e15de5ba3d1472a32d6fa4c0822f49381b40a2e29b0f1b35595a7f701ba1f9f4dfb70858cd8c88d6095145f7a611bf9f493f1114c74204b792e4ec4a72d832ebc0d1ca4c7467f5732f5435c0f427454396279d5bd5f1f44de48e1fc122e7297488970cba5b19215c0e34679cc63e39804b5b9f65c9e83e3444446bd558a7d35a94c266f2d45e00951f27f2f58626c9ce45afbfdd59700c24ca0566a45f315add4ecd74c7cc0b80fa7bd19ad91dacb8c047798c06958de8f712fdde131c1441449f0f12e7bc70d455fa24b584c955ee30427010f97600d4b2fe31551d0ec023a7448d28121961e449e85be5e02acfec0856bb7ee4b9d41ebda4be6c2a33ea52bc7093eb24e6bdf5e917df7f7cf3d71ff4fa6ebe591f04bf003a204396ada6aee2f74b355248458829d8afbc81ac5a418d9bdf89ce8a5949e8add41935e000813ad3cc8bdd7ba65cc86e39c84f130a75979164750fd74c0a82c28bbddfe8aae868c1fa21aecd166e219d2e586383961073ce260072ed6c249c0703159d9008a274cb681a956d79c9fe7fc57da75bb09874b614736fac05ed4f528fb5aa3a2c32ecb43531ea2d90d616fe526c0e08c33263c03bcc79d64f5d589dae74040bd3f38cf818300c39efe787f94ab691905f78cc75374f890494400f64d4507db6da6ea36fc716f5f07eef72ba6080edf472d89bc6056fb943d617ffd81a6d4bca0f618ded3afb8b4bfd5013ed69aedf1151af4786771ee66ac4f2d67c7268ea88261bca2a77ed3837e143e01a7a9e22e0dd2fbcb2d93ed34be60d51025e6904582c3e8ae1e03d90020b009d2649261f79f9dcaf00d1777acc553d738b328115811ee467674bd3a8da3f9f3042638bc7940b484c4f616127782694cb3ce5aefd389d3abde4ef659b1dd7678f5c3eceb5f4542765eabbb302f80eb3ed531e65714145967b9e33f1e34d148adfe1ebebd67a1aa452bcff5957876020489a1c4d02c578f6686aefc82b7a54dfc606f46927f115e0fb7fb235b62c8cb8a8394836d2ccd87398e29684b15c498878549c6df2c7df5c50889dc4a42f6638592285b950432cbf6d9937a6746b90b56a4d9bec403eaade6bd0df1485330df53413506819cffdeb6a726d95ea49fe49c1c50d8277f1920a7e605bbb59cd2024bedd12ebd109640b1d298d897ee4491dbb10a4a8ba35e8030148516aaf36646a2c1ca090291907c01094bdfc4ca0a833a34db5dbab8244901cc2091b5b41fd2c73afbe6bed4069dbb43911a7f911f8ef119a513a1d93552b94cafc82cb5a9a13ab6317bde3be40da7eff22ed66ca92d3e32f483566c410b7a7a32e5da6b3f895cbeeae1fcc594febb37529b1657a685cfd2817cce95175740fb2502f47b964c3bbba6f323018f7d22603994ea087269083bb6d2862a5accba07c5be5029e95047e72360d52323c013253106996c4159d8028460a24333612845d477ec2d0ba832089e7539b2d1e610aee1af8feb9f59b1854f26aa3473bac5dac39c87213015eec09aa99223167fc4dcc2f5fe6e94579aa6efd7be5dfb29ffc58debbd4726774d3482e00e4ee881dddd972235ac066948d8b2e1e8ae1bdd494dd31637bb8caa6cbe4adb3c2c68b684cd25207d63e080e5fedc1fb10217d5e93b2577521bdf99f16514d8197af0b7863e593865a175830c5a098490a491aff41c0c73c5e74e1b809b5e45bc77e286586779db01d73a50a5cb73ee3603fdf46b104780762985ef4921a5ae823a93d56146e89d13e6bc0ee902101c36374f568ea5bbcdd728738f97bacbd2d4e3ef042094c0c3f0080a1327667b414d4f8899b6e5ed2d84a5d5000000000000000000000000000000000000000000000000000000020e181e24262c30"
- ],
- "data": {
- "nonce": "0x09",
- "gasPrice": "0x04a817c800",
- "gasLimit": "0x2710",
- "to": "0x3535353535353535353535353535353535353535",
- "value": "0x0de0b6b3a7640000",
- "data": "0x",
- "publicKey": "0x598d7c9e918f4330e113fb90615ad84cb13a81fbee9d73aa0b1145e89411d100d23790551df3df64466cefdc75816d9b29e161fa281587091c4ee859ff9ef4a4a1b420aab86829a3338334df00fdc83bf36c14466ab7e0cd8ddda6b1f2e442e143f06a1d788b998f09756311a7843507ae2cece5c1cd2a0c48158bf4fbc239113a175db9cae9d8e9124e93cfd87676b881f737f04640291ba8f0aa2bcd46d45d42a004c6e2b57b4b5b2662029629a301d59aafc561752523a1381530561b3942ee78025cb3b7f7f7400b86e4a739a55ad5f0ec3985010628c8c3f59ac7873dd59ac82594d48979811d43e4d54c689df1ee183043c1732a440c883d15a8f014b659bbb8440c9f6949141813156804b22b18629ec6e572f60db711b6e386242ba4ff57c0e8f14cecef09af11986f8958450ace3d6ef4023a96047dbddfecb4241e14de76d6a50252dc6dbe3f36ac151c3e8e3146e0def1a0ccca211073b64f6ee80cbbc74d5798456931454dcd967c8794f5bca75b026a13040b5ab73ffeba5f05cb40edf8d242f09523d91958a84b348c1d8d30edf87c7c64dd3fc0491fff27f829b9c002f113f1505f16a119184cbeefed3317dfbf0e448aa64d9b08caa1637aa09e1b4631e701a9d68d435115e646434c10e4bb2b68da4f18d3fd02fdfeb828cd789b00f6916eaed49754094d9f7a83b3929c31a567d7a1dfd407e9c41b47a42e837b523789e3d557969bac046ada04f9710320f9fcd5312f14b8839e4269027a78e7b4180f10e0cd38caaa267e66bd90c6e74d919f6112fafc86e590c02e432d5260d5c1ac91cda21c8f7ab44bc6e5e66d67a59ddb67af6ae50968dca0f0c975966fead1bb30bf4fbe3380d2421b310a5dd28d226af82571372c3f3590d5609fc5bc04259c4edc2dbc778fdf381fb401286882010b8922e3a3bf2137a06c3a5cfc71656d793d96270e0169aca8f925323dc7d3647fa6c70a64936908ca8521ec7bb0e056bbe1cb32737ffaac8a3bbacb6e3376b72681f9d9315b034de355b1dcddba0164983c2c9f79632870564ec2715e4cef2c7eece3f9fc756e7e28921570b1ca1775b33378c56a59a384b7328da838de2bc0830854acb3a40a83c916816699deafab1d8f2b02d6b7c56c76af37fd008df9bd7eff54adc928f7355fd266d198fbb1d08eaec99ffc3c99d0b02af864efc61154e14fdffa98203667427110d723aee27df7613c0a254f03c27c5c1f7d70e8656432bc2b452d0e94e54db4251f7401957d3a3c6b9fe364b2b47d58c9f49131c4591ee4556246d07a87d934d0eabeeeed092497d0f7b038531158078c3b2fbef35ff1152f1f960c1f74bb7943bf12b6a67804f5cc93e449d4e3429df62ec9319c796a66e7f422454ae8100f28d478934fdfe49583ff33e822d0cdf261458e00bf6582c8450809777659d9e61350da078a9540f7eadb6279aeaca7fdc4a09769879e0321c3ba6df7e67c0ee056957b4b3dba5e62ce4301c620851f9fe97ec15bb915670e81f17798e9670684ec5f1fdb84e49a417b85513a0e9d243da6f7901bc0d25940d5199cf34bb9b9b5ea47c360665cd83c817cdf029e37fb7deb646fd89842c522bb9c5b71882a65c675d4f429536ebf69cafee49679c1e1293af91e8d7c673b65dfaa28290db5294e574b01a8d4cdfd0eb3151ec477cdcb98298570de0df1f701cd67fb3dec02eaadbd4caac5df3f7697ab7c61da0239b9fe370ea4bc695d643db6ff2f27c50fb77c375a444e7b20d46e5c5ed3e12bbdd72aa577455e4e754c1c1abbf155de0dfdec75f6191ecf0c82ed05749f50611d61b65f6c3e00224b0971f04a7b69f0f0a4635fcaa68baba870402f7a425a7a3200eb51c5dc60d99d2e6b8e3127eb2a2b2647cfdb9b86da546f996dded15949d5a1327a5d46ec574ed58a11fe8d598e1d6477a837f184c63418e9f5a2d0bea14330db2fac6bb03c7ce49fc0cd97f9cc09357c61760011d6f0c146e824f1f689529be7561c5b91a1a358a196e8843a28aefffd40d3d8900d4638696f0bf7cd4651ddd09d942075d20091313caa59b1dff07c310dcf20d7c04b8b3060e9a0fa127b01053ef3e09cddd87d2351099eb6945943ad95be70e07c415444da07ddc065af2db48dc1547c233c511936211273c56a27a6b684e9b5b8a5098a4ead995d57d383e10be7a14098c6ec847f948e655cdbe506881080cfb4fcbe75f4834c2005e1557f7fcb64e066028db8196ee4b977e0084a1f6db1bb825d0457ef44ac0f8be75f9e93430ae1ff11aeb3fe205280f8a99e4ff6df608040a99b3db5c9600f0f8136e2e0ee239deb52ef256d3af55ccb729f18a6d5b3496eacc945431a1e80340b4c55f6e9468ca2b0b72fa28d66332a91d6339229151d2df7259229b8ad329edd590fc62a8778c0e7ea33fcbda5479a931576c36d1ac458a08218a6ac433cf562d39620802735fc365a9856c56fb0ff340e6ae4d0b569519bef22f537fd556fb1bc34cc75a21db7bc9ab2c69d74d34e49048150ee2a9c068c14a2585182ec5206b0ac143d775201858737fc02149c55a18fed6d05d7567572b5d5512ef89a7abf912cc15824ed9c0e97bb7e3c1d15a8a3a787932ddbc0a1f0b76059968de72fe136c93d712025633498b09662d75de09b218baedaa53f12909c99307a45fcdde44da1ecbd98feb2d9c0c0a8f3d23de8861015d1c8a96ea7837b30053b94b23d9aba97ca58f6fe39a44d01c62b69c65852935045799b6d2375cc09120b44387af03bdb69802b06cd4856f6c9ac1f54328b7eecc5d494351165885b2f05fb5d08392a8effc15f7855a3f19a6b1b618f3c69bab7d4a52c9ef2e72539ee59894db88e2d5bfcfd0d6c52cf3655ef98490fea55c4eae9256eaa4166d752a7ec82952f62eb4e5ccffed9845d3e4c076ee0757cccd27d1e93cd5eec6bd65bc5f4007fd047b90c7ec07882a35624ef7393466c413e11e23e95b6c56cf0ee2b84af2599aee25d5b997457c37b15b542976cd93263f94ea0683b393a3c0eae5f411be3038e6d6a4c39f88b5bd75d7138def5cf089d8bb901664408e7dfcc2e1be9294dcf6e6d84fad9f0a87c452df3643c833d0389569b8abbca4560f5a01203a8dfed92209a1b724eb70526aabb6cec99c620552f94857cb725e9c2c788d6c38016dfc529ff910e58ef9927036e35e86bc2d4ec2d893c298ef2a888690cf885ecc995db4cd4cdc7dc036643850b43320277ee4a3a1be222f994624ac60c8550e409795a573a5b12c6c97e1b93602f2014f0df1e51cea74beb30b58efd9fd7794cfe4af9d1085b32afa75e80d53d7f4673e4ba64cae50d87ef0ec13ee74f9a3629e900933983268517677f85990bcf601fa4c5efd01440a402697853e766401de5ca5e78021cc0151faca29d350a9ec65357f2c590a61a19f45df2430881ae7a659089b6343a2f35ff9f4b842eca7c730034d4e8b9c58d1f30a8479fe2cc4d1941edd91644398bbaec45c1d5ad1d4a13b4eab618f487ec10bdc9e7e687adf877a665124db99a6bfa5575b5c1312d3724f88ee6040192188dde58b173807d1c6d9587ee1a4b0b30b39d72a2919b884b8b248644393be5db92758d95223c9a93ce89d753a0892a993cc7468f0f0c7c9c9f403c0ab12659e98703",
- "signature": "0xc3047685c1df2f78fead218f454ca3761fd143a30734000c1a06d20a896d70a3c6e4a740b3f82020b8f9de6ced2c1621acb907eaba8a586b609dd022209c46fdb35449c6a8a0e969614a6fa7e4ff28adbbf1c20219e7374b0b7c3632afdeef89eb90b1daeaeb8901dae9ee60e252681b454a6daa3c9ddae6875b1d8a3334570e36edd1acca881517b21e8569b63677480605f50e004d83684e42fd017d2e0c1f457da19e9156430da8930a10660f6d20a2423b48f1ab829f7b7f6cb3e0fc439edb8db740009914b277b14c3a7db052fd8514a9eb98613845f60aee20c9fe3db1d91450dd423cf4ff8e768227091fec1866a4b4a215c877b6850f90ad5f35faa97d284bdf395151bf6eac2248713f68fab2491c9454d499d1434cc5b5f044896322fd98e8fdcd7770f0a392d77109f4ea6955bae7599c2e627fbc8eab119d2ea3e36b5624904c511005e44c67e70f6cb161aef86f64a33e23e9eaa9ee49006dca042b04575e1f62a68959cc1d5e846095a80c0081f07d9421c27352cfa1f84de3e83f7bd526d47455f49c3968a3d8629dd927c75b889726bfb5adca8f2a1731a773f7b1b7590835dff903839cef067830789eb9fdf040ea4bc83986ba4c6fcabe588947f8d637cbd83683270b8b4d0c02f2437016f8de15f7f4b8eaba9aa7086f5360f0536e3934dd0a57e1a1ade3a27990be99924c93a9c18aa92b589bdbc55f981685610a4ee25c0d4b0c04bc32887933bd63b72c41a45209e0cfa84b671340425eb8952e850a1d0b5a87f3adee4bf9e4386583b4e1067f706e896493154a8d3c28b2de902613ef93b75d992cbb08b6bfa4ff79ad265553779073e5054fc02ca53c3a1192205e0889209d8879a52ccf3512baf6d0c67ae8b79e0bbc9e59c2fb3d12d21abe953a2b554d89c1166ebfe87b6ce0efc56a979e38bc6e870dd839d970a57705086323b33d9f3e8f5314c01605466b23a8e15cb6548473e20ac3ae101ea859f04cff7cf472b50d5c99a4fc164694c6e94eb3bf7ce9acd2f3736dacefcf2ebcf48df075b755b79d8d591b3dc9c9fee36ef73e697bd470e3f854ff3e24ac4c45c307c777e0b2a9c3a9486990c3c57907d75b44e22afcf3c62f991b8eb192210fd9a0d93dd918f6bbe87d362a30a4c5bc92af8c699b524b61b880e33ab0c0cfcc72fddac9e5fba6829cdbf6c313cfd110b944b2b70f4f398e4bec3592ad493d4a70e37d3216833d74c9a6021e506dab067de51a2ff3f33968b5a903dd739ee64ae5f6427c6d7824ae88b5626c67d9350576c9a4fca11b87d2fe037b23d0a7fd54cde761b498eaf7df8bf03abfb7e8a6fb4f4587eb62ee1ae7bea8236484ae4fdd3d14988ba8c7143ecbfb957d4f7308e7a779adcc6bf3693a1e9660ad0ed75cd8da74d9888dab5d8690c9bff94102b06b55da410ade69e05569a13304e4647ba97247f89d9f40a9386fb1c3793cb061766cccf16c96e48f38bd1dcab5e92fd2f0eb933ba7ee7493d688fab89dd79a873b0e2816e330ec0ffd993b2cfa172f8b2a4266812e345be0279055f69634bc13f037ef1ec236b7229115a00ecdfd14a93706512640926727b02c0460415e0c55a32f95a41854a50df93cd18ade17beb83384f7bba062f453cac1747eaacce3eeafa9bfb81ea16144b3c7e1e03f3c415d43d480cac8082a0a09427b44dd5a32c7bd294cd35052eb38cdfc8b5157d745db7fdbe118650b39f34200af9c7bec6e6e59733f0ef2a44a133082684f6bca991e936f9c27aab94296a7b9cd4a1b3581ead7d61233c2ad60c5f0102dc78ed04524f99f7299998e62195b8164b1502ef0de63844e098fd7520e8643095f9ebb44abb4a1a8c9331e57fd8b6af0dafc28ed37a50b33d508720927d8dd1877ab61322e7a78f89cb73fde3e646e9e6cbf37fbd7a864c776ac0643c59ec7c955cd59c5a30aa35b5f8dddbea28ce412a711f216b455dfac10d64244378009fe1da4319ff682660abd9f3519f892af52e0dfdb5e21460810c6c26c96e1ba91dcd6955d6a1d8a06f14af284bb8eca63ba422d954e607ab2ec78b593c09f3a99b59bac41adee86545ba4112a20562b46b540771cb0f165f34f56f42c7c29f2dc323b4bfce8361cc73b690570b93a612ceca3a9f4ecfd3215def48b2686e31eae5dedbaaa8be245bd188b246aebcf49da5ee71a6acb0fd047350db79f566b04dc9d2a584d475c4eb4962ffeee7dc505bd9e85864ba610350f9ea98a283d9d3325796709275adc10e617b17b1505854682fcc517fca6005f213039ca8842e279117934e77f299b90e4ed2b797f368b89119686fe0b433eb6bb8bce4dfe2ec8595f29204190227d526b2e4cbc5dffa317c00052047c4d3ddcacbddcd4a12dd2510f937cfb3b7acc4c10cf76578a3d0285533d499ce1cf8dcf185b2ad5f6e14e1c4b85de0378dba215b64e0160d912febeff868d2c177cf249a3c2799f424a1d82c591f42a5af130718644e80144ed01015cfc51a16c1e64081a5183efcedf96862d646f17200cc1fe9aa88951449a48cb52527c8d6734998a0a4305ca7b1ed96549c0d5d3b544cad4a8791ae9d1e326365cfb194e373454ad12fe98f0a249ea486761630e7ae55c5688968d26366a6bf5c310a2a0579543938e71ec2c3e2d2aac4383b629fd6495b72b004365950c77c864cf5f652f05aa87de5a833e5d071cca73a6e87417bf0061305ba6a6ddd20ee893bd695db129e1da56eb1fb053b3b6809a54254ea5b13ea49bc646b33bb5a2955145f164e4d45ff6277d4db840631b7684218d9947b93790fb9b9ded69ff2b62c7e1dcb9dc52279daf28204bec8b59027cf5d6ea9c311383125744dc1c7756f3e965866ccff6ca48795674923d3c8e2cf479c9c75b36f7e283d98d6503d9b35173c1ce7089b72847086c91f1aa4daa5f36fb2939407b403ba68db54fbd73e66d4cd8840da1ef42327906e8c666b7f092393eaac7191953cd9d9b444b2920f120a4216287595bd3da5c1b4f2560953a03b1c4f753fd673f675ace9ebdc0c8b788c8393ec32f70ec5e10856ca01abaf7225d25974a26e969c019f2e8a961399810fd9f8dfd59eb6e299ebcd44eba0fb2ac39644dfa95b089e5bacb9fad12e7c9266d30ccb053bfa8f8e40edecc7c8c7381de54737eeade4f5e990480ddce22ba2371e01056cf48494b244f4bfff9b35d4d90a2b8ac8b78dc23ecc2873a805a5ba01fd3a0bb5f863d96ac9b044fb9c7c26f5a7221b4cd74c2e208b8baf5f98cc55cfe83d2221d3dccc564f6e41cae05cec1a4705883e1c92362de19ce44203d05232929fc267e6ee68dea32036994afa25f75d9b953520a6421ccb533924d00d84259d057262146de8d6f9d15ab539b9e3abcb7b1042d5d508d847b39bc3a1cb43fb18cedbb83f05c96eadcee53f44c903fbe25a7e68f610f6f6de9c95b4158d23998e0d8a32a03322fd6d1bae835c8afef0051dfbb641ee6c5bf09def429c6ce9f84d3d4692489a4b4f0f98c83f78dcbb973caaf5a0d4079d1b3a80fb67e9cf0cdfc076cdae4cdeb2c2ab0c1d1917bf5d876aabee9c2bfcb370204dd557b5d7949f2cd26c120d6f54db6080ff19a2f85ac0a89456a8b875670e50ef16e56174ac2e5501f1bc752f71de2ee547ab4efd3fd28a9edfe758f0c943d06ee35982ee179c198e5b736b1fb8a99636dbccc2d0a0ac44e8e24d58e20a3faf98c133efc21726ba91dea7d5fd97144a6b66dd840bdc079b0077ef629dbc0c5bc1f43c8dad42561ff9527bd7efc9bfe7cdc209a8a425df93365ab9793fc981dc9b1102eab472b4d8a7bb0303e553eda677f06c0092b863bbe0807cab87b932483e8c4736b57c9603f9589fa3f05e63711d0627405623a01cc9c2c83c86d4eac0cbd0c480ed1b8940edd601d56de96b19b83f4366e6a10aeb9c50f9fc8da100486cfbb8f777436a6ffe0f42335e2df16b17c7504e6973c8a274a144043919a38e41c1a24eac6736860198185a016a780f6ee90727fdd0d9600f95351d05e03cc41ad31191fee48c105b7fb9e80dbfda9dd716eeea53b55267fbd43c98416a94cc9ee9a62e7b15e99373118e936e9a3c0a166c259b175e6776447f4a2a09960edfceba0b2ff57f713c6f316fff50c3543c64b4f19c236b5df82fa38a013f73848ddc24a3e1b3027ff170f06b9ef89d04d76dc9bac6d8de74eb85c0e302dc4acfe139569b73881237f0347e199d7e2047764eba130d03fca659eea1b5c688ef69d577e51f5d50fe2f20b1d987d4342767bedbdfe079f79a757767e024218a8dd9840b8a3f19881780c2316231173937df3f757ad8ad8d4635b3eb4235c9fc6b4c0c6c8828bca99fbd3e4325289513f605de00bd2abbc36a102f573bdaf4d827d21ec948b5b80e9dd1bb3043d715d2d179aee624a03fbc9d137c6a1b69255b91a7ceb9b18aa75f01d6eaeebb6d85c8136d35c72b82852aa1e77fd7bdb5be1016e8ddbed4f41cdf9b9af185333cb1f3d8f09755851187a4dbb9b29196d29493c5eb89e8313254e9de4417e6ed683d3f9a13705d24047f09f3a89be45525d4db4ec7e577a955364b98c2b9e8ec6685ac071086d76406866a86e15de5ba3d1472a32d6fa4c0822f49381b40a2e29b0f1b35595a7f701ba1f9f4dfb70858cd8c88d6095145f7a611bf9f493f1114c74204b792e4ec4a72d832ebc0d1ca4c7467f5732f5435c0f427454396279d5bd5f1f44de48e1fc122e7297488970cba5b19215c0e34679cc63e39804b5b9f65c9e83e3444446bd558a7d35a94c266f2d45e00951f27f2f58626c9ce45afbfdd59700c24ca0566a45f315add4ecd74c7cc0b80fa7bd19ad91dacb8c047798c06958de8f712fdde131c1441449f0f12e7bc70d455fa24b584c955ee30427010f97600d4b2fe31551d0ec023a7448d28121961e449e85be5e02acfec0856bb7ee4b9d41ebda4be6c2a33ea52bc7093eb24e6bdf5e917df7f7cf3d71ff4fa6ebe591f04bf003a204396ada6aee2f74b355248458829d8afbc81ac5a418d9bdf89ce8a5949e8add41935e000813ad3cc8bdd7ba65cc86e39c84f130a75979164750fd74c0a82c28bbddfe8aae868c1fa21aecd166e219d2e586383961073ce260072ed6c249c0703159d9008a274cb681a956d79c9fe7fc57da75bb09874b614736fac05ed4f528fb5aa3a2c32ecb43531ea2d90d616fe526c0e08c33263c03bcc79d64f5d589dae74040bd3f38cf818300c39efe787f94ab691905f78cc75374f890494400f64d4507db6da6ea36fc716f5f07eef72ba6080edf472d89bc6056fb943d617ffd81a6d4bca0f618ded3afb8b4bfd5013ed69aedf1151af4786771ee66ac4f2d67c7268ea88261bca2a77ed3837e143e01a7a9e22e0dd2fbcb2d93ed34be60d51025e6904582c3e8ae1e03d90020b009d2649261f79f9dcaf00d1777acc553d738b328115811ee467674bd3a8da3f9f3042638bc7940b484c4f616127782694cb3ce5aefd389d3abde4ef659b1dd7678f5c3eceb5f4542765eabbb302f80eb3ed531e65714145967b9e33f1e34d148adfe1ebebd67a1aa452bcff5957876020489a1c4d02c578f6686aefc82b7a54dfc606f46927f115e0fb7fb235b62c8cb8a8394836d2ccd87398e29684b15c498878549c6df2c7df5c50889dc4a42f6638592285b950432cbf6d9937a6746b90b56a4d9bec403eaade6bd0df1485330df53413506819cffdeb6a726d95ea49fe49c1c50d8277f1920a7e605bbb59cd2024bedd12ebd109640b1d298d897ee4491dbb10a4a8ba35e8030148516aaf36646a2c1ca090291907c01094bdfc4ca0a833a34db5dbab8244901cc2091b5b41fd2c73afbe6bed4069dbb43911a7f911f8ef119a513a1d93552b94cafc82cb5a9a13ab6317bde3be40da7eff22ed66ca92d3e32f483566c410b7a7a32e5da6b3f895cbeeae1fcc594febb37529b1657a685cfd2817cce95175740fb2502f47b964c3bbba6f323018f7d22603994ea087269083bb6d2862a5accba07c5be5029e95047e72360d52323c013253106996c4159d8028460a24333612845d477ec2d0ba832089e7539b2d1e610aee1af8feb9f59b1854f26aa3473bac5dac39c87213015eec09aa99223167fc4dcc2f5fe6e94579aa6efd7be5dfb29ffc58debbd4726774d3482e00e4ee881dddd972235ac066948d8b2e1e8ae1bdd494dd31637bb8caa6cbe4adb3c2c68b684cd25207d63e080e5fedc1fb10217d5e93b2577521bdf99f16514d8197af0b7863e593865a175830c5a098490a491aff41c0c73c5e74e1b809b5e45bc77e286586779db01d73a50a5cb73ee3603fdf46b104780762985ef4921a5ae823a93d56146e89d13e6bc0ee902101c36374f568ea5bbcdd728738f97bacbd2d4e3ef042094c0c3f0080a1327667b414d4f8899b6e5ed2d84a5d5000000000000000000000000000000000000000000000000000000020e181e24262c30"
- }
- },
- {
- "seed": "f787f8077fb3d63524325b326ccb00c0cbb1da1f291ac50c5c5b8a18d7f02c2700318c63b18d9e2e9187ab2f66b207b3",
- "sendersAddress": "2033c33bb9ed7a3148a18075b0d856fdd3e49c2b",
- "type": "message",
- "cost": 500,
- "raw": [
- "0x06",
- "0x09184e72a000",
- "0x01f4",
- "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
- "0x016345785d8a0000",
- "0x",
- "0x5db87b993324049c182dfbfa42bd8bbbc7d13bd30c509e38cb9817a576d9d0d8926c42622878c1ca973af83a4b5a4e4768a65f50d505515fb418433fe1a7eb5a9256d62586b112d352516528ff469e42b68197cea0cb1fe58f1b9e555788f3132c2ebc23389c6d7766ccae7b3a827b3fe4fd641e2f8eecda66eef63a2432771f8c3ff4a4142b1276cbd2f0cd89485e1313a22e68c62eedbc211d94c7d44c081b068933a8f657721901ab8ce603ed3b8945c006d81fbaa6f4c62f7496a0dc39a31c85f342ee36f54ad92a1fc10fc83a9df85b3b763679bcb9dc2c792e5eec10d7c84570a3f0db71b55380cce04a3d8bd97b178f69cd2f0d102a0797d2e4e6626b2a961879c08ce29c9d8a04b8cdc32a93d981e891a98cb703061ee84bef245f5e9d00cef9f1c12db595178d9804363d6ab6b302c51f6fbec8fbd93db3a5ee1af9fe34b81c50e07d3e6082464a8f7c17002378712aefff01a6355d120cc12f3a6eb757fa74bd8e5dcb2a66d4e3a8e729e270496dd5e20539e80fbea70a1f21abc5d6c7527ca88380fd33dd52fd541116015ae38afd7a8b9a15cc8d895ab8cc661b050c53e4d6f36c0947ea730d1cd3455de42cfb453ff2b1687c493de3cb081bf64d0bc6f1af4202f6ecc4f6b5bb30fdab16a56405c9469b1d9ea9fdb4cbe8b8595c60959310a64fab3b0106871676bf346e4feba797baec9b7c50112573ef05fe62329abca1f12f6d1bdef831bb7ef290c1b398d31012f6742201fbd8c0490795aa7edf772279cb6193dc2690ca3fce642feeeea21a83becdf8b3f66158b04e3704274e435c605215daa6b6e56fea78195e757dda4c9aeb8cc7f6fffedca274b860939f9f9ad32b10c19569c8fec20876249ef25be8933904d62198abf355e5db79857923097d8098affde83f75ae7d2b85c8c25f1384e650a979694c8b262acf9513f9157dbac06b37b752645f8115fbb455e5bbb9caa265512e27e2c8bbd6dfb561b1f9cc80b91b802efda6e859954c786cf8dd57e02087edd85c50b8ea5a182b4b02d66d34aedff1390c1c644b1a4cae76bba95a59e87053f79a82a9eab0914c4ec5f298d93a157a8e81370c71cf8c490e775fc8509bad3f8d5b99ead8c6895f150920aac08f773597c50e276e20461552717c7b5e66dd17d9efd8b5daa87bf2dd3f1f144aeeb04e6e86979c344f26c79f77f908f3b95ee98b962c2ed64f232971258a613427bb0a720eca076efe8fa3dcf48f5079c0c20d21c2b1cb56fe8ce91eb7472b4438045276b5cadd0ec38a68aa8d1a3ea0ad74564f44329258c900f6390df1482141a96bb6aefc53a97c36ecacc9dd245fe9c541b9adb5d0807a2be2f030686f2ef14fda218e67719b20abf26e05d983142f5d6a71d79a9c1efdfdac9fddf10989f73b349b37a3b9b63ed34545052bb1c49207cc6fe0c86bcf7868a9351976f8b69c0664ee430e1a07f7c8a91e63b34422f2321e8942cbd6e1c46d33a9e419919d3db601f219ae06d73f11bf7b0c0ca88c02532feef92fc226a4e9f7aa730509205ef10d9f8ea320b41b0912ca90f92946183389fe507e0bb552910f372f6c56ad6f7c364f0e734cc6e9ab89e288a5c0160b526b4aa8645e9efdd60afbd34ad8b6ccdbfe935706e16a8f3669da52a6964fc966e1ac7cdf488ea5f4df2b2cc69b58038b951ccdcd66163b94b6fa6fd041dfd8bd7acf6c08e8d02582fee86215630f1ea8e50d4f457bdee7efa643eb63aa063bf384cac7eb47e0d4ca0e0b5b2f7a5995c439574dc19bade2ecf0db660f8e4e196029c8a179ca19bfae86679b6e8ad31a28031ec55b3c16bf36a087286c9175932752f36ec03eaee6f233297c417fad923d93982294a5a47f3f5cb6941be26ac8f7549fb59c8eb789afe05e539f0bf21607d9b65b00ce5ff90cf004931ac58e65c5e53884ebebb9163b9a01a7a47a5489ddb09249ce7f55f5dd2a4684ad8df1e06f5dbf29cd85dbfe308cc3003eca3fc0ec6d9a1d61308df5d513381689a9eed6d37ab2198f2f913fa414ab64af20651796c935eff41d6f5ac5228c2b8e1a1296ccd82fdbd911b82e7871b9b0317d688c119482d47c4ac175a6f081ff9dccf5c496b60d02336d70d480b05f7e88e32cbd8ad8db19ad953fca94f761aa5594b90e54123ad658f976c3fcd0dd94ca9aa72a8f48d5ef2aa3170d5199ae3de6ef27c3cb940d2edf3e53f9ddc52affda537cbc1db3e83ec5095228ebd6f307db40c406a3fda0c7633d74652ff15c4f5563d863472b0c862e4d95c767636c80f5906bbb4a4baa64993e60c4b03559ab6cc26bcd813fbc5cfddc9fea2ead0b07631df31d0becaa8675fff8e0a839ccbb2ac0e354886d5b9f8f8d067d66e88bf8a4f78bd1b2903ce0348f753df24c1af4bf4f417ad9c561f85c869efa7be0ce4b428991edc9a42a859fe3e07f31eb2c2dea08118c682ff1e7f34cde3c83e3d33bb2729f1b3a0eb1fb7795f43fca09609fc2c3db7f100901bc7126c47d164e773e62263be26c5b33fdcf086617a8ec7991df6736ee9bef121891dce3b3f06fa44b9403fe182adc4dd87184bde1ec9ff9dee3e2974166662f6ccde95aeafc6b554aabb2a4b2f3cb9dad352e0f46893d4044f0686eec4cd37df2c5051c20c39f80b3093ef47be35393766d051bd6542272ab21c189f3cd435bfdd19b72f5b84693319a68b8890f5e6b5596b48444a5cab7f2b67a28d8449450276581dc39e1b3b133ef1d827e976030982d644b51244fa38c76f03d0f078110634a0f0be16b3dce47725fc211650136b20b01e9e8621e17aabf2f244374cdaa720145795f48d8bae28f7b52c5729cd5fc2e4c0cc0c62eee997f7aced39bca57e75264727073717c3a2f2606a05f4db0888867b13491fae359fc6de093d005a1fea46372cf6c1c4365d098ff5554ad1dbd33f3211b25aadf037d4ec218ce6be37eb66f4f4482eb11310aec81cd6049226641f20d035b8242baee87d5b68dd2c81c5ccd5dcf9ebceabd018c32fbdd9c13f597062e74eed2fb3a230cd97497fad6abdcd5086fd98ae53f805b0ab37d7b46f4992da0af0d6e7f3f78a313ff311eae5bb0c5b18c6e6c5a38a915a711336efba860849609ca18c30cf16ac73dadf34d4fdbeab61dfe37f973155c86e48c479206f0ca9ceb222961376522760386f68ad1f2b9d9f39bf04da1891d7c0640a43d470e5e1fc9ba165ce6170e44704e42104fafe70127935f612a160af299a67815eceba9b73140269417b2a8ad7f4aec706bfa62166b86768106590ff5b45e2c23628db0911b073f5b7377bacff9cd59fd3fbd9f67279e1dbbd99b787a3e8536f2080562c52bcf9c7673c1162a4a38d5c42c29ce0346565bfa3c2a8e2c077fb14c4cf8d84b7e3181c5deec85cb4dbc0f35ed73bbc26fffab71ba6c441f6d9a29b5d133e4384b17a3aeb0a7c9cbc6e7ec18b6f050e75b7c2290e46d779c41a2a2775e2b3b089d0394853e2b442ab02feca6086f6c643f62d84b04ca4d759e6f3bc01da951b0c5cee6d18bb278d5a406a10a23cfe6607f99d65310641c62104185c87f43f264a95619ed740f79e881d8a17e0584fd2dfb0d2b425373f8bc96a85202afe572071686a08b5ecfc017d1ab83bf2281b2b51ec5f907a973524c6ffb0c51d9044d718074",
- "0xa125ef8dfe3cc1a0b73fefb61e23a04c286f7f13d0ae081a82745e36df0f76578171af7d401b041eb654dd8f01f5e6fb669254d0732f81a14c0357de7656916f49da4cceb4131e9b7558fc28dd287088908a36c7bf93a9b642851a56118a95663101b5d73456afbda3c49f4581f31504472332d668ed30e77ca6ca439000f08ab8e21cd2f780b7a7d3203aa1237b6a547d56ddc30090ae6aa1b04d50dc6690a098dd2cef3d7c3d096e23d2dbe4c9c7f13c4895ac1adbe7c3afb575700afceac2f5874ceb622c4ef87c821db563fad0a8ac8de1208463f56da9190d0ef464bc5ffd53789bb2a69122e44c07b071e322d0f6dcb22e5e2152c5e15e274277df3b50c0709804afe9e6dee20e2740197d950cce0217d411c797bb3d02e6dd96d1288f5c95278fe29f7447c812701abcc0ddbfa677a675d1fc0945aad6f87380383af184e9de5f0fa6b1f6c60ddadf8f80a2ebf486229fbeb51d7535281f7fcfb538a946af584555afe472ecc3eb4ce1519b524f0c659c6b560b1f2cf88c51edd2a9ebc21ebcb5488a2e4d81612e635eb4e6bf0f076ff40826031f36cf4d171c1631a8efdde1a32ad25a6a58948e2012e0d9ab22554be38aa6c79cad1fce30c1f452d0d68e1715a7a743210206f2d198b7d6ae061f99e6357463e5d0c5229db248a929a108f13d785190741dcb84bb07adb7dc6329a6f0faaae155a18d4096b7167e7c70a95670648399c3710a8b24557e9375453c2c5cd45753f96c3313d785a7863ef7fbd6eb44207bc334a18d048e7109d0315c62bd51bc21cc34665c98b909d043a214c087cc51e08007c73e78e49705ec2664909a09c5813690e3405e8affe1776ceb96a98d045831c9fdae91b7d25b6be5767c550b51978a46551ae12b20598c8604a277782eea7c0ca9a4e79c964d4b7d93b0f63216647990a0a6007f807a1f4f08b6e1a0683e4930aef057ae7b07371e0b52e73253739c2b74e7d000cdcbd3f5e2b8a3aacd21f271266c8cbede45c1e6f0afc53f999b4264dd31491bbca8e21079a823f500d6046d900f3fb65b63aca8b9d68543a39d2afe95faf67852e2a104378244153589a190f449af1ddf076439be68cba74f71aed86878deca2f75ff137ec46ee1b8d8b1faa65f92e676d700bb34b18c9dd35562cc45fe987df6c6407433a850422b86aaa6f23c9e0a5a1d9abdd3b895e9c9d369ddcec71b8dabb3aa88aee464fe303a2840e06f8b79e17a848a8a9180780e408265c77d81b8f25f7fcd0ce02fbd715cc63a533d24a81e5b8bda89c51bb6e7267ae9bc8901dfff18ba13d7d15301ff959076bf17feaccbe0e98a0eef35f841f89efb7a5881a76bc23098b6e6956dc0a042c009b89d25e1fd3cb97ab87201afbe8e64aec85a8600021894ef1d25bc1422bd668ed692a8f5e1a493568d6a2c6c7c8e1a0ee3f44ded17882d1907416c042d51e53d5967f460ef16b5eacab547c583d4bcab498edb4fdf46fb32f28518a8993515bfb549eb37787485a612e206ba291b2b2153d0bc1e5d2e71a04000ea674e83fc8a55e2e99669ada450a16c78f1ac786cc60bf38b63facc9f4710518ea7d11549aac3f094091fa7a9b5ecfdedff7615d173722f0ac9dbb9286ff4abeaa691e9656aa968b82ef3d69bbe8db06f82fa447a11c17522b91a2640f5c6eb038784f8cee9a751afc1f9cfc190ee8d89b66d722c2d63aebb26a8bdf7cf88cd716ee92b27682ad6e4bd6397fa8ba8f4ba1e6a471ff3f1d16e78b135cbeae258300232390ed8f59b2dc5d964c1662a26a481eb108ab19fd62147bee9b1879739690c6dd2cbfd29bad88051ddfaa75cc29ec166dbcd5c1ad96318b0beba54f0a25badb111978cb777699e4b84c1c0fa1fcc1cce790209d0aa1a6efd1135b2b0496d7fe61a34093815c18b250045168260fe481688c8192ffa2626b50f3feaa267b38d98efe20718bf93c46f00d6d4cdc4e29906d8c57a2e616c8f936bb4dea34ef5b659ad87d17b10b6f9cea78d4d67117dfd0a186b0d8d14eb63c6d4996efa2bf138a1995806d29c538dbeda1b112f330c1aa3d1d5f9f6731c30f71d67ad2d44b63955bad6696da36483de15c6769e5595b9ea506a779f6f5bd62146321157b1a8ed7d0e242daab77b043d86e25a0ff0ddfc9f2ab0f438227362bde133f6bfe534ab9cc8982c36abb37f8dab8e8d5898f895f587a95bf7c3aafe70a8f41f134732c11bd6a9be35223735e1da5991da99746a7dac1e7fdedbef790b65691ffccb161d8301fdadeda9bc9386bdd910c29420ea1ab33f1ae1321dfb0ce9273e79230f19b2ab6ea01c71cc1d6baf25edd2502fe6777ce982dba50e640e2c60d578f9f4478b83d104a8704d0b3a2823795796450fee480d0463822acd1ae82c03cf06c045fa0f30fd26d85ff6e7812e24a7cafbcba79913568adc7510a815bbf8b5c4ca0df80a35d1820e8929927f18a72836d07d641e2fd3178fc2b781652fec789c7b6c01aef45dfa1f77216714f761378422019845db95a5d4d826014fb2800f97a5b4c8ae13e38d1bc065f027315b80d498bf7a75da5c56eb600efbf7dd2a99c6398212bd66237da8c5e5ee4280c576cd08f0deb22c0dba6c4ac51165b28f39eee2ece3127a3d16e15e96651f73b72163356ffe76bfdd21db5e2ef5103a17150ee896c3f636f3e6a148b8bca67ee14d5c686b455d0272b67d469b02f525730ab3cb806d224ca4f2e70b852a20efeee40546e383b9a2556705f700129f713ce015338efd61d1a2e4df5267781580a55ab02b56d5b8e2758b421be473782ae51b3f3f6f543fb537d1535a782c390b0f9ee3628cadff9a279ef51eea7a8eab4630a8c6437ea874ce4e75e1514922e8a390e111b7cf2e014e7fdc0972f6658cdbe931861c0cd4639d417735077dc997fdeeb1f82ab39b98da890a0eabbe458755f93a668b91bd0bb51224018d6b7ee8b3c4dda733437ea562d0455049db34f3828ff3527acde279625519083398b89eca20ef56e6dcf4f00719896ec314851ee5772988861971b3ed7fc3be7f42bd2fcf5fa329016e48693a5a9fdd228b0fd30b7ff637bf501cb7165d9b99d771316fe7f19647150f1e5f61e3d78c4ce13520c494e30d9c53e4c5dd3887ca0692d7dad4af58adb3c1cc5da81bd8fd2b276a37e41ee8c9148c5cf070337303f998e81ac81f4c256bd0baf0f3fcda72d976c5598153ba6dc1a454c6ecc35bd59af79e742b06276f0acf89c2a380cf29206f4b944b798a66da201bdb1c17e5ec34e7dbdb50f9214f5b96bf1296a1cb504e5c08ef03184139978ac53ada5c916dd244b3a65cfad0466df9aedbc253c18fd4e099a48e6c68d489a7bf20b185ac81011c7b266a6054e86e2453d72608e4a343871faff80a01bec1190b440da72667fa7d2d6577a0a838395df18a9141a4b23ef762249fc28043484e3d0343dfe31ced1aa9e5742650aac7a91623618a073b5c00bec67ee535395d8c5de56b94f26f1119debd7940032d83d709c741eaf5c4b909b5e347953fe62137ad6df82ec1b41a273a8c1580ed313d28b48f58aaa3840722c7eb223b936d236f492b89a483408f615c0a7a0ef52c5d34fb2c150be72aa3a25cc755ace8e339af6670afb085afeef6c973565d808a867004ad5a82351dce499e2f5211e7806e033bcc90ac6d9d6f5eb474a74b556fe92164c031ad6ab9be88fef27c5f6418fcc9272359e9f7ef189e26329ac9a941898e6c3e526244e9d85a0c2cb33cfd6ac1acc40696388391337c9143b17e0fd5b0de1b144d978d51de1b31d4e97126746b7e5c2f45b71b87e66ccffcf306174998eb291bf195d5e16e05926dd91c90e774cfbc4451c8152239f02c10c1cc6ad11e00f3afa6c8ca1f713f2bd546b5067005a91f0dd6f3244313a6a128a9c90d8a78ef97e72fbcc04b22741ff1a4db01ed266b2da48b6c1971e12f1615b373e3e769b43a7c296644e04fec767164087cb532829d79cd2c1c3472f2b4058db7c80235baa2d7e234ec27a38ebf9f567cf0e93f4a190bb29604450c8f57bd1f7f0dcd81a35c86d11058994a322339fa39598a495556fb90193146ffb69a447d327f4246d0d4cb1b8a70521379c830ad50016c106fef94c5d436d704eea7cf3cb0c062e51065d377c309583e3425a65f0cc4da51e89b2f914143f0315fd1af1757d2ce0d78960a45b331ed2a8c5b313dfb071aca16560a7d78adb572bee481b7737c9e545fd4003ffa3267d7d7ff24aa2607f468a3c7e5466001abb0354f20ec672a35162392ed31208de8d5dff8324d4c16496126e981b9c9ac8b26447878a9299c8d3780a0a38e9db9ec7f9fcc8c01ada20db3dd74aa19422e9a0342f9562bbc7d06fc5bcc9896846c56f8438035dd8827bfc4ecfe02d17897019dbcab773e759eabe385660c81e1681909c008b2c2efd3cfce5e93a2e6691e81dc8dba7df2e65ad92aa20d38a55764c3c4fe4ccb73419d153c64c774fa82bed6f355a8dd47c649812b7dc55d70d76aa930eee97111c08d1a5fe53d6eb27a9079f8755f87f8044a102610b2378ebd5a254e7ad666da5ea3431e8e44eb37121a102ec5f2afe33dba863be337793a7b8810e9dd6b6d7ce916dc9774914e5bcfacf441e8f0bf5ea407c6db2b6ddfdff4d49a96851e1b2fd23091cabf016341647468abcbe43e2a6c99d6981302b20bfcc1573edfd9b2d91624940b2c68410b126b824937c976dfa8e7ead14303c4ea0a681529936724e2a0060ef516ffbb5b1cad8c840b298299aa27e5b84a690cebbaf96e590479b8d4d9857976ee5c24b94c98a6be1d7a143d5f5abc555631fe053b5cecd53dca92970c136900fded91ebcc980bb668b3db4bafdb0f028e577b2af342dafb352ab0a9a235822119543911fa88c9567ae2d8b8cdb573cc7846ff3f7331f4646ca9c88db29a209854c30131692bcc88f0807b07df446b06f14c4432b4a7344a62fff0937462dafd3ea523883275fb882eb9b961fd0d27beed0356e7a14cf4bc33a6ba81b1b1ea0bf3e72146a771ce00f837a748e1ae67463d921bf1ab1adfc28635dca9f9054a7578f37b66b508e281f9e9b5736fc6a0ba88fc987ee0b2acd4a2530c8857d02bfd5356f3c86d11aac046aabf997a1f9243c9c7b84e9e8381bab894e4644e05e953c92b9e9f57ae2c9956ee5f7c947188ad2c0b9513a45b2c55ec0c2970e337518689f12bcb2e2274461be5767a0f86601cfd598c92297eff26a3444c89372b8724f37e0569340da98a60669cea4bacad9f8f4f1c7a79bb17071791bf1ab7d3eb8376729c29f0c09e46a189bee071431a99ff61b3844f445465c342b0a5d77ef84e6f08853eee14736bb93245cfb0f0a2fd62d7642bccbb304e9f25c1578b0f00389d5aa32b6e3dfda87778a4dac0fb13bf396e37d1773e5720af0dc827855256190ec8b2ecd1f6262c03becbd61288d125813c470cf564a70498eed7c33cb443ed593ddd606c3aa31ec11e90c2cafc4955fa96b7d1bc633f04a59377c76678d33a7ab46bd9e95065510b1644600895a5bfb8678859f977b7e7fddb8857bb9c2762fb74fdf78a4d3083c4d649d3e0fe7d3ef47d76b9dda7e4373eec068d038d72d70f8e0a1c765b9b6600490d1428e472f4f41ce50c278864a8a8911abdb7687c90df65bff72b6cb636342731198363a8326186e15a95436cfc2361740d4cad73e53f13bbc3336c91cf08e8296bcecfb068670b4b17360109fe54b58c6c581cd1894f450c17ebcb1d886c34c8ce4373fca34809b069b3a80e262eaeb0544a8f8ff1bac0faebe0f8b9a138cf7109458c7cae7c2149f11e0287e3aa1f34c06d5d45733888346decbee4490474e2dba81ce190b8684b0cb14623234bb97623df448babefa7d718d89cf6cced893c5d48ee70f575223f99eb67aad770b1d6fafb8c4b9de064a35add215c4764b0ba2c6c5d7b72d15958cf0f0b89334189a51382b2abc2103a0b244e2869be38f64f0d1ad77c011163effc7f756c3a555f7676f543794ed789938d478a38721fcdc98f9486dd2d8d599a566c5e48a0778eb1125a2651751bc7d079cba0ae3d4b52de6b2d5eaefd1ad674657f6c312681695149caf9f282c1bc87ad980301a84230fd9b249916553f94dc7e970d545a615cd4d47f8c67701e20e79c6729fdf83ca779e72f9249f1e4a42ea248b1927d55b29acb3453184d5086afdafee7cf1bfb2a684a7e4b262e0703ee3bdf3485617799da1e750e183d82c043984dfe18563f97c267d322173ef655c2c4042eae5326206d8c0fa3c267d8ee056ac498f2a5f29352612b723319fa9e06774d2e35e9511c77e71fdd6ccaefc78af39485eb57bce2c74fe60df04792c0735e0faf58ca878604081d2f35539b9de5f8354e4fa8c7cb0b206974f82aa9be062526294860c3deeb132c5c6894ebeef5115875778695c6020e1c46697185b8ebef00000000000000000000000000000000000a1015182129303a"
- ],
- "data": {
- "nonce": "0x06",
- "gasPrice": "0x09184e72a000",
- "gasLimit": "0x01f4",
- "to": "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
- "value": "0x016345785d8a0000",
- "data": "0x",
- "publicKey": "0x5db87b993324049c182dfbfa42bd8bbbc7d13bd30c509e38cb9817a576d9d0d8926c42622878c1ca973af83a4b5a4e4768a65f50d505515fb418433fe1a7eb5a9256d62586b112d352516528ff469e42b68197cea0cb1fe58f1b9e555788f3132c2ebc23389c6d7766ccae7b3a827b3fe4fd641e2f8eecda66eef63a2432771f8c3ff4a4142b1276cbd2f0cd89485e1313a22e68c62eedbc211d94c7d44c081b068933a8f657721901ab8ce603ed3b8945c006d81fbaa6f4c62f7496a0dc39a31c85f342ee36f54ad92a1fc10fc83a9df85b3b763679bcb9dc2c792e5eec10d7c84570a3f0db71b55380cce04a3d8bd97b178f69cd2f0d102a0797d2e4e6626b2a961879c08ce29c9d8a04b8cdc32a93d981e891a98cb703061ee84bef245f5e9d00cef9f1c12db595178d9804363d6ab6b302c51f6fbec8fbd93db3a5ee1af9fe34b81c50e07d3e6082464a8f7c17002378712aefff01a6355d120cc12f3a6eb757fa74bd8e5dcb2a66d4e3a8e729e270496dd5e20539e80fbea70a1f21abc5d6c7527ca88380fd33dd52fd541116015ae38afd7a8b9a15cc8d895ab8cc661b050c53e4d6f36c0947ea730d1cd3455de42cfb453ff2b1687c493de3cb081bf64d0bc6f1af4202f6ecc4f6b5bb30fdab16a56405c9469b1d9ea9fdb4cbe8b8595c60959310a64fab3b0106871676bf346e4feba797baec9b7c50112573ef05fe62329abca1f12f6d1bdef831bb7ef290c1b398d31012f6742201fbd8c0490795aa7edf772279cb6193dc2690ca3fce642feeeea21a83becdf8b3f66158b04e3704274e435c605215daa6b6e56fea78195e757dda4c9aeb8cc7f6fffedca274b860939f9f9ad32b10c19569c8fec20876249ef25be8933904d62198abf355e5db79857923097d8098affde83f75ae7d2b85c8c25f1384e650a979694c8b262acf9513f9157dbac06b37b752645f8115fbb455e5bbb9caa265512e27e2c8bbd6dfb561b1f9cc80b91b802efda6e859954c786cf8dd57e02087edd85c50b8ea5a182b4b02d66d34aedff1390c1c644b1a4cae76bba95a59e87053f79a82a9eab0914c4ec5f298d93a157a8e81370c71cf8c490e775fc8509bad3f8d5b99ead8c6895f150920aac08f773597c50e276e20461552717c7b5e66dd17d9efd8b5daa87bf2dd3f1f144aeeb04e6e86979c344f26c79f77f908f3b95ee98b962c2ed64f232971258a613427bb0a720eca076efe8fa3dcf48f5079c0c20d21c2b1cb56fe8ce91eb7472b4438045276b5cadd0ec38a68aa8d1a3ea0ad74564f44329258c900f6390df1482141a96bb6aefc53a97c36ecacc9dd245fe9c541b9adb5d0807a2be2f030686f2ef14fda218e67719b20abf26e05d983142f5d6a71d79a9c1efdfdac9fddf10989f73b349b37a3b9b63ed34545052bb1c49207cc6fe0c86bcf7868a9351976f8b69c0664ee430e1a07f7c8a91e63b34422f2321e8942cbd6e1c46d33a9e419919d3db601f219ae06d73f11bf7b0c0ca88c02532feef92fc226a4e9f7aa730509205ef10d9f8ea320b41b0912ca90f92946183389fe507e0bb552910f372f6c56ad6f7c364f0e734cc6e9ab89e288a5c0160b526b4aa8645e9efdd60afbd34ad8b6ccdbfe935706e16a8f3669da52a6964fc966e1ac7cdf488ea5f4df2b2cc69b58038b951ccdcd66163b94b6fa6fd041dfd8bd7acf6c08e8d02582fee86215630f1ea8e50d4f457bdee7efa643eb63aa063bf384cac7eb47e0d4ca0e0b5b2f7a5995c439574dc19bade2ecf0db660f8e4e196029c8a179ca19bfae86679b6e8ad31a28031ec55b3c16bf36a087286c9175932752f36ec03eaee6f233297c417fad923d93982294a5a47f3f5cb6941be26ac8f7549fb59c8eb789afe05e539f0bf21607d9b65b00ce5ff90cf004931ac58e65c5e53884ebebb9163b9a01a7a47a5489ddb09249ce7f55f5dd2a4684ad8df1e06f5dbf29cd85dbfe308cc3003eca3fc0ec6d9a1d61308df5d513381689a9eed6d37ab2198f2f913fa414ab64af20651796c935eff41d6f5ac5228c2b8e1a1296ccd82fdbd911b82e7871b9b0317d688c119482d47c4ac175a6f081ff9dccf5c496b60d02336d70d480b05f7e88e32cbd8ad8db19ad953fca94f761aa5594b90e54123ad658f976c3fcd0dd94ca9aa72a8f48d5ef2aa3170d5199ae3de6ef27c3cb940d2edf3e53f9ddc52affda537cbc1db3e83ec5095228ebd6f307db40c406a3fda0c7633d74652ff15c4f5563d863472b0c862e4d95c767636c80f5906bbb4a4baa64993e60c4b03559ab6cc26bcd813fbc5cfddc9fea2ead0b07631df31d0becaa8675fff8e0a839ccbb2ac0e354886d5b9f8f8d067d66e88bf8a4f78bd1b2903ce0348f753df24c1af4bf4f417ad9c561f85c869efa7be0ce4b428991edc9a42a859fe3e07f31eb2c2dea08118c682ff1e7f34cde3c83e3d33bb2729f1b3a0eb1fb7795f43fca09609fc2c3db7f100901bc7126c47d164e773e62263be26c5b33fdcf086617a8ec7991df6736ee9bef121891dce3b3f06fa44b9403fe182adc4dd87184bde1ec9ff9dee3e2974166662f6ccde95aeafc6b554aabb2a4b2f3cb9dad352e0f46893d4044f0686eec4cd37df2c5051c20c39f80b3093ef47be35393766d051bd6542272ab21c189f3cd435bfdd19b72f5b84693319a68b8890f5e6b5596b48444a5cab7f2b67a28d8449450276581dc39e1b3b133ef1d827e976030982d644b51244fa38c76f03d0f078110634a0f0be16b3dce47725fc211650136b20b01e9e8621e17aabf2f244374cdaa720145795f48d8bae28f7b52c5729cd5fc2e4c0cc0c62eee997f7aced39bca57e75264727073717c3a2f2606a05f4db0888867b13491fae359fc6de093d005a1fea46372cf6c1c4365d098ff5554ad1dbd33f3211b25aadf037d4ec218ce6be37eb66f4f4482eb11310aec81cd6049226641f20d035b8242baee87d5b68dd2c81c5ccd5dcf9ebceabd018c32fbdd9c13f597062e74eed2fb3a230cd97497fad6abdcd5086fd98ae53f805b0ab37d7b46f4992da0af0d6e7f3f78a313ff311eae5bb0c5b18c6e6c5a38a915a711336efba860849609ca18c30cf16ac73dadf34d4fdbeab61dfe37f973155c86e48c479206f0ca9ceb222961376522760386f68ad1f2b9d9f39bf04da1891d7c0640a43d470e5e1fc9ba165ce6170e44704e42104fafe70127935f612a160af299a67815eceba9b73140269417b2a8ad7f4aec706bfa62166b86768106590ff5b45e2c23628db0911b073f5b7377bacff9cd59fd3fbd9f67279e1dbbd99b787a3e8536f2080562c52bcf9c7673c1162a4a38d5c42c29ce0346565bfa3c2a8e2c077fb14c4cf8d84b7e3181c5deec85cb4dbc0f35ed73bbc26fffab71ba6c441f6d9a29b5d133e4384b17a3aeb0a7c9cbc6e7ec18b6f050e75b7c2290e46d779c41a2a2775e2b3b089d0394853e2b442ab02feca6086f6c643f62d84b04ca4d759e6f3bc01da951b0c5cee6d18bb278d5a406a10a23cfe6607f99d65310641c62104185c87f43f264a95619ed740f79e881d8a17e0584fd2dfb0d2b425373f8bc96a85202afe572071686a08b5ecfc017d1ab83bf2281b2b51ec5f907a973524c6ffb0c51d9044d718074",
- "signature": "0xa125ef8dfe3cc1a0b73fefb61e23a04c286f7f13d0ae081a82745e36df0f76578171af7d401b041eb654dd8f01f5e6fb669254d0732f81a14c0357de7656916f49da4cceb4131e9b7558fc28dd287088908a36c7bf93a9b642851a56118a95663101b5d73456afbda3c49f4581f31504472332d668ed30e77ca6ca439000f08ab8e21cd2f780b7a7d3203aa1237b6a547d56ddc30090ae6aa1b04d50dc6690a098dd2cef3d7c3d096e23d2dbe4c9c7f13c4895ac1adbe7c3afb575700afceac2f5874ceb622c4ef87c821db563fad0a8ac8de1208463f56da9190d0ef464bc5ffd53789bb2a69122e44c07b071e322d0f6dcb22e5e2152c5e15e274277df3b50c0709804afe9e6dee20e2740197d950cce0217d411c797bb3d02e6dd96d1288f5c95278fe29f7447c812701abcc0ddbfa677a675d1fc0945aad6f87380383af184e9de5f0fa6b1f6c60ddadf8f80a2ebf486229fbeb51d7535281f7fcfb538a946af584555afe472ecc3eb4ce1519b524f0c659c6b560b1f2cf88c51edd2a9ebc21ebcb5488a2e4d81612e635eb4e6bf0f076ff40826031f36cf4d171c1631a8efdde1a32ad25a6a58948e2012e0d9ab22554be38aa6c79cad1fce30c1f452d0d68e1715a7a743210206f2d198b7d6ae061f99e6357463e5d0c5229db248a929a108f13d785190741dcb84bb07adb7dc6329a6f0faaae155a18d4096b7167e7c70a95670648399c3710a8b24557e9375453c2c5cd45753f96c3313d785a7863ef7fbd6eb44207bc334a18d048e7109d0315c62bd51bc21cc34665c98b909d043a214c087cc51e08007c73e78e49705ec2664909a09c5813690e3405e8affe1776ceb96a98d045831c9fdae91b7d25b6be5767c550b51978a46551ae12b20598c8604a277782eea7c0ca9a4e79c964d4b7d93b0f63216647990a0a6007f807a1f4f08b6e1a0683e4930aef057ae7b07371e0b52e73253739c2b74e7d000cdcbd3f5e2b8a3aacd21f271266c8cbede45c1e6f0afc53f999b4264dd31491bbca8e21079a823f500d6046d900f3fb65b63aca8b9d68543a39d2afe95faf67852e2a104378244153589a190f449af1ddf076439be68cba74f71aed86878deca2f75ff137ec46ee1b8d8b1faa65f92e676d700bb34b18c9dd35562cc45fe987df6c6407433a850422b86aaa6f23c9e0a5a1d9abdd3b895e9c9d369ddcec71b8dabb3aa88aee464fe303a2840e06f8b79e17a848a8a9180780e408265c77d81b8f25f7fcd0ce02fbd715cc63a533d24a81e5b8bda89c51bb6e7267ae9bc8901dfff18ba13d7d15301ff959076bf17feaccbe0e98a0eef35f841f89efb7a5881a76bc23098b6e6956dc0a042c009b89d25e1fd3cb97ab87201afbe8e64aec85a8600021894ef1d25bc1422bd668ed692a8f5e1a493568d6a2c6c7c8e1a0ee3f44ded17882d1907416c042d51e53d5967f460ef16b5eacab547c583d4bcab498edb4fdf46fb32f28518a8993515bfb549eb37787485a612e206ba291b2b2153d0bc1e5d2e71a04000ea674e83fc8a55e2e99669ada450a16c78f1ac786cc60bf38b63facc9f4710518ea7d11549aac3f094091fa7a9b5ecfdedff7615d173722f0ac9dbb9286ff4abeaa691e9656aa968b82ef3d69bbe8db06f82fa447a11c17522b91a2640f5c6eb038784f8cee9a751afc1f9cfc190ee8d89b66d722c2d63aebb26a8bdf7cf88cd716ee92b27682ad6e4bd6397fa8ba8f4ba1e6a471ff3f1d16e78b135cbeae258300232390ed8f59b2dc5d964c1662a26a481eb108ab19fd62147bee9b1879739690c6dd2cbfd29bad88051ddfaa75cc29ec166dbcd5c1ad96318b0beba54f0a25badb111978cb777699e4b84c1c0fa1fcc1cce790209d0aa1a6efd1135b2b0496d7fe61a34093815c18b250045168260fe481688c8192ffa2626b50f3feaa267b38d98efe20718bf93c46f00d6d4cdc4e29906d8c57a2e616c8f936bb4dea34ef5b659ad87d17b10b6f9cea78d4d67117dfd0a186b0d8d14eb63c6d4996efa2bf138a1995806d29c538dbeda1b112f330c1aa3d1d5f9f6731c30f71d67ad2d44b63955bad6696da36483de15c6769e5595b9ea506a779f6f5bd62146321157b1a8ed7d0e242daab77b043d86e25a0ff0ddfc9f2ab0f438227362bde133f6bfe534ab9cc8982c36abb37f8dab8e8d5898f895f587a95bf7c3aafe70a8f41f134732c11bd6a9be35223735e1da5991da99746a7dac1e7fdedbef790b65691ffccb161d8301fdadeda9bc9386bdd910c29420ea1ab33f1ae1321dfb0ce9273e79230f19b2ab6ea01c71cc1d6baf25edd2502fe6777ce982dba50e640e2c60d578f9f4478b83d104a8704d0b3a2823795796450fee480d0463822acd1ae82c03cf06c045fa0f30fd26d85ff6e7812e24a7cafbcba79913568adc7510a815bbf8b5c4ca0df80a35d1820e8929927f18a72836d07d641e2fd3178fc2b781652fec789c7b6c01aef45dfa1f77216714f761378422019845db95a5d4d826014fb2800f97a5b4c8ae13e38d1bc065f027315b80d498bf7a75da5c56eb600efbf7dd2a99c6398212bd66237da8c5e5ee4280c576cd08f0deb22c0dba6c4ac51165b28f39eee2ece3127a3d16e15e96651f73b72163356ffe76bfdd21db5e2ef5103a17150ee896c3f636f3e6a148b8bca67ee14d5c686b455d0272b67d469b02f525730ab3cb806d224ca4f2e70b852a20efeee40546e383b9a2556705f700129f713ce015338efd61d1a2e4df5267781580a55ab02b56d5b8e2758b421be473782ae51b3f3f6f543fb537d1535a782c390b0f9ee3628cadff9a279ef51eea7a8eab4630a8c6437ea874ce4e75e1514922e8a390e111b7cf2e014e7fdc0972f6658cdbe931861c0cd4639d417735077dc997fdeeb1f82ab39b98da890a0eabbe458755f93a668b91bd0bb51224018d6b7ee8b3c4dda733437ea562d0455049db34f3828ff3527acde279625519083398b89eca20ef56e6dcf4f00719896ec314851ee5772988861971b3ed7fc3be7f42bd2fcf5fa329016e48693a5a9fdd228b0fd30b7ff637bf501cb7165d9b99d771316fe7f19647150f1e5f61e3d78c4ce13520c494e30d9c53e4c5dd3887ca0692d7dad4af58adb3c1cc5da81bd8fd2b276a37e41ee8c9148c5cf070337303f998e81ac81f4c256bd0baf0f3fcda72d976c5598153ba6dc1a454c6ecc35bd59af79e742b06276f0acf89c2a380cf29206f4b944b798a66da201bdb1c17e5ec34e7dbdb50f9214f5b96bf1296a1cb504e5c08ef03184139978ac53ada5c916dd244b3a65cfad0466df9aedbc253c18fd4e099a48e6c68d489a7bf20b185ac81011c7b266a6054e86e2453d72608e4a343871faff80a01bec1190b440da72667fa7d2d6577a0a838395df18a9141a4b23ef762249fc28043484e3d0343dfe31ced1aa9e5742650aac7a91623618a073b5c00bec67ee535395d8c5de56b94f26f1119debd7940032d83d709c741eaf5c4b909b5e347953fe62137ad6df82ec1b41a273a8c1580ed313d28b48f58aaa3840722c7eb223b936d236f492b89a483408f615c0a7a0ef52c5d34fb2c150be72aa3a25cc755ace8e339af6670afb085afeef6c973565d808a867004ad5a82351dce499e2f5211e7806e033bcc90ac6d9d6f5eb474a74b556fe92164c031ad6ab9be88fef27c5f6418fcc9272359e9f7ef189e26329ac9a941898e6c3e526244e9d85a0c2cb33cfd6ac1acc40696388391337c9143b17e0fd5b0de1b144d978d51de1b31d4e97126746b7e5c2f45b71b87e66ccffcf306174998eb291bf195d5e16e05926dd91c90e774cfbc4451c8152239f02c10c1cc6ad11e00f3afa6c8ca1f713f2bd546b5067005a91f0dd6f3244313a6a128a9c90d8a78ef97e72fbcc04b22741ff1a4db01ed266b2da48b6c1971e12f1615b373e3e769b43a7c296644e04fec767164087cb532829d79cd2c1c3472f2b4058db7c80235baa2d7e234ec27a38ebf9f567cf0e93f4a190bb29604450c8f57bd1f7f0dcd81a35c86d11058994a322339fa39598a495556fb90193146ffb69a447d327f4246d0d4cb1b8a70521379c830ad50016c106fef94c5d436d704eea7cf3cb0c062e51065d377c309583e3425a65f0cc4da51e89b2f914143f0315fd1af1757d2ce0d78960a45b331ed2a8c5b313dfb071aca16560a7d78adb572bee481b7737c9e545fd4003ffa3267d7d7ff24aa2607f468a3c7e5466001abb0354f20ec672a35162392ed31208de8d5dff8324d4c16496126e981b9c9ac8b26447878a9299c8d3780a0a38e9db9ec7f9fcc8c01ada20db3dd74aa19422e9a0342f9562bbc7d06fc5bcc9896846c56f8438035dd8827bfc4ecfe02d17897019dbcab773e759eabe385660c81e1681909c008b2c2efd3cfce5e93a2e6691e81dc8dba7df2e65ad92aa20d38a55764c3c4fe4ccb73419d153c64c774fa82bed6f355a8dd47c649812b7dc55d70d76aa930eee97111c08d1a5fe53d6eb27a9079f8755f87f8044a102610b2378ebd5a254e7ad666da5ea3431e8e44eb37121a102ec5f2afe33dba863be337793a7b8810e9dd6b6d7ce916dc9774914e5bcfacf441e8f0bf5ea407c6db2b6ddfdff4d49a96851e1b2fd23091cabf016341647468abcbe43e2a6c99d6981302b20bfcc1573edfd9b2d91624940b2c68410b126b824937c976dfa8e7ead14303c4ea0a681529936724e2a0060ef516ffbb5b1cad8c840b298299aa27e5b84a690cebbaf96e590479b8d4d9857976ee5c24b94c98a6be1d7a143d5f5abc555631fe053b5cecd53dca92970c136900fded91ebcc980bb668b3db4bafdb0f028e577b2af342dafb352ab0a9a235822119543911fa88c9567ae2d8b8cdb573cc7846ff3f7331f4646ca9c88db29a209854c30131692bcc88f0807b07df446b06f14c4432b4a7344a62fff0937462dafd3ea523883275fb882eb9b961fd0d27beed0356e7a14cf4bc33a6ba81b1b1ea0bf3e72146a771ce00f837a748e1ae67463d921bf1ab1adfc28635dca9f9054a7578f37b66b508e281f9e9b5736fc6a0ba88fc987ee0b2acd4a2530c8857d02bfd5356f3c86d11aac046aabf997a1f9243c9c7b84e9e8381bab894e4644e05e953c92b9e9f57ae2c9956ee5f7c947188ad2c0b9513a45b2c55ec0c2970e337518689f12bcb2e2274461be5767a0f86601cfd598c92297eff26a3444c89372b8724f37e0569340da98a60669cea4bacad9f8f4f1c7a79bb17071791bf1ab7d3eb8376729c29f0c09e46a189bee071431a99ff61b3844f445465c342b0a5d77ef84e6f08853eee14736bb93245cfb0f0a2fd62d7642bccbb304e9f25c1578b0f00389d5aa32b6e3dfda87778a4dac0fb13bf396e37d1773e5720af0dc827855256190ec8b2ecd1f6262c03becbd61288d125813c470cf564a70498eed7c33cb443ed593ddd606c3aa31ec11e90c2cafc4955fa96b7d1bc633f04a59377c76678d33a7ab46bd9e95065510b1644600895a5bfb8678859f977b7e7fddb8857bb9c2762fb74fdf78a4d3083c4d649d3e0fe7d3ef47d76b9dda7e4373eec068d038d72d70f8e0a1c765b9b6600490d1428e472f4f41ce50c278864a8a8911abdb7687c90df65bff72b6cb636342731198363a8326186e15a95436cfc2361740d4cad73e53f13bbc3336c91cf08e8296bcecfb068670b4b17360109fe54b58c6c581cd1894f450c17ebcb1d886c34c8ce4373fca34809b069b3a80e262eaeb0544a8f8ff1bac0faebe0f8b9a138cf7109458c7cae7c2149f11e0287e3aa1f34c06d5d45733888346decbee4490474e2dba81ce190b8684b0cb14623234bb97623df448babefa7d718d89cf6cced893c5d48ee70f575223f99eb67aad770b1d6fafb8c4b9de064a35add215c4764b0ba2c6c5d7b72d15958cf0f0b89334189a51382b2abc2103a0b244e2869be38f64f0d1ad77c011163effc7f756c3a555f7676f543794ed789938d478a38721fcdc98f9486dd2d8d599a566c5e48a0778eb1125a2651751bc7d079cba0ae3d4b52de6b2d5eaefd1ad674657f6c312681695149caf9f282c1bc87ad980301a84230fd9b249916553f94dc7e970d545a615cd4d47f8c67701e20e79c6729fdf83ca779e72f9249f1e4a42ea248b1927d55b29acb3453184d5086afdafee7cf1bfb2a684a7e4b262e0703ee3bdf3485617799da1e750e183d82c043984dfe18563f97c267d322173ef655c2c4042eae5326206d8c0fa3c267d8ee056ac498f2a5f29352612b723319fa9e06774d2e35e9511c77e71fdd6ccaefc78af39485eb57bce2c74fe60df04792c0735e0faf58ca878604081d2f35539b9de5f8354e4fa8c7cb0b206974f82aa9be062526294860c3deeb132c5c6894ebeef5115875778695c6020e1c46697185b8ebef00000000000000000000000000000000000a1015182129303a"
- }
- },
- {
- "seed": "f55ab020030ada5a184cfcb4f2fe4795e91573c5c957f6a25383f7a2c1cae395c9f37cbc5fef2d0df0567db26cb4bc14",
- "sendersAddress": "202ec79c26fdc36ce2db1a8f1aceb2fc19b7db80",
- "type": "message",
- "cost": 2420,
- "raw": [
- "0x06",
- "0x09184e72a000",
- "0x0974",
- "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
- "0x016345785d8a0000",
- "0x00000000000000000000000000000000000000000000000000000000000000ad000000000000000000000000000000000000000000000000000000000000fafa0000000000000000000000000000000000000000000000000000000000000dfa0000000000000000000000000000000000000000000000000000000000000dfa00000000000000000000000000000000000000000000000000000000000000ad000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000df000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000df000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000d",
- "0x3d825295d62ba9c7f830383b54c9c1d01b38d3b46b6bac71ba0313d162ccb47e6836279999548b0437c0429845f886c2257e2f71412abfd97ad9c1304704672929a89cf140c91d498b15b1efe4a8614d20e3fb533901c7402abfa735f1b84cc646c6eb9f14e60d7e04875a485e4f557e0bde53cf313caa0cf5f585f006b4b0f6e574b6dcc69a0fe85a98fbece67406cabdc01828a7ae8d217b4712cf14d5c00dee6a43b15486e74a781a88879093110918da29ebce85048e90ebd971455c7421a2f047a8d2e0d206b05d2158d97969cd598b4a7339f70a1965d4dd724160255415825c8de9460752617a35d467fedd84bce019c83543db53cb51380baf155a364a79e986aa339677fd57d97a9019316e54b7283490d2f396ad374da3fd4232bf3e6506e79999f92617e383afaed18bab546853f582c3828bfe3bfa4378dd4b2f95fc62cd3a86e1edc94c5a4ed06c497aa097fcdd5b0e87a35a386427c393ee7be4ddc02c566d0d9cf6f2018b71d922d0a08777f11fd40bed4a9ddc138572ab19ee70a524bab2a58368f065fdb9b542fc37693a3f37563fcc754a9655d1b3359ab95f3b79424753cd2cdc4db772238e2febdf680fd91402f6b55444bda42be743e89b97b0256cf3a3ca52a94aba8fc4b256e0383985bb1d7d282b1b6268d9ac6924327eef1b85bf9bce0b30781f1b96d37ea432aa46250fed8a9ef35f22a35fdcd53bc92d5c7223522595f7c8eecf5fc7c1952d8b9685f7006b3496c4531ab49da5acc58a8fca865c64a52b7d490bbc3ab7c0484e8bd030a8e42055d67bb750a7d872be38326bb41a7d2fde077bcea3bb9f2da94306af53ba6d963e56e705c027ad4de6fad31796f512045ec3b7a5d2ab3a3620e817649c6c99bfc0b76e7938b53f9378deaf1bff5cec26554857cc48be432ce47c170875b409892804d55f5ebc87c4c10137075ef2e322f94f148dee19b6eb3d058c5fc508f044ed1fe7ca36baa7804525af96f3da466d4c017c70aca15aa550cf9190ccd9d5cfcbaeb3011c0fb89f556fc7da8c424f50ad4fb5174166110f6b147c64efff57866cdaf0777b4b01e9ae814838fe1a7c8479544879389fe744bfaaa88b18fa3ac862e404171014b9af2f714afd3ac647bc25346c7daaeb93f2d02e2d83b066984927afc68246148d013973c812956d86e19e8483c13bdb09d2921ed05cc8774a9b1d70d00c6d6a9feec126947f6f417a0f95f431a9a6b9a9dcb872c206e55f49bb0da8752d9e5d9168fea3ae41d9fc500eac731c27441bba02c7a741429baee5c1dca8e722377724f4185371aa0112532feed26c7bdf5d4b6a316004f0ecebcb3cd52043b7ce5cfb2d400d80d47cc1d2b9d5c77f5cf83e74be3d1ec77c68311fe77669473a960ceb8ada5ed3f71081b170364f6c2546dab2a79ed289a25c507fc968ba205968938712d651a2b92cc5008c4891dc4e709db74979834834e1cef5a8a4385a438f99c1bf16edd37221284a3fd7c9cf22cdaa47f5318cebe60ecadb0b8f78e4186fa67bf6321c033dbb7433c17eee6180c3d1e07c6b0464fbba0505979a8de417f349466cbdc89b6c6650fd7414d936b4aef01f512d1a47932bcc2572b91fc2bd3fbf6803aa761d9c20fd4065cd9c8f4934a27a90fc2facb3bc8e0bc9d89a22a4cae9aee382266e8288dc67cafdbcba1ad2e48b218ec809e2ae9d2d507d1f802b039e66ab877247bc2dbb93bdba46a89b3133cd2f565d31fdd03cd916a28a8904f0c069373055d7781efa09be7145abdb3c435c6b1c86d7f19acee12964d8857100911296cdd6d36ce7ff2096bc7e4384a70e57fdc0d5b07955d10892556088dfd6c51616e8034a905b29939a1266860b8fd3d94721b3098cd7b4dfab9bc3cd909e09b56e59134556e480bedeb3b170cc376598cf47d0ddb15010f3bc1df4fa18ba2b09608e1775ffa015a18252686cb1f3a0090b6028252d2466bc5c31c947870c150dc5f78426defb44be48f74cac36efa1710254663e7ac9630dd9ac35e4472752c52b65622a787dd8bbc9e7639ca3d1a2c1e8f78c74a4131ad32110c7d1bb7595c63c006aa2ab8454d675741f59e03511308610a0ac24ccd129bb49fee63d399de4e104b0f5efbb2a4dd6ff42a28d3933bb0f62f18a8dce66b8f255b494e217833393fc96d8258264c958abaf8c9b6f6781c7bec2afa4eb0f9cca8e6cb6810388dea6ab836ebf7c89c763501972509ce5543982850e4477f531bc9e8d2f70607a2606ddd818c0857e40011dcd9b8fb76cb211a39cb41dbcfbff43dbc7bdd25a6a99677c3c5bebf399228a6534bff31c8610e5bafd70c69c4694bef2ee442f32d4b62e15d37a4fbd8f27097dbf5b53ea9e575b8f80c8f07c41a27d493dcfe04e2399ac43f53285754ab708e3da1c55050b65611815020f3117d9cf25dc8be0bae56f525f9ab558067fc9b4cd411dfd2ea29d83ef096b853446b060f2ecfc0a26dca330a9cbb897d1f72136ed723398ac6ea118feccc0e39295f9b8efacfeb4bb1fb6c365a3d9cc2d4d69961689f5850cbc3efc04abfa1ea2487a9768f582b0fa066c364c174d91176024e9da991006bed8b6bf69464ebe86afabcdb86ee01cc18cfa0e409431ea3820d51f46a8583afbbc453579f02fa7144cb31f4b15d26f74fe71326d4424a3cf1e24e7c94e6ad1e83252460ece0327529fc07ba1848e157ad8d87c1e2af1d31033e3d0d4133dc4c40dff0367b195463472b288a155f7772bf9c968ed2c49e6a993dec88530470e60e31da3831fd5a7db06962384a046d01969601178048925134e737303a6930007b3bb81e29d8f79c7bb04dae8c270e7a7cc853a218c00c11f0379b82670a8e3eaf160f408115544da7212d7dbcc6d1b1c5d279d40f22776f4576417ec586a55096a40a2f42387dbf581ebd5421ff7e9f83d141f5f1de07454b824a64ae077c0a23854f36fa827fb11c12a0b71e2023c6b5045e817f9e6e29dcd3f5af4d9fbfc62d8d8b0b3ef55bde403fcb020146247349f7cdae06802322450ad5af482edd9177bf1e625e484fcc76fb3c79b294f07d7380c2b079bfda2063336f3352961b19a3d73243af955dcb407f43a8ca282ed3dea8844c6c5c325fc0d5ec278fb0931c9663cd9f21f0066672eb5a9cfd7b3b56f3cc011fdb6c7373eae3a6889d3dd7b3bfb51889545387923c787ee731a986496048b6a2f197a5434619c69387fd615bef4a32079c8204eb23e759454a71ccd49e38d8869ceee972a8eb300827c7d4d956c03dfbf0d23ed1930094e4030a3833b5f1367cd5359fe0218be2ebc1958eedd34612b7aca004327a4d621ca3c1783245ecdc2f12e2bfecdb16ce61c0a82bf340ffa8edbca4423be9846e539f465b50e13a336959838822888c1dfedf10b885a4b94652eb1c551b728f0ae32d49c4aaa9d61fe239641b9fcafff5c677dbfe216a78585a71ec983ab0f4c930fe990ede4859a214519e59b3e1c9fa20dd5c33c30308ee6442aac0bdf4216118b2ab575ab79506af00aefc665e1719e03406f6795b9f6b7baf35d0e09c38c2cbe32c8d7c7fc7079e8b3c9bf2b8c8bc006e36fb2c992d7c35039caa9c86e847175039f95b154ea3bf74876156270aedd73c5ac9dc80d3289d782da6f4207a6239e90ed697bf6",
- "0x15a7fbcc7fa0684bf6dcf846f38864165e19ad651d777e2291a743c4c807157164247ef8180e5273684a6a1b7b845aa6ad9e55098b57d98c4740dd72aa5fb1359a09ef98a63fe32ee1f2182225372affa8d3c11284c70ac72dd1ed60f98e01aca6dfc9c648f08591fb5b9afcb9008b50db7180b485c3d9a1e4b975f6340158dcda9c891d6f34d85c40f668a35e72b4a163c595fd2c48f797d0a28d70783d2aa1b53c836ced69c01abc8b3d7ff4b721196534165ac9425b6ee3d7deb8d01216d49fdb6555cb6b98b7ec801f2f8bf1b75237fa77221372bed99c957c77138b210b825277b17bb591739088549f3da11c55f5d14f4341ed7fff3c08bd4b24eb7243e3a041c2a26d37ae83d91eed922d07ee6d4daa84c40c1f2cee924af0686064d1a87a7111d9823383cd96d5826684fe2973b2d76dc045925d632d604e9a67050b7705af6d0fc24962999886d8930f6be67cdfae45bad4e5b3d9798e0f7dc5698170c334ef261ac66df42cc2590b5424992306b57dede969fbba79f8d0eda236c08e19bb8ae6b797c6ee82a382aa1804db6112655af576726881fcb6be413e227db3215e55d6fb3f00d349077f6701886163bb9ea1c4b735909f58aa517d55e3a814b00e64ee1863400d781858d7d03460406a9ce71ff013b0804447e0909bf915e64b29e5ef1990d7d47e71f7b0482851cdcbd42eeda8a7636eb0cb05470fc290c60a8edda0c8b13cdf3f62b98d2c64e6c3bd7f83102cdddf525d3ecf150c3d56693fdc0fad0a883bb760b806ab7390c9f2cfe36072b5a54fd47e741b8e12f69dffa971f0d06074928d5c22e193ca37cd7c57b1a4c04b76082fb366c79165674792d8b490db36a8744a16de35a5994266363968e43a3610066f29b919208fa5d9f37ee3c6381b6d1d07f5634b2beab1354122ef7f17efc06ac66efb007aa903999ccadfcdcba54252e316b949c2791d177402ed1121035a91fd008d04e33584f2de884b7b5e279e0925c17102d9739a14b7402aca1e40c080712f429114741972abe40b350846c891d3c161b7abe5b7983f4a7763b37cbe5ef9e99d29a02bc8e8b105113c987c66a8d104865882835ed4ad63689f6336f054a8ede216e9d198544f66261dbaaba541ff6d2eb3a101a06b6fc3c962a432fbf91e2a81301d662610c43ecf1da4785095146cd1f4f3183e54ee7c134c225b293cd91a38384e442fa9b28b524f0a46ed5f3aa381ec4a8965209630a75f4c933309cb82c0b9f458cbaf134d95d32287ab0059c315e58a9ddb8636c6fb7116b333cee4e269ab75e0960379f969a570846435ba6286d5406625f201fcaaec7270dfe49a97039d674be9f8846da4597ba8845674b2008315cb88bee71fc99929b6db65185f8de5a954f1616b6deb6ed542fd76c842c38a884777f4ae0f8d766f4834f9a929f828224948f3781ad452f5343ca743a80eda40b66f4b757699b26fb35a8eb675a2a30dccbf9fb4f4d538a20ee486c7ff50af4bf4acb468a97cc5491218ba93cc07e53e73cf78cc55a9eb77d0ceeac444088f3f5aa9d84e97f687575de289eb2ec6221e330fe10885c9d07b6b9b2540d3d27b454bd34c6f7d8078e9a49ee1004dc6ab1f7111476f46e94d6bdd3a0f0ac29d78ccd35082ebcf4c1fe9ce3eb10c53f93c86d2c2ed3f9bd78cd9b7703c5065c558f6c57a6834a8ef4d819da6add59fd5fbc54afee0ef783dab5c8d384f8705165ae83fed45fd59bee035f66dc6d43935b175f257abcc2d38cdeb7236ba38ea88fcc7195fd8843a456499064944cdb1a6f0f4c4789799a9a4e3dca2f0702677ccff369a8063966304750c0601850498e763a1eb77a41ba89e336dc8e6ff773a1ff2a7a3fd31a12160108796f6cc2b41350c0527c112e5063468b9cf4f8e7b743823345eb64b914cfbb59978b1d9f815ebf0e08b8aae8561c0496c45863bb6ac33255538aad6361828f02932d5f0e8a7f423d445b8ca9ea3b493b0c4363c48c7888c88fee52b65306526dabb476c907a590f7b01e420abf1a717d3ab3d68f5675c555642c6314a3bb89bbea471913189ca181555b5bbfa5b1a3092aabf80829d542792491e873a4f137746b21deb88e18cc0255c8df960cda6a644fed92577eb5f7d4953a9b28a3030ca54c310c300aca7e087e44a2c3a586db3d73e3a6c69e7cadddaab3a011ad059fa2bc37f2db26b290a2dc410f06e8207ffa4d6735198b1b8bb041cef247a533bbab6f08f037f46b5ebdf4946ac232687f773856935fab5dcc3eecfc487ffd8fdec509e193846183d9addcc4af9dc0f39dd838c1e0d0ff6894edbcf91cc05a37816e07e3a05334609f067b49f25a55c484f3a3e7dcb22e9394a1c0b8f7675b084793f1f9810a49d43de1cec89e502043e419c1ec8b43ba82d37958210f9d05dba878f5dfb32d4e2a98790e1a695508f825bfce257838ea9566be416e7af5f2d95b9916d4c7922388a165b7310ead34ab6126d427c8df2017af7f762db353de070faf115d28ad922e072bc9b9e6be2e3ecf1841218fc085c677a15408769c5d59e6e9c4c2dba187c23a2bad83f7c26bf61e016aa39a604ace5ca87737d2be8f997fa5fc92a08241595b9d74b3c81bfdcc96772695e5b608c3ac93b7709bcf617ed69597f653c668f0e918481d2e5ef3a5655ae7fcb7285fbe76ae8a98c9b78a22c986ccdf7cea580801ebe70dcff2b9074a65e265693f5b889641df788ffcceaf2a65ee823cded93cd2010e6c052e519f889679827991c9e0c90f13be49b5dff6eb350a927f9c30f9df7e3470f73d4dc9d8aa9e8e4a64434eb884d834c1bf147acc145b4bbcf3a8f46b24fe886cdfb40f4462bbf4749cf690fc4c82e7f2e32e7ae880a28dbd574bcf09f3444d6135e2e5f5e0812973fcbce427498dd0d8d2675a01f7001fb180ca6dfb91aab2954c565f92bae61274238e67e0ac8926c4b0945d065f48b33bb82258f426fa38c128937e4cd091c41e5c6ceaf4ab0587c147223031b47e99d509d6491e65f3ee3b131453edf054cb448e19321d0634a75631816c2e06818b64a4ef4e9e41db667e2abb993c8ccd0b69326eab4adec2bdac9f7ac45da7ba260fcad164b229ccadae0f8c955b40257e4949c293f4aff4b5880ace19d757dde97ab6e18b3b2bcba551d5f6075f5233cfb281c0f8154046577338efe3413a0e8f555aae85af49d3a8c85fd47c2bc90f8ec3def4c757970f0d128f1c883fe5d140af9f4199e13941d81195190119e60f5a95e31bf103bddfd8ace09de77869f70b6c1aafca8357271fae9fdafa2e88d3d51ba56dd6fafe2e0bd6814d34d461d3b4eb1edb71780017e1627a45a23ef32e51553c8f4b753a70f8406f7981cf3392814b830edef2e023b44b63187f72c9eed342b79552078395a2fc95ed3f7e0b18e3b0c34087cba9c4771623619ddae56b7cbf3580d5876ffd0d6b05027640d0514bfa63aef7788fad96d2cd89a6576ba3c23c5b0bf904968e9c7cddb99b27981f7dfa9a8ae193782105767e11f0620d173af85f48645d5457b20a11d174a21cd5c23e7e70577db364d60d2db1b85da7baf558a8669bc0e49ee3131d6f46d90967b6e600fefff3659317b56bcfb7520eebc12512656de19296da0a8fae0f2f928726e4e973288bd3f1b35abad06a1b772b119dca542f945dfda6a6d312434b8e3388f86d7c9fa631d07db37bf6bc1f5849f496ac6b09c7cc9c408839aa17bd7d5d728511ed8e4995c56305df3c3bed3f707b7bd11f0298d666f1cd0e566805be5b4b72a105fd85f2d8c14b610133a958b6c38b3da3636d75b3c3463918a41392030b394e73ceb053f1304d02f4e1b898fad18a4df669ef589eca268904b75fb85e49c6587aa79ae2e4ae2cdd51475d02e771104151567e190f75f8ac6ed08719c3f4fc45177317f7b5011cc848cfb5bde345ead3ef83e674c6bd316fd8408f82f24e11a22eb6c301e3631fdd93adacfe8ae999f9760d3815355d7c027107559cfb57d04cca433c2515ec5faf0787b2d17e79d926ecf1208329d8066bded37628afa2576b724cf45d3e6d44397954d557800edd342ba054db74af72cb602b0ca190f44c388e6e737a524d383b48df1b7e8298ec077f9d7ce87bd039494c5ffdce10037bb94778ff2ad7f6f9b8b188c0a457e516519f7ceaef9721c6885d9278572903d6d10a1552d22210d20597f70fad602d33e98ed853dc3ed0b08c96a8ba92e48763452953159ffadf4503ab1dfc6210f950226d6af26a6413466ce2e8ebda716fc127f9024080eb44a9130a75ef3bf7ae91a89c4379f757423f287c17aafd9b7df479d4ba1d101f3593b56bedca867a24fc1c19e518309fb1521656211357bfc5e877b7f7174a171954cab1a0c99e67b4db90c94c4fc22587ba77c49942451547ee901f29f2af905cfb1d7491e9a6ca84a2d77d575226e9c2268f859b3004a06f64e45620d3f3880c2409e1a9ba90829ae0ac1db87d4abad146aaa1d9c0b5f001004268f3e83cbae0fca7c063d71c8c3107826c1ae4a06bde19f2a19c47eec5136bf60f126b6adb2580e065805af8f74997a86ca724a6bc3064c842510e92d5fad2da953dedf95dfa2de7404fdc208fd4a67e9ae594fc5e8569f838fcb62df4034867c97e31373b9482821701718eb79699b4018d85c831d1c2f9f031d41af5641b48a81982e3eb958bbcfb542e739684fdc8bfe8eb715def7f9de90fbfb5bb1e2a808acd35f8aa004d7f772c220c35c19912ad7100bac9b33912aeccefa5e83dcf140600646c8c53efd9a953d63739b458f18be89ced3f72016cbf8dee91ee6e2050c3fe11b82332a099d44e718826352dee8b0200eb6964aeb1905990696bd861e15ffbbea472b37d639488968c380651922bbc9c606d1cada9186447e8bc5fb8c5e7e651a043469858b0fa41e68532cfd098b4f10e9c86debe02a0b191f2d18dc55178481f2b17b42e41895aa0abcbdce089484e4edef136cbcc6fda486e4ebfd76480206312b0eb31c3e520f2521b46dd641063e39fcfbadf718fe3bb54c7046ea423abd580308e49e8d96dc2f2441b697da453a2a44eedfdf0019ec5c0d68acea069ea4abc3aba4dc89d3ea581a3d7b889c7b61de25eeaf2d11ae700a124632fcd9c1d57b24078cc8b5af2287e5389d5aadb028e786d554344c8bec40f42c8b9f6840797d11c00415ef63605cdda150cf9790c58d064ed71521804d9c743540a6a551856315d853fe58b3c515a47a1b553784347379abf2cb99729b417a5db1b3596a61fb73208702810db1320b9914542623e7ab8909578dbe7271c8e00f49625454814ff22e5127eb43c75bd19d41f8675a9c48b38007568ee9e83afb968e952b903f57bedd47be6713a1989cd4a9e011d6e528bc9393e6c70162d9443c74c0fcc069b9170aa7bb17e4f5b737e4b5974952880fa3eebb6f55ce7cb9c015f4dc0290fa7e2b9e4356c7a0139f6bcdf5c0a66cc338746e2976f39028188bf295410c74126c16762ef48d547c38089e4a7f3103f8002466af0ea3c3753767ff15e4b41f927890e0570ebd639dd9f09870cebeccc6a4fd8a6f408669d27e87a369d9658ab3d9dbf77770ecf60ce178b2e5098e4d72791a019e71c84ca46d891271f831c2b70d521c5aa3b1c90c5c9633b8e4714c78023d4647b6afb14615bfacc138de3ff2404f546b36d46596e84a7ea243cc5f6fcbd6001786a1b1288cf28d67c264080d95968e5de39a67ebb3e2ae55961a033d672f7b6bd52df5fe8afe86693feeeca7d7a726f2babe8532edbc9b9f4a3389a8fd268fe2ba5e6beb994672c80be1addb88b5b4dbd1c10c9c2710028ef7cee2847ddd943f5c0ccb57d0c8cea9e8e191eb8b5c7245f2cf5a1eb869a707a87f92ca978ef92a80f882f53b73277405ce11ce96a52d2c9701ac91c2f17812e471bfd2a668f993eff07f8ee37afa3e88f2c08ee2d703ac878bd5ca9d1bb181551225a052d6ab9173ff1c01d5a38232305fc0b5fe063c1673f1796b1cf2f8971de444c26de1c00b147725ff366dfb9c4768a25f7641e212de52aecdbd0115ea82295f2333b8c202be6d19a3704604075c40d00e3dbe49648a23febffda92a34aada0734ab7882c115bf385e00c5e9bbc9eb2cfce0984c5767dc2167dbc17630edc66086c25fee16a674a6114029f70f1c3ef724bbaa5b67904634ef18cd694f5195b808bb3b600140bf7083b726924d756c38d8fd1c698b6dd6da4d719fe4e38272672c6da7e6cfd0c59d5d6fcfe404b9a4ccf22e8bcca613c6b20be058fae663f166b209dbd03d19d2e910413ceb979d5bf69b1494dfe1f26ae4139c776437b8fedde6f50f9d19edf09a52ff81be3f38be4c41ee523978030b50688fe1033e4d78a2f01242569f02104553608da2b7b9c8eaf2fd133f64b6cedbdee4f8223f606264a4b8cfe32f3f60a3ce87c3edfb00000000000000000000000000000000000000060c101d262f3438"
- ],
- "data": {
- "nonce": "0x06",
- "gasPrice": "0x09184e72a000",
- "gasLimit": "0x0974",
- "to": "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c",
- "value": "0x016345785d8a0000",
- "data": "0x00000000000000000000000000000000000000000000000000000000000000ad000000000000000000000000000000000000000000000000000000000000fafa0000000000000000000000000000000000000000000000000000000000000dfa0000000000000000000000000000000000000000000000000000000000000dfa00000000000000000000000000000000000000000000000000000000000000ad000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000df000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000df000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000d",
- "publicKey": "0x3d825295d62ba9c7f830383b54c9c1d01b38d3b46b6bac71ba0313d162ccb47e6836279999548b0437c0429845f886c2257e2f71412abfd97ad9c1304704672929a89cf140c91d498b15b1efe4a8614d20e3fb533901c7402abfa735f1b84cc646c6eb9f14e60d7e04875a485e4f557e0bde53cf313caa0cf5f585f006b4b0f6e574b6dcc69a0fe85a98fbece67406cabdc01828a7ae8d217b4712cf14d5c00dee6a43b15486e74a781a88879093110918da29ebce85048e90ebd971455c7421a2f047a8d2e0d206b05d2158d97969cd598b4a7339f70a1965d4dd724160255415825c8de9460752617a35d467fedd84bce019c83543db53cb51380baf155a364a79e986aa339677fd57d97a9019316e54b7283490d2f396ad374da3fd4232bf3e6506e79999f92617e383afaed18bab546853f582c3828bfe3bfa4378dd4b2f95fc62cd3a86e1edc94c5a4ed06c497aa097fcdd5b0e87a35a386427c393ee7be4ddc02c566d0d9cf6f2018b71d922d0a08777f11fd40bed4a9ddc138572ab19ee70a524bab2a58368f065fdb9b542fc37693a3f37563fcc754a9655d1b3359ab95f3b79424753cd2cdc4db772238e2febdf680fd91402f6b55444bda42be743e89b97b0256cf3a3ca52a94aba8fc4b256e0383985bb1d7d282b1b6268d9ac6924327eef1b85bf9bce0b30781f1b96d37ea432aa46250fed8a9ef35f22a35fdcd53bc92d5c7223522595f7c8eecf5fc7c1952d8b9685f7006b3496c4531ab49da5acc58a8fca865c64a52b7d490bbc3ab7c0484e8bd030a8e42055d67bb750a7d872be38326bb41a7d2fde077bcea3bb9f2da94306af53ba6d963e56e705c027ad4de6fad31796f512045ec3b7a5d2ab3a3620e817649c6c99bfc0b76e7938b53f9378deaf1bff5cec26554857cc48be432ce47c170875b409892804d55f5ebc87c4c10137075ef2e322f94f148dee19b6eb3d058c5fc508f044ed1fe7ca36baa7804525af96f3da466d4c017c70aca15aa550cf9190ccd9d5cfcbaeb3011c0fb89f556fc7da8c424f50ad4fb5174166110f6b147c64efff57866cdaf0777b4b01e9ae814838fe1a7c8479544879389fe744bfaaa88b18fa3ac862e404171014b9af2f714afd3ac647bc25346c7daaeb93f2d02e2d83b066984927afc68246148d013973c812956d86e19e8483c13bdb09d2921ed05cc8774a9b1d70d00c6d6a9feec126947f6f417a0f95f431a9a6b9a9dcb872c206e55f49bb0da8752d9e5d9168fea3ae41d9fc500eac731c27441bba02c7a741429baee5c1dca8e722377724f4185371aa0112532feed26c7bdf5d4b6a316004f0ecebcb3cd52043b7ce5cfb2d400d80d47cc1d2b9d5c77f5cf83e74be3d1ec77c68311fe77669473a960ceb8ada5ed3f71081b170364f6c2546dab2a79ed289a25c507fc968ba205968938712d651a2b92cc5008c4891dc4e709db74979834834e1cef5a8a4385a438f99c1bf16edd37221284a3fd7c9cf22cdaa47f5318cebe60ecadb0b8f78e4186fa67bf6321c033dbb7433c17eee6180c3d1e07c6b0464fbba0505979a8de417f349466cbdc89b6c6650fd7414d936b4aef01f512d1a47932bcc2572b91fc2bd3fbf6803aa761d9c20fd4065cd9c8f4934a27a90fc2facb3bc8e0bc9d89a22a4cae9aee382266e8288dc67cafdbcba1ad2e48b218ec809e2ae9d2d507d1f802b039e66ab877247bc2dbb93bdba46a89b3133cd2f565d31fdd03cd916a28a8904f0c069373055d7781efa09be7145abdb3c435c6b1c86d7f19acee12964d8857100911296cdd6d36ce7ff2096bc7e4384a70e57fdc0d5b07955d10892556088dfd6c51616e8034a905b29939a1266860b8fd3d94721b3098cd7b4dfab9bc3cd909e09b56e59134556e480bedeb3b170cc376598cf47d0ddb15010f3bc1df4fa18ba2b09608e1775ffa015a18252686cb1f3a0090b6028252d2466bc5c31c947870c150dc5f78426defb44be48f74cac36efa1710254663e7ac9630dd9ac35e4472752c52b65622a787dd8bbc9e7639ca3d1a2c1e8f78c74a4131ad32110c7d1bb7595c63c006aa2ab8454d675741f59e03511308610a0ac24ccd129bb49fee63d399de4e104b0f5efbb2a4dd6ff42a28d3933bb0f62f18a8dce66b8f255b494e217833393fc96d8258264c958abaf8c9b6f6781c7bec2afa4eb0f9cca8e6cb6810388dea6ab836ebf7c89c763501972509ce5543982850e4477f531bc9e8d2f70607a2606ddd818c0857e40011dcd9b8fb76cb211a39cb41dbcfbff43dbc7bdd25a6a99677c3c5bebf399228a6534bff31c8610e5bafd70c69c4694bef2ee442f32d4b62e15d37a4fbd8f27097dbf5b53ea9e575b8f80c8f07c41a27d493dcfe04e2399ac43f53285754ab708e3da1c55050b65611815020f3117d9cf25dc8be0bae56f525f9ab558067fc9b4cd411dfd2ea29d83ef096b853446b060f2ecfc0a26dca330a9cbb897d1f72136ed723398ac6ea118feccc0e39295f9b8efacfeb4bb1fb6c365a3d9cc2d4d69961689f5850cbc3efc04abfa1ea2487a9768f582b0fa066c364c174d91176024e9da991006bed8b6bf69464ebe86afabcdb86ee01cc18cfa0e409431ea3820d51f46a8583afbbc453579f02fa7144cb31f4b15d26f74fe71326d4424a3cf1e24e7c94e6ad1e83252460ece0327529fc07ba1848e157ad8d87c1e2af1d31033e3d0d4133dc4c40dff0367b195463472b288a155f7772bf9c968ed2c49e6a993dec88530470e60e31da3831fd5a7db06962384a046d01969601178048925134e737303a6930007b3bb81e29d8f79c7bb04dae8c270e7a7cc853a218c00c11f0379b82670a8e3eaf160f408115544da7212d7dbcc6d1b1c5d279d40f22776f4576417ec586a55096a40a2f42387dbf581ebd5421ff7e9f83d141f5f1de07454b824a64ae077c0a23854f36fa827fb11c12a0b71e2023c6b5045e817f9e6e29dcd3f5af4d9fbfc62d8d8b0b3ef55bde403fcb020146247349f7cdae06802322450ad5af482edd9177bf1e625e484fcc76fb3c79b294f07d7380c2b079bfda2063336f3352961b19a3d73243af955dcb407f43a8ca282ed3dea8844c6c5c325fc0d5ec278fb0931c9663cd9f21f0066672eb5a9cfd7b3b56f3cc011fdb6c7373eae3a6889d3dd7b3bfb51889545387923c787ee731a986496048b6a2f197a5434619c69387fd615bef4a32079c8204eb23e759454a71ccd49e38d8869ceee972a8eb300827c7d4d956c03dfbf0d23ed1930094e4030a3833b5f1367cd5359fe0218be2ebc1958eedd34612b7aca004327a4d621ca3c1783245ecdc2f12e2bfecdb16ce61c0a82bf340ffa8edbca4423be9846e539f465b50e13a336959838822888c1dfedf10b885a4b94652eb1c551b728f0ae32d49c4aaa9d61fe239641b9fcafff5c677dbfe216a78585a71ec983ab0f4c930fe990ede4859a214519e59b3e1c9fa20dd5c33c30308ee6442aac0bdf4216118b2ab575ab79506af00aefc665e1719e03406f6795b9f6b7baf35d0e09c38c2cbe32c8d7c7fc7079e8b3c9bf2b8c8bc006e36fb2c992d7c35039caa9c86e847175039f95b154ea3bf74876156270aedd73c5ac9dc80d3289d782da6f4207a6239e90ed697bf6",
- "signature": "0x15a7fbcc7fa0684bf6dcf846f38864165e19ad651d777e2291a743c4c807157164247ef8180e5273684a6a1b7b845aa6ad9e55098b57d98c4740dd72aa5fb1359a09ef98a63fe32ee1f2182225372affa8d3c11284c70ac72dd1ed60f98e01aca6dfc9c648f08591fb5b9afcb9008b50db7180b485c3d9a1e4b975f6340158dcda9c891d6f34d85c40f668a35e72b4a163c595fd2c48f797d0a28d70783d2aa1b53c836ced69c01abc8b3d7ff4b721196534165ac9425b6ee3d7deb8d01216d49fdb6555cb6b98b7ec801f2f8bf1b75237fa77221372bed99c957c77138b210b825277b17bb591739088549f3da11c55f5d14f4341ed7fff3c08bd4b24eb7243e3a041c2a26d37ae83d91eed922d07ee6d4daa84c40c1f2cee924af0686064d1a87a7111d9823383cd96d5826684fe2973b2d76dc045925d632d604e9a67050b7705af6d0fc24962999886d8930f6be67cdfae45bad4e5b3d9798e0f7dc5698170c334ef261ac66df42cc2590b5424992306b57dede969fbba79f8d0eda236c08e19bb8ae6b797c6ee82a382aa1804db6112655af576726881fcb6be413e227db3215e55d6fb3f00d349077f6701886163bb9ea1c4b735909f58aa517d55e3a814b00e64ee1863400d781858d7d03460406a9ce71ff013b0804447e0909bf915e64b29e5ef1990d7d47e71f7b0482851cdcbd42eeda8a7636eb0cb05470fc290c60a8edda0c8b13cdf3f62b98d2c64e6c3bd7f83102cdddf525d3ecf150c3d56693fdc0fad0a883bb760b806ab7390c9f2cfe36072b5a54fd47e741b8e12f69dffa971f0d06074928d5c22e193ca37cd7c57b1a4c04b76082fb366c79165674792d8b490db36a8744a16de35a5994266363968e43a3610066f29b919208fa5d9f37ee3c6381b6d1d07f5634b2beab1354122ef7f17efc06ac66efb007aa903999ccadfcdcba54252e316b949c2791d177402ed1121035a91fd008d04e33584f2de884b7b5e279e0925c17102d9739a14b7402aca1e40c080712f429114741972abe40b350846c891d3c161b7abe5b7983f4a7763b37cbe5ef9e99d29a02bc8e8b105113c987c66a8d104865882835ed4ad63689f6336f054a8ede216e9d198544f66261dbaaba541ff6d2eb3a101a06b6fc3c962a432fbf91e2a81301d662610c43ecf1da4785095146cd1f4f3183e54ee7c134c225b293cd91a38384e442fa9b28b524f0a46ed5f3aa381ec4a8965209630a75f4c933309cb82c0b9f458cbaf134d95d32287ab0059c315e58a9ddb8636c6fb7116b333cee4e269ab75e0960379f969a570846435ba6286d5406625f201fcaaec7270dfe49a97039d674be9f8846da4597ba8845674b2008315cb88bee71fc99929b6db65185f8de5a954f1616b6deb6ed542fd76c842c38a884777f4ae0f8d766f4834f9a929f828224948f3781ad452f5343ca743a80eda40b66f4b757699b26fb35a8eb675a2a30dccbf9fb4f4d538a20ee486c7ff50af4bf4acb468a97cc5491218ba93cc07e53e73cf78cc55a9eb77d0ceeac444088f3f5aa9d84e97f687575de289eb2ec6221e330fe10885c9d07b6b9b2540d3d27b454bd34c6f7d8078e9a49ee1004dc6ab1f7111476f46e94d6bdd3a0f0ac29d78ccd35082ebcf4c1fe9ce3eb10c53f93c86d2c2ed3f9bd78cd9b7703c5065c558f6c57a6834a8ef4d819da6add59fd5fbc54afee0ef783dab5c8d384f8705165ae83fed45fd59bee035f66dc6d43935b175f257abcc2d38cdeb7236ba38ea88fcc7195fd8843a456499064944cdb1a6f0f4c4789799a9a4e3dca2f0702677ccff369a8063966304750c0601850498e763a1eb77a41ba89e336dc8e6ff773a1ff2a7a3fd31a12160108796f6cc2b41350c0527c112e5063468b9cf4f8e7b743823345eb64b914cfbb59978b1d9f815ebf0e08b8aae8561c0496c45863bb6ac33255538aad6361828f02932d5f0e8a7f423d445b8ca9ea3b493b0c4363c48c7888c88fee52b65306526dabb476c907a590f7b01e420abf1a717d3ab3d68f5675c555642c6314a3bb89bbea471913189ca181555b5bbfa5b1a3092aabf80829d542792491e873a4f137746b21deb88e18cc0255c8df960cda6a644fed92577eb5f7d4953a9b28a3030ca54c310c300aca7e087e44a2c3a586db3d73e3a6c69e7cadddaab3a011ad059fa2bc37f2db26b290a2dc410f06e8207ffa4d6735198b1b8bb041cef247a533bbab6f08f037f46b5ebdf4946ac232687f773856935fab5dcc3eecfc487ffd8fdec509e193846183d9addcc4af9dc0f39dd838c1e0d0ff6894edbcf91cc05a37816e07e3a05334609f067b49f25a55c484f3a3e7dcb22e9394a1c0b8f7675b084793f1f9810a49d43de1cec89e502043e419c1ec8b43ba82d37958210f9d05dba878f5dfb32d4e2a98790e1a695508f825bfce257838ea9566be416e7af5f2d95b9916d4c7922388a165b7310ead34ab6126d427c8df2017af7f762db353de070faf115d28ad922e072bc9b9e6be2e3ecf1841218fc085c677a15408769c5d59e6e9c4c2dba187c23a2bad83f7c26bf61e016aa39a604ace5ca87737d2be8f997fa5fc92a08241595b9d74b3c81bfdcc96772695e5b608c3ac93b7709bcf617ed69597f653c668f0e918481d2e5ef3a5655ae7fcb7285fbe76ae8a98c9b78a22c986ccdf7cea580801ebe70dcff2b9074a65e265693f5b889641df788ffcceaf2a65ee823cded93cd2010e6c052e519f889679827991c9e0c90f13be49b5dff6eb350a927f9c30f9df7e3470f73d4dc9d8aa9e8e4a64434eb884d834c1bf147acc145b4bbcf3a8f46b24fe886cdfb40f4462bbf4749cf690fc4c82e7f2e32e7ae880a28dbd574bcf09f3444d6135e2e5f5e0812973fcbce427498dd0d8d2675a01f7001fb180ca6dfb91aab2954c565f92bae61274238e67e0ac8926c4b0945d065f48b33bb82258f426fa38c128937e4cd091c41e5c6ceaf4ab0587c147223031b47e99d509d6491e65f3ee3b131453edf054cb448e19321d0634a75631816c2e06818b64a4ef4e9e41db667e2abb993c8ccd0b69326eab4adec2bdac9f7ac45da7ba260fcad164b229ccadae0f8c955b40257e4949c293f4aff4b5880ace19d757dde97ab6e18b3b2bcba551d5f6075f5233cfb281c0f8154046577338efe3413a0e8f555aae85af49d3a8c85fd47c2bc90f8ec3def4c757970f0d128f1c883fe5d140af9f4199e13941d81195190119e60f5a95e31bf103bddfd8ace09de77869f70b6c1aafca8357271fae9fdafa2e88d3d51ba56dd6fafe2e0bd6814d34d461d3b4eb1edb71780017e1627a45a23ef32e51553c8f4b753a70f8406f7981cf3392814b830edef2e023b44b63187f72c9eed342b79552078395a2fc95ed3f7e0b18e3b0c34087cba9c4771623619ddae56b7cbf3580d5876ffd0d6b05027640d0514bfa63aef7788fad96d2cd89a6576ba3c23c5b0bf904968e9c7cddb99b27981f7dfa9a8ae193782105767e11f0620d173af85f48645d5457b20a11d174a21cd5c23e7e70577db364d60d2db1b85da7baf558a8669bc0e49ee3131d6f46d90967b6e600fefff3659317b56bcfb7520eebc12512656de19296da0a8fae0f2f928726e4e973288bd3f1b35abad06a1b772b119dca542f945dfda6a6d312434b8e3388f86d7c9fa631d07db37bf6bc1f5849f496ac6b09c7cc9c408839aa17bd7d5d728511ed8e4995c56305df3c3bed3f707b7bd11f0298d666f1cd0e566805be5b4b72a105fd85f2d8c14b610133a958b6c38b3da3636d75b3c3463918a41392030b394e73ceb053f1304d02f4e1b898fad18a4df669ef589eca268904b75fb85e49c6587aa79ae2e4ae2cdd51475d02e771104151567e190f75f8ac6ed08719c3f4fc45177317f7b5011cc848cfb5bde345ead3ef83e674c6bd316fd8408f82f24e11a22eb6c301e3631fdd93adacfe8ae999f9760d3815355d7c027107559cfb57d04cca433c2515ec5faf0787b2d17e79d926ecf1208329d8066bded37628afa2576b724cf45d3e6d44397954d557800edd342ba054db74af72cb602b0ca190f44c388e6e737a524d383b48df1b7e8298ec077f9d7ce87bd039494c5ffdce10037bb94778ff2ad7f6f9b8b188c0a457e516519f7ceaef9721c6885d9278572903d6d10a1552d22210d20597f70fad602d33e98ed853dc3ed0b08c96a8ba92e48763452953159ffadf4503ab1dfc6210f950226d6af26a6413466ce2e8ebda716fc127f9024080eb44a9130a75ef3bf7ae91a89c4379f757423f287c17aafd9b7df479d4ba1d101f3593b56bedca867a24fc1c19e518309fb1521656211357bfc5e877b7f7174a171954cab1a0c99e67b4db90c94c4fc22587ba77c49942451547ee901f29f2af905cfb1d7491e9a6ca84a2d77d575226e9c2268f859b3004a06f64e45620d3f3880c2409e1a9ba90829ae0ac1db87d4abad146aaa1d9c0b5f001004268f3e83cbae0fca7c063d71c8c3107826c1ae4a06bde19f2a19c47eec5136bf60f126b6adb2580e065805af8f74997a86ca724a6bc3064c842510e92d5fad2da953dedf95dfa2de7404fdc208fd4a67e9ae594fc5e8569f838fcb62df4034867c97e31373b9482821701718eb79699b4018d85c831d1c2f9f031d41af5641b48a81982e3eb958bbcfb542e739684fdc8bfe8eb715def7f9de90fbfb5bb1e2a808acd35f8aa004d7f772c220c35c19912ad7100bac9b33912aeccefa5e83dcf140600646c8c53efd9a953d63739b458f18be89ced3f72016cbf8dee91ee6e2050c3fe11b82332a099d44e718826352dee8b0200eb6964aeb1905990696bd861e15ffbbea472b37d639488968c380651922bbc9c606d1cada9186447e8bc5fb8c5e7e651a043469858b0fa41e68532cfd098b4f10e9c86debe02a0b191f2d18dc55178481f2b17b42e41895aa0abcbdce089484e4edef136cbcc6fda486e4ebfd76480206312b0eb31c3e520f2521b46dd641063e39fcfbadf718fe3bb54c7046ea423abd580308e49e8d96dc2f2441b697da453a2a44eedfdf0019ec5c0d68acea069ea4abc3aba4dc89d3ea581a3d7b889c7b61de25eeaf2d11ae700a124632fcd9c1d57b24078cc8b5af2287e5389d5aadb028e786d554344c8bec40f42c8b9f6840797d11c00415ef63605cdda150cf9790c58d064ed71521804d9c743540a6a551856315d853fe58b3c515a47a1b553784347379abf2cb99729b417a5db1b3596a61fb73208702810db1320b9914542623e7ab8909578dbe7271c8e00f49625454814ff22e5127eb43c75bd19d41f8675a9c48b38007568ee9e83afb968e952b903f57bedd47be6713a1989cd4a9e011d6e528bc9393e6c70162d9443c74c0fcc069b9170aa7bb17e4f5b737e4b5974952880fa3eebb6f55ce7cb9c015f4dc0290fa7e2b9e4356c7a0139f6bcdf5c0a66cc338746e2976f39028188bf295410c74126c16762ef48d547c38089e4a7f3103f8002466af0ea3c3753767ff15e4b41f927890e0570ebd639dd9f09870cebeccc6a4fd8a6f408669d27e87a369d9658ab3d9dbf77770ecf60ce178b2e5098e4d72791a019e71c84ca46d891271f831c2b70d521c5aa3b1c90c5c9633b8e4714c78023d4647b6afb14615bfacc138de3ff2404f546b36d46596e84a7ea243cc5f6fcbd6001786a1b1288cf28d67c264080d95968e5de39a67ebb3e2ae55961a033d672f7b6bd52df5fe8afe86693feeeca7d7a726f2babe8532edbc9b9f4a3389a8fd268fe2ba5e6beb994672c80be1addb88b5b4dbd1c10c9c2710028ef7cee2847ddd943f5c0ccb57d0c8cea9e8e191eb8b5c7245f2cf5a1eb869a707a87f92ca978ef92a80f882f53b73277405ce11ce96a52d2c9701ac91c2f17812e471bfd2a668f993eff07f8ee37afa3e88f2c08ee2d703ac878bd5ca9d1bb181551225a052d6ab9173ff1c01d5a38232305fc0b5fe063c1673f1796b1cf2f8971de444c26de1c00b147725ff366dfb9c4768a25f7641e212de52aecdbd0115ea82295f2333b8c202be6d19a3704604075c40d00e3dbe49648a23febffda92a34aada0734ab7882c115bf385e00c5e9bbc9eb2cfce0984c5767dc2167dbc17630edc66086c25fee16a674a6114029f70f1c3ef724bbaa5b67904634ef18cd694f5195b808bb3b600140bf7083b726924d756c38d8fd1c698b6dd6da4d719fe4e38272672c6da7e6cfd0c59d5d6fcfe404b9a4ccf22e8bcca613c6b20be058fae663f166b209dbd03d19d2e910413ceb979d5bf69b1494dfe1f26ae4139c776437b8fedde6f50f9d19edf09a52ff81be3f38be4c41ee523978030b50688fe1033e4d78a2f01242569f02104553608da2b7b9c8eaf2fd133f64b6cedbdee4f8223f606264a4b8cfe32f3f60a3ce87c3edfb00000000000000000000000000000000000000060c101d262f3438"
- }
- },
- {
- "seed": "not-available",
- "sendersAddress": "TODO",
- "type": "message",
- "cost": 12312,
- "raw": [
- "0x0b",
- "0x051f4d5c00",
- "0x5208",
- "0x656e929d6fc0cac52d3d9526d288fe02dcd56fbd",
- "0x2386f26fc10000",
- "0x",
- "0xe0ad5dbee064873f3fdc152edda8d01a52b09a11f3e81c1a0e40581eeb2e3fa0132b0cf2f12ba9fbe76e6abee834bed4cf1f77f42384391cd9134e9afc4bdeaa66320ebfacae4c87ab5c4cb0d7506d49a3960f6c457151e27ce46d8e3689f01876184bc96f0f2fdcc0d1e169c08a5cb22e1d6cdeafdcefa22f2794e12e6e8ff9b00af812871202e844eb4234fdc7add1b3b5d72a7272c4fe601003fc9ac9195ed2d8f5bbc32194d8b9bea9a5b3b5a9ed9725439c3fbea81b292fdc8654ef29856ba7139f3be81d36202b8f300fdc84a0b6b97e13d98fba220cfc94e533f230910142083f875bbce2c188db7fafd7442c15dee8cafaa8e0a22379789ccf0cd400032104dcbc9c5e2a47834500efbabb41fc03dc0d3bc2b7ab271f64b26cf6db95495f1d22aefc9393d6f31e1ab80c077c575feb557e2488b66f178179a31522f4a8efe8f0bfb19abf8aedc083171e7251cda50700381cfafde6f5d8eebfafbc54813469d3c69746de9b291ca852faf6de38ce855204a08672fa34daae07277c73711af0908aa614d37ea689838d3c0b9ee5364c2c2b37c0e245c62de8abc58addd2c197e771d1943ddaeccb3a89fb2e4b32f516d4eaa5c07968ff29e8eac90bf6b021f5fdcc5f78bc24ca0ffde5b59f4329c59b52376a1ec7515c4588d58384ab239142df9c4fe884d080220d00b9541eda35d791d04616709307c2fdb1fb80e4f9881b7d9b71053b9be0c5a2cf443d2cacbca232c50db0aa0f9e9d4eae9eff0109e3511da04b3d43322b8c6e2fb1516eebc89aba532840bebf75a59a6f88a4520e0c30f9b061c85ccda580a09aea6f5d42db2b0fd2f4a1e3c74b6d2c6c714d0aec71bf187a216553f809256de353937ce71252e229c21d068965cf95246ce3b6ad8c2a8d7e226b8bcb26d5bf3bf72af4f7378628fd862ef633f6344c6712f7c88f27ab47bedacf87f946f743d62a0dd7ca701fa2b5c9825585d82e6181f4835a947a8ed361a0967d52884f86fae19e7bcb0be160a4b6b58cdee2167a5105c695ef02cc62de3fb638a77bd9581f8a09ca3fd53bb98cd5f20f2836c0099fb2120a409c6862ea1977733c77838dce57051d89674228a521f274084bb6404ca0ce77f30ec9734295b8abc6ca52576b8f9821e7a0a27cd54f9c110bd312226e89f79e713034aa4d2e4c4e4d93b8bbbfc5ea240db1bf3c4e1b3e088e13e21cf83748ffadba6be1c45ab92fd01f7cc34603f5d7ef52dcadf3490d53c7e1008bd1e9842ac5b15638495f105c17f26afd92c0f9857582379d561234d4f974181c1dd42af94ff5b5e2237f8cff5cc5eb8332acc571dd10ba47847c9b40aa5bc8e3866b44cad966955b5415a09f774f5f1d2b40a1536230aebd31d758a33ea5f64c3822d3fa8eba14dc87deb3e32a13d5487aea75f201c5f822497b5bfea325071191372def8835141df138f7f2cc7b571b537dbf737e202c8e6cf8282310e978f63bf6a0554901d15125e998b1645d14cb3525865701259ecc8552af0dbb2c819db5ee8ef1c50bfb4dbea71345dbf600e939b5dbceda80cb45363426f2d447e945af57ef286c5bc070d40504b58251d3fd846cd16db8cc47c1024d7b4a147e0b8679d895a81a97c495f77545aba68398db4d4c2c3896fd9daa9265dc56111ac2ce2a5cbc8bb67c93e1d92be861cd0e8bdccb898708558347c8be32bee06f26353654eda8052b6de5c444773012adaf6273fddc1e3ace039aaee98477ea80497ca17e4aba1eb05066fef631d0bc880b2c43bdc67c2b8a6b9a335d7d14c57c96e84ae2d943efe43edfdf3b8da8c990eca2abd899803e14494a26b5c7887eced5f6032ba52884fd9c969515831f674d23c949160b3aa6ea713a11a8886c74e852c2cf16f3bb63236b433c3059a7e471fa260b513ec93921d07d06a609853223c9d8d94e64328f628c65b8e1ff932cb0a25024bddd7b25931c0d593d1deca0baddda3deb7fcbed8d10a363d69b6a3e26b154d148489a1d639a70c5278f7d95ed4fde17b580f878c696e152a8fa4fcab0c441e13ccfe5d93c6b531aca8ad3f45e959d64a45b3ec447374080182b662b1e968717f4ce7c1c4e2c27123975693c4b85b0e93a8777205793bfba497d2e434d3d24598c7d46af1c7c7fe33e11a31cb7e6ede7b0cbfa4487d3d258b0bfc0ea3b0fb6237e895d950a599b9faf9e65db4e39a38c59c121372cbc30de6ae71074d308441d2226f421adba51383cd06b3edb4b1b066ad0f7c92c535862605deaa091ddb3b6603e635f59f49786b4b0cadd048d28b78549fd9de7e4382d1c1301e3749a16bfb0f48010a7db779e44022eb0e5977708b32f55c226dccfa00d2a4bd67cd4a5a67348a4f4e75717b61602fb8bd178c5e0b2992ffcdcb12873a1b340a4f2ee30ae0ce477b1ef515ca043fb38a0c9cf6de87f0e54e24d11726397d1afbd0b7831ab2bf1a97df15679565751b328e60404abd704623a49dc074e15ce1f8294f56314066b69dc45491c116da74e689bf6ca80fa2cd1353afe61af8382609fcd9542da7aef0ea840470ef0c1163f30366a8143439d836af5bd7ff603fb290f78deb2da928b5a4b124c88cf81b8e6cc1bba7f69c0778000a439d6a193fa4d70f80b3e11259fce541b5206df88db888e308eaaa153036d5c2d6260d72ec2fa8002f04fac6a0e24b876c3b49dde223f768102acfe7d1ecead933c4c2a84df837ce556444b185665554311b36bd6e1fc31d5c315ebde757579de9a4a48764cb950bf9201d14497343243936655e0a9ae45569306874316abd628d5a5e2fac1686b581f8139606fc2750ef8409ca1f80c17708e522a5a5596d0fb20cee23c67ddb58ed6f87ef031d19544d3c2369501867ef52a0a93f44b7c1de03e5ca422d15104f651bf88c52dc01beb8b7aed9d90e1978528b717fb249a14385bbae11bd899e812c38f7e6342c4c30c6c7e5dc0845053de444232941c4857508e15a52a1ae3d99106ec65de45719d5c0dba09c725867e1b2bf386e64ee6d9616f1a84533629c1bee2c478c814f38bb498220d7bef764b19942b7a571447f88e58a2c6b9811ad283d9ef83626b21a9edde0e637bcd5af3e0e15c4de0a294918df25d114954cd296c5a9951d2100ed8c3622992f966473af315538f49dbc8a5f51f08e121be8fd8dedd1393b20038aebc0b84c386b329b16f03be8d203dad2a931c4ed28d2c1dca4b64f7bd1858773b15a10db9885c4c7915070d9b562d984654c076b6aae44cdc8d8af454a3e55407b81b9050bf413a088757a32d5003a91cd756e7edc3629e16cb02afd689ad1a3b2b6778fc5476165854d3c586ed4a2ee00d86591d078932724a26131a9042203c3cde5be10438e8162f3042ca30c6fe2740f777230aed80327dc8e567064bf74ee2f7e946f7c6e71fe752f9025f684e48896264684a34138b848cad3e277b257fab41f63e11a66c119d7afd5ba9585e01af9e7f6ab3d90b8694fb2e7947932129c957320157aa56e0537c15c6f4b3326643f29eb99fd1577f4e5c3af8783eafb72bf153965456aa99648f45f24b26e145c76b2a502f67cae30f6efbcce3463668cc13ec80535b76c1ab1e8d0da7dac0a2866fb9a5a715a57038666821b289f12c0af83f658fa2ca954b0a1ad44cc73c7f",
- "0x9747ba36bb6ff674f9e72f3ca79a40290e84489047332376a0ae7442503fc7a2668fbe14dfb18d801acab4ded73e21965bf46e20028a00a599f6239b2f00d1ec40e7077c6be52548725b254c3c01dd2d700b55052d036b755e121c4713d7b16108b25d3e925351f5bdf90139d0e4333c3a1b3634143b10982b75d7d759c07cae2619062519280948c298d6a5374fab45d765f5a0a9caddaf7a4502afbd80ea7836a6f5151e73045d1cd8ed989b36b3b3104180101eccfdfbb50bb8392bd1dc131cd9f9a12bf754a840a7309b15835ee4e8cf375ff9069dce89d2e3a5cafb153dc449478d92d9c1ed9fdc71b202540f178a9cc831248d7acd1354978976da245049d1913dcbc313bdc3f3c862b9a2c644d7c51b68f1100993ad2d689846cbdcb41086382eb3f12c0fd9fae1c1f1e6536958034afc85d860cebd87c205521f8a36cc5bd5e489772f2e0160427eafa16ca587c13567005f9dfa56216a99b58abe0c8fb383407ce854c13c5a45d46f8b09906617c6d8f4e166be109389cd3906aac1093bca698a12e63b18c78a39febef5cc5f68c2fa29f2176d25361b99751761fa49cb17c23407a03543b5778181b816b146bf3ed7d1f00fbc58dd53ca1c8253f09c75a97ad5f1cc3b680c7e7775aa77da61f0e7254a56e842c0b414faf0237fbaa0dd00b3e7a9f5f14baafb3dc584743cb4a13a81aeac3d51305b92bd4be5cad408743a9d39fb4e1c5f0b8bbb9fe68931d1ce36768d53699ff93cca39875ca05e47c4fba092cf1b7b5d08679bbe55ad07f9cd077b84d6c2e6ed8a9c9bfe25d70c77576ec79dac8943c6ca655896a41d11b117e5a7eb67ea5bf1f0547f9e6933f6e7d1272519700a0bbe3ac2e53805e408e14a92f11a759d1c34aa966f1336593936c0237e4babfd259bcd1c77219e2355f852fe9c4e977029d33a404299dd81cacccb7d1a8a5c3e0c8c9bb9810bb8f9b1e51ce474f621f4482d6cccf59ef82adba4d1e36ae2d9fe273ecab373005029f113cca5bb8760c3a31d5ee74be98e4ba836d4bce28e5d8f34997a03745dca9436dda176172f984a7063ee35ffe00d8924a3d1321bf37dd1bb7877792ac38b9f71ded9ee3a3445f1321d9a95ee5d9a237db15d3f118918f9206035123f95766f6ecc1335a8216fd5ac4f449158c4bfed60a67a0494b8a824593f791b916bf2a6dad77437b12d3630511660daf29675829e9e3201dc101ed72bba16381c45d63a51125312d93ce6baf335767402a12245cac5c4557b49d4691bddee9a53f25e1f026638f24299fb659dea6f29b0207661b8047dfd8a00ada13c883b399e6f86af7980e18dfe4cabf01ff910eb063860c15acf4d7c9c6d49932ebb435b9b836dabcd98c5ce7330c662f69ba2080df0c0f0274dd52f63c67ebb6071f6e204ec2dfefdbd588cbde21b3b1be2ce7ddb377b896390351866fb417d37c0e6e0c0e936001c50d14b7ae3128d736c0f791fc5d3b635e83a52fdaf2940cae8dcdbd355e1fc3006952c6a4e76832a1dbbdff7b09e17db4bc05ad00f29702ce4313d8be1a5060ce9d619d159132ebc46cb30789720b3eb889556c02a63addd2a47668f7aef58fccb9760977d1d42bd53b629bc878a2fd04eba8d98af67805d0368ee19c9bebe6373961e5b7593dbfc16dd2a77c82ec1f22c5205fe01bb050813bf6baadf9a953f9a52232b36220e7b653b04b632fbe19a87ed411b639f35a5effc94e060aa6b013c7d7354d829ed7835bd36091ec1395a55448ffd772bed883f66f491112acaa187f720fb0d1eac40d41fee7549e0dfe09f9add451b682eade2bf6d48c4dffacda4a0b25d4b2e0646099f9e35504b2877fc5f244b18fcf64c48e63f15f99656b6172e8f4ba3067001c193c928607c0002d5b13b376f01e02a97c34617d18653430af22cdd53c4c92a214f9efa7c8d78a09e2e0a3fb8fbb47eaf1ae79d59f165257f6633332ca249278d01cea57a3f292e109d90866ea5f589ea0cd1e6deff324bb33cadab983a93aaf9404866d97a67382429312d3d7e202b414bc5c7408abb5d274aee7285c74e640e5ee45d8361c66071f24bea301e3619af1c2a5129e89c996645779fbe4d9d32161b5fda303619bb889d623a21e6b039cfcc0eafe77a79c6f4c4526d1b4372ea2353113edc20d4e7be285e736b7092e22cb3088573c4b27782eab81c841daf07514432e6dd22e9ea48dcabdc06d50dff688aea7ce51b1ea6c01c883677562c4ef5c4c11718702988c6279580f48b5f31063ac5e6ec9ca0f0d0dd2d058c916af4ac4a45c44805b1cf65dd373ab5a2a872c27a3c03d1d5b1ea44bce2ce9a0da62ad7ac747d4ae49e0d7378a3675acf773fed84f94a8c6d494780b178e4a8525dbe41583ea79890f58f0a46cbc11b9839583cfed16f5ea2cfd7ad4227f96b71d3b42773da6b985cff5b64443c94578b3e6d4fb054552fe25de5470b0fa8aff9e5c8a8a1f21cee16d1d7e8152ff6005f9d742787e5325c503a065270bde565fde33e6f66bb9b1c2e01075db1d6c5501149de724688a7945bfe94e14a23946d5ba2a37833d1e8a79dedb1ad9a07909dc08357a0ac167b73bbf5a57ae46486d39f6ca8512212cb6883aa949ffb241fd07f20b8bb1157a8a0af589c157857b811d45a0736ff6b2d340247bc5ca35d6391ee1a19baa29ff5763c54af22250978291f82fb090891d2191ecf60d510b3d794d8e4b9c324476898b6f5e981f8c6bdf5f058138c2ed7ae2e14ddb5891a9ef6a8ae985db9bfd20fd6d970bbb823f5b6ade88323ab62c9f0a1f49545f74f717edb58aaacf5e6933e971cf5a04bc6ef29ff06319db90d653c649bd72367b415e8c4a1a6f3290c6684bc87aa9dd930defba78e882e8bd3466f4009b6e19a1d590462fbdbc68d1ef4847e3e33a219215f7629ea8e78c9b7148e0fb0558f4192565162cb8a896503497587ea3f4823b024b70f174d53939fb201390282b2955c2c016cc37dfdea4f138b7964477bc2557a42a5dc0ce25e1db71a41b11ed90be5fbeeb3381e25a8272801c853a8510cfed35a97960bcf6a47db61c5482270681663e88d680b76917da1e45a1892af3fd5a1737add60b25edc830721fff48b244d380d0774cde23a47a597000f452b6b97d9a087349ec6843f8047b6dea79ec2295943a0c9724ae3ebe90d6bd5933428efc0a88a3482af9e643b54ab9e2e97599676807f5d50e215698c5b132d4f11b27f8855dd813939fb6f982031f906f12e223017bd39a4cb97fed176daa593e2ee3c39b380ffebd12632dc4020fc6fd537673d7eec376e3b3ef7072dda991a0153131f51f80b21d3373076c9cad0894631f9b7db0c21d4fcf14f3c1e98f97685157f94286a88c0c5bb4a70d2d91e4c7c26df99ff1caf1813aa8475ebed851e7120063394f58e9528d80e40fe3b3df8849c8bca415e60fc4e3891f141e09fb35d92143ea30a17aac562fcd9baa16178f98340368312c242abc980fb604ec841cba5a2d926d71f2ab1a81ae75bab10c3abc73c12a30618ff8fbbf100ad59d53e601c522e050d519d8738e28289461a0bb479e955d6bc98d3495dffbc0cc204731a92343d7ae25eba5ebed3b8fea45df5edd084b1f645deaf6be7f04839150065816bf5086b3e2d2a2cf6a49fcea85ee989df7403278665189023e49b123ae56db68071b2cbfa16777bce965bf546d37dd5613caca275e6cec1d4c499a4c7de32b447890a63dc54ae40f9bf914a5f7e5305eaf90e7b972db36e819e59aaafffe5ee8a3a216f853843ab1418cf78d1ea2aeff64120fa4106da042e4ee9f15b306dceb4f2e633a06edd334603ebf4fd0b70ef5124b80ab0d3d1ca9fcd62e1b3d0f4cb06fcdfc5bc634d8baeecf6cda20a87504d9c073a0edf35ea2002a1a16dabf08596a82de8f87d55d7de310bc82c5b71427ad1afd79423825597ea2239519cb398bb9499b92c09200553b0de303303fb69d5ca7cdc4b4904cb9fa4d6c0cbb6f0c194dda8ca0fb0ce41e854c0277f4d43fb91652f5865fbc591684328cbea85a0d71530a6b6d8c3b06afaf1ac97e3cf366d83e0d966fac92f1aee5c0e92a452041da4e8c401e6b4e395c17a1c516c72c7e861dafba0d90b6b58be2648f01f40f39e10d6d09e6a6916e3cd95a7eb9731024adbbfbe7601ee9b447c644fd64a883eab238034ead2672853adeb9dc43560d0a607935b6fdd1b620a5880fc57eb43c315bd83b1cdf4fa010cc37dc18f00915288f56df45e2981ad7db529a261efc2d2ddf3ee8f19a59cea812ae85668e68b07cf7e384225f57f8c900467327f974b0c9aac9f5d5dbc5d8075f2a138d24538a5278c56113e7953c10a2a636ee974cb7160f6ff24edabf2cf25a7e2aff808d35b0f17c17632456b42d451f858cb299b57f5434ad72eff59a24d631f61cf5b9f1a2166c803abcc5994955677f7340776f7f29ca24790be244e7eec8d153c7d71274784bdffde17f5858518e64629c2c02f3d0ef9d79de4ce9cd84d6267ade1030b6e2d01d84626405caa0c06545cc714073f8884a8ddc3b39234167df8f2a52ba9dccd3093e5213cd01d395b9e758380d6dc806dba8ba5a36b948ce7b4bce5146addda807d4ebe0854dc4586234503d2a984a39a8e43a891b38f77a7830d8b2209d49f53325d3ede6a848589d530ce360460ec35062408771b7b4e6c1f25174b2bfcdb3e5b0596af737e88d9cfba60fef21fb631ad244081a8775d24bf89cca1eb483024c20983df95d0aed66220555f2f5c2e63711699f181d489f67aaa2ec841dffed19f4408210e7cd1e8d4ba74f4c11c755c82ddf019fc86a46055566c8a0396720d84b8ab9998fd3629ada4ce08d052a0106e069a150689c0b59c3297cc10b933e81bffade1f103fc37f4a500f780b4d5c7fa5de9a858b9bd707d9aa2326f71693a5c0b28a46c9e60eba9fd9ae7ae1d4cb064a15802c065d42e4497156613ebd610ba6a2e380316fbe30d7cd758d7287b34c6ccf16ac0b664b6bc2c26244ead7f58046a437f68ca5a9e2ecf6cd392dcca885c4012c37ebd14dba03d85009fcc10ca0a27c8a38fbc9ec2922c7578b5da23f73d8dbeadf0d2e97611cae560b719141767dc6fbb4ece445f953b2ad6b9d0cef9752fd67bf6492a6fe1ace44539d6a460ce840cd096a2ce54967be284d8b693d7800cf9271f1c4e5b64d93bbfd4c4ee2b3962c59b911296226232cdf1b7c4c76b71aca3f00f457a1978284c804b645836dc044090d986b5869353d8d7f96ad3be5d49821224815873f2b9145d813bd7d8ff455c10a2c5500805c62ef602c5682e13653711173aabee7266d90cef309c04b02e46719f93c607749326a968d701330f0224a3fd1cdfe68c998b69d8f86d1808c357906142997ef2fbe536afb046119b028ae7057a1d76759db0231ff562e688d10ba3cc744659ec2cd8e1d35334d9c65294ad13f94e75a9674d84f6a0c79d659a3c2b72d0a8f7e390616319ec56fffee3f3a2ca300b9a0c4c8c12ed15277c33b040ff4644ae1d3cf2358c7b768154c6f1ce7b8d239c0b9dbb571bba1059740dda0d14400f6f32f3046b4ad3ec79d5a500bc0feb060327289f2762b2ce1bb16e6c07cb7fbbae0a407abd4c722c900d78a50e7c42c394811f7a9f638813894c562ad387ed2563dee5334c067aed4198619f6fccb2b8f96906e028d730fb76a9624e52b7a3ceee188e7b08ea8fa77ab26fde8f1eef9dc1a876833b6da2d6a5a5ad2b4398844f6c712f0188353d8287f3de90554632e5406ba1593c2537617bac528f43d4b6a95bfda91bfe1424b0ccac56708c614f0a327488d963f52b6c1352b35b2809f601750a0aafed33ae45e3a14ea33981fa918a2a6f98fbbf88079f5cc28ea45ae663065f3c4aeef37769ce0f58bc7d777b4686fdba05116ad157691603eeab3f5e3c4a24c5e3f0594e83e2da91253345d7c6da7c9ce4f78e528b91c173ce901228abacfbb0e2eded01fa54f838cb3b864b6d2ace714e8a16c8d46f2f622e817c017901e1fcf85e2552069420f664d4a70a78980f3f51017925398e94fd5112d175b87c7d1549201ad54c6a33c23616d8959a5bf732d4f5cd069fb5ee1e68c84fe38331a0b5fe621435b3d6d6d256ddc6ce9a59ed36a09682bb12bd44303045b33f327c2edeec8a92ee310f8b0a0419bcde4769e0d0fb747b3521ffc030bca90671a6e29dcf6457022468bb79dc2425ef87ff7089c42a9988345e26f36308fc5504769d8b3beed7decb22c529f1be56f7ae3bc74daca31707669f2807ed7ffb8039b156344687888ec06caf5ed3b736541579b0bee9cad35e387c07752bebffee227edeb7314bdb641f7abac32d1e253448294a62131cda5235991c347985aff96a949dcd20323a7d99b06179fd010815293792a1505760849fe8f20b22627f8eadb9c0cd2f51556096aa000000000000000000000000000000000000000000000000000000060a10131a212a30"
- ],
- "data": {
- "nonce": "0x0b",
- "gasPrice": "0x051f4d5c00",
- "gasLimit": "0x5208",
- "to": "0x656e929d6fc0cac52d3d9526d288fe02dcd56fbd",
- "value": "0x2386f26fc10000",
- "data": "0x",
- "publicKey": "0xe0ad5dbee064873f3fdc152edda8d01a52b09a11f3e81c1a0e40581eeb2e3fa0132b0cf2f12ba9fbe76e6abee834bed4cf1f77f42384391cd9134e9afc4bdeaa66320ebfacae4c87ab5c4cb0d7506d49a3960f6c457151e27ce46d8e3689f01876184bc96f0f2fdcc0d1e169c08a5cb22e1d6cdeafdcefa22f2794e12e6e8ff9b00af812871202e844eb4234fdc7add1b3b5d72a7272c4fe601003fc9ac9195ed2d8f5bbc32194d8b9bea9a5b3b5a9ed9725439c3fbea81b292fdc8654ef29856ba7139f3be81d36202b8f300fdc84a0b6b97e13d98fba220cfc94e533f230910142083f875bbce2c188db7fafd7442c15dee8cafaa8e0a22379789ccf0cd400032104dcbc9c5e2a47834500efbabb41fc03dc0d3bc2b7ab271f64b26cf6db95495f1d22aefc9393d6f31e1ab80c077c575feb557e2488b66f178179a31522f4a8efe8f0bfb19abf8aedc083171e7251cda50700381cfafde6f5d8eebfafbc54813469d3c69746de9b291ca852faf6de38ce855204a08672fa34daae07277c73711af0908aa614d37ea689838d3c0b9ee5364c2c2b37c0e245c62de8abc58addd2c197e771d1943ddaeccb3a89fb2e4b32f516d4eaa5c07968ff29e8eac90bf6b021f5fdcc5f78bc24ca0ffde5b59f4329c59b52376a1ec7515c4588d58384ab239142df9c4fe884d080220d00b9541eda35d791d04616709307c2fdb1fb80e4f9881b7d9b71053b9be0c5a2cf443d2cacbca232c50db0aa0f9e9d4eae9eff0109e3511da04b3d43322b8c6e2fb1516eebc89aba532840bebf75a59a6f88a4520e0c30f9b061c85ccda580a09aea6f5d42db2b0fd2f4a1e3c74b6d2c6c714d0aec71bf187a216553f809256de353937ce71252e229c21d068965cf95246ce3b6ad8c2a8d7e226b8bcb26d5bf3bf72af4f7378628fd862ef633f6344c6712f7c88f27ab47bedacf87f946f743d62a0dd7ca701fa2b5c9825585d82e6181f4835a947a8ed361a0967d52884f86fae19e7bcb0be160a4b6b58cdee2167a5105c695ef02cc62de3fb638a77bd9581f8a09ca3fd53bb98cd5f20f2836c0099fb2120a409c6862ea1977733c77838dce57051d89674228a521f274084bb6404ca0ce77f30ec9734295b8abc6ca52576b8f9821e7a0a27cd54f9c110bd312226e89f79e713034aa4d2e4c4e4d93b8bbbfc5ea240db1bf3c4e1b3e088e13e21cf83748ffadba6be1c45ab92fd01f7cc34603f5d7ef52dcadf3490d53c7e1008bd1e9842ac5b15638495f105c17f26afd92c0f9857582379d561234d4f974181c1dd42af94ff5b5e2237f8cff5cc5eb8332acc571dd10ba47847c9b40aa5bc8e3866b44cad966955b5415a09f774f5f1d2b40a1536230aebd31d758a33ea5f64c3822d3fa8eba14dc87deb3e32a13d5487aea75f201c5f822497b5bfea325071191372def8835141df138f7f2cc7b571b537dbf737e202c8e6cf8282310e978f63bf6a0554901d15125e998b1645d14cb3525865701259ecc8552af0dbb2c819db5ee8ef1c50bfb4dbea71345dbf600e939b5dbceda80cb45363426f2d447e945af57ef286c5bc070d40504b58251d3fd846cd16db8cc47c1024d7b4a147e0b8679d895a81a97c495f77545aba68398db4d4c2c3896fd9daa9265dc56111ac2ce2a5cbc8bb67c93e1d92be861cd0e8bdccb898708558347c8be32bee06f26353654eda8052b6de5c444773012adaf6273fddc1e3ace039aaee98477ea80497ca17e4aba1eb05066fef631d0bc880b2c43bdc67c2b8a6b9a335d7d14c57c96e84ae2d943efe43edfdf3b8da8c990eca2abd899803e14494a26b5c7887eced5f6032ba52884fd9c969515831f674d23c949160b3aa6ea713a11a8886c74e852c2cf16f3bb63236b433c3059a7e471fa260b513ec93921d07d06a609853223c9d8d94e64328f628c65b8e1ff932cb0a25024bddd7b25931c0d593d1deca0baddda3deb7fcbed8d10a363d69b6a3e26b154d148489a1d639a70c5278f7d95ed4fde17b580f878c696e152a8fa4fcab0c441e13ccfe5d93c6b531aca8ad3f45e959d64a45b3ec447374080182b662b1e968717f4ce7c1c4e2c27123975693c4b85b0e93a8777205793bfba497d2e434d3d24598c7d46af1c7c7fe33e11a31cb7e6ede7b0cbfa4487d3d258b0bfc0ea3b0fb6237e895d950a599b9faf9e65db4e39a38c59c121372cbc30de6ae71074d308441d2226f421adba51383cd06b3edb4b1b066ad0f7c92c535862605deaa091ddb3b6603e635f59f49786b4b0cadd048d28b78549fd9de7e4382d1c1301e3749a16bfb0f48010a7db779e44022eb0e5977708b32f55c226dccfa00d2a4bd67cd4a5a67348a4f4e75717b61602fb8bd178c5e0b2992ffcdcb12873a1b340a4f2ee30ae0ce477b1ef515ca043fb38a0c9cf6de87f0e54e24d11726397d1afbd0b7831ab2bf1a97df15679565751b328e60404abd704623a49dc074e15ce1f8294f56314066b69dc45491c116da74e689bf6ca80fa2cd1353afe61af8382609fcd9542da7aef0ea840470ef0c1163f30366a8143439d836af5bd7ff603fb290f78deb2da928b5a4b124c88cf81b8e6cc1bba7f69c0778000a439d6a193fa4d70f80b3e11259fce541b5206df88db888e308eaaa153036d5c2d6260d72ec2fa8002f04fac6a0e24b876c3b49dde223f768102acfe7d1ecead933c4c2a84df837ce556444b185665554311b36bd6e1fc31d5c315ebde757579de9a4a48764cb950bf9201d14497343243936655e0a9ae45569306874316abd628d5a5e2fac1686b581f8139606fc2750ef8409ca1f80c17708e522a5a5596d0fb20cee23c67ddb58ed6f87ef031d19544d3c2369501867ef52a0a93f44b7c1de03e5ca422d15104f651bf88c52dc01beb8b7aed9d90e1978528b717fb249a14385bbae11bd899e812c38f7e6342c4c30c6c7e5dc0845053de444232941c4857508e15a52a1ae3d99106ec65de45719d5c0dba09c725867e1b2bf386e64ee6d9616f1a84533629c1bee2c478c814f38bb498220d7bef764b19942b7a571447f88e58a2c6b9811ad283d9ef83626b21a9edde0e637bcd5af3e0e15c4de0a294918df25d114954cd296c5a9951d2100ed8c3622992f966473af315538f49dbc8a5f51f08e121be8fd8dedd1393b20038aebc0b84c386b329b16f03be8d203dad2a931c4ed28d2c1dca4b64f7bd1858773b15a10db9885c4c7915070d9b562d984654c076b6aae44cdc8d8af454a3e55407b81b9050bf413a088757a32d5003a91cd756e7edc3629e16cb02afd689ad1a3b2b6778fc5476165854d3c586ed4a2ee00d86591d078932724a26131a9042203c3cde5be10438e8162f3042ca30c6fe2740f777230aed80327dc8e567064bf74ee2f7e946f7c6e71fe752f9025f684e48896264684a34138b848cad3e277b257fab41f63e11a66c119d7afd5ba9585e01af9e7f6ab3d90b8694fb2e7947932129c957320157aa56e0537c15c6f4b3326643f29eb99fd1577f4e5c3af8783eafb72bf153965456aa99648f45f24b26e145c76b2a502f67cae30f6efbcce3463668cc13ec80535b76c1ab1e8d0da7dac0a2866fb9a5a715a57038666821b289f12c0af83f658fa2ca954b0a1ad44cc73c7f",
- "signature": "0x9747ba36bb6ff674f9e72f3ca79a40290e84489047332376a0ae7442503fc7a2668fbe14dfb18d801acab4ded73e21965bf46e20028a00a599f6239b2f00d1ec40e7077c6be52548725b254c3c01dd2d700b55052d036b755e121c4713d7b16108b25d3e925351f5bdf90139d0e4333c3a1b3634143b10982b75d7d759c07cae2619062519280948c298d6a5374fab45d765f5a0a9caddaf7a4502afbd80ea7836a6f5151e73045d1cd8ed989b36b3b3104180101eccfdfbb50bb8392bd1dc131cd9f9a12bf754a840a7309b15835ee4e8cf375ff9069dce89d2e3a5cafb153dc449478d92d9c1ed9fdc71b202540f178a9cc831248d7acd1354978976da245049d1913dcbc313bdc3f3c862b9a2c644d7c51b68f1100993ad2d689846cbdcb41086382eb3f12c0fd9fae1c1f1e6536958034afc85d860cebd87c205521f8a36cc5bd5e489772f2e0160427eafa16ca587c13567005f9dfa56216a99b58abe0c8fb383407ce854c13c5a45d46f8b09906617c6d8f4e166be109389cd3906aac1093bca698a12e63b18c78a39febef5cc5f68c2fa29f2176d25361b99751761fa49cb17c23407a03543b5778181b816b146bf3ed7d1f00fbc58dd53ca1c8253f09c75a97ad5f1cc3b680c7e7775aa77da61f0e7254a56e842c0b414faf0237fbaa0dd00b3e7a9f5f14baafb3dc584743cb4a13a81aeac3d51305b92bd4be5cad408743a9d39fb4e1c5f0b8bbb9fe68931d1ce36768d53699ff93cca39875ca05e47c4fba092cf1b7b5d08679bbe55ad07f9cd077b84d6c2e6ed8a9c9bfe25d70c77576ec79dac8943c6ca655896a41d11b117e5a7eb67ea5bf1f0547f9e6933f6e7d1272519700a0bbe3ac2e53805e408e14a92f11a759d1c34aa966f1336593936c0237e4babfd259bcd1c77219e2355f852fe9c4e977029d33a404299dd81cacccb7d1a8a5c3e0c8c9bb9810bb8f9b1e51ce474f621f4482d6cccf59ef82adba4d1e36ae2d9fe273ecab373005029f113cca5bb8760c3a31d5ee74be98e4ba836d4bce28e5d8f34997a03745dca9436dda176172f984a7063ee35ffe00d8924a3d1321bf37dd1bb7877792ac38b9f71ded9ee3a3445f1321d9a95ee5d9a237db15d3f118918f9206035123f95766f6ecc1335a8216fd5ac4f449158c4bfed60a67a0494b8a824593f791b916bf2a6dad77437b12d3630511660daf29675829e9e3201dc101ed72bba16381c45d63a51125312d93ce6baf335767402a12245cac5c4557b49d4691bddee9a53f25e1f026638f24299fb659dea6f29b0207661b8047dfd8a00ada13c883b399e6f86af7980e18dfe4cabf01ff910eb063860c15acf4d7c9c6d49932ebb435b9b836dabcd98c5ce7330c662f69ba2080df0c0f0274dd52f63c67ebb6071f6e204ec2dfefdbd588cbde21b3b1be2ce7ddb377b896390351866fb417d37c0e6e0c0e936001c50d14b7ae3128d736c0f791fc5d3b635e83a52fdaf2940cae8dcdbd355e1fc3006952c6a4e76832a1dbbdff7b09e17db4bc05ad00f29702ce4313d8be1a5060ce9d619d159132ebc46cb30789720b3eb889556c02a63addd2a47668f7aef58fccb9760977d1d42bd53b629bc878a2fd04eba8d98af67805d0368ee19c9bebe6373961e5b7593dbfc16dd2a77c82ec1f22c5205fe01bb050813bf6baadf9a953f9a52232b36220e7b653b04b632fbe19a87ed411b639f35a5effc94e060aa6b013c7d7354d829ed7835bd36091ec1395a55448ffd772bed883f66f491112acaa187f720fb0d1eac40d41fee7549e0dfe09f9add451b682eade2bf6d48c4dffacda4a0b25d4b2e0646099f9e35504b2877fc5f244b18fcf64c48e63f15f99656b6172e8f4ba3067001c193c928607c0002d5b13b376f01e02a97c34617d18653430af22cdd53c4c92a214f9efa7c8d78a09e2e0a3fb8fbb47eaf1ae79d59f165257f6633332ca249278d01cea57a3f292e109d90866ea5f589ea0cd1e6deff324bb33cadab983a93aaf9404866d97a67382429312d3d7e202b414bc5c7408abb5d274aee7285c74e640e5ee45d8361c66071f24bea301e3619af1c2a5129e89c996645779fbe4d9d32161b5fda303619bb889d623a21e6b039cfcc0eafe77a79c6f4c4526d1b4372ea2353113edc20d4e7be285e736b7092e22cb3088573c4b27782eab81c841daf07514432e6dd22e9ea48dcabdc06d50dff688aea7ce51b1ea6c01c883677562c4ef5c4c11718702988c6279580f48b5f31063ac5e6ec9ca0f0d0dd2d058c916af4ac4a45c44805b1cf65dd373ab5a2a872c27a3c03d1d5b1ea44bce2ce9a0da62ad7ac747d4ae49e0d7378a3675acf773fed84f94a8c6d494780b178e4a8525dbe41583ea79890f58f0a46cbc11b9839583cfed16f5ea2cfd7ad4227f96b71d3b42773da6b985cff5b64443c94578b3e6d4fb054552fe25de5470b0fa8aff9e5c8a8a1f21cee16d1d7e8152ff6005f9d742787e5325c503a065270bde565fde33e6f66bb9b1c2e01075db1d6c5501149de724688a7945bfe94e14a23946d5ba2a37833d1e8a79dedb1ad9a07909dc08357a0ac167b73bbf5a57ae46486d39f6ca8512212cb6883aa949ffb241fd07f20b8bb1157a8a0af589c157857b811d45a0736ff6b2d340247bc5ca35d6391ee1a19baa29ff5763c54af22250978291f82fb090891d2191ecf60d510b3d794d8e4b9c324476898b6f5e981f8c6bdf5f058138c2ed7ae2e14ddb5891a9ef6a8ae985db9bfd20fd6d970bbb823f5b6ade88323ab62c9f0a1f49545f74f717edb58aaacf5e6933e971cf5a04bc6ef29ff06319db90d653c649bd72367b415e8c4a1a6f3290c6684bc87aa9dd930defba78e882e8bd3466f4009b6e19a1d590462fbdbc68d1ef4847e3e33a219215f7629ea8e78c9b7148e0fb0558f4192565162cb8a896503497587ea3f4823b024b70f174d53939fb201390282b2955c2c016cc37dfdea4f138b7964477bc2557a42a5dc0ce25e1db71a41b11ed90be5fbeeb3381e25a8272801c853a8510cfed35a97960bcf6a47db61c5482270681663e88d680b76917da1e45a1892af3fd5a1737add60b25edc830721fff48b244d380d0774cde23a47a597000f452b6b97d9a087349ec6843f8047b6dea79ec2295943a0c9724ae3ebe90d6bd5933428efc0a88a3482af9e643b54ab9e2e97599676807f5d50e215698c5b132d4f11b27f8855dd813939fb6f982031f906f12e223017bd39a4cb97fed176daa593e2ee3c39b380ffebd12632dc4020fc6fd537673d7eec376e3b3ef7072dda991a0153131f51f80b21d3373076c9cad0894631f9b7db0c21d4fcf14f3c1e98f97685157f94286a88c0c5bb4a70d2d91e4c7c26df99ff1caf1813aa8475ebed851e7120063394f58e9528d80e40fe3b3df8849c8bca415e60fc4e3891f141e09fb35d92143ea30a17aac562fcd9baa16178f98340368312c242abc980fb604ec841cba5a2d926d71f2ab1a81ae75bab10c3abc73c12a30618ff8fbbf100ad59d53e601c522e050d519d8738e28289461a0bb479e955d6bc98d3495dffbc0cc204731a92343d7ae25eba5ebed3b8fea45df5edd084b1f645deaf6be7f04839150065816bf5086b3e2d2a2cf6a49fcea85ee989df7403278665189023e49b123ae56db68071b2cbfa16777bce965bf546d37dd5613caca275e6cec1d4c499a4c7de32b447890a63dc54ae40f9bf914a5f7e5305eaf90e7b972db36e819e59aaafffe5ee8a3a216f853843ab1418cf78d1ea2aeff64120fa4106da042e4ee9f15b306dceb4f2e633a06edd334603ebf4fd0b70ef5124b80ab0d3d1ca9fcd62e1b3d0f4cb06fcdfc5bc634d8baeecf6cda20a87504d9c073a0edf35ea2002a1a16dabf08596a82de8f87d55d7de310bc82c5b71427ad1afd79423825597ea2239519cb398bb9499b92c09200553b0de303303fb69d5ca7cdc4b4904cb9fa4d6c0cbb6f0c194dda8ca0fb0ce41e854c0277f4d43fb91652f5865fbc591684328cbea85a0d71530a6b6d8c3b06afaf1ac97e3cf366d83e0d966fac92f1aee5c0e92a452041da4e8c401e6b4e395c17a1c516c72c7e861dafba0d90b6b58be2648f01f40f39e10d6d09e6a6916e3cd95a7eb9731024adbbfbe7601ee9b447c644fd64a883eab238034ead2672853adeb9dc43560d0a607935b6fdd1b620a5880fc57eb43c315bd83b1cdf4fa010cc37dc18f00915288f56df45e2981ad7db529a261efc2d2ddf3ee8f19a59cea812ae85668e68b07cf7e384225f57f8c900467327f974b0c9aac9f5d5dbc5d8075f2a138d24538a5278c56113e7953c10a2a636ee974cb7160f6ff24edabf2cf25a7e2aff808d35b0f17c17632456b42d451f858cb299b57f5434ad72eff59a24d631f61cf5b9f1a2166c803abcc5994955677f7340776f7f29ca24790be244e7eec8d153c7d71274784bdffde17f5858518e64629c2c02f3d0ef9d79de4ce9cd84d6267ade1030b6e2d01d84626405caa0c06545cc714073f8884a8ddc3b39234167df8f2a52ba9dccd3093e5213cd01d395b9e758380d6dc806dba8ba5a36b948ce7b4bce5146addda807d4ebe0854dc4586234503d2a984a39a8e43a891b38f77a7830d8b2209d49f53325d3ede6a848589d530ce360460ec35062408771b7b4e6c1f25174b2bfcdb3e5b0596af737e88d9cfba60fef21fb631ad244081a8775d24bf89cca1eb483024c20983df95d0aed66220555f2f5c2e63711699f181d489f67aaa2ec841dffed19f4408210e7cd1e8d4ba74f4c11c755c82ddf019fc86a46055566c8a0396720d84b8ab9998fd3629ada4ce08d052a0106e069a150689c0b59c3297cc10b933e81bffade1f103fc37f4a500f780b4d5c7fa5de9a858b9bd707d9aa2326f71693a5c0b28a46c9e60eba9fd9ae7ae1d4cb064a15802c065d42e4497156613ebd610ba6a2e380316fbe30d7cd758d7287b34c6ccf16ac0b664b6bc2c26244ead7f58046a437f68ca5a9e2ecf6cd392dcca885c4012c37ebd14dba03d85009fcc10ca0a27c8a38fbc9ec2922c7578b5da23f73d8dbeadf0d2e97611cae560b719141767dc6fbb4ece445f953b2ad6b9d0cef9752fd67bf6492a6fe1ace44539d6a460ce840cd096a2ce54967be284d8b693d7800cf9271f1c4e5b64d93bbfd4c4ee2b3962c59b911296226232cdf1b7c4c76b71aca3f00f457a1978284c804b645836dc044090d986b5869353d8d7f96ad3be5d49821224815873f2b9145d813bd7d8ff455c10a2c5500805c62ef602c5682e13653711173aabee7266d90cef309c04b02e46719f93c607749326a968d701330f0224a3fd1cdfe68c998b69d8f86d1808c357906142997ef2fbe536afb046119b028ae7057a1d76759db0231ff562e688d10ba3cc744659ec2cd8e1d35334d9c65294ad13f94e75a9674d84f6a0c79d659a3c2b72d0a8f7e390616319ec56fffee3f3a2ca300b9a0c4c8c12ed15277c33b040ff4644ae1d3cf2358c7b768154c6f1ce7b8d239c0b9dbb571bba1059740dda0d14400f6f32f3046b4ad3ec79d5a500bc0feb060327289f2762b2ce1bb16e6c07cb7fbbae0a407abd4c722c900d78a50e7c42c394811f7a9f638813894c562ad387ed2563dee5334c067aed4198619f6fccb2b8f96906e028d730fb76a9624e52b7a3ceee188e7b08ea8fa77ab26fde8f1eef9dc1a876833b6da2d6a5a5ad2b4398844f6c712f0188353d8287f3de90554632e5406ba1593c2537617bac528f43d4b6a95bfda91bfe1424b0ccac56708c614f0a327488d963f52b6c1352b35b2809f601750a0aafed33ae45e3a14ea33981fa918a2a6f98fbbf88079f5cc28ea45ae663065f3c4aeef37769ce0f58bc7d777b4686fdba05116ad157691603eeab3f5e3c4a24c5e3f0594e83e2da91253345d7c6da7c9ce4f78e528b91c173ce901228abacfbb0e2eded01fa54f838cb3b864b6d2ace714e8a16c8d46f2f622e817c017901e1fcf85e2552069420f664d4a70a78980f3f51017925398e94fd5112d175b87c7d1549201ad54c6a33c23616d8959a5bf732d4f5cd069fb5ee1e68c84fe38331a0b5fe621435b3d6d6d256ddc6ce9a59ed36a09682bb12bd44303045b33f327c2edeec8a92ee310f8b0a0419bcde4769e0d0fb747b3521ffc030bca90671a6e29dcf6457022468bb79dc2425ef87ff7089c42a9988345e26f36308fc5504769d8b3beed7decb22c529f1be56f7ae3bc74daca31707669f2807ed7ffb8039b156344687888ec06caf5ed3b736541579b0bee9cad35e387c07752bebffee227edeb7314bdb641f7abac32d1e253448294a62131cda5235991c347985aff96a949dcd20323a7d99b06179fd010815293792a1505760849fe8f20b22627f8eadb9c0cd2f51556096aa000000000000000000000000000000000000000000000000000000060a10131a212a30"
- }
- }
-]
diff --git a/packages/web3-zond-accounts/test/integration/account.test.ts b/packages/web3-zond-accounts/test/integration/account.test.ts
index 8674ca13..533a74b7 100644
--- a/packages/web3-zond-accounts/test/integration/account.test.ts
+++ b/packages/web3-zond-accounts/test/integration/account.test.ts
@@ -16,7 +16,7 @@ along with web3.js. If not, see .
*/
import { Address } from '@theqrl/web3-types';
-import { /*Web3ValidatorError,*/ isHexStrict } from '@theqrl/web3-validator';
+import { /*Web3ValidatorError,*/ isAddressString } from '@theqrl/web3-validator';
import {
create,
//decrypt,
@@ -52,7 +52,7 @@ describe('accounts', () => {
const account = create();
expect(typeof account.seed).toBe('string');
expect(typeof account.address).toBe('string');
- expect(isHexStrict(account.address)).toBe(true);
+ expect(isAddressString(account.address)).toBe(true);
//expect(typeof account.encrypt).toBe('function');
expect(typeof account.sign).toBe('function');
expect(typeof account.signTransaction).toBe('function');
@@ -142,6 +142,7 @@ describe('accounts', () => {
// });
});
+ // TODO(youtrack/theqrl/web3.js/3)
// describe('encrypt', () => {
// describe('valid cases', () => {
// it.each(validEncryptData)('%s', async (input, output) => {
diff --git a/packages/web3-zond-accounts/test/integration/wallet.test.ts b/packages/web3-zond-accounts/test/integration/wallet.test.ts
index 7ff2f2ea..640e805e 100644
--- a/packages/web3-zond-accounts/test/integration/wallet.test.ts
+++ b/packages/web3-zond-accounts/test/integration/wallet.test.ts
@@ -213,6 +213,7 @@ describe('Wallet', () => {
});
});
+ // TODO(youtrack/theqrl/web3.js/3)
// describe('encrypt', () => {
// it('should encrypt all accounts and return array', async () => {
// const account1 = accountProvider.create();
diff --git a/packages/web3-zond-accounts/test/unit/account.test.ts b/packages/web3-zond-accounts/test/unit/account.test.ts
index 302d3aa2..4b683f5b 100644
--- a/packages/web3-zond-accounts/test/unit/account.test.ts
+++ b/packages/web3-zond-accounts/test/unit/account.test.ts
@@ -16,7 +16,7 @@ along with web3.js. If not, see .
*/
import { Address } from '@theqrl/web3-types';
-import { /*Web3ValidatorError,*/ isHexStrict } from '@theqrl/web3-validator';
+import { /*Web3ValidatorError,*/ isAddressString } from '@theqrl/web3-validator';
import {
create,
//decrypt,
@@ -52,7 +52,8 @@ describe('accounts', () => {
const account = create();
expect(typeof account.seed).toBe('string');
expect(typeof account.address).toBe('string');
- expect(isHexStrict(account.address)).toBe(true);
+ expect(isAddressString(account.address)).toBe(true);
+ // TODO(youtrack/theqrl/web3.js/3)
//expect(typeof account.encrypt).toBe('function');
expect(typeof account.sign).toBe('function');
expect(typeof account.signTransaction).toBe('function');
@@ -103,7 +104,7 @@ describe('accounts', () => {
expect(signedResult.messageHash).toBeDefined();
expect(signedResult.rawTransaction).toBeDefined();
expect(signedResult.transactionHash).toBeDefined();
- expect(signedResult.signature).toMatch(/0[xX][0-9a-fA-F]{64}/);
+ expect(signedResult.signature).toMatch(/0[xX][0-9a-fA-F]{9190}/);
});
it.each(transactionsTestData)('Recover transaction', async txData => {
@@ -137,6 +138,7 @@ describe('accounts', () => {
});
});
+ // TODO(youtrack/theqrl/web3.js/3)
// describe('encrypt', () => {
// describe('valid cases', () => {
// it.each(validEncryptData)('%s', async (input, output) => {
diff --git a/packages/web3-zond-accounts/test/unit/common/chains.test.ts b/packages/web3-zond-accounts/test/unit/common/chains.test.ts
index 750ffd1b..f8f1673b 100644
--- a/packages/web3-zond-accounts/test/unit/common/chains.test.ts
+++ b/packages/web3-zond-accounts/test/unit/common/chains.test.ts
@@ -22,7 +22,7 @@ describe('[Common/Chains]: Initialization / Chain params', () => {
expect(c.chainName()).toBe('mainnet');
expect(c.chainId()).toEqual(BigInt(1));
expect(c.networkId()).toEqual(BigInt(1));
- expect(c.hardfork()).toEqual(Hardfork.Merge);
+ expect(c.hardfork()).toEqual(Hardfork.Shanghai);
expect(c.hardfork()).toEqual(c.DEFAULT_HARDFORK);
c = new Common({ chain: 1 });
@@ -34,18 +34,18 @@ describe('[Common/Chains]: Initialization / Chain params', () => {
expect(c.chainName()).toBe('mainnet');
expect(c.chainId()).toEqual(BigInt(1));
expect(c.networkId()).toEqual(BigInt(1));
- expect(c.hardfork()).toEqual(Hardfork.Merge);
+ expect(c.hardfork()).toEqual(Hardfork.Shanghai);
expect(c.hardfork()).toEqual(c.DEFAULT_HARDFORK);
});
it('Should initialize with chain and hardfork provided', () => {
- const c = new Common({ chain: 'mainnet', hardfork: 'byzantium' });
- expect(c.hardfork()).toBe('byzantium');
+ const c = new Common({ chain: 'mainnet', hardfork: 'shanghai' });
+ expect(c.hardfork()).toBe('shanghai');
});
it('Should initialize with chain and hardfork provided by Chain and Hardfork enums', () => {
- const c = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Byzantium });
- expect(c.hardfork()).toBe('byzantium');
+ const c = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Shanghai });
+ expect(c.hardfork()).toBe('shanghai');
});
it('Should handle initialization errors', () => {
@@ -61,23 +61,18 @@ describe('[Common/Chains]: Initialization / Chain params', () => {
};
expect(f).toThrow('not supported'); // eslint-disable-line no-new
});
-
+
it('Should provide correct access to chain parameters', () => {
- let c = new Common({ chain: 'mainnet', hardfork: 'chainstart' });
- expect(c.hardforks()[3]['block']).toBe(2463000);
- expect(c.consensusType()).toEqual(ConsensusType.ProofOfWork);
- expect(c.consensusAlgorithm()).toEqual(ConsensusAlgorithm.Ethash);
+ let c = new Common({ chain: 'mainnet', hardfork: 'shanghai' });
+ // expect(c.hardforks()[3]['block']).toBe(2463000);
+ expect(c.hardforks()[0]['block']).toBe(0);
+ expect(c.consensusType()).toEqual(ConsensusType.ProofOfStake);
+ expect(c.consensusAlgorithm()).toEqual(ConsensusAlgorithm.Casper);
expect(c.consensusConfig()).toEqual({});
-
- c = new Common({ chain: 'goerli', hardfork: 'chainstart' });
- expect(c.hardforks()[3]['block']).toBe(0);
- expect(c.consensusType()).toEqual(ConsensusType.ProofOfAuthority);
- expect(c.consensusAlgorithm()).toEqual(ConsensusAlgorithm.Clique);
- expect(c.consensusConfig().epoch).toBe(30000);
});
it('Should provide DNS network information in a uniform way', () => {
- const configs = ['mainnet', 'goerli'];
+ const configs = ['mainnet'];
for (const network of configs) {
const c = new Common({ chain: network });
const dnsNetworks = c.dnsNetworks();
diff --git a/packages/web3-zond-accounts/test/unit/common/customChains.test.ts b/packages/web3-zond-accounts/test/unit/common/customChains.test.ts
index d11094e1..4955fc88 100644
--- a/packages/web3-zond-accounts/test/unit/common/customChains.test.ts
+++ b/packages/web3-zond-accounts/test/unit/common/customChains.test.ts
@@ -14,7 +14,7 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { Chain, Common, ConsensusType, CustomChain, Hardfork } from '../../../src/common';
+import { Chain, Common, ConsensusType, /*CustomChain,*/ Hardfork } from '../../../src/common';
import * as testnet from '../../fixtures/common/testnet.json';
import * as testnet2 from '../../fixtures/common/testnet2.json';
@@ -22,11 +22,13 @@ import * as testnet3 from '../../fixtures/common/testnet3.json';
describe('[Common]: Custom chains', () => {
it('chain -> object: should provide correct access to private network chain parameters', () => {
- const c = new Common({ chain: testnet, hardfork: Hardfork.Byzantium });
+ const c = new Common({ chain: testnet, hardfork: Hardfork.Shanghai });
expect(c.chainName()).toBe('testnet');
expect(c.chainId()).toEqual(BigInt(12345));
expect(c.networkId()).toEqual(BigInt(12345));
- expect(c.hardforks()[3]['block']).toBe(3);
+ // NOTE(rgeraldes24): custom chains tbd
+ // expect(c.hardforks()[3]['block']).toBe(3);
+ expect(c.hardforks()[0]['block']).toBe(0);
expect(c.bootstrapNodes()![1].ip).toBe('10.0.0.2');
});
@@ -44,7 +46,7 @@ describe('[Common]: Custom chains', () => {
const customChainParams = { name: 'custom', chainId: 123, networkId: 678 };
const customChainCommon = Common.custom(customChainParams, {
- hardfork: Hardfork.Byzantium,
+ hardfork: Hardfork.Shanghai,
});
// From custom chain params
@@ -58,9 +60,11 @@ describe('[Common]: Custom chains', () => {
expect(customChainCommon.hardforks()).toEqual(mainnetCommon.hardforks());
// Set only to this Common
- expect(customChainCommon.hardfork()).toBe('byzantium');
+ expect(customChainCommon.hardfork()).toBe('shanghai');
});
+ // NOTE(rgeraldes24): custom chains tbd
+ /*
it('custom() -> behavior', () => {
let common = Common.custom({ chainId: 123 });
expect(common.networkId()).toEqual(BigInt(1));
@@ -76,7 +80,7 @@ describe('[Common]: Custom chains', () => {
common = Common.custom(CustomChain.PolygonMumbai);
expect(common.hardfork()).toEqual(common.DEFAULT_HARDFORK);
- common = Common.custom(CustomChain.OptimisticEthereum, { hardfork: Hardfork.Byzantium });
+ common = Common.custom(CustomChain.CustomZond, { hardfork: Hardfork.Byzantium });
expect(common.hardfork()).toEqual(Hardfork.Byzantium);
expect(() => {
@@ -84,6 +88,7 @@ describe('[Common]: Custom chains', () => {
Common.custom('this-chain-is-not-supported');
}).toThrow('not supported');
});
+ */
it('customChains parameter: initialization exception', () => {
expect(() => {
@@ -97,36 +102,44 @@ describe('[Common]: Custom chains', () => {
it('customChains parameter: initialization', () => {
let c = new Common({
chain: Chain.Mainnet,
- hardfork: Hardfork.Byzantium,
+ hardfork: Hardfork.Shanghai,
customChains: [testnet],
});
expect(c.chainName()).toBe('mainnet');
- expect(c.hardforkBlock()!).toEqual(BigInt(4370000));
+ // NOTE(rgeraldes24): custom chains tbd
+ // expect(c.hardforkBlock()!).toEqual(BigInt(4370000));
+ expect(c.hardforkBlock()!).toEqual(BigInt(0));
c.setChain('testnet');
expect(c.chainName()).toBe('testnet');
- expect(c.hardforkBlock()!).toEqual(BigInt(4));
+ // NOTE(rgeraldes24): custom chains tbd
+ // expect(c.hardforkBlock()!).toEqual(BigInt(4));
+ expect(c.hardforkBlock()!).toEqual(BigInt(0));
c = new Common({
chain: 'testnet',
- hardfork: Hardfork.Byzantium,
+ hardfork: Hardfork.Shanghai,
customChains: [testnet],
});
expect(c.chainName()).toBe('testnet');
- expect(c.hardforkBlock()!).toEqual(BigInt(4));
+ // NOTE(rgeraldes24): custom chains tbd
+ // expect(c.hardforkBlock()!).toEqual(BigInt(4));
+ expect(c.hardforkBlock()!).toEqual(BigInt(0));
const customChains = [testnet, testnet2, testnet3];
c = new Common({
chain: 'testnet2',
- hardfork: Hardfork.Istanbul,
+ hardfork: Hardfork.Shanghai,
customChains,
});
expect(c.chainName()).toBe('testnet2');
- expect(c.hardforkBlock()!).toEqual(BigInt(10));
+ // NOTE(rgeraldes24): custom chains tbd
+ // expect(c.hardforkBlock()!).toEqual(BigInt(10));
+ expect(c.hardforkBlock()!).toEqual(BigInt(0));
c.setChain('testnet');
expect(c.chainName()).toBe('testnet');
- expect(c.consensusType()).toEqual(ConsensusType.ProofOfWork);
+ expect(c.consensusType()).toEqual(ConsensusType.ProofOfStake);
});
});
diff --git a/packages/web3-zond-accounts/test/unit/common/eips.test.ts b/packages/web3-zond-accounts/test/unit/common/eips.test.ts
index d1b10f02..b4f9796f 100644
--- a/packages/web3-zond-accounts/test/unit/common/eips.test.ts
+++ b/packages/web3-zond-accounts/test/unit/common/eips.test.ts
@@ -14,28 +14,31 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { toBigInt } from '@theqrl/web3-utils';
-import { Chain, Common, Hardfork } from '../../../src/common';
+// import { toBigInt } from '@theqrl/web3-utils';
+// import { Chain, Common, Hardfork } from '../../../src/common';
-describe('[Common/EIPs]: Initialization / Chain params', () => {
- it('Correct initialization', () => {
- let eips = [2537, 2929];
- const c = new Common({ chain: Chain.Mainnet, eips });
- expect(c.eips()).toEqual(eips);
+// NOTE(rgeraldes24): unused for now
+describe.skip('[Common/EIPs]: Initialization / Chain params', () => {
+
+ it.skip('Correct initialization', () => {
+ // let eips = [2537, 2929];
+ // const c = new Common({ chain: Chain.Mainnet, eips });
+ // expect(c.eips()).toEqual(eips);
- eips = [2718, 2929, 2930];
- expect(() => {
- // eslint-disable-next-line no-new
- new Common({ chain: Chain.Mainnet, eips, hardfork: Hardfork.Istanbul });
- }).not.toThrow();
+ // eips = [2718, 2929, 2930];
+ // expect(() => {
+ // // eslint-disable-next-line no-new
+ // new Common({ chain: Chain.Mainnet, eips, hardfork: Hardfork.Istanbul });
+ // }).not.toThrow();
- eips = [2930];
- expect(() => {
- // eslint-disable-next-line no-new
- new Common({ chain: Chain.Mainnet, eips, hardfork: Hardfork.Istanbul });
- }).toThrow();
+ // eips = [2930];
+ // expect(() => {
+ // // eslint-disable-next-line no-new
+ // new Common({ chain: Chain.Mainnet, eips, hardfork: Hardfork.Istanbul });
+ // }).toThrow();
});
+ /*
it('Initialization errors', () => {
const UNSUPPORTED_EIP = 1000000;
const eips = [UNSUPPORTED_EIP];
@@ -44,17 +47,17 @@ describe('[Common/EIPs]: Initialization / Chain params', () => {
new Common({ chain: Chain.Mainnet, eips });
}).toThrow('not supported');
- /*
+
// Manual test since no test triggering EIP config available
// TODO: recheck on addition of new EIP configs
// To run manually change minimumHardfork in EIP2537 config to petersburg
- eips = [ 2537, ]
- msg = 'should throw on not meeting minimum hardfork requirements'
- f = () => {
- new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Byzantium, eips })
- }
- st.throws(f, /minimumHardfork/, msg)
- */
+ // eips = [ 2537, ]
+ // msg = 'should throw on not meeting minimum hardfork requirements'
+ // f = () => {
+ // new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Byzantium, eips })
+ // }
+ // st.throws(f, /minimumHardfork/, msg)
+
});
it('isActivatedEIP()', () => {
@@ -75,4 +78,5 @@ describe('[Common/EIPs]: Initialization / Chain params', () => {
expect(c.eipBlock(0)).toBeNull();
});
+ */
});
diff --git a/packages/web3-zond-accounts/test/unit/common/hardforks.test.ts b/packages/web3-zond-accounts/test/unit/common/hardforks.test.ts
index 0dceae5e..6d26f2f1 100644
--- a/packages/web3-zond-accounts/test/unit/common/hardforks.test.ts
+++ b/packages/web3-zond-accounts/test/unit/common/hardforks.test.ts
@@ -14,28 +14,14 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { hexToBytes } from '@theqrl/web3-utils';
+// import { hexToBytes } from '@theqrl/web3-utils';
import { Chain, Common, ConsensusAlgorithm, ConsensusType, Hardfork } from '../../../src/common';
-import gzondGenesisKiln from '../../fixtures/common/gzond-genesis-kiln.json';
+// import gzondGenesisKiln from '../../fixtures/common/gzond-genesis-kiln.json';
describe('[Common]: Hardfork logic', () => {
it('Hardfork access', () => {
const supportedHardforks = [
- Hardfork.Chainstart,
- Hardfork.Homestead,
- Hardfork.Dao,
- Hardfork.Chainstart,
- Hardfork.SpuriousDragon,
- Hardfork.Byzantium,
- Hardfork.Constantinople,
- Hardfork.Petersburg,
- Hardfork.Istanbul,
- Hardfork.Berlin,
- Hardfork.London,
- Hardfork.ArrowGlacier,
- Hardfork.GrayGlacier,
Hardfork.Shanghai,
- Hardfork.Merge,
];
let c;
@@ -48,33 +34,17 @@ describe('[Common]: Hardfork logic', () => {
it('getHardforkByBlockNumber() / setHardforkByBlockNumber()', () => {
let c = new Common({ chain: Chain.Mainnet });
- expect(c.getHardforkByBlockNumber(0)).toEqual(Hardfork.Chainstart);
- expect(c.getHardforkByBlockNumber(1149999)).toEqual(Hardfork.Chainstart);
- expect(c.getHardforkByBlockNumber(1150000)).toEqual(Hardfork.Homestead);
- expect(c.getHardforkByBlockNumber(1400000)).toEqual(Hardfork.Homestead);
- expect(c.getHardforkByBlockNumber(9200000)).toEqual(Hardfork.MuirGlacier);
- expect(c.getHardforkByBlockNumber(12244000)).toEqual(Hardfork.Berlin);
- expect(c.getHardforkByBlockNumber(12965000)).toEqual(Hardfork.London);
- expect(c.getHardforkByBlockNumber(13773000)).toEqual(Hardfork.ArrowGlacier);
- expect(c.getHardforkByBlockNumber(15050000)).toEqual(Hardfork.GrayGlacier);
- // merge is now specified at 15537394 in config
- expect(c.getHardforkByBlockNumber(999999999999)).toEqual(Hardfork.Merge);
-
- expect(c.setHardforkByBlockNumber(0)).toEqual(Hardfork.Chainstart);
- expect(c.setHardforkByBlockNumber(1149999)).toEqual(Hardfork.Chainstart);
- expect(c.setHardforkByBlockNumber(1150000)).toEqual(Hardfork.Homestead);
- expect(c.setHardforkByBlockNumber(1400000)).toEqual(Hardfork.Homestead);
- expect(c.setHardforkByBlockNumber(12244000)).toEqual(Hardfork.Berlin);
- expect(c.setHardforkByBlockNumber(12965000)).toEqual(Hardfork.London);
- expect(c.setHardforkByBlockNumber(13773000)).toEqual(Hardfork.ArrowGlacier);
- expect(c.setHardforkByBlockNumber(15050000)).toEqual(Hardfork.GrayGlacier);
- // merge is now specified at 15537394 in config
- expect(c.setHardforkByBlockNumber(999999999999)).toEqual(Hardfork.Merge);
-
- c = new Common({ chain: Chain.Sepolia });
- expect(c.setHardforkByBlockNumber(1735371)).toBe('mergeForkIdTransition');
+ expect(c.getHardforkByBlockNumber(0)).toEqual(Hardfork.Shanghai);
+ expect(c.getHardforkByBlockNumber(1149999)).toEqual(Hardfork.Shanghai);
+ expect(c.getHardforkByBlockNumber(999999999999)).toEqual(Hardfork.Shanghai);
+
+ expect(c.setHardforkByBlockNumber(0)).toEqual(Hardfork.Shanghai);
+ expect(c.setHardforkByBlockNumber(1149999)).toEqual(Hardfork.Shanghai);
+ expect(c.setHardforkByBlockNumber(999999999999)).toEqual(Hardfork.Shanghai);
});
+ // NOTE(rgeraldes24): enable/review upon a new fork
+ /*
it('should throw if no hardfork qualifies', () => {
const hardforks = [
{
@@ -130,20 +100,6 @@ describe('[Common]: Hardfork logic', () => {
expect(c.nextHardforkBlockOrTimestamp(Hardfork.Shanghai)).toBeNull();
});
- it('isHardforkBlock()', () => {
- let c = new Common({ chain: Chain.Sepolia });
- // eslint-disable-next-line deprecation/deprecation
- expect(c.isHardforkBlock(1450409)).toBe(true);
- // eslint-disable-next-line deprecation/deprecation
- expect(c.isHardforkBlock(1735372)).toBe(false);
-
- c = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Byzantium });
- // eslint-disable-next-line deprecation/deprecation
- expect(c.isHardforkBlock(4370000)).toBe(true);
- // eslint-disable-next-line deprecation/deprecation
- expect(c.isHardforkBlock(2463001)).toBe(false);
- });
-
it('nextHardforkBlockOrTimestamp()', () => {
let c = new Common({ chain: Chain.Sepolia, hardfork: Hardfork.MergeForkIdTransition });
expect(c.nextHardforkBlockOrTimestamp()!).toEqual(BigInt(1677557088));
@@ -157,20 +113,6 @@ describe('[Common]: Hardfork logic', () => {
expect(c.nextHardforkBlockOrTimestamp()!).toEqual(BigInt(1561651));
});
- it('isNextHardforkBlock()', () => {
- const c = new Common({ chain: Chain.Goerli, hardfork: Hardfork.Istanbul });
- // eslint-disable-next-line deprecation/deprecation
- expect(c.isNextHardforkBlock(4460644)).toBe(true);
- // eslint-disable-next-line deprecation/deprecation
- expect(c.isNextHardforkBlock(5062605, 'berlin')).toBe(true);
- // eslint-disable-next-line deprecation/deprecation
- expect(c.isNextHardforkBlock(5062605, Hardfork.Berlin)).toBe(true);
- // eslint-disable-next-line deprecation/deprecation
- expect(c.isNextHardforkBlock(13773000, Hardfork.Byzantium)).toBe(false);
- // eslint-disable-next-line deprecation/deprecation
- expect(c.isNextHardforkBlock(13773001, Hardfork.London)).toBe(false);
- });
-
it('hardforkIsActiveOnBlock() / activeOnBlock()', () => {
let c = new Common({ chain: Chain.Goerli });
expect(c.hardforkIsActiveOnBlock(Hardfork.Istanbul, 1561651)).toBe(true);
@@ -222,14 +164,6 @@ describe('[Common]: Hardfork logic', () => {
Chain.Mainnet,
hexToBytes('d4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3'),
],
- [
- Chain.Goerli,
- hexToBytes('bf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a'),
- ],
- [
- Chain.Sepolia,
- hexToBytes('25a5cc106eea7138acab33231d7160d69cb777ee0c2c553fcddf5138993e6dd9'),
- ],
];
let c = new Common({ chain: Chain.Mainnet });
@@ -283,23 +217,20 @@ describe('[Common]: Hardfork logic', () => {
const c = new Common({ chain: Chain.Mainnet });
const res = c.hardforkForForkHash('0x3edd5b10')!;
- expect(res.name).toEqual(Hardfork.SpuriousDragon);
+ expect(res.name).toEqual(Hardfork.Shanghai);
expect(c.hardforkForForkHash('0x12345')).toBeNull();
});
+ */
it('HF consensus updates', () => {
- let c = new Common({ chain: Chain.Goerli, hardfork: Hardfork.Byzantium });
- expect(c.consensusType()).toEqual(ConsensusType.ProofOfAuthority);
- expect(c.consensusAlgorithm()).toEqual(ConsensusAlgorithm.Clique);
- expect(c.consensusConfig()['period']).toBe(15);
-
- c = new Common({ chain: Chain.Goerli, hardfork: Hardfork.Merge });
+ const c = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Shanghai });
expect(c.consensusType()).toEqual(ConsensusType.ProofOfStake);
expect(c.consensusAlgorithm()).toEqual(ConsensusAlgorithm.Casper);
expect(c.consensusConfig()).toEqual({});
});
+ /*
it('Should correctly apply hardfork changes', () => {
// For sepolia MergeForkIdTransition happens AFTER merge
let c = new Common({ chain: Chain.Sepolia, hardfork: Hardfork.London });
@@ -332,4 +263,5 @@ describe('[Common]: Hardfork logic', () => {
c.setHardfork(Hardfork.MergeForkIdTransition);
expect(c.consensusType()).toEqual(ConsensusType.ProofOfWork);
});
+ */
});
diff --git a/packages/web3-zond-accounts/test/unit/common/mergePOS.test.ts b/packages/web3-zond-accounts/test/unit/common/mergePOS.test.ts
index 4cbe577a..6669c318 100644
--- a/packages/web3-zond-accounts/test/unit/common/mergePOS.test.ts
+++ b/packages/web3-zond-accounts/test/unit/common/mergePOS.test.ts
@@ -14,131 +14,107 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { toBigInt } from '@theqrl/web3-utils';
-import { Chain, Common, Hardfork } from '../../../src/common';
+// import { toBigInt } from '@theqrl/web3-utils';
+import { /*Chain,*/ Common, Hardfork } from '../../../src/common';
-import * as testnetMerge from '../../fixtures/common/merge/testnetMerge.json';
-import * as testnetPOS from '../../fixtures/common/merge/testnetPOS.json';
-import postMerge from '../../fixtures/common/post-merge.json';
+import * as testnetPOS from '../../fixtures/common/pos.json';
+import posExecGenesis from '../../fixtures/common/pos-exec-genesis.json';
describe('[Common]: Merge/POS specific logic', () => {
- it('hardforkTTD()', () => {
- const customChains = [testnetMerge];
- const c = new Common({ chain: 'testnetMerge', hardfork: Hardfork.Istanbul, customChains });
- expect(c.hardforkTTD(Hardfork.Merge)).toEqual(BigInt(5000));
- expect(c.hardforkTTD('thisHardforkDoesNotExist')).toBeNull();
- });
-
- it('getHardforkByBlockNumber(), merge block null, with total difficulty', () => {
- const customChains = [testnetMerge];
+ it('getHardforkByBlockNumber()', () => {
+ const customChains = [testnetPOS];
const c = new Common({
- chain: 'testnetMerge',
- hardfork: Hardfork.Istanbul,
+ chain: 'testnetPOS',
+ hardfork: Hardfork.Shanghai,
customChains,
});
- expect(c.getHardforkByBlockNumber(0)).toBe('chainstart');
- expect(c.getHardforkByBlockNumber(14)).toBe('london');
- expect(c.getHardforkByBlockNumber(15, 5000)).toBe('merge');
- expect(c.getHardforkByBlockNumber(15, 5001)).toBe('merge');
- expect(c.getHardforkByBlockNumber(15, 4999)).toBe('london');
- expect(c.getHardforkByBlockNumber(12, 4999)).toBe('berlin');
+ expect(c.getHardforkByBlockNumber(0)).toBe('shanghai');
+ expect(c.getHardforkByBlockNumber(14)).toBe('shanghai');
+ expect(c.getHardforkByBlockNumber(15, 5000)).toBe('shanghai');
+ expect(c.getHardforkByBlockNumber(15, 5001)).toBe('shanghai');
+ expect(c.getHardforkByBlockNumber(15, 4999)).toBe('shanghai');
+ expect(c.getHardforkByBlockNumber(12, 4999)).toBe('shanghai');
});
- it('getHardforkByBlockNumber(), merge block set, with total difficulty', () => {
- const testnetMergeWithBlockNumber = JSON.parse(JSON.stringify(testnetMerge));
+ it('getHardforkByBlockNumber()', () => {
+ const testnetMergeWithBlockNumber = JSON.parse(JSON.stringify(testnetPOS));
// Set Merge block to 15
- testnetMergeWithBlockNumber['hardforks'][8]['block'] = 16;
+ // testnetMergeWithBlockNumber['hardforks'][8]['block'] = 16;
const customChains = [testnetMergeWithBlockNumber];
const c = new Common({
- chain: 'testnetMerge',
- hardfork: Hardfork.Istanbul,
+ chain: 'testnetPOS',
+ hardfork: Hardfork.Shanghai,
customChains,
});
- expect(c.getHardforkByBlockNumber(0)).toBe('chainstart');
- expect(c.getHardforkByBlockNumber(16)).toBe('merge');
- expect(c.getHardforkByBlockNumber(16, 5000)).toBe('merge');
- expect(c.getHardforkByBlockNumber(16, 5001)).toBe('merge');
- expect(c.getHardforkByBlockNumber(12, 4999)).toBe('berlin');
-
- expect(() => {
- c.getHardforkByBlockNumber(16, 4999);
- }).toThrow('Maximum HF determined by total difficulty is lower than the block number HF');
-
- expect(() => {
- c.getHardforkByBlockNumber(14, 5000);
- }).toThrow('HF determined by block number is lower than the minimum total difficulty HF');
+ expect(c.getHardforkByBlockNumber(0)).toBe('shanghai');
+ expect(c.getHardforkByBlockNumber(16)).toBe('shanghai');
+ expect(c.getHardforkByBlockNumber(16, 5000)).toBe('shanghai');
+ expect(c.getHardforkByBlockNumber(16, 5001)).toBe('shanghai');
+ expect(c.getHardforkByBlockNumber(12, 4999)).toBe('shanghai');
});
- it('getHardforkByBlockNumber(), merge block set + subsequent HF, with total difficulty', () => {
- const testnetMergeWithBlockNumber = JSON.parse(JSON.stringify(testnetMerge));
+ it('getHardforkByBlockNumber()', () => {
+ const testnetMergeWithBlockNumber = JSON.parse(JSON.stringify(testnetPOS));
// Set Merge block to 15
- testnetMergeWithBlockNumber['hardforks'][8]['block'] = 16;
+ // testnetMergeWithBlockNumber['hardforks'][8]['block'] = 16;
// Set Shanghai block to 18
- testnetMergeWithBlockNumber['hardforks'][9]['block'] = 18;
+ // testnetMergeWithBlockNumber['hardforks'][9]['block'] = 18;
const customChains = [testnetMergeWithBlockNumber];
const c = new Common({
- chain: 'testnetMerge',
- hardfork: Hardfork.Istanbul,
+ chain: 'testnetPOS',
+ hardfork: Hardfork.Shanghai,
customChains,
});
expect(c.getHardforkByBlockNumber(18, 5001)).toBe('shanghai');
});
- it('setHardforkByBlockNumber(), merge block null, with total difficulty', () => {
- const customChains = [testnetMerge];
+ it('setHardforkByBlockNumber()', () => {
+ const customChains = [testnetPOS];
const c = new Common({
- chain: 'testnetMerge',
- hardfork: Hardfork.Istanbul,
+ chain: 'testnetPOS',
+ hardfork: Hardfork.Shanghai,
customChains,
});
- expect(c.setHardforkByBlockNumber(0)).toBe('chainstart');
- expect(c.setHardforkByBlockNumber(14)).toBe('london');
- expect(c.setHardforkByBlockNumber(15, 5000)).toBe('merge');
- expect(c.setHardforkByBlockNumber(15, 5001)).toBe('merge');
- expect(c.setHardforkByBlockNumber(15, 4999)).toBe('london');
- expect(c.setHardforkByBlockNumber(12, 4999)).toBe('berlin');
+ expect(c.setHardforkByBlockNumber(0)).toBe('shanghai');
+ expect(c.setHardforkByBlockNumber(14)).toBe('shanghai');
+ expect(c.setHardforkByBlockNumber(15, 5000)).toBe('shanghai');
+ expect(c.setHardforkByBlockNumber(15, 5001)).toBe('shanghai');
+ expect(c.setHardforkByBlockNumber(15, 4999)).toBe('shanghai');
+ expect(c.setHardforkByBlockNumber(12, 4999)).toBe('shanghai');
});
- it('setHardforkByBlockNumber(), merge block set, with total difficulty', () => {
- const testnetMergeWithBlockNumber = JSON.parse(JSON.stringify(testnetMerge));
+ it('setHardforkByBlockNumber()', () => {
+ const testnetMergeWithBlockNumber = JSON.parse(JSON.stringify(testnetPOS));
// Set Merge block to 15
- testnetMergeWithBlockNumber['hardforks'][8]['block'] = 16;
+ // testnetMergeWithBlockNumber['hardforks'][8]['block'] = 16;
const customChains = [testnetMergeWithBlockNumber];
const c = new Common({
- chain: 'testnetMerge',
- hardfork: Hardfork.Istanbul,
+ chain: 'testnetPOS',
+ hardfork: Hardfork.Shanghai,
customChains,
});
- expect(c.setHardforkByBlockNumber(0)).toBe('chainstart');
- expect(c.setHardforkByBlockNumber(16)).toBe('merge');
- expect(c.setHardforkByBlockNumber(16, 5000)).toBe('merge');
- expect(c.setHardforkByBlockNumber(16, 5001)).toBe('merge');
- expect(c.setHardforkByBlockNumber(12, 4999)).toBe('berlin');
-
- expect(() => {
- c.setHardforkByBlockNumber(16, 4999);
- }).toThrow('Maximum HF determined by total difficulty is lower than the block number HF');
-
- expect(() => {
- c.setHardforkByBlockNumber(14, 5000);
- }).toThrow('HF determined by block number is lower than the minimum total difficulty HF');
+ expect(c.setHardforkByBlockNumber(0)).toBe('shanghai');
+ expect(c.setHardforkByBlockNumber(16)).toBe('shanghai');
+ expect(c.setHardforkByBlockNumber(16, 5000)).toBe('shanghai');
+ expect(c.setHardforkByBlockNumber(16, 5001)).toBe('shanghai');
+ expect(c.setHardforkByBlockNumber(12, 4999)).toBe('shanghai');
});
- it('setHardforkByBlockNumber(), merge block set + subsequent HF, with total difficulty', () => {
- const testnetMergeWithBlockNumber = JSON.parse(JSON.stringify(testnetMerge));
+ it('setHardforkByBlockNumber()', () => {
+ const testnetMergeWithBlockNumber = JSON.parse(JSON.stringify(testnetPOS));
// Set Merge block to 15
- testnetMergeWithBlockNumber['hardforks'][8]['block'] = 16;
+ // testnetMergeWithBlockNumber['hardforks'][8]['block'] = 16;
// Set Shanghai block to 18
- testnetMergeWithBlockNumber['hardforks'][9]['block'] = 18;
+ // testnetMergeWithBlockNumber['hardforks'][9]['block'] = 18;
const customChains = [testnetMergeWithBlockNumber];
const c = new Common({
- chain: 'testnetMerge',
- hardfork: Hardfork.Istanbul,
+ chain: 'testnetPOS',
+ hardfork: Hardfork.Shanghai,
customChains,
});
@@ -147,27 +123,27 @@ describe('[Common]: Merge/POS specific logic', () => {
it('Pure POS testnet', () => {
const customChains = [testnetPOS];
- const c = new Common({ chain: 'testnetPOS', hardfork: Hardfork.Chainstart, customChains });
-
- expect(c.hardforkTTD(Hardfork.Chainstart)).toEqual(BigInt(0));
+ const c = new Common({ chain: 'testnetPOS', hardfork: Hardfork.Shanghai, customChains });
expect(c.getHardforkByBlockNumber(5, 0)).toBe('shanghai');
});
-
+
it('Should fail setting invalid hardfork', () => {
const customChains = [testnetPOS];
expect(() => {
// eslint-disable-next-line no-new
- new Common({ chain: 'testnetPOS', hardfork: Hardfork.Istanbul, customChains });
- }).toThrow(`Hardfork with name istanbul not supported`);
+ new Common({ chain: 'testnetPOS', hardfork: 'invalid', customChains });
+ }).toThrow(`Hardfork with name invalid not supported`);
});
it('should get the correct merge hardfork at genesis', async () => {
- const c = Common.fromGzondGenesis(postMerge, { chain: 'post-merge' });
- expect(c.getHardforkByBlockNumber(0)).toEqual(Hardfork.London);
- expect(c.getHardforkByBlockNumber(0, BigInt(0))).toEqual(Hardfork.Merge);
+ const c = Common.fromGzondGenesis(posExecGenesis, { chain: 'pos' });
+ expect(c.getHardforkByBlockNumber(0)).toEqual(Hardfork.Shanghai);
+ expect(c.getHardforkByBlockNumber(0, BigInt(0))).toEqual(Hardfork.Shanghai);
});
+ // NOTE(rgeraldes24): not valid atm
+ /*
it('test post merge hardforks using Sepolia with block null', () => {
const c = new Common({ chain: Chain.Sepolia });
@@ -243,14 +219,5 @@ describe('[Common]: Merge/POS specific logic', () => {
// restore value
mergeHf.block = prevMergeBlockVal;
});
-
- it('should throw if encounters a double ttd hardfork specification', () => {
- const c = new Common({ chain: Chain.Sepolia });
- // Add the ttd to mergeForkIdTransition which occurs post merge in sepolia
- c.hardforks().filter(hf => hf.name === 'mergeForkIdTransition')[0]!['ttd'] =
- '17000000000000000';
- expect(() => {
- c.setHardforkByBlockNumber(1735371);
- }).toThrow('More than one merge hardforks found with ttd specified');
- });
+ */
});
diff --git a/packages/web3-zond-accounts/test/unit/common/params.test.ts b/packages/web3-zond-accounts/test/unit/common/params.test.ts
index 46e8720e..eeafcafc 100644
--- a/packages/web3-zond-accounts/test/unit/common/params.test.ts
+++ b/packages/web3-zond-accounts/test/unit/common/params.test.ts
@@ -18,18 +18,19 @@ import { Chain, Common, Hardfork } from '../../../src/common';
describe('[Common]: Parameter access for param(), paramByHardfork()', () => {
it('Basic usage', () => {
- const c = new Common({ chain: Chain.Mainnet, eips: [2537] });
- expect(c.paramByHardfork('gasPrices', 'ecAdd', 'byzantium')).toEqual(BigInt(500));
+ const c = new Common({ chain: Chain.Mainnet, eips: [] });
+ expect(c.paramByHardfork('gasPrices', 'ecAdd', 'shanghai')).toEqual(BigInt(150));
- c.setHardfork(Hardfork.Byzantium);
- expect(c.param('gasPrices', 'ecAdd')).toEqual(BigInt(500));
- c.setHardfork(Hardfork.Istanbul);
- expect(c.param('gasPrices', 'ecAdd')).toEqual(BigInt(150));
- c.setHardfork(Hardfork.MuirGlacier);
+ // NOTE(rgeraldes24): there are no param updates yet
+ // c.setHardfork(Hardfork.Byzantium);
+ // expect(c.param('gasPrices', 'ecAdd')).toEqual(BigInt(500));
+ // c.setHardfork(Hardfork.Istanbul);
expect(c.param('gasPrices', 'ecAdd')).toEqual(BigInt(150));
+ // c.setHardfork(Hardfork.MuirGlacier);
+ // expect(c.param('gasPrices', 'ecAdd')).toEqual(BigInt(150));
expect(c.param('gasPrices', 'notexistingvalue')).toEqual(BigInt(0));
- expect(c.paramByHardfork('gasPrices', 'notexistingvalue', 'byzantium')).toEqual(BigInt(0));
+ expect(c.paramByHardfork('gasPrices', 'notexistingvalue', 'shanghai')).toEqual(BigInt(0));
});
it('Error cases for param(), paramByHardfork()', () => {
@@ -39,30 +40,39 @@ describe('[Common]: Parameter access for param(), paramByHardfork()', () => {
c.paramByHardfork('gasPrizes', 'ecAdd', 'byzantium');
}).toThrow('Topic gasPrizes not defined');
- c.setHardfork(Hardfork.Byzantium);
- expect(c.param('gasPrices', 'ecAdd')).toEqual(BigInt(500));
+ c.setHardfork(Hardfork.Shanghai);
+ expect(c.param('gasPrices', 'ecAdd')).toEqual(BigInt(150));
});
+ // NOTE(rgeraldes24): there are no param updates yet
it('Parameter updates', () => {
const c = new Common({ chain: Chain.Mainnet });
- expect(c.paramByHardfork('pow', 'minerReward', 'chainstart')).toEqual(
- BigInt(5000000000000000000),
+ expect(c.paramByHardfork('gasPrices', 'ecAdd', 'shanghai')).toEqual(
+ BigInt(150),
);
- expect(c.paramByHardfork('pow', 'minerReward', 'byzantium')).toEqual(
- BigInt(3000000000000000000),
- );
+ // expect(c.paramByHardfork('pow', 'minerReward', 'byzantium')).toEqual(
+ // BigInt(3000000000000000000),
+ // );
- expect(c.paramByHardfork('gasPrices', 'netSstoreNoopGas', 'constantinople')).toEqual(
- BigInt(200),
- );
+ // NOTE(rgeraldes24): removed along EIP-1283
+ // expect(c.paramByHardfork('gasPrices', 'netSstoreNoopGas', 'constantinople')).toEqual(
+ // BigInt(200),
+ // );
- expect(c.paramByHardfork('gasPrices', 'netSstoreNoopGas', 'petersburg')).toEqual(BigInt(0));
+ // NOTE(rgeraldes24): removed along EIP-1283
+ // expect(c.paramByHardfork('gasPrices', 'netSstoreNoopGas', 'petersburg')).toEqual(BigInt(0));
});
+ // NOTE(rgeraldes24): there are no param updates yet
it('Access by block number, paramByBlock()', () => {
- const c = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Byzantium });
+ const c = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Shanghai });
+ expect(c.paramByBlock('gasPrices', 'ecAdd', 4370000)).toEqual(BigInt(150));
+ expect(c.paramByBlock('gasPrices', 'ecAdd', 4369999)).toEqual(BigInt(150));
+
+ /*
+ const c = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Shanghai });
expect(c.paramByBlock('pow', 'minerReward', 4370000)).toEqual(BigInt(3000000000000000000));
expect(c.paramByBlock('pow', 'minerReward', 4369999)).toEqual(BigInt(5000000000000000000));
@@ -70,9 +80,11 @@ describe('[Common]: Parameter access for param(), paramByHardfork()', () => {
expect(c.paramByBlock('pow', 'minerReward', 4370000, td)).toEqual(
BigInt(3000000000000000000),
);
+ */
});
- it('EIP param access, paramByEIP()', () => {
+ // NOTE(rgeraldes): unused: no eips available(merged)
+ it.skip('EIP param access, paramByEIP()', () => {
const c = new Common({ chain: Chain.Mainnet });
expect(c.paramByEIP('gasPrices', 'notexistingvalue', 2537)).toBeUndefined();
@@ -88,15 +100,4 @@ describe('[Common]: Parameter access for param(), paramByHardfork()', () => {
expect(c.paramByEIP('gasPrices', 'Bls12381G1AddGas', 2537)).toEqual(BigInt(600));
});
-
- it('returns the right block delay for EIP3554', () => {
- for (const fork of [Hardfork.MuirGlacier, Hardfork.Berlin]) {
- const c = new Common({ chain: Chain.Mainnet, hardfork: fork });
- let delay = c.param('pow', 'difficultyBombDelay');
- expect(delay).toEqual(BigInt(9000000));
- c.setEIPs([3554]);
- delay = c.param('pow', 'difficultyBombDelay');
- expect(delay).toEqual(BigInt(9500000));
- }
- });
});
diff --git a/packages/web3-zond-accounts/test/unit/common/timestamp.test.ts b/packages/web3-zond-accounts/test/unit/common/timestamp.test.ts
index 819d2e3a..8ad64962 100644
--- a/packages/web3-zond-accounts/test/unit/common/timestamp.test.ts
+++ b/packages/web3-zond-accounts/test/unit/common/timestamp.test.ts
@@ -14,49 +14,21 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { hexToBytes } from '@theqrl/web3-utils';
-import { Chain, Common, Hardfork } from '../../../src/common';
+// import { hexToBytes } from '@theqrl/web3-utils';
+// import { /*Chain,*/ Common, Hardfork } from '../../../src/common';
-import * as timestampJson from '../../fixtures/common/shanghai-time.json';
-
-describe('[Common]: Timestamp Hardfork logic', () => {
+// NOTE(rgeraldes24): unused for now
+describe.skip('[Common]: Timestamp Hardfork logic', () => {
it('shanghai-time', () => {
- const c = Common.fromGzondGenesis(timestampJson, {
- chain: 'withdrawals',
- });
- expect(c.getHardforkByBlockNumber(1, undefined, 0)).toEqual(Hardfork.MergeForkIdTransition);
- expect(c.getHardforkByBlockNumber(1, undefined, 1668699476)).toEqual(Hardfork.Shanghai);
- expect(c.getHardforkByBlockNumber(1, undefined, 1668699576)).toEqual(Hardfork.Shanghai);
- });
-
- it('schedule sharding on shanghai-time', () => {
- const config = {
- ...timestampJson.config,
- shardingForkTime: timestampJson.config.shanghaiTime,
- };
- const modifiedJson = { ...timestampJson, config };
- const c = Common.fromGzondGenesis(modifiedJson, {
- chain: 'modified',
- });
- expect(c.getHardforkByBlockNumber(1, undefined, 0)).toEqual(Hardfork.MergeForkIdTransition);
- expect(c.nextHardforkBlockOrTimestamp(Hardfork.Shanghai)).toBeNull();
- });
-
- it('schedule sharding post shanghai-time', () => {
- const config = {
- ...timestampJson.config,
- shardingForkTime: timestampJson.config.shanghaiTime + 1000,
- };
- const modifiedJson = { ...timestampJson, config };
- const c = Common.fromGzondGenesis(modifiedJson, {
- chain: 'modified',
- });
- expect(c.getHardforkByBlockNumber(1, undefined, 0)).toEqual(Hardfork.MergeForkIdTransition);
- // Should give the shanghai as sharding is schedule a bit post shanghai
- expect(c.getHardforkByBlockNumber(1, undefined, 1668699476)).toEqual(Hardfork.Shanghai);
- expect(c.getHardforkByBlockNumber(1, undefined, 1668699576)).toEqual(Hardfork.Shanghai);
+ // const c = Common.fromGzondGenesis(timestampJson, {
+ // chain: 'withdrawals',
+ // });
+ // expect(c.getHardforkByBlockNumber(1, 0)).toEqual(Hardfork.Shanghai);
+ // expect(c.getHardforkByBlockNumber(1, 1668699476)).toEqual(Hardfork.Shanghai);
+ // expect(c.getHardforkByBlockNumber(1, 1668699576)).toEqual(Hardfork.Shanghai);
});
+ /*
it('forkHash', () => {
const mainnet = new Common({ chain: Chain.Mainnet });
const hfs = mainnet.hardforks();
@@ -141,4 +113,5 @@ describe('[Common]: Timestamp Hardfork logic', () => {
expect(noForkHashes).toBe(0);
expect(c.forkHash(Hardfork.Shanghai)).toBe('0xc1fdf181');
});
+ */
});
diff --git a/packages/web3-zond-accounts/test/unit/common/utils.test.ts b/packages/web3-zond-accounts/test/unit/common/utils.test.ts
index 89844e87..ce148a9f 100644
--- a/packages/web3-zond-accounts/test/unit/common/utils.test.ts
+++ b/packages/web3-zond-accounts/test/unit/common/utils.test.ts
@@ -18,58 +18,40 @@ import { hexToBytes } from '@theqrl/web3-utils';
import { Common } from '../../../src/common/common';
import { Hardfork } from '../../../src/common';
import { parseGzondGenesis } from '../../../src/common/utils';
-import testnet from '../../fixtures/common/testnetValid.json';
import invalidSpuriousDragon from '../../fixtures/common/invalid-spurious-dragon.json';
-import poa from '../../fixtures/common/poa.json';
-import postMerge from '../../fixtures/common/post-merge.json';
+import posExecGenesis from '../../fixtures/common/pos-exec-genesis.json';
import noExtraData from '../../fixtures/common/no-extra-data.json';
import gzondGenesisKiln from '../../fixtures/common/gzond-genesis-kiln.json';
-import postMergeHardfork from '../../fixtures/common/post-merge-hardfork.json';
describe('[Utils/Parse]', () => {
const kilnForkHashes: any = {
- chainstart: '0xbcadf543',
- homestead: '0xbcadf543',
- tangerineWhistle: '0xbcadf543',
- spuriousDragon: '0xbcadf543',
- byzantium: '0xbcadf543',
- constantinople: '0xbcadf543',
- petersburg: '0xbcadf543',
- istanbul: '0xbcadf543',
- berlin: '0xbcadf543',
- london: '0xbcadf543',
- mergeForkIdTransition: '0x013fd1b5',
- merge: '0x013fd1b5',
+ shanghai: '0xbcadf543',
};
- it('should parse gzond params file', async () => {
- const params = parseGzondGenesis(testnet, 'rinkeby');
- expect(params.genesis.nonce).toBe('0x0000000000000042');
- });
-
it('should throw with invalid Spurious Dragon blocks', async () => {
expect(() => {
parseGzondGenesis(invalidSpuriousDragon, 'bad_params');
}).toThrow();
});
- it('should import poa network params correctly', async () => {
- let params = parseGzondGenesis(poa, 'poa');
- expect(params.genesis.nonce).toBe('0x0000000000000000');
+ it('should import pos network params correctly', async () => {
+ let params = parseGzondGenesis(posExecGenesis, 'pos');
+ expect(params.genesis.baseFeePerGas).toBe('0x7');
expect(params.consensus).toEqual({
- type: 'poa',
- algorithm: 'clique',
- clique: { period: 15, epoch: 30000 },
+ type: 'pos',
+ algorithm: 'casper',
+ casper: {},
});
- poa.nonce = '00';
- params = parseGzondGenesis(poa, 'poa');
- expect(params.genesis.nonce).toBe('0x0000000000000000');
- expect(params.hardfork).toEqual(Hardfork.London);
+ posExecGenesis.baseFeePerGas = '0x8';
+ params = parseGzondGenesis(posExecGenesis, 'pos');
+ expect(params.genesis.baseFeePerGas).toBe('0x8');
+ // NOTE(rgeraldes24): params.hardfork returns undefined which is expected when there is not fork in the genesis config
+ // expect(params.hardfork).toEqual(Hardfork.Shanghai);
});
- it('should generate expected hash with london block zero and base fee per gas defined', async () => {
- const params = parseGzondGenesis(postMerge, 'post-merge');
- expect(params.genesis.baseFeePerGas).toEqual(postMerge.baseFeePerGas);
+ it('should generate expected hash with shanghai block zero and base fee per gas defined', async () => {
+ const params = parseGzondGenesis(posExecGenesis, 'pos');
+ expect(params.genesis.baseFeePerGas).toEqual(posExecGenesis.baseFeePerGas);
});
it('should successfully parse genesis file with no extraData', async () => {
@@ -84,28 +66,16 @@ describe('[Utils/Parse]', () => {
genesisHash: hexToBytes(
'51c7fe41be669f69c45c33a56982cbde405313342d9e2b00d7c91a7b284dd4f8',
),
- mergeForkIdPostMerge: false,
});
expect(common.hardforks().map(hf => hf.name)).toEqual([
- 'chainstart',
- 'homestead',
- 'tangerineWhistle',
- 'spuriousDragon',
- 'byzantium',
- 'constantinople',
- 'petersburg',
- 'istanbul',
- 'berlin',
- 'london',
- 'mergeForkIdTransition',
- 'merge',
+ 'shanghai',
]);
for (const hf of common.hardforks()) {
/* eslint-disable @typescript-eslint/no-use-before-define */
expect(hf.forkHash).toEqual(kilnForkHashes[hf.name]);
}
- expect(common.hardfork()).toEqual(Hardfork.Merge);
+ expect(common.hardfork()).toEqual(Hardfork.Shanghai);
// Ok lets schedule shanghai at block 0, this should force merge to be scheduled at just after
// genesis if even mergeForkIdTransition is not confirmed to be post merge
@@ -117,57 +87,28 @@ describe('[Utils/Parse]', () => {
// merge hardfork is now scheduled just after shanghai even if mergeForkIdTransition is not confirmed
// to be post merge
expect(common1.hardforks().map(hf => hf.name)).toEqual([
- 'chainstart',
- 'homestead',
- 'tangerineWhistle',
- 'spuriousDragon',
- 'byzantium',
- 'constantinople',
- 'petersburg',
- 'istanbul',
- 'berlin',
- 'london',
- 'merge',
- 'mergeForkIdTransition',
'shanghai',
]);
expect(common1.hardfork()).toEqual(Hardfork.Shanghai);
});
- it('should successfully parse genesis with hardfork scheduled post merge', async () => {
- const common = Common.fromGzondGenesis(postMergeHardfork, {
+ it('should successfully parse genesis', async () => {
+ const common = Common.fromGzondGenesis(posExecGenesis, {
chain: 'customChain',
});
expect(common.hardforks().map(hf => hf.name)).toEqual([
- 'chainstart',
- 'homestead',
- 'tangerineWhistle',
- 'spuriousDragon',
- 'byzantium',
- 'constantinople',
- 'petersburg',
- 'istanbul',
- 'muirGlacier',
- 'berlin',
- 'london',
- 'merge',
'shanghai',
]);
- expect(common.getHardforkByBlockNumber(0)).toEqual(Hardfork.London);
- expect(common.getHardforkByBlockNumber(1, BigInt(2))).toEqual(Hardfork.Merge);
+ expect(common.getHardforkByBlockNumber(0)).toEqual(Hardfork.Shanghai);
+ expect(common.getHardforkByBlockNumber(1, BigInt(2))).toEqual(Hardfork.Shanghai);
// shanghai is at timestamp 8
- expect(common.getHardforkByBlockNumber(8)).toEqual(Hardfork.London);
- expect(common.getHardforkByBlockNumber(8, BigInt(2))).toEqual(Hardfork.Merge);
- expect(common.getHardforkByBlockNumber(8, undefined, 8)).toEqual(Hardfork.Shanghai);
+ expect(common.getHardforkByBlockNumber(8)).toEqual(Hardfork.Shanghai);
+ expect(common.getHardforkByBlockNumber(8, BigInt(2))).toEqual(Hardfork.Shanghai);
+ expect(common.getHardforkByBlockNumber(8, 8)).toEqual(Hardfork.Shanghai);
// should be post merge at shanghai
- expect(common.getHardforkByBlockNumber(8, BigInt(2), 8)).toEqual(Hardfork.Shanghai);
- // if not post merge, then should error
- expect(() => {
- common.getHardforkByBlockNumber(8, BigInt(1), 8);
- }).toThrow();
-
+ expect(common.getHardforkByBlockNumber(8, 8)).toEqual(Hardfork.Shanghai);
expect(common.hardfork()).toEqual(Hardfork.Shanghai);
});
});
diff --git a/packages/web3-zond-accounts/test/unit/jest.config.js b/packages/web3-zond-accounts/test/unit/jest.config.js
index a1352870..d2a9f0c0 100644
--- a/packages/web3-zond-accounts/test/unit/jest.config.js
+++ b/packages/web3-zond-accounts/test/unit/jest.config.js
@@ -11,7 +11,7 @@ module.exports = {
[
'json',
{
- file: 'web3-eth-accounts-unit-coverage.json',
+ file: 'web3-zond-accounts-unit-coverage.json',
},
],
],
diff --git a/packages/web3-zond-accounts/test/unit/tx/base.test.ts b/packages/web3-zond-accounts/test/unit/tx/base.test.ts
index d3645eb3..f1df7234 100644
--- a/packages/web3-zond-accounts/test/unit/tx/base.test.ts
+++ b/packages/web3-zond-accounts/test/unit/tx/base.test.ts
@@ -17,19 +17,14 @@ along with web3.js. If not, see .
import { bytesToUint8Array, hexToBytes, uint8ArrayEquals } from '@theqrl/web3-utils'
import { Dilithium } from '@theqrl/wallet.js';
import {
- //AccessListEIP2930Transaction,
- Capability,
FeeMarketEIP1559Transaction,
- Transaction,
} from '../../../src';
import { Chain, Common, Hardfork, toUint8Array, uint8ArrayToBigInt } from '../../../src/common';
import { MAX_INTEGER, MAX_UINT64 } from '../../../src/tx/constants';
import type { BaseTransaction } from '../../../src/tx/baseTransaction';
import eip1559Fixtures from '../../fixtures/json/eip1559txs.json';
-//import eip2930Fixtures from '../../fixtures/json/eip2930txs.json';
-//import legacyFixtures from '../../fixtures/json/txs.json';
import { HexString } from '@theqrl/web3-types';
@@ -40,25 +35,14 @@ const seedToPublic = function (seed: HexString): Uint8Array {
return d.getPK();
};
const common = new Common({
- chain: 5,
- hardfork: Hardfork.London,
+ chain: 1,
+ hardfork: Hardfork.Shanghai,
});
// @ts-expect-error set private property
-common._chainParams.chainId = 4;
+common._chainParams.chainId = 1;
describe('[BaseTransaction]', () => {
- // EIP-2930 is not enabled in Common by default (2021-03-06)
// eslint-disable-next-line @typescript-eslint/no-shadow
- const common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.London });
-
- // const legacyTxs: BaseTransaction[] = [];
- // for (const tx of legacyFixtures.slice(0, 4)) {
- // legacyTxs.push(Transaction.fromTxData(tx.data, { common }));
- // }
-
- // const eip2930Txs: BaseTransaction[] = [];
- // for (const tx of eip2930Fixtures) {
- // eip2930Txs.push(AccessListEIP2930Transaction.fromTxData(tx.data, { common }));
- // }
+ const common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Shanghai });
const eip1559Txs: BaseTransaction[] = [];
for (const tx of eip1559Fixtures) {
@@ -67,31 +51,6 @@ describe('[BaseTransaction]', () => {
const zero = new Uint8Array(0);
const txTypes = [
- // {
- // class: Transaction,
- // name: 'Transaction',
- // type: 0,
- // values: Array(6).fill(zero),
- // txs: legacyTxs,
- // fixtures: legacyFixtures,
- // activeCapabilities: [],
- // notActiveCapabilities: [
- // Capability.EIP1559FeeMarket,
- // Capability.EIP2718TypedTransaction,
- // Capability.EIP2930AccessLists,
- // 9999,
- // ],
- // },
- // {
- // class: AccessListEIP2930Transaction,
- // name: 'AccessListEIP2930Transaction',
- // type: 1,
- // values: [new Uint8Array([1])].concat(Array(7).fill(zero)),
- // txs: eip2930Txs,
- // fixtures: eip2930Fixtures,
- // activeCapabilities: [Capability.EIP2718TypedTransaction, Capability.EIP2930AccessLists],
- // notActiveCapabilities: [Capability.EIP1559FeeMarket, 9999],
- // },
{
class: FeeMarketEIP1559Transaction,
name: 'FeeMarketEIP1559Transaction',
@@ -99,30 +58,25 @@ describe('[BaseTransaction]', () => {
values: [new Uint8Array([1])].concat(Array(8).fill(zero)),
txs: eip1559Txs,
fixtures: eip1559Fixtures,
- activeCapabilities: [
- Capability.EIP1559FeeMarket,
- Capability.EIP2718TypedTransaction,
- Capability.EIP2930AccessLists,
- ],
- notActiveCapabilities: [9999],
},
];
it('Initialization', () => {
for (const txType of txTypes) {
let tx = txType.class.fromTxData({}, { common });
- expect(tx.common.hardfork()).toBe('london');
+ expect(tx.common.hardfork()).toBe('shanghai');
expect(Object.isFrozen(tx)).toBe(true);
const initCommon = new Common({
chain: Chain.Mainnet,
- hardfork: Hardfork.London,
+ hardfork: Hardfork.Shanghai,
});
tx = txType.class.fromTxData({}, { common: initCommon });
- expect(tx.common.hardfork()).toBe('london');
+ expect(tx.common.hardfork()).toBe('shanghai');
- initCommon.setHardfork(Hardfork.Byzantium);
- expect(tx.common.hardfork()).toBe('london');
+ // NOTE(rgeraldes24): not valid since we don't have multiple forks
+ // initCommon.setHardfork(Hardfork.Byzantium);
+ // expect(tx.common.hardfork()).toBe('byzantium');
tx = txType.class.fromTxData({}, { common, freeze: false });
expect(!Object.isFrozen(tx)).toBe(true);
@@ -149,21 +103,6 @@ describe('[BaseTransaction]', () => {
});
it('fromValuesArray()', () => {
- // let rlpData: any = legacyTxs[0].raw();
- // rlpData[0] = toUint8Array('0x00');
- // expect(() => {
- // Transaction.fromValuesArray(rlpData);
- // }).toThrow('nonce cannot have leading zeroes');
- // rlpData[0] = toUint8Array('0x');
- // // rlpData[6] = toUint8Array('0x00');
- // // expect(() => {
- // // Transaction.fromValuesArray(rlpData);
- // // }).toThrow('v cannot have leading zeroes');
- // rlpData = eip2930Txs[0].raw();
- // rlpData[3] = toUint8Array('0x0');
- // expect(() => {
- // AccessListEIP2930Transaction.fromValuesArray(rlpData);
- // }).toThrow('gasLimit cannot have leading zeroes');
let rlpData: any = eip1559Txs[0].raw();
rlpData[2] = toUint8Array('0x0');
expect(() => {
@@ -180,19 +119,6 @@ describe('[BaseTransaction]', () => {
}
});
- it('supports()', () => {
- for (const txType of txTypes) {
- for (const tx of txType.txs) {
- for (const activeCapability of txType.activeCapabilities) {
- expect(tx.supports(activeCapability)).toBe(true);
- }
- for (const notActiveCapability of txType.notActiveCapabilities) {
- expect(tx.supports(notActiveCapability)).toBe(false);
- }
- }
- }
- });
-
it('raw()', () => {
for (const txType of txTypes) {
for (const tx of txType.txs) {
@@ -265,7 +191,7 @@ describe('[BaseTransaction]', () => {
continue;
}
const signedTx = tx.sign(hexToBytes(seed));
- expect(signedTx.getSenderAddress().toString()).toBe(`0x${sendersAddress}`);
+ expect(signedTx.getSenderAddress().toString()).toBe(sendersAddress);
}
}
});
@@ -301,10 +227,11 @@ describe('[BaseTransaction]', () => {
it('initialization with defaults', () => {
const uInt8ArrayZero = toUint8Array('0x');
- const tx = Transaction.fromTxData({
+ const tx = FeeMarketEIP1559Transaction.fromTxData({
nonce: '',
gasLimit: '',
- gasPrice: '',
+ maxFeePerGas: '',
+ maxPriorityFeePerGas: '',
to: '',
value: '',
data: '',
@@ -316,7 +243,8 @@ describe('[BaseTransaction]', () => {
expect(tx.to).toBeUndefined();
expect(tx.value).toBe(uint8ArrayToBigInt(uInt8ArrayZero));
expect(tx.data).toEqual(uInt8ArrayZero);
- expect(tx.gasPrice).toBe(uint8ArrayToBigInt(uInt8ArrayZero));
+ expect(tx.maxFeePerGas).toBe(uint8ArrayToBigInt(uInt8ArrayZero));
+ expect(tx.maxPriorityFeePerGas).toBe(uint8ArrayToBigInt(uInt8ArrayZero));
expect(tx.gasLimit).toBe(uint8ArrayToBigInt(uInt8ArrayZero));
expect(tx.nonce).toBe(uint8ArrayToBigInt(uInt8ArrayZero));
});
diff --git a/packages/web3-zond-accounts/test/unit/tx/eip1559.test.ts b/packages/web3-zond-accounts/test/unit/tx/eip1559.test.ts
index cc8aa789..17f2aa79 100644
--- a/packages/web3-zond-accounts/test/unit/tx/eip1559.test.ts
+++ b/packages/web3-zond-accounts/test/unit/tx/eip1559.test.ts
@@ -23,8 +23,8 @@ import { FeeMarketEIP1559Transaction } from '../../../src';
import testdata from '../../fixtures/json/eip1559.json';
const common = new Common({
- chain: 5,
- hardfork: Hardfork.London,
+ chain: 1,
+ hardfork: Hardfork.Shanghai,
});
// @ts-expect-error set private property
common._chainParams.chainId = 4;
@@ -139,14 +139,15 @@ describe('[FeeMarketEIP1559Transaction]', () => {
expect(Object.isFrozen(signedTxn)).toBe(false);
});
- it('common propagates from the common of tx, not the common in TxOptions', () => {
+ // NOTE(rgeraldes24): test not valid atm: no eips available
+ it.skip('common propagates from the common of tx, not the common in TxOptions', () => {
const data = testdata[0];
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
const seed = hexToBytes(data.seed.slice(2));
const txn = FeeMarketEIP1559Transaction.fromTxData(data, { common, freeze: false });
const newCommon = new Common({
- chain: Chain.Goerli,
- hardfork: Hardfork.London,
+ chain: Chain.Mainnet,
+ hardfork: Hardfork.Shanghai,
eips: [2537],
});
expect(Object.isFrozen(newCommon)).not.toEqual(common);
@@ -194,7 +195,7 @@ describe('[FeeMarketEIP1559Transaction]', () => {
maxPriorityFeePerGas: '0x1284d',
maxFeePerGas: '0x1d97c',
gasLimit: '0x8ae0',
- to: '0x000000000000000000000000000000000000aaaa',
+ to: 'Z000000000000000000000000000000000000aaaa',
value: '0x2933bc9',
data: '0x',
accessList: [],
diff --git a/packages/web3-zond-accounts/test/unit/tx/eip3860.test.ts b/packages/web3-zond-accounts/test/unit/tx/eip3860.test.ts
index 94408d9a..908fc7c4 100644
--- a/packages/web3-zond-accounts/test/unit/tx/eip3860.test.ts
+++ b/packages/web3-zond-accounts/test/unit/tx/eip3860.test.ts
@@ -20,12 +20,12 @@ import { TransactionFactory } from '../../../src';
const common = new Common({
chain: Chain.Mainnet,
- hardfork: Hardfork.Merge,
- eips: [3860],
+ hardfork: Hardfork.Shanghai,
+ eips: [],
});
const maxInitCodeSize = common.param('vm', 'maxInitCodeSize');
-const txTypes = [0, 1, 2];
+const txTypes = [2];
const addressZero = Address.zero();
describe('[EIP3860 tests]', () => {
diff --git a/packages/web3-zond-accounts/test/unit/tx/inputValue.test.ts b/packages/web3-zond-accounts/test/unit/tx/inputValue.test.ts
index df8e0461..bfbb9a91 100644
--- a/packages/web3-zond-accounts/test/unit/tx/inputValue.test.ts
+++ b/packages/web3-zond-accounts/test/unit/tx/inputValue.test.ts
@@ -14,26 +14,24 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { Bytes } from '@theqrl/web3-types';
+// import { Bytes, ZPrefixedHexString } from '@theqrl/web3-types';
import { hexToBytes } from '@theqrl/web3-utils';
-import { Chain, Common, Hardfork, toUint8Array } from '../../../src/common';
-import { Address } from '../../../src/tx/address';
+// import { Chain, Common, Hardfork, toUint8Array } from '../../../src/common';
+// import { Address } from '../../../src/tx/address';
import {
- AccessListEIP2930Transaction,
FeeMarketEIP1559Transaction,
- Transaction,
TransactionFactory,
} from '../../../src';
import type {
- AccessListEIP2930ValuesArray,
FeeMarketEIP1559ValuesArray,
- TxValuesArray,
} from '../../../src';
-import type { BigIntLike, PrefixedHexString } from '../../../src/common/types';
+// import type { BigIntLike } from '../../../src/common/types';
-type AddressLike = Address | Uint8Array | PrefixedHexString;
+// NOTE(rgeraldes24): test 'Transaction Input Values' not valid atm
+/*
+type AddressLike = Address | Uint8Array | ZPrefixedHexString;
// @returns: Array with subtypes of the AddressLike type for a given address
function generateAddressLikeValues(address: string): AddressLike[] {
return [address, toUint8Array(address), new Address(toUint8Array(address))];
@@ -56,6 +54,7 @@ interface GenerateCombinationsArgs {
current?: { [x: string]: any };
}
+
function generateCombinations({
options,
optionIndex = 0,
@@ -115,18 +114,14 @@ const baseTxValues = {
data: generateBufferLikeValues('0x65'),
gasLimit: generateBigIntLikeValues(100000),
nonce: generateBigIntLikeValues(0),
- to: generateAddressLikeValues('0x0000000000000000000000000000000000000000'),
- r: generateBigIntLikeValues(100),
- s: generateBigIntLikeValues(100),
+ to: generateAddressLikeValues('Z0000000000000000000000000000000000000000'),
+ publicKey: generateBigIntLikeValues(100),
+ signature: generateBigIntLikeValues(100),
value: generateBigIntLikeValues(10),
};
-const legacyTxValues = {
- gasPrice: generateBigIntLikeValues(100),
-};
-
const accessListEip2930TxValues = {
- chainId: generateBigIntLikeValues(4),
+ chainId: generateBigIntLikeValues(1),
};
const eip1559TxValues = {
@@ -134,22 +129,11 @@ const eip1559TxValues = {
maxPriorityFeePerGas: generateBigIntLikeValues(50),
};
-describe('[Transaction Input Values]', () => {
- it('Legacy Transaction Values', () => {
- const common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Homestead });
- const options = { ...baseTxValues, ...legacyTxValues, type: '0' };
- const legacyTxData = generateCombinations({
- options,
- });
- const randomSample = getRandomSubarray(legacyTxData, 100);
- for (const txData of randomSample) {
- const tx = Transaction.fromTxData(txData, { common });
- expect(() => tx.hash()).toThrow();
- }
- });
+
+describe('[Transaction Input Values]', () => {
it('EIP-1559 Transaction Values', () => {
- const common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.London });
+ const common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Shanghai });
const options = {
...baseTxValues,
...accessListEip2930TxValues,
@@ -167,9 +151,10 @@ describe('[Transaction Input Values]', () => {
}
});
});
+*/
test('[Invalid Array Input values]', () => {
- const txTypes = [/*0x0, 0x1,*/ 0x2];
+ const txTypes = [0x2];
for (const signed of [false, true]) {
for (const txType of txTypes) {
let tx = TransactionFactory.fromTxData({ type: txType });
@@ -182,20 +167,6 @@ test('[Invalid Array Input values]', () => {
rawValues[x] = [1, 2, 3];
// eslint-disable-next-line default-case
switch (txType) {
- case 0:
- // eslint-disable-next-line jest/no-conditional-expect
- expect(() =>
- Transaction.fromValuesArray(rawValues as TxValuesArray),
- ).toThrow();
- break;
- case 1:
- // eslint-disable-next-line jest/no-conditional-expect
- expect(() =>
- AccessListEIP2930Transaction.fromValuesArray(
- rawValues as AccessListEIP2930ValuesArray,
- ),
- ).toThrow();
- break;
case 2:
// eslint-disable-next-line jest/no-conditional-expect
expect(() =>
@@ -211,26 +182,26 @@ test('[Invalid Array Input values]', () => {
});
test('[Invalid Access Lists]', () => {
- const txTypes = [/*0x1,*/ 0x2];
+ const txTypes = [0x2];
const invalidAccessLists = [
[[]], // does not have an address and does not have slots
[[[], []]], // the address is an array
- [['0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae']], // there is no storage slot array
+ [['Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae']], // there is no storage slot array
[
[
- '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
+ 'Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
['0x0000000000000000000000000000000000000000000000000000000000000003', []],
],
], // one of the slots is an array
[
[
- '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
+ 'Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
['0x0000000000000000000000000000000000000000000000000000000000000003'],
'0xab',
],
], // extra field
[
- '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
+ 'Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
['0x0000000000000000000000000000000000000000000000000000000000000003'],
], // account/slot needs to be encoded in a deeper array layer
];
@@ -258,22 +229,12 @@ test('[Invalid Access Lists]', () => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
const rawValues = tx!.raw();
- if (txType === 1 && rawValues[7].length === 0) {
- rawValues[7] = invalidAccessListItem;
- } else if (txType === 2 && rawValues[8].length === 0) {
+ if (txType === 2 && rawValues[8].length === 0) {
rawValues[8] = invalidAccessListItem;
}
// eslint-disable-next-line default-case
switch (txType) {
- case 1:
- // eslint-disable-next-line jest/no-conditional-expect
- expect(() =>
- AccessListEIP2930Transaction.fromValuesArray(
- rawValues as AccessListEIP2930ValuesArray,
- ),
- ).toThrow();
- break;
case 2:
// eslint-disable-next-line jest/no-conditional-expect
expect(() =>
diff --git a/packages/web3-zond-accounts/test/unit/tx/legacy.test_tbd.ts b/packages/web3-zond-accounts/test/unit/tx/legacy.test_tbd.ts
deleted file mode 100644
index 954f66db..00000000
--- a/packages/web3-zond-accounts/test/unit/tx/legacy.test_tbd.ts
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
-This file is part of web3.js.
-
-web3.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-web3.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with web3.js. If not, see .
-*/
-// import { RLP } from '@ethereumjs/rlp';
-// import { bytesToHex, hexToBytes, uint8ArrayEquals } from '@theqrl/web3-utils';
-// import {
-// Chain,
-// Common,
-// Hardfork,
-// //intToUint8Array,
-// toUint8Array,
-// //uint8ArrayToBigInt,
-// unpadUint8Array,
-// } from '../../../src/common';
-
-// import { Transaction } from '../../../src';
-// import type { TxData } from '../../../src';
-// import txFixturesEip155 from '../../fixtures/json/ttTransactionTestEip155VitaliksTests.json';
-// import txFixtures from '../../fixtures/json/txs.json';
-
-// describe('[Transaction]', () => {
-// const transactions: Transaction[] = [];
-
-// it('cannot input decimal or negative values', () => {
-// const values = ['gasPrice', 'gasLimit', 'nonce', 'value', 'publicKey', 'signature'];
-// const cases = [
-// 10.1,
-// '10.1',
-// '0xaa.1',
-// -10.1,
-// -1,
-// BigInt(-10),
-// '-100',
-// '-10.1',
-// '-0xaa',
-// Infinity,
-// -Infinity,
-// NaN,
-// {},
-// true,
-// false,
-// // eslint-disable-next-line @typescript-eslint/no-empty-function
-// () => {},
-// Number.MAX_SAFE_INTEGER + 1,
-// ];
-// for (const value of values) {
-// const txData: any = {};
-// for (const testCase of cases) {
-// txData[value] = testCase;
-// expect(() => {
-// Transaction.fromTxData(txData);
-// }).toThrow();
-// }
-// }
-// });
-
-// it('Initialization', () => {
-// const nonEIP2930Common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Istanbul });
-// expect(Transaction.fromTxData({}, { common: nonEIP2930Common })).toBeTruthy();
-
-// const txData = txFixtures[3].raw.map(toUint8Array);
-// //txData[6] = intToUint8Array(45); // v with 0-parity and chain ID 5
-// let tx = Transaction.fromValuesArray(txData);
-// expect(tx.common.chainId() === BigInt(1)).toBe(true);
-
-// // txData[6] = intToUint8Array(46); // v with 1-parity and chain ID 5
-// // tx = Transaction.fromValuesArray(txData);
-// // expect(tx.common.chainId() === BigInt(5)).toBe(true);
-
-// // txData[6] = intToUint8Array(2033); // v with 0-parity and chain ID 999
-// // tx = Transaction.fromValuesArray(txData);
-// // expect(tx.common.chainId()).toEqual(BigInt(999));
-
-// // txData[6] = intToUint8Array(2034); // v with 1-parity and chain ID 999
-// // tx = Transaction.fromValuesArray(txData);
-// // expect(tx.common.chainId()).toEqual(BigInt(999));
-// });
-
-// it('Initialization -> decode with fromValuesArray()', () => {
-// for (const tx of txFixtures.slice(0, 4)) {
-// const txData = tx.raw.map(toUint8Array);
-// const pt = Transaction.fromValuesArray(txData);
-
-// expect(bytesToHex(unpadUint8Array(toUint8Array(pt.nonce)))).toEqual(tx.raw[0]);
-// expect(bytesToHex(toUint8Array(pt.gasPrice))).toEqual(tx.raw[1]);
-// expect(bytesToHex(toUint8Array(pt.gasLimit))).toEqual(tx.raw[2]);
-// expect(pt.to?.toString()).toEqual(tx.raw[3]);
-// expect(bytesToHex(unpadUint8Array(toUint8Array(pt.value)))).toEqual(tx.raw[4]);
-// expect(bytesToHex(pt.data)).toEqual(tx.raw[5]);
-// expect(bytesToHex(toUint8Array(pt.publicKey))).toEqual(tx.raw[6]);
-// expect(bytesToHex(toUint8Array(pt.signature))).toEqual(tx.raw[7]);
-
-// transactions.push(pt);
-// }
-// });
-
-// // it('Initialization -> should accept lesser r values', () => {
-// // const tx = Transaction.fromTxData({ r: uint8ArrayToBigInt(toUint8Array('0x0005')) });
-// // expect(tx.r!.toString(16)).toBe('5');
-// // });
-
-// // it('Initialization -> throws when creating a a transaction with incompatible chainid and v value', () => {
-// // let common = new Common({ chain: Chain.Goerli, hardfork: Hardfork.Petersburg });
-// // let tx = Transaction.fromTxData({}, { common });
-// // expect(tx.common.chainId()).toEqual(BigInt(5));
-// // const privKey = hexToBytes(txFixtures[0].privateKey);
-// // tx = tx.sign(privKey);
-// // const serialized = tx.serialize();
-// // common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Petersburg });
-// // expect(() => Transaction.fromSerializedTx(serialized, { common })).toThrow();
-// // });
-
-// // it('Initialization -> throws if v is set to an EIP155-encoded value incompatible with the chain id', () => {
-// // expect(() => {
-// // const common = new Common({ chain: 42, hardfork: Hardfork.Petersburg });
-// // Transaction.fromTxData({ v: BigInt(1) }, { common });
-// // }).toThrow();
-// // });
-
-// it('validate() -> should validate with string option', () => {
-// for (const tx of transactions) {
-// expect(typeof tx.validate(true)[0]).toBe('string');
-// }
-// });
-
-// it('getBaseFee() -> should return base fee', () => {
-// const tx = Transaction.fromTxData({});
-// expect(tx.getBaseFee()).toEqual(BigInt(53000));
-// });
-
-// it('getDataFee() -> should return data fee', () => {
-// let tx = Transaction.fromTxData({});
-// expect(tx.getDataFee()).toEqual(BigInt(0));
-
-// tx = Transaction.fromValuesArray(txFixtures[3].raw.map(toUint8Array));
-// expect(tx.getDataFee()).toEqual(BigInt(1716));
-
-// tx = Transaction.fromValuesArray(txFixtures[3].raw.map(toUint8Array), { freeze: false });
-// expect(tx.getDataFee()).toEqual(BigInt(1716));
-// });
-
-// it('getDataFee() -> should return correct data fee for istanbul', () => {
-// const common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Istanbul });
-// let tx = Transaction.fromTxData({}, { common });
-// expect(tx.getDataFee()).toEqual(BigInt(0));
-
-// tx = Transaction.fromValuesArray(txFixtures[3].raw.map(toUint8Array), {
-// common,
-// });
-// expect(tx.getDataFee()).toEqual(BigInt(1716));
-// });
-
-// it('getDataFee() -> should invalidate cached value on hardfork change', () => {
-// const common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Byzantium });
-// const tx = Transaction.fromValuesArray(txFixtures[0].raw.map(toUint8Array), {
-// common,
-// });
-// expect(tx.getDataFee()).toEqual(BigInt(656));
-// tx.common.setHardfork(Hardfork.Istanbul);
-// expect(tx.getDataFee()).toEqual(BigInt(240));
-// });
-
-// it('getUpfrontCost() -> should return upfront cost', () => {
-// const tx = Transaction.fromTxData({
-// gasPrice: 1000,
-// gasLimit: 10000000,
-// value: 42,
-// });
-// expect(tx.getUpfrontCost()).toEqual(BigInt(10000000042));
-// });
-
-// it('serialize()', () => {
-// for (const [i, tx] of transactions.entries()) {
-// const s1 = tx.serialize();
-// const s2 = RLP.encode(txFixtures[i].raw);
-// expect(uint8ArrayEquals(s1, s2)).toBe(true);
-// }
-// });
-
-// it('serialize() -> should round trip decode a tx', () => {
-// const tx = Transaction.fromTxData({ value: 5000 });
-// const s1 = tx.serialize();
-
-// const s1Rlp = toUint8Array(bytesToHex(s1));
-// const tx2 = Transaction.fromSerializedTx(s1Rlp);
-// const s2 = tx2.serialize();
-
-// expect(uint8ArrayEquals(s1, s2)).toBe(true);
-// });
-
-// it('hash() / getMessageToSign(true) / getMessageToSign(false)', () => {
-// const common = new Common({
-// chain: Chain.Mainnet,
-// hardfork: Hardfork.TangerineWhistle,
-// });
-
-// let tx = Transaction.fromValuesArray(txFixtures[3].raw.slice(0, 6).map(toUint8Array), {
-// common,
-// });
-// expect(() => {
-// tx.hash();
-// }).toThrow();
-// tx = Transaction.fromValuesArray(txFixtures[3].raw.map(toUint8Array), {
-// common,
-// });
-// expect(tx.hash()).toEqual(
-// hexToBytes('0x2aebb77dc8b68c237297edd41ed9889c3831a40be6b32087f2d0a43efad48bbe'),
-// );
-// expect(tx.getMessageToSign()).toEqual(
-// hexToBytes('0xaad787b6c7cfb13feab05f6175089c95f0b54839365fab43c7c4245bd32b3d65'),
-// );
-// expect(tx.getMessageToSign(false)).toHaveLength(6);
-// expect(tx.hash()).toEqual(
-// hexToBytes('0x2aebb77dc8b68c237297edd41ed9889c3831a40be6b32087f2d0a43efad48bbe'),
-// );
-// });
-
-// it('hash() -> with defined chainId', () => {
-// const tx = Transaction.fromValuesArray(txFixtures[4].raw.map(toUint8Array));
-// expect(bytesToHex(tx.hash())).toBe(
-// '0x0f09dc98ea85b7872f4409131a790b91e7540953992886fc268b7ba5c96820e4',
-// );
-// expect(bytesToHex(tx.getMessageToSign())).toBe(
-// '0xf97c73fdca079da7652dbc61a46cd5aeef804008e057be3e712c43eac389aaf0',
-// );
-// });
-
-// it("getMessageToSign(), getSenderPublicKey() (implicit call) -> verify EIP155 signature based on Vitalik's tests", () => {
-// for (const tx of txFixturesEip155) {
-// const pt = Transaction.fromSerializedTx(toUint8Array(tx.rlp));
-// expect(bytesToHex(pt.getMessageToSign())).toEqual(tx.hash);
-// expect(bytesToHex(pt.serialize())).toEqual(tx.rlp);
-// expect(pt.getSenderAddress().toString()).toBe(`0x${tx.sender}`);
-// }
-// });
-
-// it('getMessageToSign(), sign(), getSenderPublicKey() (implicit call) -> verify EIP155 signature before and after signing', () => {
-// // Inputs and expected results for this test are taken directly from the example in https://eips.ethereum.org/EIPS/eip-155
-// const txRaw = [
-// '0x09',
-// '0x4a817c800',
-// '0x5208',
-// '0x3535353535353535353535353535353535353535',
-// '0x0de0b6b3a7640000',
-// '0x',
-// ];
-
-// const seed = hexToBytes(
-// '61cd66b2dcb997b7f4202caecaa6a4cb62e4f41a018d0f073c767c19d2afa6f62d13b7845c6dace5751f1f724e124f72',
-// );
-
-// const pt = Transaction.fromValuesArray(txRaw.map(toUint8Array));
-
-// // Note that Vitalik's example has a very similar value denoted "signing data".
-// // It's not the output of `serialize()`, but the pre-image of the hash returned by `tx.hash(false)`.
-// // We don't have a getter for such a value in Transaction.
-// expect(bytesToHex(pt.serialize())).toBe(
-// '0xec098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a764000080808080',
-// );
-// const signedTx = pt.sign(seed);
-// expect(bytesToHex(signedTx.getMessageToSign())).toBe(
-// '0xdaf5a779ae972f972197303d7b574746c7ef83eadac0f2791ad23db92e4c8e53',
-// );
-// expect(bytesToHex(signedTx.serialize())).toBe(
-// '0xf86c098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008025a028ef61340bd939bc2195fe537567866003e1a15d3c71ff63e1590620aa636276a067cbe9d8997f761aecb703304b3800ccf555c9f3dc64214b297fb1966a3b6d83',
-// );
-// });
-
-// it('sign(), getSenderPublicKey() (implicit call) -> EIP155 hashing when singing', () => {
-// const common = new Common({ chain: 1, hardfork: Hardfork.Petersburg });
-// for (const txData of txFixtures.slice(0, 3)) {
-// const tx = Transaction.fromValuesArray(txData.raw.slice(0, 6).map(toUint8Array), {
-// common,
-// });
-
-// const seed = hexToBytes(txData.seed);
-// const txSigned = tx.sign(seed);
-
-// expect(txSigned.getSenderAddress().toString()).toBe(`0x${txData.sendersAddress}`);
-// }
-// });
-
-// it('sign(), serialize(): serialize correctly after being signed with EIP155 Signature for tx created on ropsten', () => {
-// const txRaw = [
-// '0x1',
-// '0x02540be400',
-// '0x5208',
-// '0xd7250824390ec5c8b71d856b5de895e271170d9d',
-// '0x0de0b6b3a7640000',
-// '0x',
-// ];
-// const seed = hexToBytes(
-// 'f93f7698dded0c29c31485571c90a33978dd15f9013f6488bf6d002715a6c6d804e55bef8f6c1211cf1bba42565b9df0',
-// );
-// const common = new Common({ chain: 1 });
-// const tx = Transaction.fromValuesArray(txRaw.map(toUint8Array), { common });
-// const signedTx = tx.sign(seed);
-// expect(bytesToHex(signedTx.serialize())).toBe(
-// '0xf91c66018502540be40082520894d7250824390ec5c8b71d856b5de895e271170d9d880de0b6b3a7640000a47cf5dab00000000000000000000000000000000000000000000000000000000000000005b90a201fc8d4b046991b32be5b3a2338165c65affbe88d7980f6f3e306ade96b7d2985494d07a2dad2956ffd88816334faaba6d83ede828c3e8d9633a9da3322a5bc0138ed587aaf2b4e0bdf0a6b782f4eef58d08302bfdf761e38a10f7443772c4a02e268756091db42c5cb40ab5adc949839a2dafd746438276aa84a24bf41eebba92e84d77130dff1d613132bd3fe25c0d6788faeb0f1be295bf829f4cea0b9db3defd4e7aa7e1b0eb06fde617f90cd8fd86774c5ff7205ebad164f9370a52d873bf42db8069c615d47308d84799f8590280806907d432025a94ccff5d3788250e61651bd2ec29b845d4db3987480556846867b6dddb518fa51cce72dc5282a14990ae2b840ca306a43624977987ec6b8a3c9452b1e6a0130bbf42243d293e756a943a1a68c056639cabd0046fa4482b454a3162168824440d097c34ff6229a735ad92d106bf49cc4f4666075038d70fbf67f52ab2346f75dda147c1df1bd5c8438802adb56391dabd3de9e618541bd8cbe606de75bc38c21083c0fe601b241956668c9ff9743d8bc21dc37aae229d65a8232879883e85827f3b4479d8826e94fc1a344da719e2473a1a61c34c106905df3ba5c3bcac2aaba487eb176bdc330d70ebd027e6f1c96a56155edc40176309d2c6f384997f81a0ca5f83d0e072a847628a73575b4ebca6020cfd0892be211b359f977f28feee53be1a51adffea4aadd8c01ec7051e1a0a288dbccddbb5a1c1f398a0ba24e4f0a9c7e50cb3b43b9e3b68202f3c3ffb2e906559491b638a883709d54eb443431d53095355b85011f19b66893fe3f8ba49fae41c2047de8b4913f8eb8ab553f3398299a75b91ea1788c69bfacc54dae51433650f0005ebef9eec984c20483facc8e2971590a6e1de4e8ce3138d383350d6ffac1f46f5db73dce4fa41058e0bade24bdcf0e04f196f6a4f3a09726b2b12e9dfbcae680aa7a44bce315ec2b3fa10cef44c24b5eb03bd6509d37f7245ccbb3583775dca0ad21092b53dc7e356f830e49e379cfb149af5dabcca30f1bbfbb79daade2f998f84dcfb6899d4be19df09c6b167ce54fd5979c0accac8a76f45373c5985bcf9e98a1116833276d5183e25ad1da418b87280dc06fd98099832e91f4f86f6e8e3ed23c64856207694aa5673e4e148dbef1768222120cce96b39870b740f1f1f3f423d12edeecabe40ed5720c0d8f5592166c88d2c71a25e94ce2e7b8818348bc7186344556fbc30da382c2579f33e13a8486715556c08a20e5d582f877e288bd6bd38460da1dd40dc934a0cf653ea51578af0dcf720f4d04f1db27ef248737d18a4d00e8833d922c949f27ba2e1dc7b3c8263e6d4522ef426683ac0dc3b0f37a755e2d869bf6ac281a00dde8c7aed7ae361e68c4745384957e92cb136d988153503be8c6fe8fc69385924247c09aae8292c5b039cb4a93b627ff62f8d97a788e7552c40d0ae9a2da39f7788b8cf1640060c99e69aa45e40c44efb056a53af6df882fbbea635500e460f549b808b449a819e7aac950e8006b35df4cd05b4ca2e069c1e8f9b78938adc06e6a430a22319b647b549fda7def53963a37e8bfc7bdadc1ebd49ed669f1cb5de6556bd69f5654ff2301835a6faf4adba1ee4839c255ba4a2a90da391d5576c97c8a2f05a3268518a40c7db8f3c604fe0f1217e777eeb664ccee94a20ef2a0183993e622ff5b719a71c05e2cf091bf9e7b85777a043deae3d1aff0ab71421dcde2b3020331042b2a47a531f5ee4b8a6cccf893afef57f19a0fa972ef92549e3d9a060b0fada8fb79e8c309b3c43e1ba2b0bdfcc0e76516f8aabcc7440f1c0ba097e0b9019321e185ee81beb8be3ea808463a031cc87097bfb82f54ea6aab6fa54435d56e41792ad84fd4353a44e59d94928c12836c755f138a36d06544353488039611bb393eb78fa49fa005f2319e459eb425358f307902c8b8ffe109907800211ddbe0fcb3cd2ec616b34ebe19e6da46c82daaf8d76e60c37c02993bbf73bb35db84ac4ae4686542067f5a56bd873a45d521c1603621856e1654046c52e90bf594df34790e8507a2131f6dad42bbaa80db4d29003e5403315ad1aedcd0c2cc3027fd6a5f06f1087a9a72816a82465371f44ded6f5caf5be571079225800c10ae636fc23afd86705cd1c4686fcc6a0ebe7fe39b863ce1e866d2c065a1cc1c8e68b2ee9868a58e9e6554011191231c5d1208140191c37914f449d73c6e9d4d7258debaac223540bcba1cf1fc8c5be92c642df139264e8b8fdaa7121ae0cd9387bb599c760a7b232879639673cdbaed0882a4b2dba356c87ae15fea69e6b1c6420381da65914bed23484e16759f687b12238099a3cdbc663f81e5eeff17b33d42055c492cb9ca2cc7bec6f4ac9b8f0b58741ac04893f923865a5d81b78bf1a34c81e6e9a5db65c6c2442ad39d4e615b65fb580551bcc4709d86111d393e14fbd8e52dee7d0fcf285195ba7a4e88c1e286dd260ae7ae4fd49a7a578da36692931d35325c190ddf927ff9f9b754a47295aecb67b7dc3d55ef6a051d1afb7b2e13af6d99a948e53b254f8073257d8b1a469b5f3b315fb90e4ae26720b737326e6a62a23548963804bfdb18348d3b1e9d3fda6f9f8761c91f764eaed04a9e5d8ee8d2bbabfdba2d4d45403a96e8c8c1dc6e36ac316f30436ff4f637983cf159e34dbc964f90a46a481cf513b53595d3c7d9d9ac9dbf97ea052cc86358b3a2b59bcacd33b6ad0fd1fbb5e70e5554d2a05a5a90a26a8db2f09382787db2515ba34f970bfc658b1d276efe810a3c5a40b52aaf03b33d5eb47fe2a74f7a404aee547262a22eded9f96e8b3d36f7c0337164aec391ee36d038026d643d935b7fdcd420d27ce92c834f2de98a5d0fda33f61aba80bb5f321bd88b8c7df0513bab316346102f2b7a5942b8ac72c9215dc93d008bf24bb6699c5651da6ef0e00f8f64f45999e2221626e6c10a78e92808310e97089c3f29856d52fdf5934cc0bd3e794d76c06e1a69c2ef126decfa1f19c5b6a8981608a68b78271f30de74bc406a146dd8650ce764cf60d13053a3c6621ae632cf298c9129ccfc3d9d1baf17f66c51abcbd67027befba1ebcd8c82e7056242eeefa282c86de0d311f17a1cac5caa53b0e52af7b35affae36a2c7e6585b55c199c55d31e0cc9fbabfddfbf0026292c0311a4051873b21bcd0bc7e6d2b8f29c93ef300f633381fc21d68cfd04d5d4b2fdfa0bad57226b6e857cec1d7fbc012286684841ab9aaf7e590f319459c68d218d6f41a9b79a10015dc83bdff0918fbcf9ae25c2b78c43bf964a4cf15d5f5a082b5c9634b9ae265afa3ea52be1b1f4c5fb1460a2ddc438ce25e847c0d1ecf166a845d5a50efdeab4155ec13bf9a0b0619b234f20ff2651d5d9c565ea89f064b74b75dbc833376df6140c6693cdb9fe3b67bb4020a70b74566fb21133a75a19d9b6e8cbc90f4a7c99372d6b1d8b3b16f837ca87062f111e570aec63d5bf4cb0727d6d1e942c8033ca71b7d9702f12bee0b7727f50b8af92a7de09045116dc5cbf5f92eefe5c1d0c0b493a09cbebf8ec625dcc7f3f307a7643613d211708c3714ae15c5d6468eb5435d1f6efc95ad5e04c47510984ca9ea79c804b7584d45e4b5f0dd622b0bbadfea3e9523b5ee53d28fd74600b911f3c4626b24db2d8d739a680db1f66a0723bb49c04b6d76a708a61ebcf2e793658b1b8ec6a6d75d0ac8af897e65b6c295a66554b1ded942cebde684cd4f8fed6349939672cc26f1a85018feae6df4d7a43ce3e178363c82e3c78f327a562a42456c512a3bdf78dcd7c235a64b334c61054a3eb8478e05b60caa20978df01f3857fa7963432d8b27224e839dde9fec56996d55fa65870b80579a76651d4d4a2a754eb19b2c88b54e88c99c81bc54c8c7fc922b01377bf4bcf74b537e06b24d321a9a6a09518b6e94e5faee1890aab3ac7e2665c26af20515dac95b4a01badc1cdfacf95810de68c2356e4e2a8380689fb163555342435d6c1d0ae376bc52d36a77be85a0736c882057377c6fe834ef1c9d03fcc99fdbd069893cc0eb64315ac2ad5a409847560df8977720b2c108c8a8c7cbeb9a1b2c7079614e18c2fc00423a4f25431fd1d005d1f91006fe6a48cf792b3b724bbebf2e74a38712ebab137a7c13f5bf6e6c8e44ff64e66b051ebdf53e34b3616fadc2207aecae99d5cd85ed6e6cc6a21651433901b8bce67d20461bf39d5bcb45f03ff960d6d3766d845fa368196c895d501fb2b5e6796a8aa754c63de19000d1f321e95a2c0e3c0bec56f3bc2806843e8220b0983e6a73a28396cef2fcbc4816a8761236dcd3ad1a09030d37f2f5311c4f60fdee00b5cbdf9e29a39133d1c316bb29f0e00f514391ae01938cae87f6b56f45d4b16082ddf4c215e51bea4dc2a2d27d6234608789c1f913fabfb78d5bf690396b9c48260728669cbf3fbe1561948a24dbe22c147b0d7c70ed28ce7b968919f1331279652a2fdee34127115fc20782d9551cf8bda4fe40858230c5a0d13ecbb52351813e94c8bb304962501c0b93999a274def76baf9bf5cfb31fe31658c73a0117e3d693ef0a02f4ba7d51afe144801a25ab90a67a6a3a84a4c767aba51c97607a3674f765c366eda8be4aac59853a85d6e89792c6ce3385d170a92941de0fb97a46ead31d41706943334bec2231c96a6c8eecbf52fe1e20fb269cd349aef04f29153c3d14238aedccc7430a84a1efe5314432835286298192a381e423d04f05c0252659eabc7c22e00d6e3887b1035c1afa83a701621e89ef32ba06a673ab97ab89ab2ad88e857ae0e01ee54b5b8314d6cc82cb6cfb639ea323d4e1a75dd34c65c3d48157a9feb3f9786ebdb4c73da79ba92c8223141200f8c6a3c55343555a0c51faed305fcf6b75906ad2eafb6ff319206f1d7e9ce169f047f3541a3f8795834cf2b4ca2e4d36b225cf2231d7f9f4b7048775e9e6f4e2e53bce525494e76d5a5d389656709681e872107f02fb036338a37f4f1bcc24caf8c93ef594ec9bf7c556ea6ce0e6816e903224fded5dfefaf5b978a38183497c61c023216f13d9abb7d6f0ebeaef6eeadfd807a0407db74328f94eb0c54a673d3dd620efd6cf528e76b19ac9b0fdf99fd2c9e60c2a6bb8da3018329849856ed6ecdb74d24173c3b242c059279e5fb8fb5fb57a4cef4d603b4ed7b0ce0274cbbba0be97729e33779acbd07c269430c738cc4b3384c2cf0f39dceb72a1a6ceb20a64d77ee3f18d3412604cd5a14e84ac3abce7d5b31159bc44293f8bd2e4fc308c51606d6ac550d6c30b89e61ad6136f1ba77cc70a2212c01453fd0cd112b8459f8ea0d81e19de6fd4c793654efb49b0feb09e9ee2fccb288ff2b3d36945aa3d44166559bb817c91bf92781b1b4aabdfddbb61539c166db5daf0fac2602fbc6b2d728373119d3f9503d85861987bf51b1ef2aa6584411441acda44852a9afbb5f9cd74c3a5813fd5d79360fec3d6a565fafab83899d6eec9e38b3c1ad428bb753e50cf63d6a23293aee8f62af97e92f183e09bad4e3cfe2afac47ec4ef2624156a3496ba38a6d22fe0c7580bfc3cb11b0cf948f0eeb8798ab964d5da0bd4257fbf3da326ab687872cb6d65bba790a17e663309a2fc8bc49cee87b071bc5b36c25efbeae5de6ff76dc1454bc52e38ed16b17698d0d8bb5d9ba9019f0bae1aa47f6eb23ed41aee09b4bad44eb8f79f8e54b0346b7bab8faa17a3374da43882e0845d41be5c520c30c0d531d7cdf1e69b0f5deb5bc7e41af9f05b2f83adeed830e6af0f24f4295f7ec16ad03c2c02ad567877544c980fc8df47a96430a5ef20998708ef93571fa35c0701c6f12d83d2666d11df86cde7795c5a35fd8ea0f6b0970eda8a05fb3093b363879a621945c037412ea00b0ae180d0783a44229a33e06d705853de15528b1916f3f5d7d9778d7a184f5f5385591450ab5b9c5a916bae3a90a1aa5ee009dc04026826551157f779e42b83d3544a1d641262c097e163e1c54edc900636a0f7919a7de601bf8ea8d4fc71f80d6d58579853e15c7538b138fac76d183b94c5d61d6b22b634cc8e1cbc04912ed11d038baa3c7bea608f6129aadc052fac030230c8cb209ad6a898a63c941e65cfe073061ce7cd9d602ac6eb2419364a6b92853524abde0d4b34c1f8d7256b032d21a49b81d9b2f8170921522d7854c5cb093880584a80455e0fa455cf50742d1200eb025dcc2d6c8b2f7915064ecfb35142ba4b0ff4f369c46c37bc8438ec135f4ba36ae880b07d3f8fea624a1744ef3d09cbe1a9ffe6b7a05145f2f157d45c1cc2ece50fd7257c0905667c83062196ba64689d78b486a6f3b49262dc1640b70ffc49ccb757d7db53f1f284503a679a55933261254070d56a754bb41b3f5279ff60dab535eec780d62348999b39551a6d80e93d1f06171e93526dbcf54f502b8b1a24771c23d0debf4e30376d81fcdae617f0013a6aa0bf9a60a06b883306927f058a653ec8570b77e5a9b90f8576e3283d5997b4cceca066e136e74c3f19d551ca3cd07a6b7d43fb6c1f25d05d01a98a637329b0b9af03d81148ed1d3e93417a09430c401842129dc4528d0de35c0128de4595d4640d21b085b7ddf74de0ba346d0ccfefa56eff1e969f62cc0a1764d390cd63ad89cf34824a10f72e147fc4658e0ea94d461025b2cbaad58afda0f197d132c40eec9ac2b27dc6c4fb79710d95bffd23154d66622fc454de684e7ee33ea91c6682ffc89909a474e3973f5f001bf7b6824b94308af7e8764bb0416042ee9db4d4ff0f6204840e5d626ddcbc3fd87b67662f90f9abc384826f480f135a7a494ff42e613d00264e939445a925f794e03a7c7dc978f3e7850285f98e651c3939d0c36e04d87f7fa5feac8b131bf18515e0c59e541326221c9ce137a3aa1ccd7436dd2e6f798cdc0fbcda1117512b1f4e96e412cb37524bee690384f3313e6a3d7674b1c0e70b07fbfb51bfbccb208fc75cfd20d7f5e23f536e13eef6c80a87731a6991c71c24967e4bf1b569e40299daaa104764b1f665c93b38368c527c51192bfca4bd7b4203c66eed5d238af5c46291d1b9db01149c3f5287f0ee6dbf39508139df1c11dfc55a195fa27d708635df0dc3a2efd5404e36434ba2370afd008f61973ed8d8316fd7e948c115082a2c9c192add36196dd83cfe59e6917f003634c07bc2777c8c233dc3e3166f1d4c72c81bb6ba81516c87456373aa00a509183c47c0b1c89ab70bf8eff877a3ade0c8e95b572ce3d7e62d2fc27851a33dfdcc67dc82bd0e016bf14e27520a8a076829d7079aa631f4d9da5728f6c29e8984ec491768665660c585972148042b916bf80cc29d80691afd5808005d26914e6730d5ad49cd0b8b569a18676991e3715bdfb5069fd3256e4fc9aa96352ced074ae04969de2bea342b212d96856c13024e92defd2d923a0ba2f98e8b50bd2f69ba8ebcb93236945ca8db95e9c0c46a8543eead062eb6fefe6e95b0e9066d142fc8a8562965178d3dc90d7bc9579e590e52aac9cdb3c5cc199850207cd8fae404b12b64cd31b0b51f3ebc2d3e86d1aade98db4a61bb5b7c1ce1f2bc18e4665bd528f5d3288bae3cce332a67e3f38e6857d5a0873e851cdd78c2fcb03965a9e36eca4694595b58eddad4fae66462b7f54b7a673ece9bef50ee92700f650c5702a20e6a4379d46e5a0092287ff3802116f79d835ad43b57c67c8842dc4de58fe121cdf16e6acc8ecf0c541f98b860342a041f3124e4f477faa016a9e6c1970f1e8068bc2c79cf9ac32ea414c8de071df29fd12c9ec6ee6e2c1e3ddbfeb5bcee71361c7f62c026e9470563ee781db0bcc818534f7ea7a53e01631b3975a66d0cf976e464aa00053e2b8bba2cc8d5c173cfd563969f47dc1793effec9ecd8cd888b5de207f12650d7988b62aa44b15d8a85cd4895097adecf40a62643a4bd76e2a10bc517934db1fa601964c342386cb783aade5cb7974e60f9298e9963adbb11a74ef410d821f23068db6cdf074af56f3139dcc9af127a040ddb2dadfa032b790ceb7d53999fad4d6d5077505e1da15680b50254fbd6f13902b9ce2a0f261ccd7b788020166807e110f98d4b6ec1eb6b21c99df09423f8db3f328ef86481eb354e3768e959a921810eac68579e5a62f2d08d47a1678385c6a0a337ac8f697aaa2f827037b63d49a5ef17211384dc2aac32103651ba0ed4380e20ac48fd9a15821ff8f6f57f1042c9207f32769b6ef21e26686677d7db4c42c478409234b8f35310791842514fa44c39719ed4af8544d002b7fe814d1a628f92b80721640a1fbcd9444f230cd86c468da4f7d2a7c876f7ad151db09e203fec040df16e5026d2cecc94eea481bb5b8f0d373f8e7b2c4e21aeb8c56715ba53ea9d4ce37a79e138e4e96c2be259af9e7f1742f2650fb67a193cb9d1940f743079a95f3f4bbb97ede3c264f5d273970509c3530a019d7550e9c11c5868e10b4adb7cb031498bd89c901e6ce5e1e34953bcedaea9ac6cfe04317327f3d529e6140020b2ad4f7aedf142c920329c3aba230c4aca30d149e33ea212cbaf19a6ff787e2dc1ef8388bb9273858b7964fee06e6b5e370f03c9378a2c751d58761edede57535972ca2b208a04557ceffba711dd6c087786d9e5eabff6ff32e87808f1215970ecb30478dc9599717c87018cfba2f6ee03221100a3c7c8e8fc34a7ddd30278f59adfd3c836e79219aa2e9b0ac58aa9ce6900cd4f5158752283d14946988fa4eacdd5456af1da4ad9b8af66f44083d2f48afddcc2683b02478885314ad71f297d7a609a9ae17bdd1b860abad742dc8f82ea1308a462f1c0b7e3a471329742642adcac9287fead09de0f46df1416bbc699e43172d1e529bd89e986fe2f6f08f04bd53be4546b7622647d09393c97b4b2db77c19287a5f732e0c1b2d5de081bf3ec453cb4af6fb59529c06f78a0a9c8a4c13e862bf92c77453277576fae1a787ac7c267b30076c35376688e53528c4acf8054928f4b310e4a6144d4394ec269eea3bf83e6fd4de5c33810396ee802b243d4f797733922feb25d1e616bdafbc6a192d220ce578af5a6e29b6f13230effef51f8c95bc14e9ec4e4816b5f32797e0cc24e5e4fec09bd766193a738e3c2565e7d0fecb3e51b0d672598daf204136a428bfb3d550204e043923710359bc9fee7acd0c9108efd6803eb8294827e218e9bef2aaafa03967029c3ef0cf540446fa272ac81ebc292fe44d1644b7bee47998f3815d2dea5512d2c6938c74755d1093d17c4f6a4e7ba12ea9515f81f4585730d7299897023bd3ab7302b5d313d16e0d01105e82ac8ca8c48a333667af963a6995b6c1957cdd72fab34bef2460209f6a7cb3052757626b765ac01be5d59f357de690d1f1faf86b0c3e2856211248d6341faf04e7be29352886be9cb4e9fbf44e33745b560d29cec2d61b8008b4282b3590650eb6b73f19e042b8ef080aec3c7b0b97053a47e1207881a063245c31535f298554451aa93a53c438fdaf4923eab7008c0ebc7d838e5925b3a8195b38c99c71c55def5b29b29deb7199a694d2b256a6852f0f9fae0476f7e820f5cd6875837048d479e4c9a06a13649dfbf8472baade7c587ad7c5d09bd31f74c32ab68c68fd41ad88ee290c160340cb6324cdd3c82ae1a61e1a589b967eb61c4d1760d3bc14a818e81e4cc4f4095e3ee067f5d9a94bdde196a84ba738a97163bba543e17db1ce0ae2efad91affb28c6690156346d35168bc2d69c5d966b5e723db05cdf5f7f6429aa7611c3fce775b5e105e843d5e923d9ce6a852fae1c5e84982c6e64c565137775417f0132e30e70e66c140ea93afd6d859ddcdc9d62190422f4fe2a0f3cb6de8f6310cc68078ef6f5ba5cba4a8ed4db8afb1e3b4141b4fc041952ea30b975ceadd39d76e110ba1d686df5132509a80948cc94012e2b1e1991da29663073f31e236e87eb1646d54a02572562d9aae825f26e5d5227d7741bd50375f1cc56dffcc9f87b49bd90ad82e5bb65be4c5ae9934da3eeb49dc35d5cd764a1273849778cb6d535368fc1dfe415173d5c808595a7b4fd41444871888ea5c2dbde0c1b2d658789adae144d6b70aae4edfa0d1f656872dc6069787caac1cbeef50000000000000000000000070d172129313740',
-// );
-// });
-
-// it('sign(), verifySignature(): should ignore any previous signature when decided if EIP155 should be used in a new one', () => {
-// const txData: TxData = {
-// data: '0x7cf5dab00000000000000000000000000000000000000000000000000000000000000005',
-// gasLimit: '0x15f90',
-// gasPrice: '0x1',
-// nonce: '0x01',
-// to: '0xd9024df085d09398ec76fbed18cac0e1149f50dc',
-// value: '0x0',
-// };
-
-// const seed = hexToBytes(
-// 'b667ed77674beddf962b6635bb6f087c0d5fc673501d02133d302314942a6256fda678391d0117fc90ef2b7f7d5a5649',
-// );
-
-// const common = new Common({
-// chain: Chain.Mainnet,
-// hardfork: Hardfork.TangerineWhistle,
-// });
-
-// const fixtureTxSignedWithoutEIP155 = Transaction.fromTxData(txData, {
-// common,
-// }).sign(seed);
-// // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
-// let signedWithEIP155 = Transaction.fromTxData(txData).sign(seed);
-
-// expect(signedWithEIP155.verifySignature()).toBe(true);
-// // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
-// signedWithEIP155 = Transaction.fromTxData(fixtureTxSignedWithoutEIP155.toJSON()).sign(
-// seed
-// );
-
-// expect(signedWithEIP155.verifySignature()).toBe(true);
-// // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
-// let signedWithoutEIP155 = Transaction.fromTxData(txData, {
-// common,
-// }).sign(seed);
-
-// expect(signedWithoutEIP155.verifySignature()).toBe(true);
-// // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
-// signedWithoutEIP155 = Transaction.fromTxData(txData, {
-// common,
-// }).sign(seed);
-
-// expect(signedWithoutEIP155.verifySignature()).toBe(true);
-// });
-
-// it('sign(), verifySignature(): sign tx with chainId specified in params', () => {
-// const common = new Common({ chain: Chain.Goerli, hardfork: Hardfork.Petersburg });
-// let tx = Transaction.fromTxData({}, { common });
-// expect(tx.common.chainId()).toEqual(BigInt(5));
-
-// const seed = hexToBytes(txFixtures[0].seed);
-// tx = tx.sign(seed);
-
-// const serialized = tx.serialize();
-
-// const reTx = Transaction.fromSerializedTx(serialized, { common });
-// expect(reTx.verifySignature()).toBe(true);
-// expect(reTx.common.chainId()).toEqual(BigInt(5));
-// });
-
-// it('freeze property propagates from unsigned tx to signed tx', () => {
-// const tx = Transaction.fromTxData({}, { freeze: false });
-// expect(Object.isFrozen(tx)).toBe(false);
-// const seed = hexToBytes(txFixtures[0].seed);
-// const signedTxn = tx.sign(seed);
-// expect(Object.isFrozen(signedTxn)).toBe(false);
-// });
-
-// it('common propagates from the common of tx, not the common in TxOptions', () => {
-// const common = new Common({ chain: Chain.Goerli, hardfork: Hardfork.London });
-// const seed = hexToBytes(txFixtures[0].seed);
-// const txn = Transaction.fromTxData({}, { common, freeze: false });
-// const newCommon = new Common({
-// chain: Chain.Goerli,
-// hardfork: Hardfork.London,
-// eips: [2537],
-// });
-// expect(newCommon).not.toEqual(common);
-// Object.defineProperty(txn, 'common', {
-// get() {
-// return newCommon;
-// },
-// });
-// const signedTxn = txn.sign(seed);
-// expect(signedTxn.common.eips()).toContain(2537);
-// });
-
-// it('isSigned() -> returns correct values', () => {
-// let tx = Transaction.fromTxData({});
-// expect(tx.isSigned()).toBe(false);
-
-// const txData: TxData = {
-// data: '0x7cf5dab00000000000000000000000000000000000000000000000000000000000000005',
-// gasLimit: '0x15f90',
-// gasPrice: '0x1',
-// nonce: '0x01',
-// to: '0xd9024df085d09398ec76fbed18cac0e1149f50dc',
-// value: '0x0',
-// };
-// const seed = hexToBytes(
-// '6ceb777233924a448307a020a2fa456d2cd706fa3b2b42350315f005af3526eb6bc965300894660119a748fadbbcff82',
-// );
-// tx = Transaction.fromTxData(txData);
-// expect(tx.isSigned()).toBe(false);
-// tx = tx.sign(seed);
-// expect(tx.isSigned()).toBe(true);
-
-// tx = Transaction.fromTxData(txData);
-// expect(tx.isSigned()).toBe(false);
-// const rawUnsigned = tx.serialize();
-// tx = tx.sign(seed);
-// const rawSigned = tx.serialize();
-// expect(tx.isSigned()).toBe(true);
-
-// tx = Transaction.fromSerializedTx(rawUnsigned);
-// expect(tx.isSigned()).toBe(false);
-// tx = tx.sign(seed);
-// expect(tx.isSigned()).toBe(true);
-// tx = Transaction.fromSerializedTx(rawSigned);
-// expect(tx.isSigned()).toBe(true);
-
-// const signedValues = RLP.decode(Uint8Array.from(rawSigned));
-// tx = Transaction.fromValuesArray(signedValues as Uint8Array[]);
-// expect(tx.isSigned()).toBe(true);
-// tx = Transaction.fromValuesArray(signedValues.slice(0, 6) as Uint8Array[]);
-// expect(tx.isSigned()).toBe(false);
-// });
-// });
diff --git a/packages/web3-zond-accounts/test/unit/tx/transactionFactory.test.ts b/packages/web3-zond-accounts/test/unit/tx/transactionFactory.test.ts
index 7fcf7aef..76a8d696 100644
--- a/packages/web3-zond-accounts/test/unit/tx/transactionFactory.test.ts
+++ b/packages/web3-zond-accounts/test/unit/tx/transactionFactory.test.ts
@@ -18,28 +18,17 @@ import { hexToBytes } from '@theqrl/web3-utils';
import { Chain, Common, Hardfork } from '../../../src/common';
import {
- AccessListEIP2930Transaction,
FeeMarketEIP1559Transaction,
- Transaction,
TransactionFactory,
} from '../../../src';
const common = new Common({
chain: Chain.Mainnet,
- hardfork: Hardfork.London,
+ hardfork: Hardfork.Shanghai,
});
const seed = hexToBytes('d00fd401dc076020ab57f52becab30305bbfc5b3bd7334287c06cdb500c860c54e54b5bd2c5c137d601ef6e8a9e9fac8');
-const unsignedTx = Transaction.fromTxData({});
-const signedTx = unsignedTx.sign(seed);
-
-const unsignedEIP2930Tx = AccessListEIP2930Transaction.fromTxData(
- { chainId: BigInt(1) },
- { common },
-);
-const signedEIP2930Tx = unsignedEIP2930Tx.sign(seed);
-
const unsignedEIP1559Tx = FeeMarketEIP1559Transaction.fromTxData(
{ chainId: BigInt(1) },
{ common },
@@ -47,28 +36,11 @@ const unsignedEIP1559Tx = FeeMarketEIP1559Transaction.fromTxData(
const signedEIP1559Tx = unsignedEIP1559Tx.sign(seed);
const txTypes = [
- {
- class: Transaction,
- name: 'Transaction',
- unsigned: unsignedTx,
- signed: signedTx,
- eip2718: false,
- type: 0,
- },
- {
- class: AccessListEIP2930Transaction,
- name: 'AccessListEIP2930Transaction',
- unsigned: unsignedEIP2930Tx,
- signed: signedEIP2930Tx,
- eip2718: true,
- type: 1,
- },
{
class: FeeMarketEIP1559Transaction,
name: 'FeeMarketEIP1559Transaction',
unsigned: unsignedEIP1559Tx,
signed: signedEIP1559Tx,
- eip2718: true,
type: 2,
},
];
@@ -84,18 +56,19 @@ describe('[TransactionFactory]: Basic functions', () => {
it('fromSerializedData() -> error cases', () => {
for (const txType of txTypes) {
- if (!txType.eip2718) {
- continue;
- }
+
+ // NOTE(rgeraldes24): this part is not valid since we support tx types from the start
+ /*
const unsupportedCommon = new Common({
chain: Chain.Mainnet,
- hardfork: Hardfork.Istanbul,
+ hardfork: Hardfork.Shanghai,
});
expect(() => {
TransactionFactory.fromSerializedData(txType.unsigned.serialize(), {
common: unsupportedCommon,
});
}).toThrow();
+ */
expect(() => {
const serialized = txType.unsigned.serialize();
@@ -107,15 +80,10 @@ describe('[TransactionFactory]: Basic functions', () => {
it('fromBlockBodyData() -> success cases', () => {
for (const txType of txTypes) {
- let rawTx;
- if (txType.eip2718) {
- rawTx = txType.signed.serialize();
- } else {
- rawTx = txType.signed.raw() as Uint8Array[];
- }
+ let rawTx = txType.signed.serialize();
const tx = TransactionFactory.fromBlockBodyData(rawTx, { common });
expect(tx.constructor.name).toEqual(txType.name);
- expect(txType.eip2718 ? tx.serialize() : tx.raw()).toEqual(rawTx);
+ expect(tx.serialize()).toEqual(rawTx);
}
});
@@ -123,19 +91,15 @@ describe('[TransactionFactory]: Basic functions', () => {
for (const txType of txTypes) {
const tx = TransactionFactory.fromTxData({ type: txType.type }, { common });
expect(tx.constructor.name).toEqual(txType.class.name);
- if (txType.eip2718) {
- continue;
- }
- const _tx = TransactionFactory.fromTxData({});
- expect(_tx.constructor.name).toEqual(txType.class.name);
}
});
it('fromTxData() -> error cases', () => {
- const unsupportedCommon = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Istanbul });
- expect(() => {
- TransactionFactory.fromTxData({ type: 1 }, { common: unsupportedCommon });
- }).toThrow();
+ // NOTE(rgeraldes24): this part is not valid since we support tx types from the start
+ // const unsupportedCommon = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Shanghai });
+ // expect(() => {
+ // TransactionFactory.fromTxData({ type: 1 }, { common: unsupportedCommon });
+ // }).toThrow();
expect(() => {
TransactionFactory.fromTxData({ type: 999 });
diff --git a/packages/web3-zond-accounts/test/unit/tx/typedTxsAndEIP2930.test.ts b/packages/web3-zond-accounts/test/unit/tx/typedTxsAndEIP2930.test.ts
index 4459d17b..ad918fc9 100644
--- a/packages/web3-zond-accounts/test/unit/tx/typedTxsAndEIP2930.test.ts
+++ b/packages/web3-zond-accounts/test/unit/tx/typedTxsAndEIP2930.test.ts
@@ -14,35 +14,23 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-import { bytesToHex, hexToBytes, uint8ArrayEquals, uint8ArrayConcat } from '@theqrl/web3-utils';
+import { bytesToHex, hexToBytes, uint8ArrayEquals, uint8ArrayConcat, addressToBytes } from '@theqrl/web3-utils';
import {
- AccessListEIP2930Transaction,
- AccessListUint8ArrayItem,
FeeMarketEIP1559Transaction,
} from '../../../src';
import { Chain, Common, Hardfork/*, uint8ArrayToBigInt*/ } from '../../../src/common';
-//import { Address } from '../../../src/tx/address';
-import {
- MAX_INTEGER,
- MAX_UINT64,
-} from '../../../src/tx/constants';
import type { AccessList } from '../../../src';
const seed = hexToBytes('0xec3077d539c7b333e596b9e6c0b5f5952d26469ab9a60d1fd54c329ef9959593850a2daf60369e434a7c55939f99e149');
-const address = hexToBytes('0x20982e08c8b5b4d007e4f6c4a637033ce90aa352');
+const address = addressToBytes('Z20982e08c8b5b4d007e4f6c4a637033ce90aa352');
const common = new Common({
chain: Chain.Mainnet,
- hardfork: Hardfork.London,
+ hardfork: Hardfork.Shanghai,
});
const txTypes = [
- {
- class: AccessListEIP2930Transaction,
- name: 'AccessListEIP2930Transaction',
- type: 1,
- },
{
class: FeeMarketEIP1559Transaction,
name: 'FeeMarketEIP1559Transaction',
@@ -54,7 +42,7 @@ const validAddress = hexToBytes('01'.repeat(20));
const validSlot = hexToBytes('01'.repeat(32));
const chainId = BigInt(1);
-describe('[AccessListEIP2930Transaction / FeeMarketEIP1559Transaction] -> EIP-2930 Compatibility', () => {
+describe('[FeeMarketEIP1559Transaction] -> EIP-2930 Compatibility', () => {
it('Initialization / Getter -> fromTxData()', () => {
for (const txType of txTypes) {
let tx = txType.class.fromTxData({}, { common });
@@ -70,14 +58,6 @@ describe('[AccessListEIP2930Transaction / FeeMarketEIP1559Transaction] -> EIP-29
});
expect(tx.common.chainId() === BigInt(99999)).toBeTruthy();
- const nonEIP2930Common = new Common({
- chain: Chain.Mainnet,
- hardfork: Hardfork.Istanbul,
- });
- expect(() => {
- txType.class.fromTxData({}, { common: nonEIP2930Common });
- }).toThrow();
-
expect(() => {
txType.class.fromTxData(
{
@@ -98,8 +78,9 @@ describe('[AccessListEIP2930Transaction / FeeMarketEIP1559Transaction] -> EIP-29
}
});
+
it('cannot input decimal values', () => {
- const values = ['chainId', 'nonce', 'gasPrice', 'gasLimit', 'value', 'publicKey', 'signature'];
+ const values = ['chainId', 'nonce', 'maxFeePerGas', 'maxPriorityFeePerGas', 'gasLimit', 'value', 'publicKey', 'signature'];
const cases = [
10.1,
'10.1',
@@ -131,7 +112,7 @@ describe('[AccessListEIP2930Transaction / FeeMarketEIP1559Transaction] -> EIP-29
}
txData[value] = testCase;
expect(() => {
- AccessListEIP2930Transaction.fromTxData(txData);
+ FeeMarketEIP1559Transaction.fromTxData(txData);
}).toThrow();
}
}
@@ -306,270 +287,10 @@ describe('[AccessListEIP2930Transaction / FeeMarketEIP1559Transaction] -> EIP-29
tx = txType.class.fromTxData({}, { common, freeze: false });
expect(tx.getDataFee()).toEqual(BigInt(0));
- const mutableCommon = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.London });
+ const mutableCommon = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Shanghai });
tx = txType.class.fromTxData({}, { common: mutableCommon });
- tx.common.setHardfork(Hardfork.Istanbul);
+ tx.common.setHardfork(Hardfork.Shanghai);
expect(tx.getDataFee()).toEqual(BigInt(0));
}
});
-});
-
-describe('[AccessListEIP2930Transaction] -> Class Specific Tests', () => {
- it('Initialization', () => {
- const tx = AccessListEIP2930Transaction.fromTxData({}, { common });
- expect(AccessListEIP2930Transaction.fromTxData(tx, { common })).toBeTruthy();
-
- const _validAddress = hexToBytes('01'.repeat(20));
- const _validSlot = hexToBytes('01'.repeat(32));
- const _chainId = BigInt(1);
- expect(() => {
- AccessListEIP2930Transaction.fromTxData(
- {
- data: hexToBytes('010200'),
- to: _validAddress,
- accessList: [[_validAddress, [_validSlot]]],
- chainId: _chainId,
- gasLimit: MAX_UINT64,
- gasPrice: MAX_INTEGER,
- },
- { common },
- );
- }).toThrow('gasLimit * gasPrice cannot exceed MAX_INTEGER');
-
- const uint8Array = new Uint8Array([]);
- const _address = new Uint8Array([]);
- const storageKeys = [new Uint8Array([]), new Uint8Array([])];
- const aclBuf: AccessListUint8ArrayItem = [_address, storageKeys];
- expect(() => {
- AccessListEIP2930Transaction.fromValuesArray(
- [
- uint8Array,
- uint8Array,
- uint8Array,
- uint8Array,
- uint8Array,
- uint8Array,
- uint8Array,
- [aclBuf],
- uint8Array,
- ],
- {},
- );
- }).toThrow();
- });
-
- it('should return right upfront cost', () => {
- let tx = AccessListEIP2930Transaction.fromTxData(
- {
- data: hexToBytes('010200'),
- to: validAddress,
- accessList: [[validAddress, [validSlot]]],
- chainId,
- },
- { common },
- );
- // Cost should be:
- // Base fee + 2*TxDataNonZero + TxDataZero + AccessListAddressCost + AccessListSlotCost
- const txDataZero = Number(common.param('gasPrices', 'txDataZero'));
- const txDataNonZero = Number(common.param('gasPrices', 'txDataNonZero'));
- const accessListStorageKeyCost = Number(
- common.param('gasPrices', 'accessListStorageKeyCost'),
- );
- const accessListAddressCost = Number(common.param('gasPrices', 'accessListAddressCost'));
- const baseFee = Number(common.param('gasPrices', 'tx'));
- const creationFee = Number(common.param('gasPrices', 'txCreation'));
-
- expect(
- tx.getBaseFee() ===
- BigInt(
- txDataNonZero * 2 +
- txDataZero +
- baseFee +
- accessListAddressCost +
- accessListStorageKeyCost,
- ),
- ).toBeTruthy();
-
- // In this Tx, `to` is `undefined`, so we should charge homestead creation gas.
- tx = AccessListEIP2930Transaction.fromTxData(
- {
- data: hexToBytes('010200'),
- accessList: [[validAddress, [validSlot]]],
- chainId,
- },
- { common },
- );
-
- expect(
- tx.getBaseFee() ===
- BigInt(
- txDataNonZero * 2 +
- txDataZero +
- creationFee +
- baseFee +
- accessListAddressCost +
- accessListStorageKeyCost,
- ),
- ).toBeTruthy();
-
- // Explicitly check that even if we have duplicates in our list, we still charge for those
- tx = AccessListEIP2930Transaction.fromTxData(
- {
- to: validAddress,
- accessList: [
- [validAddress, [validSlot]],
- [validAddress, [validSlot, validSlot]],
- ],
- chainId,
- },
- { common },
- );
-
- expect(
- tx.getBaseFee() ===
- BigInt(baseFee + accessListAddressCost * 2 + accessListStorageKeyCost * 3),
- ).toBeTruthy();
- });
-
- it('getUpfrontCost() -> should return upfront cost', () => {
- const tx = AccessListEIP2930Transaction.fromTxData(
- {
- gasPrice: 1000,
- gasLimit: 10000000,
- value: 42,
- },
- { common },
- );
- expect(tx.getUpfrontCost()).toEqual(BigInt(10000000042));
- });
-
- it('unsigned tx -> getMessageToSign()', () => {
- const unsignedTx = AccessListEIP2930Transaction.fromTxData(
- {
- data: hexToBytes('010200'),
- to: validAddress,
- accessList: [[validAddress, [validSlot]]],
- chainId,
- },
- { common },
- );
- const expectedHash = hexToBytes(
- '0x78528e2724aa359c58c13e43a7c467eb721ce8d410c2a12ee62943a3aaefb60b',
- );
- expect(unsignedTx.getMessageToSign(true)).toEqual(expectedHash);
-
- const expectedSerialization = hexToBytes(
- '0x01f858018080809401010101010101010101010101010101010101018083010200f838f7940101010101010101010101010101010101010101e1a00101010101010101010101010101010101010101010101010101010101010101',
- );
- expect(unsignedTx.getMessageToSign(false)).toEqual(expectedSerialization);
- });
-
- // Data from
- // https://github.com/INFURA/go-ethlibs/blob/75b2a52a39d353ed8206cffaf68d09bd1b154aae/eth/transaction_signing_test.go#L87
-
- // it('should sign transaction correctly and return expected JSON', () => {
- // const _address = hexToBytes('0000000000000000000000000000000000001337');
- // const slot1 = hexToBytes(
- // '0000000000000000000000000000000000000000000000000000000000000000',
- // );
- // const txData = {
- // data: hexToBytes(''),
- // gasLimit: 0x62d4,
- // gasPrice: 0x3b9aca00,
- // nonce: 0x00,
- // to: new Address(hexToBytes('df0a88b2b68c673713a8ec826003676f272e3573')),
- // value: 0x01,
- // chainId: uint8ArrayToBigInt(hexToBytes('796f6c6f763378')),
- // // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- // accessList: [[_address, [slot1]]],
- // };
-
- // const customChainParams = {
- // name: 'custom',
- // chainId: txData.chainId,
- // eips: [2718, 2929, 2930],
- // };
- // const usedCommon = Common.custom(customChainParams, {
- // baseChain: Chain.Mainnet,
- // hardfork: Hardfork.Berlin,
- // });
- // usedCommon.setEIPs([2718, 2929, 2930]);
-
- // const expectedUnsignedRaw = hexToBytes(
- // '01f86587796f6c6f76337880843b9aca008262d494df0a88b2b68c673713a8ec826003676f272e35730180f838f7940000000000000000000000000000000000001337e1a00000000000000000000000000000000000000000000000000000000000000000808080',
- // );
- // const expectedSigned = hexToBytes(
- // '01f8a587796f6c6f76337880843b9aca008262d494df0a88b2b68c673713a8ec826003676f272e35730180f838f7940000000000000000000000000000000000001337e1a0000000000000000000000000000000000000000000000000000000000000000080a0294ac94077b35057971e6b4b06dfdf55a6fbed819133a6c1d31e187f1bca938da00be950468ba1c25a5cb50e9f6d8aa13c8cd21f24ba909402775b262ac76d374d',
- // );
- // const expectedHash = hexToBytes(
- // 'bbd570a3c6acc9bb7da0d5c0322fe4ea2a300db80226f7df4fef39b2d6649eec',
- // );
-
- // const signature = uint8ArrayToBigInt(
- // hexToBytes('294ac94077b35057971e6b4b06dfdf55a6fbed819133a6c1d31e187f1bca938d'),
- // );
-
- // const publicKey = uint8ArrayToBigInt(
- // hexToBytes('294ac94077b35057971e6b4b06dfdf55a6fbed819133a6c1d31e187f1bca938d'),
- // );
-
- // const unsignedTx = AccessListEIP2930Transaction.fromTxData(txData, { common: usedCommon });
-
- // const serializedMessageRaw = unsignedTx.serialize();
-
- // expect(uint8ArrayEquals(expectedUnsignedRaw, serializedMessageRaw)).toBeTruthy();
-
- // const signed = unsignedTx.sign(seed);
-
- // expect(signature === signed.signature!).toBeTruthy();
- // expect(publicKey === signed.publicKey!).toBeTruthy();
- // expect(uint8ArrayEquals(expectedSigned, signed.serialize())).toBeTruthy();
- // expect(uint8ArrayEquals(expectedHash, signed.hash())).toBeTruthy();
-
- // const expectedJSON = {
- // chainId: '0x796f6c6f763378',
- // nonce: '0x0',
- // gasPrice: '0x3b9aca00',
- // gasLimit: '0x62d4',
- // to: '0xdf0a88b2b68c673713a8ec826003676f272e3573',
- // value: '0x1',
- // data: '0x',
- // accessList: [
- // {
- // address: '0x0000000000000000000000000000000000001337',
- // storageKeys: [
- // '0x0000000000000000000000000000000000000000000000000000000000000000',
- // ],
- // },
- // ],
- // publicKey: '0x294ac94077b35057971e6b4b06dfdf55a6fbed819133a6c1d31e187f1bca938d',
- // signature: '0xbe950468ba1c25a5cb50e9f6d8aa13c8cd21f24ba909402775b262ac76d374d',
- // };
-
- // expect(signed.toJSON()).toEqual(expectedJSON);
- // });
-
- it('freeze property propagates from unsigned tx to signed tx', () => {
- const tx = AccessListEIP2930Transaction.fromTxData({}, { freeze: false });
- expect(Object.isFrozen(tx)).toBe(false);
- const signedTxn = tx.sign(seed);
- expect(Object.isFrozen(signedTxn)).toBe(false);
- });
-
- it('common propagates from the common of tx, not the common in TxOptions', () => {
- const txn = AccessListEIP2930Transaction.fromTxData({}, { common, freeze: false });
- const newCommon = new Common({
- chain: Chain.Mainnet,
- hardfork: Hardfork.London,
- eips: [2537],
- });
- expect(newCommon).not.toEqual(common);
- Object.defineProperty(txn, 'common', {
- get() {
- return newCommon;
- },
- });
- const signedTxn = txn.sign(seed);
- expect(signedTxn.common.eips().includes(2537)).toBeTruthy();
- });
-});
+});
\ No newline at end of file
diff --git a/packages/web3-zond-accounts/test/unit/tx/types.ts b/packages/web3-zond-accounts/test/unit/tx/types.ts
index e3d918c3..886a5d56 100644
--- a/packages/web3-zond-accounts/test/unit/tx/types.ts
+++ b/packages/web3-zond-accounts/test/unit/tx/types.ts
@@ -14,25 +14,17 @@ GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
+
export type ForkName =
- | 'London+3860'
- | 'London'
- | 'Berlin'
- | 'Istanbul'
- | 'Byzantium'
- | 'ConstantinopleFix'
- | 'Constantinople'
- | 'EIP150'
- | 'EIP158'
- | 'Frontier'
- | 'Homestead';
+ | 'Shanghai';
export type ForkNamesMap = { [forkName in ForkName]: string };
export interface TxData {
data: string;
gasLimit: string;
- gasPrice: string;
+ maxFeePerGas: string;
+ maxPriorityFeePerGas: string;
nonce: string;
to: string;
value: string;
@@ -41,25 +33,6 @@ export interface TxData {
signature: string;
}
-// The type of each entry from ./ttTransactionTestEip155VitaliksTests.json
-export interface VitaliksTestsDataEntry {
- blocknumber: string;
- hash: string;
- rlp: string;
- sender: string;
- transaction: TxData;
-}
-
-// The type of ./txs.json
-export type TxsJsonEntry = {
- seed: string;
- sendersAddress: string;
- type: string;
- cost: number;
- raw: string[];
- data: TxData;
-};
-
export type ForksData = {
[forkName in ForkName]: { hash?: string; sender?: string; exception?: string };
};
diff --git a/packages/web3-zond-accounts/test/unit/wallet.test.ts b/packages/web3-zond-accounts/test/unit/wallet.test.ts
index 5099baa8..be02066b 100644
--- a/packages/web3-zond-accounts/test/unit/wallet.test.ts
+++ b/packages/web3-zond-accounts/test/unit/wallet.test.ts
@@ -237,6 +237,7 @@ describe('Wallet', () => {
});
});
+ // TODO(youtrack/theqrl/web3.js/3)
// describe('encrypt', () => {
// it('should encrypt all accounts and return array', async () => {
// const account1 = {
diff --git a/packages/web3-zond-contract/CHANGELOG.md b/packages/web3-zond-contract/CHANGELOG.md
index 4e1667e2..0e07e464 100644
--- a/packages/web3-zond-contract/CHANGELOG.md
+++ b/packages/web3-zond-contract/CHANGELOG.md
@@ -3,309 +3,4 @@
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-## [4.0.0-alpha.0]
-
-### Breaking Changes
-
-#### Receipt Status
-
-The receiptInfo Status will now be be an unsigned integer instead of boolean value to comply with the specification.
-
-
-
-1.x
-
-
-```ts
-myContract.methods
- .MyMethod()
- .send()
- .on('receipt', receipt => {
- console.log(receipt.status); // true | false
- });
-```
-
-
-
-
-4.x
-
-
-```ts
-myContract.methods
- .MyMethod()
- .send()
- .on('receipt', receipt => {
- console.log(receipt.status); // BigInt(0) | BigInt(1)
- });
-```
-
-
-
-
-**NOTE:** The unsigned integer type is dependent on the data format you specified. Default type is `bigint`.
-
-#### Deploy ’sending’ and `sent` event will fire only the params
-
-In 1.x when following was executed `deploy().send().on(‘sending’, payload => {})`. The `payload` was the complete the JSON-RPC Payload. In 4.x it will just be the transaction which is about to be transmitted. Earlier it was accessible by from `payload.params[0]`, now will be available directly to event handler.
-
-1.x
-
-
-```ts
-myContract
- .deploy()
- .send()
- .on('send', payload => {
- console.log(payload);
- // {id: <1>, jsonrpc: '2.0', method: 'eth_sendTransaction', params: [txObject] }
- });
-```
-
-
-
-
-4.x
-
-
-```ts
-myContract
- .deploy()
- .send()
- .on('send', txObject => {
- console.log(txObject);
- // {id: <>, gas: <>,...}
- });
-```
-
-
-
-
-#### Deploy ’confirmations’ handler will be invoked with object
-
-In 1.x, the `confirmations` handler was invoked with multiple parameters. But in `4.x` there will be one parameter as object but with all the same properties.
-
-1.x
-
-
-```ts
-myContract .send().on(‘confirmation’, (confirmations: number, receipt: object, latestBlockHash: string) => {})`
-```
-
-
-
-
-4.x
-
-
-```ts
-myContract .send().on(‘confirmation’, ({confirmations: bigint, receipt: object, latestBlockHash: string}) => {})`
-```
-
-
-
-
-#### Strict validation for `encodeABI`
-
-`encodeABI` now have strict validation for the ABI types. It's not limited to mentioned use cases below , but applied in general. Some use cases are:
-
-- Earlier a `byte32` ABI type was successfully encoded even providing less bytes as input. Now it will throw error.
-- Earlier a `byte32` ABI type was successfully encoded even with an empty bytes. Now it will throw error.
-
-#### Different error message for creating object without `new` keyword
-
-The error message will be different if you try to create a contract object without a `new` keyword.
-
-1.x
-
-
-```ts
-Please use the "new" keyword to instantiate a web3.eth.Contract() object!
-```
-
-
-
-
-4.x
-
-
-```ts
-Class constructor ContractBuilder cannot be invoked without 'new'
-```
-
-
-
-
-#### No warning message when `toBlock` passed to event subscription
-
-In `1.x` if you pass the `toBlock` as event options you would get a warning message.
-
-> Invalid option: toBlock. Use getPastEvents for specific range.
-
-In `4.x` you will not get any warning. But `toBlock` still have no effect.
-
-#### The contract `send` method will now resolve with the `receipt` object
-
-In `1.x` the contract `.send` method was always resolved with `transactionHash`. That enforces user to make an extra call to get any further information. In `4.x` the `.send` function will resolve with `receipt` object.
-
-1.x
-
-
-```ts
-const transactionHash = await myContract.method.MyMethod().send();
-```
-
-
-
-
-4.x
-
-
-```ts
-const receipt = await myContract.method.MyMethod().send();
-const transactionHash = receipt.transactionHash;
-```
-
-
-
-
-## [4.0.1-alpha.1]
-
-### Added
-
-- Decoding error data, using Error ABI if available, according to EIP-838. (#5434)
-- The class `Web3ContractError` is moved from this package to `web3-error`. (#5434)
-
-### Fixed
-
-- According to the latest change in `web3-eth-abi`, the decoded values of the large numbers, returned from function calls or events, are now available as `BigInt`. (#5435)
-
-## [4.0.1-alpha.2]
-
-### Added
-
-- Decoding error data, using Error ABI if available, if error was returned from a smart contract function call (#5662).
-- `SpecialOutput` type was added as a generic type into the call function to support reassigning output types (#5631)
-- Overloaded functions types (`ContractOverloadedMethodInputs`, `ContractOverloadedMethodOutputs`) was added (#5631)
-
-### Fixed
-
-- Emit past contract events based on `fromBlock` when passed to `contract.events.someEventName` (#5201)
-- Use different types for `ContractOptions` -> `jsonInterface` setter and getter (#5474)
-- An issue within the `Contract` constructor where `provider` wasn't being set when provided within the `optionsOrContextOrReturnFormat` argument (#5669)
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Fixed
-
-- Fix contract defaults (#5756)
-- Fixed getPastEventsError (#5819)
-
-### Changed
-
-- Update imports statements for objects that was moved between web3 packages (#5771)
-
-### Added
-
-- Added functionality of `createAccessList` for contracts ( #5780 )
-- An instance of `Contract` will `subscribeToContextEvents` upon instantiation if `syncWithContext` is set to `true` and the constructor is passed an instance of `Web3Context` (#5833)
-- Added support of `safe` and `finalized` block tags (#5823)
-
-### Removed
-
-- `decodeErrorData` is no longer exported (method was moved to `web3-eth-abi` and renamed `decodeContractErrorData`) (#5844)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- `input` is now an acceptable property for `ContractInitOptions` in place of `data` (either can be used, but `input` is used withing the `Contract` class) (#5915)
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-### Changed
-
-- `getSendTxParams` will now return `input` instead of `data` in returned transaction parameters object (#5915)
-- `Contract` constructor will now thrown new `ContractTransactionDataAndInputError` if both `data` and `input` are passed in `ContractInitOptions` for `Contract` constructor (#5915)
-- The types `ContractInitOptions`, `NonPayableCallOptions` and `PayableCallOptions` are moved to `web3-types`. (#5993)
-
-### Removed
-
-- `data` was removed as a property of `ContractOptions` type (#5915)
-
-## [4.0.1-rc.2]
-
-### Added
-
-- Added support for `getPastEvents` method to filter `allEvents` and specific event (#6010)
-- Added `maxPriorityFeePerGas` and `maxFeePerGas` in `ContractOptions` type and updated function using it in utils (#6118)
-- Added method's type autodetection by ABI param (#6137)
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Fixed
-
-- Event filtering using non-indexed and indexed string event arguments (#6167)
-
-## [4.0.3]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.4]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.5]
-
-### Fixed
-
-- Fixed bug in `contract.events.allEvents`
-
-### Added
-
-- In case of error events there will be inner error also available for details
-
-## [4.1.0]
-
-### Added
-
-- Added `dataInputFill` as a ContractInitOption, allowing users to have the choice using property `data`, `input` or `both` for contract methods to be sent to the RPC provider. (#6355)
-- Added to `Web3Config` property `contractDataInputFill` allowing users to have the choice using property `data`, `input` or `both` for contract methods to be sent to the RPC provider when creating contracts. (#6377)
-
-
-## [Unreleased]
\ No newline at end of file
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
\ No newline at end of file
diff --git a/packages/web3-zond-contract/README.md b/packages/web3-zond-contract/README.md
index ed1517e4..e0b4dfde 100644
--- a/packages/web3-zond-contract/README.md
+++ b/packages/web3-zond-contract/README.md
@@ -2,7 +2,7 @@
-# web3.js - Eth Contract Package
+# web3.js - Zond Contract Package


@@ -11,7 +11,7 @@
This is a sub-package of [web3.js][repo].
-`web3-eth-contract` contains the contract package used in `web3-eth`.
+`web3-zond-contract` contains the contract package used in `web3-zond`.
## Installation
@@ -20,13 +20,13 @@ You can install the package either using [NPM](https://www.npmjs.com/package/web
### Using NPM
```bash
-npm install web3-eth-contract
+npm install web3-zond-contract
```
### Using Yarn
```bash
-yarn add web3-eth-contract
+yarn add web3-zond-contract
```
## Getting Started
@@ -51,14 +51,14 @@ const abi = [...] as const;
const contract = new Contract(abi);
```
-- We prefer that you use `web3.eth.Contract` API in normal usage.
+- We prefer that you use `web3.zond.Contract` API in normal usage.
- The use of `as const` is necessary to have fully type-safe interface for the contract.
- As the ABIs are not extensive in size, we suggest declaring them `as const` in your TS project.
- This approach is more flexible and seamless compared to other approaches of off-line compiling ABIs to TS interfaces (such as [TypeChain](https://github.com/dethcrypto/TypeChain).
## Compatibility
-We have tested the Typescript interface support for the ABIs compiled with solidity version `v0.4.x` and above. If you face any issue regarding the contract typing, please create an issue to report to us.
+We have tested the Typescript interface support for the ABIs compiled with hyperion version `v0.4.x` and above. If you face any issue regarding the contract typing, please create an issue to report to us.
The Typescript support for fixed length array types are supported up 30 elements. See more details [here](https://github.com/ChainSafe/web3.js/blob/nh%2F4562-contract-typing/packages/web3-eth-abi/src/number_map_type.ts#L1). This limitation is only to provide more performant developer experience in IDEs. In future we may come up with a workaround to avoid this limitation. If you have any idea feel free to share.
diff --git a/packages/web3-zond-contract/package.json b/packages/web3-zond-contract/package.json
index 4f7a3115..dd07b777 100644
--- a/packages/web3-zond-contract/package.json
+++ b/packages/web3-zond-contract/package.json
@@ -1,10 +1,10 @@
{
"name": "@theqrl/web3-zond-contract",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
- "description": "Web3 module to interact with Ethereum smart contracts.",
+ "description": "Web3 module to interact with Zond smart contracts.",
"main": "./lib/commonjs/index.js",
"module": "./lib/esm/index.js",
"exports": {
@@ -14,7 +14,7 @@
"require": "./lib/commonjs/index.js"
}
},
- "repository": "https://github.com/ethereum/web3.js/tree/4.x/packages/web3-eth-contract",
+ "repository": "https://github.com/theQRL/web3.js/tree/main/packages/web3-zond-contract",
"author": "ChainSafe Systems",
"license": "LGPL-3.0",
"engines": {
@@ -48,18 +48,18 @@
"test:e2e:firefox": "npx cypress run --headless --browser firefox --env grep='ignore',invert=true"
},
"dependencies": {
- "@theqrl/web3-core": "^0.2.1",
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1",
- "@theqrl/web3-validator": "^0.2.1",
- "@theqrl/web3-zond": "^0.2.1",
- "@theqrl/web3-zond-abi": "^0.2.1"
+ "@theqrl/web3-core": "^0.3.0",
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-utils": "^0.3.0",
+ "@theqrl/web3-validator": "^0.3.0",
+ "@theqrl/web3-zond": "^0.3.0",
+ "@theqrl/web3-zond-abi": "^0.3.0"
},
"devDependencies": {
"@humeris/espresso-shot": "^4.0.0",
- "@theqrl/eslint-config-base-web3": "^0.2.1",
- "@theqrl/web3-zond-accounts": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
+ "@theqrl/web3-zond-accounts": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
diff --git a/packages/web3-zond-contract/src/contract.ts b/packages/web3-zond-contract/src/contract.ts
index fe5a8764..ee07c2fd 100644
--- a/packages/web3-zond-contract/src/contract.ts
+++ b/packages/web3-zond-contract/src/contract.ts
@@ -195,20 +195,22 @@ export class Contract
implements Web3EventEmitter>
{
/**
- * The options `object` for the contract instance. `from`, `gas` and `gasPrice` are used as fallback values when sending transactions.
+ * The options `object` for the contract instance. `from`, `gas`, `maxFeePerGas` and `maxPriorityFeePerGas` are used as fallback values when sending transactions.
*
* ```ts
* myContract.options;
* > {
- * address: '0x1234567890123456789012345678901234567891',
+ * address: 'Z1234567890123456789012345678901234567891',
* jsonInterface: [...],
- * from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
- * gasPrice: '10000000000000',
+ * from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
+ * maxFeePerGas: '10000000000000',
+ * maxPriorityFeePerGas: '0',
* gas: 1000000
* }
*
- * myContract.options.from = '0x1234567890123456789012345678901234567891'; // default from address
- * myContract.options.gasPrice = '20000000000000'; // default gas price in wei
+ * myContract.options.from = 'Z1234567890123456789012345678901234567891'; // default from address
+ * myContract.options.maxFeePerGas = '20000000000000'; // default max fee per gas in wei
+ * myContract.options.maxPriorityFeePerGas = '0'; // default max priority fee per gas in wei
* myContract.options.gas = 5000000; // provide as fallback always 5M gas
* ```
*/
@@ -256,9 +258,9 @@ export class Contract
* @returns - The contract instance with all its methods and events.
*
* ```ts title="Example"
- * var myContract = new web3.zond.Contract([...], '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe', {
- * from: '0x1234567890123456789012345678901234567891', // default from address
- * gasPrice: '20000000000' // default gas price in wei, 20 gwei in this case
+ * var myContract = new web3.zond.Contract([...], 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe', {
+ * from: 'Z1234567890123456789012345678901234567891', // default from address
+ * maxFeePerGas: '20000000000' // default max fee per gas in wei, 20 gwei in this case
* });
* ```
*
@@ -266,7 +268,7 @@ export class Contract
*
* ```ts title="Example"
* const myContractAbi = [....] as const; // ABI definitions
- * const myContract = new web3.zond.Contract(myContractAbi, '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe');
+ * const myContract = new web3.zond.Contract(myContractAbi, 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe');
* ```
*/
public constructor(
@@ -388,7 +390,8 @@ export class Contract
address,
jsonInterface: this._jsonInterface,
gas: options?.gas ?? options?.gasLimit,
- gasPrice: options?.gasPrice,
+ maxFeePerGas: options?.maxFeePerGas,
+ maxPriorityFeePerGas: options?.maxPriorityFeePerGas,
from: options?.from,
input: options?.input,
data: options?.data,
@@ -443,13 +446,13 @@ export class Contract
*
* ```ts
* // calling a method
- * const result = await myContract.methods.myMethod(123).call({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
+ * const result = await myContract.methods.myMethod(123).call({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
*
* // or sending and using a promise
- * const receipt = await myContract.methods.myMethod(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
+ * const receipt = await myContract.methods.myMethod(123).send({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
*
* // or sending and using the events
- * const sendObject = myContract.methods.myMethod(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
+ * const sendObject = myContract.methods.myMethod(123).send({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
* sendObject.on('transactionHash', function(hash){
* ...
* });
@@ -476,7 +479,7 @@ export class Contract
* @returns - The new contract instance.
*
* ```ts
- * const contract1 = new zond.Contract(abi, address, {gasPrice: '12345678', from: fromAddress});
+ * const contract1 = new zond.Contract(abi, address, {maxFeePerGas: '12345678', maxPriorityFeePerGas: '0', from: fromAddress});
*
* const contract2 = contract1.clone();
* contract2.options.address = address2;
@@ -493,7 +496,8 @@ export class Contract
this.options.address,
{
gas: this.options.gas,
- gasPrice: this.options.gasPrice,
+ maxFeePerGas: this.options.maxFeePerGas,
+ maxPriorityFeePerGas: this.options.maxPriorityFeePerGas,
from: this.options.from,
input: this.options.input,
data: this.options.data,
@@ -508,7 +512,8 @@ export class Contract
[...this._jsonInterface, ...this._errorsInterface] as unknown as Abi,
{
gas: this.options.gas,
- gasPrice: this.options.gasPrice,
+ maxFeePerGas: this.options.maxFeePerGas,
+ maxPriorityFeePerGas: this.options.maxPriorityFeePerGas,
from: this.options.from,
input: this.options.input,
data: this.options.data,
@@ -533,9 +538,10 @@ export class Contract
* arguments: [123, 'My String']
* })
* .send({
- * from: '0x1234567890123456789012345678901234567891',
+ * from: 'Z1234567890123456789012345678901234567891',
* gas: 1500000,
- * gasPrice: '30000000000000'
+ * maxFeePerGas: '30000000000000',
+ * maxPriorityFeePerGas: '0'
* }, function(error, transactionHash){ ... })
* .on('error', function(error){ ... })
* .on('transactionHash', function(transactionHash){ ... })
@@ -555,9 +561,10 @@ export class Contract
* arguments: [123, 'My String']
* })
* .send({
- * from: '0x1234567890123456789012345678901234567891',
+ * from: 'Z1234567890123456789012345678901234567891',
* gas: 1500000,
- * gasPrice: '30000000000000'
+ * maxFeePerGas: '30000000000000',
+ * maxPriorityFeePerGas: '0',
* })
* .then(function(newContractInstance){
* console.log(newContractInstance.options.address) // instance with the new contract address
@@ -692,7 +699,7 @@ export class Contract
* transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
* blockHash: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
* blockNumber: 1234,
- * address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ * address: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
* },{
* ...
* }]
diff --git a/packages/web3-zond-contract/src/encoding.ts b/packages/web3-zond-contract/src/encoding.ts
index 407ad186..f24a1fdb 100644
--- a/packages/web3-zond-contract/src/encoding.ts
+++ b/packages/web3-zond-contract/src/encoding.ts
@@ -113,7 +113,7 @@ export const encodeEventABI = (
if (!opts.topics.length) delete opts.topics;
if (address) {
- opts.address = address.toLowerCase();
+ opts.address = `Z${address.slice(1).toLowerCase()}`
}
return opts;
diff --git a/packages/web3-zond-contract/src/log_subscription.ts b/packages/web3-zond-contract/src/log_subscription.ts
index 2813a44d..b6a4c4a8 100644
--- a/packages/web3-zond-contract/src/log_subscription.ts
+++ b/packages/web3-zond-contract/src/log_subscription.ts
@@ -72,7 +72,7 @@ import { EventLog, ContractAbiWithSignature } from './types.js';
* transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
* blockHash: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
* blockNumber: 1234,
- * address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ * address: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
* }
* ```
*/
@@ -112,19 +112,6 @@ export class LogsSubscription extends Web3Subscription<
},
options: { subscriptionManager: Web3SubscriptionManager; returnFormat?: DataFormat },
);
- /**
- * @deprecated This constructor overloading should not be used
- */
- public constructor(
- args: {
- address?: HexString;
- // eslint-disable-next-line @typescript-eslint/ban-types
- topics?: (Topic | Topic[] | null)[];
- abi: AbiEventFragment & { signature: HexString };
- jsonInterface: ContractAbiWithSignature;
- },
- options: { requestManager: Web3RequestManager; returnFormat?: DataFormat },
- );
public constructor(
args: {
address?: HexString;
diff --git a/packages/web3-zond-contract/src/types.ts b/packages/web3-zond-contract/src/types.ts
index 64a71e72..d44aa4fa 100644
--- a/packages/web3-zond-contract/src/types.ts
+++ b/packages/web3-zond-contract/src/types.ts
@@ -80,10 +80,6 @@ export interface ContractOptions {
* The maximum gas provided for a transaction (gas limit).
*/
readonly gas?: Uint;
- /**
- * The gas price in wei to use for transactions.
- */
- readonly gasPrice?: Uint;
/**
* The address transactions should be made from.
*/
@@ -132,10 +128,10 @@ export interface ContractOptions {
*
* ```ts
* myContract.options.address;
- * > '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae'
+ * > 'Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae'
*
* // set a new address
- * myContract.options.address = '0x1234FFDD...';
+ * myContract.options.address = 'Z1234FFDD...';
* ```
*/
address?: Address; // All transactions generated by web3.js from this contract will contain this address as the "to".
@@ -152,14 +148,14 @@ export interface ContractOptions {
export interface NonPayableMethodObject {
arguments: Inputs;
/**
- * This will call a method and execute its smart contract method in the EVM without sending any transaction. Note calling cannot alter the smart contract state.
+ * This will call a method and execute its smart contract method in the ZVM without sending any transaction. Note calling cannot alter the smart contract state.
*
* ```ts
* // using the promise
- * const result = await myContract.methods.myMethod(123).call({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
+ * const result = await myContract.methods.myMethod(123).call({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
*
* // MULTI-ARGUMENT RETURN:
- * // Solidity
+ * // Hyperion
* contract MyContract {
* function myFunction() returns(uint256 myNumber, string myString) {
* return (23456, "Hello!%");
@@ -179,7 +175,7 @@ export interface NonPayableMethodObject
*
*
* // SINGLE-ARGUMENT RETURN:
- * // Solidity
+ * // Hyperion
* contract MyContract {
* function myFunction() returns(string myString) {
* return "Hello!%";
@@ -207,13 +203,13 @@ export interface NonPayableMethodObject
* This will send a transaction to the smart contract and execute its method. Note this can alter the smart contract state.
*
* ```ts
- * await myContract.methods.myMethod(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
+ * await myContract.methods.myMethod(123).send({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
*
- * const receipt = await myContract.methods.myMethod(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
+ * const receipt = await myContract.methods.myMethod(123).send({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
*
*
* // using the event emitter
- * const sendObj = myContract.methods.myMethod(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
+ * const sendObj = myContract.methods.myMethod(123).send({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
* sendObj.on('transactionHash', function(hash){
* ...
* });
@@ -230,7 +226,7 @@ export interface NonPayableMethodObject
* "transactionIndex": 0,
* "blockHash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
* "blockNumber": 3,
- * "contractAddress": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe",
+ * "contractAddress": "Z11f4d0A3c12e86B4b5F39B213F7E19D048276DAe",
* "cumulativeGasUsed": 314159,
* "gasUsed": 30234,
* "events": {
@@ -251,7 +247,7 @@ export interface NonPayableMethodObject
* transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
* blockHash: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
* blockNumber: 1234,
- * address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ * address: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
* },
* "MyOtherEvent": {
* ...
@@ -298,7 +294,7 @@ export interface NonPayableMethodObject
): Promise>;
/**
- * Encodes the ABI for this method. The resulting hex string is 32-bit function signature hash plus the passed parameters in Solidity tightly packed format.
+ * Encodes the ABI for this method. The resulting hex string is 32-bit function signature hash plus the passed parameters in Hyperion tightly packed format.
* This can be used to send a transaction, call a method, or pass it into another smart contract’s method as arguments.
* Set the data field on `web3.zond.sendTransaction` options as the encodeABI() result and it is the same as calling the contract method with `contract.myMethod.send()`.
*
@@ -323,7 +319,7 @@ export interface NonPayableMethodObject
* > {
* "accessList": [
* {
- * "address": "0x15859bdf5aff2080a9968f6a410361e9598df62f",
+ * "address": "Z15859bdf5aff2080a9968f6a410361e9598df62f",
* "storageKeys": [
* "0x0000000000000000000000000000000000000000000000000000000000000000"
* ]
@@ -342,14 +338,14 @@ export interface NonPayableMethodObject
export interface PayableMethodObject {
arguments: Inputs;
/**
- * Will call a method and execute its smart contract method in the EVM without sending any transaction. Note calling cannot alter the smart contract state.
+ * Will call a method and execute its smart contract method in the ZVM without sending any transaction. Note calling cannot alter the smart contract state.
*
* ```ts
* // using the promise
- * const result = await myContract.methods.myMethod(123).call({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
+ * const result = await myContract.methods.myMethod(123).call({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
*
* // MULTI-ARGUMENT RETURN:
- * // Solidity
+ * // Hyperion
* contract MyContract {
* function myFunction() returns(uint256 myNumber, string myString) {
* return (23456, "Hello!%");
@@ -369,7 +365,7 @@ export interface PayableMethodObject {
*
*
* // SINGLE-ARGUMENT RETURN:
- * // Solidity
+ * // Hyperion
* contract MyContract {
* function myFunction() returns(string myString) {
* return "Hello!%";
@@ -396,13 +392,13 @@ export interface PayableMethodObject {
* Will send a transaction to the smart contract and execute its method. Note this can alter the smart contract state.
*
* ```ts
- * await myContract.methods.myMethod(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
+ * await myContract.methods.myMethod(123).send({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
*
- * const receipt = await myContract.methods.myMethod(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
+ * const receipt = await myContract.methods.myMethod(123).send({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'});
*
*
* // using the event emitter
- * const sendObj = myContract.methods.myMethod(123).send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
+ * const sendObj = myContract.methods.myMethod(123).send({from: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
* sendObj.on('transactionHash', function(hash){
* ...
* });
@@ -419,7 +415,7 @@ export interface PayableMethodObject {
* "transactionIndex": 0,
* "blockHash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
* "blockNumber": 3,
- * "contractAddress": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe",
+ * "contractAddress": "Z11f4d0A3c12e86B4b5F39B213F7E19D048276DAe",
* "cumulativeGasUsed": 314159,
* "gasUsed": 30234,
* "events": {
@@ -440,7 +436,7 @@ export interface PayableMethodObject {
* transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
* blockHash: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
* blockNumber: 1234,
- * address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ * address: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
* },
* "MyOtherEvent": {
* ...
@@ -487,7 +483,7 @@ export interface PayableMethodObject {
): Promise>;
/**
- * Encodes the ABI for this method. The resulting hex string is 32-bit function signature hash plus the passed parameters in Solidity tightly packed format.
+ * Encodes the ABI for this method. The resulting hex string is 32-bit function signature hash plus the passed parameters in Hyperion tightly packed format.
* This can be used to send a transaction, call a method, or pass it into another smart contract’s method as arguments.
* Set the data field on `web3.zond.sendTransaction` options as the encodeABI() result and it is the same as calling the contract method with `contract.myMethod.send()`.
*
@@ -512,7 +508,7 @@ export interface PayableMethodObject {
* > {
* "accessList": [
* {
- * "address": "0x15859bdf5aff2080a9968f6a410361e9598df62f",
+ * "address": "Z15859bdf5aff2080a9968f6a410361e9598df62f",
* "storageKeys": [
* "0x0000000000000000000000000000000000000000000000000000000000000000"
* ]
diff --git a/packages/web3-zond-contract/src/utils.ts b/packages/web3-zond-contract/src/utils.ts
index aad47de6..b76a0fc3 100644
--- a/packages/web3-zond-contract/src/utils.ts
+++ b/packages/web3-zond-contract/src/utils.ts
@@ -81,7 +81,6 @@ export const getSendTxParams = ({
{
to: contractOptions.address,
gas: contractOptions.gas,
- gasPrice: contractOptions.gasPrice,
from: contractOptions.from,
input: contractOptions.input,
maxPriorityFeePerGas: contractOptions.maxPriorityFeePerGas,
@@ -117,7 +116,6 @@ export const getZondTxCallParams = ({
{
to: contractOptions.address,
gas: contractOptions.gas,
- gasPrice: contractOptions.gasPrice,
from: contractOptions.from,
input: contractOptions.input,
maxPriorityFeePerGas: contractOptions.maxPriorityFeePerGas,
@@ -150,7 +148,8 @@ export const getEstimateGasParams = ({
{
to: contractOptions.address,
gas: contractOptions.gas,
- gasPrice: contractOptions.gasPrice,
+ maxFeePerGas: contractOptions.maxFeePerGas,
+ maxPriorityFeePerGas: contractOptions.maxPriorityFeePerGas,
from: contractOptions.from,
input: contractOptions.input,
data: contractOptions.data,
@@ -172,7 +171,8 @@ export const isContractInitOptions = (options: unknown): options is ContractInit
'data',
'from',
'gas',
- 'gasPrice',
+ 'maxFeePerGas',
+ 'maxPriorityFeePerGas',
'gasLimit',
'address',
'jsonInterface',
@@ -209,7 +209,6 @@ export const getCreateAccessListParams = ({
{
to: contractOptions.address,
gas: contractOptions.gas,
- gasPrice: contractOptions.gasPrice,
from: contractOptions.from,
input: contractOptions.input,
maxPriorityFeePerGas: contractOptions.maxPriorityFeePerGas,
diff --git a/packages/web3-zond-contract/test/fixtures/contracts/SampleStorageContract.sol b/packages/web3-zond-contract/test/fixtures/contracts/SampleStorageContract.hyp
similarity index 93%
rename from packages/web3-zond-contract/test/fixtures/contracts/SampleStorageContract.sol
rename to packages/web3-zond-contract/test/fixtures/contracts/SampleStorageContract.hyp
index 617c3732..841d3993 100644
--- a/packages/web3-zond-contract/test/fixtures/contracts/SampleStorageContract.sol
+++ b/packages/web3-zond-contract/test/fixtures/contracts/SampleStorageContract.hyp
@@ -15,7 +15,8 @@ You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
-pragma solidity ^0.8.7;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion ^0.8.7;
contract SampleStorageContract {
uint256 uintNum;
diff --git a/packages/web3-zond-contract/test/fixtures/contracts/SimpleOverloaded.sol b/packages/web3-zond-contract/test/fixtures/contracts/SimpleOverloaded.hyp
similarity index 94%
rename from packages/web3-zond-contract/test/fixtures/contracts/SimpleOverloaded.sol
rename to packages/web3-zond-contract/test/fixtures/contracts/SimpleOverloaded.hyp
index 3aa74fa0..28bc9698 100644
--- a/packages/web3-zond-contract/test/fixtures/contracts/SimpleOverloaded.sol
+++ b/packages/web3-zond-contract/test/fixtures/contracts/SimpleOverloaded.hyp
@@ -1,4 +1,5 @@
-pragma solidity 0.8.19;
+// TODO(now.youtrack.cloud/issue/web3js-11)
+pragma hyperion 0.8.19;
contract SimpleOverload {
uint256 public secret;
diff --git a/packages/web3-zond-contract/test/fixtures/unitTestFixtures.ts b/packages/web3-zond-contract/test/fixtures/unitTestFixtures.ts
index 1316e0f6..2c6f9204 100644
--- a/packages/web3-zond-contract/test/fixtures/unitTestFixtures.ts
+++ b/packages/web3-zond-contract/test/fixtures/unitTestFixtures.ts
@@ -29,7 +29,7 @@ export const getLogsData = {
transactionHash: '0xbe70733bcf87282c0ba9bf3c0e2d545084fad48bd571c314140c8dc1db882673',
blockHash: '0x78755c18c9a0a1283fa04b2f78c7794c249395b08f7f7dff304034d64d6a1607',
blockNumber: 25,
- address: '0x2D029a4bd792d795f35e0583F64eD9DedeBBa849',
+ address: 'Z2D029a4bd792d795f35e0583F64eD9DedeBBa849',
data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000548656c6c6f000000000000000000000000000000000000000000000000000000',
topics: ['0x7d7846723bda52976e0286c6efffee937ee9f76817a867ec70531ad29fb1fc0e'],
type: 'mined',
@@ -47,7 +47,7 @@ export const getPastEventsData = {
transactionHash: '0xbe70733bcf87282c0ba9bf3c0e2d545084fad48bd571c314140c8dc1db882673',
blockHash: '0x78755c18c9a0a1283fa04b2f78c7794c249395b08f7f7dff304034d64d6a1607',
blockNumber: BigInt(25),
- address: '0x2D029a4bd792d795f35e0583F64eD9DedeBBa849',
+ address: 'Z2D029a4bd792d795f35e0583F64eD9DedeBBa849',
data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000548656c6c6f000000000000000000000000000000000000000000000000000000',
topics: ['0x7d7846723bda52976e0286c6efffee937ee9f76817a867ec70531ad29fb1fc0e'],
returnValues: {
@@ -73,7 +73,7 @@ export const AllGetPastEventsData = {
transactionHash: '0x1ba478ce1810bfa8a0725c0ca94f3cfe163a70c396037a1f3c94cad34e497959',
blockHash: '0x79eece1fb22b7109f302b65bd826b1cebf9f704642e86ae9086ed93baf44a45e',
blockNumber: 20,
- address: '0x20bc23D0598b12c34cBDEf1fae439Ba8744DB426',
+ address: 'Z20bc23D0598b12c34cBDEf1fae439Ba8744DB426',
data: '0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000548656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010416e6f74686572204772656574696e6700000000000000000000000000000000',
topics: ['0x0d363f2fba46ab11b6db8da0125b0d5484787c44e265b48810735998bab12b75'],
type: 'mined',
@@ -85,7 +85,7 @@ export const AllGetPastEventsData = {
transactionHash: '0x1ba478ce1810bfa8a0725c0ca94f3cfe163a70c396037a1f3c94cad34e497959',
blockHash: '0x79eece1fb22b7109f302b65bd826b1cebf9f704642e86ae9086ed93baf44a45e',
blockNumber: 20,
- address: '0x20bc23D0598b12c34cBDEf1fae439Ba8744DB426',
+ address: 'Z20bc23D0598b12c34cBDEf1fae439Ba8744DB426',
data: '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010416e6f74686572204772656574696e6700000000000000000000000000000000',
topics: ['0x7d7846723bda52976e0286c6efffee937ee9f76817a867ec70531ad29fb1fc0e'],
type: 'mined',
@@ -100,7 +100,7 @@ export const AllGetPastEventsData = {
transactionHash: '0x1ba478ce1810bfa8a0725c0ca94f3cfe163a70c396037a1f3c94cad34e497959',
blockHash: '0x79eece1fb22b7109f302b65bd826b1cebf9f704642e86ae9086ed93baf44a45e',
blockNumber: BigInt(20),
- address: '0x20bc23D0598b12c34cBDEf1fae439Ba8744DB426',
+ address: 'Z20bc23D0598b12c34cBDEf1fae439Ba8744DB426',
data: '0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000548656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010416e6f74686572204772656574696e6700000000000000000000000000000000',
topics: ['0x0d363f2fba46ab11b6db8da0125b0d5484787c44e265b48810735998bab12b75'],
returnValues: {
@@ -123,7 +123,7 @@ export const AllGetPastEventsData = {
transactionHash: '0x1ba478ce1810bfa8a0725c0ca94f3cfe163a70c396037a1f3c94cad34e497959',
blockHash: '0x79eece1fb22b7109f302b65bd826b1cebf9f704642e86ae9086ed93baf44a45e',
blockNumber: BigInt(20),
- address: '0x20bc23D0598b12c34cBDEf1fae439Ba8744DB426',
+ address: 'Z20bc23D0598b12c34cBDEf1fae439Ba8744DB426',
data: '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010416e6f74686572204772656574696e6700000000000000000000000000000000',
topics: ['0x7d7846723bda52976e0286c6efffee937ee9f76817a867ec70531ad29fb1fc0e'],
returnValues: {
diff --git a/packages/web3-zond-contract/test/integration/contract_accesslist.test.ts b/packages/web3-zond-contract/test/integration/contract_accesslist.test.ts
index 48f6cbd0..86f150cd 100644
--- a/packages/web3-zond-contract/test/integration/contract_accesslist.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_accesslist.test.ts
@@ -23,6 +23,7 @@ import {
describeIf,
getSystemTestBackend,
} from '../fixtures/system_test_utils';
+import { isNullish } from '@theqrl/web3-utils';
describe('contract', () => {
describeIf(getSystemTestBackend() === 'gzond')('createAccessList', () => {
@@ -42,7 +43,7 @@ describe('contract', () => {
arguments: ['My Greeting'],
};
- sendOptions = { from: acc.address, /*gas: '1000000'*/ type: 2 };
+ sendOptions = { from: acc.address, /*gas: '1000000'*/ };
});
it('create access list for setter', async () => {
@@ -51,7 +52,7 @@ describe('contract', () => {
const receipt = await deployedContract.methods
.setGreeting('New Greeting')
- .send({ gas: '1000000', type: 2 });
+ .send({ gas: '1000000' });
expect(receipt.from).toEqual(acc.address);
const accessList = await deployedContract.methods
@@ -61,7 +62,7 @@ describe('contract', () => {
const accessListResult = {
accessList: [
{
- address: deployedContract.options.address?.toLowerCase(),
+ address: isNullish(deployedContract.options.address) ? deployedContract.options.address : `Z${deployedContract.options.address.slice(1).toLowerCase()}`,
storageKeys: [
'0x0000000000000000000000000000000000000000000000000000000000000001',
],
@@ -79,7 +80,7 @@ describe('contract', () => {
const receipt = await deployedContract.methods
.setGreeting('New Greeting')
- .send({ gas: '1000000', type: 2 });
+ .send({ gas: '1000000' });
expect(receipt.from).toEqual(acc.address);
const accessList = await deployedContract.methods.greet().createAccessList();
@@ -87,7 +88,7 @@ describe('contract', () => {
const accessListResult = {
accessList: [
{
- address: deployedContract.options.address?.toLowerCase(),
+ address: isNullish(deployedContract.options.address) ? deployedContract.options.address : `Z${deployedContract.options.address.slice(1).toLowerCase()}`,
storageKeys: [
'0x0000000000000000000000000000000000000000000000000000000000000001',
],
diff --git a/packages/web3-zond-contract/test/integration/contract_clone.test.ts b/packages/web3-zond-contract/test/integration/contract_clone.test.ts
index 82ec5de1..e17f30ee 100644
--- a/packages/web3-zond-contract/test/integration/contract_clone.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_clone.test.ts
@@ -34,7 +34,7 @@ describe('contract', () => {
arguments: ['My Greeting'],
};
- sendOptions = { from: acc.address, /*gas: '1000000'*/ type: 2 };
+ sendOptions = { from: acc.address, /*gas: '1000000'*/ };
});
it('should clone the contract but with same address', async () => {
diff --git a/packages/web3-zond-contract/test/integration/contract_defaults.test.ts b/packages/web3-zond-contract/test/integration/contract_defaults.test.ts
index 1f06f663..9aefe0be 100644
--- a/packages/web3-zond-contract/test/integration/contract_defaults.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_defaults.test.ts
@@ -40,7 +40,7 @@ describe('contract', () => {
arguments: ['My Greeting'],
};
- sendOptions = { from: acc.address, gas: '1000000', type: 2 };
+ sendOptions = { from: acc.address, gas: '1000000' };
});
it('should use "defaultAccount" on "instance" level instead of "from"', async () => {
@@ -50,14 +50,14 @@ describe('contract', () => {
// We didn't specify "from" in this call
const receipt = await deployedContract.methods
.setGreeting('New Greeting')
- .send({ gas: '1000000', type: 2 });
+ .send({ gas: '1000000' });
expect(receipt.from).toEqual(acc.address);
});
it('should throw error when "from" is not set on any level', () => {
contract.defaultAccount = undefined;
- expect(() => contract.deploy(deployOptions).send({ gas: '1000000', type: 2 })).toThrow(
+ expect(() => contract.deploy(deployOptions).send({ gas: '1000000' })).toThrow(
'Contract "from" address not specified',
);
});
diff --git a/packages/web3-zond-contract/test/integration/contract_defaults_extra.test.ts b/packages/web3-zond-contract/test/integration/contract_defaults_extra.test.ts
index 26757750..806260ec 100644
--- a/packages/web3-zond-contract/test/integration/contract_defaults_extra.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_defaults_extra.test.ts
@@ -56,7 +56,7 @@ describe('contract defaults (extra)', () => {
arguments: ['My Greeting'],
};
- sendOptions = { from: acc.address, /*gas: '1000000'*/ type: 2 };
+ sendOptions = { from: acc.address, /*gas: '1000000'*/ };
});
afterEach(async () => {
@@ -128,7 +128,7 @@ describe('contract defaults (extra)', () => {
const common = {
customChain: { name: 'testnet', networkId: '1337', chainId: '1337' },
baseChain,
- hardfork: 'london' as Hardfork,
+ hardfork: 'shanghai' as Hardfork,
};
beforeEach(async () => {
@@ -142,7 +142,7 @@ describe('contract defaults (extra)', () => {
arguments: ['My Greeting'],
};
- sendOptions = { from: acc.address, /*gas: '1000000'*/ type: 2 };
+ sendOptions = { from: acc.address, /*gas: '1000000'*/ };
contract = await contract.deploy(deployOptions).send(sendOptions);
});
diff --git a/packages/web3-zond-contract/test/integration/contract_deploy.test.ts b/packages/web3-zond-contract/test/integration/contract_deploy.test.ts
index 1c14948e..b6b7c588 100644
--- a/packages/web3-zond-contract/test/integration/contract_deploy.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_deploy.test.ts
@@ -25,7 +25,6 @@ import {
//isWs,
createTempAccount,
createNewAccount,
- signTxAndSendEIP2930,
signTxAndSendEIP1559,
//sendFewSampleTxs,
closeOpenConnection,
@@ -52,14 +51,14 @@ describe('contract', () => {
contract = new Contract(GreeterAbi, undefined, {
provider: getSystemTestProvider(),
});
- sendOptions = { from: acc.address, gas: '1000000', type: 2 };
+ sendOptions = { from: acc.address, gas: '1000000' };
});
afterAll(async () => {
await closeOpenConnection(web3Zond);
});
describe('local account', () => {
- it.each([signTxAndSendEIP1559, signTxAndSendEIP2930])(
+ it.each([signTxAndSendEIP1559])(
'should deploy the contract %p',
async signTxAndSend => {
pkAccount = await createNewAccount({ refill: true });
@@ -76,8 +75,7 @@ describe('contract', () => {
expect(Number(res.status)).toBe(1);
},
);
-
- it.each([signTxAndSendEIP1559, signTxAndSendEIP2930])(
+ it.each([signTxAndSendEIP1559])(
'should deploy the contract with input%p',
async signTxAndSend => {
pkAccount = await createNewAccount({ refill: true });
@@ -158,7 +156,7 @@ describe('contract', () => {
from: acc.address,
gas: '1000000',
});
- const deployedContract = await contract.deploy({ arguments: ['Hello World'] }).send({type: 2});
+ const deployedContract = await contract.deploy({ arguments: ['Hello World'] }).send();
expect(deployedContract).toBeDefined();
});
diff --git a/packages/web3-zond-contract/test/integration/contract_empty_string.test.ts b/packages/web3-zond-contract/test/integration/contract_empty_string.test.ts
index 71f49a2c..a27dd1d5 100644
--- a/packages/web3-zond-contract/test/integration/contract_empty_string.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_empty_string.test.ts
@@ -34,7 +34,7 @@ describe('request empty string from contract', () => {
arguments: [],
};
- sendOptions = { from: acc.address, /*gas: '1000000'*/ type: 2 };
+ sendOptions = { from: acc.address, /*gas: '1000000'*/ };
});
it('should fetch empty string', async () => {
diff --git a/packages/web3-zond-contract/test/integration/contract_erc20.test.ts b/packages/web3-zond-contract/test/integration/contract_erc20.test.ts
index e1e3585d..6e7142dd 100644
--- a/packages/web3-zond-contract/test/integration/contract_erc20.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_erc20.test.ts
@@ -26,9 +26,8 @@ import {
createNewAccount,
refillAccount,
signAndSendContractMethodEIP1559,
- signAndSendContractMethodEIP2930,
} from '../fixtures/system_test_utils';
-import { processAsync, toUpperCaseHex } from '../shared_fixtures/utils';
+import { processAsync, toUpperCaseAddress } from '../shared_fixtures/utils';
const initialSupply = BigInt('5000000000');
@@ -51,7 +50,7 @@ describe('contract', () => {
it('should deploy the contract', async () => {
const acc = await createTempAccount();
- const sendOptionsLocal = { from: acc.address, /*gas: '10000000'*/ type: 2 };
+ const sendOptionsLocal = { from: acc.address, /*gas: '10000000'*/ };
await expect(
contract.deploy(deployOptions).send(sendOptionsLocal),
).resolves.toBeDefined();
@@ -71,7 +70,7 @@ describe('contract', () => {
mainAcc = await createTempAccount();
pkAccount = await createNewAccount();
await refillAccount(mainAcc.address, pkAccount.address, '20000000000000000');
- sendOptions = { from: mainAcc.address, /*gas: '10000000'*/ type: 2 };
+ sendOptions = { from: mainAcc.address, /*gas: '10000000'*/ };
contractDeployed = await contract.deploy(deployOptions).send(sendOptions);
});
describe('methods', () => {
@@ -100,7 +99,7 @@ describe('contract', () => {
value,
);
});
- it.each([signAndSendContractMethodEIP1559, signAndSendContractMethodEIP2930])(
+ it.each([signAndSendContractMethodEIP1559])(
'should transfer tokens with local wallet %p',
async signAndSendContractMethod => {
const value = BigInt(10);
@@ -117,8 +116,7 @@ describe('contract', () => {
).toBe(value);
},
);
-
- it.each([signAndSendContractMethodEIP1559, signAndSendContractMethodEIP2930])(
+ it.each([signAndSendContractMethodEIP1559])(
'should approve and transferFrom tokens with local wallet %p',
async signAndSendContractMethod => {
const value = BigInt(10);
@@ -135,7 +133,7 @@ describe('contract', () => {
expect(res.status).toBe(BigInt(1));
expect(
(res.logs as LogsOutput[])[0].topics[2].endsWith(
- pkAccount.address.substring(2),
+ pkAccount.address.substring(1),
),
).toBe(true);
@@ -162,8 +160,7 @@ describe('contract', () => {
).toBe(value - transferFromValue);
},
);
-
- it.each([signAndSendContractMethodEIP1559, signAndSendContractMethodEIP2930])(
+ it.each([signAndSendContractMethodEIP1559])(
'should approve and transferFrom tokens with local wallet %p',
async signAndSendContractMethod => {
const value = BigInt(10);
@@ -216,8 +213,8 @@ describe('contract', () => {
const event = contractDeployed.events.Transfer();
event.on('data', data => {
resolve({
- from: toUpperCaseHex(data.returnValues.from as string),
- to: toUpperCaseHex(data.returnValues.to as string),
+ from: toUpperCaseAddress(data.returnValues.from as string),
+ to: toUpperCaseAddress(data.returnValues.to as string),
value: data.returnValues.value,
});
});
@@ -227,8 +224,8 @@ describe('contract', () => {
.send(sendOptions);
}),
).resolves.toEqual({
- from: toUpperCaseHex(sendOptions.from as string),
- to: toUpperCaseHex(acc2.address),
+ from: toUpperCaseAddress(sendOptions.from as string),
+ to: toUpperCaseAddress(acc2.address),
value: BigInt(100),
});
});
diff --git a/packages/web3-zond-contract/test/integration/contract_erc721.test.ts b/packages/web3-zond-contract/test/integration/contract_erc721.test.ts
index 4837e8f4..34016504 100644
--- a/packages/web3-zond-contract/test/integration/contract_erc721.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_erc721.test.ts
@@ -24,11 +24,10 @@ import {
isWs,
createTempAccount,
signAndSendContractMethodEIP1559,
- signAndSendContractMethodEIP2930,
createNewAccount,
refillAccount,
} from '../fixtures/system_test_utils';
-import { processAsync, toUpperCaseHex } from '../shared_fixtures/utils';
+import { processAsync, toUpperCaseAddress } from '../shared_fixtures/utils';
describe('contract', () => {
describe('erc721', () => {
@@ -48,7 +47,7 @@ describe('contract', () => {
data: ERC721TokenBytecode,
arguments: [],
};
- sendOptions = { from: acc.address, /*gas: '10000000'*/ type: 2 };
+ sendOptions = { from: acc.address, /*gas: '10000000'*/ };
});
it('should deploy the contract', async () => {
@@ -66,7 +65,7 @@ describe('contract', () => {
});
beforeEach(async () => {
acc2 = await createTempAccount();
- sendOptions = { from: acc.address, /*gas: '10000000'*/ type: 2 };
+ sendOptions = { from: acc.address, /*gas: '10000000'*/ };
contractDeployed = await contract.deploy(deployOptions).send(sendOptions);
});
@@ -87,15 +86,14 @@ describe('contract', () => {
const tokenId = toBigInt(0);
expect(
- toUpperCaseHex(
+ toUpperCaseAddress(
(await contractDeployed.methods
.ownerOf(tokenId)
.call()) as unknown as string,
),
- ).toBe(toUpperCaseHex(tempAccount.address));
+ ).toBe(toUpperCaseAddress(tempAccount.address));
});
-
- it.each([signAndSendContractMethodEIP1559, signAndSendContractMethodEIP2930])(
+ it.each([signAndSendContractMethodEIP1559])(
'should award item with local wallet %p',
async signAndSendContractMethod => {
const tempAccount = await createTempAccount();
@@ -110,16 +108,15 @@ describe('contract', () => {
);
const tokenId = toBigInt(0);
expect(
- toUpperCaseHex(
+ toUpperCaseAddress(
(await contractDeployed.methods
.ownerOf(tokenId)
.call()) as unknown as string,
),
- ).toBe(toUpperCaseHex(tempAccount.address));
+ ).toBe(toUpperCaseAddress(tempAccount.address));
},
);
-
- it.each([signAndSendContractMethodEIP1559, signAndSendContractMethodEIP2930])(
+ it.each([signAndSendContractMethodEIP1559])(
'should transferFrom item with local wallet %p',
async signAndSendContractMethod => {
const tempAccount = await createTempAccount();
@@ -147,16 +144,15 @@ describe('contract', () => {
);
expect(
- toUpperCaseHex(
+ toUpperCaseAddress(
(await contractDeployed.methods
.ownerOf(tokenId)
.call()) as unknown as string,
),
- ).toBe(toUpperCaseHex(tempAccountTo.address));
+ ).toBe(toUpperCaseAddress(tempAccountTo.address));
},
);
-
- it.each([signAndSendContractMethodEIP1559, signAndSendContractMethodEIP2930])(
+ it.each([signAndSendContractMethodEIP1559])(
'should safeTransferFrom item with local wallet %p',
async signAndSendContractMethod => {
const tempAccount = await createTempAccount();
@@ -190,16 +186,15 @@ describe('contract', () => {
);
expect(
- toUpperCaseHex(
+ toUpperCaseAddress(
(await contractDeployed.methods
.ownerOf(tokenId)
.call()) as unknown as string,
),
- ).toBe(toUpperCaseHex(tempAccountTo.address));
+ ).toBe(toUpperCaseAddress(tempAccountTo.address));
},
);
-
- it.each([signAndSendContractMethodEIP1559, signAndSendContractMethodEIP2930])(
+ it.each([signAndSendContractMethodEIP1559])(
'should approve item with local wallet %p',
async signAndSendContractMethod => {
const tempAccount = await createTempAccount();
@@ -228,8 +223,7 @@ describe('contract', () => {
);
},
);
-
- it.each([signAndSendContractMethodEIP1559, signAndSendContractMethodEIP2930])(
+ it.each([signAndSendContractMethodEIP1559])(
'should set approve for all item with local wallet %p',
async signAndSendContractMethod => {
const tempAccount = await createTempAccount();
@@ -283,8 +277,8 @@ describe('contract', () => {
const event = contractDeployed.events.Transfer();
event.on('data', data => {
resolve({
- from: toUpperCaseHex(data.returnValues.from as string),
- to: toUpperCaseHex(data.returnValues.to as string),
+ from: toUpperCaseAddress(data.returnValues.from as string),
+ to: toUpperCaseAddress(data.returnValues.to as string),
tokenId: data.returnValues.tokenId,
});
});
@@ -294,8 +288,8 @@ describe('contract', () => {
.send(sendOptions);
}),
).resolves.toEqual({
- from: '0x0000000000000000000000000000000000000000',
- to: toUpperCaseHex(acc2.address),
+ from: 'Z0000000000000000000000000000000000000000',
+ to: toUpperCaseAddress(acc2.address),
tokenId: BigInt(0),
});
});
diff --git a/packages/web3-zond-contract/test/integration/contract_events.test.ts b/packages/web3-zond-contract/test/integration/contract_events.test.ts
index 730855a3..6f029f51 100644
--- a/packages/web3-zond-contract/test/integration/contract_events.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_events.test.ts
@@ -46,7 +46,7 @@ describe('contract', () => {
arguments: [10, 'string init value'],
};
- sendOptions = { from: acc.address, /*gas: '1000000'*/ type: 2 };
+ sendOptions = { from: acc.address, /*gas: '1000000'*/ };
contractDeployed = await contract.deploy(deployOptions).send(sendOptions);
});
@@ -212,7 +212,7 @@ describe('contract', () => {
expect(
await contractDeployed.getPastEvents('MultiValueEvent', {
fromBlock: 0,
- toBlock: 1000,
+ toBlock: 10000,
}),
).toHaveLength(2);
});
@@ -227,7 +227,7 @@ describe('contract', () => {
expect(
await contractDeployed.getPastEvents('MultiValueEvent', {
fromBlock: '0',
- toBlock: '1000',
+ toBlock: '10000',
}),
).toHaveLength(2);
});
@@ -242,7 +242,7 @@ describe('contract', () => {
expect(
await contractDeployed.getPastEvents('MultiValueEvent', {
fromBlock: BigInt(0),
- toBlock: BigInt(1000),
+ toBlock: BigInt(10000),
}),
).toHaveLength(2);
});
diff --git a/packages/web3-zond-contract/test/integration/contract_filter_events.test.ts b/packages/web3-zond-contract/test/integration/contract_filter_events.test.ts
index 219bea65..32cfdff6 100644
--- a/packages/web3-zond-contract/test/integration/contract_filter_events.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_filter_events.test.ts
@@ -49,7 +49,7 @@ describe('contract getPastEvent filter', () => {
arguments: [initialSupply],
};
mainAcc = await createTempAccount();
- sendOptions = { from: mainAcc.address, /*gas: '10000000'*/ type: 2 };
+ sendOptions = { from: mainAcc.address, /*gas: '10000000'*/ };
contractDeployed = await contract.deploy(deployOptions).send(sendOptions);
toAcc1 = await createNewAccount();
toAcc2 = await createNewAccount();
@@ -172,7 +172,7 @@ describe('contract getPastEvent filter', () => {
arguments: [123, '123'],
};
mainAcc = await createTempAccount();
- sendOptions = { from: mainAcc.address, /*gas: '10000000'*/ type: 2 };
+ sendOptions = { from: mainAcc.address, /*gas: '10000000'*/ };
contractDeployed = await contract.deploy(deployOptions).send(sendOptions);
await contractDeployed.methods
.firesMultiValueIndexedEvent('str1', 1, true)
diff --git a/packages/web3-zond-contract/test/integration/contract_methods.test.ts b/packages/web3-zond-contract/test/integration/contract_methods.test.ts
index c6370152..c41cf24d 100644
--- a/packages/web3-zond-contract/test/integration/contract_methods.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_methods.test.ts
@@ -18,6 +18,7 @@ import { ContractExecutionError } from '@theqrl/web3-errors';
import { Contract } from '../../src';
import { BasicAbi, BasicBytecode } from '../shared_fixtures/build/Basic';
import { getSystemTestProvider, createTempAccount } from '../fixtures/system_test_utils';
+import { isNullish } from '@theqrl/web3-utils';
describe('contract', () => {
let contract: Contract;
@@ -37,7 +38,7 @@ describe('contract', () => {
arguments: [10, 'string init value'],
};
- sendOptions = { from: acc.address, gas: '1000000', type: 2 };
+ sendOptions = { from: acc.address, gas: '1000000' };
contractDeployed = await contract.deploy(deployOptions).send(sendOptions);
});
@@ -64,7 +65,7 @@ describe('contract', () => {
});
const deployedTempContract = await tempContract
.deploy({ arguments: [10, 'string init value'] })
- .send({type: 2});
+ .send();
const res = await deployedTempContract.methods.getStringValue().call();
expect(res).toBe('string init value');
});
@@ -107,7 +108,7 @@ describe('contract', () => {
it('should returns a receipt (EIP-1559, maxFeePerGas and maxPriorityFeePerGas specified)', async () => {
const tempAcc = await createTempAccount();
- const sendOptionsLocal = { from: tempAcc.address, /*gas: '1000000'*/ type: 2 };
+ const sendOptionsLocal = { from: tempAcc.address, /*gas: '1000000'*/ };
const contractLocal = await contract.deploy(deployOptions).send(sendOptionsLocal);
const receipt = await contractLocal.methods
@@ -140,8 +141,8 @@ describe('contract', () => {
});
const deployedTempContract = await tempContract
.deploy({ arguments: [10, 'string init value'] })
- .send({type: 2});
- await deployedTempContract.methods.setValues(10, 'TEST', true).send({type: 2});
+ .send();
+ await deployedTempContract.methods.setValues(10, 'TEST', true).send();
expect(await deployedTempContract.methods.getStringValue().call()).toBe('TEST');
});
@@ -159,7 +160,7 @@ describe('contract', () => {
logsBloom:
'0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
status: BigInt(0),
- to: contractDeployed.options.address?.toLowerCase(),
+ to: isNullish(contractDeployed.options.address) ? contractDeployed.options.address : `Z${contractDeployed.options.address.slice(1).toLowerCase()}`,
transactionIndex: BigInt(0),
type: BigInt(2),
},
diff --git a/packages/web3-zond-contract/test/integration/contract_methods_errors.test.ts b/packages/web3-zond-contract/test/integration/contract_methods_errors.test.ts
index 8af699b4..e534c496 100644
--- a/packages/web3-zond-contract/test/integration/contract_methods_errors.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_methods_errors.test.ts
@@ -44,7 +44,7 @@ describe('contract errors', () => {
data: ErrorsContractBytecode,
};
- const sendOptionsLocal = { from: acc.address, /*gas: '10000000'*/ type: 2 };
+ const sendOptionsLocal = { from: acc.address, /*gas: '10000000'*/ };
deployedContract = await contract.deploy(deployOptions).send(sendOptionsLocal);
contract.setProvider(getSystemTestProvider());
diff --git a/packages/web3-zond-contract/test/integration/contract_negative_numbers.test.ts b/packages/web3-zond-contract/test/integration/contract_negative_numbers.test.ts
index f21d2684..19af702b 100644
--- a/packages/web3-zond-contract/test/integration/contract_negative_numbers.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_negative_numbers.test.ts
@@ -21,7 +21,7 @@ import {
NegativeNumbersBytecode,
} from '../shared_fixtures/build/NegativeNumbers';
-describe('Contract - NegativeNumbers.sol', () => {
+describe('Contract - NegativeNumbers.hyp', () => {
const storedNegativeNumber = '-170141183460469231731687303715884105727';
let contract: Contract;
diff --git a/packages/web3-zond-contract/test/integration/contract_simple_overloaded.test.ts b/packages/web3-zond-contract/test/integration/contract_simple_overloaded.test.ts
index 4ac8465d..8b44753a 100644
--- a/packages/web3-zond-contract/test/integration/contract_simple_overloaded.test.ts
+++ b/packages/web3-zond-contract/test/integration/contract_simple_overloaded.test.ts
@@ -32,7 +32,7 @@ describe('SimpleOverloaded', () => {
.deploy({
data: SimpleOverloadedBytecode,
})
- .send({ from: mainAcc.address, /*gas: '10000000'*/ type: 2 });
+ .send({ from: mainAcc.address, /*gas: '10000000'*/ });
});
it('should call getSecret with no args', async () => {
@@ -53,7 +53,7 @@ describe('SimpleOverloaded', () => {
it('should send setSecret with no args', async () => {
const transactionReceipt = await contractDeployed.methods
.setSecret()
- .send({ from: mainAcc.address, /*gas: '10000000'*/ type: 2 });
+ .send({ from: mainAcc.address, /*gas: '10000000'*/ });
expect(transactionReceipt.status).toBe(BigInt(1));
const response = await contractDeployed.methods.getSecret(42, 'some string').call();
@@ -63,7 +63,7 @@ describe('SimpleOverloaded', () => {
it('should send setSecret with one args', async () => {
const transactionReceipt = await contractDeployed.methods
.setSecret(42)
- .send({ from: mainAcc.address, /*gas: '10000000'*/ type: 2 });
+ .send({ from: mainAcc.address, /*gas: '10000000'*/ });
expect(transactionReceipt.status).toBe(BigInt(1));
const response = await contractDeployed.methods.getSecret(42, 'some string').call();
@@ -73,7 +73,7 @@ describe('SimpleOverloaded', () => {
it('should send setSecret with two args', async () => {
const transactionReceipt = await contractDeployed.methods
.setSecret(42, 'more string')
- .send({ from: mainAcc.address, /*gas: '10000000'*/ type: 2 });
+ .send({ from: mainAcc.address, /*gas: '10000000'*/ });
expect(transactionReceipt.status).toBe(BigInt(1));
const response = await contractDeployed.methods.getSecret(42, 'some string').call();
@@ -87,14 +87,14 @@ describe('SimpleOverloaded', () => {
it('should send multicall with one arg', async () => {
const transactionReceipt = await contractDeployed.methods
.multicall(['0x5b9fdc30', '0x5b9fdc30', '0x5b9fdc30'])
- .send({ from: mainAcc.address, /*gas: '10000000'*/ type: 2 });
+ .send({ from: mainAcc.address, /*gas: '10000000'*/ });
expect(transactionReceipt.status).toBe(BigInt(1));
});
it('should send multicall with two args', async () => {
const transactionReceipt = await contractDeployed.methods
.multicall(99999999999, ['0x5b9fdc30', '0x5b9fdc30', '0x5b9fdc30'])
- .send({ from: mainAcc.address, /*gas: '10000000'*/ type: 2 });
+ .send({ from: mainAcc.address, /*gas: '10000000'*/ });
expect(transactionReceipt.status).toBe(BigInt(1));
});
});
diff --git a/packages/web3-zond-contract/test/integration/jest.config.js b/packages/web3-zond-contract/test/integration/jest.config.js
index 1d958902..a1bae319 100644
--- a/packages/web3-zond-contract/test/integration/jest.config.js
+++ b/packages/web3-zond-contract/test/integration/jest.config.js
@@ -5,7 +5,7 @@ const base = require('../config/jest.config');
module.exports = {
...base,
setupFilesAfterEnv: ['/test/integration/setup.js'],
- testMatch: ['/test/integration/**/*.(spec|test).(js|ts)'],
+ testMatch: ['/test/integration/**/*.(spec|test).(js|ts)'],
/**
* restoreMocks [boolean]
*
diff --git a/packages/web3-zond-contract/test/integration/local_account/contract_deploy.test.ts b/packages/web3-zond-contract/test/integration/local_account/contract_deploy.test.ts
index cbca7435..43b68370 100644
--- a/packages/web3-zond-contract/test/integration/local_account/contract_deploy.test.ts
+++ b/packages/web3-zond-contract/test/integration/local_account/contract_deploy.test.ts
@@ -42,12 +42,11 @@ describe('contract', () => {
localAccount = await createLocalAccount(web3);
sendOptions = {
from: localAccount.address,
- type: 2,
gas: '1000000',
};
});
- it.each([/*'0x1',*/ '0x2'])('should emit the "sending" event', async txType => {
+ it.each(['0x2'])('should emit the "sending" event', async txType => {
const handler = jest.fn();
const acc = await createLocalAccount(web3);
const promiEvent = contract
@@ -65,7 +64,7 @@ describe('contract', () => {
expect(handler).toHaveBeenCalled();
});
- it.each([/*'0x1',*/ '0x2'])('should deploy contract %p', async txType => {
+ it.each(['0x2'])('should deploy contract %p', async txType => {
const acc = await createLocalAccount(web3);
const deployedContract = await contract.deploy(deployOptions).send({
...sendOptions,
@@ -87,7 +86,7 @@ describe('contract', () => {
).rejects.toThrow('Signer Error Signer Error gasLimit is too low');
});
- it.each([/*'0x1',*/ '0x2'])(
+ it.each(['0x2'])(
'should return estimated gas of contract method %p',
async txType => {
const contractDeployed = await contract.deploy(deployOptions).send(sendOptions);
@@ -112,7 +111,7 @@ describe('contract', () => {
const deployedContract = await contractWithParams
.deploy({ arguments: ['Hello World'] })
- .send({type: 2});
+ .send();
expect(deployedContract.options.address).toBeDefined();
});
diff --git a/packages/web3-zond-contract/test/integration/local_account/contract_erc20.test.ts b/packages/web3-zond-contract/test/integration/local_account/contract_erc20.test.ts
index 83830aff..e64e9c0e 100644
--- a/packages/web3-zond-contract/test/integration/local_account/contract_erc20.test.ts
+++ b/packages/web3-zond-contract/test/integration/local_account/contract_erc20.test.ts
@@ -49,7 +49,6 @@ describe('contract', () => {
sendOptions = {
from: localAccount.address,
gas: '2000000',
- type: 2,
};
contractDeployed = await contract.deploy(deployOptions).send(sendOptions);
});
@@ -58,7 +57,7 @@ describe('contract', () => {
expect(contractDeployed.options.address).toBeDefined();
});
- it.each([/*'0x1',*/ '0x2'])('should transfer tokens %p', async type => {
+ it.each(['0x2'])('should transfer tokens %p', async type => {
const acc = web3.zond.accounts.create();
const value = BigInt(10);
@@ -70,7 +69,7 @@ describe('contract', () => {
expect(await contractDeployed.methods.balanceOf(acc.address).call()).toBe(value);
});
- it.each([/*'0x1',*/ '0x2'])('should approve and transferFrom tokens %p', async type => {
+ it.each(['0x2'])('should approve and transferFrom tokens %p', async type => {
const value = BigInt(10);
const transferFromValue = BigInt(4);
const tempAccount = await createLocalAccount(web3);
@@ -96,7 +95,7 @@ describe('contract', () => {
).toBe(value - transferFromValue);
});
- it.each([/*'0x1',*/ '0x2'])('should increase allowance %p', async type => {
+ it.each(['0x2'])('should increase allowance %p', async type => {
const value = BigInt(10);
const extraAmount = BigInt(4);
const tempAccount = await createLocalAccount(web3);
diff --git a/packages/web3-zond-contract/test/integration/local_account/contract_erc721.test.ts b/packages/web3-zond-contract/test/integration/local_account/contract_erc721.test.ts
index 910626a2..b23c0c4e 100644
--- a/packages/web3-zond-contract/test/integration/local_account/contract_erc721.test.ts
+++ b/packages/web3-zond-contract/test/integration/local_account/contract_erc721.test.ts
@@ -47,7 +47,6 @@ describe('contract', () => {
sendOptions = {
from: localAccount.address,
gas: '1000000',
- type: 2,
};
contractDeployed = await contract
.deploy(deployOptions)
@@ -58,7 +57,7 @@ describe('contract', () => {
expect(contractDeployed.options.address).toBeDefined();
});
- it.each([/*'0x1',*/ '0x2'])('should award item %p', async type => {
+ it.each(['0x2'])('should award item %p', async type => {
const tempAccount = web3.zond.accounts.create();
await contractDeployed.methods
.awardItem(tempAccount.address, 'http://my-nft-uri')
@@ -74,7 +73,7 @@ describe('contract', () => {
).toBe(toUpperCaseHex(tempAccount.address));
});
- it.each([/*'0x1',*/ '0x2'])('should transferFrom item %p', async type => {
+ it.each(['0x2'])('should transferFrom item %p', async type => {
const tempAccount = await createLocalAccount(web3);
const toAccount = await createLocalAccount(web3);
await contractDeployed.methods
@@ -98,7 +97,7 @@ describe('contract', () => {
).toBe(toUpperCaseHex(toAccount.address));
});
- it.each([/*'0x1',*/ '0x2'])('should approve and then transferFrom item %p', async type => {
+ it.each(['0x2'])('should approve and then transferFrom item %p', async type => {
const tempAccount = await createLocalAccount(web3);
const toAccount = await createLocalAccount(web3);
await contractDeployed.methods
@@ -131,7 +130,7 @@ describe('contract', () => {
).toBe(toUpperCaseHex(toAccount.address));
});
- it.each([/*'0x1',*/ '0x2'])(
+ it.each(['0x2'])(
'should set approve for all item with local wallet %p',
async type => {
const tempAccount = await createLocalAccount(web3);
diff --git a/packages/web3-zond-contract/test/integration/local_account/contract_overloaded_methods.test.ts b/packages/web3-zond-contract/test/integration/local_account/contract_overloaded_methods.test.ts
index be957f72..e9c05a74 100644
--- a/packages/web3-zond-contract/test/integration/local_account/contract_overloaded_methods.test.ts
+++ b/packages/web3-zond-contract/test/integration/local_account/contract_overloaded_methods.test.ts
@@ -48,7 +48,6 @@ describe('contract ERC721 overloaded functions', () => {
sendOptions = {
from: localAccount.address,
gas: '1000000',
- type: 2,
};
contractDeployed = await contract
.deploy(deployOptions)
diff --git a/packages/web3-zond-contract/test/integration/setup.js b/packages/web3-zond-contract/test/integration/setup.js
index 762b00cb..0b1a2152 100644
--- a/packages/web3-zond-contract/test/integration/setup.js
+++ b/packages/web3-zond-contract/test/integration/setup.js
@@ -19,7 +19,7 @@ along with web3.js. If not, see .
// eslint-disable-next-line @typescript-eslint/no-require-imports
require('../config/setup');
-const jestTimeout = String(process.env.WEB3_SYSTEM_TEST_PROVIDER).includes('ipc') ? 35000 : 75000;
+const jestTimeout = String(process.env.WEB3_SYSTEM_TEST_PROVIDER).includes('ipc') ? 150000 : 150000;
//const jestTimeout = String(process.env.WEB3_SYSTEM_TEST_PROVIDER).includes('ipc') ? 35000 : 15000;
jest.setTimeout(jestTimeout);
diff --git a/packages/web3-zond-contract/test/unit/contract.test.ts b/packages/web3-zond-contract/test/unit/contract.test.ts
index ad74c452..cf227052 100644
--- a/packages/web3-zond-contract/test/unit/contract.test.ts
+++ b/packages/web3-zond-contract/test/unit/contract.test.ts
@@ -24,7 +24,7 @@ import { Contract } from '../../src';
import { sampleStorageContractABI } from '../fixtures/storage';
import { GreeterAbi, GreeterBytecode } from '../shared_fixtures/build/Greeter';
import { AllGetPastEventsData, getLogsData, getPastEventsData } from '../fixtures/unitTestFixtures';
-import { getSystemTestProvider } from '../fixtures/system_test_utils';
+import { getSystemTestProvider, isHttp, itIf } from '../fixtures/system_test_utils';
import { erc721Abi } from '../fixtures/erc721';
import { ERC20TokenAbi } from '../shared_fixtures/build/ERC20Token';
import { processAsync } from '../shared_fixtures/utils';
@@ -52,7 +52,7 @@ describe('Contract', () => {
});
it('should init with abi and address', () => {
- const contract = new Contract([], '0x00000000219ab540356cBB839Cbe05303d7705Fa');
+ const contract = new Contract([], 'Z00000000219ab540356cBB839Cbe05303d7705Fa');
expect(contract).toBeInstanceOf(Contract);
});
@@ -89,14 +89,14 @@ describe('Contract', () => {
const contract = new Contract(
[],
{ gas: '123' },
- { config: { defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa' } },
+ { config: { defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa' } },
);
expect(contract).toBeInstanceOf(Contract);
});
it('should init with abi, address and options', () => {
- const contract = new Contract([], '0x00000000219ab540356cBB839Cbe05303d7705Fa', {
+ const contract = new Contract([], 'Z00000000219ab540356cBB839Cbe05303d7705Fa', {
gas: '123',
});
@@ -106,15 +106,16 @@ describe('Contract', () => {
it('should init with abi, address, options and context', () => {
const contract = new Contract(
[],
- '0x00000000219ab540356cBB839Cbe05303d7705Fa',
+ 'Z00000000219ab540356cBB839Cbe05303d7705Fa',
{ gas: '123' },
- { config: { defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa' } },
+ { config: { defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa' } },
);
expect(contract).toBeInstanceOf(Contract);
});
- it('should set the provider, from options, upon instantiation', () => {
+ // TODO(youtrack/theqrl/web3.js/7)
+ itIf(isHttp)('should set the provider, from options, upon instantiation', () => {
const provider = getSystemTestProvider();
const contract = new Contract([], '', {
provider,
@@ -126,7 +127,8 @@ describe('Contract', () => {
});
});
- it('should set the provider, from context, upon instantiation', () => {
+ // TODO(youtrack/theqrl/web3.js/7)
+ itIf(isHttp)('should set the provider, from context, upon instantiation', () => {
const provider = getSystemTestProvider();
const contract = new Contract(
[],
@@ -148,10 +150,10 @@ describe('Contract', () => {
// @ts-expect-error run protected method
const parseAndSetAddressSpy = jest.spyOn(contract, '_parseAndSetAddress');
- contract.options.address = '0x6e599da0bff7a6598ac1224e4985430bf16458a4';
+ contract.options.address = 'Z6e599da0bff7a6598ac1224e4985430bf16458a4';
expect(parseAndSetAddressSpy).toHaveBeenCalledWith(
- '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
+ 'Z6e599da0bff7a6598ac1224e4985430bf16458a4',
ZOND_DATA_FORMAT,
);
const parseAndSetJsonInterfaceSpy = jest.spyOn(
@@ -168,10 +170,10 @@ describe('Contract', () => {
// @ts-expect-error run protected method
const parseAndSetAddressSpy = jest.spyOn(contract, '_parseAndSetAddress');
- contract.options.address = '0x6e599da0bff7a6598ac1224e4985430bf16458a4';
+ contract.options.address = 'Z6e599da0bff7a6598ac1224e4985430bf16458a4';
expect(parseAndSetAddressSpy).toHaveBeenCalledWith(
- '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
+ 'Z6e599da0bff7a6598ac1224e4985430bf16458a4',
ZOND_DATA_FORMAT,
);
const parseAndSetJsonInterfaceSpy = jest.spyOn(
@@ -188,10 +190,10 @@ describe('Contract', () => {
// @ts-expect-error run protected method
const parseAndSetAddressSpy = jest.spyOn(contract, '_parseAndSetAddress');
- contract.options.address = '0x6e599da0bff7a6598ac1224e4985430bf16458a4';
+ contract.options.address = 'Z6e599da0bff7a6598ac1224e4985430bf16458a4';
expect(parseAndSetAddressSpy).toHaveBeenCalledWith(
- '0x6e599da0bff7a6598ac1224e4985430bf16458a4',
+ 'Z6e599da0bff7a6598ac1224e4985430bf16458a4',
ZOND_DATA_FORMAT,
);
const parseAndSetJsonInterfaceSpy = jest.spyOn(
@@ -206,11 +208,11 @@ describe('Contract', () => {
describe('Contract functions and defaults', () => {
let sendOptions: Record;
- const deployedAddr = '0x20bc23D0598b12c34cBDEf1fae439Ba8744DB426';
+ const deployedAddr = 'Z20bc23D0598b12c34cBDEf1fae439Ba8744DB426';
beforeEach(() => {
sendOptions = {
- from: '0x12364916b10Ae90076dDa6dE756EE1395BB69ec2',
+ from: 'Z12364916b10Ae90076dDa6dE756EE1395BB69ec2',
gas: '1000000',
};
});
@@ -225,7 +227,8 @@ describe('Contract', () => {
.mockImplementation((_objInstance, tx) => {
expect(tx.to).toBeUndefined();
expect(tx.gas).toStrictEqual(sendOptions.gas);
- expect(tx.gasPrice).toBeUndefined();
+ expect(tx.maxFeePerGas).toBeUndefined();
+ expect(tx.maxPriorityFeePerGas).toBeUndefined();
expect(tx.from).toStrictEqual(sendOptions.from);
expect(tx.input).toStrictEqual(input); // padded data
@@ -258,7 +261,8 @@ describe('Contract', () => {
.mockImplementation((_objInstance, tx) => {
expect(tx.to).toBeUndefined();
expect(tx.gas).toStrictEqual(sendOptions.gas);
- expect(tx.gasPrice).toBeUndefined();
+ expect(tx.maxFeePerGas).toBeUndefined();
+ expect(tx.maxPriorityFeePerGas).toBeUndefined();
expect(tx.from).toStrictEqual(sendOptions.from);
expect(tx.data).toStrictEqual(data); // padded data
@@ -295,7 +299,7 @@ describe('Contract', () => {
const arg = 'Hello';
const contract = new Contract(GreeterAbi);
sendOptions = {
- from: '0x12364916b10Ae90076dDa6dE756EE1395BB69ec2',
+ from: 'Z12364916b10Ae90076dDa6dE756EE1395BB69ec2',
gas: '1000000',
};
const spyTx = jest
@@ -334,7 +338,7 @@ describe('Contract', () => {
const arg = 'Hello';
const contract = new Contract(GreeterAbi);
sendOptions = {
- from: '0x12364916b10Ae90076dDa6dE756EE1395BB69ec2',
+ from: 'Z12364916b10Ae90076dDa6dE756EE1395BB69ec2',
gas: '1000000',
data: '0xa41368620000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000548656c6c6f000000000000000000000000000000000000000000000000000000',
};
@@ -376,13 +380,13 @@ describe('Contract', () => {
provider: expectedProvider,
config: {
contractDataInputFill: 'data',
- defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa',
+ defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa',
},
});
const arg = 'Hello';
const contract = new Contract(GreeterAbi, web3Context);
sendOptions = {
- from: '0x12364916b10Ae90076dDa6dE756EE1395BB69ec2',
+ from: 'Z12364916b10Ae90076dDa6dE756EE1395BB69ec2',
gas: '1000000',
};
const spyTx = jest
@@ -422,13 +426,13 @@ describe('Contract', () => {
provider: expectedProvider,
config: {
contractDataInputFill: 'both',
- defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa',
+ defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa',
},
});
const arg = 'Hello';
const contract = new Contract(GreeterAbi, web3Context);
sendOptions = {
- from: '0x12364916b10Ae90076dDa6dE756EE1395BB69ec2',
+ from: 'Z12364916b10Ae90076dDa6dE756EE1395BB69ec2',
gas: '1000000',
};
const spyTx = jest
@@ -472,13 +476,13 @@ describe('Contract', () => {
provider: expectedProvider,
config: {
contractDataInputFill: 'input',
- defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa',
+ defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa',
},
});
const arg = 'Hello';
const contract = new Contract(GreeterAbi, web3Context);
sendOptions = {
- from: '0x12364916b10Ae90076dDa6dE756EE1395BB69ec2',
+ from: 'Z12364916b10Ae90076dDa6dE756EE1395BB69ec2',
gas: '1000000',
};
const spyTx = jest
@@ -547,7 +551,7 @@ describe('Contract', () => {
it('should clone pre deployed contract with address', () => {
const contract = new Contract(
sampleStorageContractABI,
- '0x00000000219ab540356cBB839Cbe05303d7705Fa',
+ 'Z00000000219ab540356cBB839Cbe05303d7705Fa',
{ gas: '0x97254' },
);
@@ -586,9 +590,9 @@ describe('Contract', () => {
});
it('defaults set and get should work', () => {
- const contract = new Contract([], '0x00000000219ab540356cBB839Cbe05303d7705Fa');
+ const contract = new Contract([], 'Z00000000219ab540356cBB839Cbe05303d7705Fa');
- const defaultAddr = '0xd7E30ae310C1D1800F5B641Baa7af95b2e1FD98C';
+ const defaultAddr = 'Zd7E30ae310C1D1800F5B641Baa7af95b2e1FD98C';
expect(contract.defaultAccount).toBeUndefined();
contract.defaultAccount = defaultAddr;
expect(contract.defaultAccount).toStrictEqual(defaultAddr);
@@ -599,7 +603,7 @@ describe('Contract', () => {
expect(contract.defaultBlock).toStrictEqual(defaultBlock);
const defaultHardfork = 'constantinople';
- expect(contract.defaultHardfork).toBe('london');
+ expect(contract.defaultHardfork).toBe('shanghai');
contract.defaultHardfork = defaultHardfork;
expect(contract.defaultHardfork).toStrictEqual(defaultHardfork);
@@ -672,14 +676,14 @@ describe('Contract', () => {
contract.transactionPollingTimeout = transactionPollingTimeout;
expect(contract.transactionPollingTimeout).toStrictEqual(transactionPollingTimeout);
- const transactionReceiptPollingInterval = 2000; // its new in 4.x
+ const transactionReceiptPollingInterval = 2000;
expect(contract.transactionReceiptPollingInterval).toBe(1000);
contract.transactionReceiptPollingInterval = transactionReceiptPollingInterval;
expect(contract.transactionReceiptPollingInterval).toStrictEqual(
transactionReceiptPollingInterval,
);
- const transactionConfirmationPollingInterval = 2501; // its new in 4.x
+ const transactionConfirmationPollingInterval = 2501;
expect(contract.transactionConfirmationPollingInterval).toBe(1000);
contract.transactionConfirmationPollingInterval =
transactionConfirmationPollingInterval;
@@ -687,7 +691,7 @@ describe('Contract', () => {
transactionConfirmationPollingInterval,
);
- const transactionSendTimeout = 730000; // its new in 4.x
+ const transactionSendTimeout = 730000;
expect(contract.transactionSendTimeout).toBe(750000);
contract.transactionSendTimeout = transactionSendTimeout;
expect(contract.transactionSendTimeout).toStrictEqual(transactionSendTimeout);
@@ -703,12 +707,12 @@ describe('Contract', () => {
});
it('should set and get correct address', () => {
- const addr = '0x1230B93ffd14F2F022039675fA3fc3A46eE4C701';
+ const addr = 'Z1230B93ffd14F2F022039675fA3fc3A46eE4C701';
const contract = new Contract(
[],
'',
{ gas: '123' },
- { config: { defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa' } },
+ { config: { defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa' } },
);
contract.options.address = addr;
@@ -718,9 +722,9 @@ describe('Contract', () => {
it('should set, at the constructor, and later get jsonInterface', () => {
const contract = new Contract(
sampleStorageContractABI,
- '0x1230B93ffd14F2F022039675fA3fc3A46eE4C701',
+ 'Z1230B93ffd14F2F022039675fA3fc3A46eE4C701',
{ gas: '123' },
- { config: { defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa' } },
+ { config: { defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa' } },
);
expect(contract.options.jsonInterface).toMatchObject(sampleStorageContractABI);
@@ -729,9 +733,9 @@ describe('Contract', () => {
it('should set and get jsonInterface', () => {
const contract = new Contract(
sampleStorageContractABI,
- '0x1230B93ffd14F2F022039675fA3fc3A46eE4C701',
+ 'Z1230B93ffd14F2F022039675fA3fc3A46eE4C701',
{ gas: '123' },
- { config: { defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa' } },
+ { config: { defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa' } },
);
contract.options.jsonInterface = ERC20TokenAbi;
@@ -741,15 +745,15 @@ describe('Contract', () => {
it('should be able to call a payable method', async () => {
const contract = new Contract(
erc721Abi,
- '0x1230B93ffd14F2F022039675fA3fc3A46eE4C701',
+ 'Z1230B93ffd14F2F022039675fA3fc3A46eE4C701',
{ gas: '123' },
- { config: { defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa' } },
+ { config: { defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa' } },
);
const spyZondCall = jest
.spyOn(zond, 'call')
.mockImplementation(async (_objInstance, _tx) => {
- expect(_tx.to).toBe('0x1230B93ffd14F2F022039675fA3fc3A46eE4C701');
+ expect(_tx.to).toBe('Z1230B93ffd14F2F022039675fA3fc3A46eE4C701');
expect(_tx.input).toBe(
'0x095ea7b300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000000000000000000000000000000000000000001',
);
@@ -757,7 +761,7 @@ describe('Contract', () => {
});
await expect(
- contract.methods.approve('0x00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
+ contract.methods.approve('Z00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
).resolves.toBeTruthy();
spyZondCall.mockClear();
@@ -766,15 +770,15 @@ describe('Contract', () => {
it('should be able to call a payable method with data as a contract init option', async () => {
const contract = new Contract(
erc721Abi,
- '0x1230B93ffd14F2F022039675fA3fc3A46eE4C701',
+ 'Z1230B93ffd14F2F022039675fA3fc3A46eE4C701',
{ gas: '123', dataInputFill: 'data' },
- { config: { defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa' } },
+ { config: { defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa' } },
);
const spyZondCall = jest
.spyOn(zond, 'call')
.mockImplementation(async (_objInstance, _tx) => {
- expect(_tx.to).toBe('0x1230B93ffd14F2F022039675fA3fc3A46eE4C701');
+ expect(_tx.to).toBe('Z1230B93ffd14F2F022039675fA3fc3A46eE4C701');
expect(_tx.data).toBe(
'0x095ea7b300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000000000000000000000000000000000000000001',
);
@@ -782,7 +786,7 @@ describe('Contract', () => {
});
await expect(
- contract.methods.approve('0x00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
+ contract.methods.approve('Z00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
).resolves.toBeTruthy();
spyZondCall.mockClear();
@@ -791,15 +795,15 @@ describe('Contract', () => {
it('should be able to call a payable method with input as a contract init option', async () => {
const contract = new Contract(
erc721Abi,
- '0x1230B93ffd14F2F022039675fA3fc3A46eE4C701',
+ 'Z1230B93ffd14F2F022039675fA3fc3A46eE4C701',
{ gas: '123', dataInputFill: 'input' },
- { config: { defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa' } },
+ { config: { defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa' } },
);
const spyZondCall = jest
.spyOn(zond, 'call')
.mockImplementation(async (_objInstance, _tx) => {
- expect(_tx.to).toBe('0x1230B93ffd14F2F022039675fA3fc3A46eE4C701');
+ expect(_tx.to).toBe('Z1230B93ffd14F2F022039675fA3fc3A46eE4C701');
expect(_tx.input).toBe(
'0x095ea7b300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000000000000000000000000000000000000000001',
);
@@ -807,7 +811,7 @@ describe('Contract', () => {
});
await expect(
- contract.methods.approve('0x00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
+ contract.methods.approve('Z00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
).resolves.toBeTruthy();
spyZondCall.mockClear();
@@ -819,12 +823,12 @@ describe('Contract', () => {
provider: expectedProvider,
config: {
contractDataInputFill: 'data',
- defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa',
+ defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa',
},
});
const contract = new Contract(
erc721Abi,
- '0x1230B93ffd14F2F022039675fA3fc3A46eE4C701',
+ 'Z1230B93ffd14F2F022039675fA3fc3A46eE4C701',
{ gas: '123' },
web3Context,
);
@@ -832,7 +836,7 @@ describe('Contract', () => {
const spyZondCall = jest
.spyOn(zond, 'call')
.mockImplementation(async (_objInstance, _tx) => {
- expect(_tx.to).toBe('0x1230B93ffd14F2F022039675fA3fc3A46eE4C701');
+ expect(_tx.to).toBe('Z1230B93ffd14F2F022039675fA3fc3A46eE4C701');
expect(_tx.data).toBe(
'0x095ea7b300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000000000000000000000000000000000000000001',
);
@@ -840,7 +844,7 @@ describe('Contract', () => {
});
await expect(
- contract.methods.approve('0x00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
+ contract.methods.approve('Z00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
).resolves.toBeTruthy();
spyZondCall.mockClear();
@@ -852,12 +856,12 @@ describe('Contract', () => {
provider: expectedProvider,
config: {
contractDataInputFill: 'both',
- defaultAccount: '0x00000000219ab540356cBB839Cbe05303d7705Fa',
+ defaultAccount: 'Z00000000219ab540356cBB839Cbe05303d7705Fa',
},
});
const contract = new Contract(
erc721Abi,
- '0x1230B93ffd14F2F022039675fA3fc3A46eE4C701',
+ 'Z1230B93ffd14F2F022039675fA3fc3A46eE4C701',
{ gas: '123' },
web3Context,
);
@@ -865,7 +869,7 @@ describe('Contract', () => {
const spyZondCall = jest
.spyOn(zond, 'call')
.mockImplementation(async (_objInstance, _tx) => {
- expect(_tx.to).toBe('0x1230B93ffd14F2F022039675fA3fc3A46eE4C701');
+ expect(_tx.to).toBe('Z1230B93ffd14F2F022039675fA3fc3A46eE4C701');
expect(_tx.data).toBe(
'0x095ea7b300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000000000000000000000000000000000000000001',
);
@@ -876,7 +880,7 @@ describe('Contract', () => {
});
await expect(
- contract.methods.approve('0x00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
+ contract.methods.approve('Z00000000219ab540356cBB839Cbe05303d7705Fa', 1).call(),
).resolves.toBeTruthy();
spyZondCall.mockClear();
@@ -895,7 +899,7 @@ describe('Contract', () => {
const spyGetLogs = jest
.spyOn(zond, 'getLogs')
.mockImplementation((_objInstance, _params) => {
- expect(_params.address).toStrictEqual(deployedAddr.toLocaleLowerCase());
+ expect(_params.address).toStrictEqual(`Z${deployedAddr.slice(1).toLocaleLowerCase()}`);
expect(_params.fromBlock).toStrictEqual(getLogsData.request.fromBlock);
expect(_params.toBlock).toStrictEqual(getLogsData.request.toBlock);
expect(_params.topics).toStrictEqual(getLogsData.request.topics);
@@ -936,7 +940,7 @@ describe('Contract', () => {
const spyGetLogs = jest
.spyOn(zond, 'getLogs')
.mockImplementation((_objInstance, _params) => {
- expect(_params.address).toStrictEqual(deployedAddr.toLocaleLowerCase());
+ expect(_params.address).toStrictEqual(`Z${deployedAddr.slice(1).toLocaleLowerCase()}`);
expect(_params.fromBlock).toStrictEqual(getLogsData.request.fromBlock);
expect(_params.toBlock).toStrictEqual(getLogsData.request.toBlock);
@@ -977,7 +981,7 @@ describe('Contract', () => {
const spyGetLogs = jest
.spyOn(zond, 'getLogs')
.mockImplementation((_objInstance, _params) => {
- expect(_params.address).toStrictEqual(deployedAddr.toLocaleLowerCase());
+ expect(_params.address).toStrictEqual(`Z${deployedAddr.slice(1).toLocaleLowerCase()}`);
expect(_params.fromBlock).toBeUndefined();
expect(_params.toBlock).toBeUndefined();
expect(_params.topics).toBeUndefined();
@@ -1013,7 +1017,7 @@ describe('Contract', () => {
const spyGetLogs = jest
.spyOn(zond, 'getLogs')
.mockImplementation((_objInstance, _params) => {
- expect(_params.address).toStrictEqual(deployedAddr.toLocaleLowerCase());
+ expect(_params.address).toStrictEqual(`Z${deployedAddr.slice(1).toLocaleLowerCase()}`);
expect(_params.fromBlock).toBeUndefined();
expect(_params.toBlock).toBeUndefined();
expect(_params.topics).toBeUndefined();
@@ -1080,7 +1084,7 @@ describe('Contract', () => {
const spyGetLogs = jest
.spyOn(zond, 'getLogs')
.mockImplementation((_objInstance, _params) => {
- expect(_params.address).toStrictEqual(deployedAddr.toLocaleLowerCase());
+ expect(_params.address).toStrictEqual(`Z${deployedAddr.slice(1).toLocaleLowerCase()}`);
expect(_params.fromBlock).toBeUndefined();
expect(_params.toBlock).toBeUndefined();
@@ -1412,7 +1416,7 @@ describe('Contract', () => {
const arg = 'Hello';
const contract = new Contract(GreeterAbi);
- contract.options.address = '0x12364916b10Ae90076dDa6dE756EE1395BB69ec2';
+ contract.options.address = 'Z12364916b10Ae90076dDa6dE756EE1395BB69ec2';
/* eslint-disable no-useless-escape */
await expect(async () => {
@@ -1421,7 +1425,7 @@ describe('Contract', () => {
});
it('contract method createAccessList should work', async () => {
- const fromAddr: Address = '0x20bc23D0598b12c34cBDEf1fae439Ba8744DB426';
+ const fromAddr: Address = 'Z20bc23D0598b12c34cBDEf1fae439Ba8744DB426';
const result: AccessListResult = {
accessList: [
{
@@ -1458,7 +1462,7 @@ describe('Contract', () => {
provider: expectedProvider,
config: { contractDataInputFill: 'data' },
});
- const fromAddr: Address = '0x20bc23D0598b12c34cBDEf1fae439Ba8744DB426';
+ const fromAddr: Address = 'Z20bc23D0598b12c34cBDEf1fae439Ba8744DB426';
const result: AccessListResult = {
accessList: [
{
@@ -1494,7 +1498,7 @@ describe('Contract', () => {
provider: expectedProvider,
config: { contractDataInputFill: 'both' },
});
- const fromAddr: Address = '0x20bc23D0598b12c34cBDEf1fae439Ba8744DB426';
+ const fromAddr: Address = 'Z20bc23D0598b12c34cBDEf1fae439Ba8744DB426';
const result: AccessListResult = {
accessList: [
{
diff --git a/packages/web3-zond-contract/test/unit/encode_event_abi.test.ts b/packages/web3-zond-contract/test/unit/encode_event_abi.test.ts
index d52cdbcc..c3d8b198 100644
--- a/packages/web3-zond-contract/test/unit/encode_event_abi.test.ts
+++ b/packages/web3-zond-contract/test/unit/encode_event_abi.test.ts
@@ -18,7 +18,7 @@ import { AbiEventFragment } from '@theqrl/web3-types';
import { ContractOptions, encodeEventABI } from '../../src';
const contractOptions: ContractOptions = {
- address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
+ address: 'Zde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
} as ContractOptions;
const abiEventFragment: AbiEventFragment & { signature: string } = {
anonymous: false,
@@ -55,7 +55,7 @@ describe('encodeEventAbi', () => {
expect(encodedEventFilter).toMatchObject({
fromBlock: '0xa',
- address: '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
+ address: 'Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
});
});
@@ -66,7 +66,7 @@ describe('encodeEventAbi', () => {
expect(encodedEventFilter).toMatchObject({
toBlock: '0xa',
- address: '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
+ address: 'Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
});
});
@@ -77,7 +77,7 @@ describe('encodeEventAbi', () => {
expect(encodedEventFilter).toMatchObject({
topics: ['0x3f6d5d7b72c0059e2ecac56fd4adeefb2cff23aa41d13170f78ea6bf81e6e0ca'],
- address: '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
+ address: 'Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
});
});
@@ -97,7 +97,7 @@ describe('encodeEventAbi', () => {
expect(encodedEventFilter).toMatchObject({
fromBlock: '0x3e8',
- address: '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
+ address: 'Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
});
});
@@ -179,7 +179,7 @@ describe('encodeEventAbi', () => {
// eslint-disable-next-line no-null/no-null
null,
],
- address: '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
+ address: 'Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
});
});
@@ -199,7 +199,7 @@ describe('encodeEventAbi', () => {
null,
'0x0000000000000000000000000000000000000000000000000000000000000001',
],
- address: '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
+ address: 'Zde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
});
});
});
diff --git a/packages/web3-zond-contract/test/unit/jest.config.js b/packages/web3-zond-contract/test/unit/jest.config.js
index 06b5f591..cc07f3da 100644
--- a/packages/web3-zond-contract/test/unit/jest.config.js
+++ b/packages/web3-zond-contract/test/unit/jest.config.js
@@ -11,7 +11,7 @@ module.exports = {
[
'json',
{
- file: 'web3-eth-contract-unit-coverage.json',
+ file: 'web3-zond-contract-unit-coverage.json',
},
],
],
diff --git a/packages/web3-zond-ens/CHANGELOG.md b/packages/web3-zond-ens/CHANGELOG.md
index db44732d..2ad5a7d4 100644
--- a/packages/web3-zond-ens/CHANGELOG.md
+++ b/packages/web3-zond-ens/CHANGELOG.md
@@ -33,100 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [4.0.1-alpha.1]
-
-### Changed
-
-- `Web3NetAPI` is now imported from `web3-types` instead of `web3-net` (#5441)
-
-## [4.0.1-alpha.2]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Changed
-
-- Updated dependencies (#5912)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-### Fixed
-
-- Bug fix of `checkNetwork` in ENS (#5988)
-
-## [4.0.1-rc.2]
-
-### Removed
-
-- Removed non read-only methods (#6084)
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Fixed
-
-- Fixed bug #6185, now web3.js compiles on typescript v5 (#6195)
-
-## [4.0.3]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.4]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.5]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.6]
-
-### Changed
-
-- Dependencies updated
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-zond-ens/README.md b/packages/web3-zond-ens/README.md
index ea4f306a..51f68dad 100644
--- a/packages/web3-zond-ens/README.md
+++ b/packages/web3-zond-ens/README.md
@@ -11,7 +11,7 @@
This is a sub-package of [web3.js][repo].
-`web3-eth-ens` This package has ENS functions for interacting with Ethereum Name Service.
+`web3-zond-ens` This package has ENS functions for interacting with Ethereum Name Service.
## Installation
@@ -20,13 +20,13 @@ You can install the package either using [NPM](https://www.npmjs.com/package/web
### Using NPM
```bash
-npm install web3-eth-ens
+npm install web3-zond-ens
```
### Using Yarn
```bash
-yarn add web3-eth-ens
+yarn add web3-zond-ens
```
## Getting Started
diff --git a/packages/web3-zond-ens/package.json b/packages/web3-zond-ens/package.json
index ebfa1962..5301f510 100644
--- a/packages/web3-zond-ens/package.json
+++ b/packages/web3-zond-ens/package.json
@@ -1,6 +1,6 @@
{
"name": "@theqrl/web3-zond-ens",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
@@ -47,7 +47,7 @@
"ens:download:reverse_registrar": "curl -L -o test/fixtures/ens/reverse_registrar.json 'https://api.etherscan.io/api?module=contract&action=getabi&address=0x084b1c3c81545d370f3634392de611caabff8148'"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
@@ -62,14 +62,14 @@
},
"dependencies": {
"@adraffy/ens-normalize": "^1.8.8",
- "@theqrl/web3-core": "^0.2.1",
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-net": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1",
- "@theqrl/web3-validator": "^0.2.1",
- "@theqrl/web3-zond": "^0.2.1",
- "@theqrl/web3-zond-contract": "^0.2.1"
+ "@theqrl/web3-core": "^0.3.0",
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-net": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-utils": "^0.3.0",
+ "@theqrl/web3-validator": "^0.3.0",
+ "@theqrl/web3-zond": "^0.3.0",
+ "@theqrl/web3-zond-contract": "^0.3.0"
},
"gitHead": "d4f3246946fec86d908a215b27568aa8faea88d7"
}
diff --git a/packages/web3-zond-ens/src/config.ts b/packages/web3-zond-ens/src/config.ts
index 1437c974..b702d417 100644
--- a/packages/web3-zond-ens/src/config.ts
+++ b/packages/web3-zond-ens/src/config.ts
@@ -41,14 +41,13 @@ export const methodsInInterface: { [T: string]: string } = {
};
/**
- * An object holding the addressed of the ENS registries on the different networks (mainnet, goerli).
+ * An object holding the addressed of the ENS registries on the different networks (mainnet).
*/
+// TODO(youtrack/theqrl/web3.js/1)
export const registryAddresses: { [T: string]: string } = {
- main: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',
- goerli: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',
+ main: 'Z00000000000C2E074eC69A0dFb2997BA6C7d2e1e',
};
export const networkIds: { [T: string]: string } = {
'0x1': 'main',
- '0x5': 'goerli',
};
diff --git a/packages/web3-zond-ens/src/ens.ts b/packages/web3-zond-ens/src/ens.ts
index 558d05c1..e30f1d08 100644
--- a/packages/web3-zond-ens/src/ens.ts
+++ b/packages/web3-zond-ens/src/ens.ts
@@ -53,7 +53,7 @@ export class ENS extends Web3Context {
* @example
* ```ts
* const ens = new ENS(
- * "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
+ * "Z00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
* "http://localhost:8545"
* );
*
@@ -84,7 +84,7 @@ export class ENS extends Web3Context {
* const resolver = await ens.getResolver('resolver');
*
* console.log(resolver.options.address);
- * > '0x1234567890123456789012345678901234567890'
+ * > 'Z1234567890123456789012345678901234567890'
* ```
*/
public async getResolver(name: string): Promise> {
@@ -97,7 +97,7 @@ export class ENS extends Web3Context {
* @returns - Returns `true` if node exists in this ENS registry. This will return `false` for records that are in the legacy ENS registry but have not yet been migrated to the new one.
* @example
* ```ts
- * const exists = await web3.zond.ens.recordExists('zond.znd');
+ * const exists = await web3.zond.ens.recordExists('zond.ens');
* ```
*/
public async recordExists(name: string): Promise {
@@ -110,7 +110,7 @@ export class ENS extends Web3Context {
* @returns - Returns the caching TTL (time-to-live) of a name.
* @example
* ```ts
- * const owner = await web3.zond.ens.getTTL('zond.znd');
+ * const owner = await web3.zond.ens.getTTL('zond.ens');
* ```
*/
public async getTTL(name: string): Promise {
@@ -123,7 +123,7 @@ export class ENS extends Web3Context {
* @returns - Returns the address of the owner of the name.
* @example
* ```ts
- * const owner = await web3.zond.ens.getOwner('zond.znd');
+ * const owner = await web3.zond.ens.getOwner('zond.ens');
* ```
*/
public async getOwner(name: string): Promise {
@@ -136,9 +136,9 @@ export class ENS extends Web3Context {
* @param coinType - (Optional) The coin type, defaults to 60 (ETH)
* @returns - The Zond address of the given name
* ```ts
- * const address = await web3.zond.ens.getAddress('zond.znd');
+ * const address = await web3.zond.ens.getAddress('zond.ens');
* console.log(address);
- * > '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359'
+ * > 'ZfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359'
* ```
*/
public async getAddress(ENSName: string, coinType = 60) {
@@ -151,7 +151,7 @@ export class ENS extends Web3Context {
* @returns - The X and Y coordinates of the curve point for the public key
* @example
* ```ts
- * const key = await web3.zond.ens.getPubkey('zond.znd');
+ * const key = await web3.zond.ens.getPubkey('zond.ens');
* console.log(key);
* > {
* "0": "0x0000000000000000000000000000000000000000000000000000000000000000",
@@ -171,7 +171,7 @@ export class ENS extends Web3Context {
* @returns - The content hash object associated with an ENS node
* @example
* ```ts
- * const hash = await web3.zond.ens.getContenthash('zond.znd');
+ * const hash = await web3.zond.ens.getContenthash('zond.ens');
* console.log(hash);
* > 'QmaEBknbGT4bTQiQoe2VNgBJbRfygQGktnaW5TbuKixjYL'
* ```
@@ -187,7 +187,7 @@ export class ENS extends Web3Context {
* @example
* ```ts
* console.log(await web3.zond.ens.checkNetwork());
- * > '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e'
+ * > 'Z00000000000C2E074eC69A0dFb2997BA6C7d2e1e'
* ```
*/
public async checkNetwork() {
@@ -226,7 +226,7 @@ export class ENS extends Web3Context {
* @returns - `true` if the related Resolver does support the given signature or interfaceId.
* @example
* ```ts
- * const supports = await web3.zond.ens.supportsInterface('zond.znd', 'addr(bytes32');
+ * const supports = await web3.zond.ens.supportsInterface('zond.ens', 'addr(bytes32');
* console.log(supports);
* > true
* ```
diff --git a/packages/web3-zond-ens/src/index.ts b/packages/web3-zond-ens/src/index.ts
index 1c11d022..cf3b9780 100644
--- a/packages/web3-zond-ens/src/index.ts
+++ b/packages/web3-zond-ens/src/index.ts
@@ -18,12 +18,6 @@ along with web3.js. If not, see .
/**
* The `web3.zond.ens` functions let you interact with ENS. We recommend reading the [ENS documentation](https://docs.ens.domains/) to get deeper insights about the internals of the name service.
*
- * ## Breaking Changes
- *
- * - All the API level interfaces returning or accepting `null` in 1.x, use `undefined` in 4.x.
- * - Functions don't accept a callback anymore.
- * - Functions that accepted an optional `TransactionConfig` as the last argument, now accept an optional `NonPayableCallOptions`. See `web3-zond-contract` package for more details.
- * - Removed all non-read methods. If you need modifing resolver or registry, please use https://www.npmjs.com/package/@ensdomains/ensjs
*/
/**
* This comment _supports3_ [Markdown](https://marked.js.org/)
diff --git a/packages/web3-zond-ens/src/registry.ts b/packages/web3-zond-ens/src/registry.ts
index 81133e2b..7a98eee0 100644
--- a/packages/web3-zond-ens/src/registry.ts
+++ b/packages/web3-zond-ens/src/registry.ts
@@ -61,7 +61,7 @@ export class Registry {
return promise;
} catch (error) {
- throw new Error(); // TODO: TransactionRevertInstructionError Needs to be added after web3-eth call method is implemented
+ throw new Error(); // TODO: TransactionRevertInstructionError Needs to be added after web3-zond call method is implemented
}
}
@@ -80,7 +80,7 @@ export class Registry {
throw new Error();
});
} catch (error) {
- throw new Error(); // TODO: TransactionRevertInstructionError Needs to be added after web3-eth call method is implemented
+ throw new Error(); // TODO: TransactionRevertInstructionError Needs to be added after web3-zond call method is implemented
}
}
diff --git a/packages/web3-zond-ens/test/integration/ens.events.test.ts b/packages/web3-zond-ens/test/integration/ens.events.test.ts
index 8dc4b552..9e1f30cb 100644
--- a/packages/web3-zond-ens/test/integration/ens.events.test.ts
+++ b/packages/web3-zond-ens/test/integration/ens.events.test.ts
@@ -68,14 +68,14 @@ describeIf(isSocket)('ens events', () => {
let accountOne: string;
const ZERO_NODE: Bytes = '0x0000000000000000000000000000000000000000000000000000000000000000';
- const addressOne: Address = '0x0000000000000000000000000000000000000001';
+ const addressOne: Address = 'Z0000000000000000000000000000000000000001';
beforeAll(async () => {
accounts = await getSystemTestAccounts();
[defaultAccount, accountOne] = accounts;
- sendOptions = { from: defaultAccount, gas: '10000000', type: 2 };
+ sendOptions = { from: defaultAccount, gas: '10000000' };
const Registry = new Contract(ENSRegistryAbi, undefined, {
provider: getSystemTestProvider(),
diff --git a/packages/web3-zond-ens/test/integration/ens.test.ts b/packages/web3-zond-ens/test/integration/ens.test.ts
index 806144f2..a53cbf37 100644
--- a/packages/web3-zond-ens/test/integration/ens.test.ts
+++ b/packages/web3-zond-ens/test/integration/ens.test.ts
@@ -69,14 +69,14 @@ describe('ens', () => {
let accountOne: string;
const ZERO_NODE: Bytes = '0x0000000000000000000000000000000000000000000000000000000000000000';
- const addressOne: Address = '0x0000000000000000000000000000000000000001';
+ const addressOne: Address = 'Z0000000000000000000000000000000000000001';
beforeAll(async () => {
accounts = await getSystemTestAccounts();
[defaultAccount, accountOne] = accounts;
- sendOptions = { from: defaultAccount, gas: '10000000', type: 2 };
+ sendOptions = { from: defaultAccount, gas: '10000000' };
const Registry = new Contract(ENSRegistryAbi, undefined, {
provider: getSystemTestProvider(),
diff --git a/packages/web3-zond-ens/test/integration/resolver.test.ts b/packages/web3-zond-ens/test/integration/resolver.test.ts
index 22157ffa..cb35a977 100644
--- a/packages/web3-zond-ens/test/integration/resolver.test.ts
+++ b/packages/web3-zond-ens/test/integration/resolver.test.ts
@@ -18,7 +18,7 @@ along with web3.js. If not, see .
/* eslint-disable @typescript-eslint/no-unused-vars */
import Web3Zond from '@theqrl/web3-zond';
import { Contract, PayableTxOptions } from '@theqrl/web3-zond-contract';
-import { sha3 } from '@theqrl/web3-utils';
+import { hexToAddress, sha3 } from '@theqrl/web3-utils';
import { Address, Bytes, DEFAULT_RETURN_FORMAT } from '@theqrl/web3-types';
// eslint-disable-next-line import/no-extraneous-dependencies
@@ -66,7 +66,7 @@ describe('ens', () => {
let accountOne: string;
const ZERO_NODE: Bytes = '0x0000000000000000000000000000000000000000000000000000000000000000';
- const addressOne: Address = '0x0000000000000000000000000000000000000001';
+ const addressOne: Address = 'Z0000000000000000000000000000000000000001';
const contentHash = '0x0000000000000000000000000000000000000000000000000000000000000001';
@@ -77,7 +77,7 @@ describe('ens', () => {
[defaultAccount, accountOne] = accounts;
- sendOptions = { from: defaultAccount, gas: '10000000', type: 2 };
+ sendOptions = { from: defaultAccount, gas: '10000000' };
const Registry = new Contract(ENSRegistryAbi, undefined, {
provider: getSystemTestProvider(),
@@ -225,8 +225,10 @@ describe('ens', () => {
await resolver.methods.setAddr(domainNode, accounts[1]).send(sendOptions);
+ // NOTE(rgeraldes24): resolver.methods.addr(node, coin) return type is 'bytes';
+ // value is not converted automatically to the 'address' type via ABI
const res = await resolver.methods.addr(domainNode, DEFAULT_COIN_TYPE).call(sendOptions);
- expect(res).toBe(accounts[1]);
+ expect(hexToAddress(res.toString())).toBe(accounts[1]);
});
it('fetches address', async () => {
@@ -236,7 +238,9 @@ describe('ens', () => {
await resolver.methods.setAddr(domainNode, accountOne).send(sendOptions);
+ // NOTE(rgeraldes24): ens.getAddress(domain) return type is 'bytes';
+ // value is not converted automatically to the 'address' type via ABI
const resultAddress = await ens.getAddress(domain);
- expect(resultAddress).toBe(accountOne);
+ expect(hexToAddress(resultAddress.toString())).toBe(accountOne);
});
});
diff --git a/packages/web3-zond-ens/test/unit/ens.test.ts b/packages/web3-zond-ens/test/unit/ens.test.ts
index 32a3f58b..ef66ec98 100644
--- a/packages/web3-zond-ens/test/unit/ens.test.ts
+++ b/packages/web3-zond-ens/test/unit/ens.test.ts
@@ -43,7 +43,7 @@ const { getId } = require('@theqrl/web3-net');
describe('ens', () => {
let object: Web3ContextObject;
let resolverContract: Contract;
- const mockAddress = '0x0000000000000000000000000000000000000000';
+ const mockAddress = 'Z0000000000000000000000000000000000000000';
const ENS_NAME = 'web3js.zond';
let ens: ENS;
@@ -141,10 +141,10 @@ describe('ens', () => {
expect(localEns.registryAddress).toBe(registryAddresses.main);
});
it('set params', async () => {
- const localEns = new ENS(registryAddresses.goerli, 'http://127.0.0.1:8545');
+ const localEns = new ENS(registryAddresses.main, 'http://127.0.0.1:8545');
// @ts-expect-error check clientUrl field
expect(localEns.provider?.clientUrl).toBe('http://127.0.0.1:8545');
- expect(localEns.registryAddress).toBe(registryAddresses.goerli);
+ expect(localEns.registryAddress).toBe(registryAddresses.main);
});
});
diff --git a/packages/web3-zond-ens/test/unit/jest.config.js b/packages/web3-zond-ens/test/unit/jest.config.js
index c88b5aeb..1e018350 100644
--- a/packages/web3-zond-ens/test/unit/jest.config.js
+++ b/packages/web3-zond-ens/test/unit/jest.config.js
@@ -11,7 +11,7 @@ module.exports = {
[
'json',
{
- file: 'web3-eth-ens-unit-coverage.json',
+ file: 'web3-zond-ens-unit-coverage.json',
},
],
],
diff --git a/packages/web3-zond-ens/test/unit/registry.test.ts b/packages/web3-zond-ens/test/unit/registry.test.ts
index 6a9d90cf..cac3df7b 100644
--- a/packages/web3-zond-ens/test/unit/registry.test.ts
+++ b/packages/web3-zond-ens/test/unit/registry.test.ts
@@ -23,7 +23,7 @@ import { namehash } from '../../src/utils';
describe('registry', () => {
let object: Web3ContextObject;
let registry: Registry;
- const mockAddress = '0x0000000000000000000000000000000000000000';
+ const mockAddress = 'Z0000000000000000000000000000000000000000';
const ENS_NAME = 'web3js.eth';
beforeAll(() => {
diff --git a/packages/web3-zond-ens/test/unit/resolver.test.ts b/packages/web3-zond-ens/test/unit/resolver.test.ts
index 7395bf07..36d0dcd6 100644
--- a/packages/web3-zond-ens/test/unit/resolver.test.ts
+++ b/packages/web3-zond-ens/test/unit/resolver.test.ts
@@ -30,7 +30,7 @@ describe('resolver', () => {
let registry: Registry;
let resolver: Resolver;
let contract: Contract;
- const mockAddress = '0x0000000000000000000000000000000000000000';
+ const mockAddress = 'Z0000000000000000000000000000000000000000';
const ENS_NAME = 'web3js.eth';
beforeAll(() => {
diff --git a/packages/web3-zond-iban/CHANGELOG.md b/packages/web3-zond-iban/CHANGELOG.md
index 0c08cb50..2ad5a7d4 100644
--- a/packages/web3-zond-iban/CHANGELOG.md
+++ b/packages/web3-zond-iban/CHANGELOG.md
@@ -33,90 +33,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- I've improved the security in XY (#1000)
--->
-
-## [4.0.1-alpha.2]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Changed
-
-- Updated dependencies (#5912)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-## [4.0.1-rc.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.3]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.4]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.5]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.6]
-
-### Changed
-
-- Dependencies updated
-
-## [Unreleased]
\ No newline at end of file
+-->
\ No newline at end of file
diff --git a/packages/web3-zond-iban/README.md b/packages/web3-zond-iban/README.md
index 11c7e523..7b6a3341 100644
--- a/packages/web3-zond-iban/README.md
+++ b/packages/web3-zond-iban/README.md
@@ -11,7 +11,7 @@
This is a sub-package of [web3.js][repo].
-`web3-eth-iban` This package converts Ethereum addresses to IBAN addresses a vice versa.
+`web3-zond-iban` This package converts Zond addresses to IBAN addresses a vice versa.
## Installation
@@ -20,13 +20,13 @@ You can install the package either using [NPM](https://www.npmjs.com/package/web
### Using NPM
```bash
-npm install web3-eth-iban
+npm install web3-zond-iban
```
### Using Yarn
```bash
-yarn add web3-eth-iban
+yarn add web3-zond-iban
```
## Getting Started
diff --git a/packages/web3-zond-iban/package.json b/packages/web3-zond-iban/package.json
index 5f571bd5..4854da02 100644
--- a/packages/web3-zond-iban/package.json
+++ b/packages/web3-zond-iban/package.json
@@ -1,10 +1,10 @@
{
"name": "@theqrl/web3-zond-iban",
- "version": "0.2.1",
+ "version": "0.3.0",
"publishConfig": {
"access": "public"
},
- "description": "This package converts Ethereum addresses to IBAN addresses and vice versa.",
+ "description": "This package converts Zond addresses to IBAN addresses and vice versa.",
"main": "./lib/commonjs/index.js",
"module": "./lib/esm/index.js",
"exports": {
@@ -45,7 +45,7 @@
"test:integration": "jest --config=./test/integration/jest.config.js --passWithNoTests --runInBand"
},
"devDependencies": {
- "@theqrl/eslint-config-base-web3": "^0.2.1",
+ "@theqrl/eslint-config-base-web3": "^0.3.0",
"@types/jest": "^28.1.6",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
@@ -59,10 +59,10 @@
"typescript": "^4.7.4"
},
"dependencies": {
- "@theqrl/web3-errors": "^0.2.1",
- "@theqrl/web3-types": "^0.2.1",
- "@theqrl/web3-utils": "^0.2.1",
- "@theqrl/web3-validator": "^0.2.1"
+ "@theqrl/web3-errors": "^0.3.0",
+ "@theqrl/web3-types": "^0.3.0",
+ "@theqrl/web3-utils": "^0.3.0",
+ "@theqrl/web3-validator": "^0.3.0"
},
"gitHead": "d4f3246946fec86d908a215b27568aa8faea88d7"
}
diff --git a/packages/web3-zond-iban/src/iban.ts b/packages/web3-zond-iban/src/iban.ts
index dc891b9a..53d76978 100644
--- a/packages/web3-zond-iban/src/iban.ts
+++ b/packages/web3-zond-iban/src/iban.ts
@@ -16,8 +16,8 @@ along with web3.js. If not, see .
*/
import { HexString } from '@theqrl/web3-types';
-import { toChecksumAddress, leftPad, hexToNumber } from '@theqrl/web3-utils';
-import { isAddress } from '@theqrl/web3-validator';
+import { toChecksumAddress, leftPad, toNumber, hexToAddress, addressToHex } from '@theqrl/web3-utils';
+import { isAddressString } from '@theqrl/web3-validator';
import { InvalidAddressError } from '@theqrl/web3-errors';
import { IbanOptions } from './types.js';
@@ -259,16 +259,16 @@ export class Iban {
*
* @example
* ```ts
- * web3.zond.Iban.fromAddress("0x00c5496aEe77C1bA1f0854206A26DdA82a81D6D8");
+ * web3.zond.Iban.fromAddress("Z00c5496aEe77C1bA1f0854206A26DdA82a81D6D8");
* > Iban {_iban: "XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS"}
* ```
*/
public static fromAddress(address: HexString): Iban {
- if (!isAddress(address)) {
+ if (!isAddressString(address)) {
throw new InvalidAddressError(address);
}
- const num = BigInt(hexToNumber(address));
+ const num = BigInt(toNumber(addressToHex(address)));
const base36 = num.toString(36);
const padded = leftPad(base36, 15);
return Iban.fromBban(padded.toUpperCase());
@@ -286,7 +286,7 @@ export class Iban {
* @example
* ```ts
* web3.zond.Iban.toAddress("XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS");
- * > "0x00c5496aEe77C1bA1f0854206A26DdA82a81D6D8"
+ * > "Z00c5496aEe77C1bA1f0854206A26DdA82a81D6D8"
* ```
*/
public static toAddress = (iban: string): HexString => {
@@ -306,7 +306,7 @@ export class Iban {
* ```ts
* const iban = new web3.zond.Iban("XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS");
* iban.toAddress();
- * > "0x00c5496aEe77C1bA1f0854206A26DdA82a81D6D8"
+ * > "Z00c5496aEe77C1bA1f0854206A26DdA82a81D6D8"
* ```
*/
public toAddress = (): HexString => {
@@ -315,7 +315,7 @@ export class Iban {
const base36 = this._iban.slice(4);
const parsedBigInt = Iban._parseInt(base36, 36); // convert the base36 string to a bigint
const paddedBigInt = leftPad(parsedBigInt, 40);
- return toChecksumAddress(paddedBigInt);
+ return toChecksumAddress(hexToAddress(paddedBigInt));
}
throw new Error('Iban is indirect and cannot be converted. Must be length of 34 or 35');
};
@@ -328,7 +328,7 @@ export class Iban {
*
* @example
* ```ts
- * web3.zond.Iban.toIban("0x00c5496aEe77C1bA1f0854206A26DdA82a81D6D8");
+ * web3.zond.Iban.toIban("Z00c5496aEe77C1bA1f0854206A26DdA82a81D6D8");
* > "XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS"
* ```
*/
diff --git a/packages/web3-zond-iban/test/fixtures/iban.ts b/packages/web3-zond-iban/test/fixtures/iban.ts
index a62ba914..533c0f58 100644
--- a/packages/web3-zond-iban/test/fixtures/iban.ts
+++ b/packages/web3-zond-iban/test/fixtures/iban.ts
@@ -18,10 +18,10 @@ along with web3.js. If not, see .
import { IbanOptions } from '../../src/types';
export const validIbanToAddressData: [string, string][] = [
- ['XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36', '0x8ba1f109551bD432803012645Ac136ddd64DBA72'],
- ['XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS', '0x00c5496aEe77C1bA1f0854206A26DdA82a81D6D8'],
- ['XE76LL5FJYLSMDVW5J02HWU6R5ZVPHURYM9', '0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01'],
- ['XE76LL5FJYLSMDVW5J02HWU6R5ZVPHURYM9', '0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01'],
+ ['XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36', 'Z8ba1f109551bD432803012645Ac136ddd64DBA72'],
+ ['XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS', 'Z00c5496aEe77C1bA1f0854206A26DdA82a81D6D8'],
+ ['XE76LL5FJYLSMDVW5J02HWU6R5ZVPHURYM9', 'Zb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01'],
+ ['XE76LL5FJYLSMDVW5J02HWU6R5ZVPHURYM9', 'Zb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01'],
];
export const invalidIbanToAddressData: [string, Error][] = [
@@ -32,9 +32,9 @@ export const invalidIbanToAddressData: [string, Error][] = [
];
export const invalidAddressData: [string][] = [
- ['0x1'],
- ['0xE247a45c287191d435A8a5D72A7C8dc030451E9F'], // Invalid checksum
- ['-0x407d73d8a49eeb85d32cf465507dd71d507100c1'],
+ ['Z1'],
+ ['ZE247a45c287191d435A8a5D72A7C8dc030451E9F'], // Invalid checksum
+ ['-Z407d73d8a49eeb85d32cf465507dd71d507100c1'],
];
export const validFromBbanData: [string, string][] = [['ETHXREGGAVOFYORK', 'XE81ETHXREGGAVOFYORK']];
diff --git a/packages/web3-zond-iban/test/unit/jest.config.js b/packages/web3-zond-iban/test/unit/jest.config.js
index 7e869778..cad079c8 100644
--- a/packages/web3-zond-iban/test/unit/jest.config.js
+++ b/packages/web3-zond-iban/test/unit/jest.config.js
@@ -11,7 +11,7 @@ module.exports = {
[
'json',
{
- file: 'web3-eth-iban-unit-coverage.json',
+ file: 'web3-zond-iban-unit-coverage.json',
},
],
],
diff --git a/packages/web3-zond-personal/.eslintignore b/packages/web3-zond-personal/.eslintignore
deleted file mode 120000
index 94760d28..00000000
--- a/packages/web3-zond-personal/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-../../templates/.eslintignore.tmpl
\ No newline at end of file
diff --git a/packages/web3-zond-personal/.eslintrc.js b/packages/web3-zond-personal/.eslintrc.js
deleted file mode 100644
index 12a507e5..00000000
--- a/packages/web3-zond-personal/.eslintrc.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = {
- extends: '../../.eslintrc.js',
- parserOptions: {
- project: './tsconfig.esm.json',
- tsconfigRootDir: __dirname,
- },
-};
diff --git a/packages/web3-zond-personal/.gitignore b/packages/web3-zond-personal/.gitignore
deleted file mode 100644
index e69de29b..00000000
diff --git a/packages/web3-zond-personal/.npmignore b/packages/web3-zond-personal/.npmignore
deleted file mode 100644
index 0b1a9d71..00000000
--- a/packages/web3-zond-personal/.npmignore
+++ /dev/null
@@ -1,26 +0,0 @@
-.babelrc
-.eslintignore
-.eslintrc.json
-.eslintrc.js
-.gitignore
-.lintstagedrc.json
-.nycrc
-.prettierrc.json
-.prettierignore
-cypress.json
-index.html
-Jenkinsfile*
-*.log
-
-.nyc_output/
-coverage/
-benchmark/
-.coverage/
-cypress/
-fixtures/
-tmp/
-logs/
-test/
-scripts/
-browsertest/
-examples/
diff --git a/packages/web3-zond-personal/.prettierignore b/packages/web3-zond-personal/.prettierignore
deleted file mode 120000
index 044e4a3d..00000000
--- a/packages/web3-zond-personal/.prettierignore
+++ /dev/null
@@ -1 +0,0 @@
-../../templates/.prettierignore.tmpl
\ No newline at end of file
diff --git a/packages/web3-zond-personal/.prettierrc.json b/packages/web3-zond-personal/.prettierrc.json
deleted file mode 100644
index 7b23ef55..00000000
--- a/packages/web3-zond-personal/.prettierrc.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "printWidth": 100,
- "singleQuote": true,
- "trailingComma": "all",
- "useTabs": true,
- "arrowParens": "avoid"
-}
diff --git a/packages/web3-zond-personal/CHANGELOG.md b/packages/web3-zond-personal/CHANGELOG.md
deleted file mode 100644
index 30d2ae17..00000000
--- a/packages/web3-zond-personal/CHANGELOG.md
+++ /dev/null
@@ -1,138 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-
-
-## [4.0.1-alpha.1]
-
-### Added
-
-- `web3-rpc-methods` dependency (#5441)
-
-### Changed
-
-- Import `EthPersonalAPI` from `web3-types` instead of local import (#5441)
-- Replace the imported methods from `rcp_methods.ts` with `personalRpcMethods` imports from `web3-rpc-methods` (#5441)
-- Replace use of `EthPersonalAPIManager` with `Web3RequestManager` (#5441)
-
-### Removed
-
-- Exported type `EthPersonalAPIManager`, `EthPersonalAPI` is not exported via `web3-types` (#5441)
-
-## [4.0.1-alpha.2]
-
-### Changed
-
-- Updated Web3.js dependencies (#5664)
-
-## [4.0.1-alpha.3]
-
-### Changed
-
-- Updated dependencies (#5725)
-
-## [4.0.1-alpha.4]
-
-### Changed
-
-- `tsc` compiled files moved to `lib/` directory from `dist/` (#5739)
-
-## [4.0.1-alpha.5]
-
-### Changed
-
-- web3.js dependencies (#5757)
-
-## [4.0.1-rc.0]
-
-### Changed
-
-- Updated dependencies (#5912)
-
-## [4.0.1-rc.1]
-
-### Added
-
-- Added source files (#5956)
-- Added hybrid build (ESM and CJS) of library (#5904)
-
-## [4.0.1-rc.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.1]
-
-Release Notes:
-
-Detailed List of change logs are mentioned under previous 4.x alpha and RC releases.
-
-Documentation:
-[Web3.js documentation](https://docs.web3js.org/)
-[Web3 API](https://docs.web3js.org/api)
-[Migration Guide from 1.x](https://docs.web3js.org/guides/web3_upgrade_guide/x/)
-
-## [4.0.2]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.3]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.4]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.5]
-
-### Changed
-
-- Dependencies updated
-
-## [4.0.6]
-
-### Changed
-
-- Dependencies updated
-
-## [Unreleased]
\ No newline at end of file
diff --git a/packages/web3-zond-personal/README.md b/packages/web3-zond-personal/README.md
deleted file mode 100644
index 857d97d8..00000000
--- a/packages/web3-zond-personal/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-# web3.js - Web3-Eth-Personal
-
-
-
-[![NPM Package][npm-image]][npm-url]
-[![Downloads][downloads-image]][npm-url]
-
-This is a sub-package of [web3.js][repo].
-
-`web3-eth-personal` Web3 module to interact with the Ethereum blockchain accounts stored in the node.
-
-## Installation
-
-You can install the package either using [NPM](https://www.npmjs.com/package/web3-eth-personal) or using [Yarn](https://yarnpkg.com/package/web3-eth-personal)
-
-### Using NPM
-
-```bash
-npm install web3-eth-personal
-```
-
-### Using Yarn
-
-```bash
-yarn add web3-eth-personal
-```
-
-## Getting Started
-
-- :writing_hand: If you have questions [submit an issue](https://github.com/ChainSafe/web3.js/issues/new) or join us on [Discord](https://discord.gg/yjyvFRP)
- 
-
-## Prerequisites
-
-- :gear: [NodeJS](https://nodejs.org/) (LTS/Fermium)
-- :toolbox: [Yarn](https://yarnpkg.com/)/[Lerna](https://lerna.js.org/)
-
-## Package.json Scripts
-
-| Script | Description |
-| ---------------- | -------------------------------------------------- |
-| clean | Uses `rimraf` to remove `dist/` |
-| build | Uses `tsc` to build package and dependent packages |
-| lint | Uses `eslint` to lint package |
-| lint:fix | Uses `eslint` to check and fix any warnings |
-| format | Uses `prettier` to format the code |
-| test | Uses `jest` to run unit tests |
-| test:integration | Uses `jest` to run tests under `/test/integration` |
-| test:unit | Uses `jest` to run tests under `/test/unit` |
-
-[docs]: https://docs.web3js.org/
-[repo]: https://github.com/web3/web3.js/tree/4.x/packages/web3-eth-personal
-[npm-image]: https://img.shields.io/github/package-json/v/web3/web3.js/4.x?filename=packages%2Fweb3-eth-personal%2Fpackage.json
-[npm-url]: https://npmjs.org/package/web3-eth-personal
-[downloads-image]: https://img.shields.io/npm/dm/web3-eth-personal?label=npm%20downloads
diff --git a/packages/web3-zond-personal/assets/logo/web3js.ai b/packages/web3-zond-personal/assets/logo/web3js.ai
deleted file mode 100644
index 669ef50e..00000000
--- a/packages/web3-zond-personal/assets/logo/web3js.ai
+++ /dev/null
@@ -1,1516 +0,0 @@
-%PDF-1.5
%
-1 0 obj
<>/OCGs[5 0 R 6 0 R 29 0 R 30 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<>stream
-
-
-
-
- application/pdf
-
-
- Print
-
-
-
-
- 2017-01-27T15:51:37Z
- 2017-01-27T15:51:37Z
- 2017-01-27T14:51:33Z
- Adobe Illustrator CS6 (Macintosh)
-
-
-
- 256
- 240
- JPEG
- /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA8AEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7F+an5hy6Ov6F0qTjqMq
VubhTvCjDYL4Ow3r2Hz2IQ8x8teevMXl+cvaXBlgdi01pMS8Tk7k0rUMfFTXCr2Xyl+Z/l/X+FvI
31DUWoPqszCjn/iuTYN8tj7YKSzDArsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs
VdirsVdirsVdirsVdirsVdir5W1nUptU1a71CYkvdSvKa9gx2H0DbJIQeKtqrMwVQWZjRVG5JPYY
q+ify70jzPpujKmvXrTu4BgtX+NoFp9lpDuT/k9BgKWV4FdirsVdirsVdirsVdirsVdirsVdirsV
U57m2t053EqQp/NIwUfecjKQHM0yhCUjQFpZL5v8qxNxfV7OvQgTxtSnjQnKDrMI/jj83Kj2dqDy
xz+RaTzl5TduK6vaV95kX8SRiNbhP8cfmk9m6gf5OXyKZ215aXSc7aeOdP5o2Vx96k5fGcZcjbiz
xyhtIEe9VyTB2KuxV2KuxV2KuxV2KuxV2KuxV8lZJDsVejfkt5biv9Zn1a4TlFpoX0ARsZ3rRv8A
YKCfmRgKh7fgS7FUDrOuaVotk17qVwtvbqaAtUlmP7KqKsx+WKqunanp+pWqXdhcJc27/ZkjNR8j
4H2OKonFXYq7FXYq7FXYq7FXEgCp2AxVhPmT81tA0pmgsv8AcldrsREwEKn3k3r/ALEHNVqe1seP
aPqP2fN3ui7BzZd5+iPnz+X63nWr/mf5u1FmC3X1GE9IrUemR/s93/4bNLm7UzT68I8vxb0un7D0
2P8Ah4j/AEt/s5MXnuLi4kMlxK80h6vIxZj9JzAlIk2TbtYQjEUBQU8iydiq+KaaGQSQu0ci/ZdC
VI+RGSEiDYRKIkKIsMq0T8z/ADXpjKslx9fgHWK6q5p7Sfb+8nM/B2pmhzPEPP8AW6jU9h6fLyHA
f6P6uT07yv8AmVoGuMlu7fUb9qAW8xHFj4RvsG+Wx9s32l7Tx5dvpl3F5bXdi5sHqHqh3j9IZZmx
dO7FXYq7FXYq7FXYq7FXYq+Sskh2Kvb/AMjEUeVrx6fE186k+ywxEf8AEsBUPRsCVO5uIba3luJ2
CQwo0krnoFUVY/QBir5s85ebL3zLrEl3MxW1QlbO2rtHH/zU3Vj/AApkkILQ/MOs6HdC50y5e3fb
mo3RwOzofhYYq9g8pfnFpOo8LXWlXTrw7Cev+jufmd4/9lt74KW3oaOrqHQhkYAqwNQQehBwJbxV
2KuxV2Ksf8zeedB8voUupfVvKVWzio0m/Tl2UfPMPVa7Hh5m5dzsdD2Xm1H0io955fteQeaPzD17
Xy8LP9U089LSEkAj/ixur/q9s5vVdo5M23KPd+t7PQ9j4dPvXFPvP6O5i+a92rsVdiqZ2HljzFfo
JLPTbiaNvsyLG3A/7Ijj+OZGPS5Z/TEn4OLl12HGalOIPvdqHlrzBpyGS9064giHWVo24D/ZAcfx
wZNNkhvKJC4dbhyGoTiT70syhynYq7FXonkT8z7mxkj07W5TNYGixXbVMkPhyPVk/EZutB2oYHhy
G49/c832r2HHIDPEKn3dD+17EjpIiyRsHRwGR1NQQdwQRnSg28WQQaLeFDsVdirsVdirsVdir5Ky
SHYq9x/I3/lErv8A5j5P+TMOAqHomBLE/wA1LuS28i6kYzRpRHFX2eVQ33rUYQr52wodirI/I/ky
880ap9XRjDZQUe8uaV4qTsq/5TdsVfQ+k6TYaTp8On2MfpWsAoi1JO+5JJ6knIpReKuxVA6xruk6
Pam51K5S3i/ZDbsx8EUfEx+WU5s8MQuRpyNNpcmaXDAWXk/mn83NTvudtoqtYWpqDcGnrsPYjaP6
N/fOe1Xa857Y/SPt/Y9doPZ7Hj9WX1y7un7fxswB3d3LuxZ2NWYmpJPck5pybeiAAFBbgS7FU68u
+UNc8wTcbCA+ippJdSfDEvzbufYVOZWm0eTMfSNu/o4Ws7Rxaces793V655W/LHQtFCT3KjUL8UP
qygemh/yI9x9JqflnR6XsvHi3Pqk8br+3M2faPoh5c/iWY5s3SuIBFDuDiryb82vKGk2FtFrNii2
0kswhuIF2Ryylg6r2Pw7065zva+jhADJHbd7D2f7RyZJHFP1ACwXmOaF6l2KuxVm/lb81NT0TT4t
PmtUvbaEkRFnKSKpNePKjCg7bZtdL2rPFERI4gHRa7sHHnmZiXDI/JnOkfm75XvWWO69XT5TtWVe
Udf9dK/iBm2w9sYpbG4uh1Hs9qIbxqY8ufyLMrW7tbuBZ7WZJ4X3WWNgyn5EbZs4zEhYNh0k8coG
pCj5quSYOxV2KuxV2KvkrJIdir3H8jf+USu/+Y+T/kzDgKh6JgSwz83v+UFvf+MkH/J1cIUvn3Ch
2Kvoj8rdGi0zydZMFpNfD61M3c+p9j7k44ClluBXYq8288fm5BplxJpuiqtxdxkrPdNvHGw2KqP2
2HfsPfIZYzMTwECXm24JYxMeICY9aeU3+q32qXLXd7cPczv1kc1NPADsPYZxusxZoz/e3fe+i9nZ
tPPHWGqHTr8f1ofMRz3YqitN0vUdTultbC3e5nboiCtB4k9APc5ZixSmaiLLVmzwxR4pnhD1Pyt+
T9rb8LrX3FxKKEWUZIiH+u2xb5Db550Gk7HA3ybnueT1/tFKXpwjhH848/h3fjk9Hgggt4UggjWK
GMcY40AVVA7ADYZu4xAFDYPMzmZGybJX4WLsVSDzN530Hy+hW7m9S7IqlnFRpD4V7KPdvormHqtd
jw/Ud+52Oi7Lzag+kVHvPL9rxfzf5z1LzLdrJcAQ2kVfq9opJVa/tE/tMfHOX1mtlnlZ2A5B7fs7
s2GljQ3keZ/HRj+YbsXYq7FXYq7FUfpGvavo9wJ9Ount3rVgp+BvZkPwt9Iy7DqJ4zcTTj6jSY8w
qcQXqvlT827C+KWmtqtldHZbla+gx/yq7x/Tt7jOh0na8Z7ZPSe/p+x5LX+z88fqxeqPd1/a9DBD
AEGoO4I6UzcvNuxV2KuxV8lZJDsVe4/kb/yiV3/zHyf8mYcBUPRMCWGfm9/ygt7/AMZIP+Tq4Qpf
PuFDsVfT/lD/AJRLRP8AmAtf+TK5FKbYqw780/M82heWmW1bhe37fV4XGxRaVkcfJdh7nCFfPeFD
asymoNDkJ44zFSFhniyyxy4omiERBK0jrGFJkYhVCipJOwAAzQ6vsXri+X6j+t6rQe0f8Ocf5w/S
P1fJ6R5W/KLUb3hc62zWNsdxbCnrsPfqE+nf2yjS9jylvk9I7urk672hhD04vVLv6fteraRomlaP
ai1063S3iFOXEfExHd2O7H550OHBDGKiKeS1GqyZpcUzZR2WuO7FUDq+t6Vo9qbrUblLeL9nkfiY
jsij4mPyyrNnhjFyNN+n0uTNLhgLLynzT+buo3vO20RTZWx2Ny1PXYe1Nk+jf3zntV2xKW2P0jv6
/seu0Hs9CHqy+qXd0/a8+kkkkdpJGLu5LM7GpJPUknNMTe5ejAAFBbgS7FU20Lyrr2uOV020aVFN
HmNEjX5u1BX265k4NJky/SHE1Wvw4B65V5dfky+D8lNcaMGe/to3/lUO4+8hc2UexMlbyDpZe02I
HaMj8kr1r8q/NOmxNPHGl/Cu7G2JZwPeNgrH/Y1zHz9lZoCx6h5OXpu3tPlNEmB8/wBf62HkEEgi
hGxBzWu6awK7FWe/l3+YVxpNxFpepyGTSpCEjkY1MBPQg/yeI7dRm37O7ROMiE/o+79jz/bHY4zA
5MY/eD/Zfte1Agio3BzqXhnYq7FXyVkkOxV7j+Rv/KJXf/MfJ/yZhwFQ9EwJYZ+b3/KC3v8Axkg/
5OrhCl8+4UOxV9P+UP8AlEtE/wCYC1/5MrkUptiryD8+nb6xoyV+EJcED3Jjr+rCEF5ThV2Kvbvy
o8h2+n2EOu38YfUbpedqrD+5iYfCQP53G9ew28cBV6PgS7FVk88FvC888ixQxjlJI5CqoHck7DBK
QAs7BlCBkaAsl5x5p/OC1t+droCC4lFQb2QERD/UXYt8zt880mr7YA2x7nvem0Hs7KXqzHhH80c/
j3fjk8s1LVNR1O6a6v7h7m4bq7mtB4AdFHsM5/LllkNyNl6zDghijwwHCELlba7FUVp2mahqV0tr
YW73Nw3SOMVNPE9gPc5ZjxSmaiLLVmzwxR4pnhD1Hyt+T1vDwutfcTSbEWURogP+W43b5Db55v8A
S9jgb5N/J5TX+0Uj6cIofzjz+AekW9vBbQpBbxrDDGKJFGAqqPAAbDN5GIiKGweYnMyNyNlUwsXY
q8L/ADZXS182v9RCiX0kN8E6evU1/wBlw41/rXOT7WEPG9Pdv73vuwDk/LDj5X6fd/bbDM1bu3Yq
7FX0R5CuprnyfpcszFpPR4Fj1IjYotfoXO00EjLBEnufNu1oCOpmByv790/zMde7FXyVkkOxV7j+
Rv8AyiV3/wAx8n/JmHAVD0TAlhn5vf8AKC3v/GSD/k6uEKXz7hQ7FX0/5Q/5RLRP+YC1/wCTK5FK
bYq8f/Pn/evR/wDjHP8A8STCEF5VhVHaDZpfa5p1lJ/d3V1DC/ykkCn9eKvqcAKAqigGwA6AZFLs
VdirHPOfk2HzLaJGbuW2mhqYuJLRE/5cdaH5jfMLW6IZ41ZBHy+Ts+ze0jpZXwiQPz+BeK+YvKGu
6BLxv4D6JNI7qP4om+Tdj7GhzltTo8mE+obd/R7jR9o4tQPQd+7qkuYrnLkR3cIilnY0VQKkk9gB
hAtBIAss/wDK35R6nfcLnWmawtTuIBT6ww9wdk+nf2zcaXsic98npH2/sed1/tDjx+nF65d/8P7f
xu9X0fQtJ0a1FtptstvF1YjdmPi7H4mPzzocOCGIVEU8jqdVkzS4pmyj8ucd2KoLVta0vSLU3Wo3
KW8I6FjuxHZVHxMfYZVmzQxi5Gg36fTZM0uGAsvKvNP5vahec7bQ0NlbHY3TUM7D/J6hPxPuM5/V
dsSltj9I7+v7HrtB7PQh6svql3dP2vO2ZnYsxLMxqzHcknqSc0pL0gFNYFdiqe+VfKGq+Yr1YrZC
lorD6zeMPgRe/wDrNTov8My9Jo55pUOXUuBr+0cemhcj6ug7/wBnm+g7Cxt7CygsrZeMFuixxjvx
UUFffOyxwEIiI5B85y5ZZJmUuZNq+Ta3Yq+UL62a1vbi2b7UEjxmvijFfbwySFHFXuP5G/8AKJXf
/MfJ/wAmYcBUPRMCWGfm9/ygt7/xkg/5OrhCl8+4UOxV9P8AlD/lEtE/5gLX/kyuRSm2KvH/AM+f
969H/wCMc/8AxJMIQXlWFU28of8AKW6J/wAx9r/yeXFX0/kUuxV2KuxVZPBBcQvBPGssMg4yRuAy
sD2IOxwSiCKO4ZQmYmwaIee+YPyc027uBPpFx9QDt+9gcGSMA9Sm4Yf6tafLNNqOxoyNwPC9HpPa
OcI1kHH58j8WSeWfI2g+X0DW0XrXlKNeS0aT349lHyzO0ugx4eQuXe6zW9qZtQfUaj3Dl+1kOZjr
XYqsmmhgieaZ1iiQcnkchVUDuSdhglIAWeTKMTI0BZedeafzfs7bna6Cgup+hvJAREv+ouxf8B88
0mq7YjHbHue/o9LoPZ2UvVm9I7uv7Hlep6tqWqXTXWoXD3E7ftOeg8FHRR7DNBlzSyG5Gy9Zg08M
UeGAoITKm52KonT9Nv8AUbpbWxge4uH+zHGKn5nwHucsx45TNRFlqzZoY48UzQeoeVvyegj4XXmB
/Vk6ixiNEH/GRxu3yX7zm+0vYwG+T5PK6/2jJ9OEV/SP6B+t6VbW1vbQJBbRJDBGKJFGoVVHgANs
3kYiIoCg8vOcpG5GyVTJMXYq7FXzl+ZumHT/ADrqSUolw4uUPj6w5sf+DLDJBDF8Ve0fkTeI+ial
ZV+OG5ExHeksYUf8msBUPTcCWGfm9/ygt7/xkg/5OrhCl8+4UOxV9P8AlD/lEtE/5gLX/kyuRSm2
KvH/AM+f969H/wCMc/8AxJMIQXlWFU28of8AKW6J/wAx9r/yeXFX0/kUuxV2KuxV2KuxV2KuxViP
mr8ytD0IvbRH69qK7G3jPwof+LH3A+Qqc12r7Sx4dvql3frdx2f2Ll1FSPph3/qDyHzH5x13zBLW
+nItwax2kfwxL/se592qc5vU6zJmPqO3d0ez0fZ2HTj0Dfv6pJmI5zsVbVWdgqgszGiqNySegAwg
KTTP/K35SapqHC51gmwtDuIf93uPkdk/2W/tm40vZE57z9I+39jzuv8AaDHj9OL1y7+n7fxu9X0b
QNI0W2+r6bbLAm3Nhu7kd3Y7nOhw6eGIVEU8jqdXkzy4pm0wy5xnYq7FXYq7FXln55aC0tpZa5Et
Tbn6tckfyOeUZ+Qao+nCEF47hVlH5dea18ueYUnnJ+o3K+hd0/ZUkEPT/IP4VxKvouGaKaJJoXWS
KRQ0cikFWUioII6g5FLDfzfZR5GuwTQtLCFHifUB/UMIUvn7Ch2Kvp/yh/yiWif8wFr/AMmVyKU2
xV4/+fP+9ej/APGOf/iSYQgvKsKpt5Q/5S3RP+Y+1/5PLir6fyKXYqg4tXsJL2WxEoW6iNDG2xNR
X4fHriqMxV2KuxV2KsR84eY5InbTbNuL0/0iVeor+wD+vChgV9ptnepSdKsNlkGzD5HMbU6PHmHq
G/f1c3R9oZdObgdu7oxnUfLt5a1eL9/CP2lHxAe6/wBM5vV9l5MW49Ufx0ey0HbuLP6Zeifny+BS
nNW7tk3lf8v9e18rLHH9VsD1vJgQpH+QvV/1e+Z+l7PyZtxtHvdXru18On2J4p9w/T3PX/LHkTQf
L6q9vF697T4ryUAv78OyD5fTXOk0ugx4eQuXe8Zru1c2o2kaj3Dl+1kWZrrXYq7FXYq7FXYq7FUJ
q+mW2q6Zc6ddCsF1G0b+Ir0Ye6ncYq+Y9c0e80bVbnTbtaTWzlSezL1Vx7Mu4ySEDirKvKf5j+YP
LiC3hZbqwrX6pNUha9fTYbr+r2xpVTzv+Y2o+aYYLV7dLOyhb1PRVi5aShAZmIXoCaCmNKxHFXYq
+n/KH/KJaJ/zAWv/ACZXIpTbFXj/AOfP+9ej/wDGOf8A4kmEILyrCqbeUP8AlLdE/wCY+1/5PLir
6fyKXYq8z80kjzBdkbEMtD/sBhQjtH86XtrxivK3UA25E/vFHz/a+n78aVmmn6pY6hF6lrKHH7S9
GX5r1GBKKxVbI4SNnPRQWPyAriryOeZ555JpDV5WLsfdjU4ULMKtxxvI6xxqWdyFVRuST0AxVmGj
/lvokM0d/qNulxfD4vTO8QPXdejt7nMOWhwynxmIt2EO09RHH4YmeH8cjzZgAFAAFANgB0pmU4Ds
VdirsVdirsVdirsVdirsVYR+ZvkMeYbAXtkoGr2in0x09aMbmM+/8v3d8IV4FJG8btHIpSRCVdGF
CCNiCD3woaxV2KuxV2Kvo78tNUj1DyXprqavbR/VZV6lTD8AB+acT9ORKWT4q8f/AD5/3r0f/jHP
/wASTCEF5VhVNvKH/KW6J/zH2v8AyeXFX0/kUuxV5n5q/wCO/ef6y/8AEBhQlWFWT+QP+Olcf8Yf
+NhgKhnWBKje/wC8c/8Axjf/AIicVeSZJDsVZX5D01ZJ5r+QV9H93DX+ZhVj9A/XgKhm2BLsVdir
sVdirsVdirsVdirsVdirsVYJ5/8AyxtPMAa/0/ja6uBVido56dnp0bwb7/Y2rw/VNK1HSrx7PULd
7a5j+1G4pt4g9CD4jChC4q7FXYqzX8svPK+XNRe2vSf0TeEesQK+lINhIB4U2b+zEq98t7iC5gSe
3kWWCUBo5UIZWU9CCOuRS8c/PW8hk1jTbRSDLBA7yAHp6rAKD/wGEILzHCqbeUP+Ut0T/mPtf+Ty
4q+n8il2KsP8zeVL24u5b+zImMlC8HRhQAfD2PTChh7o8blHUo6mjKwoQfcHCrJvIH/HSuP+MP8A
xsMBUM6wJUb3/eOf/jG//ETiryTJIdirP/IoA0Vqd5nr/wACuApDIsCuxVL9V17TdMAFy5MrCqwo
KuR407fTiqSf8rAtOVPqknDx5LX7v7cNItMLLzhol0QrSG3c9BMOI/4IEr95wUlOlZWUMpBU7gjc
EYq3irsVdirsVdirsVdiqX615f0fW7X6tqdqlzH+wWFHQnujijKfkcVebaz+RSM7SaPqPBT9mC6W
tP8Anon/ADThtFJVB+RfmUvSe+skjp9pGlc1+RjT9eNrTz/ULC70+9msruMxXNu5SWM9iP4eGFVD
FU00fzT5h0YMumX8tsjbtGpqhPjwaq196Yqgb2+vL66kuryZ57mU1klkJZienU4qo4qm/k8E+bdE
p/y323/J5cVfT2RS7FXYql+q6Fp2ppS4jpKBRZl2cfT3+nFUs8veXLrSdTndnEtu8XGOQbGvIGhX
CrI8CqN7/vHP/wAY3/4icVeSZJDsVegeRf8Ajit/xmf9S4ClkOBVG9uktLSa5f7MKFyPGg6fTiry
m7upru5kuJm5SysWY/wHywoUsKuxVMdJ1/UdMYehJyhr8UD7ofl4fRgVm+j+adN1HjGW9C5O3oue
p/yW7/rwJTnFXYq7FXYq7FXYq7FXYq7FWBfmd+Xo163Op6cgGsW60KCgE6D9k/5Y/ZP0eFCCrwmW
KWGV4pUaOWMlXjcFWVgaEEHcEYULcVdirsVZR+WVg17530xQKrC7TufARKWH/DADEq+jcil2KuxV
2KuxV2KqN7/vHP8A8Y3/AOInFXkmSQ7FXoHkX/jit/xmf9S4ClkOBUk85SlNAnA/3YyL/wAMD/DE
K85ySHYq7FXYq7FU/wBH84ahZcYrmt1bDajH41Hs3f5HBSs103WNP1KPnayhiPtRnZ1+a4Eo3FXY
q7FXYq7FXYq7FXYqw3zv+Wul+ZA11CRZ6sBtcgfDJToJVHXw5dfn0w2rxHX/ACvrmgXPoanbNFUk
RzD4on90cbH5dfHChKsVdir2n8mfKU9jaTa7eIUmvVEdojChEFQxf/ZkCnsPfAVD0zAl2KsM1TzH
qWleYLmMH1rUlW9F+lCin4T1XChkGk+YdN1NQIX4T03gfZvo8fowJTPFXYqo3v8AvHP/AMY3/wCI
nFXkmSQ7FXoHkX/jit/xmf8AUuApZDgVIvOiFtBlI/ZdCf8AgqfxxCvO8kh2Kpxp/lTVr61FzEES
Nv7v1GILDpsAD+OBUBfabe2EvpXcLRN2J3B+RGxxVDYVdiq+GaaGRZYXaORTVXU0I+kYFZXo/nll
4w6mvIdBcIN/9ko6/RjS2zPAl2KuxV2KuxV2KuxV2KqVza2t1A0F1Ck8D7PFIodT81NRirDtS/J/
yXeyNJHDNZM25FtJRa+yyCRR9Aw2tL9H/KTybps6zmGW+kQ1T624dQf9RFRT/sgcbVmeBXYq7FWC
efbYpqUNwB8M0VK/5SHf8CMIQWMqzKwZSQw3BGxBwqzXyd5gvru4axu3EoWMvHK326ggUJ77HAVZ
ZgSo3v8AvHP/AMY3/wCInFXkmSQ7FXoHkX/jit/xmf8AUuApZDgVL/MFsbnRbyIbkxllHiU+Mf8A
EcVeXZJDsVeraRw/RVnw+z6EdPlwGRSrXNrb3URhuI1ljbqrCoxViGseRpE5TaY3Nept3PxD/VY9
fpw2imKSxSwyNHKjRyKaMjAgg+4OKrcKuxV7DkUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVIPOl
gbnSDMgrJat6n+xOzf1+jEK89ySEZo2oHT9Sguuqo1JB4o2zfgcCvU4pY5Y1ljYPG4DIw6EHocCV
O9/3jn/4xv8A8ROKvJMkh2KvQPIv/HFb/jM/6lwFLIcCuIBFD0xV5XrNg1hqc9sRRVasZ8Ubdfww
oQWFWe+StWS40/6k7fv7avEHq0ZOx+itMBSyTArsVQWp6Np+pR8LqIFgKLKuzr8jirCdY8oahY8p
YK3VsN+Sj41H+Uv8RhQkOFXsORS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWpESRGjcckcFWU9wd
iMVeWazpkmm6hLbNUqDyiY/tIehwoQWFU80HzTdaYBBIvr2la+nWjLXrxP8ADAqc6v51sJdOlis1
kM8ylPjAUKGFCep3p4Y0rCsKuxV6B5F/44rf8Zn/AFLgKWQ4FdirGfO2jm5tVv4VrNbikoHUx9f+
FwhDBMKqtrdT2s6XFu5jljNVYYFZzo3nOyugsN7S2uOnM/3bH5/s/T9+NJZGCCKjcHocCuxV2KpL
rHlXTtR5SKPq9yd/VQbE/wCUvf8AXiqdYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqk3mbQhq
lnWMAXcNTCenId0PzxV5w6OjsjqVdSQykUII7HJIaxV2KuxV2KvQvI6FdDBPR5XYfLYfwyJSn+Ku
xVxAIIIqDsQcVed+aPLz6bcGeBSbKU/Af5GP7J/hhQkWFXYqmukeZdS00hEb1bYdYHNR/sT1XArO
NI8x6dqYCxv6dx3gfZv9j/NgSmmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVj/mXy
umog3NrRL0DcdBIB2Pv4HCrAZ4JoJWhmQxyoaMjChGKFmFXYq4AkgAVJ2AGKvVdHsvqWl21qdmjQ
c/8AWPxN+JyKUZirsVdiqnc20FzA8E6CSKQUZT3xV575h8sXGmOZoqy2RO0ndPZ6frwoSTCrsVbR
2Rg6EqymqsDQgjuDirPvKvmX9IKLS6IF4g+Fv9+KO/8ArDvgSyLArsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVQOqaLp+pR8LmOrAfBKuzr8j/XFWIah5G1KFi1my3MfZahHH0Hb8cNopK/
8O65y4/Upa9Ps7ff0xVkvlvyhLbTpe6hT1E+KKAGtG/mY9KjtTG1ZZgS7FXEgUqaV2GKuxV2KtMq
spVgGUihB3BGKsW1jyRBNym05hDJ1MDfYP8Aqn9n9Xyw2imHXlld2cxhuYmikHZh19wehHyxVRwq
vgnlgmSaJiksZDIw7EYFepaRqMeo6fFdJsXFJF/lcbMMCUZirsVdirsVdirsVdirsVdirsVdirsV
dirsVdirsVdirsVdirsVdirsVdiqQ+dWK6IzKSGEqEEdQa4hUh0fzrd23GK+BuYRt6n+7AP+Nvpw
0hmdhqVlfw+rayiRf2gOq+zA7jAlE4q7FULqWmWmo2zW9ynJT9lx9pT4qcVeZapps+nXslrNuU3V
+zKejDChC4VZZ5CvytxPYsfhkHqxj/KXZvvH6sBUM1wJdirsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVSHzt/xwm/4yJ+vEK88ySFW1u7m1mE1vI0Uq9GU0+g+OBWX6P55jfj
Dqa8G6C4QfCf9Ze30Y0tsrililjWSJw8bCqupBBHzGBK7FWJfmBaqYLW6A+JWMTHxBHIfqOEILC8
Kph5euDb61ZydAZAh+T/AAH/AIlgV6jgS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYqk/muzubvR3itozJIGVuA6kDrTFXm7KyMVYFWBoVOxBySGsVdiqN0zWtQ02TlbSEI
TVom3RvmP6YFZppnnTTLlAt0fqs3cNuh+Tf1xpKUedNcsryOG0tJBKqMZJHX7NaUAB79TiEMVwqu
icxypIOqMGH0GuKvX8il2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
Kpbq3l/TdTU+vHxm/ZnTZx8/H6cVYRrHlbUdNrJT17Yf7uQdB/lL2/VhQk+FXYq7FXYq7FXYq9hy
KXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqx/WPJ1he8pba
lrcHeqj4GPuvb5jDasK1LSNQ06ThdRFQfsyDdG+TYoQeFXYq7FUVpNq11qdtbqK85F5f6oNWP3DA
r1fAl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVZNDDPG
0UyLJG2zIwBB+g4qxXVvIsbsZdNkEZO5gkJK/wCxbcj6cNopjN1oWsWrUmtJAP5lHNf+CWoxVRi0
3UJXCR20rMegCN/TFWbeVfLL6fW7u6fW3HFYxuEU9d/E4pf/2Q==
-
-
-
-
-
- uuid:394c157d-8cf0-f94e-8261-98ccb840e1bc
- xmp.did:106820F817276811822ACF3CAA06C913
- uuid:5D20892493BFDB11914A8590D31508C8
- proof:pdf
-
- uuid:1898a391-1dba-4249-9e7f-8804d46504b0
- xmp.did:FE7F11740720681183D1839CF7E6F44E
- uuid:5D20892493BFDB11914A8590D31508C8
- proof:pdf
-
-
-
-
- saved
- xmp.iid:FE7F11740720681183D1839CF7E6F44E
- 2017-01-06T15:27:37Z
- Adobe Illustrator CS6 (Macintosh)
- /
-
-
- saved
- xmp.iid:106820F817276811822ACF3CAA06C913
- 2017-01-27T14:51:33Z
- Adobe Illustrator CS6 (Macintosh)
- /
-
-
-
-
-
- Document
- Print
-
-
- False
- False
- 1
-
- 3840.000000
- 2160.000000
- Pixels
-
-
-
- Cyan
- Magenta
- Yellow
- Black
-
-
-
-
-
- Default Swatch Group
- 0
-
-
-
- White
- RGB
- PROCESS
- 255
- 255
- 255
-
-
- Black
- RGB
- PROCESS
- 35
- 31
- 32
-
-
- CMYK Red
- RGB
- PROCESS
- 237
- 28
- 36
-
-
- CMYK Yellow
- RGB
- PROCESS
- 255
- 242
- 0
-
-
- CMYK Green
- RGB
- PROCESS
- 0
- 166
- 81
-
-
- CMYK Cyan
- RGB
- PROCESS
- 0
- 174
- 239
-
-
- CMYK Blue
- RGB
- PROCESS
- 46
- 49
- 146
-
-
- CMYK Magenta
- RGB
- PROCESS
- 236
- 0
- 140
-
-
- C=15 M=100 Y=90 K=10
- RGB
- PROCESS
- 190
- 30
- 45
-
-
- C=0 M=90 Y=85 K=0
- RGB
- PROCESS
- 239
- 65
- 54
-
-
- C=0 M=80 Y=95 K=0
- RGB
- PROCESS
- 241
- 90
- 41
-
-
- C=0 M=50 Y=100 K=0
- RGB
- PROCESS
- 247
- 148
- 30
-
-
- C=0 M=35 Y=85 K=0
- RGB
- PROCESS
- 251
- 176
- 64
-
-
- C=5 M=0 Y=90 K=0
- RGB
- PROCESS
- 249
- 237
- 50
-
-
- C=20 M=0 Y=100 K=0
- RGB
- PROCESS
- 215
- 223
- 35
-
-
- C=50 M=0 Y=100 K=0
- RGB
- PROCESS
- 141
- 198
- 63
-
-
- C=75 M=0 Y=100 K=0
- RGB
- PROCESS
- 57
- 181
- 74
-
-
- C=85 M=10 Y=100 K=10
- RGB
- PROCESS
- 0
- 148
- 68
-
-
- C=90 M=30 Y=95 K=30
- RGB
- PROCESS
- 0
- 104
- 56
-
-
- C=75 M=0 Y=75 K=0
- RGB
- PROCESS
- 43
- 182
- 115
-
-
- C=80 M=10 Y=45 K=0
- RGB
- PROCESS
- 0
- 167
- 157
-
-
- C=70 M=15 Y=0 K=0
- RGB
- PROCESS
- 39
- 170
- 225
-
-
- C=85 M=50 Y=0 K=0
- RGB
- PROCESS
- 28
- 117
- 188
-
-
- C=100 M=95 Y=5 K=0
- RGB
- PROCESS
- 43
- 57
- 144
-
-
- C=100 M=100 Y=25 K=25
- RGB
- PROCESS
- 38
- 34
- 98
-
-
- C=75 M=100 Y=0 K=0
- RGB
- PROCESS
- 102
- 45
- 145
-
-
- C=50 M=100 Y=0 K=0
- RGB
- PROCESS
- 146
- 39
- 143
-
-
- C=35 M=100 Y=35 K=10
- RGB
- PROCESS
- 158
- 31
- 99
-
-
- C=10 M=100 Y=50 K=0
- RGB
- PROCESS
- 218
- 28
- 92
-
-
- C=0 M=95 Y=20 K=0
- RGB
- PROCESS
- 238
- 42
- 123
-
-
- C=25 M=25 Y=40 K=0
- RGB
- PROCESS
- 194
- 181
- 155
-
-
- C=40 M=45 Y=50 K=5
- RGB
- PROCESS
- 155
- 133
- 121
-
-
- C=50 M=50 Y=60 K=25
- RGB
- PROCESS
- 114
- 102
- 88
-
-
- C=55 M=60 Y=65 K=40
- RGB
- PROCESS
- 89
- 74
- 66
-
-
- C=25 M=40 Y=65 K=0
- RGB
- PROCESS
- 196
- 154
- 108
-
-
- C=30 M=50 Y=75 K=10
- RGB
- PROCESS
- 169
- 124
- 80
-
-
- C=35 M=60 Y=80 K=25
- RGB
- PROCESS
- 139
- 94
- 60
-
-
- C=40 M=65 Y=90 K=35
- RGB
- PROCESS
- 117
- 76
- 41
-
-
- C=40 M=70 Y=100 K=50
- RGB
- PROCESS
- 96
- 57
- 19
-
-
- C=50 M=70 Y=80 K=70
- RGB
- PROCESS
- 60
- 36
- 21
-
-
-
-
-
- Grays
- 1
-
-
-
- C=0 M=0 Y=0 K=100
- RGB
- PROCESS
- 35
- 31
- 32
-
-
- C=0 M=0 Y=0 K=90
- RGB
- PROCESS
- 65
- 64
- 66
-
-
- C=0 M=0 Y=0 K=80
- RGB
- PROCESS
- 88
- 89
- 91
-
-
- C=0 M=0 Y=0 K=70
- RGB
- PROCESS
- 109
- 110
- 113
-
-
- C=0 M=0 Y=0 K=60
- RGB
- PROCESS
- 128
- 130
- 133
-
-
- C=0 M=0 Y=0 K=50
- RGB
- PROCESS
- 147
- 149
- 152
-
-
- C=0 M=0 Y=0 K=40
- RGB
- PROCESS
- 167
- 169
- 172
-
-
- C=0 M=0 Y=0 K=30
- RGB
- PROCESS
- 188
- 190
- 192
-
-
- C=0 M=0 Y=0 K=20
- RGB
- PROCESS
- 209
- 211
- 212
-
-
- C=0 M=0 Y=0 K=10
- RGB
- PROCESS
- 230
- 231
- 232
-
-
- C=0 M=0 Y=0 K=5
- RGB
- PROCESS
- 241
- 242
- 242
-
-
-
-
-
- Brights
- 1
-
-
-
- C=0 M=100 Y=100 K=0
- RGB
- PROCESS
- 237
- 28
- 36
-
-
- C=0 M=75 Y=100 K=0
- RGB
- PROCESS
- 242
- 101
- 34
-
-
- C=0 M=10 Y=95 K=0
- RGB
- PROCESS
- 255
- 222
- 23
-
-
- C=85 M=10 Y=100 K=0
- RGB
- PROCESS
- 0
- 161
- 75
-
-
- C=100 M=90 Y=0 K=0
- RGB
- PROCESS
- 33
- 64
- 154
-
-
- C=60 M=90 Y=0 K=0
- RGB
- PROCESS
- 127
- 63
- 152
-
-
-
-
-
-
-
-
- Adobe PDF library 10.01
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
endstream
endobj
3 0 obj
<>
endobj
8 0 obj
<>/Resources<>/ExtGState<>/Properties<>>>/Thumb 36 0 R/TrimBox[0.0 0.0 3840.0 2160.0]/Type/Page>>
endobj
32 0 obj
<>stream
-HlVI9+TK"cN(rh4P@A*n(EJ\A*z/ϑ>Lۯ-RN%7[+ELD}~Q_,RC)i%mR=V{uS¡,YHzeۓ Q!5nJ9P5"v[uWvU7nێ,FP^$$5DDpɁd4ڋۙ90q|dDZa1439<0}f0{ꖐhE#R5Y9$
-zX]@~3ϋ̬3L>س|cΏs% sZNVuAcp~Rc阏b^Aй><\I/wP;bJ@|n[fDڍ ^ -[D@Dňށ(TIfйkUE'Gx"/Þ!QLwBq: p.RZ[Yh=j{9
ACIY8w;vuu-ӹ2/;@r
fdk6z1FMǯkx]*C1ylDTAu&4`pv)5bǸ+
+VEC04,Tp9p)1Rِ9ֿmXѭxhPxʐke&ډAeL9Jl1|)Y|zf*ѷ.G%:o]~Ljh(eMBC#\fch\ij\mr#Jܢo;oَ?I