UNPKG

web3-eth

Version:

Web3 module to interact with the Ethereum blockchain and smart contracts.

669 lines (650 loc) 9.5 kB
/* 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 <http://www.gnu.org/licenses/>. */ export const accessListItemSchema = { type: 'object', properties: { address: { format: 'address', }, storageKeys: { type: 'array', items: { format: 'bytes32', }, }, }, }; export const accessListSchema = { type: 'array', items: { ...accessListItemSchema, }, }; export const accessListResultSchema = { type: 'object', properties: { accessList: { ...accessListSchema, }, gasUsed: { type: 'string', }, }, }; export const chainSchema = { type: 'string', enum: ['goerli', 'kovan', 'mainnet', 'rinkeby', 'ropsten', 'sepolia'], }; export const hardforkSchema = { type: 'string', enum: [ 'arrowGlacier', 'berlin', 'byzantium', 'chainstart', 'constantinople', 'dao', 'homestead', 'istanbul', 'london', 'merge', 'muirGlacier', 'petersburg', 'shanghai', 'spuriousDragon', 'tangerineWhistle', ], }; export const customChainSchema = { type: 'object', properties: { name: { format: 'string', }, networkId: { format: 'uint', }, chainId: { format: 'uint', }, }, }; export const transactionSchema = { type: 'object', properties: { from: { format: 'address', }, to: { oneOf: [{ format: 'address' }, { type: 'null' }], }, value: { format: 'uint', }, gas: { format: 'uint', }, gasPrice: { format: 'uint', }, effectiveGasPrice: { format: 'uint', }, type: { format: 'uint', }, maxFeePerGas: { format: 'uint', }, maxPriorityFeePerGas: { format: 'uint', }, accessList: { ...accessListSchema, }, data: { format: 'bytes', }, input: { format: 'bytes', }, nonce: { format: 'uint', }, chain: { ...chainSchema }, hardfork: { ...hardforkSchema }, chainId: { format: 'uint', }, networkId: { format: 'uint', }, common: { type: 'object', properties: { customChain: { ...customChainSchema }, baseChain: { ...chainSchema, }, hardfork: { ...hardforkSchema, }, }, }, gasLimit: { format: 'uint', }, v: { format: 'uint', }, r: { format: 'bytes32', }, s: { format: 'bytes32', }, }, }; export const transactionInfoSchema = { type: 'object', properties: { ...transactionSchema.properties, blockHash: { format: 'bytes32', }, blockNumber: { format: 'uint', }, hash: { format: 'bytes32', }, transactionIndex: { format: 'uint', }, from: { format: 'address', }, to: { oneOf: [{ format: 'address' }, { type: 'null' }], }, value: { format: 'uint', }, gas: { format: 'uint', }, gasPrice: { format: 'uint', }, effectiveGasPrice: { format: 'uint', }, type: { format: 'uint', }, maxFeePerGas: { format: 'uint', }, maxPriorityFeePerGas: { format: 'uint', }, accessList: { ...accessListSchema, }, data: { format: 'bytes', }, input: { format: 'bytes', }, nonce: { format: 'uint', }, gasLimit: { format: 'uint', }, v: { format: 'uint', }, r: { format: 'bytes32', }, s: { format: 'bytes32', }, }, }; export const withdrawalsSchema = { type: 'object', properties: { index: { format: 'uint', }, validatorIndex: { format: 'uint', }, address: { format: 'address', }, amount: { format: 'uint', }, }, }; export const blockSchema = { type: 'object', properties: { baseFeePerGas: { format: 'uint', }, blobGasUsed: { format: 'uint', }, difficulty: { format: 'uint', }, excessBlobGas: { format: 'uint', }, extraData: { format: 'bytes', }, gasLimit: { format: 'uint', }, gasUsed: { format: 'uint', }, hash: { format: 'bytes32', }, logsBloom: { format: 'bytes256', }, miner: { format: 'bytes', }, mixHash: { format: 'bytes32', }, nonce: { format: 'uint', }, number: { format: 'uint', }, parentBeaconBlockRoot: { format: 'bytes32', }, parentHash: { format: 'bytes32', }, receiptsRoot: { format: 'bytes32', }, sha3Uncles: { format: 'bytes32', }, size: { format: 'uint', }, stateRoot: { format: 'bytes32', }, timestamp: { format: 'uint', }, totalDifficulty: { format: 'uint', }, transactions: { oneOf: [ { type: 'array', items: { ...transactionInfoSchema, }, }, { type: 'array', items: { format: 'bytes32', }, }, ], }, transactionsRoot: { format: 'bytes32', }, uncles: { type: 'array', items: { format: 'bytes32', }, }, withdrawals: { type: 'array', items: { ...withdrawalsSchema, }, }, withdrawalsRoot: { format: 'bytes32', }, }, }; export const blockHeaderSchema = { type: 'object', properties: { author: { format: 'bytes32', }, excessDataGas: { format: 'uint', }, baseFeePerGas: { format: 'uint', }, blobGasUsed: { format: 'uint', }, difficulty: { format: 'uint', }, excessBlobGas: { format: 'uint', }, extraData: { format: 'bytes', }, gasLimit: { format: 'uint', }, gasUsed: { format: 'uint', }, hash: { format: 'bytes32', }, logsBloom: { format: 'bytes256', }, miner: { format: 'bytes', }, mixHash: { format: 'bytes32', }, nonce: { format: 'uint', }, number: { format: 'uint', }, parentBeaconBlockRoot: { format: 'bytes32', }, parentHash: { format: 'bytes32', }, receiptsRoot: { format: 'bytes32', }, sha3Uncles: { format: 'bytes32', }, size: { format: 'uint', }, stateRoot: { format: 'bytes32', }, timestamp: { format: 'uint', }, totalDifficulty: { format: 'uint', }, transactions: { type: 'array', items: { format: 'bytes32', }, }, transactionsRoot: { format: 'bytes32', }, uncles: { type: 'array', items: { format: 'bytes32', }, }, withdrawals: { type: 'array', items: { ...withdrawalsSchema, }, }, withdrawalsRoot: { format: 'bytes32', }, }, }; export const logSchema = { type: 'object', properties: { removed: { format: 'bool', }, logIndex: { format: 'uint', }, transactionIndex: { format: 'uint', }, transactionHash: { format: 'bytes32', }, blockHash: { format: 'bytes32', }, blockNumber: { format: 'uint', }, address: { format: 'address', }, data: { format: 'bytes', }, topics: { type: 'array', items: { format: 'bytes32', }, }, }, }; export const syncSchema = { type: 'object', properties: { startingBlock: { format: 'string', }, currentBlock: { format: 'string', }, highestBlock: { format: 'string', }, knownStates: { format: 'string', }, pulledStates: { format: 'string', }, }, }; export const transactionReceiptSchema = { type: 'object', properties: { transactionHash: { format: 'bytes32', }, transactionIndex: { format: 'uint', }, blockHash: { format: 'bytes32', }, blockNumber: { format: 'uint', }, from: { format: 'address', }, to: { format: 'address', }, cumulativeGasUsed: { format: 'uint', }, gasUsed: { format: 'uint', }, effectiveGasPrice: { format: 'uint', }, contractAddress: { format: 'address', }, logs: { type: 'array', items: { ...logSchema, }, }, logsBloom: { format: 'bytes', }, root: { format: 'bytes', }, status: { format: 'uint', }, type: { format: 'uint', }, }, }; export const SignatureObjectSchema = { type: 'object', properties: { messageHash: { format: 'bytes', }, r: { format: 'bytes32', }, s: { format: 'bytes32', }, v: { format: 'bytes', }, message: { format: 'bytes', }, signature: { format: 'bytes', }, }, }; export const feeHistorySchema = { type: 'object', properties: { oldestBlock: { format: 'uint', }, baseFeePerGas: { type: 'array', items: { format: 'uint', }, }, reward: { type: 'array', items: { type: 'array', items: { format: 'uint', }, }, }, gasUsedRatio: { type: 'array', items: { type: 'number', }, }, }, }; export const storageProofSchema = { type: 'object', properties: { key: { format: 'bytes32', }, value: { format: 'uint', }, proof: { type: 'array', items: { format: 'bytes32', }, }, }, }; export const accountSchema = { type: 'object', properties: { balance: { format: 'uint', }, codeHash: { format: 'bytes32', }, nonce: { format: 'uint', }, storageHash: { format: 'bytes32', }, accountProof: { type: 'array', items: { format: 'bytes32', }, }, storageProof: { type: 'array', items: { ...storageProofSchema, }, }, }, };