Documentation ¶
Index ¶
- Variables
- type ArgBlockChainHook
- type BlockChainHookImpl
- func (bh *BlockChainHookImpl) CurrentEpoch() uint32
- func (bh *BlockChainHookImpl) CurrentNonce() uint64
- func (bh *BlockChainHookImpl) CurrentRandomSeed() []byte
- func (bh *BlockChainHookImpl) CurrentRound() uint64
- func (bh *BlockChainHookImpl) CurrentTimeStamp() uint64
- func (bh *BlockChainHookImpl) GetAllState(address []byte) (map[string][]byte, error)
- func (bh *BlockChainHookImpl) GetBlockhash(nonce uint64) ([]byte, error)
- func (bh *BlockChainHookImpl) GetBuiltInFunctions() process.BuiltInFunctionContainer
- func (bh *BlockChainHookImpl) GetBuiltinFunctionNames() vmcommon.FunctionNames
- func (bh *BlockChainHookImpl) GetShardOfAddress(address []byte) uint32
- func (bh *BlockChainHookImpl) GetStateRootHash() []byte
- func (bh *BlockChainHookImpl) GetStorageData(accountAddress []byte, index []byte) ([]byte, error)
- func (bh *BlockChainHookImpl) GetUserAccount(address []byte) (vmcommon.UserAccountHandler, error)
- func (bh *BlockChainHookImpl) IsInterfaceNil() bool
- func (bh *BlockChainHookImpl) IsPayable(address []byte) (bool, error)
- func (bh *BlockChainHookImpl) IsSmartContract(address []byte) bool
- func (bh *BlockChainHookImpl) LastEpoch() uint32
- func (bh *BlockChainHookImpl) LastNonce() uint64
- func (bh *BlockChainHookImpl) LastRandomSeed() []byte
- func (bh *BlockChainHookImpl) LastRound() uint64
- func (bh *BlockChainHookImpl) LastTimeStamp() uint64
- func (bh *BlockChainHookImpl) NewAddress(creatorAddress []byte, creatorNonce uint64, vmType []byte) ([]byte, error)
- func (bh *BlockChainHookImpl) ProcessBuiltInFunction(input *vmcommon.ContractCallInput) (*vmcommon.VMOutput, error)
- func (bh *BlockChainHookImpl) SetCurrentHeader(hdr data.HeaderHandler)
- type VMCryptoHook
Constants ¶
This section is empty.
Variables ¶
var ErrAddressLengthNotCorrect = errors.New("address length is not correct")
ErrAddressLengthNotCorrect signals that an account does not have the correct address
var ErrEmptyCode = errors.New("empty code in provided smart contract holding account")
ErrEmptyCode signals that an account does not contain code
var ErrNotImplemented = errors.New("not implemented")
ErrNotImplemented signals that a functionality can not be used as it is not implemented
var ErrVMTypeLengthIsNotCorrect = errors.New("vm type length is not correct")
ErrVMTypeLengthIsNotCorrect signals that the vm type length is not correct
Functions ¶
This section is empty.
Types ¶
type ArgBlockChainHook ¶
type ArgBlockChainHook struct { Accounts state.AccountsAdapter PubkeyConv core.PubkeyConverter StorageService dataRetriever.StorageService BlockChain data.ChainHandler ShardCoordinator sharding.Coordinator Marshalizer marshal.Marshalizer Uint64Converter typeConverters.Uint64ByteSliceConverter BuiltInFunctions process.BuiltInFunctionContainer }
ArgBlockChainHook represents the arguments structure for the blockchain hook
type BlockChainHookImpl ¶
type BlockChainHookImpl struct {
// contains filtered or unexported fields
}
BlockChainHookImpl is a wrapper over AccountsAdapter that satisfy vmcommon.BlockchainHook interface
func NewBlockChainHookImpl ¶
func NewBlockChainHookImpl( args ArgBlockChainHook, ) (*BlockChainHookImpl, error)
NewBlockChainHookImpl creates a new BlockChainHookImpl instance
func (*BlockChainHookImpl) CurrentEpoch ¶
func (bh *BlockChainHookImpl) CurrentEpoch() uint32
CurrentEpoch returns the current epoch
func (*BlockChainHookImpl) CurrentNonce ¶
func (bh *BlockChainHookImpl) CurrentNonce() uint64
CurrentNonce returns the nonce from the current block
func (*BlockChainHookImpl) CurrentRandomSeed ¶
func (bh *BlockChainHookImpl) CurrentRandomSeed() []byte
CurrentRandomSeed returns the random seed from the current header
func (*BlockChainHookImpl) CurrentRound ¶
func (bh *BlockChainHookImpl) CurrentRound() uint64
CurrentRound returns the round from the current block
func (*BlockChainHookImpl) CurrentTimeStamp ¶
func (bh *BlockChainHookImpl) CurrentTimeStamp() uint64
CurrentTimeStamp return the timestamp from the current block
func (*BlockChainHookImpl) GetAllState ¶ added in v1.0.114
func (bh *BlockChainHookImpl) GetAllState(address []byte) (map[string][]byte, error)
GetAllState returns the underlying state of a given account
func (*BlockChainHookImpl) GetBlockhash ¶
func (bh *BlockChainHookImpl) GetBlockhash(nonce uint64) ([]byte, error)
GetBlockhash returns the header hash for a requested nonce delta
func (*BlockChainHookImpl) GetBuiltInFunctions ¶ added in v1.0.103
func (bh *BlockChainHookImpl) GetBuiltInFunctions() process.BuiltInFunctionContainer
GetBuiltInFunctions returns the built in functions container
func (*BlockChainHookImpl) GetBuiltinFunctionNames ¶ added in v1.0.104
func (bh *BlockChainHookImpl) GetBuiltinFunctionNames() vmcommon.FunctionNames
GetBuiltinFunctionNames returns the built in function names
func (*BlockChainHookImpl) GetShardOfAddress ¶ added in v1.0.133
func (bh *BlockChainHookImpl) GetShardOfAddress(address []byte) uint32
GetShardOfAddress is the hook that returns the shard of a given address
func (*BlockChainHookImpl) GetStateRootHash ¶
func (bh *BlockChainHookImpl) GetStateRootHash() []byte
GetStateRootHash returns the state root hash from the last committed block
func (*BlockChainHookImpl) GetStorageData ¶
func (bh *BlockChainHookImpl) GetStorageData(accountAddress []byte, index []byte) ([]byte, error)
GetStorageData returns the storage value of a variable held in account's data trie
func (*BlockChainHookImpl) GetUserAccount ¶ added in v1.0.133
func (bh *BlockChainHookImpl) GetUserAccount(address []byte) (vmcommon.UserAccountHandler, error)
GetUserAccount returns the balance of a shard account
func (*BlockChainHookImpl) IsInterfaceNil ¶
func (bh *BlockChainHookImpl) IsInterfaceNil() bool
IsInterfaceNil returns true if there is no value under the interface
func (*BlockChainHookImpl) IsPayable ¶ added in v1.0.147
func (bh *BlockChainHookImpl) IsPayable(address []byte) (bool, error)
IsPayable checks whether the provided address can receive ERD or not
func (*BlockChainHookImpl) IsSmartContract ¶ added in v1.0.133
func (bh *BlockChainHookImpl) IsSmartContract(address []byte) bool
IsSmartContract returns whether the address points to a smart contract
func (*BlockChainHookImpl) LastEpoch ¶
func (bh *BlockChainHookImpl) LastEpoch() uint32
LastEpoch returns the epoch from the last committed block
func (*BlockChainHookImpl) LastNonce ¶
func (bh *BlockChainHookImpl) LastNonce() uint64
LastNonce returns the nonce from from the last committed block
func (*BlockChainHookImpl) LastRandomSeed ¶
func (bh *BlockChainHookImpl) LastRandomSeed() []byte
LastRandomSeed returns the random seed from the last committed block
func (*BlockChainHookImpl) LastRound ¶
func (bh *BlockChainHookImpl) LastRound() uint64
LastRound returns the round from the last committed block
func (*BlockChainHookImpl) LastTimeStamp ¶
func (bh *BlockChainHookImpl) LastTimeStamp() uint64
LastTimeStamp returns the timeStamp from the last committed block
func (*BlockChainHookImpl) NewAddress ¶
func (bh *BlockChainHookImpl) NewAddress(creatorAddress []byte, creatorNonce uint64, vmType []byte) ([]byte, error)
NewAddress is a hook which creates a new smart contract address from the creators address and nonce The address is created by applied keccak256 on the appended value off creator address and nonce Prefix mask is applied for first 8 bytes 0, and for bytes 9-10 - VM type Suffix mask is applied - last 2 bytes are for the shard ID - mask is applied as suffix mask
func (*BlockChainHookImpl) ProcessBuiltInFunction ¶ added in v1.0.103
func (bh *BlockChainHookImpl) ProcessBuiltInFunction(input *vmcommon.ContractCallInput) (*vmcommon.VMOutput, error)
ProcessBuiltInFunction is the hook through which a smart contract can execute a built in function
func (*BlockChainHookImpl) SetCurrentHeader ¶
func (bh *BlockChainHookImpl) SetCurrentHeader(hdr data.HeaderHandler)
SetCurrentHeader sets current header to be used by smart contracts
type VMCryptoHook ¶
type VMCryptoHook struct { }
VMCryptoHook is a wrapper used in vm implementation
func NewVMCryptoHook ¶
func NewVMCryptoHook() *VMCryptoHook
NewVMCryptoHook creates a new instance of a vm crypto hook
func (*VMCryptoHook) Ecrecover ¶
Ecrecover calculates the corresponding Ethereum address for the public key which created the given signature https://ewasm.readthedocs.io/en/mkdocs/system_contracts/
func (*VMCryptoHook) Keccak256 ¶
func (vmch *VMCryptoHook) Keccak256(data []byte) ([]byte, error)
Keccak256 returns a keccak 256 hash of the input string. Should return in hex format.