types

package
v0.0.21 Latest Latest
Warning

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

Go to latest
Published: Jun 15, 2019 License: GPL-3.0 Imports: 14 Imported by: 0

Documentation

Overview

Package types contains data types related to Fractal.

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 action if execution failed.
	ReceiptStatusFailed = uint64(0)

	// ReceiptStatusSuccessful is the status code of a action if execution succeeded.
	ReceiptStatusSuccessful = uint64(1)
)

Variables

View Source
var (
	//ErrInvalidchainID invalid chain id for signer
	ErrInvalidchainID = errors.New("invalid chain id for signer")
	//ErrSigUnprotected signature is considered unprotected
	ErrSigUnprotected = errors.New("signature is considered unprotected")
	//ErrSignEmpty signature is considered unprotected
	ErrSignEmpty = errors.New("signature is nil")
)
View Source
var (
	// ErrOversizedData is returned if the input data of a transaction is greater
	// than some meaningful limit a user might use. This is not a consensus error
	// making the transaction invalid, rather a DOS protection.
	ErrOversizedData = errors.New("oversized data")

	// ErrEmptyActions transaction no actions
	ErrEmptyActions = errors.New("transaction no actions")
)
View Source
var Bloom9 = bloom9

Bloom9 export func

View Source
var ErrInvalidSig = errors.New("invalid action v, r, s values")

ErrInvalidSig invalid signature.

Functions

func BloomLookup

func BloomLookup(bin Bloom, topic bytesBacked) bool

BloomLookup look up .

func DeriveReceiptsMerkleRoot

func DeriveReceiptsMerkleRoot(receipts []*Receipt) common.Hash

DeriveReceiptsMerkleRoot returns receiptes merkle tree root hash.

func DeriveTxsMerkleRoot

func DeriveTxsMerkleRoot(txs []*Transaction) common.Hash

DeriveTxsMerkleRoot returns txs merkle tree root hash.

func GetAuthorCache added in v0.0.7

func GetAuthorCache(a *Action) map[common.Name]common.Hash

func LogsBloom

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

LogsBloom create bloom by logs.

func Number

func Number(b1, b2 *Block) bool

Number represents block sort by number.

func RecoverMultiKey added in v0.0.7

func RecoverMultiKey(signer Signer, a *Action, tx *Transaction) ([]common.PubKey, error)

func RlpHash added in v0.0.8

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

func SignActionWithMultiKey added in v0.0.7

func SignActionWithMultiKey(a *Action, tx *Transaction, s Signer, parentIndex uint64, keys []*KeyPair) error

func StoreAuthorCache added in v0.0.7

func StoreAuthorCache(a *Action, authorVersion map[common.Name]common.Hash)

Types

type AccountInfo added in v0.0.7

type AccountInfo struct {
	Name  string
	Key   string
	Value []byte
}

type AccountManagerContext added in v0.0.7

type AccountManagerContext struct {
	Action           *Action
	ChainConfig      *params.ChainConfig
	Number           uint64
	FromAccountExtra []common.Name
}

type Action

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

Action represents an entire action in the transaction.

func NewAction

func NewAction(actionType ActionType, from, to common.Name, nonce, assetID, gasLimit uint64, amount *big.Int, payload, remark []byte) *Action

NewAction initialize transaction's action.

func (*Action) AssetID

func (a *Action) AssetID() uint64

AssetID returns action's assetID.

func (*Action) ChainID

func (a *Action) ChainID() *big.Int

ChainID returns which chain id this action was signed for (if at all)

func (*Action) Check added in v0.0.12

func (a *Action) Check(conf *params.ChainConfig) error

Check the validity of all fields

func (*Action) Data

func (a *Action) Data() []byte

Data returns action's payload.

func (*Action) DecodeRLP

func (a *Action) DecodeRLP(s *rlp.Stream) error

DecodeRLP implements rlp.Decoder

func (*Action) EncodeRLP

func (a *Action) EncodeRLP(w io.Writer) error

EncodeRLP implements rlp.Encoder

func (*Action) Gas

func (a *Action) Gas() uint64

Gas returns action's Gas.

func (*Action) GetSign added in v0.0.7

func (a *Action) GetSign() []*SignData

func (*Action) GetSignIndex added in v0.0.7

func (a *Action) GetSignIndex(i uint64) []uint64

func (*Action) GetSignParent added in v0.0.16

