types

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Jan 18, 2020 License: MIT Imports: 35 Imported by: 14

Documentation

Overview

Package types contains data types related to Ethereum consensus.

Index

Constants

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

	// BloomBitLength represents the number of bits used in a header log bloom.
	BloomBitLength = 8 * BloomByteLength
)
View Source
const (
	// ReceiptStatusFailed is the status code of a transaction if execution failed.
	ReceiptStatusFailed = uint64(0)

	// ReceiptStatusSuccessful is the status code of a transaction if execution succeeded.
	ReceiptStatusSuccessful = uint64(1)
)

Variables

View Source
var (
	EmptyRootHash  = DeriveSha(Transactions{})
	EmptyUncleHash = CalcUncleHash(nil)
)

Constants for block.

View Source
var Bloom9 = bloom9

Bloom9 type.

View Source
var BodyRegistry = taggedrlp.NewRegistry()

BodyRegistry is the tagged RLP registry for block body types.

View Source
var (
	ErrInvalidChainID = errors.New("invalid chain id for signer")
)

Constants for transaction signing.

View Source
var (
	ErrInvalidSig = errors.New("invalid transaction v, r, s values")
)

Errors constants for Transaction.

Functions

func BloomLookup

func BloomLookup(bin ethtypes.Bloom, topic bytesBacked) bool

BloomLookup checks if a topic may belong to the Bloom.

func BytesToBloom

func BytesToBloom(b []byte) ethtypes.Bloom

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

func CalcUncleHash

func CalcUncleHash(uncles []*block.Header) common.Hash

CalcUncleHash returns rlp hash of uncles.

func CopyHeader

func CopyHeader(h *block.Header) *block.Header

CopyHeader creates a deep copy of a block header to prevent side effects from modifying a header variable.

func CreateBloom

func CreateBloom(receipts Receipts) ethtypes.Bloom

CreateBloom creates a Bloom given the receipts.

func DeriveMultipleShardsSha

func DeriveMultipleShardsSha(list DerivableList) common.Hash

DeriveMultipleShardsSha calcualtes the root hash of tries generated by DerivableList of multiple shards If the list is empty, then return EmptyRootHash else, return |shard0|trieHash0|shard1|trieHash1|...| for non-empty destination shards

func DeriveOneShardSha

func DeriveOneShardSha(list DerivableList, shardID uint32) common.Hash

DeriveOneShardSha calculates the hash of the trie of cross shard transactions with the given destination shard

func DeriveSha

func DeriveSha(list DerivableList) common.Hash

DeriveSha calculates the hash of the trie generated by DerivableList.

func LogsBloom

func LogsBloom(logs []*Log) *big.Int

LogsBloom ...

func Number

func Number(b1, b2 *Block) bool

Number checks if block b1 is less than block b2.

func Sender

func Sender(signer Signer, tx *Transaction) (common.Address, error)

Sender returns the address derived from the signature (V, R, S) using secp256k1 elliptic curve and an error if it failed deriving or upon an incorrect signature.

Sender may cache the address, allowing it to be used regardless of signing method. The cache is invalidated if the cached signer does not match the signer used in the current call.

Types

type Block

type Block struct {

	// These fields are used by package eth to track
	// inter-peer block relay.
	ReceivedAt   time.Time
	ReceivedFrom interface{}
	// contains filtered or unexported fields
}

Block represents an entire block in the Harmony blockchain.

func NewBlock

func NewBlock(header *block.Header, txs []*Transaction, receipts []*Receipt, outcxs []*CXReceipt, incxs []*CXReceiptsProof) *Block

NewBlock creates a new block. The input data is copied, changes to header and to the field values will not affect the block.

The values of TxHash, UncleHash, ReceiptHash and Bloom in header are ignored and set to values derived from the given txs, and receipts.

func NewBlockWithHeader

func NewBlockWithHeader(header *block.Header) *Block

NewBlockWithHeader creates a block with the given header data. The header data is copied, changes to header and to the field values will not affect the block.

func (*Block) AddShardState

func (b *Block) AddShardState(shardState shard.State) error

AddShardState add shardState into block header

func (*Block) AddVdf

func (b *Block) AddVdf(vdf []byte)

AddVdf add vdf into block header

func (*Block) AddVrf

func (b *Block) AddVrf(vrf []byte)

AddVrf add vrf into block header

func (*Block) Bloom

func (b *Block) Bloom() ethtypes.Bloom

Bloom returns header bloom.

func (*Block) Body

func (b *Block) Body() *Body

Body returns the non-header content of the block.

func (*Block) Coinbase

func (b *Block) Coinbase() common.Address

Coinbase returns header coinbase.

func (*Block) DecodeRLP

func (b *Block) DecodeRLP(s *rlp.Stream) error

DecodeRLP decodes the Ethereum

func (*Block) DeprecatedTd

func (b *Block) DeprecatedTd() *big.Int

DeprecatedTd is an old relic for extracting the TD of a block. It is in the code solely to facilitate upgrading the database from the old format to the new, after which it should be deleted. Do not use!

func (*Block) EncodeRLP

func (b *Block) EncodeRLP(w io.Writer) error

EncodeRLP serializes b into the Ethereum RLP block format.

func (*Block) Epoch

