pub mod fees;
pub mod keys;
pub mod log_markers;
pub mod register;
pub mod utils;
mod address;
mod cache;
mod chunk;
mod errors;
mod identities;
pub use crate::messaging::{
data::{Error as DataError, RegisterCmd},
SectionSig,
};
pub use address::{ChunkAddress, DataAddress, RegisterAddress, SpentbookAddress};
pub use cache::Cache;
pub use chunk::Chunk;
pub use errors::{Error, Result};
pub use identities::{ClientId, NodeId, Participant};
pub use keys::{
keypair::{BlsKeypairShare, Encryption, Keypair, OwnerType, Signing},
public_key::PublicKey,
secret_key::{bls_secret_from_hex, SecretKey},
signature::{Signature, SignatureShare},
};
use serde::{Deserialize, Serialize};
use xor_name::XorName;
pub const SPENTBOOK_TYPE_TAG: u64 = 0;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ReplicatedRegisterLog {
pub address: RegisterAddress,
pub op_log: Vec<RegisterCmd>,
}
#[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize)]
pub enum ReplicatedData {
Chunk(Chunk),
RegisterWrite(RegisterCmd),
RegisterLog(ReplicatedRegisterLog),
SpentbookWrite(RegisterCmd),
SpentbookLog(ReplicatedRegisterLog),
}
impl ReplicatedData {
pub fn name(&self) -> XorName {
match self {
Self::Chunk(chunk) => *chunk.name(),
Self::RegisterLog(log) => *log.address.name(),
Self::RegisterWrite(cmd) => *cmd.dst_address().name(),
Self::SpentbookLog(log) => *log.address.name(),
Self::SpentbookWrite(cmd) => *cmd.dst_address().name(),
}
}
pub fn address(&self) -> DataAddress {
match self {
Self::Chunk(chunk) => DataAddress::Bytes(*chunk.address()),
Self::RegisterLog(log) => DataAddress::Register(log.address),
Self::RegisterWrite(cmd) => DataAddress::Register(cmd.dst_address()),
Self::SpentbookLog(log) => {
DataAddress::Spentbook(SpentbookAddress::new(*log.address.name()))
}
Self::SpentbookWrite(cmd) => {
DataAddress::Spentbook(SpentbookAddress::new(*cmd.dst_address().name()))
}
}
}
}