Documentation
¶
Index ¶
- Constants
- func NewArgumentParser() *argumentParser
- func NewScQueryServiceDispatcher(list []process.SCQueryService) (*scQueryServiceDispatcher, error)
- func NewSmartContractProcessor(args scrCommon.ArgsNewSmartContractProcessor) (*scProcessor, error)
- type ArgsNewSCQueryService
- type ArgsNewSmartContractProcessor
- type SCQueryService
- func (service *SCQueryService) Close() error
- func (service *SCQueryService) ComputeScCallGasLimit(tx *transaction.Transaction) (uint64, error)
- func (service *SCQueryService) ExecuteQuery(query *process.SCQuery) (*vmcommon.VMOutput, common.BlockInfo, error)
- func (service *SCQueryService) IsInterfaceNil() bool
- type TestScProcessor
- func (sc TestScProcessor) CheckBuiltinFunctionIsExecutable(expectedBuiltinFunction string, tx data.TransactionHandler) error
- func (tsp *TestScProcessor) CleanGasRefunded()
- func (sc TestScProcessor) DeploySmartContract(tx data.TransactionHandler, acntSnd state.UserAccountHandler) (vmcommon.ReturnCode, error)
- func (sc TestScProcessor) ExecuteBuiltInFunction(tx data.TransactionHandler, acntSnd, acntDst state.UserAccountHandler) (vmcommon.ReturnCode, error)
- func (sc TestScProcessor) ExecuteSmartContractTransaction(tx data.TransactionHandler, acntSnd, acntDst state.UserAccountHandler) (vmcommon.ReturnCode, error)
- func (sc TestScProcessor) GasScheduleChange(gasSchedule map[string]map[string]uint64)
- func (tsp *TestScProcessor) GetAllSCRs() []data.TransactionHandler
- func (tsp *TestScProcessor) GetCompositeTestError() error
- func (tsp *TestScProcessor) GetGasRemaining() uint64
- func (sc TestScProcessor) IsInterfaceNil() bool
- func (sc TestScProcessor) IsPayable(sndAddress []byte, recvAddress []byte) (bool, error)
- func (sc TestScProcessor) ProcessIfError(acntSnd state.UserAccountHandler, txHash []byte, tx data.TransactionHandler, ...) error
- func (sc TestScProcessor) ProcessSmartContractResult(scr *smartContractResult.SmartContractResult) (vmcommon.ReturnCode, error)
Constants ¶
const MaxGasLimitPerQuery = 300_000_000_000
MaxGasLimitPerQuery - each unit is the equivalent of 1 nanosecond processing time
const (
// TooMuchGasProvidedMessage is the message for the too much gas provided error
TooMuchGasProvidedMessage = "too much gas provided"
)
Variables ¶
This section is empty.
Functions ¶
func NewArgumentParser ¶
func NewArgumentParser() *argumentParser
NewArgumentParser creates a full argument parser component
func NewScQueryServiceDispatcher ¶
func NewScQueryServiceDispatcher(list []process.SCQueryService) (*scQueryServiceDispatcher, error)
NewScQueryServiceDispatcher returns a smart contract query service dispatcher that for each function call will forward the request towards the provided list in a round-robin fashion
func NewSmartContractProcessor ¶
func NewSmartContractProcessor(args scrCommon.ArgsNewSmartContractProcessor) (*scProcessor, error)
NewSmartContractProcessor creates a smart contract processor that creates and interprets VM data
Types ¶
type ArgsNewSCQueryService ¶
type ArgsNewSCQueryService struct {
VmContainer process.VirtualMachinesContainer
EconomicsFee process.FeeHandler
BlockChainHook process.BlockChainHookWithAccountsAdapter
MainBlockChain data.ChainHandler
APIBlockChain data.ChainHandler
WasmVMChangeLocker common.Locker
Bootstrapper process.Bootstrapper
AllowExternalQueriesChan chan struct{}
MaxGasLimitPerQuery uint64
HistoryRepository dblookupext.HistoryRepository
ShardCoordinator sharding.Coordinator
StorageService dataRetriever.StorageService
Marshaller marshal.Marshalizer
Hasher hashing.Hasher
Uint64ByteSliceConverter typeConverters.Uint64ByteSliceConverter
IsInHistoricalBalancesMode bool
}
ArgsNewSCQueryService defines the arguments needed for the sc query service
type ArgsNewSmartContractProcessor ¶
type ArgsNewSmartContractProcessor struct {
VmContainer process.VirtualMachinesContainer
ArgsParser process.ArgumentsParser
Hasher hashing.Hasher
Marshalizer marshal.Marshalizer
AccountsDB state.AccountsAdapter
BlockChainHook process.BlockChainHookHandler
BuiltInFunctions vmcommon.BuiltInFunctionContainer
PubkeyConv core.PubkeyConverter
ShardCoordinator sharding.Coordinator
ScrForwarder process.IntermediateTransactionHandler
TxFeeHandler process.TransactionFeeHandler
EconomicsFee process.FeeHandler
TxTypeHandler process.TxTypeHandler
GasHandler process.GasHandler
GasSchedule core.GasScheduleNotifier
TxLogsProcessor process.TransactionLogProcessor
EnableEpochsHandler common.EnableEpochsHandler
BadTxForwarder process.IntermediateTransactionHandler
VMOutputCacher storage.Cacher
WasmVMChangeLocker common.Locker
IsGenesisProcessing bool
}
ArgsNewSmartContractProcessor defines the arguments needed for new smart contract processor
type SCQueryService ¶
type SCQueryService struct {
// contains filtered or unexported fields
}
SCQueryService can execute Get functions over SC to fetch stored values
func NewSCQueryService ¶
func NewSCQueryService( args ArgsNewSCQueryService, ) (*SCQueryService, error)
NewSCQueryService returns a new instance of SCQueryService
func (*SCQueryService) Close ¶
func (service *SCQueryService) Close() error
Close closes all underlying components
func (*SCQueryService) ComputeScCallGasLimit ¶
func (service *SCQueryService) ComputeScCallGasLimit(tx *transaction.Transaction) (uint64, error)
ComputeScCallGasLimit will estimate how many gas a transaction will consume
func (*SCQueryService) ExecuteQuery ¶
func (service *SCQueryService) ExecuteQuery(query *process.SCQuery) (*vmcommon.VMOutput, common.BlockInfo, error)
ExecuteQuery returns the VMOutput resulted upon running the function on the smart contract
func (*SCQueryService) IsInterfaceNil ¶
func (service *SCQueryService) IsInterfaceNil() bool
IsInterfaceNil returns true if there is no value under the interface
type TestScProcessor ¶
type TestScProcessor struct {
// contains filtered or unexported fields
}
TestScProcessor extends scProcessor and is used in tests as it exposes some functions that are not supposed to be used in production code Exported functions simplify the reproduction of edge cases
func NewTestScProcessor ¶
func NewTestScProcessor(internalData *scProcessor) *TestScProcessor
NewTestScProcessor -
func (TestScProcessor) CheckBuiltinFunctionIsExecutable ¶ added in v1.5.3
func (sc TestScProcessor) CheckBuiltinFunctionIsExecutable(expectedBuiltinFunction string, tx data.TransactionHandler) error
CheckBuiltinFunctionIsExecutable validates the builtin function arguments and tx fields without executing it
func (*TestScProcessor) CleanGasRefunded ¶
func (tsp *TestScProcessor) CleanGasRefunded()
CleanGasRefunded cleans the gas computation handler
func (TestScProcessor) DeploySmartContract ¶
func (sc TestScProcessor) DeploySmartContract(tx data.TransactionHandler, acntSnd state.UserAccountHandler) (vmcommon.ReturnCode, error)
DeploySmartContract processes the transaction, then deploy the smart contract into VM, final code is saved in account
func (TestScProcessor) ExecuteBuiltInFunction ¶
func (sc TestScProcessor) ExecuteBuiltInFunction( tx data.TransactionHandler, acntSnd, acntDst state.UserAccountHandler, ) (vmcommon.ReturnCode, error)
ExecuteBuiltInFunction processes the transaction, executes the built in function call and subsequent results
func (TestScProcessor) ExecuteSmartContractTransaction ¶
func (sc TestScProcessor) ExecuteSmartContractTransaction( tx data.TransactionHandler, acntSnd, acntDst state.UserAccountHandler, ) (vmcommon.ReturnCode, error)
ExecuteSmartContractTransaction processes the transaction, call the VM and processes the SC call output
func (TestScProcessor) GasScheduleChange ¶
GasScheduleChange sets the new gas schedule where it is needed Warning: do not use flags in this function as it will raise backward compatibility issues because the GasScheduleChange is not called on each epoch change
func (*TestScProcessor) GetAllSCRs ¶
func (tsp *TestScProcessor) GetAllSCRs() []data.TransactionHandler
GetAllSCRs returns all generated scrs
func (*TestScProcessor) GetCompositeTestError ¶
func (tsp *TestScProcessor) GetCompositeTestError() error
GetCompositeTestError composes all errors found in the logs or by parsing the scr forwarder's contents
func (*TestScProcessor) GetGasRemaining ¶
func (tsp *TestScProcessor) GetGasRemaining() uint64
GetGasRemaining returns the remaining gas from the last transaction
func (TestScProcessor) IsInterfaceNil ¶
func (sc TestScProcessor) IsInterfaceNil() bool
IsInterfaceNil returns true if there is no value under the interface
func (TestScProcessor) IsPayable ¶
IsPayable returns if address is payable, smart contract ca set to false
func (TestScProcessor) ProcessIfError ¶
func (sc TestScProcessor) ProcessIfError( acntSnd state.UserAccountHandler, txHash []byte, tx data.TransactionHandler, returnCode string, returnMessage []byte, snapshot int, gasLocked uint64, ) error
ProcessIfError creates a smart contract result, consumes the gas and returns the value to the user
func (TestScProcessor) ProcessSmartContractResult ¶
func (sc TestScProcessor) ProcessSmartContractResult(scr *smartContractResult.SmartContractResult) (vmcommon.ReturnCode, error)
ProcessSmartContractResult updates the account state from the smart contract result