worldmock

package
v1.3.3 Latest Latest
Warning

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

Go to latest
Published: May 24, 2021 License: GPL-3.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const SCAddressNumLeadingZeros = 8

SCAddressNumLeadingZeros is the number of zero bytes every smart contract address begins with.

Variables

ESDTNonceKeyPrefix is the prefix of storage keys belonging to ESDT nonces.

ESDTRoleKeyPrefix is the prefix of storage keys belonging to ESDT roles.

ESDTTokenKeyPrefix is the prefix of storage keys belonging to ESDT tokens.

View Source
var ErrBuiltinFuncWrapperNotInitialized = errors.New("builtin function not found or container not initialized")

ErrBuiltinFuncWrapperNotInitialized means that the builtin function wrapper was used before initialization.

View Source
var ErrInsufficientFunds = errors.New("insufficient funds")

ErrInsufficientFunds signals the funds are insufficient for the move balance operation but the transaction fee is covered by the current balance

View Source
var ErrInvalidAddressLength = errors.New("invalid address length")

ErrInvalidAddressLength indicates an incorrect length given for an address.

View Source
var ErrOperationNotPermitted = errors.New("operation not permitted")

ErrOperationNotPermitted indicates an operation rejected due to insufficient permissions.

View Source
var ErrTrieHandlingNotImplemented = errors.New("trie handling not implemented")

ErrTrieHandlingNotImplemented indicates that no trie-related operations are currently implemented.

View Source
var WorldMarshalizer = &marshal.GogoProtoMarshalizer{}

WorldMarshalizer is the global marshalizer to be used by the components of the BuiltinFunctionsWrapper.

Functions

func GenerateMockAddress

func GenerateMockAddress(creatorAddress []byte, creatorNonce uint64) []byte

GenerateMockAddress simulates creation of a new address by the protocol.

func GetTokenNameFromKey added in v1.2.5

func GetTokenNameFromKey(key []byte) []byte

GetTokenNameFromKey extracts the token name from the given storage key; it does not check whether the key is indeed a token key or not.

func IsESDTKey added in v1.2.5

func IsESDTKey(key []byte) bool

IsESDTKey returns true if the given storage key is ESDT-related

func IsNonceKey added in v1.2.5

func IsNonceKey(key []byte) bool

IsNonceKey returns true if the given storage key belongs to an ESDT nonce.

func IsRoleKey added in v1.2.5

func IsRoleKey(key []byte) bool

IsRoleKey returns true if the given storage key belongs to an ESDT role.

func IsSmartContractAddress added in v1.3.0

func IsSmartContractAddress(address []byte) bool

IsSmartContractAddress verifies the address format. In Elrond, smart contract addresses start with 8 bytes of 0.

func IsTokenKey added in v1.2.5

func IsTokenKey(key []byte) bool

IsTokenKey returns true if the given storage key belongs to an ESDT token.

func MakeLastNonceKey added in v1.2.5

func MakeLastNonceKey(tokenName []byte) []byte

MakeLastNonceKey creates the storage key corresponding to the last nonce of the given tokenName.

func MakeTokenKey added in v1.2.5

func MakeTokenKey(tokenName []byte, nonce uint64) []byte

MakeTokenKey creates the storage key corresponding to the given tokenName.

func MakeTokenRolesKey added in v1.2.5

func MakeTokenRolesKey(tokenName []byte) []byte

MakeTokenRolesKey creates the storage key corresponding to the roles for the given tokenName.

Types

type Account

type Account struct {
	Exists          bool
	Address         []byte
	Nonce           uint64
	Balance         *big.Int
	BalanceDelta    *big.Int
	Storage         map[string][]byte
	RootHash        []byte
	Code            []byte
	CodeHash        []byte
	CodeMetadata    []byte
	OwnerAddress    []byte
	AsyncCallData   string
	Username        []byte
	DeveloperReward *big.Int
	ShardID         uint32
	IsSmartContract bool
}

Account holds the account info

func (*Account) AddToBalance added in v1.2.5

func (a *Account) AddToBalance(value *big.Int) error

AddToBalance -

func (*Account) AddToDeveloperReward added in v1.2.5

func (a *Account) AddToDeveloperReward(value *big.Int)

AddToDeveloperReward -

func (*Account) AddressBytes

func (a *Account) AddressBytes() []byte

