tx

package
v0.0.0-...-d3fc0de Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2020 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MeterToken    = TokenType(0)
	MeterGovToken = TokenType(1)
)

Variables

This section is empty.

Functions

func IntrinsicGas

func IntrinsicGas(clauses ...*Clause) (uint64, error)

IntrinsicGas calculate intrinsic gas cost for tx with such clauses.

Types

type BlockRef

type BlockRef [8]byte

BlockRef is block reference.

func NewBlockRef

func NewBlockRef(blockNum uint32) (br BlockRef)

NewBlockRef create block reference with block number.

func NewBlockRefFromID

func NewBlockRefFromID(blockID meter.Bytes32) (br BlockRef)

NewBlockRefFromID create block reference from block id.

func (BlockRef) Number

func (br BlockRef) Number() uint32

Number extracts block number.

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

Builder to make it easy to build transaction.

func (*Builder) BlockRef

func (b *Builder) BlockRef(br BlockRef) *Builder

BlockRef set block reference.

func (*Builder) Build

func (b *Builder) Build() *Transaction

Build build tx object.

func (*Builder) ChainTag

func (b *Builder) ChainTag(tag byte) *Builder

ChainTag set chain tag.

func (*Builder) Clause

func (b *Builder) Clause(c *Clause) *Builder

Clause add a clause.

func (*Builder) DependsOn

func (b *Builder) DependsOn(txID *meter.Bytes32) *Builder

DependsOn set depended tx.

func (*Builder) Expiration

func (b *Builder) Expiration(exp uint32) *Builder

Expiration set expiration.

func (*Builder) Features

func (b *Builder) Features(feat Features) *Builder

Features set features.

func (*Builder) Gas

func (b *Builder) Gas(gas uint64) *Builder

Gas set gas provision for tx.

func (*Builder) GasPriceCoef

func (b *Builder) GasPriceCoef(coef uint8) *Builder

GasPriceCoef set gas price coef.

func (*Builder) Nonce

func (b *Builder) Nonce(nonce uint64) *Builder

Nonce set nonce.

type Clause

type Clause struct {
	// contains filtered or unexported fields
}

Clause is the basic execution unit of a transaction.

func NewClause

func NewClause(to *meter.Address) *Clause

NewClause create a new clause instance.

func (*Clause) Data

func (c *Clause) Data() []byte

Data returns 'Data'.

func (*Clause) DecodeRLP

func (c *Clause) DecodeRLP(s *rlp.Stream) error

DecodeRLP implements rlp.Decoder

func (*Clause) EncodeRLP

func (c *Clause) EncodeRLP(w io.Writer) error

EncodeRLP implements rlp.Encoder

func (*Clause) IsCreatingContract

func (c *Clause) IsCreatingContract() bool

IsCreatingContract return if this clause is going to create a contract.

func (*Clause) String

func (c *Clause) String() string

func (*Clause) To

func (c *Clause) To() *meter.Address

To returns 'To' address.

func (*Clause) Token

func (c *Clause) Token() byte

Data returns 'Token'.

func (*Clause) Value

func (c *Clause) Value() *big.Int

Value returns 'Value'.

func (*Clause) WithData

func (c *Clause) WithData(data []byte) *Clause

WithData create a new clause copy with data changed.

func (*Clause) WithToken

func (c *Clause) WithToken(token byte) *Clause

WithToken create a new clause copy with value changed.

func (*Clause) WithValue

func (c *Clause) WithValue(value *big.Int) *Clause

WithValue create a new clause copy with value changed.

type Features

type Features uint32

Features bitset contains tx features.

const (
	// DelegationFeature See VIP-191 for more detail. (https://github.com/vechain/VIPs/blob/master/vips/VIP-191.md)
	DelegationFeature Features = 1
)

func (Features) IsDelegated

func (f Features) IsDelegated() bool

IsDelegated returns whether tx is delegated.

func (*Features) SetDelegated

func (f *Features) SetDelegated(flag bool)

SetDelegated set tx delegated flag.

type TokenType

type TokenType byte

type Transaction

type Transaction struct {
	// contains filtered or unexported fields
}

Transaction is an immutable tx type.

func (*Transaction) BlockRef

func (t *Transaction) BlockRef() (br BlockRef)

BlockRef returns block reference, which is first 8 bytes of block hash.

func (*Transaction) ChainTag

func (t *Transaction) ChainTag() byte

ChainTag returns chain tag.

func (*Transaction) Clauses

func (t *Transaction) Clauses() []*Clause

Clauses returns caluses in tx.

