Serialization

Block Header

Field Type Length Present
nVersion signed int 4 bytes Always
hashPrevBlock uint256 32 bytes Always
hashMerkleRoot uint256 32 bytes Always
nTime unsigned int 4 bytes Always
nBits unsigned int 4 bytes Always
nNonce unsigned int 4 bytes Always

Block

Field Type Length Present
blockHeader Block Header 70 bytes Always
vTx Transaction vector Variable Always
vchBlockSig unsigned char vector Variable Always

Bulletproof Range Proof

Field Type Length Present
V_size Compact size Variable Always
V G1Element vector V_size If V_size > 0
L_size Compact size Variable Always
L G1Element vector L_size If L_size > 0
R_size Compact size Variable Always
R G1Element vector R_size If R_size > 0
A G1Element 48 bytes Always
S G1Element 48 bytes Always
T1 G1Element 48 bytes Always
T2 G1Element 48 bytes Always
taux Scalar 32 bytes Always
mu Scalar 32 bytes Always
a Scalar 32 bytes Always
b Scalar 32 bytes Always
t Scalar 32 bytes Always

Transaction

Field Type Length Present
nVersion signed int 4 bytes Always
nTime unsigned int 4 bytes Always
vin Transaction Input vector Variable Always
flags unsigned char 1 byte If vin.size() == 0
vin Transaction Input vector Variable If vin.size() == 0
vout Transaction Output vector Variable If vin.size() == 0
vout Transaction Output vector Variable If vin.size() > 0
wit TxWitness vector Variable If flags&1
nLockTime unsinged int 4 bytes Always
strDZeel string Variable If nVersion >= 2
vchBalanceSig unsigned char vector 96 bytes If nVersion & 0x30
vchTxSig unsigned char vector 96 bytes If nVersion & 0x10

Transaction Input

Field Type Length Present
prevout OutPoint 36 bytes Always
scriptSig unsigned char vector Variable Always
nSequence unsigned int 4 bytes Always

Transaction Output

Field Type Length Present
nValue unsigned int 8 bytes Always
nValue unsinged int 8 bytes If nValue == ~(uint64_t)0
ephemeralKey unsigned char vector 48 bytes If nValue == ~(uint64_t)0
outputKey unsigned char vector 48 bytes If nValue == ~(uint64_t)0
spendingKey unsigned char vector 48 bytes If nValue == ~(uint64_t)0
bp Bulletproof Range Proof   If nValue == ~(uint64_t)0
scriptPubKey unsigned char vector Variable Always

Scalar

Field Type Length Present
data unsigned char vector 32 Always

G1Element

Field Type Length Present
data unsigned char vector 48 Always

OutPoint

Field Type Length Present
hash uint256 32 Always
n unsigned int 4 Always

TxWitness

Field Type Length Present
stack vector of unsigned char vectors Variable Always