Documentation
¶
Index ¶
- Constants
- func ComputeOutputID(sc *SpendCommitment) (h bc.Hash, err error)
- func MapBlock(old *Block) *bc.Block
- func MapTx(oldTx *TxData) *bc.Tx
- 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) 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 ( 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.
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 is record the coinbase message
func (*CoinbaseInput) InputType ¶ added in v0.4.3
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 ¶ added in v0.4.3
func (ii *IssuanceInput) InputType() uint8
InputType is the interface function for return the input type.
func (*IssuanceInput) NonceHash ¶ added in v0.4.3
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 ¶ added in v0.4.3
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 create 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) 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.