func (b *Block) Epoch() *big.Int

Epoch is the header Epoch

func (*Block) Extra

func (b *Block) Extra() []byte

Extra returns header extra.

func (*Block) GasLimit

func (b *Block) GasLimit() uint64

GasLimit returns header gas limit.

func (*Block) GasUsed

func (b *Block) GasUsed() uint64

GasUsed returns header gas used.

func (*Block) Hash

func (b *Block) Hash() common.Hash

Hash returns the keccak256 hash of b's header. The hash is computed on the first call and cached thereafter.

func (*Block) Header

func (b *Block) Header() *block.Header

Header returns a copy of Header.

func (*Block) IncomingReceipts

func (b *Block) IncomingReceipts() CXReceiptsProofs

IncomingReceipts returns verified outgoing receipts

func (*Block) Logger

func (b *Block) Logger(logger *zerolog.Logger) *zerolog.Logger

Logger returns a sub-logger with block contexts added.

func (*Block) MixDigest

func (b *Block) MixDigest() common.Hash

MixDigest is the header mix digest.

func (*Block) Number

func (b *Block) Number() *big.Int

Number returns header number.

func (*Block) NumberU64

func (b *Block) NumberU64() uint64

NumberU64 is the header number in uint64.

func (*Block) OutgoingReceiptHash

func (b *Block) OutgoingReceiptHash() common.Hash

OutgoingReceiptHash returns header cross shard receipt hash.

func (*Block) ParentHash

func (b *Block) ParentHash() common.Hash

ParentHash return header parent hash.

func (*Block) ReceiptHash

func (b *Block) ReceiptHash() common.Hash

ReceiptHash returns header receipt hash.

func (*Block) Root

func (b *Block) Root() common.Hash

Root returns header root.

func (*Block) SetLastCommitSig

func (b *Block) SetLastCommitSig(sig []byte, signers []byte)

SetLastCommitSig sets the last block's commit group signature.

func (*Block) ShardID

func (b *Block) ShardID() uint32

ShardID is the header ShardID

func (*Block) Size

func (b *Block) Size() common.StorageSize

Size returns the true RLP encoded storage size of the block, either by encoding and returning it, or returning a previsouly cached value.

func (*Block) StakingTransactions

func (b *Block) StakingTransactions() staking.StakingTransactions

StakingTransactions returns stakingTransactions.

func (*Block) Time

func (b *Block) Time() *big.Int

Time is header time.

func (*Block) Transaction

func (b *Block) Transaction(hash common.Hash) *Transaction

Transaction returns Transaction.

func (*Block) Transactions

func (b *Block) Transactions() Transactions

Transactions returns transactions.

func (*Block) TxHash

func (b *Block) TxHash() common.Hash

TxHash returns header tx hash.

func (*Block) Uncles

func (b *Block) Uncles() []*block.Header

Uncles return uncles.

func (*Block) Vdf

func (b *Block) Vdf() []byte

Vdf returns header Vdf.

func (*Block) Vrf

func (b *Block) Vrf() []byte

Vrf returns header Vrf.

func (*Block) WithBody

func (b *Block) WithBody(transactions []*Transaction, uncles []*block.Header, incomingReceipts CXReceiptsProofs) *Block

WithBody returns a new block with the given transaction and uncle contents.

func (*Block) WithSeal

func (b *Block) WithSeal(header *block.Header) *Block

WithSeal returns a new block with the data from b but the header replaced with the sealed one.

type BlockBy

type BlockBy func(b1, b2 *Block) bool

BlockBy is the func type.

func (BlockBy) Sort

func (blockBy BlockBy) Sort(blocks Blocks)

Sort sorts blocks.

type BlockNonce

type BlockNonce [8]byte

A BlockNonce is a 64-bit hash which proves (combined with the mix-hash) that a sufficient amount of computation has been carried out on a block.

func EncodeNonce

func EncodeNonce(i uint64) BlockNonce

EncodeNonce converts the given integer to a block nonce.

func (BlockNonce) MarshalText

func (n BlockNonce) MarshalText() ([]byte, error)

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

func (BlockNonce) Uint64

func (n BlockNonce) Uint64() uint64

Uint64 returns the integer value of a block nonce.

func (*BlockNonce) UnmarshalText