AddressBytes -

func (*Account) ChangeOwnerAddress added in v1.2.5

func (a *Account) ChangeOwnerAddress(sender []byte, newAddress []byte) error

ChangeOwnerAddress -

func (*Account) ClaimDeveloperRewards added in v1.2.5

func (a *Account) ClaimDeveloperRewards(sender []byte) (*big.Int, error)

ClaimDeveloperRewards -

func (*Account) ClearDataCaches added in v1.2.5

func (a *Account) ClearDataCaches()

ClearDataCaches -

func (*Account) Clone added in v1.2.5

func (a *Account) Clone() *Account

Clone -

func (*Account) DataTrie added in v1.2.5

func (a *Account) DataTrie() data.Trie

DataTrie -

func (*Account) DataTrieTracker added in v1.2.5

func (a *Account) DataTrieTracker() state.DataTrieTracker

DataTrieTracker -

func (*Account) DirtyData added in v1.2.5

func (a *Account) DirtyData() map[string][]byte

DirtyData -

func (*Account) GetBalance

func (a *Account) GetBalance() *big.Int

GetBalance -

func (*Account) GetCode

func (a *Account) GetCode() []byte

GetCode -

func (*Account) GetCodeHash

func (a *Account) GetCodeHash() []byte

GetCodeHash -

func (*Account) GetCodeMetadata

func (a *Account) GetCodeMetadata() []byte

GetCodeMetadata -

func (*Account) GetDeveloperReward

func (a *Account) GetDeveloperReward() *big.Int

GetDeveloperReward -

func (*Account) GetFullMockESDTData added in v1.2.9

func (a *Account) GetFullMockESDTData() (map[string]*MockESDTData, error)

GetFullMockESDTData returns the information about all the ESDT tokens held by the account.

func (*Account) GetNonce

func (a *Account) GetNonce() uint64

GetNonce -

func (*Account) GetOwnerAddress

func (a *Account) GetOwnerAddress() []byte

GetOwnerAddress -

func (*Account) GetRootHash

func (a *Account) GetRootHash() []byte

GetRootHash -

func (*Account) GetTokenBalance added in v1.2.5

func (a *Account) GetTokenBalance(tokenKey []byte) (*big.Int, error)

GetTokenBalance returns the ESDT balance of the account, specified by the token key.

func (*Account) GetTokenBalanceByName added in v1.2.5

func (a *Account) GetTokenBalanceByName(tokenName string) (*big.Int, error)

GetTokenBalanceByName returns the ESDT balance of the account, specified by the token name.

func (*Account) GetTokenBalanceUint64 added in v1.2.10

func (a *Account) GetTokenBalanceUint64(tokenKey []byte) (uint64, error)

GetTokenBalanceUint64 returns the ESDT balance of the account, specified by the token key.

func (*Account) GetTokenData added in v1.2.5

func (a *Account) GetTokenData(tokenKey []byte) (*esdt.ESDigitalToken, error)

GetTokenData gets the ESDT information related to a token from the storage of the account.

func (*Account) GetTokenKeys added in v1.2.5

func (a *Account) GetTokenKeys() [][]byte

GetTokenKeys returns the storage keys of all the ESDT tokens owned by the account.

func (*Account) GetTokenRoles added in v1.2.5

func (a *Account) GetTokenRoles(tokenName []byte) ([][]byte, error)

GetTokenRoles returns the roles of the account for the specified tokenName.

func (*Account) GetUserName

func (a *Account) GetUserName() []byte

GetUserName -

func (*Account) IncreaseNonce added in v1.2.5

func (a *Account) IncreaseNonce(nonce uint64)

IncreaseNonce -

func (*Account) IsInterfaceNil

func (a *Account) IsInterfaceNil() bool

IsInterfaceNil -

func (*Account) RetrieveValue added in v1.2.5

func (a *Account) RetrieveValue(key []byte) ([]byte, error)

RetrieveValue -

func (*Account) SaveKeyValue added in v1.2.5

func (a *Account) SaveKeyValue(key []byte, value []byte) error

SaveKeyValue -

func (*Account) SetBalance added in v1.1.2

func (a *Account) SetBalance(balance int64)

SetBalance -

func (*Account) SetCode added in v1.1.2

func (a *Account) SetCode(code []byte)

SetCode -

