diff --git a/node-data/src/ledger.rs b/node-data/src/ledger.rs
index 42b2155379..e29ed507a0 100644
--- a/node-data/src/ledger.rs
+++ b/node-data/src/ledger.rs
@@ -13,8 +13,12 @@ pub use block::{Block, BlockWithLabel, Hash, Label};
mod transaction;
pub use transaction::{SpentTransaction, Transaction};
-use crate::bls::{self, PublicKeyBytes};
-use crate::message::payload::{RatificationResult, Vote};
+mod attestation;
+pub use attestation::{
+ Attestation, IterationInfo, IterationsInfo, Signature, StepVotes,
+};
+
+use crate::bls::PublicKeyBytes;
use crate::Serializable;
use dusk_bytes::DeserializableSlice;
@@ -22,119 +26,9 @@ use rusk_abi::hash::Hasher;
use sha3::Digest;
use std::io::{self, Read, Write};
-use execution_core::BlsPublicKey;
-
#[cfg(any(feature = "faker", test))]
use fake::{Dummy, Fake, Faker};
-#[derive(Debug, Clone, Copy, Default, Eq, PartialEq)]
-#[cfg_attr(any(feature = "faker", test), derive(Dummy))]
-pub struct Attestation {
- pub result: RatificationResult,
- pub validation: StepVotes,
- pub ratification: StepVotes,
-}
-
-#[derive(Debug, Default, Clone, Copy, Eq, Hash, PartialEq)]
-#[cfg_attr(any(feature = "faker", test), derive(Dummy))]
-pub struct StepVotes {
- pub bitset: u64,
- pub(crate) aggregate_signature: Signature,
-}
-
-impl StepVotes {
- pub fn new(aggregate_signature: [u8; 48], bitset: u64) -> StepVotes {
- StepVotes {
- bitset,
- aggregate_signature: Signature(aggregate_signature),
- }
- }
-
- pub fn is_empty(&self) -> bool {
- self.bitset == 0 || self.aggregate_signature.is_zeroed()
- }
-
- pub fn aggregate_signature(&self) -> &Signature {
- &self.aggregate_signature
- }
-}
-
-/// a wrapper of 48-sized array to facilitate Signature
-#[derive(Clone, Copy, Eq, Hash, PartialEq)]
-pub struct Signature([u8; 48]);
-
-impl Signature {
- pub const EMPTY: [u8; 48] = [0u8; 48];
-
- fn is_zeroed(&self) -> bool {
- self.0 == Self::EMPTY
- }
- pub fn inner(&self) -> &[u8; 48] {
- &self.0
- }
-}
-
-impl std::fmt::Debug for Signature {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- f.debug_struct("Signature")
- .field("signature", &to_str(&self.0))
- .finish()
- }
-}
-
-impl From<[u8; 48]> for Signature {
- fn from(value: [u8; 48]) -> Self {
- Self(value)
- }
-}
-
-impl Default for Signature {
- fn default() -> Self {
- Self(Self::EMPTY)
- }
-}
-
-/// Includes a failed attestation and the key of the expected block
-/// generator
-pub type IterationInfo = (Attestation, PublicKeyBytes);
-
-/// Defines a set of attestations of any former iterations
-#[derive(Default, Eq, PartialEq, Clone)]
-pub struct IterationsInfo {
- /// Represents a list of attestations where position is the iteration
- /// number
- pub att_list: Vec