Documentation ¶
Index ¶
- Constants
- Variables
- func EVMBlockGasLimit(gasLimits *Limits, gasRatio *util.Ratio32) uint64
- func EVMCallGasLimit(gasLimits *Limits, gasRatio *util.Ratio32) uint64
- func EVMGasToISC(evmGas uint64, gasRatio *util.Ratio32) uint64
- func FeeFromGas(gasUnits uint64, gasPerToken util.Ratio32) uint64
- func ISCGasBudgetToEVM(iscGasBudget uint64, gasRatio *util.Ratio32) uint64
- func ISCGasBurnedToEVM(iscGasBurned uint64, gasRatio *util.Ratio32) uint64
- func ReadRatio32(mu *marshalutil.MarshalUtil) (ret util.Ratio32, err error)
- type BurnCode
- type BurnCodeRecord
- type BurnFunction
- type BurnLog
- type BurnRecord
- type BurnTable
- type FeePolicy
- func (p *FeePolicy) Bytes() []byte
- func (p *FeePolicy) FeeFromGas(gasUnits uint64) uint64
- func (p *FeePolicy) FeeFromGasBurned(gasUnits, availableTokens uint64) (sendToOwner, sendToValidator uint64)
- func (p *FeePolicy) GasBudgetFromTokens(availableTokens uint64) uint64
- func (p *FeePolicy) IsEnoughForMinimumFee(availableTokens uint64) bool
- func (p *FeePolicy) MinFee() uint64
- func (p *FeePolicy) String() string
- type Limits
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 ErrInvalidLimits = errors.New("invalid gas limits")
View Source
var ErrInvalidRatio = errors.New("ratio must have both components != 0")
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
EVMBlockGasLimit returns the ISC block gas limit converted to EVM gas units
func EVMCallGasLimit ¶ added in v1.0.3
EVMCallGasLimit returns the maximum gas limit accepted for an EVM tx
func ISCGasBudgetToEVM ¶ added in v1.0.3
func ISCGasBurnedToEVM ¶ added in v1.0.3
func ReadRatio32 ¶
func ReadRatio32(mu *marshalutil.MarshalUtil) (ret util.Ratio32, err error)
Types ¶
type BurnCodeRecord ¶
type BurnCodeRecord struct { Name string BurnFunction }
type BurnFunction ¶
type BurnLog ¶
type BurnLog struct {
Records []BurnRecord `json:"records" swagger:"required"`
}
func NewGasBurnLog ¶
func NewGasBurnLog() *BurnLog
type BurnRecord ¶
type BurnTable ¶
type BurnTable map[BurnCode]BurnCodeRecord
type FeePolicy ¶ added in v1.0.3
type FeePolicy struct { // 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"` // 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"` // 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 FeePolicyFromMarshalUtil ¶
func FeePolicyFromMarshalUtil(mu *marshalutil.MarshalUtil) (*FeePolicy, error)
func MustFeePolicyFromBytes ¶ added in v1.0.3
func (*FeePolicy) FeeFromGas ¶ added in v1.0.3
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 (*FeePolicy) IsEnoughForMinimumFee ¶ added in v1.0.3
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 LimitsFromMarshalUtil ¶
func LimitsFromMarshalUtil(mu *marshalutil.MarshalUtil) (*Limits, error)
Click to show internal directories.
Click to hide internal directories.