types

package
v0.8.2 Latest Latest
Warning

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

Go to latest
Published: Mar 31, 2023 License: GPL-3.0 Imports: 25 Imported by: 0

Documentation

Overview

Package types contains data types related to Ethereum consensus.

Index

Constants

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

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

	// ReceiptStatusSuccessful is the status code of a transaction if execution succeeded.
	ReceiptStatusSuccessful = uint64(1)
)
View Source
const (
	GeneralTx uint64 = iota
	JoinTx
	EthTx
)

Variables

View Source
var (
	EmptyRootHash    = DeriveSha(Transactions{})
	EmptyReceiptHash = DeriveSha(Receipts{})
	EmptyVoteHash    = DeriveSha(Voters{})
)
View Source
var Bloom9 = bloom9
View Source
var (
	ErrInvalidChainId = errors.New("invalid chain id for signer")
)
View Source
var (
	ErrInvalidSig = errors.New("invalid transaction v, r, s values")
)

Functions

func BloomLookup

func BloomLookup(bin Bloom, topic bytesBacked) bool

func DeriveSha

func DeriveSha(list DerivableList) common.Hash

func LogsBloom

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

func Number

func Number(b1, b2 *Block) bool

func RlpHash added in v0.8.1

func RlpHash(x interface{}) (h common.Hash)

func Sender

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

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

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

func StatusToProto added in v0.6.12

func StatusToProto(status FnStatus) proto.ProcessStatus

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 Anduschain blockchain.

func NewBlock

func NewBlock(header *Header, txs []*Transaction, receipts []*Receipt, voters []*Voter) *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, uncles and receipts.

func NewBlockWithHeader

func NewBlockWithHeader(header *Header) *Block

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

func (*Block) Bloom

func (b *Block) Bloom() Bloom

func (*Block) Body

func (b *Block) Body() *Body

Body returns the non-header content of the block.

func (*Block) Coinbase

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

func (*Block) DecodeRLP

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

DecodeRLP decodes the Ethereum

func (*Block) DeprecatedTd

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

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

func (*Block) Difficulty

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

func (*Block) EncodeRLP

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

EncodeRLP serializes b into the Ethereum RLP block format.

func (*Block) Extra

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

func (*Block) FairnodeSign added in v0.6.12

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

func (*Block) GasLimit

func (b *Block) GasLimit() uint64

func (*Block) GasUsed

func (b *Block) GasUsed() uint64

func (*Block) Hash

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

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

func (*Block) Header

func (b *Block) Header() *Header

func (*Block) Nonce

func (b *Block) Nonce() uint64

func (*Block) Number

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

func (*Block) NumberU64

func (b *Block) NumberU64() uint64

func (*Block) Otprn added in v0.6.12

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

func (*Block) ParentHash

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

func (*Block) ReceiptHash

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

func (*Block) Root

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

func (*Block) SetDifficulty added in v0.8.1

func (b *Block) SetDifficulty(difficulty *big.Int)

func (*Block) SetFairnodeSign added in v0.8.1

func (b *Block) SetFairnodeSign(fairnodeSing []byte)

func (*Block) SetOtprn added in v0.8.1

func (b *Block) SetOtprn(otprn []byte)

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) Time

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

func (*Block) Transaction

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

func (*Block) Transactions

func (b *Block) Transactions() Transactions

func (*Block) TxHash

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

func (*Block) VoterHash added in v0.6.12

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

func (*Block) Voters added in v0.6.12

func (b *Block) Voters() Voters

func (*Block) WithBody

func (b *Block) WithBody(txs []*Transaction, voters []*Voter) *Block

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

func (*Block) WithFairnodeSign added in v0.6.12

func (b *Block) WithFairnodeSign(fnSign []byte) *Block

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

func (*Block) WithSeal

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

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

func (*Block) WithVoter added in v0.6.12

func (b *Block) WithVoter(voters Voters) *Block

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

type BlockBy

type BlockBy func(b1, b2 *Block) bool

func (BlockBy) Sort