func (a *Action) GetSignParent() uint64

func (*Action) Hash

func (a *Action) Hash() common.Hash

Hash hashes the RLP encoding of action.

func (*Action) NewRPCAction

func (a *Action) NewRPCAction(index uint64) *RPCAction

NewRPCAction returns a action that will serialize to the RPC.

func (*Action) Nonce

func (a *Action) Nonce() uint64

Nonce returns action's nonce.

func (*Action) Recipient

func (a *Action) Recipient() common.Name

Recipient returns action's Recipient.

func (*Action) Remark added in v0.0.8

func (a *Action) Remark() []byte

Remark returns action's remark.

func (*Action) Sender

func (a *Action) Sender() common.Name

Sender returns action's Sender.

func (*Action) Type

func (a *Action) Type() ActionType

Type returns action's type.

func (*Action) Value

func (a *Action) Value() *big.Int

Value returns action's Value.

func (*Action) WithParentIndex added in v0.0.16

func (a *Action) WithParentIndex(parentIndex uint64)

WithSignature returns a new transaction with the given signature.

func (*Action) WithSignature

func (a *Action) WithSignature(signer Signer, sig []byte, index []uint64) error

WithSignature returns a new transaction with the given signature.

type ActionResult

type ActionResult struct {
	Status   uint64
	Index    uint64
	GasUsed  uint64
	GasAllot []*GasDistribution
	Error    string
}

func (*ActionResult) NewRPCActionResult

func (a *ActionResult) NewRPCActionResult(aType ActionType) *RPCActionResult

NewRPCActionResult returns a ActionResult that will serialize to the RPC.

type ActionType

type ActionType uint64

ActionType type of Action.

const (
	// CallContract represents the call contract action.
	CallContract ActionType = iota
	// CreateContract repesents the create contract action.
	CreateContract
)
const (
	// CreateAccount repesents the create account.
	CreateAccount ActionType = 0x100 + iota
	// UpdateAccount repesents update account.
	UpdateAccount
	// DeleteAccount repesents the delete account action.
	DeleteAccount
	// UpdateAccountAuthor represents the update account author.
	UpdateAccountAuthor
)
const (
	// IncreaseAsset Asset operation
	IncreaseAsset ActionType = 0x200 + iota
	// IssueAsset repesents Issue asset action.
	IssueAsset
	// DestroyAsset destroy asset
	DestroyAsset
	// SetAssetOwner repesents set asset new owner action.
	SetAssetOwner
	// UpdateAsset update asset
	UpdateAsset
	// Transfer repesents transfer asset action.
	Transfer
	UpdateAssetContract
)
const (
	// RegCandidate repesents register candidate action.
	RegCandidate ActionType = 0x300 + iota
	// UpdateCandidate repesents update candidate action.
	UpdateCandidate
	// UnregCandidate repesents unregister candidate action.
	UnregCandidate
	// RefundCandidate repesents unregister candidate action.
	RefundCandidate
	// VoteCandidate repesents voter vote candidate action.
	VoteCandidate
)
const (
	// KickedCandidate kicked
	KickedCandidate ActionType = 0x400 + iota
	// ExitTakeOver exit
	ExitTakeOver
)
const (
	// WithdrawFee
	WithdrawFee ActionType = 0x500 + iota
)

type Block

type Block struct {
	Head *Header
	Txs  []*Transaction
	// contains filtered or unexported fields
}

Block represents an entire block in the blockchain.

func NewBlock

func NewBlock(header *Header, txs []*Transaction, receipts []*Receipt) *Block

NewBlock creates a new block. The input data is copied, changes to header and to the field values will not affect the block.

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

func (b *Block) Body() *Body

Body returns the block's Body.

func (*Block) Check added in v0.0.12

func (b *Block) Check() error

Check the validity of all fields

func (*Block) Coinbase

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

Coinbase returns the block's Coinbase.

func (*Block) CurForkID

func (b *Block) CurForkID() uint64

CurForkID returns the block's current fork ID.

func (*Block) DecodeRLP

func (b *Block) DecodeRLP(input []byte) error

DecodeRLP decodes the block

func (*Block) Difficulty

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

Difficulty returns the block's Difficulty.

func (*Block) EncodeRLP

func (b *Block) EncodeRLP() ([]byte, error)

EncodeRLP serializes b into the RLP block format.

