Documentation ¶
Index ¶
- Constants
- func ComputeOutputID(sc *SpendCommitment) (h bc.Hash, err error)
- func GetStatusMerkleTreeProof(statuses []*bc.TxVerifyResult, flags []uint8) []*bc.Hash
- func GetTxMerkleTreeProof(txs []*Tx, relatedTxs []*Tx) ([]*bc.Hash, []uint8)
- func MapBlock(old *Block) *bc.Block
- func MapTx(oldTx *TxData) *bc.Tx
- func TxMerkleRoot(transactions []*bc.Tx) (root bc.Hash, err error)
- func TxStatusMerkleRoot(tvrs []*bc.TxVerifyResult) (root bc.Hash, err error)
- func ValidateStatusMerkleTreeProof(hashes []*bc.Hash, flags []uint8, relatedStatus []*bc.TxVerifyResult, ...) bool
- func ValidateTxMerkleTreeProof(hashes []*bc.Hash, flags []uint8, relatedHashes []*bc.Hash, merkleRoot bc.Hash) bool
- type Block
- type BlockCommitment
- type BlockHeader
- type CoinbaseInput
- type IssuanceInput
- type OutputCommitment
- type SpendCommitment
- type SpendInput
- type Tx
- type TxData
- type TxInput
- func (t *TxInput) Amount() uint64
- func (t *TxInput) Arguments() [][]byte
- func (t *TxInput) AssetAmount() bc.AssetAmount
- func (t *TxInput) AssetDefinition() []byte
- func (t *TxInput) AssetID() bc.AssetID
- func (t *TxInput) ControlProgram() []byte
- func (t *TxInput) IssuanceProgram() []byte
- func (t *TxInput) SetArguments(args [][]byte)
- func (t *TxInput) SpentOutputID() (o bc.Hash, err error)
- type TxOutput
- type TypedInput
Constants ¶
const ( SerBlockHeader SerBlockTransactions SerBlockFull )
serflag variables, start with 1
const ( // FlagAssist represent assist node FlagAssist = iota // FlagTxParent represent the parent of transaction of node FlagTxParent // FlagTxLeaf represent transaction of node FlagTxLeaf )
merkleFlag represent the type of merkle tree node, it's used to generate the structure of merkle tree Bitcoin has only two flags, which zero means the hash of assist node. And one means the hash of the related transaction node or it's parents, which distinguish them according to the height of the tree. But in the bytom, the height of transaction node is not fixed, so we need three flags to distinguish these nodes.
const ( IssuanceInputType uint8 = iota SpendInputType CoinbaseInputType )
serflag variables for input types.
Variables ¶
This section is empty.
Functions ¶
func ComputeOutputID ¶
func ComputeOutputID(sc *SpendCommitment) (h bc.Hash, err error)
ComputeOutputID assembles an output entry given a spend commitment and computes and returns its corresponding entry ID.
func GetStatusMerkleTreeProof ¶
func GetStatusMerkleTreeProof(statuses []*bc.TxVerifyResult, flags []uint8) []*bc.Hash
GetStatusMerkleTreeProof return a proof of merkle tree, which used to proof the status of transaction is valid
func GetTxMerkleTreeProof ¶
GetTxMerkleTreeProof return a proof of merkle tree, which used to proof the transaction does exist in the merkle tree
func TxMerkleRoot ¶
TxMerkleRoot creates a merkle tree from a slice of transactions and returns the root hash of the tree.
func TxStatusMerkleRoot ¶
func TxStatusMerkleRoot(tvrs []*bc.TxVerifyResult) (root bc.Hash, err error)
TxStatusMerkleRoot creates a merkle tree from a slice of bc.TxVerifyResult
func ValidateStatusMerkleTreeProof ¶
func ValidateStatusMerkleTreeProof(hashes []*bc.Hash, flags []uint8, relatedStatus []*bc.TxVerifyResult, merkleRoot bc.Hash) bool
ValidateStatusMerkleTreeProof validate the merkle tree of transaction status
Types ¶
type Block ¶
type Block struct { BlockHeader Transactions []*Tx }
Block describes a complete block, including its header and the transactions it contains.
func (*Block) MarshalText ¶
MarshalText fulfills the json.Marshaler interface. This guarantees that blocks will get deserialized correctly when being parsed from HTTP requests.
func (*Block) UnmarshalText ¶
UnmarshalText fulfills the encoding.TextUnmarshaler interface.
type BlockCommitment ¶
type BlockCommitment struct { // TransactionsMerkleRoot is the root hash of the Merkle binary hash tree // formed by the hashes of all transactions included in the block. TransactionsMerkleRoot bc.Hash `json:"transaction_merkle_root"` // TransactionStatusHash is the root hash of the Merkle binary hash tree // formed by the hashes of all transaction verify results TransactionStatusHash bc.Hash `json:"transaction_status_hash"` }
BlockCommitment store the TransactionsMerkleRoot && TransactionStatusHash
type BlockHeader ¶
type BlockHeader struct { Version uint64 // The version of the block. Height uint64 // The height of the block. PreviousBlockHash bc.Hash // The hash of the previous block. Timestamp uint64 // The time of the block in seconds. Nonce uint64 // Nonce used to generate the block. Bits uint64 // Difficulty target for the block. BlockCommitment }
BlockHeader defines information about a block and is used in the Bytom
func (*BlockHeader) Hash ¶
func (bh *BlockHeader) Hash() bc.Hash
Hash returns complete hash of the block header.
func (*BlockHeader) MarshalText ¶
func (bh *BlockHeader) MarshalText() ([]byte, error)
MarshalText fulfills the json.Marshaler interface. This guarantees that block headers will get deserialized correctly when being parsed from HTTP requests.
func (*BlockHeader) Time ¶
func (bh *BlockHeader) Time() time.Time
Time returns the time represented by the Timestamp in block header.
func (*BlockHeader) UnmarshalText ¶
func (bh *BlockHeader) UnmarshalText(text []byte) error
UnmarshalText fulfills the encoding.TextUnmarshaler interface.
type CoinbaseInput ¶
type CoinbaseInput struct {
Arbitrary []byte
}
CoinbaseInput records the coinbase message
func (*CoinbaseInput) InputType ¶
func (cb *CoinbaseInput) InputType() uint8
InputType is the interface function for return the input type
type IssuanceInput ¶
type IssuanceInput struct { Nonce []byte Amount uint64 AssetDefinition []byte VMVersion uint64 IssuanceProgram []byte Arguments [][]byte }
IssuanceInput satisfies the TypedInput interface and represents a issuance.
func (*IssuanceInput) AssetDefinitionHash ¶
func (ii *IssuanceInput) AssetDefinitionHash() (defhash bc.Hash)
AssetDefinitionHash return the hash of the issuance asset definition.
func (*IssuanceInput) AssetID ¶
func (ii *IssuanceInput) AssetID() bc.AssetID
AssetID calculate the assetID of the issuance input.
func (*IssuanceInput) InputType ¶
func (ii *IssuanceInput) InputType() uint8
InputType is the interface function for return the input type.
func (*IssuanceInput) NonceHash ¶
func (ii *IssuanceInput) NonceHash() (hash bc.Hash)
NonceHash return the hash of the issuance asset definition.
type OutputCommitment ¶
type OutputCommitment struct { bc.AssetAmount VMVersion uint64 ControlProgram []byte }
OutputCommitment contains the commitment data for a transaction output.
type SpendCommitment ¶
type SpendCommitment struct { bc.AssetAmount SourceID bc.Hash SourcePosition uint64 VMVersion uint64 ControlProgram []byte }
SpendCommitment contains the commitment data for a transaction output.
type SpendInput ¶
type SpendInput struct { SpendCommitmentSuffix []byte // The unconsumed suffix of the output commitment Arguments [][]byte // Witness SpendCommitment }
SpendInput satisfies the TypedInput interface and represents a spend transaction.
func (*SpendInput) InputType ¶
func (si *SpendInput) InputType() uint8
InputType is the interface function for return the input type.
type Tx ¶
Tx holds a transaction along with its hash.
func NewTx ¶
NewTx returns a new Tx containing data and its hash. If you have already computed the hash, use struct literal notation to make a Tx object directly.
func (*Tx) SetInputArguments ¶
SetInputArguments sets the Arguments field in input n.
func (*Tx) UnmarshalText ¶
UnmarshalText fulfills the encoding.TextUnmarshaler interface.
type TxData ¶
type TxData struct { Version uint64 SerializedSize uint64 TimeRange uint64 Inputs []*TxInput Outputs []*TxOutput }
TxData encodes a transaction in the blockchain.
func (*TxData) MarshalText ¶
MarshalText fulfills the json.Marshaler interface.
func (*TxData) UnmarshalText ¶
UnmarshalText fulfills the encoding.TextUnmarshaler interface.
type TxInput ¶
type TxInput struct { AssetVersion uint64 TypedInput CommitmentSuffix []byte WitnessSuffix []byte }
TxInput is the top level struct of tx input.
func NewCoinbaseInput ¶
NewCoinbaseInput creates a new coinbase input struct
func NewIssuanceInput ¶
func NewIssuanceInput(nonce []byte, amount uint64, issuanceProgram []byte, arguments [][]byte, assetDefinition []byte) *TxInput
NewIssuanceInput create a new IssuanceInput struct.
func NewSpendInput ¶
func NewSpendInput(arguments [][]byte, sourceID bc.Hash, assetID bc.AssetID, amount, sourcePos uint64, controlProgram []byte) *TxInput
NewSpendInput create a new SpendInput struct.
func (*TxInput) AssetAmount ¶
func (t *TxInput) AssetAmount() bc.AssetAmount
AssetAmount return the asset id and amount of the txinput.
func (*TxInput) AssetDefinition ¶
AssetDefinition return the asset definition of the issuance input
func (*TxInput) ControlProgram ¶
ControlProgram return the control program of the spend input
func (*TxInput) IssuanceProgram ¶
IssuanceProgram return the control program of the issuance input
func (*TxInput) SetArguments ¶
SetArguments set the args for the input
type TxOutput ¶
type TxOutput struct { AssetVersion uint64 OutputCommitment // Unconsumed suffixes of the commitment and witness extensible strings. CommitmentSuffix []byte }
TxOutput is the top level struct of tx output.
type TypedInput ¶
type TypedInput interface {
InputType() uint8
}
TypedInput return the txinput type.