func (self BlockBy) Sort(blocks Blocks)

type BlockNonce

type BlockNonce [8]byte

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

func EncodeNonce

func EncodeNonce(i uint64) BlockNonce

EncodeNonce converts the given integer to a block nonce.

func (BlockNonce) MarshalText

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

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

func (BlockNonce) Uint64

func (n BlockNonce) Uint64() uint64

Uint64 returns the integer value of a block nonce.

func (*BlockNonce) UnmarshalText

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

UnmarshalText implements encoding.TextUnmarshaler.

type BlockVoter added in v0.8.1

type BlockVoter struct {
	Voter    common.Address
	VoteSign []byte
}

type Blocks

type Blocks []*Block

type Bloom

type Bloom [BloomByteLength]byte

Bloom represents a 2048 bit bloom filter.

func BytesToBloom

func BytesToBloom(b []byte) Bloom

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

func CreateBloom

func CreateBloom(receipts Receipts) Bloom

func (*Bloom) Add

func (b *Bloom) Add(d *big.Int)

Add adds d to the filter. Future calls of Test(d) will return true.

func (Bloom) Big

func (b Bloom) Big() *big.Int

Big converts b to a big integer.

func (Bloom) Bytes

func (b Bloom) Bytes() []byte

func (Bloom) MarshalText

func (b Bloom) MarshalText() ([]byte, error)

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

func (*Bloom) SetBytes

func (b *Bloom) SetBytes(d []byte)

SetBytes sets the content of b to the given bytes. It panics if d is not of suitable size.

func (Bloom) Test

func (b Bloom) Test(test *big.Int) bool

func (Bloom) TestBytes

func (b Bloom) TestBytes(test []byte) bool

func (*Bloom) UnmarshalText

func (b *Bloom) UnmarshalText(input []byte) error

UnmarshalText b as a hex string with 0x prefix.

type Body

type Body struct {
	Transactions []*Transaction //transactions
	Voters       []*Voter
}

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

type ChainConfig added in v0.6.12

type ChainConfig struct {
	MinMiner    uint64 `json:"minMiner"`    // minimum count node for making block in league
	BlockNumber uint64 `json:"blockNumber"` // applying rule starting block number
	FnFee       string `json:"fairnodeFee"`
	Mminer      uint64 `json:"mMiner"` // target node count in league
	Epoch       uint64 `json:"epoch"`  // league change term
	NodeVersion string `json:"nodeVersion"`
	Price       Price  `json:"price"`
	Sign        []byte `json:"sign"`
}

otprn data

func (*ChainConfig) Hash added in v0.6.12

func (cf *ChainConfig) Hash() common.Hash

type ChainEvent added in v0.6.12

type ChainEvent struct {
	Block *Block
	Hash  common.Hash
	Logs  []*Log
}

type ChainHeadEvent added in v0.6.12

type ChainHeadEvent struct{ Block *Block }

type ChainSideEvent added in v0.6.12

type ChainSideEvent struct {
	Block *Block
}

type ClientClose added in v0.6.12

type ClientClose struct{}

type CurrentInfo added in v0.6.12

type CurrentInfo struct {
	Number *big.Int    // block number
	Hash   common.Hash // block hash
}

type DbftStatus added in v0.8.1

type DbftStatus uint64
const (
	DBFT_PENDING DbftStatus = iota // 블록생성단계
	DBFT_PROPOSE                   // 제안투표단계
	DBFT_PREPARE                   // 투표단계

	DBFT_VOTE   = 0x20 // 제안 메시지
	DBFT_COMMIT = 0x21 // 투표 메시지
)

func (DbftStatus) String added in v0.8.1

func (d DbftStatus) String() string

type DbftStatusEvent added in v0.8.1

type DbftStatusEvent struct {
	Status  DbftStatus
	Payload interface{}
}

for dbft

type DerivableList

type DerivableList interface {
	Len() int
	GetRlp(i int) []byte
}

type EIP155Signer

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

EIP155Transaction implements Signer using the EIP155 rules.