func (*Account) SetCodeAndMetadata added in v1.2.5

func (a *Account) SetCodeAndMetadata(code []byte, codeMetadata *vmcommon.CodeMetadata)

SetCodeAndMetadata changes the account code, as well as all fields depending on it: CodeHash, IsSmartContract, CodeMetadata. The code metadata must be given explicitly.

func (*Account) SetCodeHash added in v1.2.5

func (a *Account) SetCodeHash(hash []byte)

SetCodeHash -

func (*Account) SetCodeMetadata added in v1.2.5

func (a *Account) SetCodeMetadata(codeMetadata []byte)

SetCodeMetadata -

func (*Account) SetDataTrie added in v1.2.5

func (a *Account) SetDataTrie(tr data.Trie)

SetDataTrie -

func (*Account) SetLastNonce added in v1.2.9

func (a *Account) SetLastNonce(tokenName []byte, lastNonce uint64) error

SetLastNonce writes the last nonce of a specified ESDT into the storage.

func (*Account) SetLastNonces added in v1.2.5

func (a *Account) SetLastNonces(lastNonces map[string]uint64) error

SetLastNonces writes the last nonces of each specified ESDT into the storage.

func (*Account) SetOwnerAddress added in v1.2.5

func (a *Account) SetOwnerAddress(address []byte)

SetOwnerAddress -

func (*Account) SetRootHash added in v1.2.5

func (a *Account) SetRootHash(hash []byte)

SetRootHash -

func (*Account) SetTokenBalance added in v1.2.5

func (a *Account) SetTokenBalance(tokenKey []byte, balance *big.Int) error

SetTokenBalance sets the ESDT balance of the account, specified by the token key.

func (*Account) SetTokenBalanceUint64 added in v1.2.10

func (a *Account) SetTokenBalanceUint64(tokenKey []byte, balance uint64) error

SetTokenBalanceUint64 sets the ESDT balance of the account, specified by the token key.

func (*Account) SetTokenData added in v1.2.5

func (a *Account) SetTokenData(tokenKey []byte, tokenData *esdt.ESDigitalToken) error

SetTokenData sets the ESDT information related to a token into the storage of the account.

func (*Account) SetTokenRoles added in v1.2.5

func (a *Account) SetTokenRoles(tokenName []byte, roles [][]byte) error

SetTokenRoles sets the specified roles to the account, corresponding to the given tokenName.

func (*Account) SetTokenRolesAsStrings added in v1.2.5

func (a *Account) SetTokenRolesAsStrings(tokenName []byte, rolesAsStrings []string) error

SetTokenRolesAsStrings sets the specified roles to the account, corresponding to the given tokenName.

func (*Account) SetUserName added in v1.2.5

func (a *Account) SetUserName(userName []byte)

SetUserName -

func (*Account) StorageValue

func (a *Account) StorageValue(key string) []byte

StorageValue yields the storage value for key, default 0

func (*Account) SubFromBalance added in v1.2.5

func (a *Account) SubFromBalance(value *big.Int) error

SubFromBalance -

func (*Account) Validate added in v1.3.0

func (a *Account) Validate() error

type AccountMap

type AccountMap map[string]*Account

AccountMap is a map from address to Account, also implementing the AccountsAdapter interface

func NewAccountMap

func NewAccountMap() AccountMap

NewAccountMap creates a new AccountMap instance.

func (AccountMap) Clone added in v1.2.5

func (am AccountMap) Clone() AccountMap

Clone creates a deep clone of the entire AccountMap.

func (AccountMap) CreateAccount added in v1.1.2

func (am AccountMap) CreateAccount(address []byte) *Account

CreateAccount instantiates an empty account for the given address.

func (AccountMap) CreateSmartContractAccount added in v1.1.2

func (am AccountMap) CreateSmartContractAccount(owner []byte, address []byte, code []byte) *Account

CreateSmartContractAccount instantiates an account for a smart contract with the given address and WASM bytecode.

func (AccountMap) DeleteAccount

func (am AccountMap) DeleteAccount(address []byte)

DeleteAccount removes account based on address

func (AccountMap) GetAccount

func (am AccountMap) GetAccount(address []byte) *Account

GetAccount retrieves account based on address

func (AccountMap) LoadAccountStorageFrom added in v1.2.5

func (am AccountMap) LoadAccountStorageFrom(otherAM AccountMap) error

