added BlockTemplate struct to rpc package
This commit is contained in:
parent
082d81eec6
commit
88b4f1aeee
|
@ -0,0 +1,79 @@
|
||||||
|
// TODO: remove after implementing getblocktmplate RPC
|
||||||
|
#![warn(dead_code)]
|
||||||
|
|
||||||
|
use std::collections::HashMap;
|
||||||
|
use super::hash::H256;
|
||||||
|
use super::raw_transaction::RawTransaction;
|
||||||
|
|
||||||
|
/// Block template as described in:
|
||||||
|
/// https://github.com/bitcoin/bips/blob/master/bip-0022.mediawiki
|
||||||
|
/// https://github.com/bitcoin/bips/blob/master/bip-0023.mediawiki
|
||||||
|
/// https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki#getblocktemplate_changes
|
||||||
|
/// https://github.com/bitcoin/bips/blob/master/bip-0145.mediawiki
|
||||||
|
pub struct BlockTemplate {
|
||||||
|
/// The preferred block version
|
||||||
|
pub version: u32,
|
||||||
|
/// Specific block rules that are to be enforced
|
||||||
|
pub rules: Vec<String>,
|
||||||
|
/// Set of pending, supported versionbit (BIP 9) softfork deployments
|
||||||
|
/// Keys: named softfork rules
|
||||||
|
/// Values: identifies the bit number as indicating acceptance and readiness for given key
|
||||||
|
pub vbavailable: Option<HashMap<String, u32>>,
|
||||||
|
/// Bit mask of versionbits the server requires set in submissions
|
||||||
|
pub vbrequired: Option<u32>,
|
||||||
|
/// The hash of previous (best known) block
|
||||||
|
pub previousblockhash: H256,
|
||||||
|
/// Contents of non-coinbase transactions that should be included in the next block
|
||||||
|
pub transactions: Vec<BlockTemplateTransaction>,
|
||||||
|
/// Data that should be included in the coinbase's scriptSig content
|
||||||
|
/// Keys: ignored
|
||||||
|
/// Values: value to be included in scriptSig
|
||||||
|
pub coinbaseaux: Option<HashMap<String, String>>,
|
||||||
|
/// Maximum allowable input to coinbase transaction, including the generation award and transaction fees (in Satoshis)
|
||||||
|
pub coinbasevalue: Option<u64>,
|
||||||
|
/// information for coinbase transaction
|
||||||
|
pub coinbasetxn: Option<BlockTemplateTransaction>,
|
||||||
|
/// The hash target
|
||||||
|
pub target: H256,
|
||||||
|
/// The minimum timestamp appropriate for next block time in seconds since epoch (Jan 1 1970 GMT)
|
||||||
|
pub mintime: Option<i64>,
|
||||||
|
/// List of ways the block template may be changed, e.g. 'time', 'transactions', 'prevblock'
|
||||||
|
pub mutable: Option<Vec<String>>,
|
||||||
|
/// A range of valid nonces (constant 00000000ffffffff)
|
||||||
|
pub noncerange: Option<String>,
|
||||||
|
/// Limit of sigops in blocks
|
||||||
|
pub sigoplimit: Option<i64>,
|
||||||
|
/// Limit of block size
|
||||||
|
pub sizelimit: Option<u32>,
|
||||||
|
/// Limit of block weight
|
||||||
|
pub weightlimit: Option<u32>,
|
||||||
|
/// Current timestamp in seconds since epoch (Jan 1 1970 GMT)
|
||||||
|
pub curtime: i64,
|
||||||
|
/// Compressed target of next block
|
||||||
|
pub bits: u32,
|
||||||
|
/// The height of the next block
|
||||||
|
pub height: u32,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Transaction data as included in `BlockTemplate`
|
||||||
|
pub struct BlockTemplateTransaction {
|
||||||
|
/// Transaction data encoded in hexadecimal
|
||||||
|
pub data: RawTransaction,
|
||||||
|
/// Transaction id encoded in little-endian hexadecimal
|
||||||
|
pub txid: Option<H256>,
|
||||||
|
/// Hash encoded in little-endian hexadecimal (including witness data)
|
||||||
|
pub hash: Option<H256>,
|
||||||
|
/// Transactions before this one (by 1-based index in 'transactions' list) that must be present in the final block if this one is
|
||||||
|
pub depends: Option<Vec<u64>>,
|
||||||
|
/// Difference in value between transaction inputs and outputs (in Satoshis).
|
||||||
|
/// For coinbase transactions, this is a negative Number of the total collected block fees (ie, not including the block subsidy).
|
||||||
|
/// If key is not present, fee is unknown and clients MUST NOT assume there isn't one
|
||||||
|
pub fee: Option<Option<i64>>,
|
||||||
|
/// Total SigOps cost, as counted for purposes of block limits.
|
||||||
|
/// If key is not present, sigop cost is unknown and clients MUST NOT assume it is zero.
|
||||||
|
pub sigops: Option<Option<i64>>,
|
||||||
|
/// Total transaction weight, as counted for purposes of block limits.
|
||||||
|
pub weight: Option<i64>,
|
||||||
|
/// If provided and true, this transaction must be in the final block
|
||||||
|
pub required: Option<Option<bool>>,
|
||||||
|
}
|
|
@ -1,7 +1,9 @@
|
||||||
|
mod block_template;
|
||||||
mod bytes;
|
mod bytes;
|
||||||
mod hash;
|
mod hash;
|
||||||
mod raw_transaction;
|
mod raw_transaction;
|
||||||
|
|
||||||
|
pub use self::block_template::{BlockTemplate, BlockTemplateTransaction};
|
||||||
pub use self::bytes::Bytes;
|
pub use self::bytes::Bytes;
|
||||||
pub use self::hash::H256;
|
pub use self::hash::H256;
|
||||||
pub use self::raw_transaction::RawTransaction;
|
pub use self::raw_transaction::RawTransaction;
|
||||||
|
|
Loading…
Reference in New Issue