func (n *BlockNonce) UnmarshalText(input []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

type BlockTxsCounts

type BlockTxsCounts map[common.Address]uint64

BlockTxsCounts is a transactions counts map of the number of transactions made by each account in a block on this node.

func (BlockTxsCounts) String

func (btc BlockTxsCounts) String() string

String returns the string formatted representation of BlockTxsCounts

type Blocks

type Blocks []*Block

Blocks is an array of Block.

type Body

type Body struct {
	BodyInterface
}

Body is a simple (mutable, non-safe) data container for storing and moving a block's data contents (transactions and uncles) together.

func NewBodyForMatchingHeader

func NewBodyForMatchingHeader(h *block.Header) (*Body, error)

NewBodyForMatchingHeader returns a new block body struct whose implementation matches the version of the given field.

TODO ek – this is a stopgap, and works only while there is a N:1 mapping

between header and body versions.  Replace usage with factory.

func NewTestBody

func NewTestBody() *Body

NewTestBody creates a new, empty body object for epoch 0 using the test factory. Use for unit tests.

func (*Body) DecodeRLP

func (b *Body) DecodeRLP(s *rlp.Stream) error

DecodeRLP decodes a block body out of the given RLP stream into the receiver. It uses tagged RLP encoding for non-Genesis body formats.

func (*Body) EncodeRLP

func (b *Body) EncodeRLP(w io.Writer) error

EncodeRLP RLP-encodes the block body onto the given writer. It uses tagged RLP encoding for non-Genesis body formats.

func (*Body) With

func (b *Body) With() BodyFieldSetter

With returns a field setter context for the receiver.

type BodyFieldSetter

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

BodyFieldSetter is a body field setter.

func (BodyFieldSetter) Body

func (bfs BodyFieldSetter) Body() *Body

Body ends the field setter chain and returns the underlying body itself.

func (BodyFieldSetter) IncomingReceipts

func (bfs BodyFieldSetter) IncomingReceipts(newIncomingReceipts CXReceiptsProofs) BodyFieldSetter

IncomingReceipts sets the IncomingReceipts field of the body.

func (BodyFieldSetter) Transactions

func (bfs BodyFieldSetter) Transactions(newTransactions []*Transaction) BodyFieldSetter

Transactions sets the Transactions field of the body.

func (BodyFieldSetter) Uncles

func (bfs BodyFieldSetter) Uncles(newUncles []*block.Header) BodyFieldSetter

Uncles sets the Uncles field of the body.

type BodyInterface

type BodyInterface interface {
	// Transactions returns a deep copy the list of transactions in this block.
	Transactions() []*Transaction

	// TransactionAt returns the transaction at the given index in this block.
	// It returns nil if index is out of bounds.
	TransactionAt(index int) *Transaction

	// CXReceiptAt returns the CXReceipt given index (calculated from IncomingReceipts)
	// It returns nil if index is out of bounds
	CXReceiptAt(index int) *CXReceipt

	// SetTransactions sets the list of transactions with a deep copy of the
	// given list.
	SetTransactions(newTransactions []*Transaction)

	// Uncles returns a deep copy of the list of uncle headers of this block.
	Uncles() []*block.Header

	// SetUncles sets the list of uncle headers with a deep copy of the given
	// list.
	SetUncles(newUncle []*block.Header)

	// IncomingReceipts returns a deep copy of the list of incoming cross-shard
	// transaction receipts of this block.
	IncomingReceipts() CXReceiptsProofs

	// SetIncomingReceipts sets the list of incoming cross-shard transaction
	// receipts of this block with a dep copy of the given list.
	SetIncomingReceipts(newIncomingReceipts CXReceiptsProofs)
}

BodyInterface is a simple accessor interface for block body.

type BodyV0

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

BodyV0 is the V0 block body

func (*BodyV0) CXReceiptAt

func (b *BodyV0) CXReceiptAt(index int) *CXReceipt

CXReceiptAt returns the CXReceipt at given index in this block It returns nil if index is out of bounds V0 will just return nil because we don't support CXReceipt

func (*BodyV0) DecodeRLP

func (b *BodyV0) DecodeRLP(s *rlp.Stream) error

DecodeRLP RLP-decodes a block body from the given RLP stream into the receiver.

func (*BodyV0) EncodeRLP

func (b *BodyV0) EncodeRLP(w io.Writer) error

EncodeRLP RLP-encodes the block body into the given writer.

func (*BodyV0) IncomingReceipts

func (b *BodyV0) IncomingReceipts() (incomingReceipts CXReceiptsProofs)

IncomingReceipts returns a deep copy of the list of incoming cross-shard transaction receipts of this block.

func (*BodyV0) SetIncomingReceipts

func (b *BodyV0) SetIncomingReceipts(newIncomingReceipts CXReceiptsProofs)

SetIncomingReceipts sets the list of incoming cross-shard transaction receipts of this block with a dep copy of the given list.

func (*BodyV0) SetTransactions

func (b *BodyV0) SetTransactions(newTransactions []*Transaction)

SetTransactions sets the list of transactions with a deep copy of the given list.

func (*BodyV0) SetUncles

func (b *BodyV0) SetUncles(newUncle []*block.Header)

SetUncles sets the list of uncle headers with a deep copy of the given list.

func (*BodyV0) TransactionAt

func (b *BodyV0) TransactionAt(index int) *Transaction

TransactionAt returns the transaction at the given index in this block. It returns nil if index is out of bounds.

func (*BodyV0) Transactions

func (b *BodyV0) Transactions() (txs []*Transaction)

Transactions returns the list of transactions.

The returned list is a deep copy; the caller may do anything with it without affecting the original.

func (*BodyV0) Uncles

func (b *BodyV0) Uncles() (uncles []*block.Header)

Uncles returns a deep copy of the list of uncle headers of this block.

type BodyV1

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

BodyV1 is the V1 block body

func (*BodyV1) CXReceiptAt

func (b *BodyV1) CXReceiptAt(index int) *CXReceipt

CXReceiptAt returns the CXReceipt at given index in this block It returns nil if index is out of bounds

func (*BodyV1) DecodeRLP

func (b *BodyV1) DecodeRLP(s *rlp.Stream) error

DecodeRLP RLP-decodes a block body from the given RLP stream into the receiver.

func (*BodyV1) EncodeRLP

func (b *BodyV1) EncodeRLP(w io.Writer) error

EncodeRLP RLP-encodes the block body into the given writer.

func (*BodyV1) IncomingReceipts

func (b *BodyV1) IncomingReceipts() (incomingReceipts CXReceiptsProofs)

IncomingReceipts returns a deep copy of the list of incoming cross-shard transaction receipts of this block.

func (*BodyV1) SetIncomingReceipts

func (b *BodyV1) SetIncomingReceipts(newIncomingReceipts CXReceiptsProofs)

SetIncomingReceipts sets the list of incoming cross-shard transaction receipts of this block with a dep copy of the given list.

func (*BodyV1) SetTransactions

func (b *BodyV1) SetTransactions(newTransactions []*Transaction)

SetTransactions sets the list of transactions with a deep copy of the given list.

func (*BodyV1) SetUncles

func (b *BodyV1) SetUncles(newUncle []*block.Header)

SetUncles sets the list of uncle headers with a deep copy of the given list.

func (*BodyV1) TransactionAt

func (b *BodyV1) TransactionAt(index int) *Transaction

TransactionAt returns the transaction at the given index in this block. It returns nil if index is out of bounds.

func (*BodyV1) Transactions

func (b *BodyV1) Transactions() (txs []*Transaction)

Transactions returns the list of transactions.

The returned list is a deep copy; the caller may do anything with it without affecting the original.

func (*BodyV1) Uncles

func (b *BodyV1) Uncles() (uncles []*block.Header)

Uncles returns a deep copy of the list of uncle headers of this block.

type CXMerkleProof

type CXMerkleProof struct {
	BlockNum      *big.Int      // blockNumber of source shard
	BlockHash     common.Hash   // blockHash of source shard
	ShardID       uint32        // shardID of source shard
	CXReceiptHash common.Hash   // root hash of the cross shard receipts in a given block
	ShardIDs      []uint32      // order list, records destination shardID
	CXShardHashes []common.Hash // ordered hash list, each hash corresponds to one destination shard's receipts root hash
}

CXMerkleProof represents the merkle proof of a collection of ordered cross shard transactions

func (*CXMerkleProof) Copy

func (cxmp *CXMerkleProof) Copy() *CXMerkleProof

Copy makes a deep copy of the receiver.

func (CXMerkleProof) MarshalJSON added in v1.2.0

func (r CXMerkleProof) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*CXMerkleProof) UnmarshalJSON added in v1.2.0

