Documentation ¶
Index ¶
- Constants
- func MakeCOAAddress(index uint64) types.Address
- func MakePrecompileAddress(index uint64) types.Address
- type Account
- func (a *Account) Address() types.Address
- func (a *Account) Balance() types.Balance
- func (a *Account) Call(to types.Address, data types.Data, gaslimit types.GasLimit, ...) *types.ResultSummary
- func (a *Account) Code() types.Code
- func (a *Account) CodeHash() []byte
- func (a *Account) Deploy(code types.Code, gaslimit types.GasLimit, balance types.Balance) *types.ResultSummary
- func (a *Account) Deposit(v *types.FLOWTokenVault)
- func (a *Account) Nonce() uint64
- func (a *Account) Transfer(to types.Address, balance types.Balance)
- func (a *Account) Withdraw(b types.Balance) *types.FLOWTokenVault
- type AddressAllocator
- type BlockHashList
- func (bhl *BlockHashList) BlockHashByHeight(height uint64) (found bool, bh gethCommon.Hash, err error)
- func (bhl *BlockHashList) IsEmpty() bool
- func (bhl *BlockHashList) LastAddedBlockHash() (gethCommon.Hash, error)
- func (bhl *BlockHashList) MaxAvailableHeight() uint64
- func (bhl *BlockHashList) MinAvailableHeight() uint64
- func (bhl *BlockHashList) Push(height uint64, bh gethCommon.Hash) error
- type BlockStore
- func (bs *BlockStore) BlockHash(height uint64) (gethCommon.Hash, error)
- func (bs *BlockStore) BlockProposal() (*types.BlockProposal, error)
- func (bs *BlockStore) CommitBlockProposal(bp *types.BlockProposal) error
- func (bs *BlockStore) LatestBlock() (*types.Block, error)
- func (bs *BlockStore) ResetBlockProposal() error
- func (bs *BlockStore) UpdateBlockProposal(bp *types.BlockProposal) error
- type ContractHandler
- func (h *ContractHandler) AccountByAddress(addr types.Address, isAuthorized bool) types.Account
- func (h *ContractHandler) BatchRun(rlpEncodedTxs [][]byte, coinbase types.Address) []*types.ResultSummary
- func (h *ContractHandler) CommitBlockProposal()
- func (h *ContractHandler) DeployCOA(uuid uint64) types.Address
- func (h *ContractHandler) DryRun(rlpEncodedTx []byte, from types.Address) *types.ResultSummary
- func (h *ContractHandler) EVMContractAddress() common.Address
- func (h *ContractHandler) FlowTokenAddress() common.Address
- func (h *ContractHandler) GenerateResourceUUID() uint64
- func (h *ContractHandler) LastExecutedBlock() *types.Block
- func (h *ContractHandler) Run(rlpEncodedTx []byte, coinbase types.Address) *types.ResultSummary
- func (h *ContractHandler) RunOrPanic(rlpEncodedTx []byte, coinbase types.Address)
Constants ¶
const ( BlockHashListCapacity = 256 BlockStoreLatestBlockKey = "LatestBlock" BlockStoreLatestBlockProposalKey = "LatestBlockProposal" BlockStoreBlockHashesKey = "LatestBlockHashes" )
const RandomSourceTypeValueFieldName = "value"
const ValidationResultTypeIsValidFieldName = "isValid"
Variables ¶
This section is empty.
Functions ¶
func MakeCOAAddress ¶ added in v0.33.30
func MakePrecompileAddress ¶ added in v0.33.30
Types ¶
type Account ¶
type Account struct {
// contains filtered or unexported fields
}
func (*Account) Balance ¶
Balance returns the balance of this account
Note: we don't meter any extra computation given reading data from the storage already translates into computation
func (*Account) Call ¶
func (a *Account) Call(to types.Address, data types.Data, gaslimit types.GasLimit, balance types.Balance) *types.ResultSummary
Call calls a smart contract function with the given data it would limit the gas used according to the limit provided given it doesn't goes beyond what Flow transaction allows. the balance would be deducted from the OFA account and would be transferred to the target address
func (*Account) Code ¶ added in v0.33.30
Code returns the code of this account
Note: we don't meter any extra computation given reading data from the storage already translates into computation
func (*Account) CodeHash ¶ added in v0.33.30
CodeHash returns the code hash of this account
Note: we don't meter any extra computation given reading data from the storage already translates into computation
func (*Account) Deploy ¶
func (a *Account) Deploy(code types.Code, gaslimit types.GasLimit, balance types.Balance) *types.ResultSummary
Deploy deploys a contract to the EVM environment the new deployed contract would be at the returned address contained in the result summary as data and the contract data is not controlled by the caller accounts
func (*Account) Deposit ¶
func (a *Account) Deposit(v *types.FLOWTokenVault)
Deposit deposits the token from the given vault into the flow evm main vault and update the account balance with the new amount
func (*Account) Nonce ¶ added in v0.33.30
Nonce returns the nonce of this account
Note: we don't meter any extra computation given reading data from the storage already translates into computation
type AddressAllocator ¶
type AddressAllocator struct { }
func NewAddressAllocator ¶
func NewAddressAllocator() *AddressAllocator
NewAddressAllocator constructs a new statefull address allocator
func (*AddressAllocator) AllocateCOAAddress ¶ added in v0.33.30
func (aa *AddressAllocator) AllocateCOAAddress(uuid uint64) types.Address
AllocateCOAAddress allocates an address for COA
func (*AddressAllocator) AllocatePrecompileAddress ¶ added in v0.33.30
func (aa *AddressAllocator) AllocatePrecompileAddress(index uint64) types.Address
func (*AddressAllocator) COAFactoryAddress ¶ added in v0.33.30
func (aa *AddressAllocator) COAFactoryAddress() types.Address
func (*AddressAllocator) NativeTokenBridgeAddress ¶ added in v0.33.30
func (aa *AddressAllocator) NativeTokenBridgeAddress() types.Address
type BlockHashList ¶ added in v0.36.3
type BlockHashList struct {
// contains filtered or unexported fields
}
BlockHashList stores the last `capacity` number of block hashes
Under the hood it breaks the list of hashes into smaller fixed size buckets to minimize the number of bytes read and written during set/get operations.
func NewBlockHashList ¶ added in v0.36.3
func NewBlockHashList( backend types.Backend, rootAddress flow.Address, capacity int, ) (*BlockHashList, error)
NewBlockHashList creates a block hash list It tries to load the metadata from the backend and if not exist it creates one
func (*BlockHashList) BlockHashByHeight ¶ added in v0.36.3
func (bhl *BlockHashList) BlockHashByHeight(height uint64) (found bool, bh gethCommon.Hash, err error)
BlockHashByIndex returns the block hash by block height
func (*BlockHashList) IsEmpty ¶ added in v0.36.3
func (bhl *BlockHashList) IsEmpty() bool
IsEmpty returns true if the list is empty
func (*BlockHashList) LastAddedBlockHash ¶ added in v0.36.3
func (bhl *BlockHashList) LastAddedBlockHash() (gethCommon.Hash, error)
LastAddedBlockHash returns the last block hash added to the list for empty list it returns empty hash value
func (*BlockHashList) MaxAvailableHeight ¶ added in v0.36.3
func (bhl *BlockHashList) MaxAvailableHeight() uint64
MaxAvailableHeight returns the max available height in the list
func (*BlockHashList) MinAvailableHeight ¶ added in v0.36.3
func (bhl *BlockHashList) MinAvailableHeight() uint64
MinAvailableHeight returns the min available height in the list
func (*BlockHashList) Push ¶ added in v0.36.3
func (bhl *BlockHashList) Push(height uint64, bh gethCommon.Hash) error
Push pushes a block hash for the next height to the list. If the list has reached to the capacity, it overwrites the oldest element.
type BlockStore ¶
type BlockStore struct {
// contains filtered or unexported fields
}
func NewBlockStore ¶
func NewBlockStore( chainID flow.ChainID, backend types.Backend, rootAddress flow.Address, ) *BlockStore
NewBlockStore constructs a new block store
func (*BlockStore) BlockHash ¶
func (bs *BlockStore) BlockHash(height uint64) (gethCommon.Hash, error)
BlockHash returns the block hash for the last x blocks
func (*BlockStore) BlockProposal ¶
func (bs *BlockStore) BlockProposal() (*types.BlockProposal, error)
BlockProposal returns the block proposal to be updated by the handler
func (*BlockStore) CommitBlockProposal ¶
func (bs *BlockStore) CommitBlockProposal(bp *types.BlockProposal) error
CommitBlockProposal commits the block proposal to the chain
func (*BlockStore) LatestBlock ¶
func (bs *BlockStore) LatestBlock() (*types.Block, error)
LatestBlock returns the latest executed block
func (*BlockStore) ResetBlockProposal ¶
func (bs *BlockStore) ResetBlockProposal() error
func (*BlockStore) UpdateBlockProposal ¶ added in v0.36.2
func (bs *BlockStore) UpdateBlockProposal(bp *types.BlockProposal) error
UpdateBlockProposal updates the block proposal
type ContractHandler ¶
type ContractHandler struct {
// contains filtered or unexported fields
}
ContractHandler is responsible for triggering calls to emulator, metering, event emission and updating the block
func NewContractHandler ¶
func NewContractHandler( flowChainID flow.ChainID, evmContractAddress flow.Address, flowTokenAddress common.Address, randomBeaconAddress flow.Address, blockStore types.BlockStore, addressAllocator types.AddressAllocator, backend types.Backend, emulator types.Emulator, tracer debug.EVMTracer, ) *ContractHandler
NewContractHandler constructs a new ContractHandler
func (*ContractHandler) AccountByAddress ¶
AccountByAddress returns the account for the given address, if isAuthorized is set, account is controlled by the FVM (COAs)
func (*ContractHandler) BatchRun ¶ added in v0.33.30
func (h *ContractHandler) BatchRun( rlpEncodedTxs [][]byte, coinbase types.Address, ) []*types.ResultSummary
BatchRun tries to run batch of rlp-encoded transactions and collects the gas fees and pay it to the coinbase address provided. All transactions provided in the batch are included in a single block, except for invalid transactions
func (*ContractHandler) CommitBlockProposal ¶ added in v0.36.2
func (h *ContractHandler) CommitBlockProposal()
CommitBlockProposal commits the block proposal and add a new block to the EVM blockchain
func (*ContractHandler) DeployCOA ¶ added in v0.33.30
func (h *ContractHandler) DeployCOA(uuid uint64) types.Address
DeployCOA deploys a cadence-owned-account and returns the address
func (*ContractHandler) DryRun ¶ added in v0.33.30
func (h *ContractHandler) DryRun( rlpEncodedTx []byte, from types.Address, ) *types.ResultSummary
DryRun simulates execution of the provided RLP-encoded and unsigned transaction.
func (*ContractHandler) EVMContractAddress ¶ added in v0.33.30
func (h *ContractHandler) EVMContractAddress() common.Address
EVMContractAddress returns the address where EVM contract is deployed
func (*ContractHandler) FlowTokenAddress ¶
func (h *ContractHandler) FlowTokenAddress() common.Address
FlowTokenAddress returns the address where the FlowToken contract is deployed
func (*ContractHandler) GenerateResourceUUID ¶ added in v0.33.30
func (h *ContractHandler) GenerateResourceUUID() uint64
func (*ContractHandler) LastExecutedBlock ¶
func (h *ContractHandler) LastExecutedBlock() *types.Block
LastExecutedBlock returns the last executed block
func (*ContractHandler) Run ¶
func (h *ContractHandler) Run(rlpEncodedTx []byte, coinbase types.Address) *types.ResultSummary
Run tries to run an rlp-encoded evm transaction and collects the gas fees and pay it to the coinbase address provided.
func (*ContractHandler) RunOrPanic ¶ added in v0.33.30
func (h *ContractHandler) RunOrPanic(rlpEncodedTx []byte, coinbase types.Address)
RunOrPanic runs an rlp-encoded evm transaction and collects the gas fees and pay it to the coinbase address provided.