Documentation ¶
Overview ¶
Package types contains data types related to Ethereum consensus.
Index ¶
- Constants
- Variables
- func BloomLookup(bin ethtypes.Bloom, topic bytesBacked) bool
- func BytesToBloom(b []byte) ethtypes.Bloom
- func CalcUncleHash(uncles []*block.Header) common.Hash
- func CopyHeader(h *block.Header) *block.Header
- func CreateBloom(receipts Receipts) ethtypes.Bloom
- func DeriveMultipleShardsSha(list DerivableList) common.Hash
- func DeriveOneShardSha(list DerivableList, shardID uint32) common.Hash
- func DeriveSha(list ...DerivableBase) common.Hash
- func LogsBloom(logs []*Log) *big.Int
- func Number(b1, b2 *Block) bool
- func Sender(signer Signer, tx *Transaction) (common.Address, error)
- type Block
- func (b *Block) AddVdf(vdf []byte)
- func (b *Block) AddVrf(vrf []byte)
- func (b *Block) Bloom() ethtypes.Bloom
- func (b *Block) Body() *Body
- func (b *Block) Coinbase() common.Address
- func (b *Block) DecodeRLP(s *rlp.Stream) error
- func (b *Block) DeprecatedTd() *big.Int
- func (b *Block) EncodeRLP(w io.Writer) error
- func (b *Block) Epoch() *big.Int
- func (b *Block) Extra() []byte
- func (b *Block) GasLimit() uint64
- func (b *Block) GasUsed() uint64
- func (b *Block) Hash() common.Hash
- func (b *Block) Header() *block.Header
- func (b *Block) IncomingReceipts() CXReceiptsProofs
- func (b *Block) Logger(logger *zerolog.Logger) *zerolog.Logger
- func (b *Block) MixDigest() common.Hash
- func (b *Block) Number() *big.Int
- func (b *Block) NumberU64() uint64
- func (b *Block) OutgoingReceiptHash() common.Hash
- func (b *Block) ParentHash() common.Hash
- func (b *Block) ReceiptHash() common.Hash
- func (b *Block) Root() common.Hash
- func (b *Block) SetLastCommitSig(sig []byte, signers []byte)
- func (b *Block) ShardID() uint32
- func (b *Block) Size() common.StorageSize
- func (b *Block) StakingTransactions() staking.StakingTransactions
- func (b *Block) Time() *big.Int
- func (b *Block) Transaction(hash common.Hash) *Transaction
- func (b *Block) Transactions() Transactions
- func (b *Block) TxHash() common.Hash
- func (b *Block) Uncles() []*block.Header
- func (b *Block) Vdf() []byte
- func (b *Block) Vrf() []byte
- func (b *Block) WithBody(transactions []*Transaction, stakingTxns []*staking.StakingTransaction, ...) *Block
- func (b *Block) WithSeal(header *block.Header) *Block
- type BlockBy
- type BlockNonce
- type BlockTxsCounts
- type Blocks
- type Body
- type BodyFieldSetter
- func (bfs BodyFieldSetter) Body() *Body
- func (bfs BodyFieldSetter) IncomingReceipts(newIncomingReceipts CXReceiptsProofs) BodyFieldSetter
- func (bfs BodyFieldSetter) StakingTransactions(newStakingTransactions []*types.StakingTransaction) BodyFieldSetter
- func (bfs BodyFieldSetter) Transactions(newTransactions []*Transaction) BodyFieldSetter
- func (bfs BodyFieldSetter) Uncles(newUncles []*block.Header) BodyFieldSetter
- type BodyInterface
- type BodyV0
- func (b *BodyV0) CXReceiptAt(index int) *CXReceipt
- func (b *BodyV0) DecodeRLP(s *rlp.Stream) error
- func (b *BodyV0) EncodeRLP(w io.Writer) error
- func (b *BodyV0) IncomingReceipts() (incomingReceipts CXReceiptsProofs)
- func (b *BodyV0) SetIncomingReceipts(newIncomingReceipts CXReceiptsProofs)
- func (b *BodyV0) SetStakingTransactions(newTransactions []*staking.StakingTransaction)
- func (b *BodyV0) SetTransactions(newTransactions []*Transaction)
- func (b *BodyV0) SetUncles(newUncle []*block.Header)
- func (b *BodyV0) StakingTransactionAt(index int) *staking.StakingTransaction
- func (b *BodyV0) StakingTransactions() (txs []*staking.StakingTransaction)
- func (b *BodyV0) TransactionAt(index int) *Transaction
- func (b *BodyV0) Transactions() (txs []*Transaction)
- func (b *BodyV0) Uncles() (uncles []*block.Header)
- type BodyV1
- func (b *BodyV1) CXReceiptAt(index int) *CXReceipt
- func (b *BodyV1) DecodeRLP(s *rlp.Stream) error
- func (b *BodyV1) EncodeRLP(w io.Writer) error
- func (b *BodyV1) IncomingReceipts() (incomingReceipts CXReceiptsProofs)
- func (b *BodyV1) SetIncomingReceipts(newIncomingReceipts CXReceiptsProofs)
- func (b *BodyV1) SetStakingTransactions(newTransactions []*staking.StakingTransaction)
- func (b *BodyV1) SetTransactions(newTransactions []*Transaction)
- func (b *BodyV1) SetUncles(newUncle []*block.Header)
- func (b *BodyV1) StakingTransactionAt(index int) *staking.StakingTransaction
- func (b *BodyV1) StakingTransactions() (txs []*staking.StakingTransaction)
- func (b *BodyV1) TransactionAt(index int) *Transaction
- func (b *BodyV1) Transactions() (txs []*Transaction)
- func (b *BodyV1) Uncles() (uncles []*block.Header)
- type BodyV2
- func (b *BodyV2) CXReceiptAt(index int) *CXReceipt
- func (b *BodyV2) DecodeRLP(s *rlp.Stream) error
- func (b *BodyV2) EncodeRLP(w io.Writer) error
- func (b *BodyV2) IncomingReceipts() (incomingReceipts CXReceiptsProofs)
- func (b *BodyV2) SetIncomingReceipts(newIncomingReceipts CXReceiptsProofs)
- func (b *BodyV2) SetStakingTransactions(newStakingTransactions []*staking.StakingTransaction)
- func (b *BodyV2) SetTransactions(newTransactions []*Transaction)
- func (b *BodyV2) SetUncles(newUncle []*block.Header)
- func (b *BodyV2) StakingTransactionAt(index int) *staking.StakingTransaction
- func (b *BodyV2) StakingTransactions() (txs []*staking.StakingTransaction)
- func (b *BodyV2) TransactionAt(index int) *Transaction
- func (b *BodyV2) Transactions() (txs []*Transaction)
- func (b *BodyV2) Uncles() (uncles []*block.Header)
- type CXMerkleProof
- type CXReceipt
- type CXReceipts
- type CXReceiptsProof
- type CXReceiptsProofs
- type CrossLink
- func (cl CrossLink) Bitmap() []byte
- func (cl CrossLink) BlockNum() uint64
- func (cl CrossLink) Epoch() *big.Int
- func (cl CrossLink) Hash() common.Hash
- func (cl CrossLink) Number() *big.Int
- func (cl CrossLink) Serialize() []byte
- func (cl CrossLink) ShardID() uint32
- func (cl CrossLink) Signature() [96]byte
- type CrossLinks
- type DerivableBase
- type DerivableList
- type EIP155Signer
- type FrontierSigner
- type HomesteadSigner
- type Log
- type LogForStorage
- type Message
- func (m Message) BlockNum() *big.Int
- func (m Message) CheckNonce() bool
- func (m Message) Data() []byte
- func (m Message) From() common.Address
- func (m Message) Gas() uint64
- func (m Message) GasPrice() *big.Int
- func (m Message) Nonce() uint64
- func (m *Message) SetType(typ TransactionType)
- func (m Message) To() *common.Address
- func (m Message) Type() TransactionType
- func (m Message) Value() *big.Int
- type RPCTransactionError
- type Receipt
- type ReceiptForStorage
- type Receipts
- type RecentTxsStats
- type Signer
- type Transaction
- func NewContractCreation(nonce uint64, shardID uint32, amount *big.Int, gasLimit uint64, ...) *Transaction
- func NewCrossShardTransaction(nonce uint64, to *common.Address, shardID uint32, toShardID uint32, ...) *Transaction
- func NewTransaction(nonce uint64, to common.Address, shardID uint32, amount *big.Int, ...) *Transaction
- func SignTx(tx *Transaction, s Signer, prv *ecdsa.PrivateKey) (*Transaction, error)
- func (tx *Transaction) AsMessage(s Signer) (Message, error)
- func (tx *Transaction) ChainID() *big.Int
- func (tx *Transaction) CheckNonce() bool
- func (tx *Transaction) Copy() *Transaction
- func (tx *Transaction) Cost() *big.Int
- func (tx *Transaction) Data() []byte
- func (tx *Transaction) DecodeRLP(s *rlp.Stream) error
- func (tx *Transaction) EncodeRLP(w io.Writer) error
- func (tx *Transaction) Gas() uint64
- func (tx *Transaction) GasPrice() *big.Int
- func (tx *Transaction) Hash() common.Hash
- func (tx *Transaction) MarshalJSON() ([]byte, error)
- func (tx *Transaction) Nonce() uint64
- func (tx *Transaction) Protected() bool
- func (tx *Transaction) RawSignatureValues() (*big.Int, *big.Int, *big.Int)
- func (tx *Transaction) ShardID() uint32
- func (tx *Transaction) Size() common.StorageSize
- func (tx *Transaction) To() *common.Address
- func (tx *Transaction) ToShardID() uint32
- func (tx *Transaction) UnmarshalJSON(input []byte) error
- func (tx *Transaction) Value() *big.Int
- func (tx *Transaction) WithSignature(signer Signer, sig []byte) (*Transaction, error)
- type TransactionType
- type Transactions
- type TransactionsByPriceAndNonce
- type TxByNonce
- type TxByPrice
Constants ¶
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 )
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 ¶
var ( EmptyRootHash = DeriveSha(Transactions{}) EmptyUncleHash = CalcUncleHash(nil) )
Constants for block.
var Bloom9 = bloom9
Bloom9 type.
var BodyRegistry = taggedrlp.NewRegistry()
BodyRegistry is the tagged RLP registry for block body types.
var (
ErrInvalidChainID = errors.New("invalid chain id for signer")
)
Constants for transaction signing.
var (
ErrInvalidSig = errors.New("invalid transaction v, r, s values")
)
Errors constants for Transaction.
var StakingTypeMap = map[staking.Directive]TransactionType{staking.DirectiveCreateValidator: StakeNewVal, staking.DirectiveEditValidator: StakeEditVal, staking.DirectiveDelegate: Delegate, staking.DirectiveUndelegate: Undelegate, staking.DirectiveCollectRewards: CollectRewards}
StakingTypeMap is the map from staking type to transactionType
Functions ¶
func BloomLookup ¶
BloomLookup checks if a topic may belong to the Bloom.
func BytesToBloom ¶
BytesToBloom converts a byte slice to a bloom filter. It panics if b is not of suitable size.
func CalcUncleHash ¶
CalcUncleHash returns rlp hash of uncles.
func CopyHeader ¶
CopyHeader creates a deep copy of a block header to prevent side effects from modifying a header variable.
func CreateBloom ¶
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 ...DerivableBase) common.Hash
DeriveSha calculates the hash of the trie generated by DerivableList.
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, stks []*staking.StakingTransaction) *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 ¶
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) DeprecatedTd ¶
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) Hash ¶
Hash returns the keccak256 hash of b's header. The hash is computed on the first call and cached thereafter.
func (*Block) IncomingReceipts ¶
func (b *Block) IncomingReceipts() CXReceiptsProofs
IncomingReceipts returns verified outgoing receipts
func (*Block) OutgoingReceiptHash ¶
OutgoingReceiptHash returns header cross shard receipt hash.
func (*Block) ParentHash ¶
ParentHash return header parent hash.
func (*Block) ReceiptHash ¶
ReceiptHash returns header receipt hash.
func (*Block) SetLastCommitSig ¶
SetLastCommitSig sets the last block's commit group signature.
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) 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) WithBody ¶
func (b *Block) WithBody(transactions []*Transaction, stakingTxns []*staking.StakingTransaction, uncles []*block.Header, incomingReceipts CXReceiptsProofs) *Block
WithBody returns a new block with the given transaction and uncle contents.
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 ¶
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 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 ¶
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 ¶
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 ¶
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) StakingTransactions ¶ added in v1.3.0
func (bfs BodyFieldSetter) StakingTransactions(newStakingTransactions []*types.StakingTransaction) BodyFieldSetter
StakingTransactions sets the StakingTransactions 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 // StakingTransactions returns a deep copy of staking transactions StakingTransactions() []*staking.StakingTransaction // TransactionAt returns the transaction at the given index in this block. // It returns nil if index is out of bounds. TransactionAt(index int) *Transaction // StakingTransactionAt returns the staking transaction at the given index in this block. // It returns nil if index is out of bounds. StakingTransactionAt(index int) *staking.StakingTransaction // 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) // SetStakingTransactions sets the list of staking transactions with a deep copy of the // given list. SetStakingTransactions(newStakingTransactions []*staking.StakingTransaction) // 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 ¶
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 ¶
DecodeRLP RLP-decodes a block body from the given RLP stream into the receiver.
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) SetStakingTransactions ¶ added in v1.3.0
func (b *BodyV0) SetStakingTransactions(newTransactions []*staking.StakingTransaction)
SetStakingTransactions sets the list of staking transactions with a deep copy of the given list. (not supported by Body V0)
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 ¶
SetUncles sets the list of uncle headers with a deep copy of the given list.
func (*BodyV0) StakingTransactionAt ¶ added in v1.3.0
func (b *BodyV0) StakingTransactionAt(index int) *staking.StakingTransaction
StakingTransactionAt returns the staking transaction at the given index in this block. It returns nil if index is out of bounds. (not supported by Body V0)
func (*BodyV0) StakingTransactions ¶ added in v1.3.0
func (b *BodyV0) StakingTransactions() (txs []*staking.StakingTransaction)
StakingTransactions returns the list of staking transactions. The returned list is a deep copy; the caller may do anything with it without affecting the original.
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.
type BodyV1 ¶
type BodyV1 struct {
// contains filtered or unexported fields
}
BodyV1 is the V1 block body
func (*BodyV1) CXReceiptAt ¶
CXReceiptAt returns the CXReceipt at given index in this block It returns nil if index is out of bounds
func (*BodyV1) DecodeRLP ¶
DecodeRLP RLP-decodes a block body from the given RLP stream into the receiver.
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) SetStakingTransactions ¶ added in v1.3.0
func (b *BodyV1) SetStakingTransactions(newTransactions []*staking.StakingTransaction)
SetStakingTransactions sets the list of staking transactions with a deep copy of the given list. (not supported by Body V1)
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 ¶
SetUncles sets the list of uncle headers with a deep copy of the given list.
func (*BodyV1) StakingTransactionAt ¶ added in v1.3.0
func (b *BodyV1) StakingTransactionAt(index int) *staking.StakingTransaction
StakingTransactionAt returns the staking transaction at the given index in this block. It returns nil if index is out of bounds. (not supported by Body V1)
func (*BodyV1) StakingTransactions ¶ added in v1.3.0
func (b *BodyV1) StakingTransactions() (txs []*staking.StakingTransaction)
StakingTransactions returns the list of staking transactions. The returned list is a deep copy; the caller may do anything with it without affecting the original.
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.
type BodyV2 ¶ added in v1.3.0
type BodyV2 struct {
// contains filtered or unexported fields
}
BodyV2 is the V2 block body
func (*BodyV2) CXReceiptAt ¶ added in v1.3.0
CXReceiptAt returns the CXReceipt at given index in this block It returns nil if index is out of bounds
func (*BodyV2) DecodeRLP ¶ added in v1.3.0
DecodeRLP RLP-decodes a block body from the given RLP stream into the receiver.
func (*BodyV2) EncodeRLP ¶ added in v1.3.0
EncodeRLP RLP-encodes the block body into the given writer.
func (*BodyV2) IncomingReceipts ¶ added in v1.3.0
func (b *BodyV2) IncomingReceipts() (incomingReceipts CXReceiptsProofs)
IncomingReceipts returns a deep copy of the list of incoming cross-shard transaction receipts of this block.
func (*BodyV2) SetIncomingReceipts ¶ added in v1.3.0
func (b *BodyV2) 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 (*BodyV2) SetStakingTransactions ¶ added in v1.3.0
func (b *BodyV2) SetStakingTransactions(newStakingTransactions []*staking.StakingTransaction)
SetStakingTransactions sets the list of staking transactions with a deep copy of the given list.
func (*BodyV2) SetTransactions ¶ added in v1.3.0
func (b *BodyV2) SetTransactions(newTransactions []*Transaction)
SetTransactions sets the list of transactions with a deep copy of the given list.
func (*BodyV2) SetUncles ¶ added in v1.3.0
SetUncles sets the list of uncle headers with a deep copy of the given list.
func (*BodyV2) StakingTransactionAt ¶ added in v1.3.0
func (b *BodyV2) StakingTransactionAt(index int) *staking.StakingTransaction
StakingTransactionAt returns the staking transaction at the given index in this block. It returns nil if index is out of bounds.
func (*BodyV2) StakingTransactions ¶ added in v1.3.0
func (b *BodyV2) StakingTransactions() (txs []*staking.StakingTransaction)
StakingTransactions returns the list of staking transactions. The returned list is a deep copy; the caller may do anything with it without affecting the original.
func (*BodyV2) TransactionAt ¶ added in v1.3.0
func (b *BodyV2) 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 (*BodyV2) Transactions ¶ added in v1.3.0
func (b *BodyV2) 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.
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.
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
type CXReceipts ¶
type CXReceipts []*CXReceipt
CXReceipts is a list of CXReceipt
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) 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
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) 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 ¶
type CrossLink struct { HashF common.Hash BlockNumberF *big.Int SignatureF [96]byte //aggregated signature BitmapF []byte //corresponding bitmap mask for agg signature ShardIDF uint32 //will be verified with signature on |blockNumber|blockHash| is correct EpochF *big.Int }
CrossLink is only used on beacon chain to store the hash links from other shards signature and bitmap correspond to |blockNumber|parentHash| byte array Captial to enable rlp encoding Here we replace header to signatures only, the basic assumption is the committee will not be corrupted during one epoch, which is the same as consensus assumption
func DeserializeCrossLink ¶
DeserializeCrossLink rlp-decode the bytes into cross link object.
func NewCrossLink ¶
NewCrossLink returns a new cross link object epoch is the parentHeader's epoch
type CrossLinks ¶
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 DerivableBase ¶ added in v1.3.0
DerivableBase ..
type DerivableList ¶
type DerivableList interface { DerivableBase 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) UnmarshalJSON ¶
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.
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 NewStakingMessage ¶ added in v1.3.0
func NewStakingMessage(from common.Address, nonce uint64, gasLimit uint64, gasPrice *big.Int, data []byte, blockNum *big.Int) Message
NewStakingMessage returns new message of staking type always need checkNonce
func (Message) CheckNonce ¶
CheckNonce returns checkNonce of Message.
func (*Message) SetType ¶ added in v1.3.0
func (m *Message) SetType(typ TransactionType)
SetType set the type of message
func (Message) Type ¶ added in v1.3.0
func (m Message) Type() TransactionType
Type returns the type of 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 ¶
NewReceipt creates a barebone transaction receipt, copying the init fields.
func (*Receipt) DecodeRLP ¶
DecodeRLP implements rlp.Decoder, and loads the consensus fields of a receipt from an RLP stream.
func (*Receipt) EncodeRLP ¶
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 ¶
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 ¶
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.
type Receipts ¶
type Receipts []*Receipt
Receipts is a wrapper around a Receipt array to implement DerivableList.
func (Receipts) MaxToShardID ¶
MaxToShardID returns 0, arbitrary value, NOT used
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) 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 ¶
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 StakeNewVal StakeEditVal Delegate Undelegate CollectRewards )
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) 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 ¶
func (t *TransactionsByPriceAndNonce) Peek() *Transaction
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.
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.