func (r *CXMerkleProof) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

type CXReceipt

type CXReceipt struct {
	TxHash    common.Hash // hash of the cross shard transaction in source shard
	From      common.Address
	To        *common.Address
	ShardID   uint32
	ToShardID uint32
	Amount    *big.Int
}

CXReceipt represents a receipt for cross-shard transaction

func (*CXReceipt) Copy

func (r *CXReceipt) Copy() *CXReceipt

Copy makes a deep copy of the receiver.

func (CXReceipt) MarshalJSON added in v1.2.0

func (r CXReceipt) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*CXReceipt) UnmarshalJSON added in v1.2.0

func (r *CXReceipt) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

type CXReceipts

type CXReceipts []*CXReceipt

CXReceipts is a list of CXReceipt

func (CXReceipts) ComputeMerkleRoot added in v1.1.1

func (cs CXReceipts) ComputeMerkleRoot() common.Hash

ComputeMerkleRoot computes the merkle root of this list of receipts The root is the hash of [shardID, receiptsRoot, shardID, receiptsRoot...] The receiptRoot is the merkle root hash of the receipts for a specific shards.

func (CXReceipts) Copy

func (cs CXReceipts) Copy() (cpy CXReceipts)

Copy makes a deep copy of the receiver.

func (CXReceipts) GetRlp

func (cs CXReceipts) GetRlp(i int) []byte

GetRlp implements Rlpable and returns the i'th element of s in rlp.

func (CXReceipts) GetToShardReceipts added in v1.1.1

func (cs CXReceipts) GetToShardReceipts(shardID uint32) CXReceipts

GetToShardReceipts filters the cross shard receipts with given destination shardID

func (CXReceipts) Len

func (cs CXReceipts) Len() int

Len returns the length of s.

func (CXReceipts) MaxToShardID

func (cs CXReceipts) MaxToShardID() uint32

MaxToShardID returns the maximum destination shardID of cxReceipts

func (CXReceipts) Swap

func (cs CXReceipts) Swap(i, j int)

Swap swaps the i'th and the j'th element in s.

func (CXReceipts) ToShardID

func (cs CXReceipts) ToShardID(i int) uint32

ToShardID returns the destination shardID of the cxReceipt

type CXReceiptsProof

type CXReceiptsProof struct {
	Receipts     CXReceipts
	MerkleProof  *CXMerkleProof
	Header       *block.Header
	CommitSig    []byte
	CommitBitmap []byte
}

CXReceiptsProof carrys the cross shard receipts and merkle proof

func (*CXReceiptsProof) ContainsEmptyField

func (cxp *CXReceiptsProof) ContainsEmptyField() bool

