diff --git a/Cargo.toml b/Cargo.toml index 429f77b..6c52d6c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,13 @@ [package] name = "casper-litmus" -version = "0.1.1" +version = "0.2.0" edition = "2021" [dependencies] base16 = { version = "0.2.1", default-features = false, features = ["alloc"] } blake2b_simd = { version = "1.0.2", default-features = false } -casper-types = "4.0.1" +casper-types = { git = "https://github.com/casper-network/casper-node.git", branch = "feat-2.0", features = ["datasize", "json-schema", "std"] } +casper-storage = { git = "https://github.com/casper-network/casper-node.git", branch = "feat-2.0" } ed25519-dalek = { version = "2.0.0", default-features = false, features = [ "alloc", "zeroize", @@ -17,6 +18,7 @@ k256 = { version = "0.13.1", default-features = false, features = [ "sha256", ] } serde = { version = "1.0.195", default-features = false, features = ["derive"] } +serde-map-to-array = "1" time = { version = "0.3.31", default-features = false, features = [ "serde", "formatting", @@ -25,10 +27,7 @@ time = { version = "0.3.31", default-features = false, features = [ [dev-dependencies] bincode = "1.3.3" -casper-hashing = "3.0.0" -casper-execution-engine = "7.0.1" -casper-types = { version = "4.0.1", features = ["gens"] } -casper-node = "1.5.6" +casper-execution-engine = { git = "https://github.com/casper-network/casper-node.git", branch = "feat-2.0" } hex = "0.4.3" once_cell = "1.19.0" serde_json = "1.0.111" diff --git a/rust-toolchain.toml b/rust-toolchain.toml index c1f5c7b..73cb934 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.75.0" +channel = "stable" components = ["rustfmt", "clippy"] diff --git a/src/block.rs b/src/block.rs deleted file mode 100644 index 6bf8176..0000000 --- a/src/block.rs +++ /dev/null @@ -1,545 +0,0 @@ -use alloc::{collections::BTreeMap, vec::Vec}; - -#[cfg(test)] -use casper_types::{crypto::gens::public_key_arb, SecretKey}; -#[cfg(test)] -use proptest::prelude::*; - -use casper_types::{ - bytesrepr::{FromBytes, ToBytes}, - EraId, PublicKey, Signature, -}; - -use super::{ - block_header::{BlockHash, BlockHeader}, - crypto::{verify, SignatureVerificationError}, - hash::Digest, -}; - -#[derive(Clone, Debug, PartialOrd, Ord, Eq, PartialEq)] -#[cfg_attr(test, derive(serde::Serialize, serde::Deserialize))] -// See: https://github.com/casper-network/casper-node/blob/edc4b45ea05526ba6dd7971da09e27754a37a230/node/src/types/block.rs#L1324-L1332 -pub struct BlockSignatures { - block_hash: BlockHash, - era_id: EraId, - proofs: BTreeMap, -} - -impl BlockSignatures { - pub fn new( - block_hash: BlockHash, - era_id: EraId, - proofs: BTreeMap, - ) -> Result { - let mut signature_data = block_hash.as_ref().to_vec(); - signature_data.extend_from_slice(&era_id.to_le_bytes()); - for (public_key, signature) in &proofs { - verify(public_key, &signature_data, signature)?; - } - Ok(BlockSignatures { - block_hash, - era_id, - proofs, - }) - } - - pub fn block_hash(&self) -> &BlockHash { - &self.block_hash - } - - pub fn era_id(&self) -> EraId { - self.era_id - } - - pub fn proofs(&self) -> &BTreeMap { - &self.proofs - } -} - -#[cfg(test)] -impl Arbitrary for BlockSignatures { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - ( - any::(), - any::(), // EraId - prop::collection::vec( - prop_oneof![ - any::<[u8; SecretKey::ED25519_LENGTH]>() - .prop_map(|bytes| SecretKey::ed25519_from_bytes(bytes).unwrap()), - any::<[u8; SecretKey::SECP256K1_LENGTH]>() - .prop_filter("Cannot make a secret key from [0u8; 32]", |bytes| bytes - != &[0u8; SecretKey::SECP256K1_LENGTH]) - .prop_map(|bytes| SecretKey::secp256k1_from_bytes(bytes).unwrap()), - ], - 0..5, - ), - ) - .prop_map(|(block_hash, era_id, proofs)| { - let era_id = EraId::from(era_id); - let mut signature_data = block_hash.as_ref().to_vec(); - signature_data.extend_from_slice(&era_id.to_le_bytes()); - let proofs = proofs - .into_iter() - .map(|secret_key| { - let public_key = PublicKey::from(&secret_key); - let signature = crate::crypto::sign(&secret_key, &signature_data); - (public_key, signature) - }) - .collect(); - BlockSignatures { - block_hash, - era_id, - proofs, - } - }) - .boxed() - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -// See: https://github.com/casper-network/casper-node/blob/edc4b45ea05526ba6dd7971da09e27754a37a230/node/src/types/block.rs#L1184-L1188 -pub struct BlockHeaderWithSignatures { - block_header: BlockHeader, - block_signatures: BlockSignatures, -} - -#[derive(Debug)] -pub enum BlockHeaderWithSignaturesConstructionError { - InvalidEraId { - header_era_id: EraId, - signatures_era_id: EraId, - }, - InvalidBlockHash { - header_block_hash: BlockHash, - signatures_block_hash: BlockHash, - }, -} - -impl BlockHeaderWithSignatures { - pub fn new( - block_header: BlockHeader, - block_signatures: BlockSignatures, - ) -> Result { - if block_header.era_id() != block_signatures.era_id() { - return Err(BlockHeaderWithSignaturesConstructionError::InvalidEraId { - header_era_id: block_header.era_id().clone(), - signatures_era_id: block_signatures.era_id(), - }); - } - let header_block_hash = block_header.block_hash(); - if block_signatures.block_hash() != &header_block_hash { - return Err( - BlockHeaderWithSignaturesConstructionError::InvalidBlockHash { - header_block_hash, - signatures_block_hash: block_signatures.block_hash().clone(), - }, - ); - } - Ok(BlockHeaderWithSignatures { - block_header, - block_signatures, - }) - } - - pub fn block_header(&self) -> &BlockHeader { - &self.block_header - } - - pub fn block_signatures(&self) -> &BlockSignatures { - &self.block_signatures - } -} - -#[cfg(test)] -impl Arbitrary for BlockHeaderWithSignatures { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - (any::(), any::()) - .prop_map(|(block_header, mut block_signatures)| { - block_signatures.block_hash = block_header.block_hash(); - block_signatures.era_id = block_header.era_id().clone(); - BlockHeaderWithSignatures { - block_header, - block_signatures, - } - }) - .boxed() - } -} - -#[derive( - Clone, Default, Ord, PartialOrd, Eq, PartialEq, Debug, serde::Serialize, serde::Deserialize, -)] -#[cfg_attr(test, derive(proptest_derive::Arbitrary))] -// See: https://github.com/casper-network/casper-node/blob/edc4b45ea05526ba6dd7971da09e27754a37a230/node/src/types/deploy/deploy_hash.rs#L32 -pub struct DeployHash(Digest); - -// See: https://github.com/casper-network/casper-node/blob/edc4b45ea05526ba6dd7971da09e27754a37a230/node/src/types/deploy/deploy_hash.rs#L89-L101 -impl ToBytes for DeployHash { - fn write_bytes(&self, writer: &mut Vec) -> Result<(), casper_types::bytesrepr::Error> { - self.0.write_bytes(writer) - } - - fn to_bytes(&self) -> Result, casper_types::bytesrepr::Error> { - self.0.to_bytes() - } - - fn serialized_length(&self) -> usize { - self.0.serialized_length() - } -} - -// See: https://github.com/casper-network/casper-node/blob/edc4b45ea05526ba6dd7971da09e27754a37a230/node/src/types/deploy/deploy_hash.rs#L103-L107 -impl FromBytes for DeployHash { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), casper_types::bytesrepr::Error> { - Digest::from_bytes(bytes).map(|(inner, remainder)| (DeployHash(inner), remainder)) - } -} - -#[derive(Clone, PartialEq, Eq, Debug, PartialOrd, Ord, serde::Serialize, serde::Deserialize)] -// See: https://github.com/casper-network/casper-node/blob/edc4b45ea05526ba6dd7971da09e27754a37a230/node/src/types/block.rs#L1204C14-L1204C15 -pub struct BlockBody { - proposer: PublicKey, - deploy_hashes: Vec, - transfer_hashes: Vec, -} - -impl BlockBody { - pub fn new( - proposer: PublicKey, - deploy_hashes: Vec, - transfer_hashes: Vec, - ) -> Self { - BlockBody { - proposer, - deploy_hashes, - transfer_hashes, - } - } - - pub fn proposer(&self) -> &PublicKey { - &self.proposer - } - - pub fn deploy_hashes(&self) -> &[DeployHash] { - &self.deploy_hashes - } - - pub fn transfer_hashes(&self) -> &[DeployHash] { - &self.transfer_hashes - } - - pub fn hash(&self) -> Digest { - Digest::hash(&self.to_bytes().unwrap()) - } -} - -#[cfg(test)] -impl Arbitrary for BlockBody { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - ( - public_key_arb(), - prop::collection::vec(any::(), 0..5), - prop::collection::vec(any::(), 0..5), - ) - .prop_map(|(proposer, deploy_hashes, transfer_hashes)| BlockBody { - proposer, - deploy_hashes, - transfer_hashes, - }) - .boxed() - } -} - -// See: https://github.com/casper-network/casper-node/blob/edc4b45ea05526ba6dd7971da09e27754a37a230/node/src/types/block.rs#L1292-L1306 -impl ToBytes for BlockBody { - fn to_bytes(&self) -> Result, casper_types::bytesrepr::Error> { - let mut buffer = casper_types::bytesrepr::allocate_buffer(self)?; - buffer.extend(self.proposer.to_bytes()?); - buffer.extend(self.deploy_hashes.to_bytes()?); - buffer.extend(self.transfer_hashes.to_bytes()?); - Ok(buffer) - } - - fn serialized_length(&self) -> usize { - self.proposer.serialized_length() - + self.deploy_hashes.serialized_length() - + self.transfer_hashes.serialized_length() - } -} - -// See: https://github.com/casper-network/casper-node/blob/edc4b45ea05526ba6dd7971da09e27754a37a230/node/src/types/block.rs#L1308-L1321 -impl FromBytes for BlockBody { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), casper_types::bytesrepr::Error> { - let (proposer, bytes) = PublicKey::from_bytes(bytes)?; - let (deploy_hashes, bytes) = Vec::::from_bytes(bytes)?; - let (transfer_hashes, bytes) = Vec::::from_bytes(bytes)?; - let body = BlockBody { - proposer, - deploy_hashes, - transfer_hashes, - }; - Ok((body, bytes)) - } -} - -// Data structure reflecting the JSON representation of a block's body. -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/types/block.rs#L2268-L2277 -#[derive(Clone, PartialEq, Eq, Debug)] -pub struct Block { - block_header_with_signatures: BlockHeaderWithSignatures, - body: BlockBody, -} - -#[derive(Debug)] -pub enum BlockConstructionError { - InvalidBlockBodyHash { - header_block_hash: Digest, - body_hash: Digest, - }, -} - -impl Block { - pub fn new( - block_header_with_signatures: BlockHeaderWithSignatures, - body: BlockBody, - ) -> Result { - let header_block_hash = block_header_with_signatures.block_header().body_hash(); - let body_hash = body.hash(); - if header_block_hash != &body_hash { - return Err(BlockConstructionError::InvalidBlockBodyHash { - header_block_hash: header_block_hash.clone(), - body_hash, - }); - } - Ok(Block { - block_header_with_signatures, - body, - }) - } - - pub fn block_header_with_signatures(&self) -> &BlockHeaderWithSignatures { - &self.block_header_with_signatures - } - - pub fn body(&self) -> &BlockBody { - &self.body - } -} - -#[cfg(test)] -impl Arbitrary for Block { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - (any::(), any::()) - .prop_map(|(header, body)| Block { - block_header_with_signatures: header, - body, - }) - .boxed() - } -} - -#[cfg(test)] -mod test { - extern crate std; - - use alloc::collections::BTreeMap; - - use casper_types::{bytesrepr::ToBytes, EraId, PublicKey}; - use test_strategy::proptest; - - use crate::{block_header::BlockHash, crypto::sign, hash::DIGEST_LENGTH}; - - use super::{BlockBody, BlockSignatures, DeployHash}; - - #[proptest] - fn serde_json_block_signatures_round_trip(block_signatures: BlockSignatures) { - let serialized_block_signatures = serde_json::to_string(&block_signatures).unwrap(); - let casper_types_block_signatures: casper_node::types::BlockSignatures = - serde_json::from_str(&serialized_block_signatures).unwrap(); - let serialized_casper_types_block_signatures = - serde_json::to_string(&casper_types_block_signatures).unwrap(); - assert_eq!( - serialized_block_signatures, - serialized_casper_types_block_signatures - ); - let deserialized_block_signatures: BlockSignatures = - serde_json::from_str(&serialized_casper_types_block_signatures).unwrap(); - assert_eq!(block_signatures, deserialized_block_signatures); - } - - #[proptest] - fn bincode_block_signatures_round_trip(block_signatures: BlockSignatures) { - let serialized_block_signatures = bincode::serialize(&block_signatures).unwrap(); - let casper_types_block_signatures: casper_node::types::BlockSignatures = - bincode::deserialize(&serialized_block_signatures).unwrap(); - let serialized_casper_types_block_signatures = - bincode::serialize(&casper_types_block_signatures).unwrap(); - assert_eq!( - serialized_block_signatures, - serialized_casper_types_block_signatures - ); - let deserialized_block_signatures: BlockSignatures = - bincode::deserialize(&serialized_casper_types_block_signatures).unwrap(); - assert_eq!(block_signatures, deserialized_block_signatures); - } - - #[test] - fn should_verify() { - let secret_key = casper_types::SecretKey::ed25519_from_bytes([42; 32]).unwrap(); - let block_hash = BlockHash::from([42; DIGEST_LENGTH]); - let era_id = EraId::from(0); - let mut signature_data = block_hash.as_ref().to_vec(); - signature_data.extend_from_slice(&era_id.to_le_bytes()); - let signature = sign(&secret_key, signature_data); - let mut proofs = BTreeMap::new(); - proofs.insert(PublicKey::from(&secret_key), signature); - let block_signatures = BlockSignatures::new(block_hash, era_id, proofs); - assert!(block_signatures.is_ok()); - } - - #[test] - fn should_not_verify() { - let secret_key0 = casper_types::SecretKey::ed25519_from_bytes([42; 32]).unwrap(); - let secret_key1 = casper_types::SecretKey::ed25519_from_bytes([43; 32]).unwrap(); - let block_hash = BlockHash::from([42; DIGEST_LENGTH]); - let bogus_signature = sign(&secret_key1, &block_hash); - let mut proofs = BTreeMap::new(); - proofs.insert(PublicKey::from(&secret_key0), bogus_signature); - let block_signatures = BlockSignatures::new(block_hash, 0.into(), proofs); - assert!(block_signatures.is_err()); - } - - #[proptest] - fn serde_json_deploy_hash_round_trip_casper_types(deploy_hash: DeployHash) { - let serialized_deploy_hash = serde_json::to_string(&deploy_hash).unwrap(); - let casper_types_deploy_hash: casper_types::DeployHash = - serde_json::from_str(&serialized_deploy_hash).unwrap(); - let serialized_casper_types_deploy_hash = - serde_json::to_string(&casper_types_deploy_hash).unwrap(); - assert_eq!(serialized_deploy_hash, serialized_casper_types_deploy_hash); - let deserialized_deploy_hash: DeployHash = - serde_json::from_str(&serialized_casper_types_deploy_hash).unwrap(); - assert_eq!(deploy_hash, deserialized_deploy_hash); - } - - #[proptest] - fn serde_json_deploy_hash_round_trip_casper_node(deploy_hash: DeployHash) { - let serialized_deploy_hash = serde_json::to_string(&deploy_hash).unwrap(); - let casper_node_deploy_hash: casper_node::types::DeployHash = - serde_json::from_str(&serialized_deploy_hash).unwrap(); - let serialized_casper_node_deploy_hash = - serde_json::to_string(&casper_node_deploy_hash).unwrap(); - assert_eq!(serialized_deploy_hash, serialized_casper_node_deploy_hash); - let deserialized_deploy_hash: DeployHash = - serde_json::from_str(&serialized_casper_node_deploy_hash).unwrap(); - assert_eq!(deploy_hash, deserialized_deploy_hash); - } - - // Note: casper_node and casper_types do not have a consistent bincode serialization, so we chose to follow casper_node's serialization. - // See https://github.com/casper-network/casper-node/issues/4502 - - #[proptest] - fn bincode_deploy_hash_round_trip_casper_node(deploy_hash: DeployHash) { - let serialized_deploy_hash = bincode::serialize(&deploy_hash).unwrap(); - let casper_node_deploy_hash: casper_node::types::DeployHash = - bincode::deserialize(&serialized_deploy_hash).unwrap(); - let serialized_casper_node_deploy_hash = - bincode::serialize(&casper_node_deploy_hash).unwrap(); - assert_eq!(serialized_deploy_hash, serialized_casper_node_deploy_hash); - let deserialized_deploy_hash: DeployHash = - bincode::deserialize(&serialized_casper_node_deploy_hash).unwrap(); - assert_eq!(deploy_hash, deserialized_deploy_hash); - } - - #[proptest] - fn bytesrepr_deploy_hash_round_trip_casper_types(deploy_hash: DeployHash) { - let serialized_deploy_hash = deploy_hash.to_bytes().unwrap(); - let casper_types_deploy_hash: casper_types::DeployHash = - casper_types::bytesrepr::deserialize(serialized_deploy_hash.clone()).unwrap(); - let serialized_casper_types_deploy_hash = - casper_types::bytesrepr::serialize(&casper_types_deploy_hash).unwrap(); - assert_eq!(serialized_deploy_hash, serialized_casper_types_deploy_hash); - let deserialized_deploy_hash: DeployHash = - casper_types::bytesrepr::deserialize(serialized_casper_types_deploy_hash.clone()) - .unwrap(); - assert_eq!(deploy_hash, deserialized_deploy_hash); - } - - #[proptest] - fn bytesrepr_deploy_hash_round_trip_casper_node(deploy_hash: DeployHash) { - let serialized_deploy_hash = deploy_hash.to_bytes().unwrap(); - let casper_node_deploy_hash: casper_node::types::DeployHash = - casper_types::bytesrepr::deserialize(serialized_deploy_hash.clone()).unwrap(); - let serialized_casper_node_deploy_hash = - casper_types::bytesrepr::serialize(&casper_node_deploy_hash).unwrap(); - assert_eq!(serialized_deploy_hash, serialized_casper_node_deploy_hash); - let deserialized_deploy_hash: DeployHash = - casper_types::bytesrepr::deserialize(serialized_casper_node_deploy_hash.clone()) - .unwrap(); - assert_eq!(deploy_hash, deserialized_deploy_hash); - } - - #[proptest] - fn serde_json_block_body_round_trip(block_body: BlockBody) { - let serialized_block_body = serde_json::to_string(&block_body).unwrap(); - let casper_node_block_body: casper_node::types::BlockBody = - serde_json::from_str(&serialized_block_body).unwrap(); - let serialized_node_block_body = serde_json::to_string(&casper_node_block_body).unwrap(); - assert_eq!(serialized_block_body, serialized_node_block_body); - let deserialized_block_body: BlockBody = - serde_json::from_str(&serialized_node_block_body).unwrap(); - assert_eq!(block_body, deserialized_block_body); - } - - #[proptest] - fn bincode_block_body_round_trip(block_body: BlockBody) { - let serialized_block_body = bincode::serialize(&block_body).unwrap(); - let casper_node_block_body: casper_node::types::BlockBody = - bincode::deserialize(&serialized_block_body).unwrap(); - let serialized_casper_node_block_body = - bincode::serialize(&casper_node_block_body).unwrap(); - assert_eq!(serialized_block_body, serialized_casper_node_block_body); - let deserialized_block_body: BlockBody = - bincode::deserialize(&serialized_casper_node_block_body).unwrap(); - assert_eq!(block_body, deserialized_block_body); - } - - #[proptest] - fn bytesrepr_block_body_round_trip(block_body: BlockBody) { - let serialized_block_body = block_body.to_bytes().unwrap(); - let casper_node_block_body: casper_node::types::BlockBody = - casper_types::bytesrepr::deserialize(serialized_block_body.clone()).unwrap(); - let serialized_casper_node_block_body = - casper_types::bytesrepr::serialize(&casper_node_block_body).unwrap(); - assert_eq!(serialized_block_body, serialized_casper_node_block_body); - let deserialized_block_body: BlockBody = - casper_types::bytesrepr::deserialize(serialized_casper_node_block_body.clone()) - .unwrap(); - assert_eq!(block_body, deserialized_block_body); - } - - #[proptest] - fn block_body_hash_agree(block_body: BlockBody) { - let block_body_hash = block_body.hash(); - let serialized_block_body = block_body.to_bytes().unwrap(); - let casper_node_block_body: casper_node::types::BlockBody = - casper_types::bytesrepr::deserialize(serialized_block_body).unwrap(); - let casper_node_block_body_hash = casper_node_block_body.hash(); - assert_eq!( - block_body_hash.as_ref(), - casper_node_block_body_hash.as_ref() - ); - } -} diff --git a/src/block_header.rs b/src/block_header.rs deleted file mode 100644 index 7f83bf3..0000000 --- a/src/block_header.rs +++ /dev/null @@ -1,431 +0,0 @@ -use alloc::{string::String, vec::Vec}; - -#[cfg(test)] -use proptest::{arbitrary::Arbitrary, prelude::*}; - -use casper_types::bytesrepr::{FromBytes, ToBytes}; -use casper_types::{EraId, ProtocolVersion}; -use time::OffsetDateTime; - -use super::consensus::EraEnd; -use super::hash::Digest; -use super::hash::DIGEST_LENGTH; - -#[derive( - Clone, Default, Ord, PartialOrd, Eq, PartialEq, Debug, serde::Serialize, serde::Deserialize, -)] -#[cfg_attr(test, derive(proptest_derive::Arbitrary))] -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/types/block.rs#L648 -pub struct BlockHash(Digest); - -impl BlockHash { - pub fn to_hex(&self) -> String { - self.0.to_hex() - } -} - -impl AsRef<[u8]> for BlockHash { - fn as_ref(&self) -> &[u8] { - self.0.as_ref() - } -} - -impl From for [u8; DIGEST_LENGTH] { - fn from(block_hash: BlockHash) -> Self { - block_hash.0.into() - } -} - -impl From for Digest { - fn from(block_hash: BlockHash) -> Self { - block_hash.0 - } -} - -impl From for BlockHash { - fn from(digest: Digest) -> Self { - BlockHash(digest) - } -} - -impl From<[u8; DIGEST_LENGTH]> for BlockHash { - fn from(bytes: [u8; DIGEST_LENGTH]) -> Self { - BlockHash(Digest::from(bytes)) - } -} - -impl ToBytes for BlockHash { - fn to_bytes(&self) -> Result, casper_types::bytesrepr::Error> { - self.0.to_bytes() - } - - fn serialized_length(&self) -> usize { - self.0.serialized_length() - } -} - -impl FromBytes for BlockHash { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), casper_types::bytesrepr::Error> { - let (hash, remainder) = Digest::from_bytes(bytes)?; - let block_hash = BlockHash(hash); - Ok((block_hash, remainder)) - } -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/types/src/timestamp.rs#L32-L40 -pub struct Timestamp(u64); - -#[cfg(test)] -impl Arbitrary for Timestamp { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - (0u64..=253402300799).prop_map(Timestamp).boxed() - } -} - -impl serde::Serialize for Timestamp { - fn serialize(&self, serializer: S) -> Result { - if serializer.is_human_readable() { - let datetime = OffsetDateTime::from_unix_timestamp_nanos((self.0 * 1_000_000) as i128) - .map_err(serde::ser::Error::custom)?; - // Note: this serializes to "1970-01-01T00:00:00.000000000Z" while casper_types::Timestamp serializes to "1970-01-01T00:00:00.000Z" - // On the other hand we can deserialize both formats so it doesn't really matter. - time::serde::rfc3339::serialize(&datetime, serializer) - } else { - self.0.serialize(serializer) - } - } -} - -impl<'de> serde::Deserialize<'de> for Timestamp { - fn deserialize>(deserializer: D) -> Result { - if deserializer.is_human_readable() { - let datetime = time::serde::rfc3339::deserialize(deserializer)?; - let timestamp = datetime.unix_timestamp_nanos(); - Ok(Timestamp((timestamp as u64) / 1_000_000)) - } else { - let inner = u64::deserialize(deserializer)?; - Ok(Timestamp(inner)) - } - } -} - -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/types/src/timestamp.rs#L208-L216 -impl ToBytes for Timestamp { - fn to_bytes(&self) -> Result, casper_types::bytesrepr::Error> { - self.0.to_bytes() - } - - fn serialized_length(&self) -> usize { - self.0.serialized_length() - } -} - -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/types/src/timestamp.rs#L218-L222 -impl FromBytes for Timestamp { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), casper_types::bytesrepr::Error> { - u64::from_bytes(bytes).map(|(inner, remainder)| (Timestamp(inner), remainder)) - } -} - -#[derive(Clone, Eq, PartialEq, Debug)] -#[cfg_attr(test, derive(serde::Serialize, serde::Deserialize))] -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/types/block.rs#L813-L828 -pub struct BlockHeader { - parent_hash: BlockHash, - state_root_hash: Digest, - body_hash: Digest, - random_bit: bool, - accumulated_seed: Digest, - era_end: Option, - timestamp: Timestamp, - era_id: EraId, - height: u64, - protocol_version: ProtocolVersion, -} - -impl BlockHeader { - pub fn new( - parent_hash: BlockHash, - state_root_hash: Digest, - body_hash: Digest, - random_bit: bool, - accumulated_seed: Digest, - era_end: Option, - timestamp: Timestamp, - era_id: EraId, - height: u64, - protocol_version: ProtocolVersion, - ) -> Self { - BlockHeader { - parent_hash, - state_root_hash, - body_hash, - random_bit, - accumulated_seed, - era_end, - timestamp, - era_id, - height, - protocol_version, - } - } - - pub fn parent_hash(&self) -> &BlockHash { - &self.parent_hash - } - - pub fn state_root_hash(&self) -> &Digest { - &self.state_root_hash - } - - pub fn body_hash(&self) -> &Digest { - &self.body_hash - } - - pub fn random_bit(&self) -> bool { - self.random_bit - } - - pub fn accumulated_seed(&self) -> &Digest { - &self.accumulated_seed - } - - pub fn era_end(&self) -> Option<&EraEnd> { - self.era_end.as_ref() - } - - pub fn timestamp(&self) -> Timestamp { - self.timestamp - } - - pub fn era_id(&self) -> EraId { - self.era_id - } - - pub fn height(&self) -> u64 { - self.height - } - - pub fn protocol_version(&self) -> ProtocolVersion { - self.protocol_version - } - - pub fn block_hash(&self) -> BlockHash { - BlockHash(Digest::hash(&self.to_bytes().unwrap())) - } -} - -#[cfg(test)] -impl Arbitrary for BlockHeader { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - fn arb_protocolversion() -> impl Strategy { - (0..=255u32, 0..=255u32, 0..=255u32) - .prop_map(|(major, minor, patch)| ProtocolVersion::from_parts(major, minor, patch)) - } - - ( - any::(), - any::(), - any::(), - any::(), - any::(), - any::>(), - any::(), - any::(), // EraId - any::(), // height - arb_protocolversion(), - ) - .prop_map( - |( - parent_hash, - state_root_hash, - body_hash, - random_bit, - accumulated_seed, - era_end, - timestamp, - era_id, - height, - protocol_version, - )| { - let era_id = EraId::from(era_id); - BlockHeader { - parent_hash, - state_root_hash, - body_hash, - random_bit, - accumulated_seed, - era_end, - timestamp, - era_id, - height, - protocol_version, - } - }, - ) - .boxed() - } -} - -impl ToBytes for BlockHeader { - fn to_bytes(&self) -> Result, casper_types::bytesrepr::Error> { - let mut buffer = casper_types::bytesrepr::allocate_buffer(self)?; - buffer.extend(self.parent_hash.to_bytes()?); - buffer.extend(self.state_root_hash.to_bytes()?); - buffer.extend(self.body_hash.to_bytes()?); - buffer.extend(self.random_bit.to_bytes()?); - buffer.extend(self.accumulated_seed.to_bytes()?); - buffer.extend(self.era_end.to_bytes()?); - buffer.extend(self.timestamp.to_bytes()?); - buffer.extend(self.era_id.to_bytes()?); - buffer.extend(self.height.to_bytes()?); - buffer.extend(self.protocol_version.to_bytes()?); - Ok(buffer) - } - - fn serialized_length(&self) -> usize { - self.parent_hash.serialized_length() - + self.state_root_hash.serialized_length() - + self.body_hash.serialized_length() - + self.random_bit.serialized_length() - + self.accumulated_seed.serialized_length() - + self.era_end.serialized_length() - + self.timestamp.serialized_length() - + self.era_id.serialized_length() - + self.height.serialized_length() - + self.protocol_version.serialized_length() - } -} - -impl FromBytes for BlockHeader { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), casper_types::bytesrepr::Error> { - let (parent_hash, remainder) = BlockHash::from_bytes(bytes)?; - let (state_root_hash, remainder) = Digest::from_bytes(remainder)?; - let (body_hash, remainder) = Digest::from_bytes(remainder)?; - let (random_bit, remainder) = bool::from_bytes(remainder)?; - let (accumulated_seed, remainder) = Digest::from_bytes(remainder)?; - let (era_end, remainder) = Option::::from_bytes(remainder)?; - let (timestamp, remainder) = Timestamp::from_bytes(remainder)?; - let (era_id, remainder) = EraId::from_bytes(remainder)?; - let (height, remainder) = u64::from_bytes(remainder)?; - let (protocol_version, remainder) = ProtocolVersion::from_bytes(remainder)?; - let block_header = BlockHeader { - parent_hash, - state_root_hash, - body_hash, - random_bit, - accumulated_seed, - era_end, - timestamp, - era_id, - height, - protocol_version, - }; - Ok((block_header, remainder)) - } -} - -#[cfg(test)] -mod test { - extern crate std; - - use alloc::borrow::ToOwned; - use casper_types::bytesrepr::{deserialize_from_slice, ToBytes}; - use test_strategy::proptest; - - use super::{BlockHeader, Timestamp}; - - #[proptest] - fn serde_json_timestamp_round_trip(timestamp: Timestamp) { - let serialized_timestamp = serde_json::to_string(×tamp).unwrap(); - let casper_types_timestamp: casper_types::Timestamp = - serde_json::from_str(&serialized_timestamp).unwrap(); - let serialized_casper_types_timestamp = - serde_json::to_string(&casper_types_timestamp).unwrap(); - // Below is busted because we serialize to "1970-01-01T00:00:00Z" while casper_types::Timestamp serializes to "1970-01-01T00:00:00.000Z" - // assert_eq!(serialized_timestamp, serialized_casper_types_timestamp); - let deserialized_timestamp: Timestamp = - serde_json::from_str(&serialized_casper_types_timestamp).unwrap(); - assert_eq!(timestamp, deserialized_timestamp); - } - - #[proptest] - fn bincode_timestamp_round_trip(timestamp: Timestamp) { - let serialized_timestamp = bincode::serialize(×tamp).unwrap(); - let casper_types_timestamp: casper_types::Timestamp = - bincode::deserialize(&serialized_timestamp).unwrap(); - let serialized_casper_types_timestamp = - bincode::serialize(&casper_types_timestamp).unwrap(); - assert_eq!(serialized_timestamp, serialized_casper_types_timestamp); - let deserialized_timestamp: Timestamp = - bincode::deserialize(&serialized_casper_types_timestamp).unwrap(); - assert_eq!(timestamp, deserialized_timestamp); - } - - #[proptest] - fn bytesrepr_timestamp_round_trip(timestamp: Timestamp) { - let serialized_timestamp = timestamp.to_bytes().unwrap(); - let casper_types_timestamp: casper_types::Timestamp = - deserialize_from_slice(&serialized_timestamp).unwrap(); - let serialized_casper_types_timestamp = casper_types_timestamp.to_bytes().unwrap(); - let deserialized_timestamp: Timestamp = - deserialize_from_slice(&serialized_casper_types_timestamp).unwrap(); - assert_eq!(timestamp, deserialized_timestamp) - } - - #[proptest] - fn serde_json_block_header_round_trip(block_header: BlockHeader) { - let serialized_block_header = serde_json::to_string(&block_header).unwrap(); - let casper_node_block_header: casper_node::types::BlockHeader = - serde_json::from_str(&serialized_block_header).unwrap(); - let serialized_casper_node_block_header = - serde_json::to_string(&casper_node_block_header).unwrap(); - let deserialized_block_header: BlockHeader = - serde_json::from_str(&serialized_casper_node_block_header).unwrap(); - assert_eq!(block_header, deserialized_block_header); - } - - #[proptest] - fn bincode_block_header_round_trip(block_header: BlockHeader) { - let serialized_block_header = bincode::serialize(&block_header).unwrap(); - let casper_node_block_header: casper_node::types::BlockHeader = - bincode::deserialize(&serialized_block_header).unwrap(); - let serialized_casper_node_block_header = - bincode::serialize(&casper_node_block_header).unwrap(); - assert_eq!(serialized_block_header, serialized_casper_node_block_header); - let deserialized_block_header: BlockHeader = - bincode::deserialize(&serialized_casper_node_block_header).unwrap(); - assert_eq!(block_header, deserialized_block_header); - } - - #[proptest] - fn bytesrepr_block_header_round_trip(block_header: BlockHeader) { - let serialized_block_header = block_header.to_bytes().unwrap(); - let casper_node_block_header: casper_node::types::BlockHeader = - deserialize_from_slice(&serialized_block_header).unwrap(); - let serialized_casper_node_block_header = casper_node_block_header.to_bytes().unwrap(); - assert_eq!(serialized_block_header, serialized_casper_node_block_header); - let deserialized_block_header: BlockHeader = - deserialize_from_slice(&serialized_casper_node_block_header).unwrap(); - assert_eq!(block_header, deserialized_block_header) - } - - #[proptest] - fn block_header_hash_agree(block_header: BlockHeader) { - let casper_node_block_header: casper_node::types::BlockHeader = - deserialize_from_slice(&block_header.to_bytes().unwrap()).unwrap(); - let block_hash = block_header.block_hash(); - let casper_block_hash = casper_node_block_header.block_hash(); - assert_eq!( - <[u8; 32]>::from(block_hash).to_vec(), - casper_block_hash.as_ref().to_owned() - ); - } -} diff --git a/src/consensus.rs b/src/consensus.rs deleted file mode 100644 index 297aa44..0000000 --- a/src/consensus.rs +++ /dev/null @@ -1,195 +0,0 @@ -use alloc::{collections::BTreeMap, vec::Vec}; - -#[cfg(test)] -use proptest::prelude::*; - -use casper_types::{ - bytesrepr::{FromBytes, ToBytes}, - PublicKey, U512, -}; - -#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)] -#[cfg_attr(test, derive(serde::Serialize, serde::Deserialize))] -// See https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/components/consensus/consensus_protocol.rs#L105-L115 -pub struct EraReport { - pub(crate) equivocators: Vec, - pub(crate) rewards: BTreeMap, - pub(crate) inactive_validators: Vec, -} - -impl EraReport { - pub fn new( - equivocators: Vec, - rewards: BTreeMap, - inactive_validators: Vec, - ) -> Self { - EraReport { - equivocators, - rewards, - inactive_validators, - } - } - - pub fn equivocators(&self) -> &Vec { - &self.equivocators - } - - pub fn rewards(&self) -> &BTreeMap { - &self.rewards - } - - pub fn inactive_validators(&self) -> &Vec { - &self.inactive_validators - } -} - -#[cfg(test)] -impl Arbitrary for EraReport { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - ( - proptest::collection::vec(casper_types::crypto::gens::public_key_arb(), 0..5), - proptest::collection::btree_map( - casper_types::crypto::gens::public_key_arb(), - any::(), - 0..5, - ), - proptest::collection::vec(casper_types::crypto::gens::public_key_arb(), 0..5), - ) - .prop_map(|(equivocators, rewards, inactive_validators)| EraReport { - equivocators, - rewards, - inactive_validators, - }) - .boxed() - } -} - -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/types/block.rs#L390-L404 -impl ToBytes for EraReport { - fn to_bytes(&self) -> Result, casper_types::bytesrepr::Error> { - let mut buffer = casper_types::bytesrepr::allocate_buffer(self)?; - buffer.extend(self.equivocators.to_bytes()?); - buffer.extend(self.rewards.to_bytes()?); - buffer.extend(self.inactive_validators.to_bytes()?); - Ok(buffer) - } - - fn serialized_length(&self) -> usize { - self.equivocators.serialized_length() - + self.rewards.serialized_length() - + self.inactive_validators.serialized_length() - } -} - -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/types/block.rs#L406-L419 -impl FromBytes for EraReport { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), casper_types::bytesrepr::Error> { - let (equivocators, remainder) = Vec::::from_bytes(bytes)?; - let (rewards, remainder) = BTreeMap::::from_bytes(remainder)?; - let (inactive_validators, remainder) = Vec::::from_bytes(remainder)?; - - let era_report = EraReport { - equivocators, - rewards, - inactive_validators, - }; - Ok((era_report, remainder)) - } -} - -#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)] -#[cfg_attr(test, derive(serde::Serialize, serde::Deserialize))] -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/types/block.rs#L748-L753 -pub struct EraEnd { - pub(crate) era_report: EraReport, - pub(crate) next_era_validator_weights: BTreeMap, -} - -impl EraEnd { - pub fn new( - era_report: EraReport, - next_era_validator_weights: BTreeMap, - ) -> Self { - EraEnd { - era_report, - next_era_validator_weights, - } - } - - pub fn era_report(&self) -> &EraReport { - &self.era_report - } - - pub fn next_era_validator_weights(&self) -> &BTreeMap { - &self.next_era_validator_weights - } -} - -#[cfg(test)] -impl Arbitrary for EraEnd { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - ( - any::(), - proptest::collection::btree_map( - casper_types::crypto::gens::public_key_arb(), - any::().prop_map(U512::from), - 0..5, - ), - ) - .prop_map(|(era_report, next_era_validator_weights)| EraEnd { - era_report, - next_era_validator_weights, - }) - .boxed() - } -} - -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/types/block.rs#L774-L785 -impl ToBytes for EraEnd { - fn to_bytes(&self) -> Result, casper_types::bytesrepr::Error> { - let mut buffer = casper_types::bytesrepr::allocate_buffer(self)?; - buffer.extend(self.era_report.to_bytes()?); - buffer.extend(self.next_era_validator_weights.to_bytes()?); - Ok(buffer) - } - - fn serialized_length(&self) -> usize { - self.era_report.serialized_length() + self.next_era_validator_weights.serialized_length() - } -} - -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/types/block.rs#L787-L797 -impl FromBytes for EraEnd { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), casper_types::bytesrepr::Error> { - let (era_report, bytes) = EraReport::from_bytes(bytes)?; - let (next_era_validator_weights, bytes) = BTreeMap::::from_bytes(bytes)?; - let era_end = EraEnd { - era_report, - next_era_validator_weights, - }; - Ok((era_end, bytes)) - } -} - -#[cfg(test)] -mod test { - extern crate std; - - use casper_types::bytesrepr::{deserialize_from_slice, ToBytes}; - use test_strategy::proptest; - - use super::EraEnd; - - #[proptest] - fn bytesrepr_era_end_round_trip(era_end: EraEnd) { - let serialized = era_end.to_bytes().unwrap(); - let deserialized: EraEnd = deserialize_from_slice(&serialized).unwrap(); - assert_eq!(era_end, deserialized) - } -} diff --git a/src/crypto.rs b/src/crypto.rs deleted file mode 100644 index 460949b..0000000 --- a/src/crypto.rs +++ /dev/null @@ -1,209 +0,0 @@ -#[cfg(test)] -use ed25519_dalek::Signer; - -use casper_types::{PublicKey, Signature}; -use k256::ecdsa::{signature::Verifier, VerifyingKey as Secp256k1PublicKey}; - -#[cfg(test)] -pub fn sign>(secret_key: &casper_types::SecretKey, message: T) -> Signature { - match secret_key { - casper_types::SecretKey::System => Signature::System, - casper_types::SecretKey::Ed25519(secret_key) => { - let signature = secret_key.sign(message.as_ref()); - Signature::Ed25519(signature) - } - casper_types::SecretKey::Secp256k1(secret_key) => { - let signature = secret_key - .try_sign(message.as_ref()) - .expect("should create signature"); - Signature::Secp256k1(signature) - } - _ => panic!("SecretKey is marked as non-exhaustive, but this should never happen"), - } -} - -#[derive(Debug)] -pub enum SignatureVerificationError { - SystemSignatureNotAllowed, - FailedToVerifyEd25519Signature, - FailedToVerifySecp256k1Signature, - KeyTypeMismatch, -} - -pub fn verify>( - public_key: &PublicKey, - message: T, - signature: &Signature, -) -> Result<(), SignatureVerificationError> { - match (signature, public_key) { - (Signature::System, _) => Err(SignatureVerificationError::SystemSignatureNotAllowed), - (Signature::Ed25519(signature), PublicKey::Ed25519(public_key)) => public_key - .verify_strict(message.as_ref(), signature) - .map_err(|_| SignatureVerificationError::FailedToVerifyEd25519Signature), - (Signature::Secp256k1(signature), PublicKey::Secp256k1(public_key)) => { - let verifier: &Secp256k1PublicKey = public_key; - verifier - .verify(message.as_ref(), signature) - .map_err(|_| SignatureVerificationError::FailedToVerifySecp256k1Signature) - } - _ => Err(SignatureVerificationError::KeyTypeMismatch), - } -} - -#[cfg(test)] -mod test { - extern crate std; - - use alloc::vec::Vec; - use casper_types::PublicKey as CasperPublicKey; - use casper_types::SecretKey as CasperSecretKey; - use ed25519_dalek::SigningKey as Ed25519SecretKey; - use k256::ecdsa::SigningKey as Secp256k1SecretKey; - use proptest::prelude::*; - use test_strategy::proptest; - - use super::{sign, verify}; - - #[derive(Debug)] - enum RealSecretKey { - Ed25519(Ed25519SecretKey), - Secp256k1(Secp256k1SecretKey), - } - - impl Arbitrary for RealSecretKey { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - prop_oneof![ - any::<[u8; CasperPublicKey::ED25519_LENGTH]>().prop_map(|bytes| { - RealSecretKey::Ed25519(Ed25519SecretKey::try_from(bytes).unwrap()) - }), - any::<[u8; CasperSecretKey::SECP256K1_LENGTH]>() - .prop_filter("Cannot make a secret key from [0u8; 32]", |bytes| bytes - != &[0u8; CasperSecretKey::SECP256K1_LENGTH]) - .prop_map(|bytes| RealSecretKey::Secp256k1( - Secp256k1SecretKey::from_slice(bytes.as_ref()).unwrap() - )), - ] - .boxed() - } - } - - impl From for CasperSecretKey { - fn from(real_secret_key: RealSecretKey) -> Self { - match real_secret_key { - RealSecretKey::Ed25519(ed25519_secret_key) => { - CasperSecretKey::Ed25519(ed25519_secret_key) - } - RealSecretKey::Secp256k1(secp256k1_secret_key) => { - CasperSecretKey::Secp256k1(secp256k1_secret_key) - } - } - } - } - - #[proptest] - fn sign_and_verify(real_secret_key: RealSecretKey, message: Vec) { - let casper_secret_key = CasperSecretKey::from(real_secret_key); - let signature = sign(&casper_secret_key, &message); - assert_eq!( - verify( - &CasperPublicKey::from(&casper_secret_key), - &message, - &signature - ) - .unwrap(), - () - ) - } - - #[proptest] - fn signatures_should_agree_with_casper_types(real_secret_key: RealSecretKey, message: Vec) { - let casper_secret_key = CasperSecretKey::from(real_secret_key); - let our_signature = sign(&casper_secret_key, &message); - let casper_types_signature = casper_types::crypto::sign( - &message, - &casper_secret_key, - &CasperPublicKey::from(&casper_secret_key), - ); - assert_eq!(our_signature, casper_types_signature) - } - - #[test] - fn should_not_verify_bad_ed25519_signature() { - let bad_secret_key = - CasperSecretKey::ed25519_from_bytes([0u8; CasperSecretKey::ED25519_LENGTH]).unwrap(); - let message = "this shouldn't work for the good public key"; - let bad_signature = sign(&bad_secret_key, message); - assert_eq!( - verify( - &CasperPublicKey::from(&bad_secret_key), - message, - &bad_signature - ) - .unwrap(), - (), - "Bad secret key should be able to verify its own signature" - ); - let good_public_key = CasperPublicKey::from( - &CasperSecretKey::ed25519_from_bytes([1u8; CasperSecretKey::ED25519_LENGTH]).unwrap(), - ); - assert!( - verify(&good_public_key, message, &bad_signature).is_err(), - "good public key should not be able to verify bad signature" - ) - } - - #[test] - fn should_not_verify_bad_secp256k1_signature() { - // Can't use [0u8; 32] because its a bogus secret key - let bad_secret_key = - CasperSecretKey::secp256k1_from_bytes([1u8; CasperSecretKey::SECP256K1_LENGTH]) - .unwrap(); - let message = "this shouldn't work for the good public key"; - let bad_signature = sign(&bad_secret_key, message); - assert_eq!( - verify( - &CasperPublicKey::from(&bad_secret_key), - message, - &bad_signature - ) - .unwrap(), - (), - "Bad secret key should be able to verify its own signature" - ); - let good_public_key = CasperPublicKey::from( - &CasperSecretKey::secp256k1_from_bytes([2u8; CasperSecretKey::SECP256K1_LENGTH]) - .unwrap(), - ); - assert!( - verify(&good_public_key, message, &bad_signature).is_err(), - "good public key should not be able to verify bad signature" - ) - } - - #[test] - fn should_not_verify_system_signature() { - let message = "system can't really sign anything"; - let bad_signature = sign(&CasperSecretKey::System, message); - assert!( - verify(&CasperPublicKey::System, message, &bad_signature).is_err(), - "System is not allowed to sign anything" - ); - } - - #[test] - fn should_not_verify_different_signature_schemes() { - let message = "should not work because the signatures are different types"; - let secret_bytes = [1u8; 32]; - let ed25519_secret_key = CasperSecretKey::ed25519_from_bytes(&secret_bytes).unwrap(); - let secp256k1_public_key = - CasperPublicKey::from(&CasperSecretKey::secp256k1_from_bytes(&secret_bytes).unwrap()); - let ed25519_signature = sign(&ed25519_secret_key, &message); - assert!( - verify(&secp256k1_public_key, &message, &ed25519_signature).is_err(), - "should not verify different types of public keys and signatures" - ) - } -} diff --git a/src/hash.rs b/src/hash.rs deleted file mode 100644 index 9c1bc2c..0000000 --- a/src/hash.rs +++ /dev/null @@ -1,204 +0,0 @@ -use alloc::{string::String, vec::Vec}; -use casper_types::bytesrepr::{FromBytes, ToBytes}; -use itertools::Itertools; - -pub const DIGEST_LENGTH: usize = 32; -const SENTINEL_MERKLE_TREE: Digest = Digest([2u8; DIGEST_LENGTH]); -const CHUNK_SIZE_BYTES: usize = 8 * 1024 * 1024; -const CHUNK_DATA_ZEROED: [u8; CHUNK_SIZE_BYTES] = [0u8; CHUNK_SIZE_BYTES]; - -#[derive(Clone, Default, Ord, PartialOrd, Eq, PartialEq, Hash, Debug)] -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/hashing/src/lib.rs#L48 -#[cfg_attr(test, derive(proptest_derive::Arbitrary))] -pub struct Digest([u8; DIGEST_LENGTH]); - -impl Digest { - pub fn hash(data: &[u8]) -> Self { - let hashed_data: [u8; DIGEST_LENGTH] = blake2b_simd::Params::new() - .hash_length(DIGEST_LENGTH) - .hash(data) - .as_bytes() - .try_into() - .unwrap_or_else(|_| panic!("should be {} bytes long", DIGEST_LENGTH)); - Digest(hashed_data) - } - - fn hash_pair, U: AsRef<[u8]>>(data1: T, data2: U) -> Digest { - let hashed_data: [u8; DIGEST_LENGTH] = blake2b_simd::Params::new() - .hash_length(DIGEST_LENGTH) - .to_state() - .update(data1.as_ref()) - .update(data2.as_ref()) - .finalize() - .as_bytes() - .try_into() - .unwrap_or_else(|_| panic!("should be {} bytes long", DIGEST_LENGTH)); - Digest(hashed_data) - } - - fn hash_merkle_root(leaf_count: u64, root: Digest) -> Digest { - let hashed_data: [u8; DIGEST_LENGTH] = blake2b_simd::Params::new() - .hash_length(DIGEST_LENGTH) - .to_state() - .update(&CHUNK_DATA_ZEROED) - .update(&leaf_count.to_le_bytes()) - .update(root.as_ref()) - .finalize() - .as_bytes() - .try_into() - .unwrap_or_else(|_| panic!("should be {} bytes long", DIGEST_LENGTH)); - Digest(hashed_data) - } - - fn hash_merkle_tree(leaves: I) -> Digest - where - I: IntoIterator, - I::IntoIter: ExactSizeIterator, - { - let leaves = leaves.into_iter(); - let leaf_count = leaves.len() as u64; - - leaves.tree_fold1(Digest::hash_pair).map_or_else( - || SENTINEL_MERKLE_TREE, - |raw_root| Digest::hash_merkle_root(leaf_count, raw_root), - ) - } - - pub fn hash_into_chunks_if_necessary(bytes: &[u8]) -> Digest { - if bytes.len() <= CHUNK_SIZE_BYTES { - Digest::hash(bytes) - } else { - Digest::hash_merkle_tree(bytes.chunks(CHUNK_SIZE_BYTES).map(Digest::hash)) - } - } - - pub fn to_hex(&self) -> String { - base16::encode_lower(&self.0) - } -} - -impl AsRef<[u8]> for Digest { - fn as_ref(&self) -> &[u8] { - self.0.as_ref() - } -} - -impl From for [u8; DIGEST_LENGTH] { - fn from(digest: Digest) -> Self { - digest.0 - } -} - -impl From<[u8; DIGEST_LENGTH]> for Digest { - fn from(bytes: [u8; DIGEST_LENGTH]) -> Self { - Digest(bytes) - } -} - -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/hashing/src/lib.rs#L316-L339 -impl ToBytes for Digest { - fn to_bytes(&self) -> Result, casper_types::bytesrepr::Error> { - self.0.to_bytes() - } - - fn serialized_length(&self) -> usize { - self.0.serialized_length() - } - - fn write_bytes(&self, writer: &mut Vec) -> Result<(), casper_types::bytesrepr::Error> { - writer.extend_from_slice(&self.0); - Ok(()) - } -} - -impl FromBytes for Digest { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), casper_types::bytesrepr::Error> { - FromBytes::from_bytes(bytes).map(|(arr, rem)| (Digest(arr), rem)) - } -} - -// See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/hashing/src/lib.rs#L341-L367 -impl serde::Serialize for Digest { - fn serialize(&self, serializer: S) -> Result { - if serializer.is_human_readable() { - base16::encode_lower(&self.0).serialize(serializer) - } else { - self.0[..].serialize(serializer) - } - } -} - -impl<'de> serde::Deserialize<'de> for Digest { - fn deserialize>(deserializer: D) -> Result { - let bytes: Vec; - - if deserializer.is_human_readable() { - let hex_string = String::deserialize(deserializer)?; - bytes = base16::decode(hex_string.as_bytes()).map_err(serde::de::Error::custom)?; - } else { - bytes = >::deserialize(deserializer)?; - } - - let data = - <[u8; DIGEST_LENGTH]>::try_from(bytes.as_ref()).map_err(serde::de::Error::custom)?; - Ok(Digest(data)) - } -} - -#[cfg(test)] -mod test { - extern crate std; - - use alloc::vec::Vec; - use casper_types::bytesrepr::{deserialize_from_slice, ToBytes}; - use test_strategy::proptest; - - use super::{Digest, DIGEST_LENGTH}; - - #[proptest] - fn serde_json_digest_round_trip(timestamp: Digest) { - let serialized_digest = serde_json::to_string(×tamp).unwrap(); - let casper_hashing_digest: casper_hashing::Digest = - serde_json::from_str(&serialized_digest).unwrap(); - let serialized_casper_hashing_digest = - serde_json::to_string(&casper_hashing_digest).unwrap(); - assert_eq!(serialized_digest, serialized_casper_hashing_digest); - let deserialized_digest: Digest = - serde_json::from_str(&serialized_casper_hashing_digest).unwrap(); - assert_eq!(timestamp, deserialized_digest); - } - - #[proptest] - fn bincode_timestamp_round_trip(timestamp: Digest) { - let serialized_timestamp = bincode::serialize(×tamp).unwrap(); - let casper_types_timestamp: casper_hashing::Digest = - bincode::deserialize(&serialized_timestamp).unwrap(); - let serialized_casper_types_timestamp = - bincode::serialize(&casper_types_timestamp).unwrap(); - assert_eq!(serialized_timestamp, serialized_casper_types_timestamp); - let deserialized_timestamp: Digest = - bincode::deserialize(&serialized_casper_types_timestamp).unwrap(); - assert_eq!(timestamp, deserialized_timestamp); - } - - #[proptest] - fn bytesrepr_digest_round_trip(digest: Digest) { - let serialized_digest = digest.to_bytes().unwrap(); - let casper_hashing_digest: casper_hashing::Digest = - deserialize_from_slice(&serialized_digest).unwrap(); - let serialized_casper_hashing_digest = casper_hashing_digest.to_bytes().unwrap(); - let deserialized_digest: Digest = - deserialize_from_slice(&serialized_casper_hashing_digest).unwrap(); - assert_eq!(digest, deserialized_digest) - } - - #[proptest] - fn hashing_agrees_with_casper_hashing(data: Vec) { - let digest = Digest::hash(&data); - let casper_digest = casper_hashing::Digest::hash(&data); - assert_eq!( - <[u8; DIGEST_LENGTH]>::from(digest), - <[u8; DIGEST_LENGTH]>::from(casper_digest) - ); - } -} diff --git a/src/json_compatibility.rs b/src/json_compatibility.rs deleted file mode 100644 index faa9954..0000000 --- a/src/json_compatibility.rs +++ /dev/null @@ -1,445 +0,0 @@ -// See https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/types/block.rs#L2072 - -use alloc::vec::Vec; - -use casper_types::{EraId, ProtocolVersion, PublicKey, Signature, U512}; -use serde::{Deserialize, Serialize}; - -use crate::{ - block::{ - Block, BlockBody, BlockConstructionError, BlockHeaderWithSignatures, - BlockHeaderWithSignaturesConstructionError, BlockSignatures, - }, - block_header::{BlockHash, BlockHeader, Timestamp}, - consensus::{EraEnd, EraReport}, - crypto::SignatureVerificationError, - hash::Digest, -}; - -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] -#[serde(deny_unknown_fields)] -pub struct Reward { - validator: PublicKey, - amount: u64, -} - -impl Reward { - pub fn validator(&self) -> &PublicKey { - &self.validator - } - - pub fn amount(&self) -> u64 { - self.amount - } -} - -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] -#[serde(deny_unknown_fields)] -pub struct ValidatorWeight { - validator: PublicKey, - weight: U512, -} - -impl ValidatorWeight { - pub fn validator(&self) -> &PublicKey { - &self.validator - } - - pub fn weight(&self) -> U512 { - self.weight - } -} - -/// Equivocation and reward information to be included in the terminal block. -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] -#[serde(deny_unknown_fields)] -pub struct JsonEraReport { - equivocators: Vec, - rewards: Vec, - inactive_validators: Vec, -} - -impl JsonEraReport { - pub fn equivocators(&self) -> &Vec { - &self.equivocators - } - - pub fn rewards(&self) -> &Vec { - &self.rewards - } - - pub fn inactive_validators(&self) -> &Vec { - &self.inactive_validators - } -} - -impl From for JsonEraReport { - fn from(era_report: EraReport) -> Self { - let EraReport { - equivocators, - rewards, - inactive_validators, - } = era_report; - let rewards = rewards - .into_iter() - .map(|(validator, amount)| Reward { - validator: validator, - amount: amount, - }) - .collect(); - JsonEraReport { - equivocators, - rewards, - inactive_validators, - } - } -} - -impl From for EraReport { - fn from(era_report: JsonEraReport) -> Self { - let JsonEraReport { - equivocators, - rewards, - inactive_validators, - } = era_report; - let rewards = rewards - .into_iter() - .map(|reward| (reward.validator, reward.amount)) - .collect(); - EraReport { - equivocators, - rewards, - inactive_validators, - } - } -} - -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] -#[serde(deny_unknown_fields)] -pub struct JsonEraEnd { - era_report: JsonEraReport, - next_era_validator_weights: Vec, -} - -impl JsonEraEnd { - pub fn era_report(&self) -> &JsonEraReport { - &self.era_report - } - - pub fn next_era_validator_weights(&self) -> &Vec { - &self.next_era_validator_weights - } -} - -impl From for JsonEraEnd { - fn from(era_end: EraEnd) -> Self { - let era_report = JsonEraReport::from(era_end.era_report); - let next_era_validator_weights = era_end - .next_era_validator_weights - .iter() - .map(|(validator, weight)| ValidatorWeight { - validator: validator.clone(), - weight: *weight, - }) - .collect(); - JsonEraEnd { - era_report, - next_era_validator_weights, - } - } -} - -impl From for EraEnd { - fn from(json_data: JsonEraEnd) -> Self { - let era_report = EraReport::from(json_data.era_report); - let next_era_validator_weights = json_data - .next_era_validator_weights - .iter() - .map(|validator_weight| (validator_weight.validator.clone(), validator_weight.weight)) - .collect(); - EraEnd { - era_report, - next_era_validator_weights, - } - } -} - -/// JSON representation of a block header. -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] -#[serde(deny_unknown_fields)] -pub struct JsonBlockHeader { - parent_hash: BlockHash, - state_root_hash: Digest, - body_hash: Digest, - random_bit: bool, - accumulated_seed: Digest, - era_end: Option, - timestamp: Timestamp, - era_id: EraId, - height: u64, - protocol_version: ProtocolVersion, -} - -impl JsonBlockHeader { - pub fn parent_hash(&self) -> &BlockHash { - &self.parent_hash - } - - pub fn state_root_hash(&self) -> &Digest { - &self.state_root_hash - } - - pub fn body_hash(&self) -> &Digest { - &self.body_hash - } - - pub fn random_bit(&self) -> bool { - self.random_bit - } - - pub fn accumulated_seed(&self) -> &Digest { - &self.accumulated_seed - } - - pub fn era_end(&self) -> Option<&JsonEraEnd> { - self.era_end.as_ref() - } - - pub fn timestamp(&self) -> Timestamp { - self.timestamp - } - - pub fn era_id(&self) -> EraId { - self.era_id - } - - pub fn height(&self) -> u64 { - self.height - } - - pub fn protocol_version(&self) -> ProtocolVersion { - self.protocol_version - } -} - -impl From for JsonBlockHeader { - fn from(block_header: BlockHeader) -> Self { - JsonBlockHeader { - parent_hash: block_header.parent_hash().clone(), - state_root_hash: block_header.state_root_hash().clone(), - body_hash: block_header.body_hash().clone(), - random_bit: block_header.random_bit(), - accumulated_seed: block_header.accumulated_seed().clone(), - era_end: block_header.era_end().cloned().map(JsonEraEnd::from), - timestamp: block_header.timestamp(), - era_id: block_header.era_id(), - height: block_header.height(), - protocol_version: block_header.protocol_version(), - } - } -} - -impl From for BlockHeader { - fn from(block_header: JsonBlockHeader) -> Self { - let JsonBlockHeader { - parent_hash, - state_root_hash, - body_hash, - random_bit, - accumulated_seed, - era_end, - timestamp, - era_id, - height, - protocol_version, - } = block_header; - let era_end = era_end.map(EraEnd::from); - BlockHeader::new( - parent_hash, - state_root_hash, - body_hash, - random_bit, - accumulated_seed, - era_end, - timestamp, - era_id, - height, - protocol_version, - ) - } -} - -/// A JSON-friendly representation of a proof, i.e. a block's finality signature. -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, PartialOrd, Ord)] -#[serde(deny_unknown_fields)] -pub struct JsonProof { - public_key: PublicKey, - signature: Signature, -} - -impl JsonProof { - pub fn public_key(&self) -> &PublicKey { - &self.public_key - } - - pub fn signature(&self) -> &Signature { - &self.signature - } -} - -impl From<(PublicKey, Signature)> for JsonProof { - fn from((public_key, signature): (PublicKey, Signature)) -> JsonProof { - JsonProof { - public_key, - signature, - } - } -} - -impl From for (PublicKey, Signature) { - fn from(proof: JsonProof) -> (PublicKey, Signature) { - (proof.public_key, proof.signature) - } -} - -/// A JSON-friendly representation of `Block`. -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] -#[serde(deny_unknown_fields)] -pub struct JsonBlock { - hash: BlockHash, - header: JsonBlockHeader, - body: BlockBody, - proofs: Vec, -} - -impl JsonBlock { - pub fn hash(&self) -> &BlockHash { - &self.hash - } - - pub fn header(&self) -> &JsonBlockHeader { - &self.header - } - - pub fn body(&self) -> &BlockBody { - &self.body - } - - pub fn proofs(&self) -> &Vec { - &self.proofs - } -} - -impl From for JsonBlock { - fn from(block: Block) -> Self { - let hash = block - .block_header_with_signatures() - .block_header() - .block_hash(); - let header = - JsonBlockHeader::from(block.block_header_with_signatures().block_header().clone()); - let proofs = block - .block_header_with_signatures() - .block_signatures() - .proofs() - .into_iter() - .map(|(pubkey, signature)| JsonProof::from((pubkey.clone(), signature.clone()))) - .collect(); - JsonBlock { - hash, - header, - body: block.body().clone(), - proofs, - } - } -} - -#[derive(Debug)] -pub enum JsonBlockConversionError { - InvalidBlockHash { - block_hash: BlockHash, - header_hash: BlockHash, - }, - InvalidBlockBodyHash { - actual_body_hash: Digest, - header_body_hash: Digest, - }, - SignatureVerificationError(SignatureVerificationError), - BlockHeaderWithSignaturesConstructionError(BlockHeaderWithSignaturesConstructionError), - BlockConstructionError(BlockConstructionError), -} - -impl TryFrom for Block { - type Error = JsonBlockConversionError; - - fn try_from(json_block: JsonBlock) -> Result { - let JsonBlock { - hash: block_hash, - header, - body, - proofs, - } = json_block; - let block_header = BlockHeader::from(header); - let header_hash = block_header.block_hash(); - if block_hash != header_hash { - return Err(JsonBlockConversionError::InvalidBlockHash { - block_hash, - header_hash, - }); - } - let block_signatures = BlockSignatures::new( - header_hash, - block_header.era_id(), - proofs - .into_iter() - .map(|proof| (proof.public_key, proof.signature)) - .collect(), - ) - .map_err(JsonBlockConversionError::SignatureVerificationError)?; - let actual_body_hash = body.hash(); - if actual_body_hash != *block_header.body_hash() { - return Err(JsonBlockConversionError::InvalidBlockBodyHash { - actual_body_hash, - header_body_hash: block_header.body_hash().clone(), - }); - } - let header = BlockHeaderWithSignatures::new(block_header, block_signatures) - .map_err(JsonBlockConversionError::BlockHeaderWithSignaturesConstructionError)?; - Ok(Block::new(header, body).map_err(JsonBlockConversionError::BlockConstructionError)?) - } -} - -#[cfg(test)] -mod test { - extern crate std; - - use test_strategy::proptest; - - use crate::{ - block_header::BlockHeader, - consensus::{EraEnd, EraReport}, - }; - - use super::{JsonBlockHeader, JsonEraEnd, JsonEraReport}; - - #[proptest] - fn era_report_round_trip(era_report: EraReport) { - let json_era_report = JsonEraReport::from(era_report.clone()); - let round_trip_era_report = EraReport::from(json_era_report); - assert_eq!(era_report, round_trip_era_report); - } - - #[proptest] - fn era_end_round_trip(era_end: EraEnd) { - let json_era_end = JsonEraEnd::from(era_end.clone()); - let round_trip_era_end = EraEnd::from(json_era_end); - assert_eq!(era_end, round_trip_era_end); - } - - #[proptest] - fn block_header_round_trip(block_header: BlockHeader) { - let json_block_header = JsonBlockHeader::from(block_header.clone()); - let round_trip_block_header = BlockHeader::from(json_block_header); - assert_eq!(block_header, round_trip_block_header); - } -} diff --git a/src/kernel.rs b/src/kernel.rs index 1af6c6f..cb5b614 100644 --- a/src/kernel.rs +++ b/src/kernel.rs @@ -1,13 +1,5 @@ -use alloc::collections::BTreeMap; -use casper_types::{EraId, PublicKey, U512}; -use core::option::Option; - -use crate::{ - block::BlockHeaderWithSignatures, - crypto::{verify, SignatureVerificationError}, -}; - -use super::block_header::BlockHash; +use casper_types::{BlockBody, EraId, JsonBlockWithSignatures, PublicKey, U512}; +use std::collections::BTreeMap; pub struct EraInfo { era_id: EraId, @@ -22,24 +14,19 @@ pub enum BlockSignaturesValidationError { block_header_era_id: EraId, }, BogusValidator(PublicKey), - SignatureVerificationError(SignatureVerificationError), + SignatureVerificationError, + BlockHashMismatch, + BlockBodyHashMismatch, InsufficientWeight { bad_signature_weight: U512, total_weight: U512, }, } -impl From for BlockSignaturesValidationError { - fn from(signature_verification_error: SignatureVerificationError) -> Self { - BlockSignaturesValidationError::SignatureVerificationError(signature_verification_error) - } -} - impl EraInfo { pub fn new(era_id: EraId, validator_weights: BTreeMap) -> Self { let total_weight = validator_weights .values() - .into_iter() .fold(U512::from(0), |acc, x| acc + x); Self { era_id, @@ -52,26 +39,46 @@ impl EraInfo { self.era_id } + #[allow(clippy::result_large_err)] pub fn validate( &self, - block_header_with_signatures: &BlockHeaderWithSignatures, + JsonBlockWithSignatures { block, proofs }: JsonBlockWithSignatures, ) -> Result<(), BlockSignaturesValidationError> { let mut block_signature_weight = U512::from(0); - let block_header = block_header_with_signatures.block_header(); - if block_header.era_id() != self.era_id { + if block.era_id() != self.era_id { return Err(BlockSignaturesValidationError::WrongEraId { trusted_era_id: self.era_id, - block_header_era_id: block_header_with_signatures.block_header().era_id(), + block_header_era_id: block.era_id(), }); } + + let block_header = block.clone_header(); + let block_body = block.clone_body(); + + // The OnceCell in these will not be initialized prior to calling these hash + // methods since the `OnceCell` is not serialized upstream. + let computed_block_hash = block_header.block_hash(); + let computed_block_body_hash = match block_body { + BlockBody::V1(block_body_v1) => block_body_v1.hash(), + BlockBody::V2(block_body_v2) => block_body_v2.hash(), + }; + + let claimed_block_hash = block.hash(); + let claimed_block_body_hash = block.body_hash(); + + if computed_block_hash != *claimed_block_hash { + return Err(BlockSignaturesValidationError::BlockHashMismatch); + } + + if computed_block_body_hash != *claimed_block_body_hash { + return Err(BlockSignaturesValidationError::BlockBodyHashMismatch); + } + // See: https://github.com/casper-network/casper-node/blob/8ca9001dabba0dae95f92ad8c54eddd163200b5d/node/src/types/block.rs#L2465-L2474 - let mut signature_data = block_header.block_hash().as_ref().to_vec(); - signature_data.extend_from_slice(&block_header.era_id().to_le_bytes()); - for (public_key, signature) in block_header_with_signatures - .block_signatures() - .proofs() - .iter() - { + let mut signature_data = computed_block_hash.inner().into_vec(); + + signature_data.extend_from_slice(&block.era_id().to_le_bytes()); + for (public_key, signature) in proofs.iter() { if let Some(validator_weight) = self.validator_weights.get(public_key) { block_signature_weight += *validator_weight; } else { @@ -79,7 +86,8 @@ impl EraInfo { public_key.clone(), )); } - verify(public_key, &signature_data, signature)?; + casper_types::verify(&signature_data, signature, public_key) + .map_err(|_| BlockSignaturesValidationError::SignatureVerificationError)?; // If the block has `block_signature_weight >= 1/3 * total_weight`, its okay if U512::from(3) * block_signature_weight >= self.total_weight { @@ -88,153 +96,7 @@ impl EraInfo { } Err(BlockSignaturesValidationError::InsufficientWeight { bad_signature_weight: block_signature_weight, - total_weight: self.total_weight.clone(), + total_weight: self.total_weight, }) } } - -pub struct ParentHashAndCurrentHeight { - parent_hash: BlockHash, - current_height: u64, -} - -impl ParentHashAndCurrentHeight { - pub fn parent_hash(&self) -> &BlockHash { - &self.parent_hash - } - - pub fn current_height(&self) -> u64 { - self.current_height - } -} - -pub struct LightClientKernel { - latest_block_hash: BlockHash, - parent_hash_and_current_height: Option, - era_info: Option, -} - -#[derive(Debug)] -pub enum LightClientUpdateError { - InvalidBlockHashWhenInitializing, - InvalidBlockHashWhenWalkingBack, - BlockInPastWhenProgressing { - bad_block_height: u64, - current_height: u64, - }, - InvalidSignatures(BlockSignaturesValidationError), -} - -impl From for LightClientUpdateError { - fn from(block_signature_validation_error: BlockSignaturesValidationError) -> Self { - LightClientUpdateError::InvalidSignatures(block_signature_validation_error) - } -} - -impl LightClientKernel { - pub fn new(latest_block_hash: BlockHash) -> Self { - LightClientKernel { - latest_block_hash, - parent_hash_and_current_height: None, - era_info: None, - } - } - - pub fn update( - &mut self, - block_header_with_signatures: &BlockHeaderWithSignatures, - ) -> Result<(), LightClientUpdateError> { - let block_header = block_header_with_signatures.block_header(); - match (&self.parent_hash_and_current_height, &self.era_info) { - // parent_hash_and_current_height are not set, check the latest block has the correct trusted hash and set them - (None, _) => { - if self.latest_block_hash == block_header.block_hash() { - let parent_hash = block_header.parent_hash().clone(); - let current_height = block_header.height(); - self.parent_hash_and_current_height = Some(ParentHashAndCurrentHeight { - parent_hash, - current_height, - }); - if let Some(era_end) = block_header.era_end() { - self.era_info = Some(EraInfo::new( - block_header.era_id().successor(), - era_end.next_era_validator_weights().clone(), - )); - } - Ok(()) - } else { - Err(LightClientUpdateError::InvalidBlockHashWhenInitializing) - } - } - // If the parent_hash_and_current_height are set, but there's no `EraInfo`, then the update effectively walks the light-client back in history by a block. - // If the block_header_with_metadata has an era_end, use that to set `EraInfo`. - ( - Some(ParentHashAndCurrentHeight { - parent_hash, - current_height: _, - }), - None, - ) => { - if parent_hash == &block_header.block_hash() { - self.latest_block_hash = parent_hash.clone(); - let parent_hash = block_header.parent_hash().clone(); - let current_height = block_header.height(); - self.parent_hash_and_current_height = Some(ParentHashAndCurrentHeight { - parent_hash, - current_height, - }); - if let Some(era_end) = block_header.era_end() { - self.era_info = Some(EraInfo::new( - block_header.era_id().successor(), - era_end.next_era_validator_weights().clone(), - )); - } - Ok(()) - } else { - Err(LightClientUpdateError::InvalidBlockHashWhenWalkingBack) - } - } - // If the era_info is set, then the light client progresses by checking if the block is in the current era and has proper finality signatures. If it is and it has a height higher than the kernel, progress the light client. - ( - Some(ParentHashAndCurrentHeight { - parent_hash: _, - current_height, - }), - Some(era_info), - ) => { - if block_header.height() <= *current_height { - Err(LightClientUpdateError::BlockInPastWhenProgressing { - bad_block_height: block_header.height(), - current_height: *current_height, - }) - } else { - era_info.validate(block_header_with_signatures)?; - self.latest_block_hash = block_header.block_hash(); - self.parent_hash_and_current_height = Some(ParentHashAndCurrentHeight { - parent_hash: block_header.parent_hash().clone(), - current_height: block_header.height(), - }); - if let Some(era_end) = block_header.era_end() { - self.era_info = Some(EraInfo::new( - block_header.era_id().successor(), - era_end.next_era_validator_weights().clone(), - )); - } - Ok(()) - } - } - } - } - - pub fn latest_block_hash(&self) -> &BlockHash { - &self.latest_block_hash - } - - pub fn parent_hash_and_current_height(&self) -> Option<&ParentHashAndCurrentHeight> { - self.parent_hash_and_current_height.as_ref() - } - - pub fn era_info(&self) -> Option<&EraInfo> { - self.era_info.as_ref() - } -} diff --git a/src/lib.rs b/src/lib.rs index 91ca54f..2357c21 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,13 +1,4 @@ -#![no_std] - -extern crate alloc; -extern crate core; - -pub mod block; -pub mod block_header; -pub mod consensus; -pub(crate) mod crypto; -pub mod hash; -pub mod json_compatibility; pub mod kernel; pub mod merkle_proof; +/// Re-export of `casper_types` crate to allow library consumers to match the version easily. +pub use casper_types; diff --git a/src/merkle_proof.rs b/src/merkle_proof.rs index 734451d..c5bd55c 100644 --- a/src/merkle_proof.rs +++ b/src/merkle_proof.rs @@ -1,502 +1,12 @@ // See https://github.com/casper-network/casper-node/blob/76ea7104cda02fcf1bd6edb686fd00b162dabde8/execution_engine/src/storage/trie/mod.rs // and https://github.com/casper-network/casper-node/blob/76ea7104cda02fcf1bd6edb686fd00b162dabde8/execution_engine/src/storage/trie/merkle_proof.rs -use core::mem::MaybeUninit; -use alloc::{boxed::Box, string::String, vec::Vec}; +use casper_storage::global_state::trie_store::operations::compute_state_hash; +pub use casper_types::global_state::TrieMerkleProofStep; -use casper_types::{ - bytesrepr::{self, Bytes, FromBytes, ToBytes, U8_SERIALIZED_LENGTH}, - CLValueError, Key, StoredValue, -}; -#[cfg(test)] -use proptest::prelude::*; +use casper_types::{bytesrepr, CLValueError, Digest, Key, StoredValue}; -use super::hash::{Digest, DIGEST_LENGTH}; - -const TRIE_MERKLE_PROOF_STEP_NODE_ID: u8 = 0; -const TRIE_MERKLE_PROOF_STEP_EXTENSION_ID: u8 = 1; -const RADIX: usize = 256; - -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum Pointer { - LeafPointer(Digest), - NodePointer(Digest), -} - -impl Pointer { - pub fn hash(&self) -> &Digest { - match self { - Pointer::LeafPointer(hash) => hash, - Pointer::NodePointer(hash) => hash, - } - } -} - -#[cfg(test)] -impl Arbitrary for Pointer { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - prop_oneof![ - any::().prop_map(Pointer::LeafPointer), - any::().prop_map(Pointer::NodePointer) - ] - .boxed() - } -} - -impl ToBytes for Pointer { - fn to_bytes(&self) -> Result, bytesrepr::Error> { - let mut ret = bytesrepr::unchecked_allocate_buffer(self); - self.write_bytes(&mut ret)?; - Ok(ret) - } - - fn serialized_length(&self) -> usize { - U8_SERIALIZED_LENGTH + DIGEST_LENGTH - } - - fn write_bytes(&self, writer: &mut Vec) -> Result<(), bytesrepr::Error> { - let tag: u8 = match self { - Pointer::LeafPointer(_) => 0, - Pointer::NodePointer(_) => 1, - }; - writer.push(tag); - writer.extend_from_slice(self.hash().as_ref()); - Ok(()) - } -} - -impl FromBytes for Pointer { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> { - let (tag, rem) = u8::from_bytes(bytes)?; - match tag { - 0 => { - let (hash, rem) = Digest::from_bytes(rem)?; - Ok((Pointer::LeafPointer(hash), rem)) - } - 1 => { - let (hash, rem) = Digest::from_bytes(rem)?; - Ok((Pointer::NodePointer(hash), rem)) - } - _ => Err(bytesrepr::Error::Formatting), - } - } -} - -pub type PointerBlockValue = Option; - -pub type PointerBlockArray = [PointerBlockValue; RADIX]; - -#[derive(Debug, PartialEq, Eq, Clone)] -#[cfg_attr(test, derive(proptest_derive::Arbitrary))] -pub struct PointerBlock(PointerBlockArray); - -impl PointerBlock { - pub fn new() -> Self { - PointerBlock([ - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, None, None, None, None, None, None, None, None, None, None, - None, None, None, None, - ]) - } - - pub fn from_indexed_pointers(indexed_pointers: &[(u8, Pointer)]) -> Self { - let PointerBlock(mut pointer_block_array) = PointerBlock::new(); - for (idx, ptr) in indexed_pointers.iter() { - pointer_block_array[*idx as usize] = Some(ptr.clone()); - } - PointerBlock(pointer_block_array) - } -} - -impl ToBytes for PointerBlock { - fn to_bytes(&self) -> Result, bytesrepr::Error> { - let mut result = bytesrepr::allocate_buffer(self)?; - for pointer in self.0.iter() { - result.append(&mut pointer.to_bytes()?); - } - Ok(result) - } - - fn serialized_length(&self) -> usize { - self.0.iter().map(ToBytes::serialized_length).sum() - } - - fn write_bytes(&self, writer: &mut Vec) -> Result<(), bytesrepr::Error> { - for pointer in self.0.iter() { - pointer.write_bytes(writer)?; - } - Ok(()) - } -} - -impl FromBytes for PointerBlock { - fn from_bytes(mut bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> { - let pointer_block_array = { - // With MaybeUninit here we can avoid default initialization of result array below. - let mut result: MaybeUninit = MaybeUninit::uninit(); - let result_ptr = result.as_mut_ptr() as *mut PointerBlockValue; - for i in 0..RADIX { - let (t, remainder) = match FromBytes::from_bytes(bytes) { - Ok(success) => success, - Err(error) => { - for j in 0..i { - unsafe { result_ptr.add(j).drop_in_place() } - } - return Err(error); - } - }; - unsafe { result_ptr.add(i).write(t) }; - bytes = remainder; - } - unsafe { result.assume_init() } - }; - Ok((PointerBlock(pointer_block_array), bytes)) - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum Trie { - Leaf { key: Key, value: StoredValue }, - Node { pointer_block: Box }, - Extension { affix: Bytes, pointer: Pointer }, -} - -impl Trie { - pub fn trie_hash(&self) -> Result { - self.to_bytes() - .map(|bytes| Digest::hash_into_chunks_if_necessary(&bytes)) - } - - pub fn node(indexed_pointers: &[(u8, Pointer)]) -> Self { - let pointer_block = PointerBlock::from_indexed_pointers(indexed_pointers); - let pointer_block = Box::new(pointer_block); - Trie::Node { pointer_block } - } - - pub fn extension(affix: Vec, pointer: Pointer) -> Self { - Trie::Extension { - affix: affix.into(), - pointer, - } - } -} - -#[cfg(test)] -impl Arbitrary for Trie { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - prop_oneof![ - ( - casper_types::gens::key_arb(), - casper_types::gens::stored_value_arb() - ) - .prop_map(|(key, value)| Trie::Leaf { key, value }), - any::().prop_map(|pointer_block| Trie::Node { - pointer_block: Box::new(pointer_block) - }), - ( - proptest::collection::vec(any::(), 0..32), - any::() - ) - .prop_map(|(affix, pointer)| Trie::Extension { - affix: affix.into(), - pointer, - }) - ] - .boxed() - } -} - -impl ToBytes for Trie { - fn to_bytes(&self) -> Result, bytesrepr::Error> { - let mut ret = bytesrepr::allocate_buffer(self)?; - self.write_bytes(&mut ret)?; - Ok(ret) - } - - fn serialized_length(&self) -> usize { - U8_SERIALIZED_LENGTH - + match self { - Trie::Leaf { key, value } => key.serialized_length() + value.serialized_length(), - Trie::Node { pointer_block } => pointer_block.serialized_length(), - Trie::Extension { affix, pointer } => { - affix.serialized_length() + pointer.serialized_length() - } - } - } - - fn write_bytes(&self, writer: &mut Vec) -> Result<(), bytesrepr::Error> { - match self { - Trie::Leaf { key, value } => { - writer.push(0u8); - key.write_bytes(writer)?; - value.write_bytes(writer)?; - } - Trie::Node { pointer_block } => { - writer.push(1u8); - pointer_block.write_bytes(writer)? - } - Trie::Extension { affix, pointer } => { - writer.push(2u8); - affix.write_bytes(writer)?; - pointer.write_bytes(writer)?; - } - } - Ok(()) - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum TrieMerkleProofStep { - Node { - hole_index: u8, - indexed_pointers_with_hole: Vec<(u8, Pointer)>, - }, - Extension { - affix: Bytes, - }, -} - -impl TrieMerkleProofStep { - pub fn node(hole_index: u8, indexed_pointers_with_hole: Vec<(u8, Pointer)>) -> Self { - Self::Node { - hole_index, - indexed_pointers_with_hole, - } - } - - pub fn extension(affix: Vec) -> Self { - Self::Extension { - affix: affix.into(), - } - } -} - -#[cfg(test)] -impl Arbitrary for TrieMerkleProofStep { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - prop_oneof![ - ( - ::arbitrary(), - proptest::collection::vec((::arbitrary(), ::arbitrary()), RADIX / 8) - ) - .prop_map(|(hole_index, indexed_pointers_with_hole)| { - TrieMerkleProofStep::Node { - hole_index, - indexed_pointers_with_hole, - } - }), - proptest::collection::vec(::arbitrary(), 1..=6).prop_map(|affix| { - TrieMerkleProofStep::Extension { - affix: affix.into(), - } - }) - ] - .boxed() - } -} - -impl ToBytes for TrieMerkleProofStep { - fn to_bytes(&self) -> Result, bytesrepr::Error> { - let mut ret: Vec = bytesrepr::allocate_buffer(self)?; - match self { - TrieMerkleProofStep::Node { - hole_index, - indexed_pointers_with_hole, - } => { - ret.push(TRIE_MERKLE_PROOF_STEP_NODE_ID); - ret.push(*hole_index); - ret.append(&mut indexed_pointers_with_hole.to_bytes()?) - } - TrieMerkleProofStep::Extension { affix } => { - ret.push(TRIE_MERKLE_PROOF_STEP_EXTENSION_ID); - ret.append(&mut affix.to_bytes()?) - } - }; - Ok(ret) - } - - fn serialized_length(&self) -> usize { - core::mem::size_of::() - + match self { - TrieMerkleProofStep::Node { - hole_index, - indexed_pointers_with_hole, - } => { - (*hole_index).serialized_length() - + (*indexed_pointers_with_hole).serialized_length() - } - TrieMerkleProofStep::Extension { affix } => affix.serialized_length(), - } - } -} - -impl FromBytes for TrieMerkleProofStep { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> { - let (tag, rem): (u8, &[u8]) = FromBytes::from_bytes(bytes)?; - match tag { - TRIE_MERKLE_PROOF_STEP_NODE_ID => { - let (hole_index, rem): (u8, &[u8]) = FromBytes::from_bytes(rem)?; - let (indexed_pointers_with_hole, rem): (Vec<(u8, Pointer)>, &[u8]) = - FromBytes::from_bytes(rem)?; - Ok(( - TrieMerkleProofStep::Node { - hole_index, - indexed_pointers_with_hole, - }, - rem, - )) - } - TRIE_MERKLE_PROOF_STEP_EXTENSION_ID => { - let (affix, rem): (_, &[u8]) = FromBytes::from_bytes(rem)?; - Ok((TrieMerkleProofStep::Extension { affix }, rem)) - } - _ => Err(bytesrepr::Error::Formatting), - } - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct TrieMerkleProof { - key: Key, - value: StoredValue, - proof_steps: Vec, -} - -impl TrieMerkleProof { - pub fn new(key: Key, value: StoredValue, proof_steps: Vec) -> Self { - TrieMerkleProof { - key, - value, - proof_steps, - } - } - - pub fn key(&self) -> &Key { - &self.key - } - - pub fn value(&self) -> &StoredValue { - &self.value - } - - pub fn proof_steps(&self) -> &Vec { - &self.proof_steps - } - - pub fn into_value(self) -> StoredValue { - self.value - } - - pub fn compute_state_hash(&self) -> Result { - let mut hash = { - let leaf = Trie::Leaf { - key: self.key, - value: self.value.clone(), - }; - leaf.trie_hash()? - }; - - for (proof_step_index, proof_step) in self.proof_steps.iter().enumerate() { - let pointer = if proof_step_index == 0 { - Pointer::LeafPointer(hash) - } else { - Pointer::NodePointer(hash) - }; - let proof_step_bytes = match proof_step { - TrieMerkleProofStep::Node { - hole_index, - indexed_pointers_with_hole, - } => { - let hole_index = *hole_index; - assert!(hole_index as usize <= RADIX, "hole_index exceeded RADIX"); - let mut indexed_pointers = indexed_pointers_with_hole.clone(); - indexed_pointers.push((hole_index, pointer)); - Trie::node(&indexed_pointers).to_bytes()? - } - TrieMerkleProofStep::Extension { affix } => { - Trie::extension(affix.clone().into(), pointer).to_bytes()? - } - }; - hash = Digest::hash(&proof_step_bytes); - } - Ok(hash) - } -} - -#[cfg(test)] -impl Arbitrary for TrieMerkleProof { - type Parameters = (); - type Strategy = BoxedStrategy; - - fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { - ( - casper_types::gens::key_arb(), - casper_types::gens::stored_value_arb(), - proptest::collection::vec(::arbitrary(), 1..=6), - ) - .prop_map(|(key, value, proof_steps)| { - TrieMerkleProof::new(key, value, proof_steps.into()) - }) - .boxed() - } -} - -impl ToBytes for TrieMerkleProof { - fn to_bytes(&self) -> Result, bytesrepr::Error> { - let mut ret: Vec = bytesrepr::allocate_buffer(self)?; - ret.append(&mut self.key.to_bytes()?); - ret.append(&mut self.value.to_bytes()?); - ret.append(&mut self.proof_steps.to_bytes()?); - Ok(ret) - } - - fn serialized_length(&self) -> usize { - self.key.serialized_length() - + self.value.serialized_length() - + self.proof_steps.serialized_length() - } -} - -impl FromBytes for TrieMerkleProof { - fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> { - let (key, rem): (Key, &[u8]) = FromBytes::from_bytes(bytes)?; - let (value, rem): (StoredValue, &[u8]) = FromBytes::from_bytes(rem)?; - let (proof_steps, rem): (Vec, &[u8]) = FromBytes::from_bytes(rem)?; - Ok(( - TrieMerkleProof { - key, - value, - proof_steps, - }, - rem, - )) - } -} +pub type TrieMerkleProof = casper_types::global_state::TrieMerkleProof; #[derive(Debug, PartialEq, Eq)] pub enum ValidationError { @@ -535,11 +45,11 @@ impl<'a, 'b> QueryInfo<'a, 'b> { } pub fn key(&self) -> &'a Key { - &self.key + self.key } pub fn stored_value(&self) -> &'b StoredValue { - &self.stored_value + self.stored_value } } @@ -556,7 +66,7 @@ pub fn process_query_proofs<'a>( // length check above means we are safe to unwrap here let first_proof = proofs_iter.next().unwrap(); - let state_root = first_proof.compute_state_hash()?; + let state_root = compute_state_hash(first_proof)?; let mut proof_value = first_proof.value(); @@ -576,7 +86,7 @@ pub fn process_query_proofs<'a>( return Err(ValidationError::UnexpectedKey); } - if state_root != proof.compute_state_hash()? { + if state_root != compute_state_hash(proof)? { return Err(ValidationError::InvalidProofHash); } @@ -589,47 +99,3 @@ pub fn process_query_proofs<'a>( stored_value: proof_value, }) } - -#[cfg(test)] -mod test { - extern crate std; - - use casper_execution_engine::storage::trie::merkle_proof::TrieMerkleProof as CasperTrieMerkleProof; - use casper_types::{bytesrepr::ToBytes, Key, StoredValue}; - use test_strategy::proptest; - - use crate::hash::DIGEST_LENGTH; - - use super::TrieMerkleProof; - - #[proptest] - fn bytesrepr_trie_merkle_proof_round_trip(trie_merkle_proof: TrieMerkleProof) { - let serialized_trie_merkle_proof = trie_merkle_proof.to_bytes().unwrap(); - let casper_trie_merkle_proof: CasperTrieMerkleProof = - casper_types::bytesrepr::deserialize(serialized_trie_merkle_proof.clone()).unwrap(); - let serialized_casper_trie_merkle_proof = - casper_types::bytesrepr::serialize(&casper_trie_merkle_proof).unwrap(); - assert_eq!( - serialized_trie_merkle_proof, - serialized_casper_trie_merkle_proof - ); - let deserialized_trie_merkle_proof: TrieMerkleProof = - casper_types::bytesrepr::deserialize(serialized_casper_trie_merkle_proof.clone()) - .unwrap(); - assert_eq!(trie_merkle_proof, deserialized_trie_merkle_proof); - } - - #[proptest] - fn trie_merkle_proof_hash_compat(trie_merkle_proof: TrieMerkleProof) { - let serialized_trie_merkle_proof = trie_merkle_proof.to_bytes().unwrap(); - let casper_trie_merkle_proof: CasperTrieMerkleProof = - casper_types::bytesrepr::deserialize(serialized_trie_merkle_proof.clone()).unwrap(); - let trie_merkle_root_bytes: [u8; DIGEST_LENGTH] = - trie_merkle_proof.compute_state_hash().unwrap().into(); - let casper_trie_merkle_root_bytes: [u8; DIGEST_LENGTH] = casper_trie_merkle_proof - .compute_state_hash() - .unwrap() - .into(); - assert_eq!(trie_merkle_root_bytes, casper_trie_merkle_root_bytes); - } -} diff --git a/tests/assets/blocks/block-0.json b/tests/assets/blocks/block-0.json deleted file mode 100644 index bfe8c94..0000000 --- a/tests/assets/blocks/block-0.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "hash": "4649dd35500a0be2032f0254d5e7f4b7b1315b449f91f4ef2c83b9de84dc9440", - "header": { - "parent_hash": "0000000000000000000000000000000000000000000000000000000000000000", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "5187b7a8021bf4f2c004ea3a54cfece1754f11c7624d2363c7f4cf4fddd1441e", - "random_bit": false, - "accumulated_seed": "d8908c165dee785924e7421a0fd0418a19d5daeec395fd505a92a0fd3117e428", - "era_end": { - "era_report": { - "equivocators": [], - "rewards": [], - "inactive_validators": [] - }, - "next_era_validator_weights": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "weight": "2000000000000000002" - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "weight": "2000000000000000004" - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "weight": "2000000000000000006" - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "weight": "2000000000000000010" - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "weight": "2000000000000000008" - } - ] - }, - "timestamp": "2024-02-28T16:23:48.517Z", - "era_id": 0, - "height": 0, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "00", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "016c3fcf8b094f1887d7021726ca217c2fa8565cc5bf545c02f7310e8618a96c6b1ea1682301089454e9c9bcd7e55533d53e6ef3bc2d7079f5b5a94e7970d6750e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0103b07fefc25b8168fcce7f03c66c6b73789844943ef919fc50af52da91fef02444f7f7dbb7b88484fe4725a4f43d889c3570fbcc8a5a479efb747cc47133d804" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01c9dc0f68554d9af32904557de2ff9e41a379e786d47924609212c02d1ecbed796779131237ff4fd4265fc5c69f5cda12eba685890ddcb92f1a690e536b557500" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "017083425dead3b8fc8f2a8460136ff7942f0dc30232aa06d3af69f2564380d430d9d833436cc6a37d22939331c96a06cb3cc33882b6080d1f0ebf2035a1fc2001" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01ae5ffebe5c85516c571b94dff022d816e3d2a63fc8ca9d60c04e6d3650766bfbc9c559f95fca3b619add6264459dc6c429b57b88dd523ee63c39313a42f01201" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-1.json b/tests/assets/blocks/block-1.json deleted file mode 100644 index bb77807..0000000 --- a/tests/assets/blocks/block-1.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "923b4a86497593062a684c266d2fc96e8961c65ddae68119a444630d58c18abd", - "header": { - "parent_hash": "4649dd35500a0be2032f0254d5e7f4b7b1315b449f91f4ef2c83b9de84dc9440", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": false, - "accumulated_seed": "442c6df00361ec5b045e1b0a007241eb302cd533aa432b45213b69a3947eed70", - "era_end": null, - "timestamp": "2024-02-28T16:23:52.576Z", - "era_id": 1, - "height": 1, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01d455f23829765b01ec2f467215f3734f95a0a18bee6db47e0a2dcf6ddb5ae97489899178981df4155b0a40eee1eeee91de89663262c5edb083b5df429d27ac06" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01fbed6900fb498291c476aaf76ed9ab8dfe6910f95440ee2748c0873e384233a0a848faaad01b68f9db96ad71808385b6d3896bac56ccb582f7845256017dac04" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "014243772def73607c6be94260b98b9fae9d1f978e2e4af8a66665444f188523d805b82b07c4b7cca60f581a9c93e8482a116e9c6ac689359cdad89c12eb9cfc06" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "010fa50e0724fe5969b64e90430093ee643ae1b0b11e59665a9bfb02b32a85772d1d81ab50f3695fc785377555a45133b98eb7000fec6513380520c73618e5e70b" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01e9e2bbdbf5e8de3fecff10328a6494206592c8d09203ad0ec658608f447ddf6e29385e433e5a57f05447ae1d3314c89a26755ba3522aa39faf6a7a3372c3cc00" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-10.json b/tests/assets/blocks/block-10.json deleted file mode 100644 index 6c9bf6c..0000000 --- a/tests/assets/blocks/block-10.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "d144eaf98bb4d622fb35b9393e633f0e0c8bfeeb4da221ab289715883427cda9", - "header": { - "parent_hash": "6f7b91aa652da5199000ec901fad2206ee7bd2fd7ccc00f6aa392157404a0fd3", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": false, - "accumulated_seed": "59b54928b8880bbed0dabeb9ca90f1c8bf22c9458aa01976a2c3b06fae7bec66", - "era_end": null, - "timestamp": "2024-02-28T16:24:29.440Z", - "era_id": 1, - "height": 10, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01c46f9899a51d9c71c934295b06da83a6bbd9219aac83c3a6e205541f1806ee1618a48125f328a3f017dd5e658db8bc94256ac2938f03259987bea1c0dca25a08" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "017b3dfac87d8dd9fd239cf1fdb342edd5a3c131ec0f9a64d9c8a829d814834612f235cf7d00274cfe6d1901fdbfce597216b48ad9dfb9a4873967612ee577770a" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01337b4ec2e339cee8dcde4a29cc89ccc3b9834697df34ee432592b25b1f2a1c402c1f8067c93d1d2750eb5352ab6a9489754fca96d146792701dcc28e294b600d" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01d2456dd127b9d8ac0f34d7e28403dc7650da3aa7181f515758737486a94edbcb93ff86e9da4b5828e69e0886c235430ace613b70bf84c26a5c70769e3a82350a" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01aa4712bd86e341ac6be6ec5d2887bd04d870d3e97c146d0726855669e65a58b2639933080fe392bac099ac20f07c2aa7d3e620f4cb955302a6045965c7ac4206" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-11.json b/tests/assets/blocks/block-11.json deleted file mode 100644 index 3f1c13e..0000000 --- a/tests/assets/blocks/block-11.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "hash": "6542c015fdf2e7866446d4f19fd4757dfdb2cdc85018e32797e46356525232b2", - "header": { - "parent_hash": "d144eaf98bb4d622fb35b9393e633f0e0c8bfeeb4da221ab289715883427cda9", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": true, - "accumulated_seed": "65bfff36327a35bc1c3f64e84bd92803c16ec1cf09fcd9b1dcc87018a828bf38", - "era_end": { - "era_report": { - "equivocators": [], - "rewards": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "amount": 1999999999990 - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "amount": 1999999999990 - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "amount": 2000000000000 - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "amount": 2000000000000 - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "amount": 2000000000000 - } - ], - "inactive_validators": [] - }, - "next_era_validator_weights": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "weight": "2000000000000000002" - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "weight": "2000000000000000004" - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "weight": "2000000000000000006" - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "weight": "2000000000000000010" - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "weight": "2000000000000000008" - } - ] - }, - "timestamp": "2024-02-28T16:24:33.536Z", - "era_id": 1, - "height": 11, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01635d9848aaae20619228319551aa6c13ef6d052688c9bbc8ee03f14a916f12b3ed4c429d2ff47d5f01122b3ad390968c5e7905ab90e6f92a96b87aa7f265930b" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0170911de3be2ead0d8594e70b0c3cf9d6a359e1539fb06875b3d03d631b414a8acae6cb21e697793153c27257abbfeee2d8bf97eea622d4c9c19a7ba47c31ce08" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01b8ea775239842213a149e4937bef6659bc7115a92064e8665174bcd61044b0e4c3bfacc35f9450a3392df48922c862e59f5026dda3a3440749b7522d795cf30f" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01bf143f4c0c5bc1b0f7bfcaaba363a5a5ab1c74544dc6138fb4e46747cbbaccc83b8a042326ade3378d0d859ddd0bdf3b6e851692a9179320ee0b887ef599a608" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "018fcf3fb75bc3b0fd00a1abd9fa74a9bb2cbe8da280fe87118e8a04baa4363bf586f44704efcc191ac265aee78ec180e33c17f2e702a9352262c91a18243e5505" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-12.json b/tests/assets/blocks/block-12.json deleted file mode 100644 index 099ac11..0000000 --- a/tests/assets/blocks/block-12.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "8ac7484105c1b770d585e2cb72b2a7e89d89a396e7ad92d435ea23484358af70", - "header": { - "parent_hash": "6542c015fdf2e7866446d4f19fd4757dfdb2cdc85018e32797e46356525232b2", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "ac977c387207fd207b7262ab9e8ac0fb92c23cf037741016e16026d7596e8263", - "era_end": null, - "timestamp": "2024-02-28T16:24:37.632Z", - "era_id": 2, - "height": 12, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01d4e96e945d488a91fb4816395570008c4e777088887a2aa40303aec7137d352164c6b691f34b6e9a0f057b06762a293081b14554eb84d1b8a7482bfc0698b505" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "015e71488bc15fb4da8b5996752db18e1fea2143b7d9d18766f0e0ca4bcd0e278afba7513954b09c51426d4f856e24d483f6ea2e3c640bd5af0a0bb2b65f8c870e" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01edac2018e805d47348c5974dca04d830b9fab576bf55df56a0ecbe1e058b75c36b5cc6c077f78fa54405ae309a972cca4ed6a47a7b9dccda20960adb01e7ca0a" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0149f26268f54a0caf6b02a4e26fc6e7d011fa95a76794ae3b4bcaabc890356c7e6f7a6c88ae443b2ec4271127e220f8000b41fa02693b3526605f072049d67c09" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01eca37a01475c929df5aa6c23d770bb1dedd30e2d7837508d8bba3cbcf0396d21af525ddc32186aa847ce6d4024ac9928ee9e88996aa3b7814e3f71c17428340b" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-13.json b/tests/assets/blocks/block-13.json deleted file mode 100644 index 92d8245..0000000 --- a/tests/assets/blocks/block-13.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "0cef9adf5d0dc6fc04aa36edfc57875debed933faf714bb56b4b90ea6c9fa403", - "header": { - "parent_hash": "8ac7484105c1b770d585e2cb72b2a7e89d89a396e7ad92d435ea23484358af70", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "ba8d2a48ade6efc7c9676b3c50ae4475bc6e4a1b1d48ae9b622d92f5e12dedec", - "era_end": null, - "timestamp": "2024-02-28T16:24:41.728Z", - "era_id": 2, - "height": 13, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0135c1ad9f1f4a1e3aa88739ffa18b06475981a98c024a8e50e6e119754cd3aaf6ab4d819ac9fb6718f8e52f42dd25272d6077a349c930ba7a9042c12df6655009" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0112c658124ccc754db264805cc33e30040e69080b706c27024331c369f192771ffa41057117c7c476172d05f1d329a220d2523cc0a387d9ac8a38101a2bee7304" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0167178174a0ccdb8372be96ee88e37ca93be7fa93be6ffe5e248f8cd0c1fb279ae2721fc05397d3c86e519bd680fdfbac4b3cb3c14580e236e502733fe0d95b00" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01fb2023e46d7da53bc9d6f4801991a89eda9df624e2a685955940e038c9435a29ecbc6679733ba625bb2c071a4100f6fb7baaafcc8d8950273ef47f7ccd541d03" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01ca9d3e50efcb64bebbd42761db96a52a09e7c0349ab6cbce49bb9588d1d7579495fe8d008a29f16c6bcd302f29445269bc534cc9383908bdd8aad7f1d192a308" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-14.json b/tests/assets/blocks/block-14.json deleted file mode 100644 index ceaa437..0000000 --- a/tests/assets/blocks/block-14.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "ed4c957a63b2091772f7d78da2503014ed2db970e33695f594ad1ab840201207", - "header": { - "parent_hash": "0cef9adf5d0dc6fc04aa36edfc57875debed933faf714bb56b4b90ea6c9fa403", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "e9a46c0a8369c4afba2ea7da788e761af7df475057230dd7e853f10fb0c574f0", - "era_end": null, - "timestamp": "2024-02-28T16:24:45.824Z", - "era_id": 2, - "height": 14, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01fd743a3ae697d0c05b0755b7aa9f5e8b73c6c1d53375f5f556f3bcf8d3c9716f8ba841a533ec05335cff8ce9549f3cc0070876ad0b634964e07036063f7fe100" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "015f471fbd7136751c78cee7f84e25101c4cca044bd6edb672acbfcff88b45737330862eee130ebd5a86df78bfbd9dbeaae8ea5deb1e2162ddc9062b351396130c" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01cd4e1bcd383b6498fb5769d485615914f43afb714411f4a0de75f4ae98e9ef76a490461fad15ad03bc23acfafe7cff94aad2524f1dad4557b41009327a120f06" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01a81283ead4cc982412fcbc8b5056caf04a7afe8f948e552da9559ff6c37f2d031b390506e9376b2cf8910dc5dd01199c475a85f149a8204d1d4f0006b356200c" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01832902fb1f3c1533c0fcc4c2f4e85d73abe6ae3ba9c648189210c8bc02bd6a9fca2aeeeac5d9042e9cf43f2273507b089dd577f4c33a71e56eed070355e87f09" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-15.json b/tests/assets/blocks/block-15.json deleted file mode 100644 index 75b02a2..0000000 --- a/tests/assets/blocks/block-15.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "79f9468a04a10cad6769add640cf9a13ad7f4869b92f782cd44ef6cf1f6129ff", - "header": { - "parent_hash": "ed4c957a63b2091772f7d78da2503014ed2db970e33695f594ad1ab840201207", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "6f8c1e82febf260d5f32b9f3a88eef1dc35b828d94cf2d630ea9fbeed49a62f2", - "era_end": null, - "timestamp": "2024-02-28T16:24:49.920Z", - "era_id": 2, - "height": 15, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01bcb521d7893d8f989ea982a0be9e5a8bdb4f6b122d8a7b404ca99e00a9326cdceaf28d29420ee1145f1abb531f92031b478de37d0e7cf84c8f414fd4760c940c" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01a23abcfb0e8c3bd11055b1314475a35a7e461c430c0a6a8f6c2899e26baa7495de6d00b4cbf191520bab78358826e4d4903b833e908956565e3afb25bb51d503" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "011dd642544338e983e7de40441f8ea24d9af822f4c4370d49110eec46c0f5c2232b2c7ca23b242235e6a8dc958ac321711e318043819c7bfb8ab70a1313c0660e" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "019e5dbb0641acc20905541dd0f3d3cafe921c11d8e4f1a891b8f05bdd7012bc93d27ef6eb53bc54b5e99c285e181b3396675f3e4e6fef72f0127a55412faf890b" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "011ff9a98a1e51f7741e6a93666bf05704abe3e67a818b9b0cb7ab366797d539591a92b37b70255ae179614dac99823c4ba9cc96e60761073ee4139b6344a3ec06" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-16.json b/tests/assets/blocks/block-16.json deleted file mode 100644 index 871b685..0000000 --- a/tests/assets/blocks/block-16.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "1ee0c3a3b6861382d19eb2bdcac82af1cdba83bc4848ae933fe6d882c7a56e91", - "header": { - "parent_hash": "79f9468a04a10cad6769add640cf9a13ad7f4869b92f782cd44ef6cf1f6129ff", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "f6277fece079e2fd3c2c0f97320ac981724d510cc1f2b7aad546f347968e8560", - "era_end": null, - "timestamp": "2024-02-28T16:24:54.016Z", - "era_id": 2, - "height": 16, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01c8af8e50d7eeaaa8b4d299928a912a31f7cdd0d63143f522f976459575cc1c06d97ac5a54c3b6b0d87b9059478685d28cf304b122a87027014bbe72664558906" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01c22f965807286397ea08dd9c5517646e7d293dd9f37b6abf617a02d21cb5e4796c1c51d93a74c3b2673107eab02c1500b01088dbc012f0224dd3dc32da95cf04" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "013784f7a33fb20c5cd109256f5d8a181c0edde366d6d0013d8a3be3e734783014f16a4858d5b8872551468884b64f4124eb67dc842fc5e6ba06cbf6bbe298d706" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "017eb222aea0639bed8f98b8cac36d29788f5e913e0ac19ba0a0f4f7c4032c4a5f7e71602ec2b6a9301d0fc2ce55910ef197b3fd641c989e3034354bcde9ed0a05" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01ee7c3b57581afad7c35b69e8e40fb539a99abad50b09a1adfd78ca77c9a56f4163ac02dfa64b78f0c7c88831dac7921dc2b8996cefa94aca47f37d533ed8e109" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-17.json b/tests/assets/blocks/block-17.json deleted file mode 100644 index 5983c2b..0000000 --- a/tests/assets/blocks/block-17.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "419a63f898a3b81203070763ddf9289aef64b3f347b32850f11bea2c74f9f2cd", - "header": { - "parent_hash": "1ee0c3a3b6861382d19eb2bdcac82af1cdba83bc4848ae933fe6d882c7a56e91", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "2a0b159bfd02a201eb703fedfa89d14263ae381a51b8e4ac5c6237ed6c11778f", - "era_end": null, - "timestamp": "2024-02-28T16:24:58.112Z", - "era_id": 2, - "height": 17, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "014aa46a6e629b2d271f3f2e8bfa158f16e168a5beb15269baf850a3eb9cc0c489eee5610d095d339dafc155c7c2c614c8e611e5aa114d9b8400c1a3985c2ea90c" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0112560275e8fde4961c439908c97d7116b68db30f915d60fa8812527e81db27a560e2ee174fe844fb9e721406e02582cd83fb86dab28554e57c392aff557a590f" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "016c3ea4de26902cb424809dfd14db8346b2864dcdcc822efaa00b5a274581d89982eae7e64fa89bca2552a34973e211113ab8ba131ff4be6b8536154be05b8404" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01d7497fd72891d7c34908d415ac9ff7729368f46e23bfe09e6569da0d20f2e4ea06848ddc1b8b49ab0356723ea057eacbe56c54c49a230a925223e0cad9e0b608" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "016b39917e09b449de68a538e887633d5d12e999ad14c67d580e7fdf6984a1cb35de4bb046270eb7474b05be4d6e2366bf4c12bae6cd40c765e08ab901719f6b0d" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-18.json b/tests/assets/blocks/block-18.json deleted file mode 100644 index 90b980d..0000000 --- a/tests/assets/blocks/block-18.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "27aac4e0695110f8153992ce054e67fae2c608799bf9b1b7b8cebed0d47d7d27", - "header": { - "parent_hash": "419a63f898a3b81203070763ddf9289aef64b3f347b32850f11bea2c74f9f2cd", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": true, - "accumulated_seed": "60ab0ef15aa2a4adb58ca2499d8d1e6adf40e650463fde683d30ac3f192187cd", - "era_end": null, - "timestamp": "2024-02-28T16:25:02.208Z", - "era_id": 2, - "height": 18, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01c482b6227439d00255fc24f1044aa1547ae8d378c71e40a58061f8d8a189ba2193a6fb031b274936547ae2402a26f1110f4b32b5ed1c9d424aa1d9241a99c400" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "014dc7b12474aea82610fae0a759b51d99aed191bec5aea9f371874983afc2bed8609757d06a7c74bddafa94a479a4e0e3fa1ad2f7ec7e26f653b0b53720045d0c" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01f7b21d0e36976624545ad9b3ac25156dbd1dbbb7ab8a185bb4ae9bd44f20e82839b85322d5747f04f2d40ab8f75461430c0d0d1b7dc0679e27b7b6dacd388803" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01c8cbf1c52c062dade31485fed8339b132555f6da6ae1698f5105b5c521614c153c05bac7453c98c6309a238eacfc6b2ce340d25f6f10749478c6f654d9704d0d" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "018f8c227d3d34639f1b739bfefbd48bf7929ffcd69af5cd9d9bec40fee251973de2c980fb81c522fa4507113abbb5d1021ef0b3cfdf45ef068fbede09632fe309" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-19.json b/tests/assets/blocks/block-19.json deleted file mode 100644 index 9607fca..0000000 --- a/tests/assets/blocks/block-19.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "26e47062e1669945d902ebf706e6dc48ed4f27da3a55b5f98eaf49ac6307dc8e", - "header": { - "parent_hash": "27aac4e0695110f8153992ce054e67fae2c608799bf9b1b7b8cebed0d47d7d27", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "d0b85a4ff3e1c8367fe56392930189d95d67496327f0223ebd76f004d74f7a48", - "era_end": null, - "timestamp": "2024-02-28T16:25:06.304Z", - "era_id": 2, - "height": 19, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01d1d22217d66f3c77c046d591595bfacf9713b5ff201b05d5ec8f4a405d0b6dea2e3acc8c9c3273598866b97e98b1ea361ef99e256e024274a21ec9aeae7b6603" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01a319e4d56dea7881cc8e07c097f1df25eb522f86be746379f9fb37bb77752fa5abd4b7d25f53ac8fb2de32ebd85a9e1ced6c4f55145072f702c980442d43fb07" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0196ac3373255ce31b03e1dcdf9699182cb760d0ece7855227bb78530e88a12720bc9a13ed42217440d069e33673cad0a9887c7128f35624269fb365817bfff805" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01ff07128cdab44e5884dbc0631b9ba653f55d7502e09f2f37347fd01ecbfdf74b322bc0d41748e15a05974059c2390420b70a86c53d128596de9c00e6049c500f" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01951a8da73268a344c51a27974c8614137c31d201fe5296ba7f3301d7636f1bce8c2cd0a2f5477b21a18e3d181fbf4226555f283a2922416f86511e926eb4700d" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-2.json b/tests/assets/blocks/block-2.json deleted file mode 100644 index e564dba..0000000 --- a/tests/assets/blocks/block-2.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "cd073ab322296f5181e559cdc9cd2dc68d237287589db3a562d17627f2e02772", - "header": { - "parent_hash": "923b4a86497593062a684c266d2fc96e8961c65ddae68119a444630d58c18abd", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": true, - "accumulated_seed": "7e672841cec079dbc636b3fedbc8fd70e6f0d499cab2b4f577054d8336d3254c", - "era_end": null, - "timestamp": "2024-02-28T16:23:56.672Z", - "era_id": 1, - "height": 2, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01dc72be47d281a5358ec096a284b2d084f628c3f91df2a12d01e0947b67aabd2bb50f6aaa0e5f6ae6988ea9fa19e32dbeb5186821b2d5d5aee12b3b75036fa100" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "014fc7985e89540aad23d9856bf5dcca65ae48f403e2b7dec1578bef0e4505d8a3d1054a65ccf7367470780c0dd62d45a94e6c02120a8fa7c2181fd29efa185e05" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0112fbe4f43f522f102536b52bd42badbc67582dc24782c29398dadffcb6b7febfa5b4c459dec405af926c49f22218f4ec879cd01700da71ea486385fcf5cab20b" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01e2dee0f49f58e61c8bbe37052081809fa2c16a1b2bf6baaaffbce2b79a18e2d72caffaec08c668b501dd396c9d14363e623e8730e81f0c51fadb39447f8a6a0b" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01484549ebcc9f36441d296311a7d74b4034e96322a259400b5f373483b42806ef2a5389ae228c00bd37efc10aa9322900cf02d819836000dc6a509270e4f4230f" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-20.json b/tests/assets/blocks/block-20.json deleted file mode 100644 index df20d2a..0000000 --- a/tests/assets/blocks/block-20.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "d2b77667e041c81be153e26ef584e374a667cbd37c7f517d1fe7bfc06c26413c", - "header": { - "parent_hash": "26e47062e1669945d902ebf706e6dc48ed4f27da3a55b5f98eaf49ac6307dc8e", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": true, - "accumulated_seed": "8f80e6922f11c50b00166f7bb504a7e09a28b9c07658c0aca8d4b1e8d10e155b", - "era_end": null, - "timestamp": "2024-02-28T16:25:10.400Z", - "era_id": 2, - "height": 20, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "019f1d59b16fe7aade9ed45a5237a85544e83bc07db9492a610102f9c4595fe014e96ce05c4b332d2e0b507cf38cf57ca0027bebf801ce1e01cd7a688eac335208" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "011878378cfef612fb52703be47eb3aab52cd7e3c12751bd4e3b43abcbf8f3576ca7e8daa90422c53be71f4b5383cb948302af374462afa2aca4503e74de5f0207" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "012a36ec834ee91f7236f9d3885f87c943eadac058b21ebf007b6873a4bb120acf90a31eec7cfb7c5ecacb0d3d7524fa7ba720d629c19e9412ac28607d13cb750c" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "016d8bad346c734c9b007f3def725b3d1956e888ac9280eb1db22360610ec5af2f9e55cdfee981ef9a1486d395f0198e4e5182af01b1d3bd592ea234343b141202" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "018c10416027ea2677fb5f28bfc631c0533efa9d75e1126a23c51a777e8900e460dd12e3d33620a4ecd6c4f70262196e5199dd8880677c8b87675fbb81156b920b" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-21.json b/tests/assets/blocks/block-21.json deleted file mode 100644 index 789b370..0000000 --- a/tests/assets/blocks/block-21.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "9f69a39016614ba587210fb82806cade4c0f6505dc3e7d9b4ed989554ad06850", - "header": { - "parent_hash": "d2b77667e041c81be153e26ef584e374a667cbd37c7f517d1fe7bfc06c26413c", - "state_root_hash": "9eb0bc781ce08481b249ad01bfe8a1a46cd7a756ea4e30180260e72b4af7e971", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "bb89a18b77b3ab346ce9660f5fcf28e0f44aae0ae9fbe86e5ece8d3740663d33", - "era_end": null, - "timestamp": "2024-02-28T16:25:14.496Z", - "era_id": 2, - "height": 21, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01f72999bc07084824ff9317ad8fa16cf1d15694a3d92d581fb530136a6e9f3d73a5076e16de7c14665a27ed5cb2f88e9600f21bcf5cfe3f7bd900d7ce292cb10e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01a5562d35c56dcb08b7a9e4e3bd038c05b113dc2851960887537d0d4e4aaada3a2c4c30cb1451fb41c1eee9e8a9d331c0a6c9290ddfc4c22d9ca4b5e73fb9da06" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "016052a4881db77856be4fc333d53d0f5ec5f1e6384de33a1a420ebc72b57ad202e46c9441fbb0549ab06bf40b066d86946c9c19f260841197aea1ed3857f36005" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "016310f9916c4a3b3114eef499afabd16b5c1338d259d92eb70e6fcc767aa7ddb13b2e1b7bfe5876ace49499439b0f951683687bc6bd368754e253380d82189d03" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "013a65c4fadc42bda9cb520297aa4af571c92b9214a84c698c21d751fbc1bb94acacf755adf152a77edb6cc5fdc7208253bb52653b5f20c8b1232ab15f8955e60f" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-22.json b/tests/assets/blocks/block-22.json deleted file mode 100644 index 4a02f63..0000000 --- a/tests/assets/blocks/block-22.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "hash": "a2897157c35ba5d9730ed1c86d5d8196a1e58a2c13c69d338db46edbf833ed2e", - "header": { - "parent_hash": "9f69a39016614ba587210fb82806cade4c0f6505dc3e7d9b4ed989554ad06850", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": false, - "accumulated_seed": "19faf61dc87ceaf4f7d9389dea6deb3010e85156691210645f40725a5b9d5479", - "era_end": { - "era_report": { - "equivocators": [], - "rewards": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "amount": 1999999999990 - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "amount": 1999999999990 - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "amount": 2000000000000 - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "amount": 2000000000000 - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "amount": 2000000000000 - } - ], - "inactive_validators": [] - }, - "next_era_validator_weights": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "weight": "2009999999999950003" - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "weight": "2009999999999950005" - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "weight": "2010000000000000008" - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "weight": "2010000000000000012" - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "weight": "2010000000000000010" - } - ] - }, - "timestamp": "2024-02-28T16:25:18.592Z", - "era_id": 2, - "height": 22, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01a01861023790d4825768d7c52292919ef140ba64e71faf2eb7626004ead0a22716a61e1d35cd93f4b22157053e3b15d89bf10dbe9522b45ae4475bebfc192d08" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01551424136063160abae32f4a6f90bc6d9f6d204222fa049d7241324383d597ebae3b39bc9f64a780bf1bd2df86b1afd0632b5c6774debbfa6d8d039b54b74e03" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "012265778e64b9f8e790155487baa61daa77499706ee75424fb5e7305f1e54a37cf70359ed4463ab1d4012cc116269e34b00ff37ad1eb3ecae942ccc804a2d7201" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01423465f5552da3f600cec995b20b8dae1e403db07229284f29f01db426eee1c1277b6c478a3dc76c14b77a47a494f2ba77a2b9b9ee0afe73ac331ddfc3c04009" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0130def5c7e03096bfbbcfe770646a7fa854f400ebfa78a5e723838e88e5285ea07c69868f9f73960317d556210413b387dae5a837ba5819133e6d4b5dc879cd03" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-23.json b/tests/assets/blocks/block-23.json deleted file mode 100644 index 8e0fdb3..0000000 --- a/tests/assets/blocks/block-23.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "3ea2f4ca8e3425e5b70b042761a4fd49f9771081ec033481aa047690097ac3e9", - "header": { - "parent_hash": "a2897157c35ba5d9730ed1c86d5d8196a1e58a2c13c69d338db46edbf833ed2e", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "84156b7c129b254e91b76e1625b3eb876918d2bc83f4abec638e53ce2b9efaaf", - "era_end": null, - "timestamp": "2024-02-28T16:25:22.688Z", - "era_id": 3, - "height": 23, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01658dc1d708631d53fca62a0a1628be320fe0e98443a949e134db0bf5f7f49645fd9fcff2f340b1bdf1eb331faff4e7ae90ec0be369993375b6f2ecdec957010b" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01b11055f83d935ffb3aa2a0252b7754eef42083b2a2cab59d9739db0c42bdb442230cd1ac4020456937ca58bddda2c91a60580b8af4c0ab4706557241430fca08" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "019bc80786533817e4fd769996e56af089f717d77329f4ad178f98901c3f8fd44f1204989a9d84ad04371697133445828de50138b786229d5f826b6fe2543d5d0b" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01f61154b63acaace9a2cd16367d6b1fec1a5d83fb7e58ad11d63831c8016a48074b0a585114fbf3e344d0d98d3174e0be521ef4f87026d7764aeeed407ba0f405" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01f3175ace7ab3a54753827cba061b2b19eddb60c71724c7aa2008b6a3b6196e62b29f24b5b6ed7173c5f3f84aa7c590ccef21335ac481bf08c22119f94564f30e" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-24.json b/tests/assets/blocks/block-24.json deleted file mode 100644 index 8da3c7c..0000000 --- a/tests/assets/blocks/block-24.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "7ab564768645556d405bd62bfba48d71c4d0360203bd4c2a6395fbc04cfb14e0", - "header": { - "parent_hash": "3ea2f4ca8e3425e5b70b042761a4fd49f9771081ec033481aa047690097ac3e9", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": true, - "accumulated_seed": "8d111a9213035eb319cbdb8d2e104a29d6abd2b7eddce8a6498fb048960af996", - "era_end": null, - "timestamp": "2024-02-28T16:25:26.784Z", - "era_id": 3, - "height": 24, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01c298b033fce14d51655f5a6d5fcc91ae4b534aa9029ca36c5252775b32abb77285ede721496f7d7efc37dae8335af732f5171496ab6c61167f677b5e01262800" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0118e06940509faf111f0eeca0146490ee69318b9ad294319cb34b9325713be58d363422b8944d42eaae00a232c55a13d01e4adc68195243372079e31c9a3d820d" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0156de26bf663442e722f6b0a179669d9cbcc2d3fb34fa781a51faf25b1a2182f0b42448abe73d7c59db30a565ba40c243f200b1c2e45ebc7bc9a8d588ab237c07" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01b64cc07760b811a1e77610b7331cd6734591018595844f6ae0197d9ea9957cf3f69505632f121d74f90d32b248497b2b198405d1bcdce2c8e9d7e9fa95f86b05" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01668e5916858e830b582f0d560ebf38133564bd59b765aad208b980c60cdd4fdc629360a121932e04b236a9f65c93c22d9db44c7979bdf3419e314ff6a4990108" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-25.json b/tests/assets/blocks/block-25.json deleted file mode 100644 index fb5bc1b..0000000 --- a/tests/assets/blocks/block-25.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "8c95d8236e670d7458ec3ef7af5dcc5a9d5eba5095599ffd70b98b240fdaf57a", - "header": { - "parent_hash": "7ab564768645556d405bd62bfba48d71c4d0360203bd4c2a6395fbc04cfb14e0", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": false, - "accumulated_seed": "2c15744c79dbb498f060d220747e17c31b59b48a8657170bb654c2e8c5f714bc", - "era_end": null, - "timestamp": "2024-02-28T16:25:30.880Z", - "era_id": 3, - "height": 25, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01e2db12a1454b463b3599292c85ad960b2e3da99fe00f50cbc05bc9d356f6e2ed84d2e943bba3e82beb3bb911444de6a5ded52ff1b1b657cf0e65dc6eb1d0fc01" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01b5a65fdea1113b7a0b0ec945c297fcd84d8042e627ea4eb5c361583c9664b4943749735a43cba7af6510345af54addf7ca251ba041c7f3d7a581c858191f0108" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0144cabe8ad8d3af251a448e33703dfb022f9761a1fab89fa0393f0ea71659ae289885189fc232542b2f09c2f3d1b0af64eec626d187e03e6fee7a02ad321c4608" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0103cf37ff80f4b48731e77a8d6ebacaa8c72703e62576a1bee7e518dc42e50700831d64f33f299cfd030ed2f56a20544d05cb8be9b73494463d8bfbb882ae2000" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "013432c116a8a7479598eaffa0583cc4c015c4df17cd7fc8c9e4018e7173061cc40a0a07a8993f8cfa37b67d9c218dc63a9b2944738ebfa2d8a1a3363ad0c22a06" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-26.json b/tests/assets/blocks/block-26.json deleted file mode 100644 index 5a1dd54..0000000 --- a/tests/assets/blocks/block-26.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "f479e2ab665de615d0f2e0aa9fc1c343b2e388104fc561a3ce2371ad0bbb2e4a", - "header": { - "parent_hash": "8c95d8236e670d7458ec3ef7af5dcc5a9d5eba5095599ffd70b98b240fdaf57a", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "c954da4faeca959fb5a278276603ab88ffab0f0c6b71ffc73a5ba3bafc3fb84c", - "era_end": null, - "timestamp": "2024-02-28T16:25:34.976Z", - "era_id": 3, - "height": 26, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0107f8c675f3c2814b9cac1e68022c14dc31e2da933e7a221694533e7b59a3d7c7fb311d7cf46a62bf28c94a46bf3c580761c82af96c7d1d04e1c89506239b7909" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01731981989205b960b321e71ac7d23e9be61e00af35be95595098ce315f10dc08be2558d9fac34bb5607121de0c69a24478478bea3452557b689b72d2639c0d0c" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01217cbaa943c3910b35d511902f3eb86fbbda8f18c00fa00e99dd69d45e25b5fa6ebfe4d44d56f9ae82cf1aa28a4bfe8a4c549f95f5a86a0ca8f7e13996662a07" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0182c901d04d5840259fe1ece6d16bd0e4b59dd442b3fb4fd05a771e422c632b64b44deeba9fff7afe80eb6645faf9829ab87c172db64421b15e405d98d2901b01" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01b4e1594102fd09a50b985de2a710ba8024d4b59ee6c51248ab2e4e9c078d4217b82c519b0dc0131c6766ff032b39b11f3c4b5a096869dbfb0a5a960d020ac40b" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-27.json b/tests/assets/blocks/block-27.json deleted file mode 100644 index 9884699..0000000 --- a/tests/assets/blocks/block-27.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "6d99a703a1ded3f998db842d0e19e9eee5170de420012c41d398e51c112fbe5c", - "header": { - "parent_hash": "f479e2ab665de615d0f2e0aa9fc1c343b2e388104fc561a3ce2371ad0bbb2e4a", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": true, - "accumulated_seed": "6e41a7d6fa499e36041fd3646f41ab84ca4fb69c488357bf95eb1280f13fad83", - "era_end": null, - "timestamp": "2024-02-28T16:25:39.072Z", - "era_id": 3, - "height": 27, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "013ef4e51247024844285f697389f79a19d678f0b37077eeabd0899cab2652a4384fea625e8ba215c45496f849618270024d26895be4825363bfae6d53d14d1702" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0108673539d38dc142493674b8044d08c110736bc598173130ed0fa1d28d26559271c01094eea61e02a169dc90fccdace4f1e1bf9b124dfd37875e836a148e6e0e" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0142804c4cf796e9a8a27d263cad68dda04bb481066291821053f83fd89514d51dcddec815d0267440405bebf9efde3c5db535e295d21c5247fa0d5597c320b20a" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "017dc325cee661f915ae861ef4784066ef7f27b4d80e86ba15565c234235471d704913ab56cfa23926cb430a7d3436876f79ddd0d6c52c7a27ae6f35c1d727ca0c" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01f00c1e2d4b480fd643973d09d4b46a7e6f0c5b099f229ba6a660ed4b5ca5500f4cbdeb52911eed9ac7d4753fd2c72243efb056bc3b566b9c79519c38e675d50f" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-28.json b/tests/assets/blocks/block-28.json deleted file mode 100644 index 2f10e6a..0000000 --- a/tests/assets/blocks/block-28.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "df06339f3b308995552ef2efd3931a3f4ee99d6dbdb8bc10d6f55312e4ca6ed6", - "header": { - "parent_hash": "6d99a703a1ded3f998db842d0e19e9eee5170de420012c41d398e51c112fbe5c", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "6cb0aed290883dde3e3b5d98506a18ebda013c246c7bcc9d1b9da44453f55569", - "era_end": null, - "timestamp": "2024-02-28T16:25:43.168Z", - "era_id": 3, - "height": 28, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "018c77550a6ede75c375395bb4e557bb7461396ea53f8f21c21db57449c879bd30c3797d848c00b65fd352e036fff4c18435bc5d427649a456ccb7b91b249e840a" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01d56450a63619f7593d86996213e28eb38891ce9a5eedb186fa12a58fac941b4050228cf385467c0dc41abcbbb82a16988fe2e02c1b11985cc32862868b81ca04" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01a5c03d2dcd9b60c06aed0315c62f2adba17126d41c3b0d625defd69625cec37c4a564f58afde38815dbc19c82a5d29366f105af044bd3eb836dcadee06ed1206" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "017e22932954aaf6925c484ea773cace5dffbadd17e1cba75ee61a25a060e9e1b1b6009d3e467dc22793c39aa2741365e28ff0ff8f23660e5265ab8697c63f8208" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01cef485de8ac0e9addcbc6c2ad8b2eaa07c7269260463fa14de15eff12e02c9ff2ed51ccd772faaef2938a12ffa61612194d961ae404dfb2d3fea49d6a9c8f50b" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-29.json b/tests/assets/blocks/block-29.json deleted file mode 100644 index e2ca4bd..0000000 --- a/tests/assets/blocks/block-29.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "58f600ce41f68e137d5fc958669601505e93d5eaa0285748118040574f2d505b", - "header": { - "parent_hash": "df06339f3b308995552ef2efd3931a3f4ee99d6dbdb8bc10d6f55312e4ca6ed6", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": true, - "accumulated_seed": "2ea5e4bcf541e3dcb5a08bb57d40e24b88a8835c237a8afb96b44115e9e7c6cb", - "era_end": null, - "timestamp": "2024-02-28T16:25:47.264Z", - "era_id": 3, - "height": 29, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01c48a12d43a2dac8bdc5a192945f6e6408cbc53764e9b84610c24c3e037dd1fac130f8c4ea3db5aa9091546e7ba2340b0f05d4d0add81d82201f55fda23ad1006" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01131d78dbca15ed8ed9ff803689116df2164f0857ac01d9eb5a5f08f698a46d3c9e4b72b881ae3bf2955adb4fba636e954b13b5496e683b9c69b77a2dbb0baf00" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01ba5f7cbb73e42cdccf171bf3843f88f782c977f2744c8dab8446c7d16fd50114de64b1fd964c9865f42ce0e996a8ce07b88eb7b837243a5af614b7aeb726f700" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "018fd54ef1e2916f454f96b6c6e38efe732f0c110fe8b224ebc556c5e11305f511e8f651815fbd7154200ec0d5128c44d35e2a581995fe9596c63017613928de0c" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "016a4ef5bd9cff80ac284e01b88faebdf08f60922cbcb018d90b5e0c04d8e8d879b5cd944b39b9290bc48dbc35f3a4151ca8b1f51ebbc97ec5d6e40cbeea870805" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-3.json b/tests/assets/blocks/block-3.json deleted file mode 100644 index 5e94a96..0000000 --- a/tests/assets/blocks/block-3.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "f0f3aeee6f831b5847225bb0426aa241f9d03184b15af55e1ccdab61b21b2109", - "header": { - "parent_hash": "cd073ab322296f5181e559cdc9cd2dc68d237287589db3a562d17627f2e02772", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "8a1dcce5642525c685c75547af314384ac80eada19ddf054995a5b020a9d48ed", - "era_end": null, - "timestamp": "2024-02-28T16:24:00.768Z", - "era_id": 1, - "height": 3, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0181cbd8bbc39c28d388739346f8201a0a45f41a3877f20404c2dff2cbab2f5c00c3228ff9fd0a9853a34ae284662ac0afa53ee6f7b8e9ba22f2178fbbf3b45d0c" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "014a0d8891601171f424ae935f7701084207e48e0376de80721a406e05341adfa611118e504991db0f36e6042c39c62ddb2cc842c270528cbbb96e57b73f60a908" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0144a52d147b3b92a4029587647e5841d7b97e69ceca091841c3ad7b10a3cb89fc6e90a876de6af14f87ab44b61e8d76f996cf65469c01ff3717f0a55ecf48f40e" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0136a07c30743c68aa0369708cfa0471c2f716276ea5a495c840b3523a32d4816be10fea986f041c60dccc57ad9676cc38c6971b68482050c0f4f70b0ec804ef0e" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0160dc0fbb8cf0e456d6c7641c1f8ce432ba692e1ebdec81a2c0bb0f4c55d15cd11f5498eeda6986e25324b3444bef1268541fcaa88422dd99dd3ec960b5194209" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-30.json b/tests/assets/blocks/block-30.json deleted file mode 100644 index aac889b..0000000 --- a/tests/assets/blocks/block-30.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "5e80ce28aeb5bb9b99e96994c0b5f90056142108484dc14bea491632d4c38ae6", - "header": { - "parent_hash": "58f600ce41f68e137d5fc958669601505e93d5eaa0285748118040574f2d505b", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "801c11b7f6ad7f916a61eaf67135ca8f82747102b6651c5808e776c5b2f1eef5", - "era_end": null, - "timestamp": "2024-02-28T16:25:51.360Z", - "era_id": 3, - "height": 30, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "018f4ce0a339fa771fb1d0cd38203c905310af3f5a22d032a1511e5f18be9ba646159730a50f15086c587c8e83bbbd19a18b5ac7dbdbc5356cf191fd4abefa1302" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01fd2ff9fd1508a34586e519e12e33f4b3cc69d364e60b0f90223571efc6c960224f53ea74fcd96961df74267170681f93ac89092c9e18448c25eaa2c997ca0d0e" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0169bcaa99c6694a27bbb1d28860437f78417f7b598f02c484b5188150c96e37c1b6b2fe68404b241d8e76eb1bcad1b4d089461af6f710422f7336d9d2f4dfc10d" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01f6e8390911ab1fb4c41ed83b982fe2d0435df205c24761440691b9fe9fef4fcb0a96e9d5f13efda90675228422551d7cc1b22f31dd16d5997428400947ca9a06" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "015bfc489e1a914900751a8aea224cdb49cd2da57e01316c8925030a2e7b6ad99b7cf246eec9e9cb8f81e706cb9b25a2feb78e52f8f326ed669270ad156c785605" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-31.json b/tests/assets/blocks/block-31.json deleted file mode 100644 index b2131fa..0000000 --- a/tests/assets/blocks/block-31.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "dd09b2617b90818658e0ada6056869c19d90da974e336c94ca3a6601abc65f89", - "header": { - "parent_hash": "5e80ce28aeb5bb9b99e96994c0b5f90056142108484dc14bea491632d4c38ae6", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": false, - "accumulated_seed": "b421dc93bd87668ff2028b1409edaf9c05bca85165dac666a33bb9e0b40f3d45", - "era_end": null, - "timestamp": "2024-02-28T16:25:55.456Z", - "era_id": 3, - "height": 31, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01840437659d38cc9cfdfb64e5f15ceeb39d2e5d0b48862c1a3da87f052e1f9fae47867990077eccc20da3a87764b750726c758896206f0ceed2a98f4ad04a990e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01b104e96b1a7e3fb0d884594e0d5dfcc938f68c5fb87d0a415cf5df503104c3dda46c930048799bb87c5e4e7aff8a960484dcb79912f47b703312f7af1376460b" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0171917cba5d96ff79827c6809742ba16a9f05d20b7428566f5aaddc0d2a93b91f92e08eab75e60cf5ce9e1b35c9da19e670a4247b40749e72843c04037485b300" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01f3d308f624e3acbaffbc4fc03c26a78b6edfbdde7b88d4d3830b678ad40729758ccc5d353d79848a2b30a18414ff43986805f396fc1a48d83ea7343ea4780802" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "010cf307159fb3d2bf9d16bee4d9463d7f2028d982204079fe6f67b4319e6115bb677a6ee394acaf155d9b648220811ac6777f1fb53ae29f3798b6cac0bd8acf05" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-32.json b/tests/assets/blocks/block-32.json deleted file mode 100644 index 2025183..0000000 --- a/tests/assets/blocks/block-32.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "e88fac3adb2fae899a30f75226303401b45fac06d8af8c41862c8e36fa5f1a7a", - "header": { - "parent_hash": "dd09b2617b90818658e0ada6056869c19d90da974e336c94ca3a6601abc65f89", - "state_root_hash": "6b10a03c42f813629e71a47c604d2f51d59365327bbd11fcc3c4108dae3b84dc", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "6cc53c08dbd1356a1a2e71ab900f62114d8a59b5346b8a9938d52454368e3136", - "era_end": null, - "timestamp": "2024-02-28T16:25:59.552Z", - "era_id": 3, - "height": 32, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0162f97ef4f19f23bcd880c2bc94a66aefaf170b87f91facf967bd67571f94eb80cdb422f84d87c63bf9123a4a6ed3378de70fcba52ab45c6c5471ee9ac6826706" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0144803dd7d2b2278724f72466f5a352ff1a120057bad891e9e7b1425eda1baf35a49234188e6f9d21f1de2d395f87563d4800ddc7a2e9f1e917222236a655cd00" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01fe75a79b6a9cb18c80f70aa0697ef7c1827dd277eabe94aff344407b999b9629c212cb5aab96b15a44a3d24602c2ab5eb37571c37c42ecc37b161a52ce36ba00" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01d163aee275a641f7897d836c7e139208fcbdc2398159dba1e6c3c7481542a27dfef30d0a859878657b981b3e0c057f713a20668830c3e4a1af331ffc5f87b00c" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "010253d3a04e9997ada7186139663d42d1171372306bb38748cfef2db46b5e3ba64f525d974e788c010cbbccc2b5523c3b6ea8b410a710c12495bb803614fd3a06" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-33.json b/tests/assets/blocks/block-33.json deleted file mode 100644 index 4d3121d..0000000 --- a/tests/assets/blocks/block-33.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "hash": "88800eb688d3b96b5b5e99dda5392d71118033b8a98cf170528445dfb2a5a779", - "header": { - "parent_hash": "e88fac3adb2fae899a30f75226303401b45fac06d8af8c41862c8e36fa5f1a7a", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "70617cda9808e65b2f81d8dd0d5898b505ba4f2482dbf2a9bc23e76dd581cc3c", - "era_end": { - "era_report": { - "equivocators": [], - "rewards": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "amount": 1999999999990 - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "amount": 1999999999990 - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "amount": 2000000000000 - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "amount": 2000000000000 - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "amount": 2000000000000 - } - ], - "inactive_validators": [] - }, - "next_era_validator_weights": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "weight": "2019999999999900004" - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "weight": "2019999999999900006" - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "weight": "2020000000000000010" - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "weight": "2020000000000000014" - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "weight": "2020000000000000012" - } - ] - }, - "timestamp": "2024-02-28T16:26:03.648Z", - "era_id": 3, - "height": 33, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01368139dceaef88a96fb2c887abe6dc25efe9d19a9d3116e49fe1d65c9042c24a37496ef03493007b77535e462f7851fb0893f55981985d4e4f7fa67196859608" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01c971532069885cf45b0ab66e4bb4395600033d0d92c6d86e09c522c5f06bba675a4846836f7e36446436ea086aa21d96eb95c686e7ee27e2065595107042f401" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01253ba6266c74ac8056e50c44504065e65893a4c455f91de24305bac4f6c1c95ef8e1538a9b3c40deee93168461bb3fdc1ca0e516b4be1aa552f3f56242b7af04" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0140e3bce860d6511dc81f8882d7269724996bdf32c19a71a7c5f353065a043ca75005c04185564d2c432235097e0c7750542754d6a5eeabe5b7293a8b0352a207" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "013a94ce68695652c9db88928b4f99ede9f91dd336b5ea0125d05e5dbd4577ddfd19d8f5ae0b80c729c7aca06c333d5a361a08c4536e18f573ab7915949e81d20d" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-34.json b/tests/assets/blocks/block-34.json deleted file mode 100644 index c886cb5..0000000 --- a/tests/assets/blocks/block-34.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "19f3b4074d5dae9579c384871c6a9231a206ff835a04cbc4d23d69f4c3021666", - "header": { - "parent_hash": "88800eb688d3b96b5b5e99dda5392d71118033b8a98cf170528445dfb2a5a779", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "377d8dceeea304d6699e1eda94fc164118efad8ffbb684a511775d9a59dd26d3", - "era_end": null, - "timestamp": "2024-02-28T16:26:07.744Z", - "era_id": 4, - "height": 34, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0193f5573046d265dcc89721eb52b3651cd44dd4f183e71420d292e7d9f842a89bf6c12d17dc5f1858151cfc98bdf671100b9f39c5c7a93201658c194339db0408" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0102cb37dfa9fa8fa89a542ab285a5e36d2c24fd92c269d5d47aa06cc6c3cbb3b97d019850add65ef14205ef615e3f95bd3f88a4ef5dbddf974bc3a19364620e0b" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01960e0cdbe885925bd629c9747080b453d51ae9b8d8cf15ce63d649ebc7d2c05369a182f0b0906c5a88e7d17a24fb4fe7a6d0edc912ee018d5d07b01628c9680f" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0109f697fe1d5abc2fbebc9c619999f288af2980080a2c69e2d02f65519670f793aa05e508239aa0c04601c5f8f45012a6efd824f2ef8c88dacf27576a575d6f09" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01d9d2f44368503918bb9c20d4dde649ed739d41dcbd34638b7a31329264fde21f4f7ae24cf23efcb575c69ef72f666b099e7360708bc518d1de85ced664460b01" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-35.json b/tests/assets/blocks/block-35.json deleted file mode 100644 index 9d0066c..0000000 --- a/tests/assets/blocks/block-35.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "a445c36ee6a6b7f50bbc34c66a4d130244ef2c0b9d19a3dbfc29812cd1a98d21", - "header": { - "parent_hash": "19f3b4074d5dae9579c384871c6a9231a206ff835a04cbc4d23d69f4c3021666", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "7c74f9feb017d08ca34b74b207ac7b6711451c339dfd9669d710d9b283def1d0", - "era_end": null, - "timestamp": "2024-02-28T16:26:11.840Z", - "era_id": 4, - "height": 35, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "017f43c0ad0f6f95346de7c0832b1e1cac34c28ba1dc637d6f306a2966ff9b4198ea5e618305bf68debaac4a1462d83066d02a893e97e4df3e67fec9ea370a3a08" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0126ef13d89866e979dfbed7b054e6fd88fe79f3c9e288aef5ab7e8166feea3cc04e18a420fbf759c08877d7fe556aa13831a554c91bb3dd3a836987c1f812490c" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01096f414b21ad6644ec95fd5751a12a362c3fcc664a27114a1ae5a949387b9fe00eedebe033ffb19d8c1b70fb31ab2d7a6adc6908d4e1c8fd6f8139f8afed9e02" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01f637d6e99613c3b8f96aa44c46185310e2dbed2aca970cc9ea99af053f2ec18601090137b0cf09ed7a6c79c533017c7dac2f81fae9c36796259976348ab8a801" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "013a5ea03e9cff921456cc4662761472470351d9b27927ad1e950705e9a2a2e43185b5c4d0946c9e65c523cc1badb3f1df13a5c80cc5c33551db1a2a09fdabe205" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-36.json b/tests/assets/blocks/block-36.json deleted file mode 100644 index 872c97b..0000000 --- a/tests/assets/blocks/block-36.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "d5b21075a6194a3208c6f5920f3b3521963c2038996aad146744116f314d4771", - "header": { - "parent_hash": "a445c36ee6a6b7f50bbc34c66a4d130244ef2c0b9d19a3dbfc29812cd1a98d21", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "af0ac37121ea3bcd50e7977354f77ce27ea8ff7519c13cd3aeffc66f54374d8a", - "era_end": null, - "timestamp": "2024-02-28T16:26:15.936Z", - "era_id": 4, - "height": 36, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01e7ecf91fb9890bea82e2073f19303a17712a46972ce1ef006e2c1cef4d2d2ec02369f7ec4ed095779e924b927e28c7601719617b1775c54bb0075b099bc55508" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0121e214a1d6d8ca65db3b2a35c8a91d78f034fa79e69c9be87ca6e73d743eb3423933089060e5d727db3ebf066ece918331945911d49cdbb8e14397da958c180e" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0197d2673d9680dc9fb9d5395ac49683c4093a3b4a5d519303a0b5ead361d1a8100f7093f281e867bcea37510a5637ffc1077afdb0e7497dd510fc493a535a7309" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01bf6257fd01df44866ea37efde46b0174501cbcdd80b6c9a4953cf98da24b825359c67b6e155346e3c929de2062d67a4143eddcd60381e2279bf4d4af29524b0f" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01e08b2fd7f34307a2d6769686e8980a83eeb9dc1c5d50ab1c23284f48d495a8df63ab616a50793f231065f72472513f745f979da932bb1eab255149f9ce29ac0f" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-37.json b/tests/assets/blocks/block-37.json deleted file mode 100644 index 88b5ea5..0000000 --- a/tests/assets/blocks/block-37.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "29f78312933acd8b0f5bbab0dc5d25430cd893400d7ff85525bca64cc5d017ed", - "header": { - "parent_hash": "d5b21075a6194a3208c6f5920f3b3521963c2038996aad146744116f314d4771", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": false, - "accumulated_seed": "7430802127582255af1fe0695b2a180add5942416c0bfc59791e0bc9a9b1706b", - "era_end": null, - "timestamp": "2024-02-28T16:26:20.032Z", - "era_id": 4, - "height": 37, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01a8ff3d8e563119c32127fd94d29c1579225a4a98718bbe945d0c164995189dffa2d12991d48b5f9c8a5c09e0a0b6366c7143a5c72eaf84be13a03221b111a806" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "013a91b2c47d9a24fcf9fcf21d128c7a6af949531e0a3091d2036349fd6cb5cd82f0a946aeff3b8051404a544ac0a8eb706eb2ba552ad5cc5e74c2fc188c048702" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01475bc5afb791e2e121688f35a99522ae2cc35f7816590f9615b3a31bfa63ffe2a20cb944ffe5137f336d3940fdfac9d4d6468e0fc3dc3ddcbfc422bed2814709" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "013f17c67a43fe2577841cfb4991a694d94465e99edf1f84b995f2d7242c2d020cc6da88561cee8629195d63bd492845c85baef501ea52ee81c562da740913a80f" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "011f245a4806e460776cb852627586ef0b8a2d0fef6933edcb2ff2806d88337f9d14b6de0bd3f1b41d8b96dbceea68d93311b74c4a1925621ade29c74d9c1f190a" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-38.json b/tests/assets/blocks/block-38.json deleted file mode 100644 index 2745a4c..0000000 --- a/tests/assets/blocks/block-38.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "bf08f470768e4c0ea38a6e548074c6a19c2ef3bf878d57c8fd5110311958b0fd", - "header": { - "parent_hash": "29f78312933acd8b0f5bbab0dc5d25430cd893400d7ff85525bca64cc5d017ed", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": false, - "accumulated_seed": "e7b1859783a25772ee430ac3987cb4ee4ac506c0334672d4866fd8ae55238184", - "era_end": null, - "timestamp": "2024-02-28T16:26:24.128Z", - "era_id": 4, - "height": 38, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "014fe20a791328d46f9c432b7dc40ad5411af5d62152eefff8a51b302f321d69f69b0793b07159b51cfc4d92af0dd3f6c413d16ae9601be52cd1a44bce50fa1c04" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0110177bcbf112f49a7a679bb4e48bb20a184a108a4e981c19698c3eb8d7c21d8e7bf7317d18512d83560ed16c56550be3497a97b520bf1218e3daf9ed37381d0a" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0178b421fd15d27550f3a7ebd8d011152180a5a6ee10b5115a42e3b43cbd486b4c3fa7a36f5a234742f3a98678174355f9edf1a1f1fb3c16cd19988bc20b955102" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "018e7f74e1f54e973147a56e5be589f8305f504bc62aa6a4338076300f9b551b40f834b0de76c03fe723030023b681613ca9b01342693a43ac90c49b5846b97107" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "015bd868a34748b76575c503bee30791c914aa720945c39ebe5b34c43add277c909f900a4e985d21e2df9b26dfb2044a2f03cfc4556355dfa0f9aa582b7fee5104" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-39.json b/tests/assets/blocks/block-39.json deleted file mode 100644 index e4163b1..0000000 --- a/tests/assets/blocks/block-39.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "c2e657a47d5a0973a5da4d756f658a3977ed98aa08571ae28b931b97010b56aa", - "header": { - "parent_hash": "bf08f470768e4c0ea38a6e548074c6a19c2ef3bf878d57c8fd5110311958b0fd", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": true, - "accumulated_seed": "3fcdc617bec1ea2606389b64920cb5ee9ac5db589362622383eafea287b0bf0a", - "era_end": null, - "timestamp": "2024-02-28T16:26:28.224Z", - "era_id": 4, - "height": 39, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "019bcbc390f1e34143e4b4246d9f686bb0db4d91b35344f087a2f9e1cb8c4d6b47730bb3b990ac0e33edf60017737ffb728eb66b515cc30a1b6756d154e3734d0f" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "012b3dd334eb4c625c848b8537213a83caa7b384e6388778eb682af365e70024dc4a1f286e37cccab9aff22c32b61ee9bfa03e8e3ceed0f7ea20944d4155bcd50d" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "015cdb6eb2547d8487d6f940029e9739c242058902d998ad91dc98d78acf84bc2b6edfc60a134f738aa06bfafbab043dd2d0471b7076572d779a9ba1017207620c" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "011afa0a77a5b169cae217fa4e771ae89a1709d987b184e518e33e0243e105a6d8e998d8988a6e0d8195d8e089acaa5708fb673e66926473775d99f1e66802380f" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01f9a64890e2a2a498b213198fd5f4ade31a2fc445ac1649857ae9e8df9b8f1c4dd705b3b409ba81b2f7d937b7bf59f934d8baea4f79305c8a42eb124290af810d" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-4.json b/tests/assets/blocks/block-4.json deleted file mode 100644 index 50ffe9c..0000000 --- a/tests/assets/blocks/block-4.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "97932598aff6a9058ab4b027541e3a15bf22dc5d08c6fdcf4048cb87a975f00f", - "header": { - "parent_hash": "f0f3aeee6f831b5847225bb0426aa241f9d03184b15af55e1ccdab61b21b2109", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "3f3a0ad9d07db040d8160acbd66aece5da826ef11bfadd214c5c209d3cfd1cc8", - "era_end": null, - "timestamp": "2024-02-28T16:24:04.864Z", - "era_id": 1, - "height": 4, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0147627fdcdbc33ac421041b9f537ee18cd401771ef127341d755feb4a2e21ac34ceeb09f858af0bd5855c0da4f34ec566d60212383e32a89fe86a549f063c300e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01fce52c2fee73e07c3a601c677016d7dc9409904c892554b1a878e2c5da1cd14165802f1063566005d938bc77c1608738383213783a4f63f1cb9fc46e75954e06" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0134d77d4ef38dbdb2e4644538ab65d00526a98534e9fdde2f86bcf172bddb1e7f559f906a18a9689915a7ef1f3f1b6c1d4bae83db2265d421f17d10c2dcb4c80d" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "019f69884dd3be61232f97c4ba228ef792fa571991fdb83d935700ca282142d486e86293abc2b5ed2b17b4b8d0ab2407831ab172183542eb00f5fd3d20a1e12100" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01133c833baf406f6b081b1d82493cc4752e903ab6e65c3f71a6455bfdd17dcfd2fa24ed2d8a7f08869bc53a15d95573b9ec0a8f75c0f76f46cdbaee8e27058c05" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-40.json b/tests/assets/blocks/block-40.json deleted file mode 100644 index 2e97293..0000000 --- a/tests/assets/blocks/block-40.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "d4a0565f62dd4ea8e3f0d974f60d90e93039892f9e2c24b226b7523f9e3eefe8", - "header": { - "parent_hash": "c2e657a47d5a0973a5da4d756f658a3977ed98aa08571ae28b931b97010b56aa", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": true, - "accumulated_seed": "2b87d35139f29154f41cf76aea1c5ce21a80f20770888fcc55ee28cbddd50bd8", - "era_end": null, - "timestamp": "2024-02-28T16:26:32.320Z", - "era_id": 4, - "height": 40, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01e44d5ab4601dd8f6dd6a5bf36f6b94b248993fd484ed50776cdaf9503bd6e7020c08535b0704895bf5427d9a977c472e151c4ea516c1e5dff277ff8a58349e05" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01b68fc714ae7544b7718826c0f859a13b5f54005d4909da7cfcad6624e1f37bbbf975cc6ff04d0b0fb8a737e2694074cf923d1f2b12bfda6daf52a7eaf05f0c08" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01f39819cf3c9a3171017652b326f1c2a2dfe15bf9e6016d1a513e71c3d539bec6a4d0e634a2f75ec09ff8c5bffc2b82cd1a72a20e4d95c089e45043336a536509" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01c3be9b13a203ac201e2894fed9753e9d6b3b9e898a852d461a2ddd8b3a0c04455be4bf10472a897fc05329e517bad4b017dac0a74c5675588d1192d1f096f509" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01f4cb129c29c8effb5315926af9edabf3b9fb466ac4aeffd8e845a43df029a68f2078a93be3d41929d82b6eb875db2c7c7907b0dd1c35b702f022329599325f0c" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-41.json b/tests/assets/blocks/block-41.json deleted file mode 100644 index 9836768..0000000 --- a/tests/assets/blocks/block-41.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "27855e8789a77c8596a12a9f7d53c4757c91f65a5214537bb3e91d60651cc288", - "header": { - "parent_hash": "d4a0565f62dd4ea8e3f0d974f60d90e93039892f9e2c24b226b7523f9e3eefe8", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "0eece0aa721a8bd00e7a71700ebf2b5912c920111b03a51517b9f3d99aa19f63", - "era_end": null, - "timestamp": "2024-02-28T16:26:36.416Z", - "era_id": 4, - "height": 41, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01ba5036fc5fd55627cc19756d351c7db026bc729b2b71a7faacc4dd8a16d50d64e0ac650291f42058540763b5b9c817e6b7cbd09d2383110340c5c9c4eb3a6c04" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0147193bfb4739fe61752e3313bc0e16dfd3a1c597d1477919ff21c2d2c7373c86ddb411037df5c55b3ab8e91a9c1ff77d97386609efdbf6688b4f31cda874af07" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "013145a5837f6770e6ead578a43a671d6f6180a767cc809c9d5f42ef6c3e3bcc2fd9d8b6648e866702b4c6cd08ed6dce39ed9b69451d3293140ae21fec25121905" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0104ef060775be3c45554a8922454578e823545a2199805ee9bbaeb7e7cdad243d6147e4b048a536c09bc982dfa324354f60cfde8fa4bfc4d8856413e838430a06" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01e1371a02f682f98ab1e3152f76a260040af0f14801b050b4726bc1686818a165250f34a17e9e69f21bfa6929df99332c3e8296bcbd4c91138c32ecabaf0a210c" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-42.json b/tests/assets/blocks/block-42.json deleted file mode 100644 index 175e9c7..0000000 --- a/tests/assets/blocks/block-42.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "3348faedf0c72d780d550700ece9532e8f9f4af414c5312c8860c4e6ecad31b3", - "header": { - "parent_hash": "27855e8789a77c8596a12a9f7d53c4757c91f65a5214537bb3e91d60651cc288", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": true, - "accumulated_seed": "f9ce1dd492482ace06228918e3107673efd0c389a86e4f30748c0710fba9e19b", - "era_end": null, - "timestamp": "2024-02-28T16:26:40.512Z", - "era_id": 4, - "height": 42, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01697d2fb2c4df2f8aad56f527b2780368b14e2c1a104d048a1ea2758885f5b08feb124720da43155959da477c69208369b48e5d280794c962f8c54decd8477e05" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "016ba406109d2d1095045a810b30d1f57700e0d1213c5c4c4d210d0f1aa91880aef9a55283bcecc780ba090f5b8cb71ef49848f0d6f507d6172f3cf73baf54470d" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0187b4c296636024704dc7e80029e67dab8f702609af40af85b60b894fef142c8d13f7617e8498fd45d741c6e2b5076c7893b1fa63373e5f275148785bf4f3f709" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01e9974d0bd070b5a2b00e2ea7df9fbf9210dd0e66fe637494c9adb5ec0718d33071bbddccebffe677c3c4ff331811cbcb140dca25e4e9dcf0f02a926ef430b10f" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01122dd3769187bfebe9254c4b22bae88049567d95c8f267c80a11ac9339ca2f744b6dbd3fd60d288be116154b9348ce26df6bcd7b4872bf3ec4ac72a1d4be090f" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-43.json b/tests/assets/blocks/block-43.json deleted file mode 100644 index d3ccdc4..0000000 --- a/tests/assets/blocks/block-43.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "b28fdce1bf6ca73d39aca2c03b037417f2bc8fa1d1d4bc9f8fb192fb46f3ad1a", - "header": { - "parent_hash": "3348faedf0c72d780d550700ece9532e8f9f4af414c5312c8860c4e6ecad31b3", - "state_root_hash": "26f37e295f40e3e3a022e28025a58c52342c1dc3e2b009c1f56938b95824a946", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": true, - "accumulated_seed": "c47ca1e36bdef08f6a0b21e420fbdb2a4a43f31062be072af775b4e9c573632c", - "era_end": null, - "timestamp": "2024-02-28T16:26:44.608Z", - "era_id": 4, - "height": 43, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01a4cfdc117548856d87ce877a89b0d5cfc21c0f0140406b1541b1c3f40ac4fa1d706eab17ec7855d40b0d8c2082dcaf6d3f584ad6e81d742c751575fcc6442109" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "017bce0f38bdb92612eb2468b233603cea7632e8827bc2d98af5a0ff1f553cd55ac846d5fa82142d883d7efd4570c252c2ca0fec3602e7f773015b1580b22b5d02" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01c6e1e01a88588ca4578d3e85abcb1da8d9441efd56e06f37fc8b342baf5362430013c2ab28a581d6f1384dce3352c4c4cfd11f8e6a8476c3002bb8fbf05fc10c" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "010db854960a02df4ae7533674281e791ad7f2ce465ad2e55851a0887ac5a18ddce6ac8c151aa56214c5b1241e485e4787e048740797ff79d148759ad7520f810a" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0164801e60dd076f22a12111c52c65561c733e5bc70eddfc7f346dd1870543bd56244e879bf4ac81fdb39bc066a19ad4c30ebfd22cdfc1bcde96600674fbce200b" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-44.json b/tests/assets/blocks/block-44.json deleted file mode 100644 index d2382c1..0000000 --- a/tests/assets/blocks/block-44.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "hash": "5cc8053b759cf609f83a897c50d0b4791b30a533944b300cd1c10fdff0735bf5", - "header": { - "parent_hash": "b28fdce1bf6ca73d39aca2c03b037417f2bc8fa1d1d4bc9f8fb192fb46f3ad1a", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": false, - "accumulated_seed": "4393f71d8d247a19a19979ed232f9c0fd1795d6c284934bf86bc9ef2c39af502", - "era_end": { - "era_report": { - "equivocators": [], - "rewards": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "amount": 1999999999990 - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "amount": 1999999999990 - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "amount": 2000000000000 - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "amount": 2000000000000 - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "amount": 2000000000000 - } - ], - "inactive_validators": [] - }, - "next_era_validator_weights": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "weight": "2029999999999850005" - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "weight": "2029999999999850007" - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "weight": "2030000000000000012" - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "weight": "2030000000000000016" - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "weight": "2030000000000000014" - } - ] - }, - "timestamp": "2024-02-28T16:26:48.704Z", - "era_id": 4, - "height": 44, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "013ac6f10a63b2488e73aad1bb96f9bcca34bf00c08374b45609f4788abd2dc681e72f9e339aa9951dc289e2b118f9d3fc6139f0459d11721a34ceaa2c4342c70a" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "018fd069ef939b1049a3f39e31c98617b0240a8a7ab0ceb5c251482fa8ec24706b745da09bc736a24587c320a1ed0fb73e350cff371e957a3136f17ff31c3f5e05" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "015f71c7c1bb33409bd267ff1377a019960f9b03b5c7018b3dbdb4a0a9e7263e9d4858dee0fa98b19b32c30beb7b2010b07205d4b541463423b6d967b2b5539606" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01e98f528d7d785edd5214e3059d85b3ae57022606808229d41890b536d78eb7866169eee41f958fe5c61b1a1b9e78a19230d9bb788c1080c505e4a9c86cee2204" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0133b1da4d5bf6285c65225366084c69e118f078109f0accb67dfeea69d12ee62ff3cfbeb5e1ed06e84e73be7978b569eb8c383bbd0734124a69b026e10f675905" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-45.json b/tests/assets/blocks/block-45.json deleted file mode 100644 index 08cbc1b..0000000 --- a/tests/assets/blocks/block-45.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "84174eb466ab5d9333e5e8093eee437c9e620cc42b9d020ac7135abf6f18ff87", - "header": { - "parent_hash": "5cc8053b759cf609f83a897c50d0b4791b30a533944b300cd1c10fdff0735bf5", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": true, - "accumulated_seed": "5cbb405d89bf1781c6e701716f61713c4d02a19fa0adec526297ec59a4b01d55", - "era_end": null, - "timestamp": "2024-02-28T16:26:52.800Z", - "era_id": 5, - "height": 45, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01c9ec6fb7e78ad72c71a6c0f36023ee6f69768d26f20231222c5913f361e2757dd7564408dac12aaa0ac3de569b5ca96cd9253a14d52f8db57e3250bcc826f901" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01e5fb0834908467e15fa01ca675bdfdadcbc5c7abbdd2a5fd3f989bc9648f0c9397d6282b3a1a751782641455aa14728c83fa93d10f0dfadc91b0be3942520e0a" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01510798387c26a7893ae41a91c9c9d7a1847914f4215b8bef64db1d22b10f4d76887761bd39478e8b23c07a1ef7c6effc5eff3c9e477e4a8e20447b428377880f" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01347f396a8c6989f98b9eeeee3436f8555712d2f32d6f111a56738a385dadcf85a316728b2635cd569bf78ba5f6fbfc41058d655312544a0619eaa8998592390f" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01b5831435c09fde86e067907c82604267e037b294d61591f885815656700d62c90f83990754c2684a48178898532c8238342ae261566f36b0d64471ae45896a00" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-46.json b/tests/assets/blocks/block-46.json deleted file mode 100644 index 97c4c19..0000000 --- a/tests/assets/blocks/block-46.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "e71f2425359e25a95c9564bbb1838487776a706d1ecf8adf83623143ab3ac952", - "header": { - "parent_hash": "84174eb466ab5d9333e5e8093eee437c9e620cc42b9d020ac7135abf6f18ff87", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "024858b395e9e63a347bbb2067f21c1e381e4dd5429e1d317fe80d7523992d2e", - "era_end": null, - "timestamp": "2024-02-28T16:26:56.896Z", - "era_id": 5, - "height": 46, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01696b034b85a28e508d20921a2ec420554896fbc84c88a24d1e17c6ebb114744ebe561a376c338220d83dd750c85631abd4e38f72ac5473551a7761f8a982ad0d" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01db1b451f8c077bf3a3e99bc431f39503c1381cd0fb91acf5de9de44e6a75e3f14148bc537f669fa2a8fe4ba1dcece4555b1051e02c7b71f7a6e79cef33275200" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01b199eb92df63ff91ba6401fe88759be47072a830dbd580b722c3dd552fb3afd5957af29af7c978e46f3ed87ee7661439f838f649fb644bf746d7b7b5edc5d50d" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01f4a2a597b7509ab85431f6819fe3e1539cdd4c83755eca2433ea43a46f754fb6cacf39b5f8b369b3a8936f9e8f4478fba97f9111637db1a74af86220664a2a06" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01224346befe254de7ba1aa4d9bbd37bebf0a76a473afc21aaef91ec963b539126516fda9f47f414b0d23a2a8cb0d69d604402a5e8397d642f46046590718df107" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-47.json b/tests/assets/blocks/block-47.json deleted file mode 100644 index 18f6666..0000000 --- a/tests/assets/blocks/block-47.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "24d8a411377438e16e63416fbba0c1f9e2217f4868aeb56e9302c5e7fcf5dd44", - "header": { - "parent_hash": "e71f2425359e25a95c9564bbb1838487776a706d1ecf8adf83623143ab3ac952", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "cd8619d329b9d86f4e125db75414cb44056eb2cd2cc249fbba723acb8a746c38", - "era_end": null, - "timestamp": "2024-02-28T16:27:00.992Z", - "era_id": 5, - "height": 47, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "016efca85b28c6e9286a45632715898d33d4e8fb53603f7f828ecc30c7491296d23fac4bc6b0c1eba1f4e67b4bbad9b28729fb814716a42fe5e47bef441ea61408" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01da8ebc62be181f22e7fd52a459792b71210bba42a076ce2bf07c34ec3f7972c028aaf7d8a4c3a9ad6b503d31f4f27506da43d6e9178229b54fbebee1ab05f900" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0156b843618dd8b80faf3365f0988cf64f173f212890fcdc059770066a742ccd9550cb849bc0f3d2a97fb440d7a36de4095a299ccdbcabf37eb6138747af60de0a" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "015f4843c869f9620f8d9fc7002e8cd794f224a06420bf92dfdd5f52a3c167d4d4a1db28106fe058f9d0a87e51b530bdb908cd580ee8dcf800f8bc43514c29db04" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01d768f11b0a151b0ac1144b796fa3888f0ba4614e1976b583920baac13a861b1dd2c518d79c543d33d05ba1ed10fa58175cf0dc45f1666078c97e3dc8b679d405" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-48.json b/tests/assets/blocks/block-48.json deleted file mode 100644 index 25aea83..0000000 --- a/tests/assets/blocks/block-48.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "884551b403e229a883a34573e826e31721033063ff84d29c06e6ab24bee0e078", - "header": { - "parent_hash": "24d8a411377438e16e63416fbba0c1f9e2217f4868aeb56e9302c5e7fcf5dd44", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": false, - "accumulated_seed": "eb3dc9e4be6734c9646d59110827acd84a4c9c1efc51d0eb7b422f758b7fce47", - "era_end": null, - "timestamp": "2024-02-28T16:27:05.088Z", - "era_id": 5, - "height": 48, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01c7167347de75dec0568d8a8f1ab5fd204d9c2c0fec1d40d1ecceaba61942921668949746fa3eddf851ac607176720afa1154d31936446dd645dd1c9b3984d703" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01c4e13b6c0e8244697c4ca0800543ff0404dc5301fbfe06088283a1d3e049fdc55da824fd753a14171c70f4ff064de78fcb29510998e66d4ef25eb511f4159005" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0174b4aa865715647d3c28600cd5b8c6ce04a20320588637185eb8f4dbd0f034a0abba7db2b51cb582c362ae930079b95bc228c91df3f6eec7129bd38ea4bea60f" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0184e0e029494071e4eb51fad7fcdcc9923007074ea5ac725e7e3114624813f4115ee20e58d518bc8bf45aa84a51239bd1c7e39b12b4bc48f1f9920c9a1dd9dc0b" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01e0bba170aa120d042fdb05a5b9460dadd8a1fc6744cba05364e2d8d511a8498b69bcb2701e45a6783b664d8a39ad612443c243ec3519a44965736abb2bc30e0c" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-49.json b/tests/assets/blocks/block-49.json deleted file mode 100644 index 11db131..0000000 --- a/tests/assets/blocks/block-49.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "de90495851bca7b33361b3f5c6027f5bc392ff4bd5a29ce1105a69fe74c970f7", - "header": { - "parent_hash": "884551b403e229a883a34573e826e31721033063ff84d29c06e6ab24bee0e078", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "baaed092ab14e4e03930d489dcfa61a7691e5ba03dd09ab97a0e787073136186", - "era_end": null, - "timestamp": "2024-02-28T16:27:09.184Z", - "era_id": 5, - "height": 49, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0193a2e39eeb2362ed1e9e940574f0222e59096be3eb041a1d82c095564c84eed73fdaa52a3fbd2871c19b3180ec4054f58c7adbffb5c7f682a9e084d6e38f4705" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01e7f3beb61472575fc3da16272833213b5a2eb0cc968ae91efa83a8b0dd8fd58faf308592f7a5a758de52a64b04b2236b0211c6869c9238e29a81e662b90f3901" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0120db59da1f93f8cb1eaddb138fa3db0a38847108f61ebbdd1665ad1e3e82dc6e762dccec57f4df9342c3fd4f9f693ee229069e7948257fe0aaf770f4213c740e" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0184ba22efa31825b1c96b79d7cdc1fd11b7a0deb1ec75d845580445d4f174fe1fe30ee3c3c13e2e4e27887f80185b6c52eb87f4c474bd0b224f7e94b99fb6a808" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01f9da3ab322f75e116d6b400b24e5d9bf19c9b34293bd10923e7803adb1d38bb79c257fed636a392a153359af1bbbc60172fa0da54a88942a9dff36c837469404" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-5.json b/tests/assets/blocks/block-5.json deleted file mode 100644 index 744c0fb..0000000 --- a/tests/assets/blocks/block-5.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "7014c09e03c9b443e7433e9d773f4d95c8cc1e5bbca556596ff5fe4a12df0708", - "header": { - "parent_hash": "97932598aff6a9058ab4b027541e3a15bf22dc5d08c6fdcf4048cb87a975f00f", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "8b3af0c73271d01e833b25a6891efec7c87eb5dca8098142539eb805de39dec3", - "era_end": null, - "timestamp": "2024-02-28T16:24:08.960Z", - "era_id": 1, - "height": 5, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01eb6c2e025198dc8b809a90ad74279043a15784cbe5309dfb14346457f937c04ab96c51f623ccac9674fe67f130ec84fc929f0f6db35617d325f9534b7113e309" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01a4fdf560061c33f50f8cbf286e96b771d1aa0351b2646c4e88184d936e0d544c36f52d15f2c550f652897a8658e2228aa00a6fbd8f727bcae9dc0b01534daa03" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01d0f80ba6730664a0120175fd20abd4de7fe30233e5a38e25cb4b9ed767e386102becb1aaa92f9c76958f2968f871166592ad9620f1766e235d6320b98bad6606" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01be79621827a42fd5875a5f8cf1c9a3f8f3164fda77be5246e73585432c35e95a8f05c8fa33111ca8f3ad72a09720a9d51a405ee79633303d03cdfcc891b03c03" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01da7146758e91724715fd086c288cf9e5a2637e0b8ed0c75f47ca26933bff1b10ece3cb3e8977e96533bdabf5958aba56dd85f65e7f7ff09f5fd26e25ac8abe04" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-50.json b/tests/assets/blocks/block-50.json deleted file mode 100644 index 6280d1b..0000000 --- a/tests/assets/blocks/block-50.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "0be630b27c00998f564a970498bb85426f32d29132ab9f6d8f39906e1afbc0db", - "header": { - "parent_hash": "de90495851bca7b33361b3f5c6027f5bc392ff4bd5a29ce1105a69fe74c970f7", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": true, - "accumulated_seed": "6bb592806f02baf8223cf0eb98adeafa553bbe0b5e3c4d4654d57f56081c3b41", - "era_end": null, - "timestamp": "2024-02-28T16:27:13.280Z", - "era_id": 5, - "height": 50, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "010a92b186bace11edd534ea2e0634316dadb32f33db7ea80331bb1f3f28b4b4d2628b658d97eb3d91ddd027498ee0b49646a144646f8c271d42de50de7b8a280a" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01dc584d2c1588d1c27797544c76ba93c6b353a9976cd0acef233ca7557a8395a26dfb533b140ce83e51322c3a7a11f177a5d91c4a375fadf62df50d8e5e210509" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "016d465d30f518ae0546c6defb3e6fcfcc3e6739f695cad0ce20c5b961636691ef06116917275a027acf2bbb496988fcce46f62217f1665715fab45c8456146007" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01167a0dc7f8f9013bb62589a8a69bd32c90713d9c337a3d5c0b1b1d3ac09b81fb1bb8641e7da4753a639fbf9f8522da6fb4c49aa53b0cf8e24856ca1c7efda80e" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01e54e7f2e434a0e47b14d138506eb8e689fdb2734dbe3aec71821912d9bc7e28c536bd9da8befd0433c4d20204679ed78f6b48e86e0e9f6a657206df7313f890d" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-51.json b/tests/assets/blocks/block-51.json deleted file mode 100644 index a5dcf2c..0000000 --- a/tests/assets/blocks/block-51.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "400f7305a8c80556efd70c061d0bf546306d35e24e2ed9022239d2d06ab1aaea", - "header": { - "parent_hash": "0be630b27c00998f564a970498bb85426f32d29132ab9f6d8f39906e1afbc0db", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": true, - "accumulated_seed": "61cbffe19220ebf7c4b16eca122986f84ebba1dcf0fba71112f3cd138b595f8a", - "era_end": null, - "timestamp": "2024-02-28T16:27:17.376Z", - "era_id": 5, - "height": 51, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01bd09137139332ccefd96eb0f3cc2d69688172f7d478ab81e7cdeb52314118c7c391999374e599d686fb142c6144b57c8ad1f6c4b45fc285605501dbe6d6ca909" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "013632d38362fc2abcd59e35606ce59719d90f1df1d4f831927b19bb07bd2dbda0cce9ad55f21a506233824bc27e124b5d9dc14729b317627152814a1ccb487f0c" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0198ea941ed97b898210762400d327baf4a9c9f8354334045876099de1dc538039bba62f1f7c0326f86240bc2816c5ac6d7782c514ffa72f3606f1655080ed250b" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "012549a9acf6ee3f7e34e4f17bcc63ea6423420b8914ee4ecb27b11823c8394be802605923e9d9c109256dd7245887ae58a711995835a41e4a5f4b212332e90208" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01e0a11a888555a6b70810399a4d61badec7a0d89c6250681e4206b86fefda78ac5ab6efa08a1f1a6481e273c128f78d50dc96e4e795b434dad90ee3b13bde4d06" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-52.json b/tests/assets/blocks/block-52.json deleted file mode 100644 index 7c218c7..0000000 --- a/tests/assets/blocks/block-52.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "40f4bbceedd10390ae0e5c6c1ea3bf194b0539465440ae70f826e368a80cbd5b", - "header": { - "parent_hash": "400f7305a8c80556efd70c061d0bf546306d35e24e2ed9022239d2d06ab1aaea", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "3de3e2cd101eeefc45bcc299bdae14efba7c5c745ba0f98ce27249bf57e7ff1e", - "era_end": null, - "timestamp": "2024-02-28T16:27:21.472Z", - "era_id": 5, - "height": 52, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "017ff05556e4171ac2d014b1fa26ae4d82a29322f36942c4c39f59eaa54d78cf36d38fe7845f5330f54d939700d7577c571d64ae8070bf8657f720a63e677f3001" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01a03ec26154d002990e2351af516572d2eebd81f9e383bfa514411c1df8de470d9054365568302a28fcf459efa092dd30a32e5031a4448a5533e487f7fee44b04" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01ec5450fc55cb5101e3ac5966bcb18a6b233e01e64b3f2ac6e9354e7acae8c4a92ea7b1d45d6f939bf8a8e8b9f338ee32be4b02ccc9eaade7a785c07c06273b0d" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "011734182b48ee02f8f70f05a9d6319a43054585e9986df6ee074d8423aa6c959bb60ade593bf5ccc6a116254e720bcf87ed6f8032037b16a03d7a6a647cfd8b0d" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "015a9affa4457ce02fdcb40e4367d11e9af0d0286f34245248bc3ddfc9cb3a156b3b65abafa25b8973a367319fd1710456f56a2f6cdd74bbf575faa3ae435b3804" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-53.json b/tests/assets/blocks/block-53.json deleted file mode 100644 index 61192b2..0000000 --- a/tests/assets/blocks/block-53.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "d2ed4f1a027f19f665d58fac33bfe66e7e25afae5e6fa5e90307ab75aa6cf587", - "header": { - "parent_hash": "40f4bbceedd10390ae0e5c6c1ea3bf194b0539465440ae70f826e368a80cbd5b", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": true, - "accumulated_seed": "c3c1c8e29c841f7a2953b63455ddb51a69db019c6df2a8e55dc534ad43777485", - "era_end": null, - "timestamp": "2024-02-28T16:27:25.568Z", - "era_id": 5, - "height": 53, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01774ab3a66ac9cc9bc311e6837c71974242695a7a3975a09fec5db6e8fa0a18eb50b08c1f0c35bc84e0a9d499c128819f0a2aefcfb9de5c6b1665d8c7af951d09" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0172767b0e6ef72db6e61f332c6b96f27faa82577e36f214d060e586da9cf313c2744d5f62fddc27349bcce8671031ae5480b89e2de0ec1ea3ce021cbfe520dc0b" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "018c86253e4546aea84916c984c4361425c8ec5772f8cd1b565333fa230adf036d728ed48081ee40f2e78a6b75497962ddca22583432c450316ee1f3c7e1af3a0f" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "011102c13b0b1dc856916c571c5017c6426c94df80b5b430f72c39d0e123f1af8c24cb5c8e9fff0e35cec3bc5299adf8c68140b231f170a1fd9ec96bb84f17e806" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0161a65e09613a9b5de874666f9bc4b1ef40381411a9779b54c2b86da24a2e012202ae00396715f3f8afa25c94a2dcf3aaae6f38abb90057eb53a8e43579483b08" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-54.json b/tests/assets/blocks/block-54.json deleted file mode 100644 index 7194df5..0000000 --- a/tests/assets/blocks/block-54.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "e94d250a7a135b20b46cddd103d1e8e44202fd01f9f6b487e2c857cd98c399de", - "header": { - "parent_hash": "d2ed4f1a027f19f665d58fac33bfe66e7e25afae5e6fa5e90307ab75aa6cf587", - "state_root_hash": "0bfa466e040ae24b90a919ed7e0e12f7189493d6944c12539e011702d5109b7d", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "456365a6e329d8a4af04bbc79e68428ba29a7f7d4171493e8e4d702a5229bac9", - "era_end": null, - "timestamp": "2024-02-28T16:27:29.664Z", - "era_id": 5, - "height": 54, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "012a0d0a6594ca78475f5a59bea88d17fbbe36ea7a63871b41fd58055e76fc9dfe80384f80cc5cd9a83cd7d864e9c7d6643a106fd85c882454b33412480451da0e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0174291c0c1384d4e2070f6e17c440e033892531694102790d0502f1cfec607a5ebf014404d738be1ad070866f9d877ebb5b2ad6b849cabdd1154263df7e94db0f" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "013e4fbf2d8f0fbab722a50c4a75cffbf51d4940ae885706c00a35e12d0ca651a1b52631f07b2eb0927a3e1f9b2e44a3ee1878459b5438294febbfdac384910c02" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01ba5518a26d46e422abf6d2d9b9fed1948813f1c1e4a7d178ffdb4179049c153788c9082429fc199fd30074cba6faf4bab8ba6925651aecf1f3a9017d1a528307" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "016325061cafadfd9ed537e6d9b7990a53ac77f942a3bfb583360ccae1fb8c91c9304f7cc220c8c223dbed5ef131532d02a121ea3790d3c120697a43a868e81107" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-55.json b/tests/assets/blocks/block-55.json deleted file mode 100644 index db92c84..0000000 --- a/tests/assets/blocks/block-55.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "hash": "850b062e3e992692f651e5960bea4a617a48b261a610c6994abc02f138b0f5be", - "header": { - "parent_hash": "e94d250a7a135b20b46cddd103d1e8e44202fd01f9f6b487e2c857cd98c399de", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "3a2ffd7faa8ba876cbc9c225ab06f4a9c44aa51ea116aebc0c78a49b3efa85ae", - "era_end": { - "era_report": { - "equivocators": [], - "rewards": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "amount": 1999999999990 - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "amount": 1999999999990 - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "amount": 2000000000000 - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "amount": 2000000000000 - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "amount": 2000000000000 - } - ], - "inactive_validators": [] - }, - "next_era_validator_weights": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "weight": "2039999999999800006" - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "weight": "2039999999999800008" - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "weight": "2040000000000000014" - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "weight": "2040000000000000018" - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "weight": "2040000000000000016" - } - ] - }, - "timestamp": "2024-02-28T16:27:33.760Z", - "era_id": 5, - "height": 55, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01745dd29343a12f51f9c82c9687d3217561b7d8572ca597a5f14ae310a448cf3fb18c71eb03d7a2e72afcba08746c07f30b1961d8cb25800136871fffbe7f4300" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0184bacc048de5b8705572b7e07a437ae7bec1863de12c78a7fc6f84221010ebc5a484c66238e43af36a0d36ac6be39bcedb20a6fad30c89d029da960c5e62290f" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0103340674c2cfd98459b2f55d8e8b0e502845729a73073131ca2986b53c00ea962d18e16e110be8f9bc174887bad3876f3a73ee17094cd9c5d0a938b733722b0e" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01d7101edd98ed83acf8c5322345b75e72e44f13637c49b89797ab415fc4eb825ee3b270f2c6ed48283d0cc128b7d888097c0c01fd50bb7be46c45fcd0a260790b" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01bde8915f9e7b3ab54a8a11aff3fe04ed02d2e7dd8c0fe799ac9e40f5adadf3f6223732a99dd049ab9d108f71fadb7146b5c63dd9cf99f92f39b539536986ac0f" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-56.json b/tests/assets/blocks/block-56.json deleted file mode 100644 index 68a33cc..0000000 --- a/tests/assets/blocks/block-56.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "82937ec90a94ff88d71ccb8025b449011f777b464fc415e0bbdf5bf1caacc33a", - "header": { - "parent_hash": "850b062e3e992692f651e5960bea4a617a48b261a610c6994abc02f138b0f5be", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "434035461ce05483e1d7a5b7ffbfabe2451d3ee0a1b28edf43c79acf6150d3ae", - "era_end": null, - "timestamp": "2024-02-28T16:27:37.856Z", - "era_id": 6, - "height": 56, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "015d6a5f7170ed59ee3b6b4adc20ecc823a31b6764575541f6d2e8ec397d2f1c57f33d3b6debde433c5d6e42cba75975a6156790d14bb6c7f67c71235fa25d980f" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01e707927a002ad21a3a070bee6a9432ba5fbe57e62e8b7f25287a752ac9774fd9af891d09b8bdcd43e975ad6e8e465183b21f29678e589ecd3aa1ba5e4bf61901" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01f55ec8e80e9bb6815640666c37c221b8d400fa964fc0e6b960ab8054b8e720841d464bb5744c793516f46e7bfb4db83dc3b129de9cd00db6206506a2b8d38c02" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01b59f51945e1ba53ce67beff2af4f5b29ccb085af53cd8b7c5a44094e31226e67254654543d22f033d3ceb76b221806be925b1c00bd075853a1096528e236cc09" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01ce99279dbc5a955346263614cb18b60291ddad054b042fc51a5953a1c7c300ae6302874ec23dc0381a8693350f23853405fad9335838c5de8140513bf5e25801" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-57.json b/tests/assets/blocks/block-57.json deleted file mode 100644 index 7df4ce1..0000000 --- a/tests/assets/blocks/block-57.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "8f23ffeda273fdbe86bbaf049e46c9ff7b508cb67bdc88562458818ea0215df0", - "header": { - "parent_hash": "82937ec90a94ff88d71ccb8025b449011f777b464fc415e0bbdf5bf1caacc33a", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": true, - "accumulated_seed": "78b80acb38ae8c076db08df0543baac01841b9b743a1dbe20f69ed86590d26eb", - "era_end": null, - "timestamp": "2024-02-28T16:27:41.952Z", - "era_id": 6, - "height": 57, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "010556d71068651dfda3166ded38d508379061969eed2908636e683d7474d98e94499c254b5f7c4c5bb593c68b171d9e792c6443182c5c1e03dac1765dc3df300d" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01ca92cda4f938923dc06b6d23f6f084de23bd0b17c12585d7b23eaf7e49914651f9ad69ecbee82adcf9ae5c09940250eafe938c642d0629eb79a9b15784053507" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01486b8051933f119cdf1494b39397349a849f5f1bbfd28a7dd8c523c2a53e42a46125effd65a50725fc3ed33b5e22ccd95e0665252738cf7ce78178a23f670601" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "017d18da59cfe8a8a056ea398c1f7be470d48b5db06686157d3b729a28504e99a57a1f6d9634225a2ca98429fd375fb0aaaeef8e84b683f3b07f08091af8ec6f07" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "019ceb641d6d3d0f3247ffbbacb5bd8e345ec08fd84642c0dd58fdc11f467f4bf7e97a93451addf5926a01f032774d82148146733576dd64e3305e0a0efb474c05" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-58.json b/tests/assets/blocks/block-58.json deleted file mode 100644 index 9f290b7..0000000 --- a/tests/assets/blocks/block-58.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "946c90d627419dbaa34c88dfd02291d8dbd461ea16f9d8b2c70cc4ef5ddd60de", - "header": { - "parent_hash": "8f23ffeda273fdbe86bbaf049e46c9ff7b508cb67bdc88562458818ea0215df0", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": false, - "accumulated_seed": "fbafb0068173ac66fde1b8c93b4783ca71beffc0843afde265681955f523884e", - "era_end": null, - "timestamp": "2024-02-28T16:27:46.048Z", - "era_id": 6, - "height": 58, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "019ee2ab50a724cbe349f4f499f33633cb305fe3b696b232fbe79007dd9f66abd4292ea3830e49209132c0f55dba4411cd6492a1dbf48e438722aa2c7b1e97f708" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01a7d42b7602c42c59bad6974bbfedd611c7bfca2b0ee04cb52d33dc1808b8ecab16317d00009547d30adb656e1db32b1c7ec156c1c7de8caff922951b61dbda02" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01ff66f26b95f6414a544a6f65f39f51a1a57a4b4bab8f75f5bc96c37d5f3e6678a5943df21d1ad6740ead2fb2e82d254ff95ad4d2f0b835c3af52ca7846802f0e" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01daf6529f75f4de730304fcf561f63b28a16d21f151da6a98205ba384919a09c07fd0db9c061bec4e4dd5525bbf0ba6d6a40b003f9eb7e2bd19e99bcf7d61b401" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "011d1b17639f283e518a0aca60c017a9ded7950674ea288e77a699cb7f049f37be8f0050d92e71bf04f3c4825ef4346c6ab7cb760b75570bafb8f7d887bbd40e06" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-59.json b/tests/assets/blocks/block-59.json deleted file mode 100644 index cc8610c..0000000 --- a/tests/assets/blocks/block-59.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "4362b516594ab107c0f7ccd73eeca9b86bfccc534d3ce872c0d6ff143b90d178", - "header": { - "parent_hash": "946c90d627419dbaa34c88dfd02291d8dbd461ea16f9d8b2c70cc4ef5ddd60de", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": true, - "accumulated_seed": "4a146b73343432d53c5883ee14059dcff778c4530af9fec6444e074158327f9c", - "era_end": null, - "timestamp": "2024-02-28T16:27:50.144Z", - "era_id": 6, - "height": 59, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01bfd3d13b033734e87c3248e4ad44677120f2c285a3802b0886027db5500f00d23ab17da551c04c6c3cced12f23431381363be4daea56d83a1be7160c74fe3204" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01d30b83eead78efe683d39dad57edab77480b40afc8250067be238f66184a38107f0024bd0db5f2e1dfd2cfd96126df6414f6776f17bbb06e585aeb7cdc54c905" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0104f4ab037554f92fe619295d92430dc63ef3296ed0aae59850dfa71687cea57709eef2e3b8ab62f855aa27af1edd2ea17a9415e9285641868619c43ac1dfa80c" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "017987f6cc04538d137bcaa88b6150b39543907ec20011acbe569f54b8af02a015613f53ecc2d4bbb82e721c18a66677a7a8cd0a39037789481d822890f848d702" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0107cee2d58a4f62631e03b0abe2adc1c0fd959f29b263fe2b8fc8e82eec272d24731afe9e5543e3ea8a9b32a64e4df0b350582193915f6a0e23a0cf9f57ed2007" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-6.json b/tests/assets/blocks/block-6.json deleted file mode 100644 index 5be34a4..0000000 --- a/tests/assets/blocks/block-6.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "cfefad746587637c903e969f6308fbe68801c942da28081aa2a3a4f8dda452bb", - "header": { - "parent_hash": "7014c09e03c9b443e7433e9d773f4d95c8cc1e5bbca556596ff5fe4a12df0708", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "9072623c36725ef542dd4f7994682b51df63094961b26bd3e9f2101ebaab718e", - "era_end": null, - "timestamp": "2024-02-28T16:24:13.056Z", - "era_id": 1, - "height": 6, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01be490e0f615788f09a18561003a79b1f9ca819b84821c93cbfd0f26d91fb7bc8a5448f920f3b0a1e7a57df4ec7fbe16cd5acdf3558af54d87e3ef00574378b0c" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01c976fd8755e3d3c2cbb84d8fd61946bc058562c01f14127e1ca024cd89039844540ff667f98e38c3e28ca7de0d93e0f19bc0918b3396ce5fa145650a9ac7f10b" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0122d281b38301ea79715b0f7210c1b7c72e204408bda59ac942ce46e99c2dee6a14fdf71b150403874e818cbbaba173d5738685cc506804aee1ae828365af8407" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01acb0a67b367018da0e85d8ce9e2dea2759f3c65ec226b4add8970c296ec7ccf93b17315497b7073b02720d65585f933d64ea72864a3ea3ae50b9552d22d3e90d" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "016c4a5c2ef6e92d47eebb28043e2165980aeccb9d2d0ffbbf600d426c1ca3d4a7227c8ef579ddd1db8d14e3a3f564ea6b4e5bbf4698f0c8e05f87fa3edc92f20c" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-60.json b/tests/assets/blocks/block-60.json deleted file mode 100644 index 98e1e21..0000000 --- a/tests/assets/blocks/block-60.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "8a9a9eddbdc6cc5085e6775b0ce4fffcb404d95869035c07e4a7b144e521a2b2", - "header": { - "parent_hash": "4362b516594ab107c0f7ccd73eeca9b86bfccc534d3ce872c0d6ff143b90d178", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": true, - "accumulated_seed": "a1165a9e27133e0672fcc5f756cab65575b0e65a16e7eb248abcc6f97025503d", - "era_end": null, - "timestamp": "2024-02-28T16:27:54.240Z", - "era_id": 6, - "height": 60, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01e5f724d83c7e71bfdf107c48d366e04372453600383cb0ddadff1aca6b51fc26a0f1c3ae6213ab8f4b523287137b7b83f6a6e43fbb2bc77dfe1b6ba1b1a7cc0a" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "012ecbc3917c603980933ea33b1319cc25592de0f6b7fe285dbd6871dd7cefd9babd5efb4befc4c493a9183f82471c6f5e8ab52d871feb09aa1abb484005a98f02" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01039294120fff0750a2ad0575ab6d313fcbfbe6d031ec565fd48c1b0c745d86ab6a6ede32c248afab20463439e80c32ea0202fffb598b9ee40fd52ad91e36510e" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01b4eeb3d0e959ed76d6be2ee4a10ba4c1e879b4c3b1a15780341b1667e719b129b4951574d280ba27e180a25c28f105d5a2862d739461424aca54868471b40500" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01007c2577c3f94eaad0a1541defa2bbac09448c56961e344b960c342008c2354698aa05517d01b9d6bb891326c2e5d3c8a0795ce32196e6be5a52ca24d289ae06" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-61.json b/tests/assets/blocks/block-61.json deleted file mode 100644 index 933282a..0000000 --- a/tests/assets/blocks/block-61.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "905fd9009eb37bb0d8560a814b184fe93825d37fe81c861cac59f582ff7a4399", - "header": { - "parent_hash": "8a9a9eddbdc6cc5085e6775b0ce4fffcb404d95869035c07e4a7b144e521a2b2", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": true, - "accumulated_seed": "200487131bc1e1b5f1edc2c75c6f7e1e3bfd3955e5797c3b6599e9c3447b5adb", - "era_end": null, - "timestamp": "2024-02-28T16:27:58.336Z", - "era_id": 6, - "height": 61, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01def8ea88375773f26ecf04d7be8355d614a5a0b38648ccac741c0e09a0a0284af58ba2b7f771bdb605c98d337d971b5435a9e2da527632ab8cee9715b1e59e08" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0153e52c404bff7816084f5a6e460f6721fa604f502d2864302dc1f6297388c058979fe715cf9e0c279d41c31a2e2ae395ec53b3fab9bbb4f6f2a46ed1496b4b06" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "012c40568c0c88bdd5ab9cc9b445c0b5405a18924e20b0be1447c5ea93574505ef762cba84b3900cef2f6653e6aa6d410fd017a17c6fe0e0a0d713a33b99ccbd00" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01bb4d00c826b8352375e68e97dd648309b3f22ce0630b28a4408d5b21b86a89d573a2dab07d8d1e87bf1b47ca43c67e7a97b8b87cb13af692cbd4a3e2120bbe01" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "018276a3e934e4dcd855e32e37e03c527dae754eb5ba88216b8a0ab1dad98bf7d7cbcdcc52dc0f4c6d80352101102576186a9ea51d7acd4c35efc5a83d3ed0f008" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-62.json b/tests/assets/blocks/block-62.json deleted file mode 100644 index 222b999..0000000 --- a/tests/assets/blocks/block-62.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "475721ee865666f5040e4b5d00017616446ce79234033260926aee4a019e54a3", - "header": { - "parent_hash": "905fd9009eb37bb0d8560a814b184fe93825d37fe81c861cac59f582ff7a4399", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "7238390679ca0af4178bf9fa9e0a571820d021b4d6b146673e4f9122c11cd777", - "era_end": null, - "timestamp": "2024-02-28T16:28:02.432Z", - "era_id": 6, - "height": 62, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "011db73ec549df2ffd8bffa313f78be3a46f9e9ae4f930f9cf070f9c2b9cfb535d820b31f52c0c1850ad717baa9edf11a1b95806447e10b064f64ce14eee96200d" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0116fc3f1a702ff0053ed58a58c5e4ed4c0bbfc72feb1a45ead8c1514a35dab52d46c8e02275b51a1eda16b1fa55033da2ce7cecc36457245146be6643671a570e" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01dcbcffd10fe6deead638d08eaef0f4fac661e4ad3e2c0f4df126174eabd3090a9e2f6d89e2cd13d20cd6f727f373beb568c904d631fac48afbbb380fc6fcd90c" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01ac94d60abda93b374fa46d58ee8b4206c1ebdd1cc89316881542eda1ef96d715bc98f63046739f42ee5601439af60e93a4884257e8d8d76508b8168d3e5a8e0b" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01f103616c0c39b27397dc19a58f5e435a370569927736cbe0f388c1d440fa096fbcaf5be939dcfb39a1aed9011baf347b8fdc7e644445f15ff9720944aa2d3900" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-63.json b/tests/assets/blocks/block-63.json deleted file mode 100644 index 203ac42..0000000 --- a/tests/assets/blocks/block-63.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "38a210464bb5dcedc4cd92d707006a1a7082294216ab22662b5bc5c01cc828cb", - "header": { - "parent_hash": "475721ee865666f5040e4b5d00017616446ce79234033260926aee4a019e54a3", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "7f03ae0197d80d2e3a33a085be060a4786188752b2e3e215edfbb1342ccecf7b", - "era_end": null, - "timestamp": "2024-02-28T16:28:06.528Z", - "era_id": 6, - "height": 63, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "012974702b0781129fb8a48e351adafb65f3fe9554532f89ebbe5ec1e81d7d5693cf57ef0b6fe81a612f5e3ae3de42be0c1811357beb0b2946c480501ab9332109" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01713f9745dc04df0077b33b67e5ee2e79b08a97da61392c51a06866c18f8987dbe2a93c69e9077adf4cde099cb29bd8b405401f229a5d8e7195aab11cda40af05" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01d6586c5f7395f98945041816b75090563b09821e817519f9008911a0cd0577df3d6bf0e4798c01ff61b823b5b0e40e6d9d7fe9886ce1dc46cd53f3e947dfcc09" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0122cbc444d7d42d66d0b0833f4ba70d632bc6b31abf56561e8a9efcf5703f01f781b19139472bc59d1365ff64a1f52fa3b3419b1c91ba7a2e06746f185af1a006" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01c76676487d8cc0eac6d22091459d8406b2cce59847446aa46f7b45d9f841791837a1de33a466dfe3bd42b1db76f9ff627c468fea6f24273192ebecbc8355150a" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-64.json b/tests/assets/blocks/block-64.json deleted file mode 100644 index 033258d..0000000 --- a/tests/assets/blocks/block-64.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "b7c5f992c40b2003daa67eb9076d08fcc23137f6b9f8aeea39023a70d9518af4", - "header": { - "parent_hash": "38a210464bb5dcedc4cd92d707006a1a7082294216ab22662b5bc5c01cc828cb", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "e11d87f479cd8bad2a5ff7e0a1038fdb16ab01f8de9a319be81f578c25c8646b", - "era_end": null, - "timestamp": "2024-02-28T16:28:10.624Z", - "era_id": 6, - "height": 64, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0136b1c2cb39c6ac879b2bdb2f03a28196cad01b46681728ddc450a9d883f095a23d40d2f9dc08c6753e8ed7ad40485ba0f1d51080f89939e767c5e7184860e107" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01ef64e87eba696d13fa4c5c7e603c6436dc5e4e84fe3256b6a46a0ada3f1718674a54df765d674cd898e5618d4d4023ecc32536495410142123f37a08d0b61a0f" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01d5cbe7a1347d4c8bdcb968c5f9cf42e7e7e4af91f4fce01b20e94205693d0fac33d2902d00e95085f11fdd21ba14af96a4a92fd48b69788731d29dcd7cceb80a" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01c1ea5a559bed74ce788ee8e21913c966ad86190e82d70f94cc51153d30ee59a16106a74d572777a6ba2903400f0e721093bf13dc9471490d32448c37c6b63307" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01321bc5904963ccabfd4ea3d246dd06ccf0d26109e2d0d3ae8ebe08185621896a1521cd52c4ed14b3184b65d238f78e8d6dfa1b185a642012f13efff708293801" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-65.json b/tests/assets/blocks/block-65.json deleted file mode 100644 index 989282e..0000000 --- a/tests/assets/blocks/block-65.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "000e2ebb096ce951842fdaa1b9fecee0ce35066254d03eac2e1939c5d7d9ff7c", - "header": { - "parent_hash": "b7c5f992c40b2003daa67eb9076d08fcc23137f6b9f8aeea39023a70d9518af4", - "state_root_hash": "1ba0d5ca31850918059b52e2f8a38a669fec1ff073b4fd108dddc3a881262d5d", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "e97b7f795447a357273e70f279089c94ef2fc19d7c388a7ab792ec5758381e51", - "era_end": null, - "timestamp": "2024-02-28T16:28:14.720Z", - "era_id": 6, - "height": 65, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01a67b7d71c3556ec14a45374f6b0b5d8731a67dcc0b8b7d993a2e70c44a8a3c0e867bfb2e399926db952021f9be65d28f1faa669d0ae07af15b5711f1cf980604" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01febad294517f0a4aa2bd210ca59f5f1dcd2767bdfa5efb3a0112184f869cabfc336d31c2f4df86103cbeaf25e282003ae1d9e5e94692d287416cb3f679f6140b" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0190e740cc9338d194dbf00d993f65df66bf927ffefe3c2d4329db4e5113b781165c6f22006153bab6d66b0925423a945af752c69837d98308649f4ebd593a080f" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "012c4a67c836199347670ce6d1abe62902fd743e014dd27a1c24ec40b7895cfa32f0c67b0f97d65d8a85b866461bb233d4c2a1be4943e0f66099abbea107cce30a" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0152c4012549eb24b7b83067da4ef83897ce87165040e71a2517419deec4e7379f7095298a852a0ca0565dea7aed5878d11a687c6d0a6654a9f212bc47d3188508" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-66.json b/tests/assets/blocks/block-66.json deleted file mode 100644 index 6c6e789..0000000 --- a/tests/assets/blocks/block-66.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "hash": "046fbb33306955cbc85f4b6b04400408f996a3ceb17c2ad57bd31df9e7b2e31c", - "header": { - "parent_hash": "000e2ebb096ce951842fdaa1b9fecee0ce35066254d03eac2e1939c5d7d9ff7c", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "ba50e4b3716d25bfe11576448da43a88a008dc3fa6ff83e50d158ebc4a32142a", - "era_end": { - "era_report": { - "equivocators": [], - "rewards": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "amount": 1999999999990 - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "amount": 1999999999990 - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "amount": 2000000000000 - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "amount": 2000000000000 - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "amount": 2000000000000 - } - ], - "inactive_validators": [] - }, - "next_era_validator_weights": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "weight": "2049999999999750007" - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "weight": "2049999999999750009" - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "weight": "2050000000000000016" - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "weight": "2050000000000000020" - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "weight": "2050000000000000018" - } - ] - }, - "timestamp": "2024-02-28T16:28:18.816Z", - "era_id": 6, - "height": 66, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01ec4dcff627cccb9d1f2e3a775ef614af83c58ded6fd04505155e58af6814e6931b18229008d496f763f76c8ee018fa44e46cd46895848b5ca117aa943fbb770e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0164ecb50af5569931398cf00da584bf6e6c8e079d691057718f49504a2eb774d9b2896bd9853ef48e4bb37672d7cfa519c82c94d0b63fc9db397ab8880a806c07" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01646b5f35ece172e03365b21cef32796ff78a771bef0ede2a4ca9f58fdd6e56e400c8939d1ce985b14c6edc55a2b38a7972097e23190dcb57f689ede8269bbc09" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01ec3f4311b5509752c6aa0eea2179f86c5dc5961f5e5c4ef2791bfd48f99baa2554735f669c9cf48b1724caa64a0b3f77ad184ee1483e48cd926e9b1c84016e02" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0116833f0f5c7df35d6fadfa97b8968e59d6ea7ddf838c51b5a15c5c57223e2c2a9127ecf0fe26f6a0c45aaf3b042398236bef285c5165a47b44ff75aead6c0404" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-67.json b/tests/assets/blocks/block-67.json deleted file mode 100644 index 7ab735a..0000000 --- a/tests/assets/blocks/block-67.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "f2423a9d550c84954a3b6c948755b0a93272e79e650534c70650b984979bc56d", - "header": { - "parent_hash": "046fbb33306955cbc85f4b6b04400408f996a3ceb17c2ad57bd31df9e7b2e31c", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "23817ee24c0354c971595c9bea0732716fd0ce82e73036b68028521c422bbbaa", - "era_end": null, - "timestamp": "2024-02-28T16:28:22.912Z", - "era_id": 7, - "height": 67, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "011156fe58678febb2d375931e9204ba49a8a1a70635e165918d876e3a8760d073b53b1c69fc055e2aa531863def00f19f02dff4fbb5e39e97ac852fbce7259b0d" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01d6262afa31ad86300c209d0a960a09db5fa80f4974ac8c85fef06cf3bb836448e5a0f7648413e301345afadfd3bc6018b932b6f6b717f2f4e190a5e7ba8d3908" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0197d9b517f6b64627d24a6f4b06d54c3db7ca261d5280a0fd899d4649c71b31ed64497707a7d5dc209690f8f2761d8875595f759b09f430969971cee3ee37dc08" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01c5ccf08a849d5c318e10745338dd6cee2e73716e1a87329c78b9abbe1d878dcb1875548860f0be9cc378db204ee32b4fa43efc58b15b143163f038290a5f9903" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01fbd4badad07ecdc886b74ab62d32909d8666dbda95ab52d813ac951032a00273129aa5bd303bef20ba0348a87ab81d87380b5d33e71dd60c00e9b43272847f0f" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-68.json b/tests/assets/blocks/block-68.json deleted file mode 100644 index 84eaf7a..0000000 --- a/tests/assets/blocks/block-68.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "730f1fa9c5c54efcc21d072bb7756c41008681497e78e9a3ee74af9dee24d406", - "header": { - "parent_hash": "f2423a9d550c84954a3b6c948755b0a93272e79e650534c70650b984979bc56d", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": false, - "accumulated_seed": "a982ff97b71d995374a89dae191dcad9464e15cbbed7e9ce970760443e8c1986", - "era_end": null, - "timestamp": "2024-02-28T16:28:27.008Z", - "era_id": 7, - "height": 68, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01b8ac806aef7f8e30ffb2727d5bd609a057c5d8fa67af7b6be8ce6b0fbb1894abae7c9a10167bbf9654ccf89b5509fea8f9ff41387bd6663fe760ac6f7476b10d" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0129b66bfc881abeb8863b254fbd6cac446e0386ca576f3b22794f0602d620bda6c53ffa8a8ec4ad8754d2a4022f2addaae91fbe0476ebd8dda0297c970fe43f03" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01e91dfde6d37e25445e142faeb6aed13ddf8d58032062940b4061ccb19d9c95652b6723fadc85bcd92e7801acd5601aaa89650e1d5ea465ca06ab7cdce188b30e" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01191d16a0a604c24d8817cd140d0ea175cb717e17ff16e6534a7115faa8a9d270f59c6e524b899a700c8ed5248f2745463ece9afe5135024e79c4e5af9cbce304" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "016880bb654b886667a197768444b6481e400f5102b23c8922c35fc3fe79dd05dc6eb430a8e115dec98b719b43825373d07259d36a5ac07ac5a7ed144fc64b5b06" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-69.json b/tests/assets/blocks/block-69.json deleted file mode 100644 index 8727d1f..0000000 --- a/tests/assets/blocks/block-69.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "f9b6f46faef58b2b45103a7bee3029752e84c580eac059e7f2eb44506134d877", - "header": { - "parent_hash": "730f1fa9c5c54efcc21d072bb7756c41008681497e78e9a3ee74af9dee24d406", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": false, - "accumulated_seed": "7f54b4f3c783fd31a0e4ef185d79d3ff94e00253accbb6b35d758a047a7d5b83", - "era_end": null, - "timestamp": "2024-02-28T16:28:31.104Z", - "era_id": 7, - "height": 69, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01920565479b08b712f239b564789fee312802d6180b246c21144c0f449539f2fd1b2200709a4de356d4ccda5dce7515820565a34d04e8c0ecfda7bfd64da92b09" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01b76eb3c724c3dc7d6e3734723c38681fc930a5f8d052611141a34fbb697816ed8d076e9797aef4e5dc5fd358bff01e191b735a5727bae60263c263d9ae869f04" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01c8d264b3eab277e20fc851696ba85fcf6b632af5ff6f043a979ab01e7626cb328a204ff7af275212824936834b97b9ce9e16885aabe0758ee584f03020ddea0f" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01d58b3d4f65f0a9ac4faab2107380c83ade27a3f2b240e829820eaf8bac85cb4384970379ff842de678f396d1eeacf25228b9f47ad4e7091a044b8879fd2d3905" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01b2113a7e3bc6aaae50b58ac493fc68e68e12c4804731a594800d61628fcaff9dbd80dd84bc4cdbed54bb9151ea25f414cd277c9f51793c40e9563f28517a9e01" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-7.json b/tests/assets/blocks/block-7.json deleted file mode 100644 index c73d93e..0000000 --- a/tests/assets/blocks/block-7.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "43064b1578b29a6a2ef328c0f620a7c7cde3d73b541c3bef17508056a3f58245", - "header": { - "parent_hash": "cfefad746587637c903e969f6308fbe68801c942da28081aa2a3a4f8dda452bb", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": false, - "accumulated_seed": "53844af59aed78e4d3ee6a4d5d38fdcbf4abd9a9e5c0b78cdb7ca518f3e01c62", - "era_end": null, - "timestamp": "2024-02-28T16:24:17.152Z", - "era_id": 1, - "height": 7, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01718a5e797a9dc3256f9736fd97958ff249be755032cf16319192ded71a92248edcf3af9d2a7e6304eb1103d411fb9b02e81c35fa80d966f58a0d0962abfb5d0d" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "010e17f2c8faf984d0b13ba38a6fa0c4f354845ade9f1aba270a3fd5b02655dd35d6f231c7eef086f7313aeeeaa387d6695473d9295a96b3527f2844f6ec5ad003" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01c4ced05f23ce85bed83ac27c188afd196150b8116c26ceede59533ec6d5ac92484c66265c7761120aeceb4ac42bc3d49db718f27ddb7ecad56b6d7d9d6b34103" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0167e46d25901b61d1fa61bd8f91bf09eeb854bb4ecdf99f66c264da3c5b23f5a58cf9b41fc2c9d10effb5783f2b208a758a9f559006bcf9daead0af7a528bd108" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01bb4de9c9f752fa90b77f4d66c5da00599ba93913a494455b7eda98113c266bcb56e356ef5fd8b45fca902c63209ab5d2b6c8b729172875bdff697f3e8d0f9b02" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-70.json b/tests/assets/blocks/block-70.json deleted file mode 100644 index d46ccb0..0000000 --- a/tests/assets/blocks/block-70.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "54c1435e415d3fa00c8764dc54513d7cec63a400b6d849e7debe39a9d1f2a790", - "header": { - "parent_hash": "f9b6f46faef58b2b45103a7bee3029752e84c580eac059e7f2eb44506134d877", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "2ba30bfa2d3e7f41de56cdd944f95696913acdd4074ec022c1838257344ca080", - "era_end": null, - "timestamp": "2024-02-28T16:28:35.200Z", - "era_id": 7, - "height": 70, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01f39da0a4cc571eee37e3b74adcaf90d24d84a816c92b176dcf81f39a952dc284b4f73db32a4e336853a05fb7a8faf1392e02265ef779674b521b03f46a8bc006" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01f69829f9441ff21ca30e66ef6d42ba4116937bbb1042ce4161e655128d3cb073bd79313ba4bce73fea4b77b4492773f1c923c00d1a6baca739a839620dfecf03" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "016a4f518425d4239b3a304e0e8f19907f52c4627c2efbe0ee691ba3442692f3386f396e5c0480e8c3465ba5defd50628dcf5e3c1d231a752d0656a7becc52840b" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01782cfa45fc6c533f180d579e7cfccbe972ac67fb55675d70438560a3a2a11d705b4738422253c07c4ff9aa511be89808f65995f32d8037e848c54765f0b1d907" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "015576da222a4f7dd2369eadd104492e83c934e9f68787ec865f1ae07adce3b11aa85b2f7207ed95b8a96e1d96ff31d7093effc51795cb4679e5c466310e07f307" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-71.json b/tests/assets/blocks/block-71.json deleted file mode 100644 index 3132eac..0000000 --- a/tests/assets/blocks/block-71.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "7b4e29de6736705bd80f848d8fe0083f8761ae2105159f73e7df1ad3f111e110", - "header": { - "parent_hash": "54c1435e415d3fa00c8764dc54513d7cec63a400b6d849e7debe39a9d1f2a790", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": true, - "accumulated_seed": "8d5c0a4410a76e86625f090cfe43e22e5eecc6f657986e934c75fdfa80f8f13a", - "era_end": null, - "timestamp": "2024-02-28T16:28:39.296Z", - "era_id": 7, - "height": 71, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01b04be92dda7ab8f4a61c77e2c4681ba59c8485d63351dac45299990bfd8cc72d6b92e3f94d30f48932e7005d4dc9a351d7be17403f2cf0c920b05cc9bdfbd00f" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "013750424fa16177ca0e46a53e87fa60afa935b8e214caaa4a5b6dffeb0194996c5b1505ab5cb7771fe24f25643692985ba0c57767d77f8ffca225d8a1f1b5ad03" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01b8bfaca078b37351d0cc57b189e5168c255743ed5b249ee0f9dd06cdd39111322052347a59d9804f79ed0c7687c7b69497b863e0a2b1dc3396dab99bfa131f0a" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01b8d232fd194b9279547b7a4fc8be461a088e2c4e6db6854dcd2ca96348da6662bb8bc17afb6507198ba0637b0d4e4863eaba88a6145b89cf71d3ead39cafa007" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01f0d076a48b53d604338936c3f079e9c9b79e44b0b820d7b3bc137855a24e346c6d8c680f4510fbe2de6c322609ab22e52b8ecba40e3ac0cce25594e8f73d3703" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-72.json b/tests/assets/blocks/block-72.json deleted file mode 100644 index d46b5f2..0000000 --- a/tests/assets/blocks/block-72.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "3ec8b30b2755084a53e86ed9b7c664944656bc7e8b385102480ddb870d615172", - "header": { - "parent_hash": "7b4e29de6736705bd80f848d8fe0083f8761ae2105159f73e7df1ad3f111e110", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": true, - "accumulated_seed": "f7493e3705ed0d576012fafd8c1cca0eb9d08f9552c6579f4e862dc653d3ae81", - "era_end": null, - "timestamp": "2024-02-28T16:28:43.392Z", - "era_id": 7, - "height": 72, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "014cddece815cec66eb4b29b786cac2556ff7b0b901fb129fac1e4e7cebd134bf3e9f555a0d7424526042b55a5a4ddb4fafb5ac8d02b50cd9af994bc61a2f59105" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "012fde12495382e63062ca553168e6d3d4b92711003a01bd6ca6a100e7d42c71291c3e62ed4f1557aae55b879acd8cae6bc8ef26e292d0a4db3324ffafd3216e02" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01a690565ccf59ae5be8d9cace5b0388a3170678e55a1e7970201729b3fd14aa8da79718e990f93d221344b86ebe2fd912879a23042d1dcbfb2e9eb3e682a6cf0e" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0178e596bf26a7ef05ee6535cd2f1d044fb4980c497a3654f1a72d6eb05a83981f6cf193b02858c71c5da1f58196c6d9b4313dc9c8561cf6fa6771da97c38e6f02" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01cb56043d3112ba30eb3dc0dbfc49f2c29f2be2ec96aa87dca3ca61303d677c494f86abf98a05ba53e81ff59fd13700cccfbfc510c1d8a9602f0f7e2e128f0f06" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-73.json b/tests/assets/blocks/block-73.json deleted file mode 100644 index 3e3e7ad..0000000 --- a/tests/assets/blocks/block-73.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "91a07b168598ed81e1330376d1311602b6cf683c714548b39d8575583ca3483d", - "header": { - "parent_hash": "3ec8b30b2755084a53e86ed9b7c664944656bc7e8b385102480ddb870d615172", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "472783070544c71ab73b2f05d437c9ca932ed25bd85e9e61b264ac6a57cb0ecb", - "era_end": null, - "timestamp": "2024-02-28T16:28:47.488Z", - "era_id": 7, - "height": 73, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "016894437124f2897e878d7ddf3ed884493bdb693522b5af23c901ad2686b7f3ac59077a82b4eff186cbf9f665a541aca448adfd67cdd14cca99d2f298603e2d00" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "011a0e877f1489b94006bd86ff07a9a2f9ebe76d587e6d81e350dbaeb0d56a416793840a451469bf7770baddad3ff745859d083da55bb3a8994951225fcf44a901" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0175b9756a908381db3c56c82b7abb41c64d5e5b270ac410a25d72ef337246c8654ee002993a9ddafc46a59dc2b0294672c8580d89c21b0f8aa86e9a5a191b5a0e" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "010969f9017781188fbf65f00e00b39c61f77b66847f2a3891b9d36c94a2429650d1d5d8d7e71b4b5e149bea6c3ccfd244900aadf33877a8b27de59300d6a75509" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01309bc12e5230c7d2594a51954d7aa7746d8b7413e610d0c02fd341146f7cdd05e84c0d4032c093d7e73740e2e577f6d8de107f368905060a4fd70d6a2db8970a" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-74.json b/tests/assets/blocks/block-74.json deleted file mode 100644 index c524392..0000000 --- a/tests/assets/blocks/block-74.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "f759ba96f9a3d72750d90a7079e15ab21b3331584989e1960d8e87f119fa0807", - "header": { - "parent_hash": "91a07b168598ed81e1330376d1311602b6cf683c714548b39d8575583ca3483d", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "b862a399fcb8d5ca321738011e531fbdc5de7d36a4c5d84cca0c66356cc3eb45", - "era_end": null, - "timestamp": "2024-02-28T16:28:51.584Z", - "era_id": 7, - "height": 74, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0119b49cd514c667361303a34458140fcd67803ec474b33b097859ce758c2b070ad7ac878effc76a585f50d8c53edb21d7571fc91a0254cb5f5a712e485e29770e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01ae5fbe8110158bda7e718d99dd5059c9b532dca8f365cb1093a5481dd006b16fc9a6434a1f7e16d83256d467ec2b05bb2bc94e0f9525836574beb4420c97b000" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "018732f67195ea168ae3c133ba3430fe632de1c06ff7eeb62c02c29d1ca2eacc94cc5a8634ab53d36e51f4327386a7b696fa3c29f463e99b5888671576bfb0d80f" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01c2424b122e41ca9f189fbd0c096e653f62dd7b450c47ff0537b75a600c4f1ce8af9ee53357faa36bbcf68ff035d6b195c01436064976f75d8df43c477aa62806" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "010daffa559032de7b643ce750554e1b9088899f00591890daa9bd6e36880476b25dced52c64c81315e4792593379950c17a39974626c2b59217d7ebdfbf61f40a" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-75.json b/tests/assets/blocks/block-75.json deleted file mode 100644 index 2f16cf7..0000000 --- a/tests/assets/blocks/block-75.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "807d1f0d27d2856b4490b9749675a2a7c2d03e6627dfc5e515520a35cfb20569", - "header": { - "parent_hash": "f759ba96f9a3d72750d90a7079e15ab21b3331584989e1960d8e87f119fa0807", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "dc41715a4558783271ede6af434c92103a5300e47ec7488d74b0006dcfba5ffb", - "era_end": null, - "timestamp": "2024-02-28T16:28:55.680Z", - "era_id": 7, - "height": 75, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0162aa9fc77fd92e8a877341a6531c779b8c36734a07143eb99594b086aab00510f3ba7614b808d23dffd02ed0a039ea6c261d07678adef3705aa2a952137a1b0e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0168f53e0c8a794f3b90e0debd0e8c58fa89b00024ca0af684a509b63bd599d45a14ae8e0fb8b417be8710843459f87a0642ac746c31094c6ca4fa4feb391d8202" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01342454ad46c6f84832a4862a6d2b91bf4bf21b8ac24b19239415d285aed35dbcb7b0189f8946008cfe03cabe6291a8d2ebc3e659560e82d9d1d2ecfb3a3eab0a" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01ad456a172853186137dfb5fdb936da7455d15d59f3c89a7cf8b3290d056275faff6ee20fc276f43b676cf780f677d7ef04e32ef31e22acbb1f6b554c6ca51101" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "014ce2f0b0b7937f7bf43a430f5a80195de4e43201dd4408d438cb2dcf7df76cf1818d778310c0fd8f918ab2d7d585b9c7443e4085d4ed654198b40441665cde0f" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-76.json b/tests/assets/blocks/block-76.json deleted file mode 100644 index 5de9241..0000000 --- a/tests/assets/blocks/block-76.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "44faa72252c865f5a98c02c2e2e7b4bac929137ea9f8e8a3ae2e5b98deb4ce00", - "header": { - "parent_hash": "807d1f0d27d2856b4490b9749675a2a7c2d03e6627dfc5e515520a35cfb20569", - "state_root_hash": "dfbd0c4f55a7af2475ee5302dd017418f28cb67e0782e576bda1f1d15d573491", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": true, - "accumulated_seed": "db4896a161a8ec16f7e9edca38899d96483e1b43dcbd108918c1ca70235d304e", - "era_end": null, - "timestamp": "2024-02-28T16:28:59.776Z", - "era_id": 7, - "height": 76, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "013e4f7df791e0a63b34bd311237900bd28b656dabd857b4581f9b6de763fc50e3b916210a7133a46ddc82a4908eb3522deaca35f3c43929071a6c14cafcbf9e06" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01f125b750fff3b29265a3ffd6bc4ac4f0b583a059ccaee1b01573cdc30ddeef6f888f0a997dfddd9c85c153936a5837cf5b08062577acbee851a873c30a4ddf0c" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "010c01d7fce0808fe8848cd747b14c48e99bb9ae4631cce64c340d6613d32420c6b5e7a777bd60e60a987ccb47be12751be68cb394f2da5422425cc684ab0f7d02" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01df20fa64e9834ebb129cd81b2eb945bd18d28c12e59a1da9abb4b68ed7382b81dad9633051b64e80e6327728c19e0eb1f39cd9def96267199436f19648923e01" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01a94afec70e104fdd09a91dccd70ffd4eff8647d3c5c7aede56f1207bf1c7f89b020554c904c0f5937a79cf0fda3019ce176c4a8ceff84255fc0502020493e40c" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-77.json b/tests/assets/blocks/block-77.json deleted file mode 100644 index ef9dbd2..0000000 --- a/tests/assets/blocks/block-77.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "hash": "9c7c016eb70510995589574ef0ad45820e5292b559a0764de6ffbb8177051ffc", - "header": { - "parent_hash": "44faa72252c865f5a98c02c2e2e7b4bac929137ea9f8e8a3ae2e5b98deb4ce00", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "8ab67401e82c2ba79e285ee38970f2dd8fcc4842ba2a67230860acd933daa994", - "era_end": { - "era_report": { - "equivocators": [], - "rewards": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "amount": 1999999999990 - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "amount": 1999999999990 - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "amount": 2000000000000 - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "amount": 2000000000000 - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "amount": 2000000000000 - } - ], - "inactive_validators": [] - }, - "next_era_validator_weights": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "weight": "2059999999999700008" - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "weight": "2059999999999700010" - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "weight": "2060000000000000018" - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "weight": "2060000000000000022" - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "weight": "2060000000000000020" - } - ] - }, - "timestamp": "2024-02-28T16:29:03.872Z", - "era_id": 7, - "height": 77, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "016114b6be078c6cc695716ca71df633b84d25f05a71894550ce934d3557c96ff1943974cb81d5fe6c4b62cc7de2bb03c2c8d55a1626562cee7a6f1aaad5a5d50c" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01fe885b8afb098ac2c86d24c1fc2cfd87b6594a166be4bce190760becbea4413ffb34beffec7dec54c2da2d6b98a61939019a5842dd2cc525cc89b71d48115e0c" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01bd480fe11ca56885822206f2450a26788e8dc247d33afe9fc75eed6ee4c0f31be8e17e7a944137d1ca2bab794dbfc487ada6e7824b72a90c95b830cef9f6b304" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "014ff67a0516180cefa8b022d34c5d995f59567b8e5fb8239d24ce2edfb66b42325a85016aa86372eea7ae879c47a35bf0832b99074cc5ea14ac9a9615d8ecaa01" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0177304c6fbba2be7411c545b71273d921f4b86b35e91db2b1b4e58dbbda1d8464d2d02a6c4ef3623a4402411bd1f4c1692e706a2fdfe49305feca37ce83655502" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-78.json b/tests/assets/blocks/block-78.json deleted file mode 100644 index f196139..0000000 --- a/tests/assets/blocks/block-78.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "dfe2678dd0c5e52dfa5eaac21cc3a3d75d2d01d554715171508b46eaffd83755", - "header": { - "parent_hash": "9c7c016eb70510995589574ef0ad45820e5292b559a0764de6ffbb8177051ffc", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "3a59e8388974fbd1a8c2ad66c7804f2382e2d1e6e87868c659b967b0bdc9b7c1", - "era_end": null, - "timestamp": "2024-02-28T16:29:07.968Z", - "era_id": 8, - "height": 78, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "015431f1575a1290442150d8755ef9f3a8687872c2fb8b022a361be251e18083c4622435aa838a682721103e9e98a0074a11d3dde9a45806fd8b207ef8f2887102" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01fa7312fbfe6aa07f8d35a300abeb605a1b59357361902389b7296cf4707053f2ade3f571ed2efd8e9d0ab84156f8edea9baed22fbde70a83540ce37d19ba3303" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "011587d608906a35945c7977f5ed5ec2ca5c1aaa16e628875743ec14b07d0038e50f1d28b91708d9fb057a7b8b7c69440e4007b5d6f3f4f36ae3fddfa40e6adf01" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "015eaae9720953a37eacf5a7ea249beca16891953ac73b7e18b2aefba6e723f31532c489c2c089576808575e4e0493c87cba68d9c120d0b50cc263acc551e7780e" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0193e00299b6a4ee326ff4054a5a07107ad849ea43d0bcc8fa7574084af6b6abd95936870cedf414b2bd00bc75bfb5b245fdb4b23b708f45c673a148647b29c70d" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-79.json b/tests/assets/blocks/block-79.json deleted file mode 100644 index ebd89bc..0000000 --- a/tests/assets/blocks/block-79.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "4a5ce7e556e9eb82df428fb8afbcbf57eedd5d796630ceb597971603b3461360", - "header": { - "parent_hash": "dfe2678dd0c5e52dfa5eaac21cc3a3d75d2d01d554715171508b46eaffd83755", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": false, - "accumulated_seed": "8e33e6a4a0c2b9c57e9f0d9341164ab1683df9807910c93caee428ac74e83d87", - "era_end": null, - "timestamp": "2024-02-28T16:29:12.064Z", - "era_id": 8, - "height": 79, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "014c5cb0ac63474934a7f478339493ac0e1cf98261ef50d81394227680cf5b9c9079b2ea5ad42563a07e75fbe50a21f218784b3315aff334da26b52828cf2df208" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01775811d438d8f7669d740ceac581fa923ec8fcb1bdac11f38132bad99e12547c2d513d4a2f9f0946f8c841fd47e8dc64ee4be5d703498e13fba23082b8112404" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0122a2093f3a159cd742fc5b3ee47bba578888600dcb63ec9f719e0db83d34a2ba3d596538fd7ef0970bf3bc230caf17d529a480e75cfef53218ed2f762b27990d" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "011be47a171fb7c8b785a60783567f67444626b2927eafead98e97e6501dc90e382a9e001f1a3ab566ee9c9a2d7a343ff8b23a23d7b9ad50b6eb9e4a63e633c90b" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "016a4f0618b58f331482e4a138589c4ba2eac4f7312f643a5cc107c89869b1d060cc92ad71dfde3a9339b5a61c2168fa83405927e07bf1c4b7cc67a570e714e402" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-8.json b/tests/assets/blocks/block-8.json deleted file mode 100644 index 10655eb..0000000 --- a/tests/assets/blocks/block-8.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "6024368105926f2bcf6763014e8d2e404e0ac9bfda12637d389691344bff4644", - "header": { - "parent_hash": "43064b1578b29a6a2ef328c0f620a7c7cde3d73b541c3bef17508056a3f58245", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": false, - "accumulated_seed": "81a2e70e0a399e645b3dc32230219eb9a56e76183d3d2b5f1487e567ca215826", - "era_end": null, - "timestamp": "2024-02-28T16:24:21.248Z", - "era_id": 1, - "height": 8, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01e556d97ff2eb10bfed31a2a3a8b91735a1f72d467e70b4b3ffbc0de94de49102f5165b3a1e8129d77c101ed27f2dbdbb6160d0e92cade72b48c1ed9eaf72ac04" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "015d9a219c37ada415b8a495fb421d5b39d3e616a1ad6abaef410a3454a90f65e1c7eab21f69bba4bd3e131bad906fbfd7e7958ae86de6cfd2116fe0c1adcaae0b" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01f811d5b57f1c0a0a8b0da511dca0f1d33815f10decbb3000c9dd22ac85d4d11abd69b8ee675ab34c7e0ce4a1be8db1c1e37540d285d567df01825739287f5504" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "016fc76e41f763605244c24baa8b07c293f2811d26cbe5d6ca2f6046f45ed0faee7990ef7e4434366cd6be796ccb2602a0265e3938097ac7de5cccc0847caf3a01" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "0158692d6829dcaa807295c5832f65f08ef58fcefcea808b994f9216eb4e102e50d5bcda4a23282f073167fa569bba9bdb768add480e6f3f4852eb8b798598020b" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-80.json b/tests/assets/blocks/block-80.json deleted file mode 100644 index fffc5f4..0000000 --- a/tests/assets/blocks/block-80.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "8ef2a1375a52ebd182c1e3e8611554e661551a04aa34fe4d0f42be40734e1141", - "header": { - "parent_hash": "4a5ce7e556e9eb82df428fb8afbcbf57eedd5d796630ceb597971603b3461360", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "95442339b2a51112d7c5e8c20c52171b8876dd3d3fc509ec36c20b94c394c9bf", - "era_end": null, - "timestamp": "2024-02-28T16:29:16.160Z", - "era_id": 8, - "height": 80, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01fa4e72ca58876737544b7cf52f5394e2698242f330f149bb0b966d41d80d9fa58e6d6698d7246edfdff539a3f90f3fd594c594e16a8245062dc66365ddc70b03" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01eb19c8c856fbc0a8b8ccbeb1a34a990ba449ca3de5c4e74ed3186b9d5f23fb949fa71082b304e5e4b1133ed6270ea7d3cad05b8710b8b74140f750d4f4f1760b" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "014db5d8479d02ced079791b6fad4d8047de2e03d676ca532b3cbdaaca3ad0029513a7003417a73b2b2972a7afdbf9200daca5452b10cfeaa05775be4dff5cce00" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0189702c2eee4e406ac3e12c1f9f5a604db0e5e406b700cc40cb8a53dcef4ab60520fd0dee04d83afb9767d5f862824002cca66fca6e8f6b821e789ca822d8ff0f" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01de4efd2d80861c53b8b531ce009e26a34985dd87b4f4c80cbe0751e5398aeb2c8ffea7c304da6b61fc7d828fd8e7364f40994691c2f122b916df6031dd83e50b" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-81.json b/tests/assets/blocks/block-81.json deleted file mode 100644 index 2c98f20..0000000 --- a/tests/assets/blocks/block-81.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "047c1dc7a365cce804c98285a2f5fa16913437d5b7fbdf4d0cbcc1901e22f265", - "header": { - "parent_hash": "8ef2a1375a52ebd182c1e3e8611554e661551a04aa34fe4d0f42be40734e1141", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "ca899f02bf95b9f573985c2111f51c02abe40f3b38b8035cfb5a0469ef5a66f0", - "era_end": null, - "timestamp": "2024-02-28T16:29:20.256Z", - "era_id": 8, - "height": 81, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "012ea2aa1669bf58bb94020e8a504350d6f5e7d51f0e0df56ad73b97070cc30a72fbb1b5175097ed88aeef11b472002cb5058ef6c443c3d29d906df71ec76dad0f" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "014b128c164aa3cea200e56de7b53276e7795edfedf0b9f59d15e5a35dba9c39cd914788222d6ccebfed1773e0e30f7338c08b7fa308c76bd8bfab9795ce54170e" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01438a2a15b02f9188865db0055a597811989e4fddc485d243c4ea362c03f139028203b04b9a2ca0df4677bf976f5fb51c810ef06410683c597c8e8c54d3a8180b" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0163e193e4c1b9fa053c94b78acd60b42440ccc756a5d1ba7c63bb318f99b2aa810c4d954bb8ebd30c43fa6192d77271015bfc32dbd8eae5cb86f9694eba55fb08" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01737784ffe33c5383628aa0a4efa108a8ae4840a41192c5e326035103b57ea88d96e1f2c146270b2d65913beaf2cc542457621cf56cc89b4bf96fff503fd5000c" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-82.json b/tests/assets/blocks/block-82.json deleted file mode 100644 index 17150f8..0000000 --- a/tests/assets/blocks/block-82.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "0f17afbd7d39ba12ff4a65736655bbdaed6b0714ea1a1275980aaae06bc62760", - "header": { - "parent_hash": "047c1dc7a365cce804c98285a2f5fa16913437d5b7fbdf4d0cbcc1901e22f265", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": true, - "accumulated_seed": "e19140d8a48240dbf014cd5e4284ebadc64c9453c5db5c5f518663f6f854110e", - "era_end": null, - "timestamp": "2024-02-28T16:29:24.352Z", - "era_id": 8, - "height": 82, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01b5993f0b17db07f03e2fc32ff3e392c453e60b6e771c34fc17fee75582772f7e333791831e136315a58f10f91774913548d812ab79755c8349e9d2a33d2b940a" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01549481f85c3fad61bbec2032548d77a4af4234a2065ae0e357d68a1f7629685e0e0141ffcdc4f97e9d9095a79b06aa9ce0aaf1e2d8134296a77712498ed36a04" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01f35481b7ba9bcdd1b0628d8c50e19941597827b5a64d81970951cce1f4e186b1f88efbf8df3cf2f746f6950e6c7e5fd45528dfa36ac3042b70405a0549d7c705" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0109e8a6357cffabe5718afdd5d4a2a0e9f02f690b5c4928fb58309124b6ea84cf7a91e943107a16912ff6228fb46c086918ee1d71bb0b1b192e3aeb1fc09b150e" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01d1a9c8daa7b3c76224b1146a7cc98c8eb447b3e7e25b129fbaa38f2fe1341f26559da517711c1a62dd2db311fa84a8110f902e006c7e40975adac67add125908" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-83.json b/tests/assets/blocks/block-83.json deleted file mode 100644 index c2ad6c0..0000000 --- a/tests/assets/blocks/block-83.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "feff5041cc1af878541580e73693e923811700c4ff847455975e524b6ae30ecb", - "header": { - "parent_hash": "0f17afbd7d39ba12ff4a65736655bbdaed6b0714ea1a1275980aaae06bc62760", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": true, - "accumulated_seed": "c4b0885d6d180d4d579f38246da82b3b2e4d1577841f620609e468d095310894", - "era_end": null, - "timestamp": "2024-02-28T16:29:28.448Z", - "era_id": 8, - "height": 83, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "018a08273b8d7abf1de3cbb20d4d7878520f03235511162216018d9969a180f9976b4b1d1ae4e554f2540573a36db71e2ca27dfa08ffa18f219ebc8967780ba802" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01363424907c71da46426986dbb4b6a853d1a684c2b1767b88ba737e0c0d87501a48c35af7f4391011c75338676c06e24acca19d3c0e51627c93ece2a0292c1702" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "012e404eb37520ad91b867e0b8cf7e07ccdc70dc8ef78c57acd6317b690719e3b7b521b2f5cd0b24874d1bf79c78024892a30cee105fa9124f7835363b503bf20f" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01a05e1aae012a908c1af652564be16c5102eb7986011f476529b84baabf9c1488f775b4fb0966f539b459aaa69338b8a583f27860f79d681ea8bc657a331a070a" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01428f2c488175c44c8c8d10b411783591e856155bcefde3cd92f6d7e257ad65a1a07b14d5bf242fc40b5f422459456464b249a69d4d95a25748989e6092da4203" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-84.json b/tests/assets/blocks/block-84.json deleted file mode 100644 index 66c88aa..0000000 --- a/tests/assets/blocks/block-84.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "0886cf4494c85ffd5ea44fb0c5486b7a7fac2edad71580e84cc0eb3fa36112cf", - "header": { - "parent_hash": "feff5041cc1af878541580e73693e923811700c4ff847455975e524b6ae30ecb", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": true, - "accumulated_seed": "dbb7d8b000e35a1d38978c57ef463dcf9f439814fffafa0e59b9b26f731c669a", - "era_end": null, - "timestamp": "2024-02-28T16:29:32.544Z", - "era_id": 8, - "height": 84, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "017d325fc4560e338a592e0abfce5267d33fe116afae1ab6e7cf65adcd20f5acc5b9fa567a9ef690e56e3cc9c73ce148c99865695bb90ad63f17629fab32332308" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0108b95318edc6e2f13bf82df6ee6d9f6d290fa20a9600c6773610cec46887ce1d8acef5af9e9f003af47c38e275129b3d74682feb890bf2d0c178eb145d382207" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "014eb56d33fbaaa4e5e84ea5b1d7a6a9de57f84e426356494bae37c948be7f4a15c31cce02be582618269ac9167cb48572abcc9c6ffefd6456cd524b2c17aeca06" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01256b0ac69332dbb1cdb349aefbca0dcd4bf0ecb4e8ba9480dac808ad8b8f7ecbde175084ce0e9cb031c861ca90f5306b90fe93a5801c356703f73adae83db00f" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01f028bddf1f47e01316daf915719a4a290476057664ba32455ca8cfa059be1e17c5edad66e77b0e4d04a40a0abeffb77b093907023faaf19b6a9b0007d44ce701" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-85.json b/tests/assets/blocks/block-85.json deleted file mode 100644 index 0e6ffe7..0000000 --- a/tests/assets/blocks/block-85.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "142060f3758744fb8090daa92be923aabd81d29d968d01f29996f91419f305e6", - "header": { - "parent_hash": "0886cf4494c85ffd5ea44fb0c5486b7a7fac2edad71580e84cc0eb3fa36112cf", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": true, - "accumulated_seed": "01b423702c5f5ade3e425933c428f6cb109e7049a3a80dc3cac73f33a9d706a6", - "era_end": null, - "timestamp": "2024-02-28T16:29:36.640Z", - "era_id": 8, - "height": 85, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0132c17d61d6ddf3e187ea38fb9a0941842843e26aa66cbc61174ef8d1b2d3c3817bc520021aeca64c0a0ed06ca1e2d131156ab7282c6640da711291ed5c3e2c0b" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "019f9142f7175dba25cc671d45417a6cb93d77774ba720c314544b93777017e2a2c34432c9dee8f0372c041b3e75daafdf693dbae4afe850ec6e8cf192082fa60b" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01d55eab7f203ff9d5f5170d5f4db10da27e2f6af6245d342fb54b59e66f86ad37187c587b50b390af571d0b5fe345d492fc831fd2fa5130e623031c47e9e21706" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01d58a0c7ee690e59284410f511db204097b99dc039ed808c08b2cbc583ce80a264e312caec13f73aa0460609e61325cb13972d1e112c60bbe79f9dd5e9f013801" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01d929704664ce333444be34fd465d0f36a42df2448c30e0ac64e24ea76a0ba5fe74bd35508609082f9857c0cd0d2063fa1e3e9caf836aa41f026bc967dee59500" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-86.json b/tests/assets/blocks/block-86.json deleted file mode 100644 index 9e13c3b..0000000 --- a/tests/assets/blocks/block-86.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "06887e3944f924e396059064c07cf69a9daf3264891e7fb38f5aebdd923dc9be", - "header": { - "parent_hash": "142060f3758744fb8090daa92be923aabd81d29d968d01f29996f91419f305e6", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "c0f75faf426f69ee2f13b1feaa347d6687cebadfb8b46ae5ad95dd352ffe1e4d", - "era_end": null, - "timestamp": "2024-02-28T16:29:40.736Z", - "era_id": 8, - "height": 86, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "012cf6865ab54d73f039c3ba6508f771755a19399f6b5deadbbf801d35bfaefd810f099fc58935acfa98d1da815d2282d08db4342c40d785ca4cf885b3c8f0560e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01b37f57ceddb945c685d54cee4ca28a2e783acd63e2c231885c6882aadc486c00d7b3a028d0d811867d5f66cf5f40fe8dd0e182b3d636a1280afad206c7f25006" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01859bb0b2269ba611cc9ff43c75c97fc06158c14b3f298dd66ae22bdb4ef116342a97e33cde44f686baaa5562347f76c775c476b619d21e6912a1f49176270900" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0162a000ed11e48f9db076bab3078ae038ed732b12d4b3b13eb2b7f3ac6d3dd7e7d66558d34d9c0f612ce9e36115db490b3b24633f51f8b1411c6b007e8542c008" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "011b65653ca547981052a95367f6ef51f762a9f6ef1e6f7c1456704afdcbf84f72762dadebc10136db46b5a5a1a56569595e7f73b90cb0bc9bd1c72ea07a812f0c" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-87.json b/tests/assets/blocks/block-87.json deleted file mode 100644 index 61aeca7..0000000 --- a/tests/assets/blocks/block-87.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "03762f9a3fdd75bc20fdc3db1c2612b0a1bfd0b7d2900e01342de31336e35db6", - "header": { - "parent_hash": "06887e3944f924e396059064c07cf69a9daf3264891e7fb38f5aebdd923dc9be", - "state_root_hash": "8e7001a819c188c892c750c6a24c328d0f48017a5420a4d6d150c2dafd01fae5", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": true, - "accumulated_seed": "949d497496c4e2b758554f75efc4cd37e10015f5df82a23d5760779d11231925", - "era_end": null, - "timestamp": "2024-02-28T16:29:44.832Z", - "era_id": 8, - "height": 87, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01e52d713aa3d5aecdb5a46c897140a0f4c476a2f1796db5bf0b658ea3f7487acf8d95f2a742bc57ce44ca0772e54e8d6df851e9c8cf8db599829ba96a9f25c809" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "011a452c707dcada3e96eb0a009fe15eef68dd3d4df777d93a7500baa50d48fe6df4348e9ccb7cc9c347cfcccbce98bf972f583c7d18213872e297f3ae65b16a0a" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01fefae7ce1910c7477aa01900f6a27cc0021cbac060235ada825781ea6314e69cde02ea4ab26fc9d2ff606c05374e83f0f4b45f06a8dce290071e182f915cc006" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "0181eccf7f580a3c5981b7acb8adab4d3e7701e6737e959c700f91e40d178b6d2ce62ce133db081bcca4b7a966f441712194926abad343ac6f9325bd94bfa33d0e" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01750afc6351e9aee19c069a3df16c8b1c3424a6955d1ef6ef7b7a05ea4798e8a3f4ecb2de354d351266d99e1a82dc324319822c8e72e490afc5a1f379c3718c01" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-88.json b/tests/assets/blocks/block-88.json deleted file mode 100644 index fde0ef9..0000000 --- a/tests/assets/blocks/block-88.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "hash": "f9a215757bc9c6772befbbe5b977100cea5272fe11a20c1b5c2ae50a91ddcfdb", - "header": { - "parent_hash": "03762f9a3fdd75bc20fdc3db1c2612b0a1bfd0b7d2900e01342de31336e35db6", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "eae1f93464872f9d74b072a22e74168b8692258e9cdf7b828b6a4cd3fef22bd0", - "era_end": { - "era_report": { - "equivocators": [], - "rewards": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "amount": 1999999999990 - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "amount": 1999999999990 - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "amount": 2000000000000 - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "amount": 2000000000000 - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "amount": 2000000000000 - } - ], - "inactive_validators": [] - }, - "next_era_validator_weights": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "weight": "2069999999999650009" - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "weight": "2069999999999650011" - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "weight": "2070000000000000020" - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "weight": "2070000000000000024" - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "weight": "2070000000000000022" - } - ] - }, - "timestamp": "2024-02-28T16:29:48.928Z", - "era_id": 8, - "height": 88, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0114c0e68bba0f60cc3a97f97a12a4d9e2fa2ebc9f479c5cd1010a8908f12f57fff7955dfacfd2b4d8f3630923e269568ae19a7069425dcdd46e7a2f9affc8720c" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01534f4a985490d54cd242e799d87fc5ee79c9b0c815eaca5dd9ddc1a5393f9b9a7d8e7deed63c4cbaff842ee2cb1146d85d1806c53dd980bb43590a4e7f205a02" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "012f8ed15dc32dd5e61bbd93e7f829572befebffab99636aa6aff8515605abcde848d8093800ab3bbfa17d176869afd6f2822ce5354964a20a2c44afb9cfd7eb0e" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01120dd08ed5784e11014742529aba016003ba3bc57138af73b036e7172b1f5f0fe48f1f1987e4bb2f6246a60a1f2a10f97dc327c11777c5a2e53a25c3f3af4001" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01bdc9ac08d2978f14a5bf203194906c87bc3d38d3fe481675f95ca01771f94de5a3d2bbf30fb5ab357f23e0a19b089750b2d9ecf2f20b28d468a2812b9aaea301" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-89.json b/tests/assets/blocks/block-89.json deleted file mode 100644 index a864428..0000000 --- a/tests/assets/blocks/block-89.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "56c79f327d7a98a23cf8597b3618762676b30660aa75130e26a53e7610211108", - "header": { - "parent_hash": "f9a215757bc9c6772befbbe5b977100cea5272fe11a20c1b5c2ae50a91ddcfdb", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": true, - "accumulated_seed": "b09da75378810bcbf64f48de5d36ed62d77c5148ae7084f5633ab5ea6d1fb3ca", - "era_end": null, - "timestamp": "2024-02-28T16:29:53.024Z", - "era_id": 9, - "height": 89, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01bd33d28ccd9b36aa49fd49d4039c569a20ebe11f43832e779c8ac7f1e3138c5183b70418c5ec0e25bf781e99a5682b60270b341b238d67f11c49e88be96a8000" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01b376c86e2c5baa1386e4d41c3d9f088270fe770256556387e5f66db4ca4b64069ef68581bc9044d3d84e85cb00ebd173ac2e42d07160e69727905dc050420100" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01c36ca14a2c2d5f82b279c06de92d8e2b2c876ed495eda352e1cd15f0ff99739e2aa5ff10a77ce3a0cc7a955ab0318058a30d3c6d7fde0a9568e5e5bc6612c107" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "010d55d292d5ef2f7e18304ad2263957cb549877e244d3bd1e1de01701a7a48fff9be68c83af83e6e3ff02eaf5c2cd45ebb4f50003a6e5578f5127814e42cc230b" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "012f77865e90855a8a4039bb618349aec3ba8084018659708b3e05da676a99f3c5811f49afad62d82fcbdff6de268155c5db20af36d3f3b6995c08dac36ba3a804" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-9.json b/tests/assets/blocks/block-9.json deleted file mode 100644 index 5815fa7..0000000 --- a/tests/assets/blocks/block-9.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "6f7b91aa652da5199000ec901fad2206ee7bd2fd7ccc00f6aa392157404a0fd3", - "header": { - "parent_hash": "6024368105926f2bcf6763014e8d2e404e0ac9bfda12637d389691344bff4644", - "state_root_hash": "7dc0efc0951998f50565066a15899e90f73a55e8faf22a6b6a0904be9a48da7c", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "824814e5c78b0f662935bce01ad63015dc1a4f6df05a180837e29a0942a90d71", - "era_end": null, - "timestamp": "2024-02-28T16:24:25.344Z", - "era_id": 1, - "height": 9, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01ddedd0cea553d6d00d698686c34aa1d41feec4413f2285126304568a2fd944e0f1a1a3797a3e2aa9d124ae157608634917bc29f7de0c3d149153b3ce90484d04" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01dd18ed0d8f2c6e18d015870480b1ef6bf2e3e0ad118d8a5586c07b0bdacb2e78c7b8e4a2831c2b05f4b0c9509ab4a270f493ac139c47ba6615e45b003a5a2e00" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "019482eebf6142c045da2ee84e8078f5d6bef38251c9ff687488349c843e20b6b80f45a8398c0b0895e47de28599cb4bbc8bfc591bc03503bd959f8ce2fe164b08" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01eba53347af2bb427188694fbd775afeecebaeb061b73c094884349618b0a1d6ed53b881c4c20d1e03904085462459cd11abbdc1d4a89a3d79c64ffb0e2b5d003" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01f159e33aac31def258a8cc5b34df10a3210aead6b7ff472cecac004f52a3d1e5a5a0913a7abc696a49a88ec4af2ce07b4f590fbc5303cd9a194e2ab462996600" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-90.json b/tests/assets/blocks/block-90.json deleted file mode 100644 index 116ce10..0000000 --- a/tests/assets/blocks/block-90.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "ecdc3aa912a6cdbee5943daca5d3e3dabb27e3c15c28c7ecff4ec31cc315a46e", - "header": { - "parent_hash": "56c79f327d7a98a23cf8597b3618762676b30660aa75130e26a53e7610211108", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "054a876fd5cf24fbee270e6cd909d123fd0bb97a5bf728dc7123b7a9815fc422", - "era_end": null, - "timestamp": "2024-02-28T16:29:57.120Z", - "era_id": 9, - "height": 90, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "017d5a67ecd1dbb2e77ba499e1c4a18d3747317c2115b198e178029123034c3a3f93b5fd01f977a5ad01d14d3152cf5e4d799689d8633b65677410b23afdb59401" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "013d385e112593954c1b4cc72af942b006634a869666244db0617de438f831dfb14285137c17d34c658451debab1ef9c7404d50d3a0702e75d26979a4ae7b04000" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01248096db9dfee2c37e93a90387c0ee36eb59f4c3db66c91dcfaf432fdb5bc696bc17fbed1a88bc497806c6de2f31584ffe2fb70f2ac69db29c8011c45e92bf01" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01e7f660fda4870f1aa4c1fcf2e74c19b55669b5a4922ff236937c52ef13deff02e7860ffed54cab87624a691dc533032827224e96a9f86103060222d56da6e100" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "016a5e26fa02875f9469934736f773c20e78da9cbde28e5f62f5a0af65b43c57e3c8d91fc03b91f4e68c76b50c72abb688fb1ea9ac1cd6b56b20fb4a15af31ac06" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-91.json b/tests/assets/blocks/block-91.json deleted file mode 100644 index 1ea77e6..0000000 --- a/tests/assets/blocks/block-91.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "e4b2f0a35601baedb781ecf3f6a4ff32399746e622f5fe3b0b1bf1e07cc1d721", - "header": { - "parent_hash": "ecdc3aa912a6cdbee5943daca5d3e3dabb27e3c15c28c7ecff4ec31cc315a46e", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "103dd1ad088ee0c1d63c1a39c60ffa0d96ca532accbddb5f9c1ff53658110743", - "random_bit": false, - "accumulated_seed": "1aee5820aa422a2f45371d54452370f9ad439d45969274a75d81ed3aa938f25c", - "era_end": null, - "timestamp": "2024-02-28T16:30:01.216Z", - "era_id": 9, - "height": 91, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01f25ce89c69849895737a413bec280be544364afb0ad24c6e90a2a232d3468ff26d3e123a0e989a3d467c0aceefd66d1ad8ff6f7f001ba7d4aeffb7d1b92a2f0e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01d500d9ca68093ea3365ada9294e43ab96ece4e37ba093e02b9b57fd1a38ba61332a0110fdf0e990a395471baa3403809671c9c1436d3f2c6a0fb8fb7bb1a1a00" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "0110c43b69c79e3dc69eb7a21d0a6ba0182d5fd65ce6f825cc8afa0f78345b129b776595274e695190a74b8144966d628043e6c7b58ce4921d71771c8b919d7701" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01aa46fdd8c294f7666872f75d9bc5ff0a8e97730fadad9c3d5a0b77c3c2992726325f75ddf4634227d7cea7c9a7200e5405e2d37152f8edd27f8f6db74db1480c" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01b329256e5e66e490fbe70f0ac0db6480c056c0e890b9c718869d90babebac582d6671187223fe70d93899d2573f38588ba2b1e3cfb5557b495aa4dd2548b9502" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-92.json b/tests/assets/blocks/block-92.json deleted file mode 100644 index 0921087..0000000 --- a/tests/assets/blocks/block-92.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "21cef2a816d02c4913e508aec5ae1882237fa2bd3e3c492c0cac2db99af49cb8", - "header": { - "parent_hash": "e4b2f0a35601baedb781ecf3f6a4ff32399746e622f5fe3b0b1bf1e07cc1d721", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "1491b23d79d425fbfa47597b208b8596edc7f1b8628dcc2f5a3e125ab4051b10", - "era_end": null, - "timestamp": "2024-02-28T16:30:05.312Z", - "era_id": 9, - "height": 92, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0104ef30fee739b5f2ad9b7fa4104b5e8df368c8203d6a5b3598a656946b191f4b0254acdaea268b133829f1704af90370c759af0cbbc6ba5f834eded62cb00e05" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0123a038fadbfc79d52bf42a136b0f3cabf363d1ed53c1c31f4cfa76a52f09d2d8fa934579006b5b377b155f41e96d5f413b93350c9d0dfdc16b94221bf0f68202" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01623998a7bb156be2b62dcebfb840daf1665e8dcdcd8b5c6ba3885f58e4a80eb7150a24ea06edb3a7a79fc9316657739f86cf8c130c64aee48bcead7648c1920f" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01508c72692541be678365a6541d8f8f21221d35ba63078dcd872699683e0d1240e34f432e75d6b7b97b59df05de6553d02ae26de9d71ebc371fbc44c064c9b80a" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01d05d3134f2c029d076ae23afae36c35a8887451ebfd0ae7ebf94138a7c59cbc76208d4c39077db57e117fca553a8fa310ccf660d65867f92c071070c9def2602" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-93.json b/tests/assets/blocks/block-93.json deleted file mode 100644 index 382000b..0000000 --- a/tests/assets/blocks/block-93.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "f26f134bd90fa027461967081b12befba221294b0ed584716a26508b27a865a1", - "header": { - "parent_hash": "21cef2a816d02c4913e508aec5ae1882237fa2bd3e3c492c0cac2db99af49cb8", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "f1cfcc5511f494fab1cfa45ec837088649109478e3700e7d74579e0bc44ef7be", - "era_end": null, - "timestamp": "2024-02-28T16:30:09.408Z", - "era_id": 9, - "height": 93, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01ce13c349194139c51613e5753df610ce4fa3363ee923cee10f0f5c5dd24e1c54b398210944e71771cea02ffa9c307e3141475c5ffa22396882020ea1b6351909" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01a4ed873bdcb9bf3bd6bccc3cb5de1dd40deddda324a0f636791e4c867ac3d53ea746191275c2f5583e3e704ccdfe8032b3c7d2e4e85421b2a56c55ed490b5a03" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01a5c8b925be9e254f1b285ec3b79277ccf4cdbc0289408ed8ec86e0e55da2678afde6269ce3ea4b8e42ba93b04751817b40f9b28ac616549f94c2f1bc206dad09" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "015832168f54e7b1982b41a62ff9630c942955b5e1c569c7460ccb112190b964b2d1ac95954b50f9734468f6c7bc12271c68583a54e68b037419b1cb93dab8ec0a" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01a966d271bdf0d50f6609280604269b974859dd4c650639a33891494ddcbe64320bade2c6d383fd6fea80a45d51451079d3e029b827d9d18c5eed0e56cef00e01" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-94.json b/tests/assets/blocks/block-94.json deleted file mode 100644 index 8ca4ada..0000000 --- a/tests/assets/blocks/block-94.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "978d3486fc6c80234af7a03386d46ce4c8857d086cd0582f2e4d23efaf361fbe", - "header": { - "parent_hash": "f26f134bd90fa027461967081b12befba221294b0ed584716a26508b27a865a1", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": false, - "accumulated_seed": "76052189cb9144a5c870dd42e2568e0615d8f4de4b83f112738f5f6e61acfa0e", - "era_end": null, - "timestamp": "2024-02-28T16:30:13.504Z", - "era_id": 9, - "height": 94, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01a0a7622f8300ae2746144acd84a23c907102e4f1b380bedacecede282b4285be67c3fd33625cadb27b46417dafdb75af98e4fe1d0c42d443322b07555f532c0a" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "018a48539bd878ff43c717193af82e21af62d24e929428a6cfde84d14210d4c7979db4a87813b6287c78278e6da914e078c171eb1e3a74fe219d7e24e9048d2301" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01d36e0b83fe93a96a334ee6aaba861e3645071e71b84898fa5bba897a5050782461501e303e8bee5bb7ee73b92ebc2bbe708b6b111e160cf65f3ce72a48e0d50b" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01ab1f849be0b04b4f926ef7b9e33276b1809147902dab8c5a490f2ac10754de1c81e988c35d6a74a094835bde3f8691d327b3349d4b5b3abb55472b03fa38a302" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01dd11f0e1f0cf72129d47377fa3f3283d1dd1aa36b1e189f645500aee3ba80d645ddcf11c948b96a60ed414f5956bca276991a97d7087df96e9b3b31d69d43d0e" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-95.json b/tests/assets/blocks/block-95.json deleted file mode 100644 index f8c1a6a..0000000 --- a/tests/assets/blocks/block-95.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "3c036fd165403190e882ac617112cc7db0065b981aa83f7b646bbde15c0a235a", - "header": { - "parent_hash": "978d3486fc6c80234af7a03386d46ce4c8857d086cd0582f2e4d23efaf361fbe", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "9795ec386b71cee3c0b831b582ba41a1021422065b238f915174324fa77f4772", - "random_bit": true, - "accumulated_seed": "8353a905c52f538abee2d1b114a278ff53ae13f2809984acba8688f9d4308407", - "era_end": null, - "timestamp": "2024-02-28T16:30:17.600Z", - "era_id": 9, - "height": 95, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01cc9343634d1704dde71c18306e637101fce86c007a11c5616bf2a74c1ab67c8f687085e9da76d08de97aadfcf631bd6e072311e838c338b30e28f38ea6796f0e" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "018ffc31232481d3c01ba4b70ff0d3537aac040e06f5e55e77dd41c080aea816e757908a6566942b7427667cd547059b9ffd862efba55c5b433a263d7dcb147d00" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01b098f29fc615cd34e6f52e07cf6f9db7e26739ba6908addc1b768b87de892a382eec9147728759207296f3652e022c750175c24401f67af3c512b93275f04300" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01235f330db05007d9a5d53a907fdecce9792895eeb2f57e07e0434e5166c9dc1a71183d10f715b68e13a81d67a6663cdcf73abae84f1e7bcb460ed1245754ad02" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01c046966b941659f4f3b65636b8160026198a2cf2bf98cac77517c3e73ee31adb3bf0d4cc288c29b1dd00ce32d77880e139a08430a7e08eacae2f58b2410ca50f" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-96.json b/tests/assets/blocks/block-96.json deleted file mode 100644 index b6e4854..0000000 --- a/tests/assets/blocks/block-96.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "9ffff15afc1c4b7f4a621541ef4f344dfcb68d61b3d6f6106f1e5c302954753c", - "header": { - "parent_hash": "3c036fd165403190e882ac617112cc7db0065b981aa83f7b646bbde15c0a235a", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "3fe1e1ff39fa045bd498787a2d235145ee6518548f14c546838b5816a8f4adab", - "random_bit": false, - "accumulated_seed": "5ab20fa180713a5ca8aff1878db875ebdcc06500bc7ca6c836f781060c8d01b1", - "era_end": null, - "timestamp": "2024-02-28T16:30:21.696Z", - "era_id": 9, - "height": 96, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "016d1eb90d48b96103922717bf162cf57cf3db7a2760052cb2205fd0e2789b2a6fcc56e87d76941149736bb04bb0b031acacf32a11d2f9588bd86a0367146d1503" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01a349bdbf0c3ef49eb56efa507aa1afe7cea6df63be7bdbdef3d054ae0c71266c19b50fd60c9f2525d7cb41f5a5e5314b839c3eec8b02c5dfc7d8f27dbcaf3300" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01c124f9f4ce15803d155d2b95747c24fa1e21896c0f2ff6c5bd66fef366163f69ef5a1543fa729de46637096bc346feb537b16f212fb7f9ee1282ca01cc18ca07" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01158b038e1487cfce03f4be1161d928083ce401c8807460ed78fa13fd780fcb35d0fe9ee3dcdd0cedc97b94b6e9647e4ebdcb4f27cf32efcf6a82b44ae20d9a05" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "014666620f235a383b87bc73f301abf02f55b034f7e4df108bd668eae93fc2f9d59ffc2b4388ba235e5b74eca05be5b38feab40fb2d06d1e267e4c66c66f5d750f" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-97.json b/tests/assets/blocks/block-97.json deleted file mode 100644 index 7a55fb8..0000000 --- a/tests/assets/blocks/block-97.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "0885a02050e8e36c0c4a648cbdb08563b45948216ccdedc615659ab04e8dfcd3", - "header": { - "parent_hash": "9ffff15afc1c4b7f4a621541ef4f344dfcb68d61b3d6f6106f1e5c302954753c", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "0702f1ab088181c3aea2be2e51cc27cc5dbb22090b0a34874188f73aa7331907", - "era_end": null, - "timestamp": "2024-02-28T16:30:25.792Z", - "era_id": 9, - "height": 97, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "013ff0185c9b4162f73c2403b83a1d11f7550bd2762353a0d4b6c25d2ca5ca84cf8986669b3dcf2ec7d3dc0f981f0021acc55a9272bfa2a7f27e3de474805e310c" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0101768d98e5b3de6af860c720b5b5636ab4c2c443d8ef12f88117ca201cb331ed678dc638bc35b4f9ed143a92f61b38cc042a36432888ff875b147be70545b70d" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01c27d4f62383f01b3196e9333969901d95c9e16d531b490cc27736c7dac75b35c7e0dc07badd27c7d11c4c82bf8c20b44e442de4a1617f53b2380b09177d0a605" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "01b07cf7ae1730620b4870ce56b2cd97960a4eb3f88afa4f6aff58508b14399a632d50802c6488b0e8c754d8f5318e6e2f20b29fbbf738228bedbf5bba063bd702" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "019e4578712462a932584b35284ed9a23d8a77507f7ef65efff982f6c957533d79ce6da613132a062bf2c884c73898622e1b4025a72b4b2be60ec5d12d32b6a40c" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-98.json b/tests/assets/blocks/block-98.json deleted file mode 100644 index 5957e2a..0000000 --- a/tests/assets/blocks/block-98.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "hash": "dbc28b0a3382d4abfc4d64fa24014bff15aa5f9f044a92c8610065f1a1a06109", - "header": { - "parent_hash": "0885a02050e8e36c0c4a648cbdb08563b45948216ccdedc615659ab04e8dfcd3", - "state_root_hash": "ac558d19987eb158c4888f59b1727f67ad1ae84f79c7ac02cbfb7d5f4ce722b6", - "body_hash": "bcc608eac0c4f65ea803df48eaf819730a530f60d90348e93b28514a9f6a86e6", - "random_bit": true, - "accumulated_seed": "097bd7deac3a345d0ee675a70ab631b240bf2e6939df4ba94a50957660efc73e", - "era_end": null, - "timestamp": "2024-02-28T16:30:29.888Z", - "era_id": 9, - "height": 98, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "0120d7edd450bf3655ed621e7b5381a47524a9d102524c746847a0f8d07705f99453a5a85e4b336ddca22ff06f99bff032b532cdce3d0e696a9470fc03bb14ac0d" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "0176f00cd897dfdfa9d529cf7098fa4d8c8b21ada0212eb8e1171c61e29e85fdf1a741f59771ffabcf5ce0decc9e80e2ee0d1425d3a3fe16d5c4f3ffd6f8723309" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01a38783ae286ff2f8ebb58fc1b15f54485a361eef71747e0857eff66b1381c56252193a7a7d8b937894b5a3006f1911cf2a631b9c356ed6e7318005fb64f99102" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "017ca2d6bd7a3782d930b426e208b8d12042e534ea137ae7f7881b00bcb008c2715dc2322ae333336c7f4ad55f4e73cabb996c1047a9da9c852a4fa226b1378506" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "01a9978908297a164f6094cb92a19089c19e1e0aae230214f2d6ac728ebefe494fa52bbb5f33fb9d85b0b0c477612831a884ec8b1438c43de584563d55cc04a906" - } - ] -} \ No newline at end of file diff --git a/tests/assets/blocks/block-99.json b/tests/assets/blocks/block-99.json deleted file mode 100644 index a1eb54a..0000000 --- a/tests/assets/blocks/block-99.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "hash": "120b4a179c9f54975e57e0c40390c0a6c6875fcf017e6c0f8a46ca4e0feedc41", - "header": { - "parent_hash": "dbc28b0a3382d4abfc4d64fa24014bff15aa5f9f044a92c8610065f1a1a06109", - "state_root_hash": "35c667bc6cb1600a180c3c1c19542fe95f7a4def19527dfc37e8ce035c3b5707", - "body_hash": "803bda5c7b232fd5e25a203b95c6d269708d17528775603f3c597ac159be2354", - "random_bit": false, - "accumulated_seed": "41be7fb7cd840e787d8f43796e5b41819235d9556ebbf96034f03ee8a1ef1a64", - "era_end": { - "era_report": { - "equivocators": [], - "rewards": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "amount": 1999999999990 - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "amount": 1999999999990 - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "amount": 2000000000000 - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "amount": 2000000000000 - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "amount": 2000000000000 - } - ], - "inactive_validators": [] - }, - "next_era_validator_weights": [ - { - "validator": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "weight": "2079999999999600010" - }, - { - "validator": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "weight": "2079999999999600012" - }, - { - "validator": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "weight": "2080000000000000022" - }, - { - "validator": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "weight": "2080000000000000026" - }, - { - "validator": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "weight": "2080000000000000024" - } - ] - }, - "timestamp": "2024-02-28T16:30:33.984Z", - "era_id": 9, - "height": 99, - "protocol_version": "1.0.0" - }, - "body": { - "proposer": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "deploy_hashes": [], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "016c07fa407f46f7381bb424fbe18c320e8184a7d3e4360acb38d2d58172a9028a", - "signature": "01bdcd625b62501174098a267fefe6bf598dd3651302daf1e9a319cb5af71258b7d45e6216749b7461042cd827961cfa3723414e5ecca407b1c4631d5dd439c70d" - }, - { - "public_key": "01706f36a2ebfccea720b49a6424c196cf0bb7aa929f39842975865848b87773ef", - "signature": "01ea5638bd8310de58663239f43d15228fae37f3b1b50491327abbcdc6991a324be47244015f2fcada59ba07a91566b1da271db235256284427f5ef7e515af2d07" - }, - { - "public_key": "018b2bda41097182c387b72c41a490984aad26a64bc75cd926dee7f0b8d82b4e43", - "signature": "01cf1c3de35cfaefd2db23d1320e4f4eec3c5419cbd55faf2ad6fb6433d4bab4039fc5b6e440c0076b087ba2aceb8b8d3bdc17fbd9650192bc7d2ad993cac8710a" - }, - { - "public_key": "019b5bd3e7f3c2ba280bb264928ba0d18aab832eb92714d9a455e7737e976c8a41", - "signature": "010bfc8c544baa6c2228125b0b052e8c85b71c2e9367d736f03199361fae702a9211963caa72264e37e71908e8be83efbd817a3510862bb681b267ddcec8271a0e" - }, - { - "public_key": "01f0aaadbf1ef00a83e161eaccadaf4e499d9730a09e8979cb9e8c2d3fc4d8b6f7", - "signature": "013fc767eed4475b302d77012c37693712bbd6a391833e3f59ffae481d65f8ef1db8fdeb06c6fa8237788208640c1c1de8f44aa0fbe1d30cb7b1609f7d3ed96205" - } - ] -} \ No newline at end of file diff --git a/tests/integration.rs b/tests/integration.rs index 77afb95..f30261b 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -1,135 +1,4 @@ -use std::collections::BTreeMap; - -use casper_litmus::{ - block::{Block, BlockBody}, - block_header::BlockHeader, - json_compatibility::{JsonBlock, JsonBlockHeader}, - kernel::LightClientKernel, - merkle_proof::{process_query_proofs, TrieMerkleProof}, -}; -use casper_types::{ - bytesrepr::{deserialize_from_slice, ToBytes}, - EraId, -}; - -use once_cell::sync::Lazy; - -static BLOCKS_MAP: Lazy> = Lazy::new(|| { - let mut blocks = BTreeMap::new(); - let cwd = std::env::current_dir().unwrap(); - let this_files_directory = std::path::Path::new(&(file!())).parent().unwrap(); - let blocks_path = cwd.join(this_files_directory).join("assets/blocks"); - for entry in std::fs::read_dir(blocks_path).unwrap() { - let entry = entry.unwrap(); - let path = entry.path(); - if path.is_file() { - let data = std::fs::read_to_string(path).unwrap(); - let json_block: JsonBlock = serde_json::from_str(&data).unwrap(); - blocks.insert(json_block.header().height(), json_block); - } - } - blocks -}); - -#[test] -fn parse_block() { - let json_block: JsonBlock = - serde_json::from_str(include_str!("assets/blocks/block-0.json")).unwrap(); - assert_eq!(json_block.header().era_id(), EraId::new(0)); -} - -#[test] -fn first_entry_in_blocks_map_is_correct() { - let first_block = BLOCKS_MAP.get(&0).unwrap(); - let json_block: JsonBlock = - serde_json::from_str(include_str!("assets/blocks/block-0.json")).unwrap(); - assert_eq!(first_block, &json_block); -} - -#[test] -fn json_block_header_round_trip() { - let json_block: JsonBlock = - serde_json::from_str(include_str!("assets/blocks/block-0.json")).unwrap(); - let converted_block_header = BlockHeader::from(json_block.header().clone()); - let reconstituted_json_block_header = JsonBlockHeader::from(converted_block_header.clone()); - assert_eq!(json_block.header(), &reconstituted_json_block_header); -} - -#[test] -fn parse_and_validate_hash_of_block() { - let casper_node_json_block: casper_node::types::JsonBlock = - serde_json::from_str(include_str!("mainnet/blocks/block-0.json")).unwrap(); - let casper_node_block_header = - casper_node::types::BlockHeader::from(casper_node_json_block.header.clone()); - assert_eq!( - casper_node_block_header.block_hash().as_ref(), - casper_node_json_block.hash.as_ref(), - "Casper node block hash mismatch" - ); - let block_header_bytes = casper_node_block_header.to_bytes().unwrap(); - let deserialized_block_header: BlockHeader = - deserialize_from_slice(&block_header_bytes).unwrap(); - assert_eq!( - deserialized_block_header.block_hash().as_ref(), - casper_node_json_block.hash.as_ref(), - "JSON block hash mismatch" - ); - let json_block: JsonBlock = - serde_json::from_str(include_str!("mainnet/blocks/block-0.json")).unwrap(); - let converted_block_header = BlockHeader::from(json_block.header().clone()); - assert_eq!( - deserialized_block_header, converted_block_header, - "Block header mismatch" - ); -} - -#[test] -fn parse_and_validate_hash_of_block_body() { - let casper_node_json_block: casper_node::types::JsonBlock = - serde_json::from_str(include_str!("mainnet/blocks/block-0.json")).unwrap(); - let casper_node_block_body = - casper_node::types::BlockBody::from(casper_node_json_block.body.clone()); - assert_eq!( - casper_node_block_body.hash().as_ref(), - casper_node_json_block.header.body_hash.as_ref(), - "Casper node block body hash mismatch" - ); - let block_body_bytes = casper_node_block_body.to_bytes().unwrap(); - let deserialized_block_body: BlockBody = deserialize_from_slice(&block_body_bytes).unwrap(); - assert_eq!( - deserialized_block_body.hash().as_ref(), - casper_node_json_block.header.body_hash.as_ref(), - "JSON block body hash mismatch" - ); - let json_block: JsonBlock = - serde_json::from_str(include_str!("mainnet/blocks/block-0.json")).unwrap(); - let converted_block_body = BlockBody::from(json_block.body().clone()); - assert_eq!( - deserialized_block_body, converted_block_body, - "Block body mismatch" - ); -} - -#[test] -fn update_kernel_one() { - let mut kernel = LightClientKernel::new(BLOCKS_MAP.get(&0).unwrap().hash().clone()); - let json_block: JsonBlock = - serde_json::from_str(include_str!("assets/blocks/block-0.json")).unwrap(); - let block = Block::try_from(json_block.clone()).unwrap(); - let result = kernel.update(block.block_header_with_signatures()); - assert!(result.is_ok()); -} - -#[test] -fn update_kernel_history() { - let mut kernel = LightClientKernel::new(BLOCKS_MAP.get(&0).unwrap().hash().clone()); - for height in 0..BLOCKS_MAP.len() { - let json_block = BLOCKS_MAP.get(&(height as u64)).unwrap(); - let block = Block::try_from(json_block.clone()).unwrap(); - kernel.update(block.block_header_with_signatures()).unwrap(); - assert_eq!(kernel.latest_block_hash(), json_block.hash()); - } -} +use casper_litmus::merkle_proof::{process_query_proofs, TrieMerkleProof}; #[test] fn query_proofs() { @@ -140,13 +9,13 @@ fn query_proofs() { let query_info = process_query_proofs(&proofs, &[]).unwrap(); assert_eq!( "9253bf8484bae2b6e4d5302c792c6a79f729b2cc2a9d87beb262d3266a424efa", - query_info.state_root().to_hex(), + base16::encode_lower(query_info.state_root()), "hex of state root not as expected" ); if let casper_types::StoredValue::Account(account) = query_info.stored_value() { assert_eq!( "account-hash-c39d7a6202e5558ffbf327985c55a95f606db48115599a216987b73daf409076", - serde_json::to_value(&account.account_hash()) + serde_json::to_value(account.account_hash()) .expect("should convert to serde_json::Value") .as_str() .expect("should be a string"), diff --git a/tests/mainnet/blocks/block-0.json b/tests/mainnet/blocks/block-0.json deleted file mode 100644 index f015aee..0000000 --- a/tests/mainnet/blocks/block-0.json +++ /dev/null @@ -1,424 +0,0 @@ -{ - "hash": "7494328c5d331695cf6abe2c90a0dfd509057a108462ea62b4d3ec9d2e9fbc1b", - "header": { - "parent_hash": "e2992f47bb06ab92c91d80fb752dd9f2bc40a45ff9de757965c11ad5f9073387", - "state_root_hash": "21c9c31dbb4b11324d7aa53548413316a6dfce583879d29363bd7c4694fe5477", - "body_hash": "efe6cf07ecd309a550e013187999134a495fa0b5b84909c1cfba31a0bfd1249f", - "random_bit": false, - "accumulated_seed": "b51adfc73bbd40950663bba73f23694cf671f46abfce6a7fc4156a72b90c7c20", - "era_end": null, - "timestamp": "2024-03-12T21:08:42.112Z", - "era_id": 12774, - "height": 2742283, - "protocol_version": "1.5.6" - }, - "body": { - "proposer": "0106ca7c39cd272dbf21a86eeb3b36b7c26e2e9b94af64292419f7862936bca2ca", - "deploy_hashes": [ - "bd0b76a1d969a4560bfa26fef94a78192a72ad7346bc12537d5185eeec96c810" - ], - "transfer_hashes": [] - }, - "proofs": [ - { - "public_key": "0100e3cb74e8feb5f27b6f69ff3b57aedd7201f52480b0ab0d6a2813d8e7cd32d7", - "signature": "013c8ff99c7d50e94faca7a553dcef20eb9e859062cc9e0f4a195171b9a44237607b506c8494d91f6e9cc138630ee37c2dea4669516b4d2e541a1065340487a20e" - }, - { - "public_key": "01018525deae6091abccab6704a0fa44e12c495eec9e8fe6929862e1b75580e715", - "signature": "0172eb050136ac7955a252be89215d995a53993ef149bd3b3f4d05085f957e5bee47a749bf44ba31fd480c8b74998d0691ec4f3a242941cf910a262e4407693807" - }, - { - "public_key": "0102ba1de25e8737b48076e96d9933e9d26f7dc279127de2ffc191ffd3b4eb8b4d", - "signature": "01087e3898b49f43dd03bd27e2dcedc95465cc59e95303eeb0c4b41e71959898782467c38da406bfd7641a0fdd20fa4ae2ef1febf57f46c7c6b68602659e56af00" - }, - { - "public_key": "0106618e1493f73ee0bc67ffbad4ba4e3863b995d61786d9b9a68ec7676f697981", - "signature": "01121d21b4b28d59e69aa4d119a48aa391e8a01346cbd9dbf007b4f59616bc0ee6f784378f6554483158ecd4afe8d5fbf3d0f319a714655c0bccd144b97082f806" - }, - { - "public_key": "0106ca7c39cd272dbf21a86eeb3b36b7c26e2e9b94af64292419f7862936bca2ca", - "signature": "01f8d9e94723c4827f22d247454b83daf06ac613d1f2dd3d31ab50b26b69e7afdfa2c75cc7892dd06f85a054e199121dec9445920ddbd5113a3c70e9805c214c07" - }, - { - "public_key": "01075ec8809c691a1d1b0250ba9ea75da5460e3df43c3172771c6975c989457159", - "signature": "010411ad89ca43792985a8b989b6f2cdaf6f3f6907b9d7622e9cf8318c1dcd75bac5dcd0507c81b5d115aa6fa3935b2b42a0451de17f276392a074f9e1befe6a01" - }, - { - "public_key": "0109b48a169e6163078a07b6248f330133236c6e390fe915813c187c3f268c213e", - "signature": "01a18929f43b08f84bca65e90f0e7a426169636c262fb8439292a3080259f5affd67fdf658fa2f8b0e92a34ec66335752ac0c487c0aca7127c3f3dbd444654700c" - }, - { - "public_key": "010e5669b070545e2b32bc66363b9d3d4390fca56bf52a05f1411b7fa18ca311c7", - "signature": "017ec9190b3f10b7b5f0b3d0a5656577806afd03c6ab464fc7428d1ee66402897270423448cc5339fbe14c53a38342539b3a794065f703296108f33342be93070f" - }, - { - "public_key": "01101ef8635fb189ae3c734ca699dcbb97f7f844b9b96f260642a734b85d4c1c85", - "signature": "0158d9e35af1daa0e49c206e8f4483eb55ac21e21167e95dedb3ae3b03867f4f26bf2fe6c897ff6672f930422265edf4be39d05192c8135d9ad21cd0d2d1123901" - }, - { - "public_key": "0110b5a63ba0279423ddbf60164a37b581880167437cce225ab00ff62782904e4b", - "signature": "016b849c6e8a0812f6536878bde95be683154239cf21327d1ef8dc3bb85387da44031f9d3d00d88de8385e1843de1cb18eaf44b1ec00b19230abf019a451af8104" - }, - { - "public_key": "01125eb55aa8cb1561df502cc99339c9fe9fc8fa5cb8950243d66d6f66f8f1c03b", - "signature": "016f5323d22c40f7f425febbab993941aa876d8bc3193848c0b0187e6147b4ba7915e6e749d758a45762745d8b05aee6ab7caaa0338dc0a322592baf679640b60c" - }, - { - "public_key": "011691f57529dd47a82530ad9c4a60f5efd993dd3f3e582fd2f775fb1a79c6d955", - "signature": "010222c51677039ba053fea17c16b2b33d0bb71a62a0a32431f694a6d97448420f4b2073e338b741f6600b44f53b615068b67197c797f8c89fcb80e481cf63cf0f" - }, - { - "public_key": "011fbadf1d9d7f8246c36647722423690bc9b28e438d3f08f85bab006771ba2229", - "signature": "0122b19365f999ede7c0a44af5629003968f5aafb9830d3b28418dbe799f5d1007d2ca061ff126c7b87bca83c6e614f4bacdd8950fa6a19cd1719127e4de55af07" - }, - { - "public_key": "0120117923f323fbecec03f6761fcd8df5d967b36a10aaefb1efad636afed60a85", - "signature": "01652508356e31557019953f6ee1e9e58383b5e8ddd983d29ef7513c9efda46e6cf6f7f457f0aa0b6bc7c725d14b8f2981fdc42208577ef89bfff100a0e1744006" - }, - { - "public_key": "0128d6b2c3ccda8e674f73ccf57b6b20a23b5e4439634071c9361992c679a94ab6", - "signature": "0144a2f4a6be0c4c9c14c488605351f42888da91e07fa0c362e69895040282bc8617271dc9a84f3e270fda612cfdd046519c024f942b695bea0faad1d079981b07" - }, - { - "public_key": "012b365e09c5d75187b4abc25c4aa28109133bab6a256ef4abe24348073e590d80", - "signature": "0185c3de0b3f68b779071eeed510765a9cf9b15ec6140dc487abef7be3d47f1e3a37b5836444c64edd31a5f76909d2b8cc4c8f1485727c402430fd10950111f60a" - }, - { - "public_key": "012d58e05b2057a84115709e0a6ccf000c6a83b4e8dfa389a680c1ab001864f1f2", - "signature": "01c18d0dc7093e7e141dfa59695192859714ccc353d2d1d728afe308392a6d969d198e3418f52481b0c03a226f571395578024447b8a92d15ac45b45372e73d504" - }, - { - "public_key": "012dad6e750391c0d12891afa4f27386a1adfd118068b396165ad8eb9f6a85f1e5", - "signature": "01a4ff22d9d93c71fbd35971af0e067c41ee813849d7d5385225285896c519a788bb0dd28d2ba8dadbb4e4d0cbd5c286888bab07f58a85285e6112dceb7be4ea0d" - }, - { - "public_key": "01309f108cab2d5b62defdc7c031c8c6e4f1c8094effeeab155a0a944ef5890fce", - "signature": "018e7b2962274e071f16f9769ba5157252ae6527c8210190ecde03c248ecb61fc8d8b952c0806746e9a107a91250213d3a40d20a94e62349ec63d346d0aec4cc09" - }, - { - "public_key": "01358a7e107668ae2eb092dcfbeb97d2ec3cc8354d2a77bc8f232fff6630a826c3", - "signature": "016eece425b924072efc6abbfd8dd2a785d8552af301602ee107b48af510de04666305f09893024af1e2b7950711337f43e325170196dd1a42e9c30c099e899908" - }, - { - "public_key": "013941026c5347ca9eb6ddfdad57d2c305c21108b2f3d97a6bb6e52440a1be9664", - "signature": "01d7f2e9137ca7375c60a593f3d9c9b3e41ba482e30475b4b7c4c8a8a9689c7058f96a9ad776cf7218be8d5d3d0ae0325df8b8bf5b7dfd24177cfe7d12ede1bc0c" - }, - { - "public_key": "013fab19aaf6a5a4ce4adeab0f5a9f16e3e977521ca6edb846122a8913a2b5c2b8", - "signature": "01993f0ac14ae98c6cdbd8e6c5aed755acd1a878c1aeee02fd3ebe1b32c2e3902ec2919b930058f2305a6002684e928032fb8a2a79c606770c05d7318e50559f05" - }, - { - "public_key": "01421fb44078c2eb8d7d3414b81d4d9e81b49983eb96644a9978782b9aab0468b4", - "signature": "010f759e86265bf08f5cc58cfca561fb8b6a265dd23e9709c5f77930962c6b858acb511c54f9b06f0f2351b5409f78feec354633e8acf776134231a54c12133306" - }, - { - "public_key": "0142c89726fb2feef762b07e9c89c25a1bb6d336039d6f70d7e90701e8dfa042f9", - "signature": "015298c8285248ff30af364ec75942ca284b13620dcf801e430f3a84137d1ddc8776652084d21dfc98c1ded9ee506d4d9986dc94b3421dc343764f2c8b68067a0d" - }, - { - "public_key": "0144e35abc4886168a53338539a8a3649ab1257d9f0c235ce38961624a025d40dd", - "signature": "0140d9fffdb3b5c8eddfcb4be39114b40b6f5bfe7be44f92276eabbba7d422c89a1cec0d1064e8945754232c0075358e1191111d7ce156c3354b0685dacc090001" - }, - { - "public_key": "0145fb72c75e1b459839555d70356a5e6172e706efa204d86c86050e2f7878960f", - "signature": "01ba712be93c41cc6a5b93c798d1fba48bba620911af2000fbfa6c7ab5c585595e75d9604a5b17de8202e8581f51b9d896c31add5f28b55eb713a53810e312030b" - }, - { - "public_key": "0146389ae32053b98ca99efcb06df6e79560abc4a75a088794d2c9920ba3618159", - "signature": "019f32a7e341690ef532e8b3917fa8a0dde1e1200600a42f7560debdd76f10a283a455f2af07c4ba391f4b47d6a94c17a196ed1ae5f9b00a4f244586fc95346805" - }, - { - "public_key": "0148d2b4f68adf837cb06f08925ed4d30aa830cc66b88533d38adefdd66b4d51c5", - "signature": "0161dc87cff7f85b5678b33a19474f4d5a4c7606daa741b04ef621fb302e2f560768a449c91d744c6a79fef722502fd26d9bbacf12cb8827766b347320289c210d" - }, - { - "public_key": "0148d7e78359ee29d8250ecab3865e8ef72381f3fc606f0b6202d393a358e8d537", - "signature": "01e04ac8dae4f873d5b27ec2131237079be6c4cf6d9d7389bd1be3a8a9a13108b73427636f9565607a415672b8a298b37e8ed7bc95c161decd092eb675a3d14d05" - }, - { - "public_key": "014cc13f0164ae8317311a856d5539ce8342930a3d0a6d1fe3cac0c5436206427e", - "signature": "01d3ca4bcf143123de7db07fddcdd86b733db0d55d06b5c1e49da4dc51f684b8ea985fa4e93e9b0fa0e9f6973c0cafb7d0d5b0036db85b70564f19c4215f82eb05" - }, - { - "public_key": "014fa95d1e60f8a5af1e4118aa14011c61b05847b32548aa0e0419f2daf09c8923", - "signature": "017e98fd4737e41240c21d6b60529d73566b25466ca613715e7e87bfdf033ae6867105cfc2a7f69b59aa99574152962e3b233a3f84536accd6f254cd0b762b3c01" - }, - { - "public_key": "0154a09e1ecc084b3e972d98ea67bb86f154cb5ac3ab04d9a3853f85c557b4af20", - "signature": "01c09250eb247a39386ed28ce4c97ddb99620f65b1f60ed947aefc2cf2cb5fbf28e9a243102ccd3e1d36128b935db634c650994bb270dc0442171999531b6ab90f" - }, - { - "public_key": "0154d7afd43a7b1033259f7a1675edbc3e1c998927d6835e045e7d57e64cabfb32", - "signature": "0124e9fc164aa5ea58726aa70769abde6d7f6f04d9c15e5c4e852237b6b61615cbbb97045da5e1a8b36e02d6c56adbf50e5d7c4da366ac9da41260f8ab561e3502" - }, - { - "public_key": "0154e5b45eaade5fc8f0afd45624e4b69973d999b42292ca1993d323c98e067732", - "signature": "01a4a7f38803f22363bad006047c3d9f8b1b65921bb24aa1a3df92ba7d31ed4ff27b239b545306cb8d08d31259a9180f6a099ae0d4fddac22facd6599eda77e70f" - }, - { - "public_key": "01567348f4bd7819db883dafe50d0b13d90382d00e02255370db131584fc180de6", - "signature": "0192ce27f485adbd614fe7b0ae496c51acba74e70299c42ad266eddb9468e7f46b663683b616514ce2b2cfa75d1084838c290f29f29d6f8532e5d5350f669a9404" - }, - { - "public_key": "0158a3a7e14ecabb01486e4b3b379afbe95ca00225f754d3e4ecf70422f67470af", - "signature": "01e81986324683b8d4cc491af6096b9531d82ee91febce11423641b881c8e6dbcd5f257f44cdc953f0374e0d60b11a57843d0f4c169295843604fbe7c4c89fef04" - }, - { - "public_key": "0158ed3b452164d0f79e65e05cec9052f6b0acb6c470159bd9ed41037bd20c0100", - "signature": "01fb83d24f70dbd1f5c3777f38b8b110f06117d76fdf2e7b1cf94e589445d8341d58eb056794239a902c9731d5c0e81b1d01f67760fd1f94536d09a0a1541a160d" - }, - { - "public_key": "015c6a4f1b5290e5cd0f63ca6c69226334b38782fdaddd3cbb95e4574f3fbfda03", - "signature": "01bcdf497ba0a3935d19b698841d8a68ce2952b0ab8a79fa2c13230f00d4db796780d2b4d8daff91f43ad5da6e8f2ce427751304d9c9c2d2fda0a52e2153ec5c0e" - }, - { - "public_key": "015d2c1e1cff298962c98d53aa9296376daa58de8a7dffa754487467f4c64d0fae", - "signature": "01429cf7edc2d1388ee9df107f304ebc94d4059d7a622dba70741f8ed8f51682e9c9c9b89300397bdd2f5c557b9a14ed74244ac912ed8e5c5289c2abd868a59d05" - }, - { - "public_key": "015da78bc6315643fbcf57d87a50853c67d8b271b615f38f6538f78a844cc4501d", - "signature": "01734fbe3114b375e3cab4c0d0275756f5731b42ba8342ff74d70c060f59e48dea187e2114ae1fd81b20fdbae0b9b23307b3e3f7a4e1b1c62abb928efd23bd4207" - }, - { - "public_key": "0163498976e39a0cce15dbe9788e357db04c734bc6fbef4ad2623a014159782ba0", - "signature": "0159068bb0a69cd4fca57ca62eb82423dfd1c4cb38535e10b360d4ed650c2403e0bee31ca8ecd2ae7b314ca774afd796a2cfc3790cb0616adf5b45423aa8a97507" - }, - { - "public_key": "01669e9e4329ed78e951eb02ca94bb34064af53ebcd64c90d2622cb83345814e4a", - "signature": "01f95b39722f7854d8843a2b8375458e63e50b5b84a9b72147d918341a3f1b515b6d08d3c5856c881d76c4e631e50a1b643f012e54eac1420795abceb606b4e60a" - }, - { - "public_key": "01692afe9954e71ae3049827fcd1e60add077330455edd7aa03705348bd73528e1", - "signature": "012d31664abcbd2083cbb76d6cd1ab5c2d298594637275ff731a9161bb74e1187a62ddd4afd68f9794fd0a06434f8d0282e7dd46fa7cb3140620b8ab8941b44109" - }, - { - "public_key": "016c2dc7038a44912763f52c52e7649bcdfb92a7427a7733f4c2e69e7229afecf3", - "signature": "0102f80abead264eedd941329dee1598c4ba584fc446c958d48078ffaed407f73ddd5e24c9f364980af425aebafdd3540ad5b05c9a2d1294519e1de1b4af961603" - }, - { - "public_key": "016ee08e3f25921bf062b3fe3cabd736c266f8437d418299d61ccad11c6387c8b4", - "signature": "01a46ed9c7edd5f60af12c4808fad08f5f5aa62e2514390626ca3b3293a31ab36b3e7d54630b89815ab3f08cddcca2a663e574cf55fa2a1b57a664fa92e89ba906" - }, - { - "public_key": "016f60a2395e9100c37c8dc2ebfec9bc1f13e3651e5836bad9f20c95ac223777fd", - "signature": "0188b951ef86b26d2fe99ebfed094f00d48d012ddff168d963cd06a88f85e6b609ddf0189bb6b4d509683108b657bf528a8e5f5e183c7efc4e6339cc5c42068206" - }, - { - "public_key": "01703c76b37952e117fea297ab20a60d9c61fb2fb03d4dcf87553089008343fb6c", - "signature": "01cd146d654c015a906dc095082e76b5bcead4b2d83170486ae80717a0ea7a64181f6d6bad688cee99688ae35fb8b25da19a24f88e80da7c91a1cce7ae07d3840a" - }, - { - "public_key": "017399e6fe6c16d6807bcf5706a35ae6eff577c1ecc06436dde4a39b0ffe9859a0", - "signature": "018cf0cb4621e909ea188b4f66bae11ab5ec1537edad18b22ccee61fc7fa55e047781d45fa2be365f1758234efec9b9f6a09e7f3a406e06d636add1a0c523aac0e" - }, - { - "public_key": "017a684f6787e78e68c0063aad5a4fb26448b340d36c0e8aa79d67d82ce03dad28", - "signature": "01f86b7eb31b9ad77da277697c95b403b2e1d89f763f116ad78fc54e7a901cb28fa34305dddc069a19f61bbc0b2a8441b1124e6814869358c8d248fce31684b201" - }, - { - "public_key": "017b3bc41d74d2ac402f572420913328e8ada6608522680000bb6d7340793a71ed", - "signature": "01a1197b23233804d6bebeddec3cc777964d19dd55bff1dc3feb21bf31cca09872d07b84e9a6f572a7e4373219d096a7da3a9d4443df7b9fd137d36ccacdf9cd0c" - }, - { - "public_key": "017d96b9a63abcb61c870a4f55187a0a7ac24096bdb5fc585c12a686a4d892009e", - "signature": "0177862283f119df717712eeb52d6805add2db34b50000a8512b370a417e47ae9fd2e0257968d37dbdf5f6e69713a9a60ae91b501ca01f993af5312b7b63375904" - }, - { - "public_key": "017d9aa0b86413d7ff9a9169182c53f0bacaa80d34c211adab007ed4876af17077", - "signature": "01eee5b7e5fdc5d744f78eb1699cab486152a962f143442b0275172afb603448892402df8d859d0f668a859979e3644f5fc6212371f66f9fb56a140655adc46201" - }, - { - "public_key": "017e84cda47902c0291560f80b0afbeb0df9d7b1aa940bc45baf883bf31dc159fb", - "signature": "0189806c9751f84c332efdac1070533efdb8626d1bdf83337eba3cdf4b934f95ceda21e40885ae7a0a3fc802e96898f2eaf19228581e27ec1291340d263488340e" - }, - { - "public_key": "0181f0cc8a0e029d2f59cd3118729d022cdd530bb4c8cdcf5de8d8c7c3331e0d11", - "signature": "014ad8f164d1ee510ed2a55933a64a6c27014c4836413fa1408176f539a1b1e8038cd7a523227d54aad5bb1835b7a195b9be82866b2a3d25e05635da7179e7e202" - }, - { - "public_key": "01832ba5de98bf18e3e0e9816a091878379e57e962069d5ec1a2d1daa05f652fb0", - "signature": "01379228449527bc1846cad4b31b86310ddc037df675a947ffb178b9748e8ed5cb71a9f77764fc2cf0eb9c5a500ce7854f8879286bcae41068a56bed6165097c01" - }, - { - "public_key": "018af60e4c80d9292ca60034f95e620b213d02c3bf90b72770c2584ee52bdf9e0d", - "signature": "01e5151446d3be9cabc996079ee21a6285eec39863a6243bfa30ddf5c746cf82a5f00f29d2f84f7a62461ee04f633fab34e00f4f3482c6c906d7996dae6b120c01" - }, - { - "public_key": "018d78dfb68f4edc0d654768fe8f2d84e6b244de7664e0a30ece3c438fd0747f30", - "signature": "01f837be31a04d1b590ad0f49c0975343fec41b84c637751ad7c0e7b0283a9a72d51715270a151b8453dd36760fc82b263466a1b7bade789def02b1e299a02d501" - }, - { - "public_key": "018eaa46e69cb19325d4cb9a2cec9440241e4ae83f3ca06fe9b8e4cc35704e4900", - "signature": "01f49928a72d3c1c8df28ee34339da7251f1b36331875a6ddf4c44a3a0e36f7e90bc2bba8e56537cca8a3525aa0ab337ec18c297a6a39ddc3211457025ffa3440d" - }, - { - "public_key": "0195904aa95f0a775126f4b5ac564ba28734231caf696fd20582042fb0497d2385", - "signature": "01049d76db603a8857c14ebd2bdc05a4c0371fdd6604b7674129eccd27566bf617c689954145c9472a3d47f83cf0e0ab6381f7d58b85d579d49a68f82a37106e05" - }, - { - "public_key": "01974787ce4ba017dbe6497da9214db82c73aec88a3ca636b7c3b27f365ffbd6ad", - "signature": "01dae0b4715d21bdf84cce28d00681be25b956a0e11bc1a66171e0e30cd151062500ffd6dcb89b9bf6422963489914f2ad4a3428c68a0c64e1b9d907fa9cc9740a" - }, - { - "public_key": "019945dfe9840841882fa57a19e47f2a091e181c85e35e8acb1c0b7e3cebc7184a", - "signature": "01683f82a8df39ebe194af3fa9529db4d939bf6569595f82562fc60e0d702fdfe5cd7ccb5b447c38e681b6b1f225c47e550aedf68eab71f7318a717e8f43f46a01" - }, - { - "public_key": "019a85d7370f913f0a9f55a12da2b031d8c0a36752cd8fd7ff0b47cff0d4fc57bd", - "signature": "01f43e0e47cfc186c269b50aa432650f428815aba07917cbaeed49dc3498e2fb80ba0f722a85ab44addf510d17ac293dd1321f4b3e8ef6d16dd7d6ee374353fe08" - }, - { - "public_key": "01a3536b5794be5b53972a9bbb56795cb7a4af385a3f1cddb29e253cbcf73586f6", - "signature": "01f907ba070eee9719c5193d6f24c0026765b53e9f907df61dfa53db55f32d0107a5282f60da608109d2b0f214115403c4ec4e0af9602afffe89a57ca7f145ab01" - }, - { - "public_key": "01a8dacb750bcd59ab828143e52b011c38799f8c6a90c61a63793b39dde4b4839a", - "signature": "01a2330cec8ed313992af7deb1b5832980ffe182184470b35784888159a00829f9ad6b73a1e40a27214cedc6cd65fd22a565f18fb519133e7b5f37f2da28db2103" - }, - { - "public_key": "01aa17f7b9889480b1bd34c3f94f263b229c7a9b01dd4dda19c2dd1d38d176c7a0", - "signature": "016ca1bf47182ce50582be0267b066c501c23022fc86b2e10df445696362ae3f74a3bd93e243a23df98a6e5d631486976a5ee21890f558bedf390051d68a3ffe0e" - }, - { - "public_key": "01ad002e37667f90aa982396ebdfcc7d3eea99731241eaad8a0dc20f453f72975a", - "signature": "01024a8d9ecfbd27073acd60478d477b865923fa57f201dab9e4681a695803bd8ebe40b8291529e45ae393a6d03237f380a4562e556f03190220c9ba700287bf0e" - }, - { - "public_key": "01aea86e5fccdf72daa7c65cc8b3d2ca96a006a0dcd70d3617f85fef00b9d78464", - "signature": "01f7a284ce47a0b68888e8425bdbb8a3ae363dc70e8c38219e34e6ad675550e11df46ee7f7b68599d724348191704fd534a06a7c7d3323a5a498286bb2320d2f0f" - }, - { - "public_key": "01b118ef7d8718ccb554a7f8523365f9ae2afb4a7d50ee87a1403136d4d2506907", - "signature": "010b225f61a8a7edc72bee19b8c1538f4d387b784acd69615b0980a01fc1230686ac09c116bd7595c9c565934fd870c34b80cd2d2f014dc5423d9ed4647837570a" - }, - { - "public_key": "01b5d00a38e1783345ffe0bfa8423e026b76480683e0b19966ee47c7f68a827c00", - "signature": "018a7b267fbbd27937cea76f0b4bb67a17b822088944a00a4dd2d1add6acd5635bb8f10ebac85916c7ff94f73ffb6ed8d963392aed81a34f78449c33bea8cf5605" - }, - { - "public_key": "01b71b2d746681b4e0f44ef137d72ee0d42122b08ef569dc65bb0395cb624f99e5", - "signature": "0143f02b5c33a30aa95bea8fa9e2aef877f15db014996a0ee2dce301c7774d1beec602f936a7bef94c2ddd14e9c7b8be7ad9d0f3b33a99f51e1b63af4b984cd400" - }, - { - "public_key": "01b7773ecc2c7b984fa90d75b17f01f2bce563499c4d7b102e75361e2a1fad2f40", - "signature": "01b9d6ae571178dd6386f788de7152e71d58c05c7edffea61fa1b5485ba9771ea8be5cf0b3b594d99bb5adcc928ee1aa8d1d5d4f378a57c588d7d6392d33fa2101" - }, - { - "public_key": "01b7ab364d6d8b7ca29dda70c3a7ddd66b83b8520491629f426b171805c590dfdc", - "signature": "0120c617e1586b99d9caba2f59f1f87badcddf5f11af019cdfd62ca8ae88da6d437fd96bd2efdca0bc4690ba8c3bee6937905919d4aa8051d942f4c702aad04a02" - }, - { - "public_key": "01b9c7300de94c2245e77bae27e84d1549618bc400f6acfe58bb7ec42bc491d160", - "signature": "019d7f15c074500d28abac06127f5f70dd4fadf258e47b785801fa50533bfe2c8e7211241f34d6599319b7e87ffea210ab5ba097fbdeda39503e17559be4a92402" - }, - { - "public_key": "01bc4f13011da02b4bbf9974225f6b1ff8235a65806ae05f684266da6a136c521b", - "signature": "01a8b5105508cf8ce2a4ec5d19a33b836fb014667400577c47e8ba88886f7b26e944d9f760cffb7e5268e484ed590ee4a9a703dac5a731fed2d575df97ca596b0e" - }, - { - "public_key": "01bd483c29aba4fd119bd552475362f37a7d4a0d8a2adcd9fe89c37d2c74c10c1f", - "signature": "01f25cdeb98e38f1bdd183d029f9ca98a613c207befef5f36ddb35bef4537a6abb9434ed9305ae63d570d03aa7fe935289e136ba5460127ac35f3400cf42a6cd06" - }, - { - "public_key": "01c375b425a36de25dc325c9182861679db2f634abcacd9ae2ee27b84ba62ac1f7", - "signature": "014c1bef370b5ea832cf3077164941fd53af33e9c0e12f3b58fa2b2595e90b37180600f5e6ea9fb89269db3e9234470b300a1070178a1578508da3852d4d1a4e04" - }, - { - "public_key": "01c3bd0f019a8917ec8bcc00e94002ac0abe962caa12e1a0a0e028935533bb4328", - "signature": "01ce88a83818512591b77332d5d15525081c9797155dadc75871ee3c1af4c8b64e549d53474f70de57b09ff81128405c94e212d129c0111a3a3937ac50797b9400" - }, - { - "public_key": "01c6a9ead0b10bc11c2ebabc5be039f45bbc536e76eec7a44d96dfa42ba81cdd38", - "signature": "01fef25ee4dc568b9c0400f187440a844e0660762b4c0d262553d2268b4fc89f6744cb206b3e0d7e71b31113ca877425848ade59251d46dedadcd27800ffe60d00" - }, - { - "public_key": "01c86a32f711b172f93a23b31b0e88884883574043a03ff0fcabf4527108587d6b", - "signature": "01a066e0fb1ad6e427938e15e7280aab012f4a95b1e3d41562a0ba3d6242dd2914aac947435aff57bb88c0867547ebb01128314e234cf181ee24c2c13cd7a99a0e" - }, - { - "public_key": "01c8be540a643e6c9df283dd2d2d6be67748f69a3c7bb6cf34471c899b8e858c9a", - "signature": "01cb5eaa0da49b3027aabc5c22686a43636b2684906581877da31283494c1fec7b0e65658439e9fc79f15c2f340dfbace6e4a2594bfeb4914fd474bc86435d2106" - }, - { - "public_key": "01c94932ec3ff43f3744b9a98532c9a2f80bab1a67e43db95ed1182ec61a4f966a", - "signature": "011b79e59b3805701b79db32baefcbf4cde59438cea7f241cb432b6cd7f3cbe29694c32ecb6b2686a25c6749c67aea95ccaa5c9bc7620c147f4f106780a3196e05" - }, - { - "public_key": "01c9d4ecac1606970fa3c8fa8079aa1c04fd5371d55adf96fc6d3952fc27e8bc04", - "signature": "0169198f9f8a7c08a1a97cdd436f6a857ceae59a69209db9d0e43d9aa6d180cb83e3e0ca1e918f63c78916c0c88cd5bd85b94b11d3d416a365f22be08e04b1cb0b" - }, - { - "public_key": "01cb41ee07d1827e243588711d45040fe46402bf3901fb550abfd08d1341700270", - "signature": "01d857b9db3dab16985eda383239b3b8f7ecfaed5adb1838ec06b5dce4d5230b62266173c14cb6c26ca57c85d96b6a3123f739538388d66f7c9c3e2871642c3a05" - }, - { - "public_key": "01cfb69e5f24eef21f479599391286bbb10134baec42b0d2be1ba8e041f2c57a96", - "signature": "01acd3f3834051c5243f64fa194158aa07450582e2985d88479514e418a5050ad7c0d370df3c6752c2db26f5c339f9ec117df14a9acdb88840b88a593e57259007" - }, - { - "public_key": "01d00d2d59c18dab882b1141cb3dbcf1f05078ffedda0551c53c6a3cc1191e4672", - "signature": "010fd5dce4b9b07121b2169e4e3962a9e17f49f2271d6780276e288028b79c8d68856f2aa41196bee01ccad42d6a8d6f9e1a8ab5fe0fe77b101e2f899e6a86ec00" - }, - { - "public_key": "01d0f221c7601b0c93b8bfe7ed534237a0a2910abad2065d27803e953726929ca8", - "signature": "018b881475e16ccb4a80d5e6a68a7f963586cf580e36fa85993e8861470392a99b564b0d7314bf948d2211cffccf399e1fac6d66cc8eedaaa1dd95bc44cd3ab70e" - }, - { - "public_key": "01d1cf9fdcc6cf1e0c55cb4b8e576bc23bdad8ed4fccc50a409a0d16b3975e16cf", - "signature": "015409400c3217d366a99d74a1bf4d4ae2711a599fb4016d1bb89ad7e7be115ac0369d9752ff050a240b627a148305551b6dd31400b891310bc26961ba23cf6209" - }, - { - "public_key": "01d208f5c225bc554a01634c7c124b2729e94beadd307d36219f0108da60f433b0", - "signature": "01d9f95333dd09cedb44aec243a7904b40da8f708509287db77c2905754b7aa81dd8946d822aadbadb10317ab37609fca68c0701bd8b00aa1e01e7cec7c357ef01" - }, - { - "public_key": "01d29e446d9651a41bb2829ac8a21cf9da1eec8531ed57a492b6f1439dbb4d8a16", - "signature": "01580c77041d2deeacea6faccdb14a99bcf8cccd2b894ee5967582dce724ad3ee50c460919046a5858e3f0feb832d12555b41789d0f4809c8bdf19a7122209b202" - }, - { - "public_key": "01d548e27d07445f219b30c3583d6186f45da801e838e3890a8c950d3daa092f29", - "signature": "01f43e4a050e5b345e9569dc9b5788064623d9b1f00087b8be8529685c1a044129c892080c33f00183cad1f2b68855772ddc8803af60e38a6a6b81550687a82701" - }, - { - "public_key": "01dc22c79d13be95f8868ae60d74c372a3ca5288bdf62f58b2ddb7de32faa74c05", - "signature": "01442e1521919d665e897919f6acb320c1a35e14bb5435add280baf5a1745da2c70eece7e34dd5bb0c06bb8614dc029b52c76f39aeba7f4b5a6766a4156069440a" - }, - { - "public_key": "01de03eff88a86da29abfb9eb84af58f3b908db49ca9a7cee72a6b2179e3c63559", - "signature": "012560e2dd95dbe231c2127184de981644192eade684e6d6f89a5895a4e93ab4978f69a6fc1bfe7f73ff1c475c84d25c5a8082bcdf07d9bf95f34acf981a637d08" - }, - { - "public_key": "01df81e1ecb702749c629aadc62082be23203bed47ea49bcfa0f3d98c3d8b349b8", - "signature": "01fc48cbc7e887a2916ac952f3c1bdf22ae1984260bbd6c7b952c61244f42d7bb269c55322ef9e0f9dfbb6c6ec2ae6144b0bb5c87bf884b06c25a3c63129b90a07" - }, - { - "public_key": "01e412246798e9c3040233a89d47e7647d762fd0b4bcc0ec0286a55ba4d6768713", - "signature": "01161438fe1664cd658db4f01f452989975809999f1b5c9f94fd844e6e805c0c5d628c4053077646a4ece6f7ff573fcd0bd6d45b6c9b5c4434e2f04b6c3c797909" - }, - { - "public_key": "01e6315e4e7d58929c52d9398934feca14b43be0b71d31ca80d202276862bd50fe", - "signature": "01cc6e52173aa666eecdd45ed4b98ee8988521fcd1b2c611839859381b0a6ba50f82e7ac2bc34cd9de8b92e2f0de6ff1a3b18568131997b7d46f9e7fbf327b9601" - }, - { - "public_key": "01e8121a2586a6add8a65990080633adfa4e0d32088d36d7fb6f6d3ede1bd7b823", - "signature": "018db27813db42f88a70bccd385f1aaecbd4c25f269fa4c4ac207df8a8e6a43436fbfd2e8b69313cf70cd6f7a8383ffd5a2db7b9b105a1101f58e2c6f7be233a0a" - }, - { - "public_key": "01ee3d205fe314de0739fac7264c97af5ccc4cffec391cae5bcb6f87e2dc2df079", - "signature": "01d7349c0a4b54030049b9713e5705aaca4c68357996570c4812897b05c047b133638586e9654e3f11e4ee6e05885ac5b2d09ef1ae0a5dcb0368edb15499a8740a" - }, - { - "public_key": "01f340df2c32f25391e8f7924a99e93cab3a6f230ff7af1cacbfc070772cbebd94", - "signature": "018aed086a03f0eb6815e9ab51b52c0448dc790261698a486edada205f5a949410fc6d7dd2a285da0bd5f86bb340c89d2cec55102cb783c3350e4198e419797501" - }, - { - "public_key": "01fe19d0fd010dfecc4f2a812c396bef932cd8f11b3855cc5ec3f6bd9545d58894", - "signature": "01048f2d98f7f59a25047c0e8207f6b1a20af85b222ec64b90e6c6f74f93d8c127f5c1b495394e647a9099d407bb8ecee29e7752e7ad1baca976abb14e1481a206" - }, - { - "public_key": "020377bc3ad54b5505971e001044ea822a3f6f307f8dc93fa45a05b7463c0a053bed", - "signature": "0237debde306c2d4c7bfca7480da5c19208f20733b8afeda23cb688f432369c62b24d9b520b16fe0960ccb74ba2826f16b862b5e46c1bd2d2fc27e9caadd4083ab" - } - ] -}