Browse Source

types: tx.go comments

pull/592/head
Ethan Buchman 7 years ago
parent
commit
eeab0efa56
1 changed files with 11 additions and 9 deletions
  1. +11
    -9
      types/tx.go

+ 11
- 9
types/tx.go View File

@ -10,18 +10,18 @@ import (
"github.com/tendermint/tmlibs/merkle"
)
// Tx represents a transaction, which may contain arbitrary bytes.
// Tx is an arbitrary byte array.
// NOTE: Tx has no types at this level, so when go-wire encoded it's just length-prefixed.
// Alternatively, it may make sense to add types here and let
// []byte be type 0x1 so we can have versioned txs if need be in the future.
type Tx []byte
// Hash returns the hash of the go-wire encoded Tx.
// Tx has no types at this level, so go-wire encoding only adds length-prefix.
// NOTE: It may make sense to add types here one day and let []byte be type 0x1
// so we can have versioned txs if need be in the future.
// Hash computes the RIPEMD160 hash of the go-wire encoded transaction.
func (tx Tx) Hash() []byte {
return merkle.SimpleHashFromBinary(tx)
}
// String returns a string representation of the Tx.
// String returns the hex-encoded transaction as a string.
func (tx Tx) String() string {
return fmt.Sprintf("Tx{%X}", []byte(tx))
}
@ -29,7 +29,7 @@ func (tx Tx) String() string {
// Txs is a slice of Tx.
type Txs []Tx
// Hash returns the simple Merkle root hash of the Txs.
// Hash returns the simple Merkle root hash of the transactions.
func (txs Txs) Hash() []byte {
// Recursive impl.
// Copied from tmlibs/merkle to avoid allocations
@ -87,6 +87,7 @@ func (txs Txs) Proof(i int) TxProof {
}
}
// TxProof represents a Merkle proof of the presence of a transaction in the Merkle tree.
type TxProof struct {
Index, Total int
RootHash data.Bytes
@ -94,12 +95,13 @@ type TxProof struct {
Proof merkle.SimpleProof
}
// LeadHash returns the hash of the transaction this proof refers to.
func (tp TxProof) LeafHash() []byte {
return tp.Data.Hash()
}
// Validate returns nil if it matches the dataHash, and is internally consistent
// otherwise, returns a sensible error
// Validate verifies the proof. It returns nil if the RootHash matches the dataHash argument,
// and if the proof is internally consistent. Otherwise, it returns a sensible error.
func (tp TxProof) Validate(dataHash []byte) error {
if !bytes.Equal(dataHash, tp.RootHash) {
return errors.New("Proof matches different data hash")


Loading…
Cancel
Save