ContainsEmptyField checks whether the given CXReceiptsProof contains empty field

func (*CXReceiptsProof) Copy

func (cxp *CXReceiptsProof) Copy() *CXReceiptsProof

Copy makes a deep copy of the receiver.

func (*CXReceiptsProof) GetToShardID

func (cxp *CXReceiptsProof) GetToShardID() (uint32, error)

GetToShardID get the destination shardID, return error if there is more than one unique shardID

func (CXReceiptsProof) MarshalJSON added in v1.2.0

func (r CXReceiptsProof) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*CXReceiptsProof) UnmarshalJSON added in v1.2.0

func (r *CXReceiptsProof) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

type CXReceiptsProofs

type CXReceiptsProofs []*CXReceiptsProof

CXReceiptsProofs is a list of CXReceiptsProof

func (CXReceiptsProofs) Copy

func (cs CXReceiptsProofs) Copy() (cpy CXReceiptsProofs)

Copy makes a deep copy of the receiver.

func (CXReceiptsProofs) GetRlp

func (cs CXReceiptsProofs) GetRlp(i int) []byte

GetRlp implements Rlpable and returns the i'th element of s in rlp.

func (CXReceiptsProofs) Len

func (cs CXReceiptsProofs) Len() int

Len returns the length of s.

func (CXReceiptsProofs) MaxToShardID

func (cs CXReceiptsProofs) MaxToShardID() uint32

MaxToShardID returns the maximum destination shardID of cxReceipts Not used

func (CXReceiptsProofs) Swap

func (cs CXReceiptsProofs) Swap(i, j int)

Swap swaps the i'th and the j'th element in s.

func (CXReceiptsProofs) ToShardID

func (cs CXReceiptsProofs) ToShardID(i int) uint32

ToShardID returns the destination shardID of the cxReceipt Not used

type CrossLink struct {
	ChainHeader *block.Header
}

CrossLink is only used on beacon chain to store the hash links from other shards

func DeserializeCrossLink(bytes []byte) (*CrossLink, error)

DeserializeCrossLink rlp-decode the bytes into cross link object.

func NewCrossLink(header *block.Header) CrossLink

NewCrossLink returns a new cross link object

func (CrossLink) BlockNum

func (cl CrossLink) BlockNum() *big.Int

BlockNum returns blockNum

func (CrossLink) Hash

func (cl CrossLink) Hash() common.Hash

Hash returns hash

func (CrossLink) Header

func (cl CrossLink) Header() *block.Header

Header returns header

func (CrossLink) OutgoingReceiptsRoot

func (cl CrossLink) OutgoingReceiptsRoot() common.Hash

OutgoingReceiptsRoot returns hash of cross shard receipts

func (CrossLink) Serialize

func (cl CrossLink) Serialize() []byte

Serialize returns bytes of cross link rlp-encoded content

func (CrossLink) ShardID

func (cl CrossLink) ShardID() uint32

ShardID returns shardID

func (CrossLink) StateRoot

func (cl CrossLink) StateRoot() common.Hash

StateRoot returns hash of state root

type CrossLinks []CrossLink

CrossLinks is a collection of cross links

func (CrossLinks) IsSorted

func (cls CrossLinks) IsSorted() bool

IsSorted checks whether the cross links are sorted

func (CrossLinks) Sort

func (cls CrossLinks) Sort()

Sort crosslinks by shardID and then by blockNum

type DerivableList

type DerivableList interface {
	Len() int
	GetRlp(i int) []byte
	ToShardID(i int) uint32
	MaxToShardID() uint32 // return the maximum non-empty destination shardID
}

DerivableList is the interface of DerivableList.

type EIP155Signer

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

EIP155Signer implements Signer using the EIP155 rules.

func NewEIP155Signer

func NewEIP155Signer(chainID *big.Int) EIP155Signer

NewEIP155Signer creates a EIP155Signer given chainID.

func (EIP155Signer) Equal

func (s EIP155Signer) Equal(s2 Signer) bool

Equal checks if the given EIP155Signer is equal to another Signer.

func (EIP155Signer) Hash

func (s EIP155Signer) Hash(tx *Transaction) common.Hash

Hash returns the hash to be signed by the sender. It does not uniquely identify the transaction.

func (EIP155Signer) Sender

func (s EIP155Signer) Sender(tx *Transaction) (common.Address, error)

Sender returns the sender address of the given signer.

func (EIP155Signer) SignatureValues

func (s EIP155Signer) SignatureValues(tx *Transaction, sig []byte) (R, S, V *big.Int, err error)

SignatureValues returns signature values. This signature needs to be in the [R || S || V] format where V is 0 or 1.

type FrontierSigner

type FrontierSigner struct{}

FrontierSigner ...

func (FrontierSigner) Equal

func (fs FrontierSigner) Equal(s2 Signer) bool

Equal checks if the s2 signer is equal to the given signer.

func (FrontierSigner) Hash

func (fs FrontierSigner) Hash(tx *Transaction) common.Hash

Hash returns the hash to be signed by the sender. It does not uniquely identify the transaction.

func (FrontierSigner) Sender

func (fs FrontierSigner) Sender(tx *Transaction) (common.Address, error)

Sender returns the sender address of the given transaction.