LoadAccountStorageFrom reassigns the storage of the accounts to the storage of the accounts found in otherAM; it only does a reference change, not a deep copy.

func (AccountMap) PutAccount

func (am AccountMap) PutAccount(account *Account)

PutAccount inserts account based on address.

func (AccountMap) PutAccounts

func (am AccountMap) PutAccounts(accounts []*Account)

PutAccounts inserts multiple accounts based on address.

type BlockInfo

type BlockInfo struct {
	BlockTimestamp uint64
	BlockNonce     uint64
	BlockRound     uint64
	BlockEpoch     uint32
	RandomSeed     *[48]byte
}

BlockInfo contains metadata about a mocked block

type BuiltinFunctionsWrapper added in v1.2.5

type BuiltinFunctionsWrapper struct {
	Container       process.BuiltInFunctionContainer
	MapDNSAddresses map[string]struct{}
	World           *MockWorld
	Marshalizer     marshal.Marshalizer
}

BuiltinFunctionsWrapper manages and initializes a BuiltInFunctionContainer along with its dependencies

func NewBuiltinFunctionsWrapper added in v1.2.5

func NewBuiltinFunctionsWrapper(
	world *MockWorld,
	gasMap config.GasScheduleMap,
) (*BuiltinFunctionsWrapper, error)

NewBuiltinFunctionsWrapper creates a new BuiltinFunctionsWrapper with default dependencies.

func (*BuiltinFunctionsWrapper) GetBuiltinFunctionNames added in v1.2.5

func (bf *BuiltinFunctionsWrapper) GetBuiltinFunctionNames() vmcommon.FunctionNames

GetBuiltinFunctionNames returns the list of defined builtin-in functions.

func (*BuiltinFunctionsWrapper) GetTokenBalance added in v1.2.5

func (bf *BuiltinFunctionsWrapper) GetTokenBalance(address []byte, tokenKey []byte) (*big.Int, error)

GetTokenBalance returns the ESDT balance of an account for the given token key (token keys are built from the token identifier using MakeTokenKey).

func (*BuiltinFunctionsWrapper) GetTokenData added in v1.2.5

func (bf *BuiltinFunctionsWrapper) GetTokenData(address []byte, tokenKey []byte) (*esdt.ESDigitalToken, error)

GetTokenData gets the ESDT information related to a token from the storage of an account (token keys are built from the token identifier using MakeTokenKey).

func (*BuiltinFunctionsWrapper) PerformDirectESDTTransfer added in v1.2.5

func (bf *BuiltinFunctionsWrapper) PerformDirectESDTTransfer(
	sender []byte,
	receiver []byte,
	token []byte,
	nonce uint64,
	value *big.Int,
	callType vmcommon.CallType,
	gasLimit uint64,
	gasPrice uint64,
) (uint64, error)

PerformDirectESDTTransfer calls the real ESDTTransfer function immediately; only works for in-shard transfers for now, but it will be expanded to cross-shard. TODO rewrite to simulate what the SCProcessor does when executing a tx with data "ESDTTransfer@token@value@contractfunc@contractargs..." TODO this function duplicates code from host.ExecuteESDTTransfer(), must refactor

func (*BuiltinFunctionsWrapper) ProcessBuiltInFunction added in v1.2.5

func (bf *BuiltinFunctionsWrapper) ProcessBuiltInFunction(input *vmcommon.ContractCallInput) (*vmcommon.VMOutput, error)

ProcessBuiltInFunction delegates the execution of a real builtin function to the inner BuiltInFunctionContainer.

func (*BuiltinFunctionsWrapper) SetTokenBalance added in v1.2.5

func (bf *BuiltinFunctionsWrapper) SetTokenBalance(address []byte, tokenKey []byte, balance *big.Int) error

SetTokenBalance sets the ESDT balance of an account for the given token key (token keys are built from the token identifier using MakeTokenKey).

func (*BuiltinFunctionsWrapper) SetTokenData added in v1.2.5

func (bf *BuiltinFunctionsWrapper) SetTokenData(address []byte, tokenKey []byte, tokenData *esdt.ESDigitalToken) error

SetTokenData sets the ESDT information related to a token from the storage of an account (token keys are built from the token identifier using MakeTokenKey).

type MockAccountsAdapter added in v1.2.5

