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 CrosslinkHeartbeat
- 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) Time() time.Time
- 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) Time() time.Time
- 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
- type TxByPriceAndTime
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 ( //MaxP2PNodeDataSize is a 1.25Mb heuristic data limit for DOS prevention on node message MaxP2PNodeDataSize = 1280 * 1024 //MaxPoolTransactionDataSize is a 128KB heuristic data limit for DOS prevention on txn 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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
type BodyV2 struct {
// contains filtered or unexported fields
}
BodyV2 is the V2 block body
func (*BodyV2) CXReceiptAt ¶
CXReceiptAt returns the CXReceipt at given index in this block It returns nil if index is out of bounds
func (*BodyV2) DecodeRLP ¶
DecodeRLP RLP-decodes a block body from the given RLP stream into the receiver.
func (*BodyV2) IncomingReceipts ¶
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 ¶
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 ¶
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 ¶
func (b *BodyV2) SetTransactions(newTransactions []*Transaction)
SetTransactions sets the list of transactions with a deep copy of the given list.
func (*BodyV2) SetUncles ¶
SetUncles sets the list of uncle headers with a deep copy of the given list.
func (*BodyV2) StakingTransactionAt ¶
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 ¶
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 ¶
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 ¶
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 ¶
func (r CXMerkleProof) MarshalJSON() ([]byte, error)
MarshalJSON marshals as JSON.
func (*CXMerkleProof) UnmarshalJSON ¶
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 ¶
MarshalJSON marshals as JSON.
func (*CXReceipt) UnmarshalJSON ¶
UnmarshalJSON unmarshals from JSON.
type CXReceipts ¶
type CXReceipts []*CXReceipt
CXReceipts is a list of CXReceipt
func (CXReceipts) ComputeMerkleRoot ¶
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 ¶
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 ¶
func (r CXReceiptsProof) MarshalJSON() ([]byte, error)
MarshalJSON marshals as JSON.
func (*CXReceiptsProof) UnmarshalJSON ¶
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 ¶
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
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 CrosslinkHeartbeat ¶
type DerivableBase ¶
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 ¶
type EthTransaction struct {
// contains filtered or unexported fields
}
EthTransaction ethereum-compatible transaction
func NewEthTransaction ¶
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 ¶
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 ¶
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 ¶
func (tx *EthTransaction) ChainID() *big.Int
ChainID returns which chain id this transaction was signed for (if at all)
func (*EthTransaction) CheckNonce ¶
func (tx *EthTransaction) CheckNonce() bool
CheckNonce returns check nonce from Transaction.
func (*EthTransaction) ConvertToHmy ¶
func (tx *EthTransaction) ConvertToHmy() *Transaction
ConvertToHmy converts eth txn to hmy txn by filling in ShardID and ToShardID fields.
func (*EthTransaction) Copy ¶
func (tx *EthTransaction) Copy() *EthTransaction
Copy returns a copy of the transaction.
func (*EthTransaction) Cost ¶
func (tx *EthTransaction) Cost() (*big.Int, error)
Cost returns amount + gasprice * gaslimit.
func (*EthTransaction) Data ¶
func (tx *EthTransaction) Data() []byte
Data returns data payload of Transaction.
func (*EthTransaction) DecodeRLP ¶
func (tx *EthTransaction) DecodeRLP(s *rlp.Stream) error
DecodeRLP implements rlp.Decoder
func (*EthTransaction) EncodeRLP ¶
func (tx *EthTransaction) EncodeRLP(w io.Writer) error
EncodeRLP implements rlp.Encoder
func (*EthTransaction) From ¶
func (tx *EthTransaction) From() *atomic.Value
From returns the sender address of the transaction
func (*EthTransaction) GasLimit ¶
func (tx *EthTransaction) GasLimit() uint64
GasLimit of the transcation
func (*EthTransaction) GasPrice ¶
func (tx *EthTransaction) GasPrice() *big.Int
GasPrice returns gas price of Transaction.
func (*EthTransaction) Hash ¶
func (tx *EthTransaction) Hash() common.Hash
Hash hashes the RLP encoding of tx. It uniquely identifies the transaction.
func (*EthTransaction) IsEthCompatible ¶
func (tx *EthTransaction) IsEthCompatible() bool
IsEthCompatible returns whether the txn is ethereum compatible
func (*EthTransaction) MarshalJSON ¶
func (tx *EthTransaction) MarshalJSON() ([]byte, error)
MarshalJSON encodes the web3 RPC transaction format.
func (*EthTransaction) Nonce ¶
func (tx *EthTransaction) Nonce() uint64
Nonce returns account nonce from Transaction.
func (*EthTransaction) Protected ¶
func (tx *EthTransaction) Protected() bool
Protected returns whether the transaction is protected from replay protection.
func (*EthTransaction) R ¶
func (tx *EthTransaction) R() *big.Int
R value of the transaction signature
func (*EthTransaction) RawSignatureValues ¶
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 ¶
func (tx *EthTransaction) S() *big.Int
S value of the transaction signature
func (*EthTransaction) SenderAddress ¶
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 ¶
func (tx *EthTransaction) ShardID() uint32
ShardID returns which shard id this transaction was signed for (if at all)
func (*EthTransaction) Size ¶
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) Time ¶
func (tx *EthTransaction) Time() time.Time
Time returns the time at which the transaction was received by the node
func (*EthTransaction) To ¶
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 ¶
func (tx *EthTransaction) ToShardID() uint32
ToShardID returns the destination shard id this transaction is going to
func (*EthTransaction) UnmarshalJSON ¶
func (tx *EthTransaction) UnmarshalJSON(input []byte) error
UnmarshalJSON decodes the web3 RPC transaction format.
func (*EthTransaction) V ¶
func (tx *EthTransaction) V() *big.Int
V value of the transaction signature
func (*EthTransaction) Value ¶
func (tx *EthTransaction) Value() *big.Int
Value is the amount of ONE token transfered (in Atto)
func (*EthTransaction) WithSignature ¶
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 ¶
type EthTransactions []*EthTransaction
EthTransactions is a Transaction slice type for basic sorting.
func (EthTransactions) GetRlp ¶
func (s EthTransactions) GetRlp(i int) []byte
GetRlp implements Rlpable and returns the i'th element of s in rlp.
func (EthTransactions) Swap ¶
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 ¶
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 ¶
type InternalTransactions []InternalTransaction
InternalTransactions is a InternalTransaction slice type for basic sorting.
func (InternalTransactions) GetRlp ¶
func (s InternalTransactions) GetRlp(i int) []byte
GetRlp implements Rlpable and returns the i'th element of s in rlp.
func (InternalTransactions) Len ¶
func (s InternalTransactions) Len() int
Len returns the length of s.
func (InternalTransactions) MaxToShardID ¶
func (s InternalTransactions) MaxToShardID() uint32
MaxToShardID returns 0, arbitrary value, NOT use
func (InternalTransactions) Swap ¶
func (s InternalTransactions) Swap(i, j int)
Swap swaps the i'th and the j'th element in s.
func (InternalTransactions) ToShardID ¶
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 ¶
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 ¶
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 ¶
func (m *Message) SetType(typ TransactionType)
SetType set the type of message
type PoolTransaction ¶
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 ¶
type PoolTransactions []PoolTransaction
PoolTransactions is a PoolTransactions slice type for basic sorting.
func PoolTxDifference ¶
func PoolTxDifference(a, b PoolTransactions) PoolTransactions
PoolTxDifference returns a new set which is the difference between a and b.
func (PoolTransactions) GetRlp ¶
func (s PoolTransactions) GetRlp(i int) []byte
GetRlp implements Rlpable and returns the i'th element of s in rlp.
func (PoolTransactions) Swap ¶
func (s PoolTransactions) Swap(i, j int)
Swap swaps the i'th and the j'th element in s.
type PoolTxByNonce ¶
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 ¶
func (s PoolTxByNonce) Len() int
func (PoolTxByNonce) Less ¶
func (s PoolTxByNonce) Less(i, j int) bool
func (PoolTxByNonce) Swap ¶
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 ¶
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 ¶
func (tx *Transaction) From() *atomic.Value
From returns the sender address of the transaction
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 ¶
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 ¶
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) RawSignatureValues ¶
RawSignatureValues return raw signature values.
func (*Transaction) SenderAddress ¶
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) Time ¶
func (tx *Transaction) Time() time.Time
Time returns the time at which the transaction was received by the node
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 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 ¶
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 ¶
type TransactionErrorReports []*TransactionErrorReport
TransactionErrorReports ..
type TransactionErrorSink ¶
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 ¶
func NewTransactionErrorSink() *TransactionErrorSink
NewTransactionErrorSink ..
func (*TransactionErrorSink) Add ¶
func (sink *TransactionErrorSink) Add(tx PoolTransaction, err error)
Add a transaction to the error sink with the given error
func (*TransactionErrorSink) Contains ¶
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 ¶
func (sink *TransactionErrorSink) PlainCount() int
PlainCount ..
func (*TransactionErrorSink) PlainReport ¶
func (sink *TransactionErrorSink) PlainReport() TransactionErrorReports
PlainReport ..
func (*TransactionErrorSink) Remove ¶
func (sink *TransactionErrorSink) Remove(tx PoolTransaction)
Remove a transaction's error from the error sink
func (*TransactionErrorSink) StakingCount ¶
func (sink *TransactionErrorSink) StakingCount() int
StakingCount ..
func (*TransactionErrorSink) StakingReport ¶
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.
type TxByPriceAndTime ¶
type TxByPriceAndTime Transactions
TxByPriceAndTime implements both the sort and the heap interface, making it useful for all at once sorting as well as individually adding and removing elements.
func (TxByPriceAndTime) Len ¶
func (s TxByPriceAndTime) Len() int
func (TxByPriceAndTime) Less ¶
func (s TxByPriceAndTime) Less(i, j int) bool
func (*TxByPriceAndTime) Pop ¶
func (s *TxByPriceAndTime) Pop() interface{}
func (*TxByPriceAndTime) Push ¶
func (s *TxByPriceAndTime) Push(x interface{})
func (TxByPriceAndTime) Swap ¶
func (s TxByPriceAndTime) Swap(i, j int)
Source Files ¶
- block.go
- bloom9.go
- bodyfieldsetter.go
- bodyv0.go
- bodyv1.go
- bodyv2.go
- crosslink.go
- crosslink_heartbeat.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