use crate::tx::{ScriptPublicKey, Transaction};
use serde::{Deserialize, Serialize};
#[derive(PartialEq, Eq, Debug, Clone)]
pub struct MinerData<T: AsRef<[u8]> = Vec<u8>> {
pub script_public_key: ScriptPublicKey,
pub extra_data: T,
}
impl<T: AsRef<[u8]>> MinerData<T> {
pub fn new(script_public_key: ScriptPublicKey, extra_data: T) -> Self {
Self { script_public_key, extra_data }
}
}
#[derive(PartialEq, Eq, Debug)]
pub struct CoinbaseData<T: AsRef<[u8]> = Vec<u8>> {
pub blue_score: u64,
pub subsidy: u64,
pub miner_data: MinerData<T>,
}
#[derive(Clone, Serialize, Deserialize, Debug)]
pub struct BlockRewardData {
pub subsidy: u64,
pub total_fees: u64,
pub script_public_key: ScriptPublicKey,
}
impl BlockRewardData {
pub fn new(subsidy: u64, total_fees: u64, script_public_key: ScriptPublicKey) -> Self {
Self { subsidy, total_fees, script_public_key }
}
}
pub struct CoinbaseTransactionTemplate {
pub tx: Transaction,
pub has_red_reward: bool, }