func (FrontierSigner) SignatureValues

func (fs FrontierSigner) SignatureValues(tx *Transaction, sig []byte) (r, s, v *big.Int, err error)

SignatureValues returns signature values. This signature needs to be in the [R || S || V] format where V is 0 or 1.

type HomesteadSigner

type HomesteadSigner struct{ FrontierSigner }

HomesteadSigner implements TransactionInterface using the homestead rules.

func (HomesteadSigner) Equal

func (hs HomesteadSigner) Equal(s2 Signer) bool

Equal checks if it is equal to s2 signer.

func (HomesteadSigner) Sender

func (hs HomesteadSigner) Sender(tx *Transaction) (common.Address, error)

Sender returns the address of the sender.

func (HomesteadSigner) SignatureValues

func (hs HomesteadSigner) SignatureValues(tx *Transaction, sig []byte) (r, s, v *big.Int, err error)

SignatureValues returns signature values. This signature needs to be in the [R || S || V] format where V is 0 or 1.

type Log

type Log struct {
	// Consensus fields:
	// address of the contract that generated the event
	Address common.Address `json:"address" gencodec:"required"`
	// list of topics provided by the contract.
	Topics []common.Hash `json:"topics" gencodec:"required"`
	// supplied by the contract, usually ABI-encoded
	Data []byte `json:"data" gencodec:"required"`

	// Derived fields. These fields are filled in by the node
	// but not secured by consensus.
	// block in which the transaction was included
	BlockNumber uint64 `json:"blockNumber"`
	// hash of the transaction
	TxHash common.Hash `json:"transactionHash" gencodec:"required"`
	// index of the transaction in the block
	TxIndex uint `json:"transactionIndex" gencodec:"required"`
	// hash of the block in which the transaction was included
	BlockHash common.Hash `json:"blockHash"`
	// index of the log in the block
	Index uint `json:"logIndex" gencodec:"required"`

	// The Removed field is true if this log was reverted due to a chain reorganisation.
	// You must pay attention to this field if you receive logs through a filter query.
	Removed bool `json:"removed"`
}

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

func (*Log) DecodeRLP

func (l *Log) DecodeRLP(s *rlp.Stream) error

DecodeRLP implements rlp.Decoder.

func (*Log) EncodeRLP

func (l *Log) EncodeRLP(w io.Writer) error

EncodeRLP implements rlp.Encoder.

func (Log) MarshalJSON

func (l Log) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*Log) UnmarshalJSON

func (l *Log) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

type LogForStorage

type LogForStorage Log

LogForStorage is a wrapper around a Log that flattens and parses the entire content of a log including non-consensus fields.

func (*LogForStorage) DecodeRLP

func (l *LogForStorage) DecodeRLP(s *rlp.Stream) error

DecodeRLP implements rlp.Decoder.

func (*LogForStorage) EncodeRLP

func (l *LogForStorage) EncodeRLP(w io.Writer) error

EncodeRLP implements rlp.Encoder.

type Message

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

Message is a fully derived transaction and implements core.Message

NOTE: In a future PR this will be removed.

func NewMessage

func NewMessage(from common.Address, to *common.Address, nonce uint64, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte, checkNonce bool) Message

NewMessage returns new message.

func (Message) CheckNonce

func (m Message) CheckNonce() bool

CheckNonce returns checkNonce of Message.

func (Message) Data

func (m Message) Data() []byte

Data return data of the Message.

func (Message) From

func (m Message) From() common.Address

From returns from address from Message.

func (Message) Gas

func (m Message) Gas() uint64

Gas returns gas limit of the Message.

func (Message) GasPrice

func (m Message) GasPrice() *big.Int

GasPrice returns gas price from Message.

func (Message) Nonce

func (m Message) Nonce() uint64

Nonce returns Nonce of the Message.

func (Message) To

func (m Message) To() *common.Address

To returns to address from Message.

func (Message) Value

func (m Message) Value() *big.Int

Value returns the value amount from Message.

type RPCTransactionError

type RPCTransactionError struct {
	TxHashID             string `json:"tx-hash-id"`
	TimestampOfRejection int64  `json:"time-at-rejection"`
	ErrMessage           string `json:"error-message"`
}

RPCTransactionError ..

type Receipt

type Receipt struct {
	// Consensus fields
	PostState         []byte         `json:"root"`
	Status            uint64         `json:"status"`
	CumulativeGasUsed uint64         `json:"cumulativeGasUsed" gencodec:"required"`
	Bloom             ethtypes.Bloom `json:"logsBloom"         gencodec:"required"`
	Logs              []*Log         `json:"logs"              gencodec:"required"`

	// Implementation fields (don't reorder!)
	TxHash          common.Hash    `json:"transactionHash" gencodec:"required"`
	ContractAddress common.Address `json:"contractAddress"`
	GasUsed         uint64         `json:"gasUsed" gencodec:"required"`
}

Receipt represents the results of a transaction.

func NewReceipt

func NewReceipt(root []byte, failed bool, cumulativeGasUsed uint64) *Receipt

NewReceipt creates a barebone transaction receipt, copying the init fields.

func (*Receipt) DecodeRLP

func (r *Receipt) DecodeRLP(s *rlp.Stream) error