func NewEIP155Signer

func NewEIP155Signer(chainId *big.Int) EIP155Signer

func (EIP155Signer) Equal

func (s EIP155Signer) Equal(s2 Signer) bool

func (EIP155Signer) Hash

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

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

func (EIP155Signer) Sender

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

func (EIP155Signer) SignatureValues

func (s EIP155Signer) SignatureValues(tx *Transaction, sig []byte) (R, S, V *big.Int, err 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 v0.8.1

type EthTransactions []*TransactionEth

Transactions implements DerivableList for transactions.

func (EthTransactions) EncodeIndex added in v0.8.1

func (s EthTransactions) EncodeIndex(i int, w *bytes.Buffer)

EncodeIndex encodes the i'th transaction to w. Note that this does not check for errors because we assume that *Transaction will only ever contain valid txs that were either constructed by decoding or via public API in this package.

func (EthTransactions) Len added in v0.8.1

func (s EthTransactions) Len() int

Len returns the length of s.

type FairnodeStatusEvent added in v0.6.12

type FairnodeStatusEvent struct {
	Status  FnStatus
	Payload interface{}
}

type FnStatus added in v0.6.12

type FnStatus uint64
const (
	PENDING FnStatus = iota
	SAVE_OTPRN
	MAKE_LEAGUE
	MAKE_JOIN_TX
	MAKE_BLOCK
	LEAGUE_BROADCASTING
	VOTE_START
	VOTE_COMPLETE
	MAKE_PENDING_LEAGUE
	SEND_BLOCK
	SEND_BLOCK_WAIT
	REQ_FAIRNODE_SIGN
	FINALIZE
	REJECT
)

func ProtoToStatus added in v0.6.12

func ProtoToStatus(status proto.ProcessStatus) FnStatus

func (FnStatus) String added in v0.6.12

func (f FnStatus) String() string

type FrontierSigner

type FrontierSigner struct{}

func (FrontierSigner) Equal

func (s FrontierSigner) Equal(s2 Signer) bool

func (FrontierSigner) Hash

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

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

func (FrontierSigner) Sender

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

func (FrontierSigner) SignatureValues

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

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

type Header struct {
	ParentHash common.Hash `json:"parentHash"       gencodec:"required"`

	Coinbase common.Address `json:"miner"            gencodec:"required"`
	Root     common.Hash    `json:"stateRoot"        gencodec:"required"`

	TxHash   common.Hash `json:"transactionsRoot" gencodec:"required"`
	VoteHash common.Hash `json:"voteRoot" gencodec:"required"`

	ReceiptHash common.Hash `json:"receiptsRoot"     gencodec:"required"`
	Bloom       Bloom       `json:"logsBloom"        gencodec:"required"`
	Difficulty  *big.Int    `json:"difficulty"       gencodec:"required"`
	Number      *big.Int    `json:"number"           gencodec:"required"`
	GasLimit    uint64      `json:"gasLimit"         gencodec:"required"`
	GasUsed     uint64      `json:"gasUsed"          gencodec:"required"`
	Time        *big.Int    `json:"timestamp"        gencodec:"required"`
	Extra       []byte      `json:"extraData"        gencodec:"required"`

	Nonce        BlockNonce `json:"nonce"            gencodec:"required"`
	Otprn        []byte     `json:"otprn"            gencodec:"required"`        //  otprn with fairnode signature
	FairnodeSign []byte     `json:"fairnodeSign"            gencodec:"required"` //  fairnode signature, not import header hash - from fairnode

}

Header represents a block header in the Anduschain blockchain.

func CopyHeader

func CopyHeader(h *Header) *Header

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

func (*Header) Byte added in v0.6.12

func (h *Header) Byte() []byte

func (*Header) Hash

func (h *Header) Hash() common.Hash

Hash returns the block hash of the header, which is simply the keccak256 hash of its RLP encoding.

func (Header) MarshalJSON

func (h Header) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*Header) Size

func (h *Header) 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 (*Header) UnmarshalJSON

func (h *Header) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