func (*Block) ExtEncodeRLP added in v0.0.7

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

EncodeRLP serializes b into RLP block format.

func (*Block) Extra

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

Extra returns the block's Extra.

func (*Block) GasLimit

func (b *Block) GasLimit() uint64

GasLimit returns the block's GasLimit.

func (*Block) GasUsed

func (b *Block) GasUsed() uint64

GasUsed returns the block's GasUsed.

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

Header returns the block's Header.

func (*Block) NextForkID

func (b *Block) NextForkID() uint64

NextForkID returns the block's current fork ID.

func (*Block) Number

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

Number returns the block's Number.

func (*Block) NumberU64

func (b *Block) NumberU64() uint64

NumberU64 returns the block's NumberU64.

func (*Block) ParentHash

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

ParentHash returns the block's ParentHash.

func (*Block) ReceiptHash

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

ReceiptHash returns the block's ReceiptHash.

func (*Block) Root

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

Root returns the block's Root.

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

Time returns the block's Time.

func (*Block) Transactions

func (b *Block) Transactions() []*Transaction

Transactions returns the block's txs.

func (*Block) TxHash

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

TxHash returns the block's TxHash.

func (*Block) WithBody

func (b *Block) WithBody(transactions []*Transaction) *Block

WithBody returns a new block with the given transaction .

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.

type BlockAndResult added in v0.0.7

type BlockAndResult struct {
	Block     map[string]interface{} `json:"block"`
	Receipts  []*Receipt             `json:"receipts"`
	DetailTxs []*DetailTx            `json:"detailTxs"`
}

type BlockBy

type BlockBy func(b1, b2 *Block) bool

BlockBy represents the block sort by rule type.

func (BlockBy) Sort

func (bb BlockBy) Sort(blocks Blocks)

Sort sort blocks by BlockBy.

type BlockState added in v0.0.8

type BlockState struct {
	PreStatePruning bool   `json:"preStatePruning"`
	CurrentNumber   uint64 `json:"currentNumber"`
}

type Blocks

type Blocks []*Block

Blocks represents the blocks.

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 []*Receipt) Bloom

CreateBloom create bloom by receiptes.

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

Bytes converts b to bytes.

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

Test use for bloom test .

func (Bloom) TestBytes

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

TestBytes use for bloom test .

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
}

Body represents an entire body of the block transactions.

type DetailAction added in v0.0.7

type DetailAction struct {
	InternalActions []*InternalAction `json:"internalActions"`
}

type DetailTx added in v0.0.7

type DetailTx struct {
	TxHash  common.Hash     `json:"txhash"`
	Actions []*DetailAction `json:"actions"`
}

type ForkID

type ForkID struct {
	Cur  uint64 `json:"cur"`
	Next uint64 `json:"next"`
}

ForkID represents a blockchain fork

type GasDistribution added in v0.0.7

type GasDistribution struct {
	Account string `json:"name"`
	Gas     uint64 `json:"gas"`
	TypeID  uint64 `json:"typeId"`
}

ActionResult represents the results the transaction action.

type Header struct {
	ParentHash           common.Hash
	Coinbase             common.Name
	ProposedIrreversible uint64
	Root                 common.Hash
	TxsRoot              common.Hash
	ReceiptsRoot         common.Hash
	Bloom                Bloom
	Difficulty           *big.Int
	Number               *big.Int
	GasLimit             uint64
	GasUsed              uint64
	Time                 *big.Int
	Extra                []byte
	ForkID               ForkID
}

Header represents a block header in the 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) CurForkID

func (h *Header) CurForkID() uint64

CurForkID returns the header's current fork ID.

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

func (h *Header) NextForkID() uint64

NextForkID returns the header's next fork ID.

func (*Header) WithForkID

func (h *Header) WithForkID(cur, next uint64)

WithForkID store fork id

type InternalAction added in v0.0.7

type InternalAction struct {
	Action     *RPCAction `json:"action"`
	ActionType string     `json:"actionType"`
	GasUsed    uint64     `json:"gasUsed"`
	GasLimit   uint64     `json:"gasLimit"`
	Depth      uint64     `json:"depth"`
	Error      string     `json:"error"`
}

type KeyPair added in v0.0.7

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

func MakeKeyPair added in v0.0.7

func MakeKeyPair(priv *ecdsa.PrivateKey, index []uint64) *KeyPair

type KvNode