type MockAccountsAdapter struct {
	World     *MockWorld
	Snapshots []AccountMap
}

MockAccountsAdapter is an implementation of AccountsAdapter based on MockWorld and the accounts within it.

func NewMockAccountsAdapter added in v1.2.5

func NewMockAccountsAdapter(world *MockWorld) *MockAccountsAdapter

NewMockAccountsAdapter instantiates a new MockAccountsAdapter.

func (*MockAccountsAdapter) CancelPrune added in v1.2.5

func (m *MockAccountsAdapter) CancelPrune(_ []byte, _ data.TriePruningIdentifier)

CancelPrune -

func (*MockAccountsAdapter) Commit added in v1.2.5

func (m *MockAccountsAdapter) Commit() ([]byte, error)

Commit -

func (*MockAccountsAdapter) GetAllLeaves added in v1.2.5

func (m *MockAccountsAdapter) GetAllLeaves(_ []byte, _ context.Context) (chan core.KeyValueHolder, error)

GetAllLeaves -

func (*MockAccountsAdapter) GetCode added in v1.2.5

func (m *MockAccountsAdapter) GetCode(codeHash []byte) []byte

GetCode -

func (*MockAccountsAdapter) GetExistingAccount added in v1.2.5

func (m *MockAccountsAdapter) GetExistingAccount(address []byte) (state.AccountHandler, error)

GetExistingAccount -

func (*MockAccountsAdapter) GetNumCheckpoints added in v1.2.5

func (m *MockAccountsAdapter) GetNumCheckpoints() uint32

GetNumCheckpoints -

func (*MockAccountsAdapter) GetTrie added in v1.2.8

func (m *MockAccountsAdapter) GetTrie(_ []byte) (data.Trie, error)

GetTrie -

func (*MockAccountsAdapter) IsInterfaceNil added in v1.2.5

func (m *MockAccountsAdapter) IsInterfaceNil() bool

IsInterfaceNil -

func (*MockAccountsAdapter) IsPruningEnabled added in v1.2.5

func (m *MockAccountsAdapter) IsPruningEnabled() bool

IsPruningEnabled -

func (*MockAccountsAdapter) JournalLen added in v1.2.5

func (m *MockAccountsAdapter) JournalLen() int

JournalLen -

func (*MockAccountsAdapter) LoadAccount added in v1.2.5

func (m *MockAccountsAdapter) LoadAccount(address []byte) (state.AccountHandler, error)

LoadAccount -

func (*MockAccountsAdapter) PruneTrie added in v1.2.5

func (m *MockAccountsAdapter) PruneTrie(_ []byte, _ data.TriePruningIdentifier)

PruneTrie -

func (*MockAccountsAdapter) RecreateAllTries added in v1.2.5

func (m *MockAccountsAdapter) RecreateAllTries(_ []byte, _ context.Context) (map[string]data.Trie, error)

RecreateAllTries -

func (*MockAccountsAdapter) RecreateTrie added in v1.2.5

func (m *MockAccountsAdapter) RecreateTrie(_ []byte) error

RecreateTrie -

func (*MockAccountsAdapter) RemoveAccount added in v1.2.5

func (m *MockAccountsAdapter) RemoveAccount(address []byte) error

RemoveAccount -

func (*MockAccountsAdapter) RevertToSnapshot added in v1.2.5

func (m *MockAccountsAdapter) RevertToSnapshot(snapshotIndex int) error

RevertToSnapshot -

func (*MockAccountsAdapter) RootHash added in v1.2.5

func (m *MockAccountsAdapter) RootHash() ([]byte, error)

RootHash -

func (*MockAccountsAdapter) SaveAccount added in v1.2.5

func (m *MockAccountsAdapter) SaveAccount(account state.AccountHandler) error

SaveAccount -

func (*MockAccountsAdapter) SetStateCheckpoint added in v1.2.5

func (m *MockAccountsAdapter) SetStateCheckpoint(_ []byte, _ context.Context)

SetStateCheckpoint -

func (*MockAccountsAdapter) SnapshotState added in v1.2.5

func (m *MockAccountsAdapter) SnapshotState(_ []byte, _ context.Context)

SnapshotState -

type MockESDTData added in v1.2.9

type MockESDTData struct {
	TokenIdentifier []byte
	Instances       []*esdt.ESDigitalToken
	LastNonce       uint64
	Roles           [][]byte
}

