gas

package
v0.5.0-alpha.9 Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2023 License: Apache-2.0 Imports: 7 Imported by: 4

Documentation

Index

Constants

View Source
const (
	MaxGasPerBlock         = uint64(1_000_000_000)
	MinGasPerRequest       = uint64(10000)
	MaxGasPerRequest       = MaxGasPerBlock / 20 // one request cannot use more than 5% of maximum block gas
	MaxGasExternalViewCall = MaxGasPerRequest
)
View Source
const (
	BurnCodeStorage1P = BurnCode(iota)
	BurnCodeReadFromState1P
	BurnCodeCallTargetNotFound
	BurnCodeGetContext
	BurnCodeGetCallerData
	BurnCodeGetAllowance
	BurnCodeGetStateAnchorInfo
	BurnCodeGetBalance
	BurnCodeGetNFTData
	BurnCodeCallContract
	BurnCodeDeployContract
	BurnCodeEmitEventFixed
	BurnCodeTransferAllowance
	BurnCodeEstimateStorageDepositCost
	BurnCodeSendL1Request

	BurnCodeUtilsHashingBlake2b
	BurnCodeUtilsHashingSha3
	BurnCodeUtilsHashingHname
	BurnCodeUtilsHexEncode
	BurnCodeUtilsHexDecode
	BurnCodeUtilsED25519ValidSig
	BurnCodeUtilsED25519AddrFromPubKey
	BurnCodeUtilsBLSValidSignature
	BurnCodeUtilsBLSAddrFromPubKey
	BurnCodeUtilsBLSAggregateBLS1P

	BurnCodeWasm1P
	BurnCodeMinimumGasPerRequest1P

	BurnCodeEVM1P
)
View Source
const (
	Coef1Send        = 200
	CoefBLSAggregate = 400
)

Variables

View Source
var DefaultEVMGasRatio = util.Ratio32{A: 1, B: 1}

<ISC gas> = <EVM Gas> * <A> / <B>

View Source
var ErrInvalidEVMGasRatio = errors.New("EVM gas ratio must have both components != 0")
View Source
var ErrUnknownBurnCode = errors.New("unknown gas burn code")

Functions

func EVMBlockGasLimit added in v1.0.3

func EVMBlockGasLimit(gasRatio *util.Ratio32) uint64

EVMBlockGasLimit returns the ISC block gas limit converted to EVM gas units

func EVMCallGasLimit added in v1.0.3

func EVMCallGasLimit(gasRatio *util.Ratio32) uint64

EVMCallGasLimit returns the maximum gas limit accepted for an EVM tx

func EVMGasToISC added in v1.0.3

func EVMGasToISC(evmGas uint64, gasRatio *util.Ratio32) uint64

func ISCGasBudgetToEVM added in v1.0.3

func ISCGasBudgetToEVM(iscGasBudget uint64, gasRatio *util.Ratio32) uint64

func ISCGasBurnedToEVM added in v1.0.3

func ISCGasBurnedToEVM(iscGasBurned uint64, gasRatio *util.Ratio32) uint64

Types

type BurnCode

type BurnCode uint16

func (BurnCode) Cost

func (c BurnCode) Cost(p ...uint64) uint64

func (BurnCode) Name

func (c BurnCode) Name() string

type BurnCodeRecord

type BurnCodeRecord struct {
	Name string
	BurnFunction
}

type BurnFunction

type BurnFunction func(x uint64) uint64

type BurnLog

type BurnLog struct {
	Records []BurnRecord `json:"records" swagger:"required"`
}

func NewGasBurnLog

func NewGasBurnLog() *BurnLog

func (*BurnLog) Record

func (h *BurnLog) Record(code BurnCode, gas uint64)

func (*BurnLog) String

func (h *BurnLog) String() string

type BurnRecord

type BurnRecord struct {
	Code      BurnCode `json:"code" swagger:"required"`
	GasBurned uint64   `json:"gasBurned" swagger:"required"`
}

type BurnTable

type BurnTable map[BurnCode]BurnCodeRecord

type GasFeePolicy

type GasFeePolicy struct {
	// GasFeeTokenID contains iotago.NativeTokenID used to pay for gas, or nil if base token are used for gas fee
	GasFeeTokenID iotago.NativeTokenID
	// GasFeeTokenDecimals the number of decimals in the native token used to pay for gas fees. Only considered if GasFeeTokenID != nil
	GasFeeTokenDecimals uint32

	// GasPerToken specifies how many gas units are paid for each token ( 100 means 1 tokens pays for 100 gas)
	GasPerToken uint64

	// EVMGasRatio expresses the ratio at which EVM gas is converted to ISC gas (evm gas used * A/B)
	EVMGasRatio util.Ratio32

	// ValidatorFeeShare Validator/Governor fee split: percentage of fees which goes to Validator
	// 0 mean all goes to Governor
	// >=100 all goes to Validator
	ValidatorFeeShare uint8
}

func DefaultGasFeePolicy

func DefaultGasFeePolicy() *GasFeePolicy

func FeePolicyFromBytes

func FeePolicyFromBytes(data []byte) (*GasFeePolicy, error)

func MustGasFeePolicyFromBytes

func MustGasFeePolicyFromBytes(data []byte) *GasFeePolicy

func (*GasFeePolicy) AffordableGasBudgetFromAvailableTokens

func (p *GasFeePolicy) AffordableGasBudgetFromAvailableTokens(availableTokens uint64) uint64

func (*GasFeePolicy) Bytes

func (p *GasFeePolicy) Bytes() []byte

func (*GasFeePolicy) FeeFromGas

func (p *GasFeePolicy) FeeFromGas(gasUnits, availableTokens uint64) (sendToOwner, sendToValidator uint64)

FeeFromGas return ownerFee and validatorFee

func (*GasFeePolicy) IsEnoughForMinimumFee

func (p *GasFeePolicy) IsEnoughForMinimumFee(availableTokens uint64) bool

func (*GasFeePolicy) MinFee

func (p *GasFeePolicy) MinFee() uint64

func (*GasFeePolicy) String

func (p *GasFeePolicy) String() string

Jump to

Keyboard shortcuts

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