block: rename BlockBase to Base

This commit is contained in:
Evgenii Stratonikov 2020-01-15 11:29:50 +03:00
parent 63c56cca5c
commit 489b88afbb
14 changed files with 41 additions and 41 deletions

View file

@ -20,7 +20,7 @@ var _ block.Block = (*neoBlock)(nil)
// Sign implements block.Block interface.
func (n *neoBlock) Sign(key crypto.PrivateKey) error {
data := n.BlockBase.GetHashableData()
data := n.Base.GetHashableData()
sig, err := key.Sign(data[:])
if err != nil {
return err
@ -33,7 +33,7 @@ func (n *neoBlock) Sign(key crypto.PrivateKey) error {
// Verify implements block.Block interface.
func (n *neoBlock) Verify(key crypto.PublicKey, sign []byte) error {
data := n.BlockBase.GetHashableData()
data := n.Base.GetHashableData()
return key.Verify(data, sign)
}

View file

@ -14,7 +14,7 @@ import (
// Block represents one block in the chain.
type Block struct {
// The base of the block.
BlockBase
Base
// Transaction list.
Transactions []*transaction.Transaction `json:"tx"`
@ -26,7 +26,7 @@ type Block struct {
// Header returns the Header of the Block.
func (b *Block) Header() *Header {
return &Header{
BlockBase: b.BlockBase,
Base: b.Base,
}
}
@ -126,14 +126,14 @@ func (b *Block) Trim() ([]byte, error) {
// DecodeBinary decodes the block from the given BinReader, implementing
// Serializable interface.
func (b *Block) DecodeBinary(br *io.BinReader) {
b.BlockBase.DecodeBinary(br)
b.Base.DecodeBinary(br)
br.ReadArray(&b.Transactions)
}
// EncodeBinary encodes the block to the given BinWriter, implementing
// Serializable interface.
func (b *Block) EncodeBinary(bw *io.BinWriter) {
b.BlockBase.EncodeBinary(bw)
b.Base.EncodeBinary(bw)
bw.WriteArray(b.Transactions)
}

View file

@ -9,8 +9,8 @@ import (
"github.com/CityOfZion/neo-go/pkg/util"
)
// BlockBase holds the base info of a block
type BlockBase struct {
// Base holds the base info of a block
type Base struct {
// Version of the block.
Version uint32 `json:"version"`
@ -47,14 +47,14 @@ type BlockBase struct {
verificationHash util.Uint256
}
// Verify verifies the integrity of the BlockBase.
func (b *BlockBase) Verify() bool {
// Verify verifies the integrity of the Base.
func (b *Base) Verify() bool {
// TODO: Need a persisted blockchain for this.
return true
}
// Hash returns the hash of the block.
func (b *BlockBase) Hash() util.Uint256 {
func (b *Base) Hash() util.Uint256 {
if b.hash.Equals(util.Uint256{}) {
b.createHash()
}
@ -62,7 +62,7 @@ func (b *BlockBase) Hash() util.Uint256 {
}
// VerificationHash returns the hash of the block used to verify it.
func (b *BlockBase) VerificationHash() util.Uint256 {
func (b *Base) VerificationHash() util.Uint256 {
if b.verificationHash.Equals(util.Uint256{}) {
b.createHash()
}
@ -70,7 +70,7 @@ func (b *BlockBase) VerificationHash() util.Uint256 {
}
// DecodeBinary implements Serializable interface.
func (b *BlockBase) DecodeBinary(br *io.BinReader) {
func (b *Base) DecodeBinary(br *io.BinReader) {
b.decodeHashableFields(br)
padding := []byte{0}
@ -84,14 +84,14 @@ func (b *BlockBase) DecodeBinary(br *io.BinReader) {
}
// EncodeBinary implements Serializable interface
func (b *BlockBase) EncodeBinary(bw *io.BinWriter) {
func (b *Base) EncodeBinary(bw *io.BinWriter) {
b.encodeHashableFields(bw)
bw.WriteBytes([]byte{1})
b.Script.EncodeBinary(bw)
}
// GetHashableData returns serialized hashable data of the block.
func (b *BlockBase) GetHashableData() []byte {
func (b *Base) GetHashableData() []byte {
buf := io.NewBufBinWriter()
// No error can occure while encoding hashable fields.
b.encodeHashableFields(buf.BinWriter)
@ -105,7 +105,7 @@ func (b *BlockBase) GetHashableData() []byte {
// version, PrevBlock, MerkleRoot, timestamp, and height, the nonce, NextMiner.
// Since MerkleRoot already contains the hash value of all transactions,
// the modification of transaction will influence the hash value of the block.
func (b *BlockBase) createHash() {
func (b *Base) createHash() {
bb := b.GetHashableData()
b.verificationHash = hash.Sha256(bb)
b.hash = hash.Sha256(b.verificationHash.BytesBE())
@ -113,7 +113,7 @@ func (b *BlockBase) createHash() {
// encodeHashableFields will only encode the fields used for hashing.
// see Hash() for more information about the fields.
func (b *BlockBase) encodeHashableFields(bw *io.BinWriter) {
func (b *Base) encodeHashableFields(bw *io.BinWriter) {
bw.WriteU32LE(b.Version)
bw.WriteBytes(b.PrevHash[:])
bw.WriteBytes(b.MerkleRoot[:])
@ -125,7 +125,7 @@ func (b *BlockBase) encodeHashableFields(bw *io.BinWriter) {
// decodeHashableFields decodes the fields used for hashing.
// see Hash() for more information about the fields.
func (b *BlockBase) decodeHashableFields(br *io.BinReader) {
func (b *Base) decodeHashableFields(br *io.BinReader) {
b.Version = br.ReadU32LE()
br.ReadBytes(b.PrevHash[:])
br.ReadBytes(b.MerkleRoot[:])

View file

@ -79,7 +79,7 @@ func TestTrimmedBlock(t *testing.T) {
func newDumbBlock() *Block {
return &Block{
BlockBase: BlockBase{
Base: Base{
Version: 0,
PrevHash: hash.Sha256([]byte("a")),
MerkleRoot: hash.Sha256([]byte("b")),
@ -291,9 +291,9 @@ func TestBlockSizeCalculation(t *testing.T) {
}
func TestBlockCompare(t *testing.T) {
b1 := Block{BlockBase: BlockBase{Index: 1}}
b2 := Block{BlockBase: BlockBase{Index: 2}}
b3 := Block{BlockBase: BlockBase{Index: 3}}
b1 := Block{Base: Base{Index: 1}}
b2 := Block{Base: Base{Index: 2}}
b3 := Block{Base: Base{Index: 3}}
assert.Equal(t, 1, b2.Compare(&b1))
assert.Equal(t, 0, b2.Compare(&b2))
assert.Equal(t, -1, b2.Compare(&b3))

View file

@ -9,14 +9,14 @@ import (
// Header holds the head info of a block.
type Header struct {
// Base of the block.
BlockBase
Base
// Padding that is fixed to 0.
_ uint8
}
// DecodeBinary implements Serializable interface.
func (h *Header) DecodeBinary(r *io.BinReader) {
h.BlockBase.DecodeBinary(r)
h.Base.DecodeBinary(r)
padding := []byte{0}
r.ReadBytes(padding)
@ -28,6 +28,6 @@ func (h *Header) DecodeBinary(r *io.BinReader) {
// EncodeBinary implements Serializable interface.
func (h *Header) EncodeBinary(w *io.BinWriter) {
h.BlockBase.EncodeBinary(w)
h.Base.EncodeBinary(w)
w.WriteBytes([]byte{0})
}

View file

@ -12,7 +12,7 @@ import (
)
func TestHeaderEncodeDecode(t *testing.T) {
header := Header{BlockBase: BlockBase{
header := Header{Base: Base{
Version: 0,
PrevHash: hash.Sha256([]byte("prevhash")),
MerkleRoot: hash.Sha256([]byte("merkleroot")),

View file

@ -262,7 +262,7 @@ func TestGetBlock_NotExists(t *testing.T) {
func TestPutGetBlock(t *testing.T) {
dao := newDao(storage.NewMemoryStore())
b := &block.Block{
BlockBase: block.BlockBase{
Base: block.Base{
Script: transaction.Witness{
VerificationScript: []byte{byte(opcode.PUSH1)},
InvocationScript: []byte{byte(opcode.NOP)},
@ -303,7 +303,7 @@ func TestGetCurrentHeaderHeight_NoHeader(t *testing.T) {
func TestGetCurrentHeaderHeight_Store(t *testing.T) {
dao := newDao(storage.NewMemoryStore())
b := &block.Block{
BlockBase: block.BlockBase{
Base: block.Base{
Script: transaction.Witness{
VerificationScript: []byte{byte(opcode.PUSH1)},
InvocationScript: []byte{byte(opcode.NOP)},

View file

@ -62,7 +62,7 @@ func newBlock(index uint32, txs ...*transaction.Transaction) *block.Block {
VerificationScript: valScript,
}
b := &block.Block{
BlockBase: block.BlockBase{
Base: block.Base{
Version: 0,
PrevHash: newBlockPrevHash,
Timestamp: uint32(time.Now().UTC().Unix()) + index,
@ -144,7 +144,7 @@ func getBlockData(i int) (map[string]interface{}, error) {
func newDumbBlock() *block.Block {
return &block.Block{
BlockBase: block.BlockBase{
Base: block.Base{
Version: 0,
PrevHash: hash.Sha256([]byte("a")),
MerkleRoot: hash.Sha256([]byte("b")),

View file

@ -25,7 +25,7 @@ func createGenesisBlock(cfg config.ProtocolConfiguration) (*block.Block, error)
return nil, err
}
base := block.BlockBase{
base := block.Base{
Version: 0,
PrevHash: util.Uint256{},
Timestamp: uint32(time.Date(2016, 7, 15, 15, 8, 21, 0, time.UTC).Unix()),
@ -50,7 +50,7 @@ func createGenesisBlock(cfg config.ProtocolConfiguration) (*block.Block, error)
scriptOut := hash.Hash160(rawScript)
b := &block.Block{
BlockBase: base,
Base: base,
Transactions: []*transaction.Transaction{
{
Type: transaction.MinerType,

View file

@ -15,7 +15,7 @@ func TestBlockQueue(t *testing.T) {
bq := newBlockQueue(0, chain, zaptest.NewLogger(t))
blocks := make([]*block.Block, 11)
for i := 1; i < 11; i++ {
blocks[i] = &block.Block{BlockBase: block.BlockBase{Index: uint32(i)}}
blocks[i] = &block.Block{Base: block.Base{Index: uint32(i)}}
}
// not the ones expected currently
for i := 3; i < 5; i++ {

View file

@ -30,7 +30,7 @@ func newTestHeaders(n int) *Headers {
for i := range headers.Hdrs {
headers.Hdrs[i] = &block.Header{
BlockBase: block.BlockBase{
Base: block.Base{
Index: uint32(i + 1),
Script: transaction.Witness{
InvocationScript: []byte{0x0},

View file

@ -8,7 +8,7 @@ import (
// MerkleBlock represents a merkle block packet payload.
type MerkleBlock struct {
*block.BlockBase
*block.Base
TxCount int
Hashes []util.Uint256
Flags []byte
@ -16,8 +16,8 @@ type MerkleBlock struct {
// DecodeBinary implements Serializable interface.
func (m *MerkleBlock) DecodeBinary(br *io.BinReader) {
m.BlockBase = &block.BlockBase{}
m.BlockBase.DecodeBinary(br)
m.Base = &block.Base{}
m.Base.DecodeBinary(br)
m.TxCount = int(br.ReadVarUint())
br.ReadArray(&m.Hashes)
@ -26,8 +26,8 @@ func (m *MerkleBlock) DecodeBinary(br *io.BinReader) {
// EncodeBinary implements Serializable interface.
func (m *MerkleBlock) EncodeBinary(bw *io.BinWriter) {
m.BlockBase = &block.BlockBase{}
m.BlockBase.EncodeBinary(bw)
m.Base = &block.Base{}
m.Base.EncodeBinary(bw)
bw.WriteVarUint(uint64(m.TxCount))
bw.WriteArray(m.Hashes)

View file

@ -8,7 +8,7 @@ import (
type (
// Block wrapper used for the representation of
// block.Block / block.BlockBase on the RPC Server.
// block.Block / block.Base on the RPC Server.
Block struct {
*block.Block
Confirmations uint32 `json:"confirmations"`

View file

@ -24,7 +24,7 @@ type TransactionOutputRaw struct {
// NewTransactionOutputRaw returns a new ransactionOutputRaw object.
func NewTransactionOutputRaw(tx *transaction.Transaction, header *block.Header, chain core.Blockchainer) TransactionOutputRaw {
// confirmations formula
confirmations := int(chain.BlockHeight() - header.BlockBase.Index + 1)
confirmations := int(chain.BlockHeight() - header.Base.Index + 1)
// set index position
for i, o := range tx.Outputs {
o.Position = i