Skip to content

Commit

Permalink
Merge pull request #2 from gballet/move-allocator-to-execution-payload
Browse files Browse the repository at this point in the history
move allocator to execution payload
  • Loading branch information
gballet authored Dec 8, 2023
2 parents ef2b533 + 429cf7b commit 51ca3ac
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 10 deletions.
3 changes: 2 additions & 1 deletion src/engine_api/engine_api.zig
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ const AllPossibleExecutionParams = struct {
.withdrawals = null,
.blobGasUsed = null,
.excessBlobGas = null,
.allocator = allocator,
};

_ = try common.prefixedhex2hash(ret.parentHash[0..], self.parentHash);
Expand Down Expand Up @@ -97,6 +98,6 @@ test "deserialize sample engine_newPayloadV2" {

try expect(std.mem.eql(u8, payload.value.method, "engine_newPayloadV2"));
const execution_payload_json = payload.value.params[0];
const ep = try execution_payload_json.to_execution_payload(std.testing.allocator);
var ep = try execution_payload_json.to_execution_payload(std.testing.allocator);
try execution_payload.newPayloadV2Handler(&ep, std.testing.allocator);
}
14 changes: 12 additions & 2 deletions src/engine_api/execution_payload.zig
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const std = @import("std");
const types = @import("../types/types.zig");
const Allocator = std.mem.Allocator;

pub const ExecutionPayload = struct {
parentHash: types.Hash32,
Expand All @@ -22,6 +23,8 @@ pub const ExecutionPayload = struct {
excessBlobGas: ?u64,
// executionWitness : ?types.ExecutionWitness,

allocator: Allocator,

pub fn to_block(self: *const ExecutionPayload) types.Block {
return types.Block{
.header = types.BlockHeader{
Expand Down Expand Up @@ -50,9 +53,15 @@ pub const ExecutionPayload = struct {
// .withdrawals = self.withdrawals,
};
}

pub fn deinit(self: *ExecutionPayload, allocator: std.mem.Allocator) void {
if (self.extraData.len > 0) {
allocator.free(self.extraData);
}
}
};

pub fn newPayloadV2Handler(params: *const ExecutionPayload, allocator: std.mem.Allocator) !void {
pub fn newPayloadV2Handler(params: *ExecutionPayload, allocator: std.mem.Allocator) !void {
// TODO reconstruct the proof from the (currently undefined) execution witness
// and verify it. Then execute the block and return the result.
// vm.run_block(params.to_block(), params.transactions);
Expand All @@ -61,5 +70,6 @@ pub fn newPayloadV2Handler(params: *const ExecutionPayload, allocator: std.mem.A
std.log.info("newPayloadV2Handler: {any}", .{params});

var block = params.to_block();
block.deinit(allocator);
std.debug.print("block number={}\n", .{block.header.block_number});
params.deinit(allocator);
}
2 changes: 1 addition & 1 deletion src/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ fn engineAPIHandler(r: zap.SimpleRequest) void {

if (std.mem.eql(u8, payload.value.method, "engine_newPayloadV2")) {
const execution_payload_json = payload.value.params[0];
const execution_payload = execution_payload_json.to_execution_payload(allocator) catch |err| {
var execution_payload = execution_payload_json.to_execution_payload(allocator) catch |err| {
std.log.warn("error parsing execution payload: {}", .{err});
r.setStatus(.bad_request);
return;
Expand Down
6 changes: 0 additions & 6 deletions src/types/block.zig
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,6 @@ pub const Block = struct {
// TODO: consider strict checking of returned deserialized length vs rlp_bytes.len.
return block;
}

pub fn deinit(self: *Block, allocator: std.mem.Allocator) void {
if (self.header.extra_data.len > 0) {
allocator.free(self.header.extra_data);
}
}
};

pub const empty_uncle_hash: types.Hash32 = [_]u8{ 29, 204, 77, 232, 222, 199, 93, 122, 171, 133, 181, 103, 182, 204, 212, 26, 211, 18, 69, 27, 148, 138, 116, 19, 240, 161, 66, 253, 64, 212, 147, 71 };
Expand Down

0 comments on commit 51ca3ac

Please sign in to comment.