decred header

2019-04-11  本文已影响0人  古则
// MaxBlockHeaderPayload is the maximum number of bytes a block header can be.
// Version 4 bytes + PrevBlock 32 bytes + MerkleRoot 32 bytes + StakeRoot 32
// bytes + VoteBits 2 bytes + FinalState 6 bytes + Voters 2 bytes + FreshStake 1
// byte + Revocations 1 bytes + PoolSize 4 bytes + Bits 4 bytes + SBits 8 bytes
// + Height 4 bytes + Size 4 bytes + Timestamp 4 bytes + Nonce 4 bytes +
// ExtraData 32 bytes + StakeVersion 4 bytes.
// --> Total 180 bytes.
// BlockHeader defines information about a block and is used in the decred
// block (MsgBlock) and headers (MsgHeaders) messages.
type BlockHeader struct {
    // Version of the block.  This is not the same as the protocol version.
    // hex [:8]
    Version int32
    // Hash of the previous block in the block chain.
    // hex [8:72]
    PrevBlock chainhash.Hash
    // Merkle tree reference to hash of all transactions for the block.
    // hex [72:136]
    MerkleRoot chainhash.Hash
    // Merkle tree reference to hash of all stake transactions for the block.
    // hex [136:200]
    StakeRoot chainhash.Hash
    // Votes on the previous merkleroot and yet undecided parameters.
    // hex [200:204]
    VoteBits uint16
    // Final state of the PRNG used for ticket selection in the lottery.
    // hex [204:216]
    FinalState [6]byte
    // Number of participating voters for this block.
    // hex [216:220]
    Voters uint16
    // Number of new sstx in this block.
    // hex [220:222]
    FreshStake uint8
    // Number of ssrtx present in this block.
    // hex [222:224]
    Revocations uint8
    // Size of the ticket pool.
    // hex [224:232]
    PoolSize uint32
    // Difficulty target for the block.
    // hex [232:240]
    Bits uint32
    // Stake difficulty target.
    // hex [240:256]
    SBits int64
    // Height is the block height in the block chain.
    // hex [256:264]
    Height uint32
    // Size is the size of the serialized block in its entirety.
    // hex [264:272]
    Size uint32
    // Time the block was created.  This is, unfortunately, encoded as a
    // uint32 on the wire and therefore is limited to 2106.
    // hex [272:280]
    Timestamp time.Time
    // Nonce is technically a part of ExtraData, but we use it as the
    // classical 4-byte nonce here.
    // hex [280:288]
    Nonce uint32
    // ExtraData is used to encode the nonce or any other extra data
    // that might be used later on in consensus.
    // hex [288:352]
    ExtraData [32]byte
    // StakeVersion used for voting.
    // hex [352:360]
    StakeVersion uint32
}

070000009999de88d93b264493a874833d7a126a3115add136bbfe293b8aae0000000000c181354dd560e2f9fdfc7838f0840d0a2673fa844e87baef553c935119920806026405050ceef4a949be23c772526fd83eec1be8c8550c2c152743607260f35c01003de7be51369b050006007d1600006c32071c2262a25e0100000039930200c71a000039b5ad5c000000000000000000000000000000000000000000000000000000000000000000000000070000008000000100000000000005a0

getwork

blockVersion := headerE[:8]
prevBlock := headerE[8:72]
genTx1 := headerE[72:288]
nBits := headerE[232:240]
nTime := headerE[272:280]
genTx2 := headerE[352:360]
HeaderHeight := binary.LittleEndian.Uint32(headerE[256:264])
上一篇 下一篇

猜你喜欢

热点阅读