Versions in this module Expand all Collapse all v0 v0.0.2 Mar 22, 2024 v0.0.1 Mar 22, 2024 Changes in this version + const SCAddressNumLeadingZeros + var DefaultHasher = blake2b.NewBlake2b() + var DefaultVMType = []byte + var ErrBuiltinFuncWrapperNotInitialized = errors.New("builtin function not found or container not initialized") + var ErrInsufficientFunds = errors.New("insufficient funds") + var ErrInvalidAccount = errors.New("account does not exist") + var ErrInvalidAddressLength = errors.New("invalid address length") + var ErrNilWorldMock = errors.New("nil worldmock") + var ErrOperationNotPermitted = errors.New("operation not permitted") + var ErrTrieHandlingNotImplemented = errors.New("trie handling not implemented") + var WorldMarshalizer = &marshal.GogoProtoMarshalizer + func GenerateMockAddress(vmType []byte, creatorAddress []byte, creatorNonce uint64) []byte + func IsSmartContractAddress(address []byte) bool + type Account struct + Address []byte + AsyncCallData string + Balance *big.Int + BalanceDelta *big.Int + Code []byte + CodeHash []byte + CodeMetadata []byte + DeveloperReward *big.Int + Exists bool + IsSmartContract bool + MockWorld *MockWorld + Nonce uint64 + OwnerAddress []byte + RootHash []byte + ShardID uint32 + Storage map[string][]byte + Username []byte + func (a *Account) AccountDataHandler() vmcommon.AccountDataHandler + func (a *Account) AddToBalance(value *big.Int) error + func (a *Account) AddToDeveloperReward(value *big.Int) + func (a *Account) AddressBytes() []byte + func (a *Account) ChangeOwnerAddress(sender []byte, newAddress []byte) error + func (a *Account) ClaimDeveloperRewards(sender []byte) (*big.Int, error) + func (a *Account) ClearDataCaches() + func (a *Account) Clone() *Account + func (a *Account) DirtyData() map[string][]byte + func (a *Account) GetBalance() *big.Int + func (a *Account) GetCode() []byte + func (a *Account) GetCodeHash() []byte + func (a *Account) GetCodeMetadata() []byte + func (a *Account) GetDeveloperReward() *big.Int + func (a *Account) GetNonce() uint64 + func (a *Account) GetOwnerAddress() []byte + func (a *Account) GetRootHash() []byte + func (a *Account) GetTokenBalance(tokenIdentifier []byte, nonce uint64) (*big.Int, error) + func (a *Account) GetTokenBalanceUint64(tokenIdentifier []byte, nonce uint64) (uint64, error) + func (a *Account) GetTokenData(tokenIdentifier []byte, nonce uint64, systemAccStorage map[string][]byte) (*dct.DCToken, error) + func (a *Account) GetUserName() []byte + func (a *Account) IncreaseNonce(nonce uint64) + func (a *Account) IsInterfaceNil() bool + func (a *Account) MigrateDataTrieLeaves(_ vmcommon.ArgsMigrateDataTrieLeaves) error + func (a *Account) RetrieveValue(key []byte) ([]byte, uint32, error) + func (a *Account) SaveKeyValue(key []byte, value []byte) error + func (a *Account) SetBalance(balance int64) + func (a *Account) SetCode(code []byte) + func (a *Account) SetCodeAndMetadata(code []byte, codeMetadata *vmcommon.CodeMetadata) + func (a *Account) SetCodeHash(hash []byte) + func (a *Account) SetCodeMetadata(codeMetadata []byte) + func (a *Account) SetOwnerAddress(address []byte) + func (a *Account) SetRootHash(hash []byte) + func (a *Account) SetTokenBalance(tokenIdentifier []byte, nonce uint64, balance *big.Int) error + func (a *Account) SetTokenBalanceUint64(tokenIdentifier []byte, nonce uint64, balance uint64) error + func (a *Account) SetTokenData(tokenIdentifier []byte, nonce uint64, tokenData *dct.DCToken) error + func (a *Account) SetTokenRolesAsStrings(tokenIdentifier []byte, rolesAsStrings []string) error + func (a *Account) SetUserName(userName []byte) + func (a *Account) StorageValue(key string) []byte + func (a *Account) SubFromBalance(value *big.Int) error + func (a *Account) Validate() error + type AccountMap map[string]*Account + func NewAccountMap() AccountMap + func (am AccountMap) Clone() AccountMap + func (am AccountMap) CreateAccount(address []byte, world *MockWorld) *Account + func (am AccountMap) CreateSmartContractAccount(owner []byte, address []byte, code []byte, world *MockWorld) *Account + func (am AccountMap) CreateSmartContractAccountWithCodeHash(owner []byte, address []byte, code []byte, codeHash []byte, world *MockWorld) *Account + func (am AccountMap) DeleteAccount(address []byte) + func (am AccountMap) GetAccount(address []byte) *Account + func (am AccountMap) LoadAccountStorageFrom(otherAM AccountMap) error + func (am AccountMap) PutAccount(account *Account) + func (am AccountMap) PutAccounts(accounts []*Account) + type BlockInfo struct + BlockEpoch uint32 + BlockNonce uint64 + BlockRound uint64 + BlockTimestamp uint64 + RandomSeed *[48]byte + func (bi *BlockInfo) GetRandomSeedSlice() []byte + type BuiltinFunctionsWrapper struct + Container vmcommon.BuiltInFunctionContainer + MapDNSAddresses map[string]struct{} + Marshalizer vmcommon.Marshalizer + World *MockWorld + func NewBuiltinFunctionsWrapper(world *MockWorld, gasMap GasScheduleMap) (*BuiltinFunctionsWrapper, error) + func (bf *BuiltinFunctionsWrapper) GetBuiltinFunctionNames() vmcommon.FunctionNames + func (bf *BuiltinFunctionsWrapper) GetTokenBalance(address []byte, tokenIdentifier []byte, nonce uint64) (*big.Int, error) + func (bf *BuiltinFunctionsWrapper) GetTokenData(address []byte, tokenIdentifier []byte, nonce uint64) (*dct.DCToken, error) + func (bf *BuiltinFunctionsWrapper) PerformDirectDCTTransfer(sender []byte, receiver []byte, token []byte, nonce uint64, value *big.Int, ...) (uint64, error) + func (bf *BuiltinFunctionsWrapper) PerformDirectMultiDCTTransfer(sender []byte, receiver []byte, dctTransfers []*scenmodel.DCTTxData, ...) (uint64, error) + func (bf *BuiltinFunctionsWrapper) ProcessBuiltInFunction(input *vmcommon.ContractCallInput) (*vmcommon.VMOutput, error) + func (bf *BuiltinFunctionsWrapper) SetTokenData(address []byte, tokenIdentifier []byte, nonce uint64, tokenData *dct.DCToken) error + type EnableEpochsHandlerStub struct + CheckExecuteReadOnlyEnableEpochField uint32 + CreateNFTThroughExecByCallerEnableEpochField uint32 + DisableExecByCallerEnableEpochField uint32 + FixFailExecutionOnErrorEnableEpochField uint32 + FixGasRemainingForSaveKeyValueBuiltinFunctionEnabledField bool + FixOOGReturnCodeEnableEpochField uint32 + IsAheadOfTimeGasUsageFlagEnabledField bool + IsAlwaysSaveTokenMetaDataEnabledField bool + IsAutoBalanceDataTriesEnabledField bool + IsBuiltInFunctionsFlagEnabledField bool + IsChangeOwnerAddressCrossShardThroughSCField bool + IsChangeUsernameEnabledField bool + IsCheckCorrectTokenIDForTransferRoleFlagEnabledField bool + IsCheckExecuteOnReadOnlyFlagEnabledField bool + IsCheckFrozenCollectionFlagEnabledField bool + IsCheckFunctionArgumentFlagEnabledField bool + IsCheckTransferFlagEnabledField bool + IsConsistentTokensValuesLengthCheckEnabledField bool + IsCreateNFTThroughExecByCallerFlagEnabledField bool + IsDCTNFTImprovementV1FlagEnabledField bool + IsDCTTransferRoleFlagEnabledField bool + IsDisableExecByCallerFlagEnabledField bool + IsDynamicGasCostForDataTrieStorageLoadEnabledField bool + IsFailExecutionOnEveryAPIErrorFlagEnabledField bool + IsFixAsyncCallbackCheckFlagEnabledField bool + IsFixOOGReturnCodeFlagEnabledField bool + IsFixOldTokenLiquidityEnabledField bool + IsGlobalMintBurnFlagEnabledField bool + IsGuardAccountEnabledField bool + IsManagedCryptoAPIsFlagEnabledField bool + IsMaxBlockchainHookCountersFlagEnabledField bool + IsMigrateDataTrieEnabledField bool + IsMultiDCTTransferFixOnCallBackFlagEnabledField bool + IsRefactorContextFlagEnabledField bool + IsRemoveNonUpdatedStorageFlagEnabledField bool + IsRepairCallbackFlagEnabledField bool + IsRuntimeCodeSizeFixEnabledField bool + IsRuntimeMemStoreLimitEnabledField bool + IsSCDeployFlagEnabledField bool + IsSaveToSystemAccountFlagEnabledField bool + IsSendAlwaysFlagEnabledField bool + IsSetGuardianEnabledField bool + IsStorageAPICostOptimizationFlagEnabledField bool + IsTransferToMetaFlagEnabledField bool + IsValueLengthCheckFlagEnabledField bool + IsWipeSingleNFTLiquidityDecreaseEnabledField bool + ManagedCryptoAPIEnableEpochField uint32 + MultiDCTTransferAsyncCallBackEnableEpochField uint32 + RefactorContextEnableEpochField uint32 + RemoveNonUpdatedStorageEnableEpochField uint32 + ScToScLogEventEnabledField bool + StorageAPICostOptimizationEnableEpochField uint32 + func EnableEpochsHandlerStubAllFlags() *EnableEpochsHandlerStub + func EnableEpochsHandlerStubNoFlags() *EnableEpochsHandlerStub + func (stub *EnableEpochsHandlerStub) CheckExecuteReadOnlyEnableEpoch() uint32 + func (stub *EnableEpochsHandlerStub) CreateNFTThroughExecByCallerEnableEpoch() uint32 + func (stub *EnableEpochsHandlerStub) DisableExecByCallerEnableEpoch() uint32 + func (stub *EnableEpochsHandlerStub) FixFailExecutionOnErrorEnableEpoch() uint32 + func (stub *EnableEpochsHandlerStub) FixGasRemainingForSaveKeyValueBuiltinFunctionEnabled() bool + func (stub *EnableEpochsHandlerStub) FixOOGReturnCodeEnableEpoch() uint32 + func (stub *EnableEpochsHandlerStub) IsAheadOfTimeGasUsageFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsAlwaysSaveTokenMetaDataEnabled() bool + func (stub *EnableEpochsHandlerStub) IsAutoBalanceDataTriesEnabled() bool + func (stub *EnableEpochsHandlerStub) IsBuiltInFunctionsFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsChangeOwnerAddressCrossShardThroughSCEnabled() bool + func (stub *EnableEpochsHandlerStub) IsChangeUsernameEnabled() bool + func (stub *EnableEpochsHandlerStub) IsCheckCorrectTokenIDForTransferRoleFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsCheckExecuteOnReadOnlyFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsCheckFrozenCollectionFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsCheckFunctionArgumentFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsCheckTransferFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsConsistentTokensValuesLengthCheckEnabled() bool + func (stub *EnableEpochsHandlerStub) IsCreateNFTThroughExecByCallerFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsDCTNFTImprovementV1FlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsDCTTransferRoleFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsDisableExecByCallerFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsDynamicGasCostForDataTrieStorageLoadEnabled() bool + func (stub *EnableEpochsHandlerStub) IsFailExecutionOnEveryAPIErrorFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsFixAsyncCallbackCheckFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsFixOOGReturnCodeFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsFixOldTokenLiquidityEnabled() bool + func (stub *EnableEpochsHandlerStub) IsGlobalMintBurnFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsGuardAccountEnabled() bool + func (stub *EnableEpochsHandlerStub) IsInterfaceNil() bool + func (stub *EnableEpochsHandlerStub) IsManagedCryptoAPIsFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsMaxBlockchainHookCountersFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsMigrateDataTrieEnabled() bool + func (stub *EnableEpochsHandlerStub) IsMultiDCTTransferFixOnCallBackFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsRefactorContextFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsRemoveNonUpdatedStorageFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsRepairCallbackFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsRuntimeCodeSizeFixEnabled() bool + func (stub *EnableEpochsHandlerStub) IsRuntimeMemStoreLimitEnabled() bool + func (stub *EnableEpochsHandlerStub) IsSCDeployFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsSaveToSystemAccountFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsScToScEventLogEnabled() bool + func (stub *EnableEpochsHandlerStub) IsSendAlwaysFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsSetGuardianEnabled() bool + func (stub *EnableEpochsHandlerStub) IsStorageAPICostOptimizationFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsTransferToMetaFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsValueLengthCheckFlagEnabled() bool + func (stub *EnableEpochsHandlerStub) IsWipeSingleNFTLiquidityDecreaseEnabled() bool + func (stub *EnableEpochsHandlerStub) ManagedCryptoAPIEnableEpoch() uint32 + func (stub *EnableEpochsHandlerStub) MultiDCTTransferAsyncCallBackEnableEpoch() uint32 + func (stub *EnableEpochsHandlerStub) RefactorContextEnableEpoch() uint32 + func (stub *EnableEpochsHandlerStub) RemoveNonUpdatedStorageEnableEpoch() uint32 + func (stub *EnableEpochsHandlerStub) StorageAPICostOptimizationEnableEpoch() uint32 + type GasScheduleMap = map[string]map[string]uint64 + type GuardedAccountHandlerStub struct + CleanOtherThanActiveCalled func(uah vmcommon.UserAccountHandler) + GetActiveGuardianCalled func(handler vmcommon.UserAccountHandler) ([]byte, error) + SetGuardianCalled func(uah vmcommon.UserAccountHandler, guardianAddress []byte, ...) error + func (gahs *GuardedAccountHandlerStub) CleanOtherThanActive(uah vmcommon.UserAccountHandler) + func (gahs *GuardedAccountHandlerStub) GetActiveGuardian(handler vmcommon.UserAccountHandler) ([]byte, error) + func (gahs *GuardedAccountHandlerStub) IsInterfaceNil() bool + func (gahs *GuardedAccountHandlerStub) SetGuardian(uah vmcommon.UserAccountHandler, guardianAddress []byte, ...) error + type MockAccountsAdapter struct + Snapshots []AccountMap + World *MockWorld + func NewMockAccountsAdapter(world *MockWorld) *MockAccountsAdapter + func (m *MockAccountsAdapter) Commit() ([]byte, error) + func (m *MockAccountsAdapter) GetCode(codeHash []byte) []byte + func (m *MockAccountsAdapter) GetExistingAccount(address []byte) (vmcommon.AccountHandler, error) + func (m *MockAccountsAdapter) GetNumCheckpoints() uint32 + func (m *MockAccountsAdapter) IsInterfaceNil() bool + func (m *MockAccountsAdapter) IsPruningEnabled() bool + func (m *MockAccountsAdapter) JournalLen() int + func (m *MockAccountsAdapter) LoadAccount(address []byte) (vmcommon.AccountHandler, error) + func (m *MockAccountsAdapter) RecreateTrie(_ []byte) error + func (m *MockAccountsAdapter) RemoveAccount(address []byte) error + func (m *MockAccountsAdapter) RevertToSnapshot(snapshotIndex int) error + func (m *MockAccountsAdapter) RootHash() ([]byte, error) + func (m *MockAccountsAdapter) SaveAccount(account vmcommon.AccountHandler) error + func (m *MockAccountsAdapter) SetStateCheckpoint(_ []byte, _ context.Context) + func (m *MockAccountsAdapter) SnapshotState(_ []byte, _ context.Context) + type MockGuardedAccountHandler struct + func NewMockGuardedAccountHandler() *MockGuardedAccountHandler + func (mah *MockGuardedAccountHandler) CleanOtherThanActive(_ vmcommon.UserAccountHandler) + func (mah *MockGuardedAccountHandler) GetActiveGuardian(_ vmcommon.UserAccountHandler) ([]byte, error) + func (mah *MockGuardedAccountHandler) IsInterfaceNil() bool + func (mah *MockGuardedAccountHandler) SetGuardian(_ vmcommon.UserAccountHandler, _ []byte, _ []byte, _ []byte) error + type MockWorld struct + AccountsAdapter vmcommon.AccountsAdapter + AcctMap AccountMap + Blockhashes [][]byte + BuiltinFuncs *BuiltinFunctionsWrapper + CompiledCode map[string][]byte + CurrentBlockInfo *BlockInfo + EnableEpochsHandler vmcommon.EnableEpochsHandler + Err error + GuardedAccountHandler vmcommon.GuardedAccountHandler + IsLimitedTransferValue bool + IsPausedValue bool + LastCreatedContractAddress []byte + NewAddressMocks []*NewAddressMock + OtherVMOutputMap map[string]*vmcommon.VMOutput + PreviousBlockInfo *BlockInfo + ProvidedBlockchainHook vmcommon.BlockchainHook + SelfShardID uint32 + StateRootHash []byte + VMType []byte + func NewMockWorld() *MockWorld + func (b *MockWorld) Clear() + func (b *MockWorld) ClearCompiledCodes() + func (b *MockWorld) CommitChanges() error + func (b *MockWorld) CommunicationIdentifier(destShardID uint32) string + func (b *MockWorld) ComputeId(address []byte) uint32 + func (b *MockWorld) CreateStateBackup() + func (b *MockWorld) CurrentEpoch() uint32 + func (b *MockWorld) CurrentNonce() uint64 + func (b *MockWorld) CurrentRandomSeed() []byte + func (b *MockWorld) CurrentRound() uint64 + func (b *MockWorld) CurrentTimeStamp() uint64 + func (b *MockWorld) ExecuteSmartContractCallOnOtherVM(input *vmcommon.ContractCallInput) (*vmcommon.VMOutput, error) + func (b *MockWorld) GetAllState(accountAddress []byte) (map[string][]byte, error) + func (b *MockWorld) GetBlockhash(nonce uint64) ([]byte, error) + func (b *MockWorld) GetBuiltinFunctionNames() vmcommon.FunctionNames + func (b *MockWorld) GetCode(acc vmcommon.UserAccountHandler) []byte + func (b *MockWorld) GetCompiledCode(codeHash []byte) (bool, []byte) + func (b *MockWorld) GetDCTToken(address []byte, tokenIdentifier []byte, nonce uint64) (*dct.DCToken, error) + func (b *MockWorld) GetShardOfAddress(address []byte) uint32 + func (b *MockWorld) GetSnapshot() int + func (b *MockWorld) GetStateRootHash() []byte + func (b *MockWorld) GetStorageData(accountAddress []byte, key []byte) ([]byte, uint32, error) + func (b *MockWorld) GetUserAccount(address []byte) (vmcommon.UserAccountHandler, error) + func (b *MockWorld) InitBuiltinFunctions(gasMap GasScheduleMap) error + func (b *MockWorld) IsInterfaceNil() bool + func (b *MockWorld) IsLimitedTransfer(_ []byte) bool + func (b *MockWorld) IsPaused(_ []byte) bool + func (b *MockWorld) IsPayable(sndAddress []byte, rcvAddress []byte) (bool, error) + func (b *MockWorld) IsSmartContract(address []byte) bool + func (b *MockWorld) LastEpoch() uint32 + func (b *MockWorld) LastNonce() uint64 + func (b *MockWorld) LastRandomSeed() []byte + func (b *MockWorld) LastRound() uint64 + func (b *MockWorld) LastTimeStamp() uint64 + func (b *MockWorld) NewAddress(creatorAddress []byte, creatorNonce uint64, _ []byte) ([]byte, error) + func (b *MockWorld) NumberOfShards() uint32 + func (b *MockWorld) ProcessBuiltInFunction(input *vmcommon.ContractCallInput) (*vmcommon.VMOutput, error) + func (b *MockWorld) RevertToSnapshot(snapshot int) error + func (b *MockWorld) RollbackChanges() error + func (b *MockWorld) SameShard(firstAddress []byte, secondAddress []byte) bool + func (b *MockWorld) SaveCompiledCode(codeHash []byte, code []byte) + func (b *MockWorld) SelfId() uint32 + func (b *MockWorld) SetCurrentBlockHash(blockHash []byte) + func (b *MockWorld) SetProvidedBlockchainHook(bh vmcommon.BlockchainHook) + func (b *MockWorld) UpdateAccountFromOutputAccount(modAcct *vmcommon.OutputAccount) + func (b *MockWorld) UpdateAccounts(outputAccounts map[string]*vmcommon.OutputAccount, accountsToDelete [][]byte) error + func (b *MockWorld) UpdateBalance(address []byte, newBalance *big.Int) error + func (b *MockWorld) UpdateBalanceWithDelta(address []byte, balanceDelta *big.Int) error + func (b *MockWorld) UpdateWorldStateBefore(fromAddr []byte, gasLimit uint64, gasPrice uint64) error + type NewAddressMock struct + CreatorAddress []byte + CreatorNonce uint64 + NewAddress []byte