gas

package
v0.7.0-alpha.1 Latest Latest
Warning

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

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

Documentation

Index

Constants

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
)
View Source
const GasPolicyByteSize = util.RatioByteSize + serializer.OneByte + util.RatioByteSize

GasPerToken + ValidatorFeeShare + EVMGasRatio

Variables

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

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

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

By default each token pays for 100 units of gas

View Source
var ErrUnknownBurnCode = errors.New("unknown gas burn code")
View Source
var LimitsDefault = &Limits{
	MaxGasPerBlock:         1_000_000_000,
	MinGasPerRequest:       10_000,
	MaxGasPerRequest:       50_000_000,
	MaxGasExternalViewCall: 50_000_000,
}

Functions

func EVMBlockGasLimit added in v1.0.3

func EVMBlockGasLimit(gasLimits *Limits, 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(gasLimits *Limits, 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 FeeFromGas added in v1.0.3

func FeeFromGas(gasUnits uint64, gasPerToken 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 FeePolicy added in v1.0.3

type FeePolicy struct {
	// EVMGasRatio expresses the ratio at which EVM gas is converted to ISC gas
	// X = ISC gas, Y = EVM gas => ISC gas = EVM gas * A/B
	EVMGasRatio util.Ratio32 `json:"evmGasRatio" swagger:"desc(The EVM gas ratio (ISC gas = EVM gas * A/B)),required"`

	// GasPerToken specifies how many gas units are paid for each token.
	GasPerToken util.Ratio32 `json:"gasPerToken" swagger:"desc(The gas per token ratio (A/B) (gas/token)),required"`

	// 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 `json:"validatorFeeShare" swagger:"desc(The validator fee share.),required"`
}

func DefaultFeePolicy added in v1.0.3

func DefaultFeePolicy() *FeePolicy

func FeePolicyFromBytes

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

func MustFeePolicyFromBytes added in v1.0.3

func MustFeePolicyFromBytes(data []byte) *FeePolicy

func (*FeePolicy) Bytes added in v1.0.3

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

func (*FeePolicy) FeeFromGas added in v1.0.3

func (p *FeePolicy) FeeFromGas(gasUnits uint64) uint64

func (*FeePolicy) FeeFromGasBurned added in v1.0.3

func (p *FeePolicy) FeeFromGasBurned(gasUnits, availableTokens uint64) (sendToOwner, sendToValidator uint64)

FeeFromGasBurned calculates the how many tokens to take and where to deposit them.

func (*FeePolicy) GasBudgetFromTokens added in v1.0.3

func (p *FeePolicy) GasBudgetFromTokens(availableTokens uint64) uint64

func (*FeePolicy) IsEnoughForMinimumFee added in v1.0.3

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

func (*FeePolicy) MinFee added in v1.0.3

func (p *FeePolicy) MinFee() uint64

func (*FeePolicy) Read added in v1.0.3

func (p *FeePolicy) Read(r io.Reader) error

func (*FeePolicy) String added in v1.0.3

func (p *FeePolicy) String() string

func (*FeePolicy) Write added in v1.0.3

func (p *FeePolicy) Write(w io.Writer) error

type Limits added in v1.0.3

type Limits struct {
	MaxGasPerBlock         uint64 `json:"maxGasPerBlock" swagger:"desc(The maximum gas per block),required"`
	MinGasPerRequest       uint64 `json:"minGasPerRequest" swagger:"desc(The minimum gas per request),required"`
	MaxGasPerRequest       uint64 `json:"maxGasPerRequest" swagger:"desc(The maximum gas per request),required"`
	MaxGasExternalViewCall uint64 `json:"maxGasExternalViewCall" swagger:"desc(The maximum gas per external view call),required"`
}

func LimitsFromBytes added in v1.0.3

func LimitsFromBytes(data []byte) (*Limits, error)

func (*Limits) Bytes added in v1.0.3

func (gl *Limits) Bytes() []byte

func (*Limits) IsValid added in v1.0.3

func (gl *Limits) IsValid() bool

func (*Limits) Read added in v1.0.3

func (gl *Limits) Read(r io.Reader) error

func (*Limits) String added in v1.0.3

func (gl *Limits) String() string

func (*Limits) Write added in v1.0.3

func (gl *Limits) Write(w io.Writer) error

Jump to

Keyboard shortcuts

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