From fe9983bffb8f7ea35b90ccc9b9a51e9418f32129 Mon Sep 17 00:00:00 2001 From: Herr Seppia Date: Fri, 18 Oct 2024 15:38:50 +0200 Subject: [PATCH] rusk: change `accept` to return stake events --- rusk/src/lib/node/rusk.rs | 14 +++++++++++--- rusk/src/lib/node/vm.rs | 14 +++++++++----- rusk/tests/common/state.rs | 4 ++-- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/rusk/src/lib/node/rusk.rs b/rusk/src/lib/node/rusk.rs index 025ef665e..f9f69f2ea 100644 --- a/rusk/src/lib/node/rusk.rs +++ b/rusk/src/lib/node/rusk.rs @@ -31,7 +31,7 @@ use execution_core::{ BlsScalar, ContractError, Dusk, Event, }; use node::vm::bytecode_charge; -use node_data::events::contract::ContractTxEvent; +use node_data::events::contract::{ContractEvent, ContractTxEvent}; use node_data::ledger::{Hash, Slash, SpentTransaction, Transaction}; use rusk_abi::{CallReceipt, PiecrustError, Session}; use rusk_profile::to_rusk_state_id_path; @@ -297,7 +297,11 @@ impl Rusk { consistency_check: Option, slashing: Vec, voters: &[Voter], - ) -> Result<(Vec, VerificationOutput)> { + ) -> Result<( + Vec, + VerificationOutput, + Vec, + )> { let session = self.session(block_height, None)?; let (spent_txs, verification_output, session, events) = accept( @@ -334,13 +338,17 @@ impl Rusk { )); } + let mut stake_events = vec![]; for event in events { + if event.event.target.0 == STAKE_CONTRACT { + stake_events.push(event.event.clone()); + } // Send VN event to RUES let event = RuesEvent::from(event); let _ = self.event_sender.send(event); } - Ok((spent_txs, verification_output)) + Ok((spent_txs, verification_output, stake_events)) } pub fn finalize_state( diff --git a/rusk/src/lib/node/vm.rs b/rusk/src/lib/node/vm.rs index a17c05b74..5ff66f348 100644 --- a/rusk/src/lib/node/vm.rs +++ b/rusk/src/lib/node/vm.rs @@ -6,6 +6,7 @@ mod query; +use node_data::events::contract::ContractEvent; use tracing::info; use dusk_bytes::DeserializableSlice; @@ -72,7 +73,11 @@ impl VMExecution for Rusk { &self, blk: &Block, voters: &[Voter], - ) -> anyhow::Result<(Vec, VerificationOutput)> { + ) -> anyhow::Result<( + Vec, + VerificationOutput, + Vec, + )> { info!("Received accept request"); let generator = blk.header().generator_bls_pubkey; let generator = BlsPublicKey::from_slice(&generator.0) @@ -80,7 +85,7 @@ impl VMExecution for Rusk { let slashing = Slash::from_block(blk)?; - let (txs, verification_output) = self + let (txs, verification_output, stake_events) = self .accept_transactions( blk.header().height, blk.header().gas_limit, @@ -96,7 +101,7 @@ impl VMExecution for Rusk { ) .map_err(|inner| anyhow::anyhow!("Cannot accept txs: {inner}!!"))?; - Ok((txs, verification_output)) + Ok((txs, verification_output, stake_events)) } fn move_to_commit(&self, commit: [u8; 32]) -> anyhow::Result<()> { @@ -306,8 +311,7 @@ impl Rusk { let stake_amount = stake.amount.unwrap_or_default(); let value = stake_amount.value; - let eligibility = stake_amount.eligibility; - Stake::new(value, stake.reward, eligibility, stake.nonce) + Stake::new(value, stake_amount.eligibility) } } diff --git a/rusk/tests/common/state.rs b/rusk/tests/common/state.rs index 031d3575f..1a889cf81 100644 --- a/rusk/tests/common/state.rs +++ b/rusk/tests/common/state.rs @@ -179,7 +179,7 @@ pub fn generator_procedure( let verify_output = rusk.verify_state_transition(&block, &voters)?; info!("verify_state_transition new verification: {verify_output}",); - let (accept_txs, accept_output) = rusk.accept(&block, &voters)?; + let (accept_txs, accept_output, _) = rusk.accept(&block, &voters)?; assert_eq!(accept_txs.len(), expected.executed, "all txs accepted"); @@ -285,7 +285,7 @@ pub fn generator_procedure2( let verify_output = rusk.verify_state_transition(&block, &voters)?; info!("verify_state_transition new verification: {verify_output}",); - let (accept_txs, accept_output) = rusk.accept(&block, &voters)?; + let (accept_txs, accept_output, _) = rusk.accept(&block, &voters)?; assert_eq!(accept_txs.len(), expected.executed, "all txs accepted");