MockESDTData groups together all instances of a token (same token name, different nonces).

type MockWorld

type MockWorld struct {
	SelfShardID                uint32
	AcctMap                    AccountMap
	AccountsAdapter            state.AccountsAdapter
	PreviousBlockInfo          *BlockInfo
	CurrentBlockInfo           *BlockInfo
	Blockhashes                [][]byte
	NewAddressMocks            []*NewAddressMock
	StateRootHash              []byte
	Err                        error
	LastCreatedContractAddress []byte
	CompiledCode               map[string][]byte
	BuiltinFuncs               *BuiltinFunctionsWrapper
}

MockWorld provides a mock representation of the blockchain to be used in VM tests.

func NewMockWorld

func NewMockWorld() *MockWorld

NewMockWorld creates a new MockWorld instance

func (*MockWorld) Clear

func (b *MockWorld) Clear()

Clear resets all mock data between tests.

func (*MockWorld) ClearCompiledCodes

func (b *MockWorld) ClearCompiledCodes()

ClearCompiledCodes -

func (*MockWorld) CommitChanges added in v1.2.5

func (b *MockWorld) CommitChanges() error

CommitChanges -

func (*MockWorld) CommunicationIdentifier added in v1.2.5

func (b *MockWorld) CommunicationIdentifier(destShardID uint32) string

CommunicationIdentifier -

func (*MockWorld) ComputeId added in v1.2.5

func (b *MockWorld) ComputeId(address []byte) uint32

ComputeId -

func (*MockWorld) CreateStateBackup added in v1.2.5

func (b *MockWorld) CreateStateBackup()

CreateStateBackup -

func (*MockWorld) CurrentEpoch

func (b *MockWorld) CurrentEpoch() uint32

CurrentEpoch returns the current epoch

func (*MockWorld) CurrentNonce

func (b *MockWorld) CurrentNonce() uint64

CurrentNonce returns the nonce from the current block

func (*MockWorld) CurrentRandomSeed

func (b *MockWorld) CurrentRandomSeed() []byte

CurrentRandomSeed returns the random seed from the current header

func (*MockWorld) CurrentRound

func (b *MockWorld) CurrentRound() uint64

CurrentRound returns the round from the current block

func (*MockWorld) CurrentTimeStamp

func (b *MockWorld) CurrentTimeStamp() uint64

CurrentTimeStamp return the timestamp from the current block

func (*MockWorld) GetAllState

func (b *MockWorld) GetAllState(accountAddress []byte) (map[string][]byte, error)

GetAllState simply returns the storage as-is.

func (*MockWorld) GetBlockhash

func (b *MockWorld) GetBlockhash(nonce uint64) ([]byte, error)

GetBlockhash should return the hash of the nth previous blockchain. Offset specifies how many blocks we need to look back.

func (*MockWorld) GetBuiltinFunctionNames

func (b *MockWorld) GetBuiltinFunctionNames() vmcommon.FunctionNames

GetBuiltinFunctionNames -

func (*MockWorld) GetCode added in v1.0.2

func (b *MockWorld) GetCode(acc vmcommon.UserAccountHandler) []byte

GetCode retrieves the code from the given account, or nil if not found

func (*MockWorld) GetCompiledCode

func (b *MockWorld) GetCompiledCode(codeHash []byte) (bool, []byte)

GetCompiledCode -

func (*MockWorld) GetESDTToken added in v1.2.0

func (b *MockWorld) GetESDTToken(address []byte, tokenName []byte, nonce uint64) (*esdt.ESDigitalToken, error)

GetESDTToken -

func (*MockWorld) GetShardOfAddress

func (b *MockWorld) GetShardOfAddress(address []byte) uint32

GetShardOfAddress -

func (*MockWorld) GetStateRootHash

func (b *MockWorld) GetStateRootHash() []byte

GetStateRootHash returns the state root hash from the last committed block

func (*MockWorld) GetStorageData

func (b *MockWorld) GetStorageData(accountAddress []byte, key []byte) ([]byte, error)

GetStorageData yields the storage value for a certain account and storage key. Should return an empty byte array if the key is missing from the account storage

func (*MockWorld) GetUserAccount

func (b *MockWorld) GetUserAccount(address []byte) (vmcommon.UserAccountHandler, error)