type HeartBeat added in v0.6.12

type HeartBeat struct {
	Enode        string
	MinerAddress string
	ChainID      string
	NodeVersion  string
	Host         string
	Port         int64
	Time         *big.Int
	Head         common.Hash
	Sign         []byte
}

for miner heart beat

func (HeartBeat) EnodeUrl added in v0.6.12

func (hb HeartBeat) EnodeUrl() string

type HomesteadSigner

type HomesteadSigner struct{ FrontierSigner }

HomesteadTransaction implements TransactionInterface using the homestead rules.

func (HomesteadSigner) Equal

func (s HomesteadSigner) Equal(s2 Signer) bool

func (HomesteadSigner) Sender

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

func (HomesteadSigner) SignatureValues

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

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

type Log

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

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

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

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

func (*Log) DecodeRLP

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

DecodeRLP implements rlp.Decoder.

func (*Log) EncodeRLP

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

EncodeRLP implements rlp.Encoder.

func (Log) MarshalJSON

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

func (*Log) UnmarshalJSON

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

type LogForStorage

type LogForStorage Log

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

func (*LogForStorage) DecodeRLP

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

DecodeRLP implements rlp.Decoder.

func (*LogForStorage) EncodeRLP

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

EncodeRLP implements rlp.Encoder.

type Message

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

Message is a fully derived transaction and implements core.Message

NOTE: In a future PR this will be removed.

func NewMessage

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

func (Message) CheckNonce

func (m Message) CheckNonce() bool

func (Message) Data

func (m Message) Data() []byte

func (Message) From

func (m Message) From() common.Address

func (Message) Gas

func (m Message) Gas() uint64

func (Message) GasPrice

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

func (Message) Nonce

func (m Message) Nonce() uint64

func (Message) To

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

func (Message) Value

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

type Network added in v0.6.12

type Network uint64
const (
	MAIN_NETWORK Network = iota
	TEST_NETWORK
	UNKNOWN_NETWORK
)

type NewJoinTxsEvent added in v0.6.12

type NewJoinTxsEvent struct{ Txs Transactions }

NewJoinTxsEvent is posted when a batch of join transactions enter the join transaction pool.

type NewLeagueBlockEvent added in v0.6.12

type NewLeagueBlockEvent struct {
	Block   *Block
	Address common.Address
	Sign    []byte
}

for deb consensus

type NewMinedBlockEvent added in v0.6.12

type NewMinedBlockEvent struct{ Block *Block }

NewMinedBlockEvent is posted when a block has been imported.

type NewTxsEvent added in v0.6.12

type NewTxsEvent struct{ Txs Transactions }

NewTxsEvent is posted when a batch of transactions enter the transaction pool.

type Otprn added in v0.6.12

type Otprn struct {
	Rand   [20]byte
	FnAddr common.Address
	Cminer uint64
	Data   ChainConfig
	Sign   []byte
}

func DecodeOtprn added in v0.6.12

func DecodeOtprn(otpByte []byte) (*Otprn, error)

func NewDefaultOtprn added in v0.8.1

func NewDefaultOtprn() *Otprn

func NewOtprn added in v0.6.12

func NewOtprn(cMiner uint64, fnAddr common.Address, data ChainConfig) *Otprn

func (*Otprn) EncodeOtprn added in v0.6.12

func (otprn *Otprn) EncodeOtprn() ([]byte, error)

func (*Otprn) GetChainConfig added in v0.6.21

func (otprn *Otprn) GetChainConfig() *ChainConfig

func (*Otprn) GetValue added in v0.6.12

func (otprn *Otprn) GetValue() (cMiner uint64, mMiner uint64, rand [20]byte)

func (*Otprn) HashOtprn added in v0.6.12

func (otprn *Otprn) HashOtprn() common.Hash

func (*Otprn) RandToByte added in v0.6.12

func (otprn *Otprn) RandToByte() []byte

func (*Otprn) SignOtprn added in v0.6.12

func (otprn *Otprn) SignOtprn(prv *ecdsa.PrivateKey) error

