fee

package
v1.14.2 Latest Latest
Warning

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

Go to latest
Published: Aug 2, 2025 License: BSD-3-Clause Imports: 16 Imported by: 5

Documentation

Overview

TODO: Before Etna, address all TODOs in this package and ensure LP-103 compliance.

Index

Constants

This section is empty.

Variables

View Source
var (
	IntrinsicAddSubnetValidatorTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			intrinsicSubnetValidatorBandwidth +
			wrappers.IntLen +
			wrappers.IntLen,
		gas.DBRead:  3,
		gas.DBWrite: 3,
	}
	IntrinsicCreateChainTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			ids.IDLen +
			wrappers.ShortLen +
			ids.IDLen +
			wrappers.IntLen +
			wrappers.IntLen +
			wrappers.IntLen +
			wrappers.IntLen,
		gas.DBRead:  3,
		gas.DBWrite: 1,
	}
	IntrinsicCreateSubnetTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			wrappers.IntLen,
		gas.DBWrite: 1,
	}
	IntrinsicImportTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			ids.IDLen +
			wrappers.IntLen,
	}
	IntrinsicExportTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			ids.IDLen +
			wrappers.IntLen,
	}
	IntrinsicRemoveSubnetValidatorTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			ids.NodeIDLen +
			ids.IDLen +
			wrappers.IntLen +
			wrappers.IntLen,
		gas.DBRead:  1,
		gas.DBWrite: 3,
	}
	IntrinsicAddPermissionlessValidatorTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			intrinsicValidatorBandwidth +
			ids.IDLen +
			wrappers.IntLen +
			wrappers.IntLen +
			wrappers.IntLen +
			wrappers.IntLen +
			wrappers.IntLen,
		gas.DBRead:  1,
		gas.DBWrite: 3,
	}
	IntrinsicAddPermissionlessDelegatorTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			intrinsicValidatorBandwidth +
			ids.IDLen +
			wrappers.IntLen +
			wrappers.IntLen,
		gas.DBRead:  1,
		gas.DBWrite: 2,
	}
	IntrinsicTransferSubnetOwnershipTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			ids.IDLen +
			wrappers.IntLen +
			wrappers.IntLen +
			wrappers.IntLen,
		gas.DBRead:  1,
		gas.DBWrite: 1,
	}
	IntrinsicBaseTxComplexities = gas.Dimensions{
		gas.Bandwidth: codec.VersionSize +
			wrappers.IntLen +
			wrappers.IntLen +
			ids.IDLen +
			wrappers.IntLen +
			wrappers.IntLen +
			wrappers.IntLen +
			wrappers.IntLen,
	}
	IntrinsicConvertSubnetToL1TxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			ids.IDLen +
			ids.IDLen +
			wrappers.IntLen +
			wrappers.IntLen +
			wrappers.IntLen +
			wrappers.IntLen,
		gas.DBRead:  3,
		gas.DBWrite: 2,
	}
	IntrinsicRegisterL1ValidatorTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			wrappers.LongLen +
			bls.SignatureLen +
			wrappers.IntLen,
		gas.DBRead:  5,
		gas.DBWrite: 6,
		gas.Compute: intrinsicBLSPoPVerifyCompute,
	}
	IntrinsicSetL1ValidatorWeightTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			wrappers.IntLen,
		gas.DBRead:  3,
		gas.DBWrite: 5,
	}
	IntrinsicIncreaseL1ValidatorBalanceTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			ids.IDLen +
			wrappers.LongLen,
		gas.DBRead:  1,
		gas.DBWrite: 5,
	}
	IntrinsicDisableL1ValidatorTxComplexities = gas.Dimensions{
		gas.Bandwidth: IntrinsicBaseTxComplexities[gas.Bandwidth] +
			ids.IDLen +
			wrappers.IntLen +
			wrappers.IntLen,
		gas.DBRead:  1,
		gas.DBWrite: 6,
	}
)
View Source
var (
	ErrCalculatingComplexity = errors.New("error calculating complexity")
	ErrCalculatingGas        = errors.New("error calculating gas")
	ErrCalculatingCost       = errors.New("error calculating cost")
)
View Source
var ErrUnsupportedTx = errors.New("unsupported transaction type")

Functions

func AuthComplexity

func AuthComplexity(authIntf verify.Verifiable) (gas.Dimensions, error)

AuthComplexity returns the complexity an authorization adds to a transaction. It does not include the typeID of the authorization. It does includes the complexity that the corresponding credential will add. It does not include the typeID of the credential.

func ConvertSubnetToL1ValidatorComplexity

func ConvertSubnetToL1ValidatorComplexity(l1Validators ...*txs.ConvertSubnetToL1Validator) (gas.Dimensions, error)

ConvertSubnetToL1ValidatorComplexity returns the complexity the validators add to a transaction.

func InitializeTestWarpParser

func InitializeTestWarpParser()

InitializeTestWarpParser sets up a mock warp parser for tests

func InputComplexity

func InputComplexity(ins ...*lux.TransferableInput) (gas.Dimensions, error)

InputComplexity returns the complexity inputs add to a transaction. It includes the complexity that the corresponding credentials will add.

func OutputComplexity

func OutputComplexity(outs ...*lux.TransferableOutput) (gas.Dimensions, error)

OutputComplexity returns the complexity outputs add to a transaction.

func OwnerComplexity

func OwnerComplexity(ownerIntf fx.Owner) (gas.Dimensions, error)

OwnerComplexity returns the complexity an owner adds to a transaction. It does not include the typeID of the owner.

func SetWarpMessageParser

func SetWarpMessageParser(parser WarpMessageParser)

SetWarpMessageParser sets the warp message parser function. This must be called by the warp package during initialization to avoid circular imports.

func SignerComplexity

func SignerComplexity(s signer.Signer) (gas.Dimensions, error)

SignerComplexity returns the complexity a signer adds to a transaction. It does not include the typeID of the signer.

func TxComplexity

func TxComplexity(txs ...txs.UnsignedTx) (gas.Dimensions, error)

func WarpComplexity

func WarpComplexity(message []byte) (gas.Dimensions, error)

WarpComplexity returns the complexity a warp message adds to a transaction.

Types

type Calculator

type Calculator interface {
	CalculateFee(tx txs.UnsignedTx) (uint64, error)
}

Calculator calculates the minimum required fee, in nLUX, that an unsigned transaction must pay for valid inclusion into a block.

func NewDynamicCalculator

func NewDynamicCalculator(
	weights gas.Dimensions,
	price gas.Price,
) Calculator

type SimpleCalculator

type SimpleCalculator struct {
	// contains filtered or unexported fields
}

func NewSimpleCalculator

func NewSimpleCalculator(fee uint64) *SimpleCalculator

func (*SimpleCalculator) CalculateFee

func (c *SimpleCalculator) CalculateFee(txs.UnsignedTx) (uint64, error)

type WarpMessage

type WarpMessage interface {
	GetSignature() WarpSignature
}

WarpMessage is an interface for warp messages used in fee calculations. This interface avoids importing the warp package directly.

type WarpMessageParser

type WarpMessageParser func([]byte) (WarpMessage, error)

WarpMessageParser is a function that parses warp messages. This allows the warp package to register its parser without creating a circular dependency.

type WarpSignature

type WarpSignature interface {
	NumSigners() (int, error)
}

WarpSignature is an interface for warp signatures used in fee calculations. This interface avoids importing the warp package directly.

Jump to

Keyboard shortcuts

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