Added EIP-4788, receipts root and state root fields to Block (#4570).

This commit is contained in:
Richard Moore 2024-02-05 19:56:26 -05:00
parent cac1da1f91
commit c5f126faf7
5 changed files with 60 additions and 2 deletions

@ -31,6 +31,7 @@ link-eip-2098 [EIP-2098](https://eips.ethereum.org/EIPS/eip-2098)
link-eip-2304 [EIP-2304](https://eips.ethereum.org/EIPS/eip-2304) link-eip-2304 [EIP-2304](https://eips.ethereum.org/EIPS/eip-2304)
link-eip-2718 [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) link-eip-2718 [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718)
link-eip-2930 [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) link-eip-2930 [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)
link-eip-4788 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4788)
link-eip-4844 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) link-eip-4844 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)
# Open Standards # Open Standards

@ -28,6 +28,10 @@ export interface TestBlockchainBlock {
baseFeePerGas?: bigint; baseFeePerGas?: bigint;
blobGasUsed?: bigint; blobGasUsed?: bigint;
excessBlobGas?: bigint; excessBlobGas?: bigint;
parentBeaconBlockRoot?: string;
stateRoot?: string;
receiptsRoot?: string;
} }
export interface TestBlockchainTransaction { export interface TestBlockchainTransaction {
@ -135,6 +139,8 @@ export const testBlock: Record<TestBlockchainNetwork, Array<TestBlockchainBlock>
gasUsed: BigInt("0"), gasUsed: BigInt("0"),
miner: "0x5088D623ba0fcf0131E0897a91734A4D83596AA0", miner: "0x5088D623ba0fcf0131E0897a91734A4D83596AA0",
extraData: "0x476574682f76312e302e302d66633739643332642f6c696e75782f676f312e34", extraData: "0x476574682f76312e302e302d66633739643332642f6c696e75782f676f312e34",
stateRoot: '0x76ab0b899e8387436ff2658e2988f83cbf1af1590b9fe9feca3714f8d1824940',
receiptsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
transactions: [ ] transactions: [ ]
}, },
{ {
@ -150,6 +156,8 @@ export const testBlock: Record<TestBlockchainNetwork, Array<TestBlockchainBlock>
miner: "0x2A20380DcA5bC24D052acfbf79ba23e988ad0050", miner: "0x2A20380DcA5bC24D052acfbf79ba23e988ad0050",
extraData: "0x706f6f6c696e2e636f6d21f7092f019bb92a76", extraData: "0x706f6f6c696e2e636f6d21f7092f019bb92a76",
baseFeePerGas: BigInt("40911884304"), baseFeePerGas: BigInt("40911884304"),
stateRoot: '0xd08663f630cfcf2d7d8fe4d52f7685ad09798b7e6150cabea5eeceb1d89e11c2',
receiptsRoot: '0x473e83ec3df279f44c4fc6da50fe1d0c5a18f1929b90de8917bdcdb88a132750',
transactions: [ transactions: [
"0x1c3a398933db10634631f54b435c40c8805c13f12bbac7c3dab858ca44213fa2", "0x1c3a398933db10634631f54b435c40c8805c13f12bbac7c3dab858ca44213fa2",
"0xd98947cbdd892cc7f679c903903e6d18a5c5afb19e94437beba79372ad71c347", "0xd98947cbdd892cc7f679c903903e6d18a5c5afb19e94437beba79372ad71c347",
@ -188,6 +196,7 @@ export const testBlock: Record<TestBlockchainNetwork, Array<TestBlockchainBlock>
test: "eip-4844-BLob-block", test: "eip-4844-BLob-block",
hash: "0xa76eb2ed547798d6010f599902788136f0cd289e2c6df5bbf5242e36e356124d", hash: "0xa76eb2ed547798d6010f599902788136f0cd289e2c6df5bbf5242e36e356124d",
parentHash: "0x2b579cb7224abdbe7a66c76380d60329bba41d95d225feb80ca1a78cf83a5124", parentHash: "0x2b579cb7224abdbe7a66c76380d60329bba41d95d225feb80ca1a78cf83a5124",
parentBeaconBlockRoot: '0xa05d27aa9c2f3d57943ca86134a08f6f7852ad5e9dbe360f86b466e2f0ed7bb5',
number: 5198187, number: 5198187,
timestamp: 1706801700, timestamp: 1706801700,
nonce: "0x0000000000000000", nonce: "0x0000000000000000",
@ -199,6 +208,8 @@ export const testBlock: Record<TestBlockchainNetwork, Array<TestBlockchainBlock>
extraData: "0x", extraData: "0x",
blobGasUsed: BigInt("524288"), blobGasUsed: BigInt("524288"),
excessBlobGas: BigInt("79691776"), excessBlobGas: BigInt("79691776"),
stateRoot: '0xa78ad0e0f5d2b3383fdb13f4ad0523723816863556be3a5414536862f4d217df',
receiptsRoot: '0xa254ed337328248b77011c70c2b85d6575f965f2fe65ed233c27e3750c0b7170',
transactions: [ transactions: [
"0xe8a096a98cd7b8d783cbb30687c3adc8e59f1e9563c0454623cc8af59f8bcab1", "0xe8a096a98cd7b8d783cbb30687c3adc8e59f1e9563c0454623cc8af59f8bcab1",
"0x5aac2d50b15e177e8edaae4819e989650a6cdb335dd8924b5a7a7ed1675d15e7", "0x5aac2d50b15e177e8edaae4819e989650a6cdb335dd8924b5a7a7ed1675d15e7",

@ -111,6 +111,8 @@ export function formatLog(value: any): LogParams {
const _formatBlock = object({ const _formatBlock = object({
hash: allowNull(formatHash), hash: allowNull(formatHash),
parentHash: formatHash, parentHash: formatHash,
parentBeaconBlockRoot: allowNull(formatHash, null),
number: getNumber, number: getNumber,
timestamp: getNumber, timestamp: getNumber,
@ -120,6 +122,9 @@ const _formatBlock = object({
gasLimit: getBigInt, gasLimit: getBigInt,
gasUsed: getBigInt, gasUsed: getBigInt,
stateRoot: allowNull(formatHash, null),
receiptsRoot: allowNull(formatHash, null),
blobGasUsed: allowNull(getBigInt, null), blobGasUsed: allowNull(getBigInt, null),
excessBlobGas: allowNull(getBigInt, null), excessBlobGas: allowNull(getBigInt, null),

@ -38,6 +38,12 @@ export interface BlockParams {
*/ */
parentHash: string; parentHash: string;
/**
* The hash tree root of the parent beacon block for the given
* execution block. See [[link-eip-4788]].
*/
parentBeaconBlockRoot?: null | string;
/** /**
* A random sequence provided during the mining process for * A random sequence provided during the mining process for
* proof-of-work networks. * proof-of-work networks.
@ -88,6 +94,17 @@ export interface BlockParams {
*/ */
baseFeePerGas: null | bigint; baseFeePerGas: null | bigint;
/**
* The root hash for the global state after applying changes
* in this block.
*/
stateRoot?: null | string;
/**
* The hash of the transaction receipts trie.
*/
receiptsRoot?: null | string;
/** /**
* The list of transactions in the block. * The list of transactions in the block.
*/ */

@ -436,6 +436,12 @@ export class Block implements BlockParams, Iterable<string> {
*/ */
readonly parentHash!: string; readonly parentHash!: string;
/**
* The hash tree root of the parent beacon block for the given
* execution block. See [[link-eip-4788]].
*/
parentBeaconBlockRoot!: null | string;
/** /**
* The nonce. * The nonce.
* *
@ -466,6 +472,18 @@ export class Block implements BlockParams, Iterable<string> {
*/ */
readonly gasUsed!: bigint; readonly gasUsed!: bigint;
/**
* The root hash for the global state after applying changes
* in this block.
*/
readonly stateRoot!: null | string;
/**
* The hash of the transaction receipts trie.
*/
readonly receiptsRoot!: null | string;
/** /**
* The total amount of blob gas consumed by the transactions * The total amount of blob gas consumed by the transactions
* within the block. See [[link-eip-4844]]. * within the block. See [[link-eip-4844]].
@ -524,6 +542,7 @@ export class Block implements BlockParams, Iterable<string> {
timestamp: block.timestamp, timestamp: block.timestamp,
parentHash: block.parentHash, parentHash: block.parentHash,
parentBeaconBlockRoot: block.parentBeaconBlockRoot,
nonce: block.nonce, nonce: block.nonce,
difficulty: block.difficulty, difficulty: block.difficulty,
@ -535,7 +554,10 @@ export class Block implements BlockParams, Iterable<string> {
miner: block.miner, miner: block.miner,
extraData: block.extraData, extraData: block.extraData,
baseFeePerGas: getValue(block.baseFeePerGas) baseFeePerGas: getValue(block.baseFeePerGas),
stateRoot: block.stateRoot,
receiptsRoot: block.receiptsRoot,
}); });
} }
@ -578,7 +600,8 @@ export class Block implements BlockParams, Iterable<string> {
toJSON(): any { toJSON(): any {
const { const {
baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash,
miner, nonce, number, parentHash, timestamp, transactions miner, nonce, number, parentHash, parentBeaconBlockRoot,
stateRoot, receiptsRoot, timestamp, transactions
} = this; } = this;
return { return {
@ -591,6 +614,7 @@ export class Block implements BlockParams, Iterable<string> {
blobGasUsed: toJson(this.blobGasUsed), blobGasUsed: toJson(this.blobGasUsed),
excessBlobGas: toJson(this.excessBlobGas), excessBlobGas: toJson(this.excessBlobGas),
hash, miner, nonce, number, parentHash, timestamp, hash, miner, nonce, number, parentHash, timestamp,
parentBeaconBlockRoot, stateRoot, receiptsRoot,
transactions, transactions,
}; };
} }