neo-go/pkg/rpc/wrappers/block.go

34 lines
803 B
Go
Raw Normal View History

package wrappers
import (
"github.com/CityOfZion/neo-go/pkg/core"
"github.com/CityOfZion/neo-go/pkg/util"
)
type (
// Block wrapper used for the representation of
// core.Block / core.BlockBase on the RPC Server.
Block struct {
*core.Block
Confirmations uint32 `json:"confirmations"`
NextBlockHash util.Uint256 `json:"nextblockhash,omitempty"`
Hash util.Uint256 `json:"hash"`
}
)
// NewBlock creates a new Block wrapper.
func NewBlock(block *core.Block, chain core.Blockchainer) Block {
blockWrapper := Block{
Block: block,
Hash: block.Hash(),
}
hash := chain.GetHeaderHash(int(block.Index) + 1)
if !hash.Equals(util.Uint256{}) {
blockWrapper.NextBlockHash = hash
}
blockWrapper.Confirmations = chain.BlockHeight() - block.Index - 1
return blockWrapper
}