tendermint/blocks/block.go

101 lines
1.9 KiB
Go

package blocks
import (
. "github.com/tendermint/tendermint/binary"
"io"
)
/* Block */
type Block struct {
Header
Validation
Data
// Checkpoint
}
func ReadBlock(r io.Reader) *Block {
return nil
}
func (self *Block) Validate() bool {
return false
}
/* Block > Header */
type Header struct {
Name String
Height UInt64
Fees UInt64
Time UInt64
PrevHash ByteSlice
ValidationHash ByteSlice
DataHash ByteSlice
}
func ReadHeader(r io.Reader) *Header {
return nil
}
func (self *Header) WriteTo(w io.Writer) (n int64, err error) {
var n_ int64
n_, err = self.Name.WriteTo(w)
n += n_; if err != nil { return n, err }
n_, err = self.Height.WriteTo(w)
n += n_; if err != nil { return n, err }
n_, err = self.Fees.WriteTo(w)
n += n_; if err != nil { return n, err }
n_, err = self.Time.WriteTo(w)
n += n_; if err != nil { return n, err }
n_, err = self.PrevHash.WriteTo(w)
n += n_; if err != nil { return n, err }
n_, err = self.ValidationHash.WriteTo(w)
n += n_; if err != nil { return n, err }
n_, err = self.DataHash.WriteTo(w)
n += n_; return
}
/* Block > Validation */
type Validation struct {
Signatures []*Signature
Adjustments []Adjustment
}
func ReadValidation(r io.Reader) *Validation {
return nil
}
/* Block > Data */
type Data struct {
Txs []Tx
}
func ReadData(r io.Reader) *Data {
return nil
}
func (self *Data) WriteTo(w io.Writer) (n int64, err error) {
var n_ int64
for _, tx := range self.Txs {
n_, err = tx.WriteTo(w)
n += n_
if err != nil { return }
}
return
}
func (self *Data) MerkleHash() ByteSlice {
bs := make([]Binary, 0, len(self.Txs))
for i, tx := range self.Txs {
bs[i] = Binary(tx)
}
return merkle.HashFromBinarySlice(bs)
}