type KvNode struct {
	Key   string
	Value []byte
}

KvNode represents a status data.

type Log

type Log struct {
	Name        common.Name   // name 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
	BlockNumber uint64        // block in which the transaction was included
	BlockHash   common.Hash   // hash of the block in which the transaction was included
	TxHash      common.Hash   // hash of the transaction
	Index       uint          // index of the log in the receipt
	ActionIndex uint          // index of the input and output in the transaction
	TxIndex     uint          // index of the transaction in the block

}

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

func (*Log) NewRPCLog

func (l *Log) NewRPCLog() *RPCLog

NewRPCLog returns a log that will serialize to the RPC.

type OptInfo

type OptInfo struct {
	Key   string
	Value []byte
	Opt   uint // record modification status : add/delete/update
}

OptInfo status option info.

type RPCAction

type RPCAction struct {
	Type       uint64        `json:"type"`
	Nonce      uint64        `json:"nonce"`
	From       common.Name   `json:"from"`
	To         common.Name   `json:"to"`
	AssetID    uint64        `json:"assetID"`
	GasLimit   uint64        `json:"gas"`
	Amount     *big.Int      `json:"value"`
	Remark     hexutil.Bytes `json:"remark"`
	Payload    hexutil.Bytes `json:"payload"`
	Hash       common.Hash   `json:"actionHash"`
	ActionIdex uint64        `json:"actionIndex"`
}

RPCAction represents a action that will serialize to the RPC representation of a action.

type RPCActionResult

type RPCActionResult struct {
	ActionType uint64             `json:"actionType"`
	Status     uint64             `json:"status"`
	Index      uint64             `json:"index"`
	GasUsed    uint64             `json:"gasUsed"`
	GasAllot   []*GasDistribution `json:"gasAllot"`
	Error      string             `json:"error"`
}

RPCActionResult that will serialize to the RPC representation of a ActionResult.

type RPCLog

type RPCLog struct {
	Name        common.Name   `json:"name"`
	Topics      []common.Hash `json:"topics"`
	Data        hexutil.Bytes `json:"data" validate:"nonzero"`
	BlockNumber uint64        `json:"blockNumber"`
	BlockHash   common.Hash   `json:"blockHash"`
	TxHash      common.Hash   `json:"transactionHash"`
	Index       uint          `json:"logIndex"`
	ActionIndex uint          `json:"actionIndex"`
	TxIndex     uint          `json:"transactionIndex"`
}

RPCLog that will serialize to the RPC representation of a log.

type RPCReceipt

type RPCReceipt struct {
	BlockHash         common.Hash        `json:"blockHash"`
	BlockNumber       uint64             `json:"blockNumber"`
	Hash              common.Hash        `json:"txHash"`
	TransactionIndex  uint64             `json:"transactionIndex"`
	PostState         hexutil.Bytes      `json:"postState"`
	ActionResults     []*RPCActionResult `json:"actionResults"`
	CumulativeGasUsed uint64             `json:"cumulativeGasUsed"`
	TotalGasUsed      uint64             `json:"totalGasUsed"`
	Bloom             Bloom              `json:"logsBloom"`
	Logs              []*RPCLog          `json:"logs"`
}

RPCReceipt that will serialize to the RPC representation of a Receipt.

type RPCTransaction

type RPCTransaction struct {
	BlockHash        common.Hash  `json:"blockHash"`
	BlockNumber      uint64       `json:"blockNumber"`
	Hash             common.Hash  `json:"txHash"`
	TransactionIndex uint64       `json:"transactionIndex"`
	RPCActions       []*RPCAction `json:"actions"`
	GasAssetID       uint64       `json:"gasAssetID"`
	GasPrice         *big.Int     `json:"gasPrice"`
	GasCost          *big.Int     `json:"gasCost"`
}

RPCTransaction that will serialize to the RPC representation of a transaction.

type Receipt

type Receipt struct {
	PostState         []byte
	ActionResults     []*ActionResult
	CumulativeGasUsed uint64
	Bloom             Bloom
	Logs              []*Log
	TxHash            common.Hash
	TotalGasUsed      uint64
	// contains filtered or unexported fields
}

Receipt represents the results of a transaction.

func NewReceipt

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

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

func (*Receipt) ConsensusReceipt

func (r *Receipt) ConsensusReceipt() *Receipt

