Versions in this module Expand all Collapse all v1 v1.4.72 Jan 10, 2023 Changes in this version + const AddressLen + const ArwenVersion + const AsyncCallPending + const AsyncCallRejected + const AsyncCallResolved + const AsyncDataPrefix + const BalanceLen + const CallbackFunctionName + const CodeMetadataLen + const HashLen + const InitFunctionName + const InitFunctionNameEth + const ProtectedStoragePrefix + const TimeLockKeyPrefix + const UpgradeFunctionName + const WASMPageSize + var ErrAccountNotPayable = errors.New("sending value to non payable contract") + var ErrAllOperandsAreEqualToZero = errors.New("all operands are equal to 0") + var ErrArgIndexOutOfRange = errors.New("argument index out of range") + var ErrArgOutOfRange = errors.New("argument out of range") + var ErrAsyncContextDoesNotExist = errors.New("async context does not exist") + var ErrBadBounds = errors.New("bad bounds") + var ErrBadLowerBounds = fmt.Errorf("%w (lower)", ErrBadBounds) + var ErrBadUpperBounds = fmt.Errorf("%w (upper)", ErrBadBounds) + var ErrBigFloatWrongPrecision = errors.New("precision of the big float must be 53") + var ErrBitwiseNegative = errors.New("bitwise operations only allowed on positive integers") + var ErrBuiltinCallOnSameContextDisallowed = errors.New("calling built-in function on the same context is disallowed") + var ErrCallBackFuncCalledInRun = fmt.Errorf("%w (calling callBack() directly is forbidden)", ErrInvalidFunction) + var ErrCallBackFuncNotExpected = fmt.Errorf("%w (unexpected callback was received)", ErrInvalidFunction) + var ErrCannotWriteOnReadOnly = errors.New("cannot write on read only mode") + var ErrCannotWriteProtectedKey = errors.New("cannot write to protected key") + var ErrContractInvalid = fmt.Errorf("invalid contract code") + var ErrContractNotFound = fmt.Errorf("%w (not found)", ErrContractInvalid) + var ErrDeploymentOverExistingAccount = errors.New("cannot deploy over existing account") + var ErrDivZero = errors.New("division by 0") + var ErrEmptyProtectedKeyPrefix = errors.New("protectedKeyPrefix is empty or nil") + var ErrExecutionFailed = errors.New("execution failed") + var ErrExecutionFailedWithTimeout = errors.New("execution failed with timeout") + var ErrExecutionPanicked = errors.New("VM execution panicked") + var ErrExponentTooBigOrTooSmall = errors.New("exponent is either too small or too big") + var ErrFailedTransfer = errors.New("failed transfer") + var ErrFuncNotFound = fmt.Errorf("%w (not found)", ErrInvalidFunction) + var ErrFunctionNonvoidSignature = fmt.Errorf("%w (nonvoid signature)", ErrInvalidFunction) + var ErrInfinityFloatOperation = errors.New("infinity operations are not allowed") + var ErrInitFuncCalledInRun = fmt.Errorf("%w (calling init() directly is forbidden)", ErrInvalidFunction) + var ErrInputAndOutputGasDoesNotMatch = errors.New("input and output gas does not match") + var ErrInvalidAccount = errors.New("account does not exist") + var ErrInvalidArgument = errors.New("invalid argument") + var ErrInvalidBuiltInFunctionCall = errors.New("invalid built in function call") + var ErrInvalidCallOnReadOnlyMode = errors.New("operation not permitted in read only mode") + var ErrInvalidFunction = errors.New("invalid function") + var ErrInvalidFunctionName = fmt.Errorf("%w (invalid name)", ErrInvalidFunction) + var ErrInvalidPublicKeySize = errors.New("invalid public key size") + var ErrInvalidTokenIndex = errors.New("invalid token index") + var ErrInvalidUpgradeArguments = fmt.Errorf("%w (invalid arguments)", ErrUpgradeFailed) + var ErrLengthOfBufferNotCorrect = errors.New("length of buffer is not correct") + var ErrMaxInstancesReached = fmt.Errorf("%w (max instances reached)", ErrExecutionFailed) + var ErrMemoryDeclarationMissing = fmt.Errorf("%w (missing memory declaration)", ErrContractInvalid) + var ErrMemoryLimit = errors.New("memory limit reached") + var ErrNegativeLength = errors.New("negative length") + var ErrNilBlockChainHook = errors.New("nil blockchain hook") + var ErrNilBuiltInFunctionsContainer = errors.New("nil built in functions container") + var ErrNilCallbackFunction = errors.New("nil callback function") + var ErrNilContract = errors.New("nil contract") + var ErrNilESDTData = errors.New("nil esdt data") + var ErrNilESDTTransferParser = errors.New("nil esdt transfer parser") + var ErrNilEnableEpochsHandler = errors.New("nil enable epochs handler") + var ErrNilEpochNotifier = errors.New("nil epoch notifier") + var ErrNilHasher = errors.New("nil hasher") + var ErrNilHost = errors.New("nil host") + var ErrNilHostParameters = errors.New("nil host parameters") + var ErrNilVMHost = errors.New("nil VM Host") + var ErrNilVMType = errors.New("nil vm type") + var ErrNoBigFloatUnderThisHandle = errors.New("no bigFloat under the given handle") + var ErrNoBigIntUnderThisHandle = errors.New("no bigInt under the given handle") + var ErrNoEllipticCurveUnderThisHandle = errors.New("no elliptic curve under the given handle") + var ErrNoManagedBufferUnderThisHandle = errors.New("no managed buffer under the given handle") + var ErrNonPayableFunctionEgld = errors.New("function does not accept EGLD payment") + var ErrNonPayableFunctionEsdt = errors.New("function does not accept ESDT payment") + var ErrNotEnoughGas = errors.New("not enough gas") + var ErrPointNotOnCurve = errors.New("point is not on curve") + var ErrPositiveExponent = errors.New("exponent must be negative") + var ErrReturnCodeNotOk = errors.New("return code is not ok") + var ErrShiftNegative = errors.New(...) + var ErrSignalError = errors.New("error signalled by smartcontract") + var ErrStorageValueOutOfRange = errors.New("storage value out of range") + var ErrStoreElrondReservedKey = errors.New("cannot write to storage under Elrond reserved key") + var ErrSyncExecutionNotInSameShard = errors.New("sync execution request is not in the same shard") + var ErrTooManyESDTTransfers = errors.New("too many ESDT transfers") + var ErrTransferInsufficientFunds = fmt.Errorf("%w (insufficient funds)", ErrFailedTransfer) + var ErrTransferNegativeValue = fmt.Errorf("%w (negative value)", ErrFailedTransfer) + var ErrTransferValueOnESDTCall = errors.New("transfer value on esdt call") + var ErrUnhandledRuntimeBreakpoint = errors.New("unhandled runtime breakpoint") + var ErrUpgradeFailed = errors.New("upgrade failed") + var ErrUpgradeNotAllowed = errors.New("upgrade not allowed") + var ErrVMIsClosing = errors.New("vm is closing") + var One = big.NewInt(1) + var Zero = big.NewInt(0) + func BooleanToInt(b bool) int + func CustomStorageKey(keyType string, associatedKey []byte) []byte + func DisableLoggingForTests() + func GetCryptoContext(vmHostPtr unsafe.Pointer) crypto.VMCrypto + func GetSCCode(fileName string) []byte + func GuardedGetBytesSlice(data []byte, offset int32, length int32) ([]byte, error) + func GuardedMakeByteSlice2D(length int32) ([][]byte, error) + func IfNil(checker nilInterfaceChecker) bool + func InverseBytes(data []byte) []byte + func PadBytesLeft(data []byte, size int) []byte + func SetLoggingForTests() + func U64ToLEB128(n uint64) (out []byte) + func WithFault(err error, vmHostPtr unsafe.Pointer, failExecution bool) bool + func WithFaultAndHost(host VMHost, err error, failExecution bool) bool + func WithFaultAndHostIfFailAlwaysActive(err error, host VMHost, failExecution bool) + func WithFaultIfFailAlwaysActive(err error, vmHostPtr unsafe.Pointer, failExecution bool) + type AsyncCallExecutionMode uint + const AsyncBuiltinFuncCrossShard + const AsyncBuiltinFuncIntraShard + const AsyncUnknown + const ESDTTransferOnCallBack + const SyncCall + type AsyncCallInfo struct + Data []byte + Destination []byte + GasLimit uint64 + GasLocked uint64 + ValueBytes []byte + func (aci *AsyncCallInfo) GetData() []byte + func (aci *AsyncCallInfo) GetDestination() []byte + func (aci *AsyncCallInfo) GetGasLimit() uint64 + func (aci *AsyncCallInfo) GetGasLocked() uint64 + func (aci *AsyncCallInfo) GetValueBytes() []byte + type AsyncCallInfoHandler interface + GetData func() []byte + GetDestination func() []byte + GetGasLimit func() uint64 + GetGasLocked func() uint64 + GetValueBytes func() []byte + type AsyncCallStatus uint8 + type AsyncContext struct + AsyncCalls []*AsyncGeneratedCall + Callback string + type AsyncContextInfo struct + AsyncContextMap map[string]*AsyncContext + CallerAddr []byte + ReturnData []byte + type AsyncGeneratedCall struct + Data []byte + Destination []byte + ErrorCallback string + GasLimit uint64 + ProvidedGas uint64 + Status AsyncCallStatus + SuccessCallback string + ValueBytes []byte + func (ac *AsyncGeneratedCall) GetData() []byte + func (ac *AsyncGeneratedCall) GetDestination() []byte + func (ac *AsyncGeneratedCall) GetGasLimit() uint64 + func (ac *AsyncGeneratedCall) GetGasLocked() uint64 + func (ac *AsyncGeneratedCall) GetValueBytes() []byte + func (ac *AsyncGeneratedCall) IsInterfaceNil() bool + type BlockchainContext interface + AccountExists func(addr []byte) bool + BlockHash func(number int64) []byte + ClearCompiledCodes func() + CurrentEpoch func() uint32 + CurrentNonce func() uint64 + CurrentRandomSeed func() []byte + CurrentRound func() uint64 + CurrentTimeStamp func() uint64 + GetBalance func(addr []byte) []byte + GetBalanceBigInt func(addr []byte) *big.Int + GetCode func(addr []byte) ([]byte, error) + GetCodeHash func(addr []byte) []byte + GetCodeSize func(addr []byte) (int32, error) + GetCompiledCode func(codeHash []byte) (bool, []byte) + GetESDTToken func(address []byte, tokenID []byte, nonce uint64) (*esdt.ESDigitalToken, error) + GetNonce func(addr []byte) (uint64, error) + GetOwnerAddress func() ([]byte, error) + GetShardOfAddress func(addr []byte) uint32 + GetSnapshot func() int + GetStateRootHash func() []byte + GetUserAccount func(address []byte) (vmcommon.UserAccountHandler, error) + IncreaseNonce func(addr []byte) + IsLimitedTransfer func(tokenID []byte) bool + IsPaused func(tokenID []byte) bool + IsPayable func(sndAddress, rcvAddress []byte) (bool, error) + IsSmartContract func(addr []byte) bool + LastEpoch func() uint32 + LastNonce func() uint64 + LastRandomSeed func() []byte + LastRound func() uint64 + LastTimeStamp func() uint64 + NewAddress func(creatorAddress []byte) ([]byte, error) + ProcessBuiltInFunction func(input *vmcommon.ContractCallInput) (*vmcommon.VMOutput, error) + RevertToSnapshot func(snapshot int) + SaveCompiledCode func(codeHash []byte, code []byte) + func GetBlockchainContext(vmHostPtr unsafe.Pointer) BlockchainContext + type BreakpointValue uint64 + const BreakpointAsyncCall + const BreakpointExecutionFailed + const BreakpointMemoryLimit + const BreakpointNone + const BreakpointOutOfGas + const BreakpointSignalError + type CallArgsParser interface + IsInterfaceNil func() bool + ParseData func(data string) (string, [][]byte, error) + type CodeDeployInput struct + CodeDeployerAddress []byte + ContractAddress []byte + ContractCode []byte + ContractCodeMetadata []byte + type GasTracing interface + AddToCurrentTrace func(usedGas uint64) + AddTracedGas func(scAddress string, functionName string, usedGas uint64) + BeginTrace func(scAddress string, functionName string) + GetGasTrace func() map[string]map[string][]uint64 + IsInterfaceNil func() bool + type HashComputer interface + Compute func(string) []byte + IsInterfaceNil func() bool + Size func() int + type InstanceBuilder interface + NewInstanceFromCompiledCodeWithOptions func(compiledCode []byte, options wasmer.CompilationOptions) (wasmer.InstanceHandler, error) + NewInstanceWithOptions func(contractCode []byte, options wasmer.CompilationOptions) (wasmer.InstanceHandler, error) + type ManagedTypesContext interface + AppendBytes func(mBufferHandle int32, bytes []byte) bool + BigFloatExpIsNotValid func(exponent int) bool + BigFloatPrecIsNotValid func(precision uint) bool + ConsumeGasForBigFloatCopy func(values ...*big.Float) + ConsumeGasForBigIntCopy func(values ...*big.Int) + ConsumeGasForBytes func(bytes []byte) + ConsumeGasForThisBigIntNumberOfBytes func(byteLen *big.Int) + ConsumeGasForThisIntNumberOfBytes func(byteLen int) + DeleteSlice func(mBufferHandle int32, startPosition int32, lengthOfSlice int32) ([]byte, error) + EncodedBigFloatIsNotValid func(encodedBigFloat []byte) bool + Get100xCurveGasCostMultiplier func(ecHandle int32) int32 + GetBigFloat func(handle int32) (*big.Float, error) + GetBigFloatOrCreate func(handle int32) (*big.Float, error) + GetBigInt func(id int32) (*big.Int, error) + GetBigIntOrCreate func(handle int32) *big.Int + GetBytes func(mBufferHandle int32) ([]byte, error) + GetEllipticCurve func(handle int32) (*elliptic.CurveParams, error) + GetEllipticCurveSizeOfField func(ecHandle int32) int32 + GetLength func(mBufferHandle int32) int32 + GetPrivateKeyByteLengthEC func(ecHandle int32) int32 + GetRandReader func() io.Reader + GetScalarMult100xCurveGasCostMultiplier func(ecHandle int32) int32 + GetSlice func(mBufferHandle int32, startPosition int32, lengthOfSlice int32) ([]byte, error) + GetTwoBigFloats func(handle1 int32, handle2 int32) (*big.Float, *big.Float, error) + GetTwoBigInt func(handle1 int32, handle2 int32) (*big.Int, *big.Int, error) + GetUCompressed100xCurveGasCostMultiplier func(ecHandle int32) int32 + InsertSlice func(mBufferHandle int32, startPosition int32, slice []byte) ([]byte, error) + NewBigInt func(value *big.Int) int32 + NewBigIntFromInt64 func(int64Value int64) int32 + NewManagedBuffer func() int32 + NewManagedBufferFromBytes func(bytes []byte) int32 + PutBigFloat func(value *big.Float) (int32, error) + PutEllipticCurve func(ec *elliptic.CurveParams) int32 + ReadManagedVecOfManagedBuffers func(managedVecHandle int32) ([][]byte, uint64, error) + SetBytes func(mBufferHandle int32, bytes []byte) + WriteManagedVecOfManagedBuffers func(data [][]byte, destinationHandle int32) + func GetManagedTypesContext(vmHostPtr unsafe.Pointer) ManagedTypesContext + type MeteringContext interface + BlockGasLimit func() uint64 + BoundGasLimit func(value int64) uint64 + ComputeGasLockedForAsync func() uint64 + DeductInitialGasForDirectDeployment func(input CodeDeployInput) error + DeductInitialGasForExecution func(contract []byte) error + DeductInitialGasForIndirectDeployment func(input CodeDeployInput) error + FreeGas func(gas uint64) + GasLeft func() uint64 + GasSchedule func() *config.GasCost + GasSpentByContract func() uint64 + GasUsedForExecution func() uint64 + GetGasForExecution func() uint64 + GetGasLocked func() uint64 + GetGasProvided func() uint64 + GetGasTrace func() map[string]map[string][]uint64 + GetSCPrepareInitialCost func() uint64 + InitStateFromContractCallInput func(input *vmcommon.VMInput) + PopMergeActiveState func() + RestoreGas func(gas uint64) + SetGasSchedule func(gasMap config.GasScheduleMap) + SetGasTracing func(enableGasTracing bool) + StartGasTracing func(functionName string) + TrackGasUsedByBuiltinFunction func(builtinInput *vmcommon.ContractCallInput, builtinOutput *vmcommon.VMOutput, ...) + UpdateGasStateOnFailure func(vmOutput *vmcommon.VMOutput) + UpdateGasStateOnSuccess func(vmOutput *vmcommon.VMOutput) error + UseAndTraceGas func(gas uint64) + UseGas func(gas uint64) + UseGasAndAddTracedGas func(functionName string, gas uint64) + UseGasBounded func(gasToUse uint64) error + UseGasForAsyncStep func() error + func GetMeteringContext(vmHostPtr unsafe.Pointer) MeteringContext + type OutputContext interface + AddToActiveState func(rightOutput *vmcommon.VMOutput) + AddTxValueToAccount func(address []byte, value *big.Int) + CensorVMOutput func() + ClearReturnData func() + CreateVMOutputInCaseOfError func(err error) *vmcommon.VMOutput + DeleteFirstReturnData func() + DeleteOutputAccount func(address []byte) + DeployCode func(input CodeDeployInput) + Finish func(data []byte) + GetOutputAccount func(address []byte) (*vmcommon.OutputAccount, bool) + GetOutputAccounts func() map[string]*vmcommon.OutputAccount + GetRefund func() uint64 + GetVMOutput func() *vmcommon.VMOutput + PopMergeActiveState func() + PrependFinish func(data []byte) + RemoveNonUpdatedStorage func() + RemoveReturnData func(index uint32) + ReturnCode func() vmcommon.ReturnCode + ReturnData func() [][]byte + ReturnMessage func() string + SelfDestruct func(address []byte, beneficiary []byte) + SetRefund func(refund uint64) + SetReturnCode func(returnCode vmcommon.ReturnCode) + SetReturnMessage func(message string) + Transfer func(destination []byte, sender []byte, gasLimit uint64, gasLocked uint64, ...) error + TransferESDT func(destination []byte, sender []byte, transfers []*vmcommon.ESDTTransfer, ...) (uint64, error) + TransferValueOnly func(destination []byte, sender []byte, value *big.Int, checkPayable bool) error + WriteLog func(address []byte, topics [][]byte, data []byte) + func GetOutputContext(vmHostPtr unsafe.Pointer) OutputContext + type RuntimeContext interface + AddAsyncContextCall func(contextIdentifier []byte, asyncCall *AsyncGeneratedCall) error + AddError func(err error, otherInfo ...string) + Arguments func() [][]byte + BigFloatAPIErrorShouldFailExecution func() bool + BigIntAPIErrorShouldFailExecution func() bool + CleanInstance func() + ClearWarmInstanceCache func() + CryptoAPIErrorShouldFailExecution func() bool + ElrondAPIErrorShouldFailExecution func() bool + ElrondSyncExecAPIErrorShouldFailExecution func() bool + EndExecution func() + ExecuteAsyncCall func(address []byte, data []byte, value []byte) error + ExtractCodeUpgradeFromArgs func() ([]byte, []byte, error) + FailExecution func(err error) + Function func() string + GetAllErrors func() error + GetAsyncCallInfo func() *AsyncCallInfo + GetAsyncContext func(contextIdentifier []byte) (*AsyncContext, error) + GetAsyncContextInfo func() *AsyncContextInfo + GetContextAddress func() []byte + GetCurrentTxHash func() []byte + GetFunctionToCall func() (wasmer.ExportedFunctionCallback, error) + GetInitFunction func() wasmer.ExportedFunctionCallback + GetInstance func() wasmer.InstanceHandler + GetInstanceExports func() wasmer.ExportsMap + GetOriginalTxHash func() []byte + GetPointsUsed func() uint64 + GetRuntimeBreakpointValue func() BreakpointValue + GetSCCode func() ([]byte, error) + GetSCCodeSize func() uint64 + GetVMInput func() *vmcommon.ContractCallInput + GetVMType func() []byte + GetWarmInstance func(codeHash []byte) (wasmer.InstanceHandler, bool) + InitStateFromContractCallInput func(input *vmcommon.ContractCallInput) + IsFunctionImported func(name string) bool + ManagedBufferAPIErrorShouldFailExecution func() bool + MemLoad func(offset int32, length int32) ([]byte, error) + MemLoadMultiple func(offset int32, lengths []int32) ([][]byte, error) + MemStore func(offset int32, data []byte) error + MustVerifyNextContractCode func() + ReadOnly func() bool + ReplaceInstanceBuilder func(builder InstanceBuilder) + RunningInstancesCount func() uint64 + SetAsyncCallInfo func(asyncCallInfo *AsyncCallInfo) + SetCodeAddress func(scAddress []byte) + SetCustomCallFunction func(callFunction string) + SetMaxInstanceCount func(uint64) + SetPointsUsed func(gasPoints uint64) + SetReadOnly func(readOnly bool) + SetRuntimeBreakpointValue func(value BreakpointValue) + SetVMInput func(vmInput *vmcommon.ContractCallInput) + SignalUserError func(message string) + StartWasmerInstance func(contract []byte, gasLimit uint64, newCode bool) error + ValidateInstances func() error + VerifyContractCode func() error + func GetRuntimeContext(vmHostPtr unsafe.Pointer) RuntimeContext + type StateStack interface + ClearStateStack func() + InitState func() + PopDiscard func() + PopSetActiveState func() + PushState func() + type StorageContext interface + GetStorage func(key []byte) ([]byte, bool, error) + GetStorageFromAddress func(address []byte, key []byte) ([]byte, bool, error) + GetStorageUnmetered func(key []byte) ([]byte, bool, error) + GetStorageUpdates func(address []byte) map[string]*vmcommon.StorageUpdate + IsUseDifferentGasCostFlagSet func() bool + SetAddress func(address []byte) + SetProtectedStorage func(key []byte, value []byte) (StorageStatus, error) + SetStorage func(key []byte, value []byte) (StorageStatus, error) + UseGasForStorageLoad func(tracedFunctionName string, blockChainLoadCost uint64, usedCache bool) + func GetStorageContext(vmHostPtr unsafe.Pointer) StorageContext + type StorageStatus int + const StorageAdded + const StorageDeleted + const StorageModified + const StorageUnchanged + type VMHost interface + AreInSameShard func(leftAddress []byte, rightAddress []byte) bool + Blockchain func() BlockchainContext + CheckExecuteReadOnly func() bool + CreateNFTOnExecByCallerEnabled func() bool + CreateNewContract func(input *vmcommon.ContractCreateInput) ([]byte, error) + Crypto func() crypto.VMCrypto + DisableExecByCaller func() bool + EnableEpochsHandler func() vmcommon.EnableEpochsHandler + ExecuteESDTTransfer func(destination []byte, sender []byte, esdtTransfers []*vmcommon.ESDTTransfer, ...) (*vmcommon.VMOutput, uint64, error) + ExecuteOnDestContext func(input *vmcommon.ContractCallInput) (*vmcommon.VMOutput, *AsyncContextInfo, error) + ExecuteOnSameContext func(input *vmcommon.ContractCallInput) (*AsyncContextInfo, error) + FixFailExecutionEnabled func() bool + FixOOGReturnCodeEnabled func() bool + GetAPIMethods func() *wasmer.Imports + GetContexts func() (ManagedTypesContext, BlockchainContext, MeteringContext, OutputContext, ...) + GetGasScheduleMap func() config.GasScheduleMap + InitState func() + IsBuiltinFunctionName func(functionName string) bool + ManagedTypes func() ManagedTypesContext + Metering func() MeteringContext + Output func() OutputContext + Reset func() + Runtime func() RuntimeContext + SetBuiltInFunctionsContainer func(builtInFuncs vmcommon.BuiltInFunctionContainer) + SetRuntimeContext func(runtime RuntimeContext) + Storage func() StorageContext + func GetVMHost(vmHostPtr unsafe.Pointer) VMHost + type VMHostParameters struct + BlockGasLimit uint64 + BuiltInFuncContainer vmcommon.BuiltInFunctionContainer + ESDTTransferParser vmcommon.ESDTTransferParser + EnableEpochsHandler vmcommon.EnableEpochsHandler + EpochNotifier vmcommon.EpochNotifier + GasSchedule config.GasScheduleMap + Hasher HashComputer + ProtectedKeyPrefix []byte + TimeOutForSCExecutionInMilliseconds uint32 + VMType []byte + WasmerSIGSEGVPassthrough bool + type WrappableError interface + GetAllErrors func() []error + GetAllErrorsAndOtherInfo func() ([]error, []string) + GetBaseError func() error + GetLastError func() error + Is func(target error) bool + Unwrap func() error + WrapWithError func(err error, otherInfo ...string) WrappableError + WrapWithMessage func(errMessage string) WrappableError + WrapWithStackTrace func() WrappableError + func WrapError(err error, otherInfo ...string) WrappableError