func (*Otprn) ValidateSignature added in v0.6.12

func (otprn *Otprn) ValidateSignature() error

type PendingLogsEvent added in v0.6.12

type PendingLogsEvent struct {
	Logs []*Log
}

PendingLogsEvent is posted pre mining and notifies of pending logs.

type Price added in v0.7.3

type Price struct {
	JoinTxPrice string `json:"joinTransactionPrice"` // join transaction price, UNIT Daon ex) 1 ==> 1Daon
	GasPrice    uint64 `json:"gasPrice"`             // gas limit
	GasLimit    uint64 `json:"gasLimit"`             // gas price
}

type Receipt

type Receipt struct {
	// Consensus fields
	PostState         []byte `json:"root"`
	Status            uint64 `json:"status"`
	CumulativeGasUsed uint64 `json:"cumulativeGasUsed" gencodec:"required"`
	Bloom             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"`

	// Inclusion information: These fields provide information about the inclusion of the
	// transaction corresponding to this receipt.
	BlockHash        common.Hash `json:"blockHash,omitempty"`
	BlockNumber      *big.Int    `json:"blockNumber,omitempty"`
	TransactionIndex uint        `json:"transactionIndex"`
}

Receipt represents the results of a transaction.

func NewReceipt

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

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

func (*Receipt) DecodeRLP

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

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

func (*Receipt) EncodeRLP

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

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

func (*Receipt) MarshalBinary added in v0.8.1

func (r *Receipt) MarshalBinary() ([]byte, error)

MarshalBinary returns the consensus encoding of the receipt.

func (Receipt) MarshalJSON

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

MarshalJSON marshals as JSON.

func (*Receipt) Size

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

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

func (*Receipt) UnmarshalBinary added in v0.8.1

func (r *Receipt) UnmarshalBinary(b []byte) (*receiptRLP, error)

UnmarshalBinary decodes the consensus encoding of receipts. It supports legacy RLP receipts and EIP-2718 typed receipts.

func (*Receipt) UnmarshalJSON

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

UnmarshalJSON unmarshals from JSON.

type ReceiptForStorage

type ReceiptForStorage Receipt

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

func (*ReceiptForStorage) DecodeRLP

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

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

func (*ReceiptForStorage) EncodeRLP

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

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

type Receipts

type Receipts []*Receipt

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

func (Receipts) DeriveFields added in v0.8.1

func (rs Receipts) DeriveFields(config *params.ChainConfig, hash common.Hash, number uint64, txs Transactions) error

DeriveFields fills the receipts with their computed fields based on consensus data and contextual infos like containing block and transactions.

func (Receipts) GetRlp

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

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

func (Receipts) Len

func (r Receipts) Len() int

Len returns the number of receipts in this list.

type RemovedLogsEvent added in v0.6.12

type RemovedLogsEvent struct{ Logs []*Log }

RemovedLogsEvent is posted when a reorg happens

type Signer

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

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

func LatestSigner added in v0.8.1

func LatestSigner(config *params.ChainConfig) Signer

func LatestSignerForChainID added in v0.8.1

func LatestSignerForChainID(chainID *big.Int) Signer

func MakeSigner

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

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

type StorageBlock

type StorageBlock Block

[deprecated by eth/63] StorageBlock defines the RLP encoding of a Block stored in the state database. The StorageBlock encoding contains fields that would otherwise need to be recomputed.

func (*StorageBlock) DecodeRLP

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

[deprecated by eth/63]

type Transaction

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

func ConvertEthTransaction added in v0.7.6

func ConvertEthTransaction(nonce uint64, to *common.Address, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte, R, S, V *big.Int) *Transaction

func NewContractCreation

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

func NewJoinTransaction added in v0.6.12

func NewJoinTransaction(nonce, joinNonce uint64, otprn []byte, coinase common.Address) *Transaction

func NewTransaction

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

func NewTx added in v0.8.1

func NewTx(inner TxData) *Transaction

NewTx creates a new transaction.

