smartContract

package
v1.2.22-indexer1.1.21 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2021 License: GPL-3.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
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 added in v1.0.133

func NewArgumentParser() *argumentParser

NewArgumentParser creates a full argument parser component

func NewScQueryServiceDispatcher added in v1.1.18

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 ArgsNewSmartContractProcessor) (*scProcessor, error)

NewSmartContractProcessor creates a smart contract processor that creates and interprets VM data

Types

type ArgsNewSCQueryService added in v1.1.62

type ArgsNewSCQueryService struct {
	VmContainer       process.VirtualMachinesContainer
	EconomicsFee      process.FeeHandler
	BlockChainHook    process.BlockChainHookHandler
	BlockChain        data.ChainHandler
	ArwenChangeLocker process.Locker
}

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
	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
	BadTxForwarder                              process.IntermediateTransactionHandler
	DeployEnableEpoch                           uint32
	BuiltinEnableEpoch                          uint32
	PenalizedTooMuchGasEnableEpoch              uint32
	RepairCallbackEnableEpoch                   uint32
	StakingV2EnableEpoch                        uint32
	ReturnDataToLastTransferEnableEpoch         uint32
	SenderInOutTransferEnableEpoch              uint32
	IncrementSCRNonceInMultiTransferEnableEpoch uint32
	BuiltInFunctionOnMetachainEnableEpoch       uint32
	SCRSizeInvariantCheckEnableEpoch            uint32
	BackwardCompSaveKeyValueEnableEpoch         uint32
	EpochNotifier                               process.EpochNotifier
	VMOutputCacher                              storage.Cacher
	ArwenChangeLocker                           process.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 added in v1.2.0

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, 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 added in v1.1.27

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 added in v1.1.27

func NewTestScProcessor(internalData *scProcessor) *TestScProcessor

NewTestScProcessor -

func (*TestScProcessor) CleanGasRefunded added in v1.1.27

func (tsp *TestScProcessor) CleanGasRefunded()

CleanGasRefunded cleans the gas computation handler

func (TestScProcessor) DeploySmartContract added in v1.1.27

func (sc TestScProcessor) DeploySmartContract(tx data.TransactionHandler, acntSnd state.UserAccountHandler) (vmcommon.ReturnCode, error)

DeploySmartContract processes the transaction, than deploy the smart contract into VM, final code is saved in account

func (TestScProcessor) EpochConfirmed added in v1.1.27

func (sc TestScProcessor) EpochConfirmed(epoch uint32, _ uint64)

EpochConfirmed is called whenever a new epoch is confirmed

func (TestScProcessor) ExecuteBuiltInFunction added in v1.1.27

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 added in v1.1.27

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 added in v1.1.27

func (sc TestScProcessor) GasScheduleChange(gasSchedule map[string]map[string]uint64)

GasScheduleChange sets the new gas schedule where it is needed

func (*TestScProcessor) GetAllSCRs added in v1.1.27

func (tsp *TestScProcessor) GetAllSCRs() []data.TransactionHandler

GetAllSCRs returns all generated scrs

func (*TestScProcessor) GetGasRemaining added in v1.1.27

func (tsp *TestScProcessor) GetGasRemaining() uint64

GetGasRemaining returns the remaining gas from the last transaction

func (*TestScProcessor) GetLatestTestError added in v1.1.27

func (tsp *TestScProcessor) GetLatestTestError() error

GetLatestTestError locates the latest error in the collection of smart contracts results

func (TestScProcessor) IsInterfaceNil added in v1.1.27

func (sc TestScProcessor) IsInterfaceNil() bool

IsInterfaceNil returns true if there is no value under the interface

func (TestScProcessor) IsPayable added in v1.1.27

func (sc TestScProcessor) IsPayable(address []byte) (bool, error)

IsPayable returns if address is payable, smart contract ca set to false

func (TestScProcessor) ProcessIfError added in v1.1.27

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 added in v1.1.27

func (sc TestScProcessor) ProcessSmartContractResult(scr *smartContractResult.SmartContractResult) (vmcommon.ReturnCode, error)

ProcessSmartContractResult updates the account state from the smart contract result

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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