101 lines
1.9 KiB
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)
|
|
}
|