func SignNewTx added in v0.8.1

func SignNewTx(prv *ecdsa.PrivateKey, s Signer, txdata TxData) (*Transaction, error)

SignNewTx creates a transaction and signs it.

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

func (*Transaction) Cost

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

Cost returns amount + gasprice * gaslimit.

func (*Transaction) Data

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

func (*Transaction) DecodeRLP

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

DecodeRLP implements rlp.Decoder

func (*Transaction) EncodeRLP

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

EncodeRLP implements rlp.Encoder

func (*Transaction) Gas

func (tx *Transaction) Gas() uint64

func (*Transaction) GasPrice

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

func (*Transaction) Hash

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

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

func (*Transaction) JoinNonce added in v0.6.12

func (tx *Transaction) JoinNonce() (uint64, error)

for join transaction

func (*Transaction) MarshalBinary added in v0.8.1

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

MarshalBinary returns the canonical encoding of the transaction. For legacy transactions, it returns the RLP encoding. For EIP-2718 typed transactions, it returns the type and payload.

func (*Transaction) MarshalJSON

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

MarshalJSON encodes the web3 RPC transaction format.

func (*Transaction) Nonce

func (tx *Transaction) Nonce() uint64

func (*Transaction) Otprn added in v0.6.12

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

for join transaction

func (*Transaction) Payload added in v0.8.1

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

func (*Transaction) PayloadHash added in v0.6.12

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

for join transaction

func (*Transaction) Protected

func (tx *Transaction) Protected() bool

Protected returns whether the transaction is protected from replay protection.

func (*Transaction) RawSignatureValues

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

func (*Transaction) Sender added in v0.6.12

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

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 previsouly 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) TransactionId added in v0.6.12

func (tx *Transaction) TransactionId() uint64

func (*Transaction) UnmarshalBinary added in v0.8.1

func (tx *Transaction) UnmarshalBinary(b []byte) error

UnmarshalBinary decodes the canonical encoding of transactions. It supports legacy RLP transactions and EIP2718 typed transactions.

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

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 TransactionEth added in v0.7.6

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

func (*TransactionEth) ChainId added in v0.7.6

func (tx *TransactionEth) ChainId() *big.Int

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

func (*TransactionEth) CheckNonce added in v0.7.6

func (tx *TransactionEth) CheckNonce() bool

func (*TransactionEth) Cost added in v0.7.6

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

Cost returns amount + gasprice * gaslimit.

func (*TransactionEth) Data added in v0.7.6

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

func (*TransactionEth) DecodeRLP added in v0.7.6

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

DecodeRLP implements rlp.Decoder

func (*TransactionEth) EncodeRLP added in v0.7.6

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

EncodeRLP implements rlp.Encoder

func (*TransactionEth) Gas added in v0.7.6

func (tx *TransactionEth) Gas() uint64

func (*TransactionEth) GasPrice added in v0.7.6

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

func (*TransactionEth) Hash added in v0.7.6

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

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

func (*TransactionEth) MarshalJSON added in v0.7.6

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

MarshalJSON encodes the web3 RPC transaction format.

func (*TransactionEth) Nonce added in v0.7.6

func (tx *TransactionEth) Nonce() uint64

func (*TransactionEth) Payload added in v0.8.1

func (tx *TransactionEth) Payload() []byte

func (*TransactionEth) Protected added in v0.7.6

func (tx *TransactionEth) Protected() bool

Protected returns whether the transaction is protected from replay protection.

func (*TransactionEth) RawSignatureValues added in v0.7.6

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

func (*TransactionEth) Size added in v0.7.6

func (tx *TransactionEth) 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 (*TransactionEth) To added in v0.7.6

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

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

func (*TransactionEth) Transaction added in v0.8.1

func (tx *TransactionEth) Transaction() Transaction

func (*TransactionEth) UnmarshalJSON added in v0.7.6

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

UnmarshalJSON decodes the web3 RPC transaction format.

func (*TransactionEth) Value added in v0.7.6

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

func (*TransactionEth) Vrs added in v0.8.1