DecodeRLP implements rlp.Decoder, and loads the consensus fields of a receipt from an RLP stream.

func (*Receipt) EncodeRLP

func (r *Receipt) EncodeRLP(w io.Writer) error

EncodeRLP implements rlp.Encoder, and flattens the consensus fields of a receipt into an RLP stream. If no post state is present, byzantium fork is assumed.

func (Receipt) MarshalJSON

func (r Receipt) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*Receipt) Size

func (r *Receipt) Size() common.StorageSize

Size returns the approximate memory used by all internal contents. It is used to approximate and limit the memory consumption of various caches.

func (*Receipt) UnmarshalJSON

func (r *Receipt) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

type ReceiptForStorage

type ReceiptForStorage Receipt

ReceiptForStorage is a wrapper around a Receipt that flattens and parses the entire content of a receipt, as opposed to only the consensus fields originally.

func (*ReceiptForStorage) DecodeRLP

func (r *ReceiptForStorage) DecodeRLP(s *rlp.Stream) error

DecodeRLP implements rlp.Decoder, and loads both consensus and implementation fields of a receipt from an RLP stream.

func (*ReceiptForStorage) EncodeRLP

func (r *ReceiptForStorage) EncodeRLP(w io.Writer) error

EncodeRLP implements rlp.Encoder, and flattens all content fields of a receipt into an RLP stream.

type Receipts

type Receipts []*Receipt

Receipts is a wrapper around a Receipt array to implement DerivableList.

func (Receipts) GetRlp

func (r Receipts) GetRlp(i int) []byte

GetRlp returns the RLP encoding of one receipt from the list.

func (Receipts) Len

func (r Receipts) Len() int

Len returns the number of receipts in this list.

func (Receipts) MaxToShardID

func (r Receipts) MaxToShardID() uint32

MaxToShardID returns 0, arbitrary value, NOT used

func (Receipts) ToShardID

func (r Receipts) ToShardID(i int) uint32

ToShardID returns 0, arbitrary value This function is NOT used, just to compatible with DerivableList interface

type RecentTxsStats

type RecentTxsStats map[uint64]BlockTxsCounts

RecentTxsStats is a recent transactions stats map tracking stats like BlockTxsCounts.

func (RecentTxsStats) String

func (rts RecentTxsStats) String() string

String returns the string formatted representation of RecentTxsStats

type Signer

type Signer interface {
	// Sender returns the sender address of the transaction.
	Sender(tx *Transaction) (common.Address, error)
	// SignatureValues returns the raw R, S, V values corresponding to the
	// given signature.
	SignatureValues(tx *Transaction, sig []byte) (r, s, v *big.Int, err error)
	// Hash returns the hash to be signed.
	Hash(tx *Transaction) common.Hash
	// Equal returns true if the given signer is the same as the receiver.
	Equal(Signer) bool
}

Signer encapsulates transaction signature handling. Note that this interface is not a stable API and may change at any time to accommodate new protocol rules.

func MakeSigner

func MakeSigner(config *params.ChainConfig, epochNumber *big.Int) Signer

MakeSigner returns a Signer based on the given chain config and epoch number.

type Transaction

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

Transaction struct.

func NewContractCreation

