models

package
v0.36.3 Latest Latest
Warning

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

Go to latest
Published: Sep 19, 2024 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// TxSlotSize is used to calculate how many data slots a single transaction
	// takes up based on its size. The slots are used as DoS protection, ensuring
	// that validating a new transaction remains a constant operation (in reality
	// O(maxslots), where max slots are 4 currently).
	TxSlotSize = 32 * 1024

	// TxMaxSize is the maximum size a single transaction can have. This field has
	// non-trivial consequences: larger transactions are significantly harder and
	// more expensive to propagate; larger transactions also take more resources
	// to validate whether they fit into the pool or not.
	TxMaxSize = 4 * TxSlotSize // 128KB
)

Variables

View Source
var (
	LatestBlockNumber   = big.NewInt(-2)
	EarliestBlockNumber = big.NewInt(0)
)
View Source
var ErrInvalidHeight = errors.New("invalid height")

Functions

func ValidateTransaction added in v0.21.0

func ValidateTransaction(
	tx *gethTypes.Transaction,
	head *gethTypes.Header,
	signer gethTypes.Signer,
	opts *txpool.ValidationOptions,
) error

Types

type Block added in v0.25.0

type Block struct {
	*types.Block
	// We define fixed hash in case where types.Block format changes which
	// will produce a different hash on Block.Hash() calculation since it
	// will have more fields than before, so we make sure the hash we calculated
	// with the previous format is fixed by assigning it to this field and then
	// on hash calculation we check if this field is set we just return it.
	// We must make the FixedHash exported so RLP encoding preserve it, and
	// we must use string not common.Hash since RLP decoding has an issue
	// with decoding into nil pointer slice.
	FixedHash         *string
	TransactionHashes []gethCommon.Hash
}

func GenesisBlock added in v0.25.0

func GenesisBlock(chainID flow.ChainID) *Block

func NewBlockFromBytes added in v0.25.0

func NewBlockFromBytes(data []byte) (*Block, error)

func (*Block) Hash added in v0.25.0

func (b *Block) Hash() (gethCommon.Hash, error)

func (*Block) ToBytes added in v0.25.0

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

type BlockEvents added in v0.12.0

type BlockEvents struct {
	Events *CadenceEvents
	Err    error
}

BlockEvents is a wrapper around events streamed, and it also contains an error

func NewBlockEvents added in v0.12.0

func NewBlockEvents(events flow.BlockEvents) BlockEvents

func NewBlockEventsError added in v0.12.0

func NewBlockEventsError(err error) BlockEvents

type BloomsHeight added in v0.25.0

type BloomsHeight struct {
	Blooms []*gethTypes.Bloom
	Height uint64
}

type CadenceEvents added in v0.6.0

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

CadenceEvents contains Flow emitted events containing one or zero evm block executed event, and multiple or zero evm transaction events.

func NewCadenceEvents added in v0.6.0

func NewCadenceEvents(events flow.BlockEvents) (*CadenceEvents, error)

NewCadenceEvents decodes the events into evm types.

func (*CadenceEvents) Block added in v0.25.0

func (c *CadenceEvents) Block() *Block

Block evm block. If event doesn't contain EVM block the return value is nil.

func (*CadenceEvents) CadenceBlockID added in v0.16.0

func (c *CadenceEvents) CadenceBlockID() flow.Identifier

CadenceBlockID returns the Flow Cadence block ID.

func (*CadenceEvents) CadenceHeight added in v0.6.0

func (c *CadenceEvents) CadenceHeight() uint64

CadenceHeight returns the Flow Cadence height at which the events were emitted.

func (*CadenceEvents) Empty added in v0.6.0

func (c *CadenceEvents) Empty() bool

Empty checks if there is an EVM block included in the events. If there are no evm block or transactions events this is a heartbeat event.

func (*CadenceEvents) Length added in v0.6.0

func (c *CadenceEvents) Length() int

Length of the Cadence events emitted.

func (*CadenceEvents) Receipts added in v0.25.0