GetUserAccount retrieves account info from map, or error if not found.

func (*MockWorld) InitBuiltinFunctions added in v1.2.5

func (b *MockWorld) InitBuiltinFunctions(gasMap config.GasScheduleMap) error

InitBuiltinFunctions initializes the inner BuiltinFunctionsWrapper, required for calling builtin functions.

func (*MockWorld) IsInterfaceNil

func (b *MockWorld) IsInterfaceNil() bool

IsInterfaceNil returns true if underlying implementation is nil

func (*MockWorld) IsPayable

func (b *MockWorld) IsPayable(address []byte) (bool, error)

IsPayable -

func (*MockWorld) IsSmartContract

func (b *MockWorld) IsSmartContract(address []byte) bool

IsSmartContract -

func (*MockWorld) LastEpoch

func (b *MockWorld) LastEpoch() uint32

LastEpoch returns the epoch from the last committed block

func (*MockWorld) LastNonce

func (b *MockWorld) LastNonce() uint64

LastNonce returns the nonce from from the last committed block

func (*MockWorld) LastRandomSeed

func (b *MockWorld) LastRandomSeed() []byte

LastRandomSeed returns the random seed from the last committed block

func (*MockWorld) LastRound

func (b *MockWorld) LastRound() uint64

LastRound returns the round from the last committed block

func (*MockWorld) LastTimeStamp

func (b *MockWorld) LastTimeStamp() uint64

LastTimeStamp returns the timeStamp from the last committed block

func (*MockWorld) NewAddress

func (b *MockWorld) NewAddress(creatorAddress []byte, creatorNonce uint64, _ []byte) ([]byte, error)

NewAddress provides the address for a new account. It looks up the explicit new address mocks, if none found generates one using a fake but realistic algorithm.

func (*MockWorld) NumberOfShards added in v1.2.5

func (b *MockWorld) NumberOfShards() uint32

NumberOfShards -

func (*MockWorld) ProcessBuiltInFunction

func (b *MockWorld) ProcessBuiltInFunction(input *vmcommon.ContractCallInput) (*vmcommon.VMOutput, error)

ProcessBuiltInFunction -

func (*MockWorld) RollbackChanges

func (b *MockWorld) RollbackChanges() error

RollbackChanges should be called after the VM test has run, if the tx has failed

func (*MockWorld) SameShard added in v1.2.5

func (b *MockWorld) SameShard(firstAddress []byte, secondAddress []byte) bool

SameShard -

func (*MockWorld) SaveCompiledCode

func (b *MockWorld) SaveCompiledCode(codeHash []byte, code []byte)

SaveCompiledCode -

func (*MockWorld) SelfId added in v1.2.5

func (b *MockWorld) SelfId() uint32

SelfId -

func (*MockWorld) SetCurrentBlockHash

func (b *MockWorld) SetCurrentBlockHash(blockHash []byte)

SetCurrentBlockHash -

func (*MockWorld) UpdateAccountFromOutputAccount added in v1.1.2

func (b *MockWorld) UpdateAccountFromOutputAccount(modAcct *vmcommon.OutputAccount)

UpdateAccountFromOutputAccount updates a single account from a transaction output.

func (*MockWorld) UpdateAccounts

func (b *MockWorld) UpdateAccounts(
	outputAccounts map[string]*vmcommon.OutputAccount,
	accountsToDelete [][]byte) error

UpdateAccounts should be called after the VM test has run, to update world state

func (*MockWorld) UpdateBalance

func (b *MockWorld) UpdateBalance(address []byte, newBalance *big.Int) error

UpdateBalance sets a new balance to an account

func (*MockWorld) UpdateBalanceWithDelta

func (b *MockWorld) UpdateBalanceWithDelta(address []byte, balanceDelta *big.Int) error

UpdateBalanceWithDelta changes balance of an account by a given amount

func (*MockWorld) UpdateWorldStateBefore

func (b *MockWorld) UpdateWorldStateBefore(
	fromAddr []byte,
	gasLimit uint64,
	gasPrice uint64) error

UpdateWorldStateBefore performs gas payment, before transaction

type NewAddressMock

type NewAddressMock struct {
	CreatorAddress []byte
	CreatorNonce   uint64
	NewAddress     []byte
}

NewAddressMock allows tests to specify what new addresses to generate

Jump to

Keyboard shortcuts

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