types

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2018 License: AGPL-3.0 Imports: 13 Imported by: 74

Documentation

Index

Constants

View Source
const (
	SerBlockHeader
	SerBlockTransactions
	SerBlockFull
)

serflag variables, start with 1

View Source
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 MapBlock

func MapBlock(old *Block) *bc.Block

MapBlock converts a types block to bc block

func MapTx

func MapTx(oldTx *TxData) *bc.Tx

MapTx converts a types TxData object into its entries-based representation.

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

func (b *Block) MarshalText() ([]byte, error)

MarshalText fulfills the json.Marshaler interface. This guarantees that blocks will get deserialized correctly when being parsed from HTTP requests.

func (*Block) UnmarshalText

func (b *Block) UnmarshalText(text []byte) error

UnmarshalText fulfills the encoding.TextUnmarshaler interface.

func (*Block) WriteTo

func (b *Block) WriteTo(w io.Writer) (int64, error)

WriteTo will write block to input io.Writer

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.

func (*BlockHeader) WriteTo

func (bh *BlockHeader) WriteTo(w io.Writer) (int64, error)

WriteTo writes the block header to the input io.Writer

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.

func (*OutputCommitment) Hash

func (oc *OutputCommitment) Hash(suffix []byte, assetVersion uint64) (outputhash bc.Hash)

Hash convert suffix && assetVersion to bc.Hash

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

type Tx struct {
	TxData
	*bc.Tx `json:"-"`
}

Tx holds a transaction along with its hash.

func NewTx

func NewTx(data TxData) *Tx

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) OutputID

func (tx *Tx) OutputID(outputIndex int) *bc.Hash

OutputID return the hash of the output position

func (*Tx) SetInputArguments

func (tx *Tx) SetInputArguments(n uint32, args [][]byte)

SetInputArguments sets the Arguments field in input n.

func (*Tx) UnmarshalText

func (tx *Tx) UnmarshalText(p []byte) error

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

func (tx *TxData) MarshalText() ([]byte, error)

MarshalText fulfills the json.Marshaler interface.

func (*TxData) UnmarshalText

func (tx *TxData) UnmarshalText(p []byte) error

UnmarshalText fulfills the encoding.TextUnmarshaler interface.

func (*TxData) WriteTo

func (tx *TxData) WriteTo(w io.Writer) (int64, error)

WriteTo writes tx to w.

type TxInput

type TxInput struct {
	AssetVersion uint64
	TypedInput
	CommitmentSuffix []byte
	WitnessSuffix    []byte
}

TxInput is the top level struct of tx input.

func NewCoinbaseInput

func NewCoinbaseInput(arbitrary []byte) *TxInput

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) Amount

func (t *TxInput) Amount() uint64

Amount return the asset amount of the txinput

func (*TxInput) Arguments

func (t *TxInput) Arguments() [][]byte

Arguments get the args for the input

func (*TxInput) AssetAmount

func (t *TxInput) AssetAmount() bc.AssetAmount

AssetAmount return the asset id and amount of the txinput.

func (*TxInput) AssetID

func (t *TxInput) AssetID() bc.AssetID

AssetID return the assetID of the txinput

func (*TxInput) ControlProgram

func (t *TxInput) ControlProgram() []byte

ControlProgram return the control program of the spend input

func (*TxInput) IssuanceProgram

func (t *TxInput) IssuanceProgram() []byte

IssuanceProgram return the control program of the issuance input

func (*TxInput) SetArguments

func (t *TxInput) SetArguments(args [][]byte)

SetArguments set the args for the input

func (*TxInput) SpentOutputID

func (t *TxInput) SpentOutputID() (o bc.Hash, err error)

SpentOutputID calculate the hash of spended output

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.

func NewTxOutput

func NewTxOutput(assetID bc.AssetID, amount uint64, controlProgram []byte) *TxOutput

NewTxOutput create a new output struct

type TypedInput

type TypedInput interface {
	InputType() uint8
}

TypedInput return the txinput type.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL