Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var EnableGasTracing = os.Getenv("VENUS_VM_ENABLE_GAS_TRACING_VERY_SLOW") == "1"
EnableGasTracing, if true, outputs gas tracing in execution traces.
Functions ¶
func ComputeGasOverestimationBurn ¶
ComputeGasOverestimationBurn computes amount of gas to be refunded and amount of gas to be burned Result is (refund, burn)
Types ¶
type GasCharge ¶
type GasCharge struct { Name string Extra interface{} ComputeGas int64 StorageGas int64 VirtualCompute int64 VirtualStorage int64 }
GasCharge amount of gas consumed at one time
func (GasCharge) WithVirtual ¶
type GasOutputs ¶
type GasOutputs struct { BaseFeeBurn abi.TokenAmount OverEstimationBurn abi.TokenAmount MinerPenalty abi.TokenAmount MinerTip abi.TokenAmount Refund abi.TokenAmount GasRefund int64 GasBurned int64 }
GasOutputs detail of gas after message executed
func ComputeGasOutputs ¶
func ComputeGasOutputs(gasUsed, gasLimit int64, baseFee, feeCap, gasPremium abi.TokenAmount, chargeNetworkFee bool) GasOutputs
ComputeGasOutputs compute gas outputs base on message gas parameters and gasUsed after executed
func ZeroGasOutputs ¶
func ZeroGasOutputs() GasOutputs
ZeroGasOutputs returns a logically zeroed GasOutputs.
type GasTracker ¶
type GasTracker struct { GasAvailable int64 GasUsed int64 ExecutionTrace types.ExecutionTrace NumActorsCreated uint64 //nolint AllowInternal bool //nolint CallerValidated bool //nolint LastGasChargeTime time.Time //nolint LastGasCharge *types.GasTrace }
GasTracker maintains the stateView of gas usage throughout the execution of a message.
func NewGasTracker ¶
func NewGasTracker(limit int64) *GasTracker
NewGasTracker initializes a new empty gas tracker
func (*GasTracker) Charge ¶
func (t *GasTracker) Charge(gas GasCharge, msg string, args ...interface{})
Charge will add the gas charge To the current Method gas context.
WARNING: this Method will panic if there is no sufficient gas left.
func (*GasTracker) TryCharge ¶
func (t *GasTracker) TryCharge(gasCharge GasCharge) bool
TryCharge charges `amount` or `RemainingGas()“, whichever is smaller.
Returns `True` if the there was enough gas To pay for `amount`.
type Pricelist ¶
type Pricelist interface { // OnChainMessage returns the gas used for storing a message of a given size in the chain. OnChainMessage(msgSize int) GasCharge // OnChainReturnValue returns the gas used for storing the response of a message in the chain. OnChainReturnValue(dataSize int) GasCharge // OnMethodInvocation returns the gas used when invoking a method. OnMethodInvocation(value abi.TokenAmount, methodNum abi.MethodNum) GasCharge // OnIpldGet returns the gas used for storing an object OnIpldGet() GasCharge // OnIpldPut returns the gas used for storing an object OnIpldPut(dataSize int) GasCharge // OnCreateActor returns the gas used for creating an actor OnCreateActor() GasCharge // OnDeleteActor returns the gas used for deleting an actor OnDeleteActor() GasCharge OnVerifySignature(sigType crypto.SigType, planTextSize int) (GasCharge, error) OnHashing(dataSize int) GasCharge OnComputeUnsealedSectorCid(proofType abi.RegisteredSealProof, pieces []abi.PieceInfo) GasCharge OnVerifySeal(info proof7.SealVerifyInfo) GasCharge OnVerifyAggregateSeals(aggregate proof7.AggregateSealVerifyProofAndInfos) GasCharge OnVerifyReplicaUpdate(update proof7.ReplicaUpdateInfo) GasCharge OnVerifyPost(info proof7.WindowPoStVerifyInfo) GasCharge OnVerifyConsensusFault() GasCharge }
Pricelist provides prices for operations in the VM.
Note: this interface should be APPEND ONLY since last chain checkpoint
type PricesSchedule ¶
type PricesSchedule struct {
// contains filtered or unexported fields
}
PricesSchedule schedule gas prices for different network version
func NewPricesSchedule ¶
func NewPricesSchedule(forkParams *config.ForkUpgradeConfig) *PricesSchedule
NewPricesSchedule new gasprice schedule from forkParams parameters
func (*PricesSchedule) PricelistByEpoch ¶
func (schedule *PricesSchedule) PricelistByEpoch(epoch abi.ChainEpoch) Pricelist
PricelistByEpoch finds the latest prices for the given epoch
func (*PricesSchedule) SetPricelist ¶ added in v1.2.0
func (schedule *PricesSchedule) SetPricelist(newPrices map[abi.ChainEpoch]Pricelist)
SetPricelist set new prices, for test