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 InternalTransaction) (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) GetCurrentCommitSig() []byte
- func (b *Block) Hash() common.Hash
- func (b *Block) Header() *block.Header
- func (b *Block) IncomingReceipts() CXReceiptsProofs
- func (b *Block) IsLastBlockInEpoch() bool
- 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) SetCurrentCommitSig(sigAndBitmap []byte)
- 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) String() string
- func (b *Block) Time() *big.Int
- 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
- 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
- func (cs CXReceipts) ComputeMerkleRoot() common.Hash
- func (cs CXReceipts) Copy() (cpy CXReceipts)
- func (cs CXReceipts) GetRlp(i int) []byte
- func (cs CXReceipts) GetToShardReceipts(shardID uint32) CXReceipts
- func (cs CXReceipts) Len() int
- func (cs CXReceipts) MaxToShardID() uint32
- func (cs CXReceipts) Swap(i, j int)
- func (cs CXReceipts) ToShardID(i int) uint32
- type CXReceiptsProof
- type CXReceiptsProofs
- type CoreTransaction
- 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) MarshalJSON() ([]byte, error)
- func (cl *CrossLink) Number() *big.Int
- func (cl *CrossLink) Serialize() []byte
- func (cl *CrossLink) ShardID() uint32
- func (cl *CrossLink) Signature() [96]byte
- func (cl *CrossLink) ViewID() *big.Int
- type CrossLinks
- type DerivableBase
- type DerivableList
- type EIP155Signer
- type EthTransaction
- func (tx *EthTransaction) AsMessage(s Signer) (Message, error)
- func (tx *EthTransaction) ChainID() *big.Int
- func (tx *EthTransaction) CheckNonce() bool
- func (tx *EthTransaction) ConvertToHmy() *Transaction
- func (tx *EthTransaction) Copy() *EthTransaction
- func (tx *EthTransaction) Cost() (*big.Int, error)
- func (tx *EthTransaction) Data() []byte
- func (tx *EthTransaction) DecodeRLP(s *rlp.Stream) error
- func (tx *EthTransaction) EncodeRLP(w io.Writer) error
- func (tx *EthTransaction) From() *atomic.Value
- func (tx *EthTransaction) Gas() uint64
- func (tx *EthTransaction) GasLimit() uint64
- func (tx *EthTransaction) GasPrice() *big.Int
- func (tx *EthTransaction) Hash() common.Hash
- func (tx *EthTransaction) IsEthCompatible() bool
- func (tx *EthTransaction) MarshalJSON() ([]byte, error)
- func (tx *EthTransaction) Nonce() uint64
- func (tx *EthTransaction) Protected() bool
- func (tx *EthTransaction) R() *big.Int
- func (tx *EthTransaction) RawSignatureValues() (v, r, s *big.Int)
- func (tx *EthTransaction) S() *big.Int
- func (tx *EthTransaction) SenderAddress() (common.Address, error)
- func (tx *EthTransaction) ShardID() uint32
- func (tx *EthTransaction) Size() common.StorageSize
- func (tx *EthTransaction) To() *common.Address
- func (tx *EthTransaction) ToShardID() uint32
- func (tx *EthTransaction) UnmarshalJSON(input []byte) error
- func (tx *EthTransaction) V() *big.Int
- func (tx *EthTransaction) Value() *big.Int
- func (tx *EthTransaction) WithSignature(signer Signer, sig []byte) (*EthTransaction, error)
- type EthTransactions
- type FrontierSigner
- type HomesteadSigner
- type InternalTransaction
- type InternalTransactions
- 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 PoolTransaction
- type PoolTransactions
- type PoolTxByNonce
- 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) ConvertToEth() *EthTransaction
- func (tx *Transaction) Copy() *Transaction
- func (tx *Transaction) Cost() (*big.Int, error)
- func (tx *Transaction) Data() []byte
- func (tx *Transaction) DecodeRLP(s *rlp.Stream) error
- func (tx *Transaction) EncodeRLP(w io.Writer) error
- func (tx *Transaction) From() *atomic.Value
- func (tx *Transaction) GasLimit() uint64
- func (tx *Transaction) GasPrice() *big.Int
- func (tx *Transaction) Hash() common.Hash
- func (tx *Transaction) HashByType() common.Hash
- func (tx *Transaction) IsEthCompatible() bool
- func (tx *Transaction) MarshalJSON() ([]byte, error)
- func (tx *Transaction) Nonce() uint64
- func (tx *Transaction) Protected() bool
- func (tx *Transaction) R() *big.Int
- func (tx *Transaction) RawSignatureValues() (*big.Int, *big.Int, *big.Int)
- func (tx *Transaction) S() *big.Int
- func (tx *Transaction) SenderAddress() (common.Address, error)
- 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) V() *big.Int
- func (tx *Transaction) Value() *big.Int
- func (tx *Transaction) WithSignature(signer Signer, sig []byte) (*Transaction, error)
- type TransactionErrorReport
- type TransactionErrorReports
- type TransactionErrorSink
- func (sink *TransactionErrorSink) Add(tx PoolTransaction, err error)
- func (sink *TransactionErrorSink) Contains(hash string) bool
- func (sink *TransactionErrorSink) PlainCount() int
- func (sink *TransactionErrorSink) PlainReport() TransactionErrorReports
- func (sink *TransactionErrorSink) Remove(tx PoolTransaction)
- func (sink *TransactionErrorSink) StakingCount() int
- func (sink *TransactionErrorSink) StakingReport() TransactionErrorReports
- 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) )
const ( //MaxPoolTransactionDataSize is a 128KB heuristic data limit for DOS prevention MaxPoolTransactionDataSize = 128 * 1024 //MaxEncodedPoolTransactionSize is a heuristic raw/encoded data size limit. It has an additional 10KB for metadata MaxEncodedPoolTransactionSize = MaxPoolTransactionDataSize + (10 * 1024) )
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 ( // ErrUnknownPoolTxType is returned when attempting to assert a PoolTransaction to its concrete type ErrUnknownPoolTxType = errors.New("unknown transaction type in tx-pool") )
var StakingTypeMap = map[staking.Directive]TransactionType{staking.DirectiveCreateValidator: StakeCreateVal, 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 InternalTransaction) (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) GetCurrentCommitSig ¶ added in v1.3.8
GetCurrentCommitSig get the commit group signature that signed on this block.
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) IsLastBlockInEpoch ¶ added in v1.10.0
IsLastBlockInEpoch returns if its the last block of the epoch.
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) SetCurrentCommitSig ¶ added in v1.3.8
SetCurrentCommitSig sets the commit group signature that signed on this block.
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) 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.
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) MarshalJSON ¶ added in v1.2.0
MarshalJSON marshals as JSON.
func (*CXReceipt) UnmarshalJSON ¶ added in v1.2.0
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) 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) 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 CoreTransaction ¶ added in v1.10.1
type CoreTransaction interface { From() *atomic.Value Nonce() uint64 GasPrice() *big.Int GasLimit() uint64 ShardID() uint32 ToShardID() uint32 To() *common.Address Value() *big.Int Data() []byte Hash() common.Hash Protected() bool ChainID() *big.Int }
CoreTransaction defines the core funcs of any transactions
type CrossLink ¶
type CrossLink struct { HashF common.Hash BlockNumberF *big.Int ViewIDF *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 Capital 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
func (*CrossLink) MarshalJSON ¶ added in v1.3.5
MarshalJSON ..
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 tie break by blockNum then by viewID
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 InternalTransaction) 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 InternalTransaction) (common.Address, error)
Sender returns the sender address of the given signer.
func (EIP155Signer) SignatureValues ¶
func (s EIP155Signer) SignatureValues(tx InternalTransaction, 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 EthTransaction ¶ added in v1.10.0
type EthTransaction struct {
// contains filtered or unexported fields
}
EthTransaction ethereum-compatible transaction
func NewEthTransaction ¶ added in v1.10.0
func NewEthTransaction(nonce uint64, to common.Address, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *EthTransaction
NewEthTransaction returns new ethereum-compatible transaction, which works as a intra-shard transaction
func SignEthTx ¶ added in v1.10.2
func SignEthTx(tx *EthTransaction, s Signer, prv *ecdsa.PrivateKey) (*EthTransaction, error)
SignEthTx signs the eth transaction using the given signer and private key
func (*EthTransaction) AsMessage ¶ added in v1.10.0
func (tx *EthTransaction) 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 (*EthTransaction) ChainID ¶ added in v1.10.0
func (tx *EthTransaction) ChainID() *big.Int
ChainID returns which chain id this transaction was signed for (if at all)
func (*EthTransaction) CheckNonce ¶ added in v1.10.0
func (tx *EthTransaction) CheckNonce() bool
CheckNonce returns check nonce from Transaction.
func (*EthTransaction) ConvertToHmy ¶ added in v1.10.2
func (tx *EthTransaction) ConvertToHmy() *Transaction
ConvertToHmy converts eth txn to hmy txn by filling in ShardID and ToShardID fields.
func (*EthTransaction) Copy ¶ added in v1.10.1
func (tx *EthTransaction) Copy() *EthTransaction
Copy returns a copy of the transaction.
func (*EthTransaction) Cost ¶ added in v1.10.0
func (tx *EthTransaction) Cost() (*big.Int, error)
Cost returns amount + gasprice * gaslimit.
func (*EthTransaction) Data ¶ added in v1.10.0
func (tx *EthTransaction) Data() []byte
Data returns data payload of Transaction.
func (*EthTransaction) DecodeRLP ¶ added in v1.10.0
func (tx *EthTransaction) DecodeRLP(s *rlp.Stream) error
DecodeRLP implements rlp.Decoder
func (*EthTransaction) EncodeRLP ¶ added in v1.10.0
func (tx *EthTransaction) EncodeRLP(w io.Writer) error
EncodeRLP implements rlp.Encoder
func (*EthTransaction) From ¶ added in v1.10.0
func (tx *EthTransaction) From() *atomic.Value
From returns the sender address of the transaction
func (*EthTransaction) Gas ¶ added in v1.10.0
func (tx *EthTransaction) Gas() uint64
Gas returns gas of Transaction.
func (*EthTransaction) GasLimit ¶ added in v1.10.0
func (tx *EthTransaction) GasLimit() uint64
GasLimit of the transcation
func (*EthTransaction) GasPrice ¶ added in v1.10.0
func (tx *EthTransaction) GasPrice() *big.Int
GasPrice returns gas price of Transaction.
func (*EthTransaction) Hash ¶ added in v1.10.0
func (tx *EthTransaction) Hash() common.Hash
Hash hashes the RLP encoding of tx. It uniquely identifies the transaction.
func (*EthTransaction) IsEthCompatible ¶ added in v1.10.2
func (tx *EthTransaction) IsEthCompatible() bool
IsEthCompatible returns whether the txn is ethereum compatible
func (*EthTransaction) MarshalJSON ¶ added in v1.10.0
func (tx *EthTransaction) MarshalJSON() ([]byte, error)
MarshalJSON encodes the web3 RPC transaction format.
func (*EthTransaction) Nonce ¶ added in v1.10.0
func (tx *EthTransaction) Nonce() uint64
Nonce returns account nonce from Transaction.
func (*EthTransaction) Protected ¶ added in v1.10.0
func (tx *EthTransaction) Protected() bool
Protected returns whether the transaction is protected from replay protection.
func (*EthTransaction) R ¶ added in v1.10.0
func (tx *EthTransaction) R() *big.Int
R value of the transaction signature
func (*EthTransaction) RawSignatureValues ¶ added in v1.10.0
func (tx *EthTransaction) RawSignatureValues() (v, r, s *big.Int)
RawSignatureValues returns the V, R, S signature values of the transaction. The return values should not be modified by the caller.
func (*EthTransaction) S ¶ added in v1.10.0
func (tx *EthTransaction) S() *big.Int
S value of the transaction signature
func (*EthTransaction) SenderAddress ¶ added in v1.10.1
func (tx *EthTransaction) SenderAddress() (common.Address, error)
SenderAddress returns the address of transaction sender Note that mainnet has unprotected transactions prior to Epoch 28
func (*EthTransaction) ShardID ¶ added in v1.10.0
func (tx *EthTransaction) ShardID() uint32
ShardID returns which shard id this transaction was signed for (if at all)
func (*EthTransaction) Size ¶ added in v1.10.0
func (tx *EthTransaction) Size() common.StorageSize
Size returns the true RLP encoded storage size of the transaction, either by encoding and returning it, or returning a previsouly cached value.
func (*EthTransaction) To ¶ added in v1.10.0
func (tx *EthTransaction) To() *common.Address
To returns the recipient address of the transaction. It returns nil if the transaction is a contract creation.
func (*EthTransaction) ToShardID ¶ added in v1.10.0
func (tx *EthTransaction) ToShardID() uint32
ToShardID returns the destination shard id this transaction is going to
func (*EthTransaction) UnmarshalJSON ¶ added in v1.10.0
func (tx *EthTransaction) UnmarshalJSON(input []byte) error
UnmarshalJSON decodes the web3 RPC transaction format.
func (*EthTransaction) V ¶ added in v1.10.0
func (tx *EthTransaction) V() *big.Int
V value of the transaction signature
func (*EthTransaction) Value ¶ added in v1.10.0
func (tx *EthTransaction) Value() *big.Int
Value is the amount of ONE token transfered (in Atto)
func (*EthTransaction) WithSignature ¶ added in v1.10.0
func (tx *EthTransaction) WithSignature(signer Signer, sig []byte) (*EthTransaction, error)
WithSignature returns a new transaction with the given signature. This signature needs to be in the [R || S || V] format where V is 0 or 1.
type EthTransactions ¶ added in v1.10.0
type EthTransactions []*EthTransaction
EthTransactions is a Transaction slice type for basic sorting.
func (EthTransactions) GetRlp ¶ added in v1.10.0
func (s EthTransactions) GetRlp(i int) []byte
GetRlp implements Rlpable and returns the i'th element of s in rlp.
func (EthTransactions) Len ¶ added in v1.10.0
func (s EthTransactions) Len() int
Len returns the length of s.
func (EthTransactions) Swap ¶ added in v1.10.0
func (s EthTransactions) Swap(i, j int)
Swap swaps the i'th and the j'th element in s.
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 InternalTransaction) 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 InternalTransaction) (common.Address, error)
Sender returns the sender address of the given transaction.
func (FrontierSigner) SignatureValues ¶
func (fs FrontierSigner) SignatureValues(tx InternalTransaction, 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 InternalTransaction 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 InternalTransaction) (common.Address, error)
Sender returns the address of the sender.
func (HomesteadSigner) SignatureValues ¶
func (hs HomesteadSigner) SignatureValues(tx InternalTransaction, 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 InternalTransaction ¶ added in v1.10.1
type InternalTransaction interface { CoreTransaction // Signature values V() *big.Int R() *big.Int S() *big.Int IsEthCompatible() bool AsMessage(s Signer) (Message, error) }
InternalTransaction defines the common interface for harmony and ethereum transactions.
type InternalTransactions ¶ added in v1.10.1
type InternalTransactions []InternalTransaction
InternalTransactions is a InternalTransaction slice type for basic sorting.
func (InternalTransactions) GetRlp ¶ added in v1.10.1
func (s InternalTransactions) GetRlp(i int) []byte
GetRlp implements Rlpable and returns the i'th element of s in rlp.
func (InternalTransactions) Len ¶ added in v1.10.1
func (s InternalTransactions) Len() int
Len returns the length of s.
func (InternalTransactions) MaxToShardID ¶ added in v1.10.1
func (s InternalTransactions) MaxToShardID() uint32
MaxToShardID returns 0, arbitrary value, NOT use
func (InternalTransactions) Swap ¶ added in v1.10.1
func (s InternalTransactions) Swap(i, j int)
Swap swaps the i'th and the j'th element in s.
func (InternalTransactions) ToShardID ¶ added in v1.10.1
func (s InternalTransactions) ToShardID(i int) uint32
ToShardID returns the destination shardID of given transaction
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 FindLogsWithTopic ¶ added in v1.10.0
FindLogsWithTopic returns all the logs that contain the given receipt
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 PoolTransaction ¶ added in v1.3.2
type PoolTransaction interface { CoreTransaction SenderAddress() (common.Address, error) Size() common.StorageSize Cost() (*big.Int, error) EncodeRLP(w io.Writer) error DecodeRLP(s *rlp.Stream) error }
PoolTransaction is the general transaction interface used by the tx pool
type PoolTransactions ¶ added in v1.3.2
type PoolTransactions []PoolTransaction
PoolTransactions is a PoolTransactions slice type for basic sorting.
func PoolTxDifference ¶ added in v1.3.2
func PoolTxDifference(a, b PoolTransactions) PoolTransactions
PoolTxDifference returns a new set which is the difference between a and b.
func (PoolTransactions) GetRlp ¶ added in v1.3.2
func (s PoolTransactions) GetRlp(i int) []byte
GetRlp implements Rlpable and returns the i'th element of s in rlp.
func (PoolTransactions) Len ¶ added in v1.3.2
func (s PoolTransactions) Len() int
Len returns the length of s.
func (PoolTransactions) Swap ¶ added in v1.3.2
func (s PoolTransactions) Swap(i, j int)
Swap swaps the i'th and the j'th element in s.
type PoolTxByNonce ¶ added in v1.3.2
type PoolTxByNonce PoolTransactions
PoolTxByNonce 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 (PoolTxByNonce) Len ¶ added in v1.3.2
func (s PoolTxByNonce) Len() int
func (PoolTxByNonce) Less ¶ added in v1.3.2
func (s PoolTxByNonce) Less(i, j int) bool
func (PoolTxByNonce) Swap ¶ added in v1.3.2
func (s PoolTxByNonce) Swap(i, j int)
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 InternalTransaction) (common.Address, error) // SignatureValues returns the raw R, S, V values corresponding to the // given signature. SignatureValues(tx InternalTransaction, sig []byte) (r, s, v *big.Int, err error) // Hash returns the hash to be signed. Hash(tx InternalTransaction) 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) ConvertToEth ¶ added in v1.10.2
func (tx *Transaction) ConvertToEth() *EthTransaction
ConvertToEth converts hmy txn to eth txn by removing the ShardID and ToShardID fields.
func (*Transaction) Copy ¶
func (tx *Transaction) Copy() *Transaction
Copy returns a copy of the transaction.
func (*Transaction) Cost ¶
func (tx *Transaction) Cost() (*big.Int, error)
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) From ¶ added in v1.10.0
func (tx *Transaction) From() *atomic.Value
From returns the sender address of the transaction
func (*Transaction) GasLimit ¶ added in v1.10.0
func (tx *Transaction) GasLimit() uint64
GasLimit of the transcation
func (*Transaction) GasPrice ¶
func (tx *Transaction) GasPrice() *big.Int
GasPrice is the gas price of the transaction
func (*Transaction) Hash ¶
func (tx *Transaction) Hash() common.Hash
Hash hashes the RLP encoding of tx. It uniquely identifies the transaction.
func (*Transaction) HashByType ¶ added in v1.10.2
func (tx *Transaction) HashByType() common.Hash
HashByType hashes the RLP encoding of tx in it's original format (eth or hmy) It uniquely identifies the transaction.
func (*Transaction) IsEthCompatible ¶ added in v1.10.2
func (tx *Transaction) IsEthCompatible() bool
IsEthCompatible returns whether the txn is ethereum compatible
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) R ¶ added in v1.10.0
func (tx *Transaction) R() *big.Int
R value of the transaction signature
func (*Transaction) RawSignatureValues ¶
RawSignatureValues return raw signature values.
func (*Transaction) S ¶ added in v1.10.0
func (tx *Transaction) S() *big.Int
S value of the transaction signature
func (*Transaction) SenderAddress ¶ added in v1.3.11
func (tx *Transaction) SenderAddress() (common.Address, error)
SenderAddress returns the address of transaction sender Note that mainnet has unprotected transactions prior to Epoch 28
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) V ¶ added in v1.10.0
func (tx *Transaction) V() *big.Int
V value of the transaction signature
func (*Transaction) Value ¶
func (tx *Transaction) Value() *big.Int
Value is the amount of ONE token transfered (in Atto)
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 TransactionErrorReport ¶ added in v1.3.11
type TransactionErrorReport struct { TxHashID string `json:"tx-hash-id"` StakingDirective string `json:"directive-kind,omitempty"` TimestampOfRejection int64 `json:"time-at-rejection"` ErrMessage string `json:"error-message"` }
TransactionErrorReport ..
type TransactionErrorReports ¶ added in v1.3.11
type TransactionErrorReports []*TransactionErrorReport
TransactionErrorReports ..
type TransactionErrorSink ¶ added in v1.3.11
type TransactionErrorSink struct {
// contains filtered or unexported fields
}
TransactionErrorSink is where all failed transactions get reported. Note that the keys of the lru caches are tx-hash strings.
func NewTransactionErrorSink ¶ added in v1.3.11
func NewTransactionErrorSink() *TransactionErrorSink
NewTransactionErrorSink ..
func (*TransactionErrorSink) Add ¶ added in v1.3.11
func (sink *TransactionErrorSink) Add(tx PoolTransaction, err error)
Add a transaction to the error sink with the given error
func (*TransactionErrorSink) Contains ¶ added in v1.3.11
func (sink *TransactionErrorSink) Contains(hash string) bool
Contains checks if there is an error associated with the given hash Note that the keys of the lru caches are tx-hash strings.
func (*TransactionErrorSink) PlainCount ¶ added in v1.3.11
func (sink *TransactionErrorSink) PlainCount() int
PlainCount ..
func (*TransactionErrorSink) PlainReport ¶ added in v1.3.11
func (sink *TransactionErrorSink) PlainReport() TransactionErrorReports
PlainReport ..
func (*TransactionErrorSink) Remove ¶ added in v1.3.11
func (sink *TransactionErrorSink) Remove(tx PoolTransaction)
Remove a transaction's error from the error sink
func (*TransactionErrorSink) StakingCount ¶ added in v1.3.11
func (sink *TransactionErrorSink) StakingCount() int
StakingCount ..
func (*TransactionErrorSink) StakingReport ¶ added in v1.3.11
func (sink *TransactionErrorSink) StakingReport() TransactionErrorReports
StakingReport ..
type TransactionType ¶
type TransactionType byte
TransactionType different types of transactions
const ( SameShardTx TransactionType = iota SubtractionOnly // only subtract tokens from source shard account InvalidTx StakeCreateVal 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 Transactions slice type for basic sorting.
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) Swap ¶
func (s Transactions) Swap(i, j int)
Swap swaps the i'th and the j'th element in s.
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(hmySigner Signer, ethSigner 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.
Source Files ¶
- block.go
- bloom9.go
- bodyfieldsetter.go
- bodyv0.go
- bodyv1.go
- bodyv2.go
- crosslink.go
- cx_receipt.go
- derive_sha.go
- eth_transaction.go
- gen_cx_receipt_json.go
- gen_eth_tx_json.go
- gen_log_json.go
- gen_receipt_json.go
- gen_tx_json.go
- log.go
- receipt.go
- transaction.go
- transaction_signing.go
- tx_errorsink.go
- tx_pool.go