ConsensusReceipt returns consensus encoding of a receipt.

func (*Receipt) GetInternalTxsLog added in v0.0.7

func (r *Receipt) GetInternalTxsLog() *DetailTx

func (*Receipt) Hash

func (r *Receipt) Hash() common.Hash

Hash hashes the RLP encoding of Receipt.

func (*Receipt) NewRPCReceipt

func (r *Receipt) NewRPCReceipt(blockHash common.Hash, blockNumber uint64, index uint64, tx *Transaction) *RPCReceipt

NewRPCReceipt returns a Receipt that will serialize to the RPC.

func (*Receipt) SetInternalTxsLog added in v0.0.7

func (r *Receipt) SetInternalTxsLog(dtxs *DetailTx)

func (*Receipt) Size

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

Size returns the approximate memory used by all internal contents

type SignData added in v0.0.7

type SignData struct {
	V     *big.Int
	R     *big.Int
	S     *big.Int
	Index []uint64
}

type Signature added in v0.0.16

type Signature struct {
	ParentIndex uint64
	SignData    []*SignData
}

type Signer

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

Signer implements Signer .

func MakeSigner

func MakeSigner(chainID *big.Int) Signer

MakeSigner returns a Signer based on the given chainID .

func NewSigner

func NewSigner(chainID *big.Int) Signer

NewSigner initialize signer

func (Signer) Equal

func (s Signer) Equal(s2 Signer) bool

Equal judging the same chainID

func (Signer) Hash

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

Hash returns the hash to be signed by the sender.

func (Signer) PubKeys added in v0.0.7

func (s Signer) PubKeys(a *Action, tx *Transaction) ([]common.PubKey, error)

func (Signer) SignatureValues

func (s Signer) SignatureValues(sig []byte) (R, S, V *big.Int, err error)

SignatureValues 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 SnapshotBlock added in v0.0.8

type SnapshotBlock struct {
	Number    uint64
	BlockHash common.Hash
}

type SnapshotInfo added in v0.0.8

type SnapshotInfo struct {
	Root common.Hash
}

SnapshotInfo write rawdb

type StateOut

type StateOut struct {
	ReadSet    []*KvNode   // replay
	Reverts    []*OptInfo  // rollback previous block
	Changes    []*OptInfo  // forward next block
	ParentHash common.Hash // block parent hash
	Number     uint64      // block num
	Hash       common.Hash // current block hash
}

StateOut represents a block exec status data.

type Transaction

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

Transaction represents an entire transaction in the block.

func NewTransaction

func NewTransaction(assetID uint64, price *big.Int, actions ...*Action) *Transaction

NewTransaction initialize a transaction.

func TxDifference

func TxDifference(a, b []*Transaction) []*Transaction

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

func (*Transaction) Check added in v0.0.12

func (tx *Transaction) Check(conf *params.ChainConfig) error

Check the validity of all fields

func (*Transaction) Cost

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

Cost returns all actions gasprice * gaslimit.

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

func (tx *Transaction) GasAssetID() uint64

GasAssetID returns transaction gas asset id.

func (*Transaction) GasPrice

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

GasPrice returns transaction gas price.

func (*Transaction) GetActions

func (tx *Transaction) GetActions() []*Action

GetActions return transaction actons.

func (*Transaction) Hash

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

Hash hashes the RLP encoding of tx.

func (*Transaction) NewRPCTransaction

func (tx *Transaction) NewRPCTransaction(blockHash common.Hash, blockNumber uint64, index uint64) *RPCTransaction

NewRPCTransaction returns a transaction that will serialize to the RPC.

func (*Transaction) Size

func (tx *Transaction) Size() common.StorageSize

Size returns the true RLP encoded storage size of the transaction,

type TransactionsByPriceAndNonce

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

TransactionsByPriceAndNonce represents a set of transactions that can return transactions in a profit-maximizing sorted order, while supporting removing entire batches of transactions for non-executable accounts.

func NewTransactionsByPriceAndNonce

func NewTransactionsByPriceAndNonce(txs map[common.Name][]*Transaction) *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 []*Transaction

TxByNonce sort by transaction first action nonce

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 []*Transaction

TxByPrice implements both the sort and the heap interface,

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{}

Pop implements heap pop.

func (*TxByPrice) Push

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

Push implements heap push.

func (TxByPrice) Swap

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

Jump to

Keyboard shortcuts

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