func (c *CadenceEvents) Receipts() []*Receipt

Receipts included in the EVM block, if event doesn't contain EVM transactions the return value is nil.

func (*CadenceEvents) Transactions added in v0.6.0

func (c *CadenceEvents) Transactions() []Transaction

Transactions included in the EVM block, if event doesn't contain EVM transactions the return value is nil.

type DirectCall added in v0.4.0

type DirectCall struct {
	*types.DirectCall
}

func (DirectCall) AccessList added in v0.20.0

func (dc DirectCall) AccessList() gethTypes.AccessList

func (DirectCall) BlobGas added in v0.4.0

func (dc DirectCall) BlobGas() uint64

func (DirectCall) BlobGasFeeCap added in v0.20.0

func (dc DirectCall) BlobGasFeeCap() *big.Int

func (DirectCall) BlobHashes added in v0.20.0

func (dc DirectCall) BlobHashes() []common.Hash

func (DirectCall) Data added in v0.4.0

func (dc DirectCall) Data() []byte

func (DirectCall) From added in v0.4.0

func (dc DirectCall) From() (common.Address, error)

func (DirectCall) Gas added in v0.4.0

func (dc DirectCall) Gas() uint64

func (DirectCall) GasFeeCap added in v0.20.0

func (dc DirectCall) GasFeeCap() *big.Int

func (DirectCall) GasPrice added in v0.4.0

func (dc DirectCall) GasPrice() *big.Int

func (DirectCall) GasTipCap added in v0.20.0

func (dc DirectCall) GasTipCap() *big.Int

func (DirectCall) MarshalBinary added in v0.4.0

func (dc DirectCall) MarshalBinary() ([]byte, error)

func (DirectCall) Nonce added in v0.4.0

func (dc DirectCall) Nonce() uint64

func (DirectCall) RawSignatureValues added in v0.4.0

func (dc DirectCall) RawSignatureValues() (
	v *big.Int,
	r *big.Int,
	s *big.Int,
)

func (DirectCall) Size added in v0.4.0

func (dc DirectCall) Size() uint64

func (DirectCall) To added in v0.4.0

func (dc DirectCall) To() *common.Address

func (DirectCall) Type added in v0.4.0

func (dc DirectCall) Type() uint8

func (DirectCall) Value added in v0.4.0

func (dc DirectCall) Value() *big.Int

type Engine

type Engine interface {
	// Run the engine with context, errors are not expected.
	Run(ctx context.Context) error
	// Stop the engine.
	Stop()
	// Done signals the engine was stopped.
	Done() <-chan struct{}
	// Ready signals the engine was started.
	Ready() <-chan struct{}
}

Engine defines a processing unit

type EngineStatus

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

func NewEngineStatus

func NewEngineStatus() *EngineStatus

func (*EngineStatus) IsDone

func (e *EngineStatus) IsDone() <-chan struct{}

func (*EngineStatus) IsReady

func (e *EngineStatus) IsReady() <-chan struct{}

func (*EngineStatus) IsStopped

func (e *EngineStatus) IsStopped() <-chan struct{}

func (*EngineStatus) MarkDone

func (e *EngineStatus) MarkDone()

func (*EngineStatus) MarkReady

func (e *EngineStatus) MarkReady()

func (*EngineStatus) MarkStopped

func (e *EngineStatus) MarkStopped()

type Publisher added in v0.23.1

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

func NewPublisher added in v0.23.1

func NewPublisher() *Publisher

func (*Publisher) Publish added in v0.23.1

func (p *Publisher) Publish(data any)

func (*Publisher) Subscribe added in v0.23.1

func (p *Publisher) Subscribe(s Subscriber)

func (*Publisher) Unsubscribe added in v0.23.1

func (p *Publisher) Unsubscribe(s Subscriber)

type Receipt added in v0.30.1

