tx

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2022 License: LGPL-3.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// EthBloomByteLength represents the number of bytes used in a header log bloom.
	EthBloomByteLength = 256

	// EthBloomBitLength represents the number of bits used in a header log bloom.
	EthBloomBitLength = 8 * EthBloomByteLength
)

Variables

View Source
var (
	RESERVED_PREFIX = []byte{0xee, 0xff}
)

Functions

func ChainIdValidate added in v1.2.0

func ChainIdValidate(chainId *big.Int) (bool, error)

func EthBloom9 added in v1.2.0

func EthBloom9(data []byte) []byte

EthBloom9 returns the bloom filter for the given data

func EthBloomLookup added in v1.2.0

func EthBloomLookup(bin EthBloom, topic bytesBacked) bool

EthBloomLookup is a convenience-method to check presence int he bloom filter

func HashData added in v1.2.0

func HashData(kh KeccakState, data []byte) (h common.Hash)

HashData hashes the provided data using the KeccakState and returns a 32 byte hash

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.

func (BlockRef) Uint64 added in v1.2.0

func (br BlockRef) Uint64() uint64

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) 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) UniteHash added in v1.2.0

func (c *Clause) UniteHash() (hash meter.Bytes32)

SigningHash returns hash of tx excludes signature.

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 EthBloom added in v1.2.0

type EthBloom [EthBloomByteLength]byte

EthBloom represents a 2048 bit bloom filter.

func BytesToEthBloom added in v1.2.0

func BytesToEthBloom(b []byte) EthBloom

BytesToEthBloom converts a byte slice to a bloom filter. It panics if b is not of suitable size.

func CreateEthBloom added in v1.2.0

func CreateEthBloom(receipts Receipts) EthBloom

CreateEthBloom creates a bloom filter out of the give Receipts (+Logs)

func (*EthBloom) Add added in v1.2.0

func (b *EthBloom) Add(d []byte)

Add adds d to the filter. Future calls of Test(d) will return true.

func (EthBloom) Big added in v1.2.0

func (b EthBloom) Big() *big.Int

Big converts b to a big integer. Note: Converting a bloom filter to a big.Int and then calling GetBytes does not return the same bytes, since big.Int will trim leading zeroes

func (EthBloom) Bytes added in v1.2.0

func (b EthBloom) Bytes() []byte

Bytes returns the backing byte slice of the bloom

func (EthBloom) MarshalText added in v1.2.0

func (b EthBloom) MarshalText() ([]byte, error)

MarshalText encodes b as a hex string with 0x prefix.

func (*EthBloom) SetBytes added in v1.2.0

func (b *EthBloom) SetBytes(d []byte)

SetBytes sets the content of b to the given bytes. It panics if d is not of suitable size.

func (EthBloom) Test added in v1.2.0

func (b EthBloom) Test(topic []byte) bool

Test checks if the given topic is present in the bloom filter

func (*EthBloom) UnmarshalText added in v1.2.0

func (b *EthBloom) UnmarshalText(input []byte) error

UnmarshalText b as a hex string with 0x prefix.

type Event

type Event struct {
	// address of the contract that generated the event
	Address meter.Address
	// list of topics provided by the contract.
	Topics []meter.Bytes32
	// supplied by the contract, usually ABI-encoded
	Data []byte
}

Event represents a contract event log. These events are generated by the LOG opcode and stored/indexed by the node.

type Events

type Events []*Event

Events slice of event logs.

func (Events) String added in v1.2.0

func (es Events) String() string

type KeccakState added in v1.2.0

type KeccakState interface {
	hash.Hash
	Read([]byte) (int, error)
}

KeccakState wraps sha3.state. In addition to the usual hash methods, it also supports Read to get a variable amount of data from the hash state. Read is faster than Sum because it doesn't copy the internal state, but also modifies the internal state.

func NewKeccakState added in v1.2.0

func NewKeccakState() KeccakState

NewKeccakState creates a new KeccakState

type Output

type Output struct {
	// events produced by the clause
	Events Events
	// transfer occurred in clause
	Transfers Transfers
}

Output output of clause execution.

type Receipt

type Receipt struct {
	// gas used by this tx
	GasUsed uint64
	// the one who paid for gas
	GasPayer meter.Address
	// energy paid for used gas
	Paid *big.Int
	// energy reward given to block proposer
	Reward *big.Int
	// if the tx reverted
	Reverted bool
	// outputs of clauses in tx
	Outputs []*Output
}

Receipt represents the results of a transaction.

type Receipts

type Receipts []*Receipt

Receipts slice of receipts.

func (Receipts) RootHash

func (rs Receipts) RootHash() meter.Bytes32

RootHash computes merkle root hash of receipts.

type Transaction

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

Transaction is an immutable tx type.

func NewTransactionFromEthTx added in v1.2.0

func NewTransactionFromEthTx(ethTx *types.Transaction, chainTag byte, blockRef BlockRef) (*Transaction, error)

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) 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) EthTxValidate added in v1.2.0

func (t *Transaction) EthTxValidate() (bool, error)

func (*Transaction) EvaluateWork

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

EvaluateWork try to compute work when tx signer 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) 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) GetEthTx added in v1.2.0

func (t *Transaction) GetEthTx() (*types.Transaction, error)

func (*Transaction) HasReservedFields

func (t *Transaction) HasReservedFields() bool

HasReservedFields returns if there're reserved fields. Reserved fields are for backward compatibility purpose.

func (*Transaction) ID

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

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

func (*Transaction) IntrinsicGas

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

IntrinsicGas returns intrinsic gas of tx.

func (*Transaction) IsEthTx added in v1.2.0

func (t *Transaction) IsEthTx() bool

func (*Transaction) IsExpired

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

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

func (*Transaction) MeterID added in v1.2.0

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

func (*Transaction) Nonce

func (t *Transaction) Nonce() uint64

Nonce returns nonce value.

func (*Transaction) OverallGasPrice

func (t *Transaction) OverallGasPrice(baseGasPrice *big.Int, headBlockNum uint32, getBlockID func(uint32) meter.Bytes32) *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) *big.Int

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

func (t *Transaction) Signer() (signer meter.Address, err error)

Signer extract signer of tx from 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() metric.StorageSize

Size returns size in bytes when RLP encoded.

func (*Transaction) String

func (t *Transaction) String() string

func (*Transaction) UniteHash added in v1.2.0

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

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.

type Transactions

type Transactions []*Transaction

Transactions a slice of transactions.

func (Transactions) RootHash

func (txs Transactions) RootHash() meter.Bytes32

RootHash computes merkle root hash of transactions.

type Transfer

type Transfer struct {
	Sender    meter.Address
	Recipient meter.Address
	Amount    *big.Int
	Token     byte
}

Transfer token transfer log.

type Transfers

type Transfers []*Transfer

Transfers slisce of transfer logs.

func (Transfers) String added in v1.2.0

func (ts Transfers) String() string

Jump to

Keyboard shortcuts

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