func NewContractCreation(nonce uint64, shardID uint32, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *Transaction

NewContractCreation returns same shard contract transaction.

func NewCrossShardTransaction

func NewCrossShardTransaction(nonce uint64, to *common.Address, shardID uint32, toShardID uint32, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *Transaction

NewCrossShardTransaction returns new cross shard transaction

func NewTransaction

func NewTransaction(nonce uint64, to common.Address, shardID uint32, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *Transaction

NewTransaction returns new transaction, this method is to create same shard transaction

func SignTx

func SignTx(tx *Transaction, s Signer, prv *ecdsa.PrivateKey) (*Transaction, error)

SignTx signs the transaction using the given signer and private key

func (*Transaction) AsMessage

func (tx *Transaction) AsMessage(s Signer) (Message, error)

AsMessage returns the transaction as a core.Message.

AsMessage requires a signer to derive the sender.

XXX Rename message to something less arbitrary?

func (*Transaction) ChainID

func (tx *Transaction) ChainID() *big.Int

ChainID returns which chain id this transaction was signed for (if at all)

func (*Transaction) CheckNonce

func (tx *Transaction) CheckNonce() bool

CheckNonce returns check nonce from Transaction.

func (*Transaction) Copy

func (tx *Transaction) Copy() *Transaction

Copy returns a copy of the transaction.

func (*Transaction) Cost

func (tx *Transaction) Cost() *big.Int

Cost returns amount + gasprice * gaslimit.

func (*Transaction) Data

func (tx *Transaction) Data() []byte

Data returns data payload of Transaction.

func (*Transaction) DecodeRLP

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

DecodeRLP implements rlp.Decoder

func (*Transaction) EncodeRLP

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

EncodeRLP implements rlp.Encoder

func (*Transaction) Gas

func (tx *Transaction) Gas() uint64

Gas returns gas of Transaction.

func (*Transaction) GasPrice

func (tx *Transaction) GasPrice() *big.Int

GasPrice returns gas price of Transaction.

func (*Transaction) Hash

func (tx *Transaction) Hash() common.Hash

Hash hashes the RLP encoding of tx. It uniquely identifies the transaction.

func (*Transaction) MarshalJSON

func (tx *Transaction) MarshalJSON() ([]byte, error)

MarshalJSON encodes the web3 RPC transaction format.

func (*Transaction) Nonce

func (tx *Transaction) Nonce() uint64

Nonce returns account nonce from Transaction.

func (*Transaction) Protected

func (tx *Transaction) Protected() bool

Protected returns whether the transaction is protected from replay protection.

func (*Transaction) RawSignatureValues

func (tx *Transaction) RawSignatureValues() (*big.Int, *big.Int, *big.Int)

RawSignatureValues return raw signature values.

func (*Transaction) ShardID

func (tx *Transaction) ShardID() uint32

ShardID returns which shard id this transaction was signed for (if at all)

func (*Transaction) Size

func (tx *Transaction) Size() common.StorageSize

Size returns the true RLP encoded storage size of the transaction, either by encoding and returning it, or returning a previously cached value.

func (*Transaction) To

func (tx *Transaction) To() *common.Address

To returns the recipient address of the transaction. It returns nil if the transaction is a contract creation.

func (*Transaction) ToShardID

func (tx *Transaction) ToShardID() uint32

ToShardID returns the destination shard id this transaction is going to

func (*Transaction) UnmarshalJSON

func (tx *Transaction) UnmarshalJSON(input []byte) error

UnmarshalJSON decodes the web3 RPC transaction format.

func (*Transaction) Value

func (tx *Transaction) Value() *big.Int

Value returns data payload of Transaction.

func (*Transaction) WithSignature

func (tx *Transaction) WithSignature(signer Signer, sig []byte) (*Transaction, error)

WithSignature returns a new transaction with the given signature. This signature needs to be formatted as described in the yellow paper (v+27).

type TransactionType

type TransactionType byte

TransactionType different types of transactions

const (
	SameShardTx     TransactionType = iota
	SubtractionOnly                 // only subtract tokens from source shard account
	InvalidTx
)

Different Transaction Types

func (TransactionType) String

func (txType TransactionType) String() string

String print mode string

type Transactions

type Transactions []*Transaction

Transactions is a Transaction slice type for basic sorting.

func TxDifference

func TxDifference(a, b Transactions) Transactions

TxDifference returns a new set which is the difference between a and b.

func (Transactions) GetRlp

func (s Transactions) GetRlp(i int) []byte

GetRlp implements Rlpable and returns the i'th element of s in rlp.

func (Transactions) Len

func (s Transactions) Len() int

Len returns the length of s.

func (Transactions) MaxToShardID

func (s Transactions) MaxToShardID() uint32

MaxToShardID returns 0, arbitrary value, NOT use

func (Transactions) Swap

func (s Transactions) Swap(i, j int)

Swap swaps the i'th and the j'th element in s.

func (Transactions) ToShardID

func (s Transactions) ToShardID(i int) uint32

ToShardID returns the destination shardID of given transaction

type TransactionsByPriceAndNonce

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

TransactionsByPriceAndNonce represents a set of transactions that can return transactions in a profit-maximizing sorted order, while supporting removing entire batches of transactions for non-executable accounts.

func NewTransactionsByPriceAndNonce

func NewTransactionsByPriceAndNonce(signer Signer, txs map[common.Address]Transactions) *TransactionsByPriceAndNonce

NewTransactionsByPriceAndNonce creates a transaction set that can retrieve price sorted transactions in a nonce-honouring way.

Note, the input map is reowned so the caller should not interact any more with if after providing it to the constructor.

func (*TransactionsByPriceAndNonce) Peek

Peek returns the next transaction by price.

func (*TransactionsByPriceAndNonce) Pop

func (t *TransactionsByPriceAndNonce) Pop()

Pop removes the best transaction, *not* replacing it with the next one from the same account. This should be used when a transaction cannot be executed and hence all subsequent ones should be discarded from the same account.

func (*TransactionsByPriceAndNonce) Shift

func (t *TransactionsByPriceAndNonce) Shift()

Shift replaces the current best head with the next one from the same account.

type TxByNonce

type TxByNonce Transactions

TxByNonce implements the sort interface to allow sorting a list of transactions by their nonces. This is usually only useful for sorting transactions from a single account, otherwise a nonce comparison doesn't make much sense.

func (TxByNonce) Len

func (s TxByNonce) Len() int

func (TxByNonce) Less

func (s TxByNonce) Less(i, j int) bool

func (TxByNonce) Swap

func (s TxByNonce) Swap(i, j int)

type TxByPrice

type TxByPrice Transactions

TxByPrice implements both the sort and the heap interface, making it useful for all at once sorting as well as individually adding and removing elements.

func (TxByPrice) Len

func (s TxByPrice) Len() int

func (TxByPrice) Less

func (s TxByPrice) Less(i, j int) bool

func (*TxByPrice) Pop

func (s *TxByPrice) Pop() interface{}

Pop pops a transaction.

func (*TxByPrice) Push

func (s *TxByPrice) Push(x interface{})

Push pushes a transaction.

func (TxByPrice) Swap

func (s TxByPrice) Swap(i, j int)

Jump to

Keyboard shortcuts

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