From 219a9f901aa5bb81a599a11aeb323f63c57cc2d6 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Cornilleau Date: Tue, 22 Oct 2024 15:05:07 +0200 Subject: [PATCH 1/3] EVM/Node: propagate block instead of just hash while applying blueprint --- etherlink/bin_node/lib_dev/evm_context.ml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/etherlink/bin_node/lib_dev/evm_context.ml b/etherlink/bin_node/lib_dev/evm_context.ml index 4fd4d7bc646e..5c8ed3950396 100644 --- a/etherlink/bin_node/lib_dev/evm_context.ml +++ b/etherlink/bin_node/lib_dev/evm_context.ml @@ -888,7 +888,7 @@ module State = struct return ( evm_state, context, - block.hash, + block, applied_kernel_upgrade, split_info, gc_info ) @@ -897,13 +897,13 @@ module State = struct tzfail (Cannot_apply_blueprint {local_state_level = Z.pred next}) let on_new_head ?split_info ?gc_info ctxt ~applied_upgrade evm_state context - block_hash blueprint_with_events = + block blueprint_with_events = let open Lwt_syntax in let (Qty level) = ctxt.session.next_blueprint_number in ctxt.session.evm_state <- evm_state ; ctxt.session.context <- context ; ctxt.session.next_blueprint_number <- Qty (Z.succ level) ; - ctxt.session.current_block_hash <- block_hash ; + ctxt.session.current_block_hash <- Ethereum_types.(block.hash) ; Option.iter (fun (split_level, split_timestamp) -> ctxt.session.last_split_block <- Some (split_level, split_timestamp)) @@ -916,13 +916,13 @@ module State = struct let* head_info in head_info := session_to_head_info ctxt.session ; Metrics.set_level ~level ; - Blueprint_events.blueprint_applied (level, block_hash) + Blueprint_events.blueprint_applied (level, block.hash) let apply_blueprint ctxt timestamp payload delayed_transactions = let open Lwt_result_syntax in let* ( evm_state, context, - current_block_hash, + current_block, applied_kernel_upgrade, split_info, gc_info ) = @@ -950,7 +950,7 @@ module State = struct ~applied_upgrade:applied_kernel_upgrade evm_state context - current_block_hash + current_block { delayed_transactions; kernel_upgrade; -- GitLab From 2c410eb484656e14f0f98d01ab6430863f717ed0 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Cornilleau Date: Tue, 22 Oct 2024 15:53:22 +0200 Subject: [PATCH 2/3] EVM/Node: more info in blueprint_applied event --- .../bin_node/lib_dev/blueprint_events.ml | 24 +++++++++++++++---- .../bin_node/lib_dev/blueprint_events.mli | 6 ++--- etherlink/bin_node/lib_dev/evm_context.ml | 2 +- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/etherlink/bin_node/lib_dev/blueprint_events.ml b/etherlink/bin_node/lib_dev/blueprint_events.ml index 6564ddaab9a6..afd4ce7f7beb 100644 --- a/etherlink/bin_node/lib_dev/blueprint_events.ml +++ b/etherlink/bin_node/lib_dev/blueprint_events.ml @@ -26,14 +26,18 @@ let publisher_shutdown = () let blueprint_application = - declare_2 + declare_5 ~name:"blueprint_application" ~section ~msg: - "Applied a blueprint for level {level} leading to creating block \ - {block_hash}" + "Applied a blueprint for level {level} at {timestamp} containing \ + {txs_nb} transactions for {gas_used} gas leading to creating block \ + {block_hash}." ~level:Notice ("level", Data_encoding.n) + ("timestamp", Time.Protocol.rfc_encoding) + ("txs_nb", Data_encoding.int31) + ("gas_used", Data_encoding.n) ("block_hash", Ethereum_types.block_hash_encoding) let blueprint_injection = @@ -134,7 +138,19 @@ let blueprint_injected_on_DAL ~level ~nb_chunks = let blueprint_injection_failed level trace = emit blueprint_injection_failure (level, trace) -let blueprint_applied (level, hash) = emit blueprint_application (level, hash) +let blueprint_applied block = + let open Ethereum_types in + let count_txs = function + | TxHash l -> List.length l + | TxFull l -> List.length l + in + emit + blueprint_application + ( Qty.to_z block.number, + block.timestamp |> Qty.to_z |> Z.to_int64 |> Time.Protocol.of_seconds, + count_txs block.transactions, + Qty.to_z block.gasUsed, + block.hash ) let invalid_blueprint_produced level = emit invalid_blueprint level diff --git a/etherlink/bin_node/lib_dev/blueprint_events.mli b/etherlink/bin_node/lib_dev/blueprint_events.mli index 67694b6dfee6..59511d8375b4 100644 --- a/etherlink/bin_node/lib_dev/blueprint_events.mli +++ b/etherlink/bin_node/lib_dev/blueprint_events.mli @@ -17,9 +17,9 @@ val publisher_is_ready : unit -> unit Lwt.t will not accept requests anymore. *) val publisher_shutdown : unit -> unit Lwt.t -(** [blueprint_applied (level, hash)] advertizes that a blueprint for - level [level] has been applied onto the local state. *) -val blueprint_applied : Z.t * Ethereum_types.block_hash -> unit Lwt.t +(** [blueprint_applied block] advertizes that a blueprint leading to [block] + has been applied onto the local state. *) +val blueprint_applied : Ethereum_types.block -> unit Lwt.t (** [blueprint_injected level] advertizes that a blueprint for level [level] has been forwarded to a rollup node *) diff --git a/etherlink/bin_node/lib_dev/evm_context.ml b/etherlink/bin_node/lib_dev/evm_context.ml index 5c8ed3950396..f5afaa7d8e1f 100644 --- a/etherlink/bin_node/lib_dev/evm_context.ml +++ b/etherlink/bin_node/lib_dev/evm_context.ml @@ -916,7 +916,7 @@ module State = struct let* head_info in head_info := session_to_head_info ctxt.session ; Metrics.set_level ~level ; - Blueprint_events.blueprint_applied (level, block.hash) + Blueprint_events.blueprint_applied block let apply_blueprint ctxt timestamp payload delayed_transactions = let open Lwt_result_syntax in -- GitLab From ac4c17a3f9c12463fc680ebfd1fc06a529d46727 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Cornilleau Date: Mon, 28 Oct 2024 11:12:52 +0100 Subject: [PATCH 3/3] EVM/Node: changelog --- etherlink/CHANGES_NODE.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/etherlink/CHANGES_NODE.md b/etherlink/CHANGES_NODE.md index b088b8534cdd..64080937ba34 100644 --- a/etherlink/CHANGES_NODE.md +++ b/etherlink/CHANGES_NODE.md @@ -8,6 +8,9 @@ ### Internals +- Adds more information to the `blueprint_applied` event, including block + timestamp, number of transactions and gas used. (!15402) + ## Version 0.6 (2024-10-21) This release introduces a new, still experimental runtime to execute Etherlink -- GitLab