type Receipt struct {
	Type              uint8            `json:"type,omitempty"`
	PostState         []byte           `json:"root"`
	Status            uint64           `json:"status"`
	CumulativeGasUsed uint64           `json:"cumulativeGasUsed"`
	Bloom             gethTypes.Bloom  `json:"logsBloom"`
	Logs              []*gethTypes.Log `json:"logs"`
	TxHash            common.Hash      `json:"transactionHash"`
	ContractAddress   common.Address   `json:"contractAddress"`
	GasUsed           uint64           `json:"gasUsed"`
	EffectiveGasPrice *big.Int         `json:"effectiveGasPrice"`
	BlobGasUsed       uint64           `json:"blobGasUsed,omitempty"`
	BlobGasPrice      *big.Int         `json:"blobGasPrice,omitempty"`
	BlockHash         common.Hash      `json:"blockHash,omitempty"`
	BlockNumber       *big.Int         `json:"blockNumber,omitempty"`
	TransactionIndex  uint             `json:"transactionIndex"`
	RevertReason      []byte           `json:"revertReason"`
	PrecompiledCalls  []byte
}

Receipt struct copies the geth.Receipt type found here: https://github.com/ethereum/go-ethereum/blob/9bbb9df18549d6f81c3d1f4fc6c65f71bc92490d/core/types/receipt.go#L52

the reason is if we use geth.Receipt some values will be skipped when RLP encoding which is because geth node has the data locally, but we don't in evm gateway, so we can not reproduce those values and we need to store them

func NewReceipt added in v0.30.1

func NewReceipt(
	receipt *gethTypes.Receipt,
	revertReason []byte,
	precompiledCalls []byte,
) *Receipt

func ReceiptsFromBytes added in v0.30.1

func ReceiptsFromBytes(data []byte) ([]*Receipt, error)

type SequentialHeight

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

SequentialHeight tracks a block height and enforces rules about the valid next height.

func NewSequentialHeight

func NewSequentialHeight(init uint64) *SequentialHeight

func (*SequentialHeight) Increment

func (s *SequentialHeight) Increment(nextHeight uint64) error

Increment the height value according to the rules. A valid next height must be either incremented by one, or must be the same as previous height to make the action idempotent. Expected errors: if the height is not incremented according to the rules a ErrInvalidHeight error is returned

func (*SequentialHeight) Load

func (s *SequentialHeight) Load() uint64

type Subscriber added in v0.23.1

type Subscriber interface {
	ID() uuid.UUID
	Notify(data any)
	Error() <-chan error
}

type Subscription added in v0.23.1

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

func NewSubscription added in v0.23.1

func NewSubscription(callback func(any) error) *Subscription

func (*Subscription) Error added in v0.23.1

func (b *Subscription) Error() <-chan error

func (*Subscription) ID added in v0.23.1

func (b *Subscription) ID() uuid.UUID

func (*Subscription) Notify added in v0.23.1

func (b *Subscription) Notify(data any)

type Transaction added in v0.4.0

type Transaction interface {
	Hash() common.Hash
	RawSignatureValues() (v *big.Int, r *big.Int, s *big.Int)
	From() (common.Address, error)
	To() *common.Address
	Data() []byte
	Nonce() uint64
	Value() *big.Int
	Type() uint8
	Gas() uint64
	GasFeeCap() *big.Int
	GasTipCap() *big.Int
	GasPrice() *big.Int
	BlobGas() uint64
	BlobGasFeeCap() *big.Int
	BlobHashes() []common.Hash
	Size() uint64
	AccessList() gethTypes.AccessList
	MarshalBinary() ([]byte, error)
}

func UnmarshalTransaction added in v0.4.0

func UnmarshalTransaction(value []byte) (Transaction, error)

type TransactionCall added in v0.4.0

type TransactionCall struct {
	*gethTypes.Transaction
}

func (TransactionCall) From added in v0.4.0

func (tc TransactionCall) From() (common.Address, error)

func (TransactionCall) Hash added in v0.4.0

func (tc TransactionCall) Hash() common.Hash

func (TransactionCall) MarshalBinary added in v0.4.0

func (tc TransactionCall) MarshalBinary() ([]byte, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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