package result import ( "github.com/nspcc-dev/neo-go/pkg/core/block" "github.com/nspcc-dev/neo-go/pkg/core/blockchainer" "github.com/nspcc-dev/neo-go/pkg/core/transaction" "github.com/nspcc-dev/neo-go/pkg/encoding/address" "github.com/nspcc-dev/neo-go/pkg/io" "github.com/nspcc-dev/neo-go/pkg/util" ) type ( // Header wrapper used for the representation of // block header on the RPC Server. Header struct { Hash util.Uint256 `json:"hash"` Size int `json:"size"` Version uint32 `json:"version"` PrevBlockHash util.Uint256 `json:"previousblockhash"` MerkleRoot util.Uint256 `json:"merkleroot"` Timestamp uint64 `json:"time"` Index uint32 `json:"index"` NextConsensus string `json:"nextconsensus"` Witnesses []transaction.Witness `json:"witnesses"` Confirmations uint32 `json:"confirmations"` NextBlockHash *util.Uint256 `json:"nextblockhash,omitempty"` } ) // NewHeader creates a new Header wrapper. func NewHeader(h *block.Header, chain blockchainer.Blockchainer) Header { res := Header{ Hash: h.Hash(), Size: io.GetVarSize(h), Version: h.Version, PrevBlockHash: h.PrevHash, MerkleRoot: h.MerkleRoot, Timestamp: h.Timestamp, Index: h.Index, NextConsensus: address.Uint160ToString(h.NextConsensus), Witnesses: []transaction.Witness{h.Script}, Confirmations: chain.BlockHeight() - h.Index + 1, } hash := chain.GetHeaderHash(int(h.Index) + 1) if !hash.Equals(util.Uint256{}) { res.NextBlockHash = &hash } return res }