func (*Transaction) DecodeRLP

func (t *Transaction) DecodeRLP(s *rlp.Stream) error

DecodeRLP implements rlp.Decoder

func (*Transaction) Delegator

func (t *Transaction) Delegator() (*meter.Address, error)

Delegator returns delegator address who would like to pay for gas fee.

func (*Transaction) DelegatorSigningHash

func (t *Transaction) DelegatorSigningHash(origin meter.Address) (hash meter.Bytes32)

DelegatorSigningHash returns hash of tx components for delegator to sign, by assuming originator address. According to VIP-191, it's identical to tx id.

func (*Transaction) DependsOn

func (t *Transaction) DependsOn() *meter.Bytes32

DependsOn returns depended tx hash.

func (*Transaction) EncodeRLP

func (t *Transaction) EncodeRLP(w io.Writer) error

EncodeRLP implements rlp.Encoder

func (*Transaction) EvaluateWork

func (t *Transaction) EvaluateWork(origin meter.Address) func(nonce uint64) *big.Int

EvaluateWork try to compute work when tx origin assumed.

func (*Transaction) Expiration

func (t *Transaction) Expiration() uint32

Expiration returns expiration in unit block. A valid transaction requires: blockNum in [blockRef.Num... blockRef.Num + Expiration]

func (*Transaction) Features

func (t *Transaction) Features() Features

Features returns features.

func (*Transaction) Gas

func (t *Transaction) Gas() uint64

Gas returns gas provision for this tx.

func (*Transaction) GasPrice

func (t *Transaction) GasPrice(baseGasPrice *big.Int) *big.Int

GasPrice returns gas price. gasPrice = baseGasPrice + baseGasPrice * gasPriceCoef / 255

func (*Transaction) GasPriceCoef

func (t *Transaction) GasPriceCoef() uint8

GasPriceCoef returns gas price coef. gas price = bgp + bgp * gpc / 255.

func (*Transaction) Hash

func (t *Transaction) Hash() (hash meter.Bytes32)

Hash returns hash of tx. Unlike ID, it's the hash of RLP encoded tx.

func (*Transaction) ID

func (t *Transaction) ID() (id meter.Bytes32)

ID returns id of tx. ID = hash(signingHash, origin). It returns zero Bytes32 if origin not available.

func (*Transaction) IntrinsicGas

func (t *Transaction) IntrinsicGas() (uint64, error)

IntrinsicGas returns intrinsic gas of tx.

func (*Transaction) IsExpired

func (t *Transaction) IsExpired(blockNum uint32) bool

IsExpired returns whether the tx is expired according to the given blockNum.

func (*Transaction) Nonce

func (t *Transaction) Nonce() uint64

Nonce returns nonce value.

func (*Transaction) Origin

func (t *Transaction) Origin() (meter.Address, error)

Origin extract address of tx originator from signature.

func (*Transaction) OverallGasPrice

func (t *Transaction) OverallGasPrice(baseGasPrice *big.Int, provedWork *big.Int) *big.Int

OverallGasPrice calculate overall gas price. overallGasPrice = gasPrice + baseGasPrice * wgas/gas.

func (*Transaction) ProvedWork

func (t *Transaction) ProvedWork(headBlockNum uint32, getBlockID func(uint32) (meter.Bytes32, error)) (*big.Int, error)

ProvedWork returns proved work. Unproved work will be considered as proved work if block ref is do the prefix of a block's ID, and tx delay is less equal to MaxTxWorkDelay.

func (*Transaction) Signature

func (t *Transaction) Signature() []byte

Signature returns signature.

func (*Transaction) SigningHash

func (t *Transaction) SigningHash() (hash meter.Bytes32)

SigningHash returns hash of tx excludes signature.

func (*Transaction) Size

func (t *Transaction) Size() meter.StorageSize

Size returns size in bytes when RLP encoded.

func (*Transaction) String

func (t *Transaction) String() string

func (*Transaction) TestFeatures

func (t *Transaction) TestFeatures(supported Features) error

TestFeatures test if the tx is compatible with given supported features. An error returned if it is incompatible.

func (*Transaction) UnprovedWork

func (t *Transaction) UnprovedWork() (w *big.Int)

UnprovedWork returns unproved work of this tx. It returns 0, if tx is not signed.

func (*Transaction) WithSignature

func (t *Transaction) WithSignature(sig []byte) *Transaction

WithSignature create a new tx with signature set. For delegated tx, sig is joined with signatures of originator and delegator.

Jump to

Keyboard shortcuts

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