Skip to content

Commit

Permalink
fix:fix some object field array
Browse files Browse the repository at this point in the history
Signed-off-by: Chen Kai <[email protected]>
  • Loading branch information
GrapeBaBa committed Oct 1, 2024
1 parent 5b51a81 commit e5de39f
Show file tree
Hide file tree
Showing 6 changed files with 249 additions and 224 deletions.
85 changes: 57 additions & 28 deletions src/consensus/bellatrix/types.zig
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,45 @@ const std = @import("std");
pub const primitives = @import("../../primitives/types.zig");
const preset = @import("../../presets/preset.zig");

pub fn ExecutionPayloadHeaderType(comptime T: preset.BeaconPreset) type {
return struct {
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress,
state_root: primitives.Root,
receipts_root: primitives.Root,
logs_bloom: [T.BYTES_PER_LOGS_BLOOM]u8,
prev_randao: primitives.Bytes32,
block_number: u64,
gas_used: u64,
gas_limit: u64,
timestamp: u64,
extra_data: [T.MAX_EXTRA_DATA_BYTES]u8,
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32,
transactions_root: primitives.Root,
};
}

pub const ExecutionPayloadHeaderMainnet = ExecutionPayloadHeaderType(preset.mainnet_preset);

pub const ExecutionPayloadHeaderMinimal = ExecutionPayloadHeaderType(preset.minimal_preset);
pub const ExecutionPayloadHeader = struct {
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress,
state_root: primitives.Root,
receipts_root: primitives.Root,
logs_bloom: []u8,
prev_randao: primitives.Bytes32,
block_number: u64,
gas_used: u64,
gas_limit: u64,
timestamp: u64,
extra_data: []u8,
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32,
transactions_root: primitives.Root,
};

