Documentation
¶
Overview ¶
Package types contains data types related to Ethereum consensus.
Index ¶
- Variables
- func BloomLookup(bin Bloom, topic bytesBacked) bool
- func DeriveSha(list DerivableList) common.Hash
- func LogsBloom(logs []*Log) *big.Int
- type BlockNonce
- type Bloom
- func (b *Bloom) Add(d *big.Int)
- func (b Bloom) Big() *big.Int
- func (b Bloom) Bytes() []byte
- func (b Bloom) MarshalJSON() ([]byte, error)
- func (b *Bloom) SetBytes(d []byte)
- func (b Bloom) Test(test *big.Int) bool
- func (b Bloom) TestBytes(test []byte) bool
- func (b *Bloom) UnmarshalJSON(input []byte) error
- type DerivableList
- type Header
- type Log
- type LogForStorage
- type Message
- type Receipt
- type ReceiptForStorage
- type Receipts
- type Transaction
- func (tx *Transaction) AsMessage() (Message, error)
- func (tx *Transaction) CheckNonce() bool
- func (tx *Transaction) Cost() *big.Int
- func (tx *Transaction) Data() []byte
- func (tx *Transaction) DecodeRLP(s *rlp.Stream) error
- func (tx *Transaction) EncodeRLP(w io.Writer) error
- func (tx *Transaction) Gas() *big.Int
- func (tx *Transaction) GasPrice() *big.Int
- func (tx *Transaction) Nonce() uint64
- func (tx *Transaction) To() *common.Address
- func (tx *Transaction) Value() *big.Int
- type Transactions
- type TransactionsByPriceAndNonce
- type TxByNonce
- type TxByPrice
Constants ¶
This section is empty.
Variables ¶
var Bloom9 = bloom9
var (
EmptyRootHash = DeriveSha(Transactions{})
)
var ErrInvalidSig = errors.New("invalid transaction v, r, s values")
Functions ¶
func BloomLookup ¶
func DeriveSha ¶
func DeriveSha(list DerivableList) common.Hash
Types ¶
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) MarshalJSON ¶
func (n BlockNonce) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler
func (BlockNonce) Uint64 ¶
func (n BlockNonce) Uint64() uint64
Uint64 returns the integer value of a block nonce.
func (*BlockNonce) UnmarshalJSON ¶
func (n *BlockNonce) UnmarshalJSON(input []byte) error
UnmarshalJSON implements json.Unmarshaler
type Bloom ¶
type Bloom [bloomLength]byte
Bloom represents a 256 bit bloom filter.
func BytesToBloom ¶
BytesToBloom converts a byte slice to a bloom filter. It panics if b is not of suitable size.
func CreateBloom ¶
func (Bloom) MarshalJSON ¶
MarshalJSON encodes b as a hex string with 0x prefix.
func (*Bloom) SetBytes ¶
SetBytes sets the content of b to the given bytes. It panics if d is not of suitable size.
func (*Bloom) UnmarshalJSON ¶
UnmarshalJSON b as a hex string with 0x prefix.
type DerivableList ¶
type Header ¶
type Header struct { ParentHash common.Hash // Hash to the previous block UncleHash common.Hash // Uncles of this block Coinbase common.Address // The coin base address Root common.Hash // Block Trie state TxHash common.Hash // Tx sha ReceiptHash common.Hash // Receipt sha Bloom Bloom // Bloom Difficulty *big.Int // Difficulty for the current block Number *big.Int // The block number GasLimit *big.Int // Gas limit GasUsed *big.Int // Gas used Time *big.Int // Creation time Extra []byte // Extra data MixDigest common.Hash // for quick difficulty verification Nonce BlockNonce }
Header represents a block header in the Ethereum blockchain.
func (*Header) Hash ¶
Hash returns the block hash of the header, which is simply the keccak256 hash of its RLP encoding.
func (*Header) HashNoNonce ¶
HashNoNonce returns the hash which is used as input for the proof-of-work search.
func (*Header) MarshalJSON ¶
MarshalJSON encodes headers into the web3 RPC response block format.
func (*Header) UnmarshalJSON ¶
UnmarshalJSON decodes headers from the web3 RPC response block format.
type Log ¶
type Log struct { // Consensus fields. Address common.Address // address of the contract that generated the event Topics []common.Hash // list of topics provided by the contract. Data []byte // supplied by the contract, usually ABI-encoded // Derived fields. These fields are filled in by the node // but not secured by consensus. BlockNumber uint64 // block in which the transaction was included TxHash common.Hash // hash of the transaction TxIndex uint // index of the transaction in the block BlockHash common.Hash // hash of the block in which the transaction was included Index uint // index of the log in the receipt // 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 }
Log represents a contract log event. These events are generated by the LOG opcode and stored/indexed by the node.
func (*Log) MarshalJSON ¶
MarshalJSON implements json.Marshaler.
func (*Log) UnmarshalJSON ¶
UnmarshalJSON implements json.Umarshaler.
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 (Message) CheckNonce ¶
type Receipt ¶
type Receipt struct { // Consensus fields PostState []byte CumulativeGasUsed *big.Int Bloom Bloom Logs []*Log // Implementation fields (don't reorder!) TxHash common.Hash ContractAddress common.Address GasUsed *big.Int Height *big.Int }
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.
func (*Receipt) MarshalJSON ¶
MarshalJSON encodes receipts into the web3 RPC response block format.
func (*Receipt) UnmarshalJSON ¶
UnmarshalJSON decodes the web3 RPC receipt format.
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.
type Transaction ¶
type Transaction struct {
// contains filtered or unexported fields
}
func NewContractCreation ¶
func NewTransaction ¶
func (*Transaction) AsMessage ¶
func (tx *Transaction) AsMessage() (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) CheckNonce ¶
func (tx *Transaction) CheckNonce() bool
func (*Transaction) Cost ¶
func (tx *Transaction) Cost() *big.Int
Cost returns amount + gasprice * gaslimit.
func (*Transaction) Data ¶
func (tx *Transaction) Data() []byte
func (*Transaction) EncodeRLP ¶
func (tx *Transaction) EncodeRLP(w io.Writer) error
DecodeRLP implements rlp.Encoder
func (*Transaction) Gas ¶
func (tx *Transaction) Gas() *big.Int
func (*Transaction) GasPrice ¶
func (tx *Transaction) GasPrice() *big.Int
func (*Transaction) Nonce ¶
func (tx *Transaction) Nonce() uint64
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) Value ¶
func (tx *Transaction) Value() *big.Int
type Transactions ¶
type Transactions []*Transaction
Transaction 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-maximising sorted order, while supporting removing entire batches of transactions for non-executable accounts.
func NewTransactionsByPriceAndNonce ¶
func NewTransactionsByPriceAndNonce(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 providng 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.