func (tx *TransactionEth) Vrs() (*big.Int, *big.Int, *big.Int)

type Transactions

type Transactions []*Transaction

Transactions is a Transaction slice type for basic sorting.

func TxDifference

func TxDifference(a, b Transactions) Transactions

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

func (Transactions) GetRlp

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

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

func (Transactions) Len

func (s Transactions) Len() int

Len returns the length of s.

func (Transactions) 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(signer Signer, txs map[common.Address]Transactions) *TransactionsByPriceAndNonce

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

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

func (*TransactionsByPriceAndNonce) Peek

Peek returns the next transaction by price.

func (*TransactionsByPriceAndNonce) Pop

func (t *TransactionsByPriceAndNonce) Pop()

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

func (*TransactionsByPriceAndNonce) Shift

func (t *TransactionsByPriceAndNonce) Shift()

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

type TxByNonce

type TxByNonce Transactions

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

func (TxByNonce) Len

func (s TxByNonce) Len() int

func (TxByNonce) Less

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

func (TxByNonce) Swap

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

type TxByPrice

type TxByPrice Transactions

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

func (TxByPrice) Len

func (s TxByPrice) Len() int

func (TxByPrice) Less

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

func (*TxByPrice) Pop

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

func (*TxByPrice) Push

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

func (TxByPrice) Swap

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

type TxData added in v0.8.1

type TxData struct {
	Type         uint64          `json:"type"    gencodec:"required"`
	AccountNonce uint64          `json:"nonce"    gencodec:"required"`
	Price        *big.Int        `json:"gasPrice" gencodec:"required"`
	GasLimit     uint64          `json:"gas"      gencodec:"required"`
	Recipient    *common.Address `json:"to"       rlp:"nil"` // nil means contract creation
	Amount       *big.Int        `json:"value"    gencodec:"required"`
	Payload      []byte          `json:"input"    gencodec:"required"`

	// Signature values
	V *big.Int `json:"v" gencodec:"required"`
	R *big.Int `json:"r" gencodec:"required"`
	S *big.Int `json:"s" gencodec:"required"`

	// This is only used when marshaling to JSON.
	Hash *common.Hash `json:"hash" rlp:"-"`
}

func (TxData) MarshalJSON added in v0.8.1

func (t TxData) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*TxData) UnmarshalJSON added in v0.8.1

func (t *TxData) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

type TxDataMarshaling added in v0.8.1

type TxDataMarshaling struct {
	Type         hexutil.Uint64
	AccountNonce hexutil.Uint64
	Price        *hexutil.Big
	GasLimit     hexutil.Uint64
	Amount       *hexutil.Big
	Payload      hexutil.Bytes
	V            *hexutil.Big
	R            *hexutil.Big
	S            *hexutil.Big
}

type VoteBlock added in v0.8.1

type VoteBlock struct {
	Block  Block
	Voters []BlockVoter
}

type VoteBlockEvent added in v0.8.1

type VoteBlockEvent struct {
	VoteType DbftStatus
	Block    *VoteBlock
}

type Voter

type Voter struct {
	Header   []byte         `json:"blockHeader" gencodec:"required"`
	Voter    common.Address `json:"voter" gencodec:"required"`
	VoteSign []byte         `json:"voterSign" gencodec:"required"`
}

func (Voter) MarshalJSON added in v0.6.12

func (v Voter) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*Voter) Size

func (v *Voter) Size() common.StorageSize

func (*Voter) UnmarshalJSON added in v0.6.12

func (v *Voter) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

type Voters added in v0.6.12

type Voters []*Voter

func (Voters) GetRlp added in v0.6.12

func (v Voters) GetRlp(i int) []byte

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

func (Voters) Hash added in v0.6.12

func (v Voters) Hash() common.Hash

func (Voters) Len added in v0.6.12

func (v Voters) Len() int

Len returns the length of s.

func (Voters) Swap added in v0.6.12

func (v Voters) Swap(i, j int)

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

Jump to

Keyboard shortcuts

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