pub const ExecutionPayloadHeader = union(preset.Presets) {
mainnet: ExecutionPayloadHeaderMainnet,
minimal: ExecutionPayloadHeaderMinimal,
pub const ExecutionPayload = struct {
// Execution block header fields
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress, // 'beneficiary' in the yellow paper
state_root: primitives.Bytes32,
receipts_root: primitives.Bytes32,
logs_bloom: []u8,
prev_randao: primitives.Bytes32, // 'difficulty' in the yellow paper
block_number: u64, // 'number' in the yellow paper
gas_limit: u64,
gas_used: u64,
timestamp: u64,
extra_data: []u8, // with a maximum length of MAX_EXTRA_DATA_BYTES
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32, // Hash of execution block
transactions: []primitives.Transaction, // with a maximum length of MAX_TRANSACTIONS_PER_PAYLOAD
};

test "test ExecutionPayloadHeaderMainnet" {
const header = ExecutionPayloadHeaderMainnet{
test "test ExecutionPayloadHeader" {
const header = ExecutionPayloadHeader{
.parent_hash = undefined,
.fee_recipient = undefined,
.state_root = undefined,
Expand All @@ -52,3 +60,24 @@ test "test ExecutionPayloadHeaderMainnet" {
try std.testing.expectEqual(header.parent_hash.len, 32);
try std.testing.expectEqual(header.block_number, 21);
}

test "test ExecutionPayload" {
const payload = ExecutionPayload{
.parent_hash = undefined,
.fee_recipient = undefined,
.state_root = undefined,
.receipts_root = undefined,
.logs_bloom = undefined,
.prev_randao = undefined,
.block_number = 21,
.gas_used = 0,
.gas_limit = 0,
.timestamp = 0,
.extra_data = undefined,
.base_fee_per_gas = 0,
.block_hash = undefined,
.transactions = &[_]primitives.Transaction{},
};

try std.testing.expectEqual(payload.block_number, 21);
}
91 changes: 62 additions & 29 deletions src/consensus/capella/types.zig
Original file line number Diff line number Diff line change
@@ -1,39 +1,49 @@
const std = @import("std");
pub const primitives = @import("../../primitives/types.zig");
const preset = @import("../../presets/preset.zig");
const consensus = @import("../../consensus/types.zig");

pub fn ExecutionPayloadHeaderType(comptime T: preset.BeaconPreset) type {
return struct {
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress,
state_root: primitives.Root,
receipts_root: primitives.Root,
logs_bloom: [T.BYTES_PER_LOGS_BLOOM]u8,
prev_randao: primitives.Bytes32,
block_number: u64,
gas_used: u64,
gas_limit: u64,
timestamp: u64,
extra_data: [T.MAX_EXTRA_DATA_BYTES]u8,
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32,
transactions_root: primitives.Root,
withdrawals_root: primitives.Root,
};
}

pub const ExecutionPayloadHeaderMainnet = ExecutionPayloadHeaderType(preset.mainnet_preset);

pub const ExecutionPayloadHeaderMinimal = ExecutionPayloadHeaderType(preset.minimal_preset);
pub const ExecutionPayloadHeader = struct {
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress,
state_root: primitives.Root,
receipts_root: primitives.Root,
logs_bloom: []u8,
prev_randao: primitives.Bytes32,
block_number: u64,
gas_used: u64,
gas_limit: u64,
timestamp: u64,
extra_data: []u8,
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32,
transactions_root: primitives.Root,
withdrawals_root: primitives.Root,
};

pub const ExecutionPayloadHeader = union(preset.Presets) {
mainnet: ExecutionPayloadHeaderMainnet,
minimal: ExecutionPayloadHeaderMinimal,
pub const ExecutionPayload = struct {
// Execution block header fields
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress, // 'beneficiary' in the yellow paper
state_root: primitives.Bytes32,
receipts_root: primitives.Bytes32,
logs_bloom: []u8,
prev_randao: primitives.Bytes32, // 'difficulty' in the yellow paper
block_number: u64, // 'number' in the yellow paper
gas_limit: u64,
gas_used: u64,
timestamp: u64,
extra_data: []u8, // with a maximum length of MAX_EXTRA_DATA_BYTES
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32, // Hash of execution block
transactions: []primitives.Transaction, // with a maximum length of MAX_TRANSACTIONS_PER_PAYLOAD
withdrawals: []consensus.Withdrawal, // with a maximum length of MAX_WITHDRAWALS_PER_PAYLOAD
};

test "test ExecutionPayloadHeaderMainnet" {
const header = ExecutionPayloadHeaderMainnet{
test "test ExecutionPayloadHeader" {
const header = ExecutionPayloadHeader{
.parent_hash = undefined,
.fee_recipient = undefined,
.state_root = undefined,
Expand All @@ -54,3 +64,26 @@ test "test ExecutionPayloadHeaderMainnet" {
try std.testing.expectEqual(header.parent_hash.len, 32);
try std.testing.expectEqual(header.block_number, 21);
}

test "test ExecutionPayload" {
const payload = ExecutionPayload{
.parent_hash = undefined,
.fee_recipient = undefined,
.state_root = undefined,
.receipts_root = undefined,
.logs_bloom = undefined,
.prev_randao = undefined,
.block_number = 21,
.gas_limit = 0,
.gas_used = 0,
.timestamp = 0,
.extra_data = undefined,
.base_fee_per_gas = 0,
.block_hash = undefined,
.transactions = undefined,
.withdrawals = undefined,
};

try std.testing.expectEqual(payload.parent_hash.len, 32);
try std.testing.expectEqual(payload.block_number, 21);
}
99 changes: 68 additions & 31 deletions src/consensus/deneb/types.zig
Original file line number Diff line number Diff line change
@@ -1,41 +1,53 @@
const std = @import("std");
pub const primitives = @import("../../primitives/types.zig");
const preset = @import("../../presets/preset.zig");
const consensus = @import("../../consensus/types.zig");

pub fn ExecutionPayloadHeaderType(comptime T: preset.BeaconPreset) type {
return struct {
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress,
state_root: primitives.Root,
receipts_root: primitives.Root,
logs_bloom: [T.BYTES_PER_LOGS_BLOOM]u8,
prev_randao: primitives.Bytes32,
block_number: u64,
gas_used: u64,
gas_limit: u64,
timestamp: u64,
extra_data: [T.MAX_EXTRA_DATA_BYTES]u8,
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32,
transactions_root: primitives.Root,
withdrawals_root: primitives.Root,
blob_gas_used: u64,
excess_blob_gas: u64,
};
}

pub const ExecutionPayloadHeaderMainnet = ExecutionPayloadHeaderType(preset.mainnet_preset);

pub const ExecutionPayloadHeaderMinimal = ExecutionPayloadHeaderType(preset.minimal_preset);
pub const ExecutionPayloadHeader = struct {
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress,
state_root: primitives.Root,
receipts_root: primitives.Root,
logs_bloom: []u8,
prev_randao: primitives.Bytes32,
block_number: u64,
gas_used: u64,
gas_limit: u64,
timestamp: u64,
extra_data: []u8,
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32,
transactions_root: primitives.Root,
withdrawals_root: primitives.Root,
blob_gas_used: u64,
excess_blob_gas: u64,
};

pub const ExecutionPayloadHeader = union(preset.Presets) {
mainnet: ExecutionPayloadHeaderMainnet,
minimal: ExecutionPayloadHeaderMinimal,
pub const ExecutionPayload = struct {
// Execution block header fields
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress, // 'beneficiary' in the yellow paper
state_root: primitives.Bytes32,
receipts_root: primitives.Bytes32,
logs_bloom: []u8,
prev_randao: primitives.Bytes32, // 'difficulty' in the yellow paper
block_number: u64, // 'number' in the yellow paper
gas_limit: u64,
gas_used: u64,
timestamp: u64,
extra_data: []u8, // with a maximum length of MAX_EXTRA_DATA_BYTES
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32, // Hash of execution block
transactions: []primitives.Transaction, // with a maximum length of MAX_TRANSACTIONS_PER_PAYLOAD
withdrawals: []consensus.Withdrawal, // with a maximum length of MAX_WITHDRAWALS_PER_PAYLOAD
blob_gas_used: u64,
excess_blob_gas: u64,
};

test "test ExecutionPayloadHeaderMainnet" {
const header = ExecutionPayloadHeaderMainnet{
test "test ExecutionPayloadHeader" {
const header = ExecutionPayloadHeader{
.parent_hash = undefined,
.fee_recipient = undefined,
.state_root = undefined,
Expand All @@ -58,3 +70,28 @@ test "test ExecutionPayloadHeaderMainnet" {
try std.testing.expectEqual(header.parent_hash.len, 32);
try std.testing.expectEqual(header.block_number, 21);
}

test "test ExecutionPayload" {
const payload = ExecutionPayload{
.parent_hash = undefined,
.fee_recipient = undefined,
.state_root = undefined,
.receipts_root = undefined,
.logs_bloom = undefined,
.prev_randao = undefined,
.block_number = 21,
.gas_limit = 0,
.gas_used = 0,
.timestamp = 0,
.extra_data = undefined,
.base_fee_per_gas = 0,
.block_hash = undefined,
.transactions = undefined,
.withdrawals = undefined,
.blob_gas_used = 0,
.excess_blob_gas = 0,
};

try std.testing.expectEqual(payload.parent_hash.len, 32);
try std.testing.expectEqual(payload.block_number, 21);
}
59 changes: 24 additions & 35 deletions src/consensus/electra/types.zig
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,32 @@ const std = @import("std");
pub const primitives = @import("../../primitives/types.zig");
const preset = @import("../../presets/preset.zig");

pub fn ExecutionPayloadHeaderType(comptime T: preset.BeaconPreset) type {
return struct {
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress,
state_root: primitives.Root,
receipts_root: primitives.Root,
logs_bloom: [T.BYTES_PER_LOGS_BLOOM]u8,
prev_randao: primitives.Bytes32,
block_number: u64,
gas_used: u64,
gas_limit: u64,
timestamp: u64,
extra_data: [T.MAX_EXTRA_DATA_BYTES]u8,
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32,
transactions_root: primitives.Root,
withdrawals_root: primitives.Root,
blob_gas_used: u64,
excess_blob_gas: u64,
deposit_requests_root: primitives.Root,
withdrawal_requests_root: primitives.Root,
consolidation_requests_root: primitives.Root,
};
}

pub const ExecutionPayloadHeaderMainnet = ExecutionPayloadHeaderType(preset.mainnet_preset);

pub const ExecutionPayloadHeaderMinimal = ExecutionPayloadHeaderType(preset.minimal_preset);

pub const ExecutionPayloadHeader = union(preset.Presets) {
mainnet: ExecutionPayloadHeaderMainnet,
minimal: ExecutionPayloadHeaderMinimal,
pub const ExecutionPayloadHeader = struct {
parent_hash: primitives.Hash32,
fee_recipient: primitives.ExecutionAddress,
state_root: primitives.Root,
receipts_root: primitives.Root,
logs_bloom: []u8,
prev_randao: primitives.Bytes32,
block_number: u64,
gas_used: u64,
gas_limit: u64,
timestamp: u64,
extra_data: []u8,
base_fee_per_gas: u256,
// Extra payload fields
block_hash: primitives.Hash32,
transactions_root: primitives.Root,
withdrawals_root: primitives.Root,
blob_gas_used: u64,
excess_blob_gas: u64,
deposit_requests_root: primitives.Root,
withdrawal_requests_root: primitives.Root,
consolidation_requests_root: primitives.Root,
};

test "test ExecutionPayloadHeaderMainnet" {
const header = ExecutionPayloadHeaderMainnet{
test "test ExecutionPayloadHeader" {
const header = ExecutionPayloadHeader{
.parent_hash = undefined,
.fee_recipient = undefined,
.state_root = undefined,
Expand Down
Loading

0 comments on commit e5de39f

Please sign in to comment.