Documentation
¶
Index ¶
- Constants
- func ComputeOutputID(sc *SpendCommitment, inputType uint8, vote []byte) (h bc.Hash, err error)
- func GetTxMerkleTreeProof(txs []*Tx, relatedTxs []*Tx) ([]*bc.Hash, []uint8)
- func MapBlock(old *Block) *bc.Block
- func MapTx(txData *TxData) *bc.Tx
- func TxMerkleRoot(transactions []*bc.Tx) (root bc.Hash, err error)
- func ValidateTxMerkleTreeProof(hashes []*bc.Hash, flags []uint8, relatedHashes []*bc.Hash, merkleRoot bc.Hash) bool
- type Block
- type BlockCommitment
- type BlockHeader
- type BlockWitness
- type CoinbaseInput
- type IssuanceInput
- type OutputCommitment
- type SpendCommitment
- type SpendInput
- type SupLink
- type SupLinks
- type Tx
- type TxData
- type TxInput
- func NewCoinbaseInput(arbitrary []byte) *TxInput
- func NewIssuanceInput(nonce []byte, amount uint64, issuanceProgram []byte, arguments [][]byte, ...) *TxInput
- func NewSpendInput(arguments [][]byte, sourceID bc.Hash, assetID bc.AssetID, ...) *TxInput
- func NewVetoInput(arguments [][]byte, sourceID bc.Hash, assetID bc.AssetID, ...) *TxInput
- type TxOutput
- type TypedInput
- type TypedOutput
- type VetoInput
- type VoteOutput
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 VetoInputType )
serflag variables for input types.
const ( // OriginalOutputType represent the type of original output OriginalOutputType uint8 = iota // VoteOutputType represent the type of vote output VoteOutputType )
Variables ¶
This section is empty.
Functions ¶
func ComputeOutputID ¶
ComputeOutputID assembles an output entry given a spend commitment and computes and returns its corresponding entry ID.
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.
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) MarshalTextForBlockHeader ¶
MarshalTextForBlockHeader fulfills the json.Marshaler interface.
func (*Block) MarshalTextForTransactions ¶
MarshalTextForTransactions fulfills the json.Marshaler interface.
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"`
}
BlockCommitment store the TransactionsMerkleRoot
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.
BlockWitness
SupLinks
BlockCommitment
}
BlockHeader defines information about a block and is used in the Bystack
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 BlockWitness ¶
type BlockWitness []byte
BlockWitness save the consensus node sign
func (*BlockWitness) Set ¶
func (bw *BlockWitness) Set(data []byte)
Set write the sign data to BlockWitness
type CoinbaseInput ¶
type CoinbaseInput struct {
Arbitrary []byte
}
CoinbaseInput records the coinbase message
func (*CoinbaseInput) AssetID ¶
func (cb *CoinbaseInput) AssetID() bc.AssetID
AssetID implement the TypedInput.
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
// contains filtered or unexported fields
}
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
StateData [][]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
StateData [][]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) AssetID ¶
func (si *SpendInput) AssetID() bc.AssetID
AssetID implement the TypedInput.
func (*SpendInput) InputType ¶
func (si *SpendInput) InputType() uint8
InputType is the interface function for return the input type.
type SupLink ¶
type SupLink struct {
SourceHeight uint64
SourceHash bc.Hash
Signatures [consensus.MaxNumOfValidators][]byte
}
SupLink is an ordered pair of checkpoints (a, b), also written a → b the validators will sign it once considered as legal
func (*SupLink) IsMajority ¶
IsMajority if at least 2/3 of validators have published votes with sup link
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, stateData [][]byte) *TxInput
NewSpendInput create a new SpendInput struct.
func NewVetoInput ¶
func NewVetoInput(arguments [][]byte, sourceID bc.Hash, assetID bc.AssetID, amount, sourcePos uint64, controlProgram []byte, vote []byte, stateData [][]byte) *TxInput
NewVetoInput create a new VetoInput struct.
func (*TxInput) ControlProgram ¶
ControlProgram return the control program of the spend 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
TypedOutput
}
TxOutput is the top level struct of tx output.
type TypedInput ¶
type TypedInput interface {
InputType() uint8
AssetID() bc.AssetID
// contains filtered or unexported methods
}
TypedInput return the txinput type.
type TypedOutput ¶
type TypedOutput interface {
OutputType() uint8
// contains filtered or unexported methods
}
TypedOutput return the txoutput type.
type VetoInput ¶
type VetoInput struct {
VetoCommitmentSuffix []byte // The unconsumed suffix of the output commitment
Arguments [][]byte // Witness
Vote []byte // voter xpub
SpendCommitment
}
VetoInput satisfies the TypedInput interface and represents a veto transaction.
type VoteOutput ¶
type VoteOutput struct {
Vote []byte
}
VoteOutput satisfies the TypedOutput interface and represents a vote transaction.
func (*VoteOutput) OutputType ¶
func (v *VoteOutput) OutputType() uint8
OutputType implement the txout interface