auth

package
v0.0.0 Latest Latest
Warning

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

Go to latest
Published: Apr 30, 2026 License: Apache-2.0, UNKNOWN not legal advice Imports: 0 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// module name
	ModuleName = "auth"

	// StoreKey is string representation of the store key for auth
	StoreKey = "acc"

	// QuerierRoute is the querier route for acc
	QuerierRoute = StoreKey

	// AddressStoreKeyPrefix prefix for account-by-address store.
	//
	// IMPORTANT: Session accounts are also stored under this prefix,
	// at /a/<master>/s/<session>. This means a PrefixIterator on "/a/"
	// returns BOTH regular accounts and session accounts. Use
	// AccountStoreKeyLen to filter: regular account keys are exactly
	// len("/a/") + crypto.AddressSize bytes. Anything longer is a
	// session sub-key. See IterateAccounts for the canonical filter.
	AddressStoreKeyPrefix = "/a/"

	// AccountStoreKeyLen is the exact byte length of a regular account
	// store key: len("/a/") + crypto.AddressSize. Keys under "/a/" that
	// are longer than this are session sub-keys, not regular accounts.
	// Used by IterateAccounts to skip session accounts during iteration.
	AccountStoreKeyLen = len(AddressStoreKeyPrefix) + crypto.AddressSize

	// key for gas price
	GasPriceKey = "gasPrice"
	// param key for global account number
	GlobalAccountNumberKey = "globalAccountNumber"

	// SessionStoreKeyInfix separates master and session addresses in
	// session account keys. The full key format is:
	//
	//   /a/<master 20 bytes>/s/<session 20 bytes>
	//
	// This nests sessions under the "/a/" prefix so they share IAVL
	// tree nodes with the master account (cheap second read). The "/s/"
	// infix acts as a visual delimiter for debugging raw store dumps.
	//
	// IMPORTANT: Because sessions share the "/a/" prefix, any code
	// that iterates "/a/" MUST filter by key length to exclude session
	// keys. See AccountStoreKeyLen and IterateAccounts.
	SessionStoreKeyInfix = "/s/"
)
View Source
const (
	QueryAccount        = "accounts"
	QueryGasPrice       = "gasprice"
	QuerySessions       = "sessions" // /auth/accounts/{addr}/sessions
	QuerySessionAccount = "session"  // /auth/accounts/{addr}/session/{sessionAddr}
)

query path

View Source
const (
	DefaultMaxMemoBytes           int64 = 65536
	DefaultTxSigLimit             int64 = 7
	DefaultTxSizeCostPerByte      int64 = 10
	DefaultSigVerifyCostED25519   int64 = 590
	DefaultSigVerifyCostSecp256k1 int64 = 1000

	DefaultGasPricesChangeCompressor int64 = 10
	DefaultTargetGasRatio            int64 = 70 //  70% of the MaxGas in a block

	DefaultFeeCollectorName string = "fee_collector"
)

Default parameter values

Variables

View Source
var Package = amino.RegisterPackage(amino.NewPackage(
	"github.com/gnolang/gno/tm2/pkg/sdk/auth",
	"auth",
	amino.GetCallersDirname(),
).WithDependencies(
	std.Package,
).WithTypes(
	GenesisState{}, "GenesisState",
	Params{}, "Params",
	MsgCreateSession{}, "m_create_session",
	MsgRevokeSession{}, "m_revoke_session",
	MsgRevokeAllSessions{}, "m_revoke_all_sessions",
))

Functions

func AddressStoreKey

func AddressStoreKey(addr crypto.Address) []byte

AddressStoreKey returns the store key for a regular account: /a/<addr>. The resulting key is exactly AccountStoreKeyLen bytes.

func CheckAndDeductSessionSpend

func CheckAndDeductSessionSpend(ctx sdk.Context, ak SessionAccountSetter, signerAddr crypto.Address, amount std.Coins) error

CheckAndDeductSessionSpend looks up the session for a signer from context and checks/deducts spending. Persists the updated session account to store. Returns nil if not a session tx or signer isn't using a session.

func CheckSessionSpend

func CheckSessionSpend(da std.DelegatedAccount, amount std.Coins, blockTime int64) error

CheckSessionSpend verifies that `amount` could be deducted from the session's current budget without exceeding SpendLimit — WITHOUT mutating da. Uses the same semantics as DeductSessionSpend for empty-limit rejection and period-reset, but returns the same error without touching state.

Used by the ante's session pre-check to fail fast on obviously- over-limit session-signed txs before any gas fee is deducted, which prevents the mempool-gas-bleed attack where repeated over- limit submissions would otherwise charge gas per attempt.

func DeductFees

func DeductFees(bk BankKeeperI, ctx sdk.Context, acc std.Account, collector crypto.Address, fees std.Coins) sdk.Result

DeductFees deducts fees from the given account.

NOTE: We could use the CoinKeeper (in addition to the AccountKeeper, because the CoinKeeper doesn't give us accounts), but it seems easier to do this.

func DeductSessionSpend

func DeductSessionSpend(da std.DelegatedAccount, amount std.Coins, blockTime int64) error

DeductSessionSpend checks and deducts spending from a session's spend limit. If SpendLimit is empty, any non-zero amount is rejected — the session cannot spend coins at all (useful when another signer pays gas, or for zero-send calls). Mutates da.SpendUsed in memory. Caller must persist via SetSessionAccount.

func DefaultSigVerificationGasConsumer

func DefaultSigVerificationGasConsumer(
	meter store.GasMeter, sig []byte, pubkey crypto.PubKey, params Params,
) sdk.Result

DefaultSigVerificationGasConsumer is the default implementation of SignatureVerificationGasConsumer. It consumes gas for signature verification based upon the public key type. The cost is fetched from the given params and is matched by the concrete type.

func EndBlocker

func EndBlocker(ctx sdk.Context, gk GasPriceKeeperI)

EndBlocker is called in the EndBlock(), it calcuates the minimum gas price for the next gas price

func EnsureSufficientMempoolFees

func EnsureSufficientMempoolFees(ctx sdk.Context, fee std.Fee) sdk.Result

EnsureSufficientMempoolFees verifies that the given transaction has supplied enough fees to cover a proposer's minimum fees. A result object is returned indicating success or failure.

Contract: This should only be called during CheckTx as it cannot be part of consensus.

func GetSignBytes

func GetSignBytes(chainID string, tx std.Tx, acc std.Account, genesis bool) ([]byte, error)

GetSignBytes returns a slice of bytes to sign over for a given transaction and an account.

func GetSignerAcc

func GetSignerAcc(ctx sdk.Context, ak AccountKeeper, addr crypto.Address) (std.Account, sdk.Result)

GetSignerAcc returns an account for a given address that is expected to sign a transaction.

func InitChainer

func InitChainer(ctx sdk.Context, gk GasPriceKeeperI, gp std.GasPrice)

InitChainer is called in the InitChain(), it set the initial gas price in the GasPriceKeeper store for the next gas price

func NewAnteHandler

func NewAnteHandler(ak AccountKeeper, bank BankKeeperI, sigGasConsumer SignatureVerificationGasConsumer, opts AnteOptions) sdk.AnteHandler

NewAnteHandler returns an AnteHandler that checks and increments sequence numbers, checks signatures & account numbers, and deducts fees from the first signer.

func NewHandler

func NewHandler(acck AccountKeeper, gpKpr GasPriceKeeper) authHandler

NewHandler returns a handler for "auth" type messages.

func SessionPrefixKey

func SessionPrefixKey(master crypto.Address) []byte

SessionPrefixKey returns the prefix for all sessions of a master: /a/<master>/s/. Used for prefix iteration and RevokeAll.

func SessionStoreKey

func SessionStoreKey(master, session crypto.Address) []byte

SessionStoreKey returns the store key for a session account: /a/<master>/s/<session>. This key is longer than AccountStoreKeyLen, which is how IterateAccounts distinguishes sessions from regular accounts.

func SetGasMeter

func SetGasMeter(ctx sdk.Context, gasLimit int64) sdk.Context

SetGasMeter returns a new context with a gas meter set from a given context.

func ValidateGenesis

func ValidateGenesis(data GenesisState) error

ValidateGenesis performs basic validation of genesis data returning an error for any failed validation criteria.

func ValidateMemo

func ValidateMemo(tx std.Tx, params Params) sdk.Result

ValidateMemo validates the memo size.

func ValidateSigCount

func ValidateSigCount(tx std.Tx, params Params) sdk.Result

ValidateSigCount validates that the transaction has a valid cumulative total amount of signatures.

Types

type AccountKeeper

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

Concrete implementation of AccountKeeper.

func NewAccountKeeper

func NewAccountKeeper(
	key store.StoreKey, pk params.ParamsKeeperI,
	proto func() std.Account,
	sessionProto func() std.Account,
) AccountKeeper

NewAccountKeeper returns a new AccountKeeper that uses go-amino to (binary) encode and decode concrete std.Accounts.

func (AccountKeeper) ExportGenesis

func (ak AccountKeeper) ExportGenesis(ctx sdk.Context) GenesisState

ExportGenesis returns a GenesisState for a given context and keeper

func (AccountKeeper) FeeCollectorAddress

func (ak AccountKeeper) FeeCollectorAddress(ctx sdk.Context) crypto.Address

func (AccountKeeper) GetAccount

func (ak AccountKeeper) GetAccount(ctx sdk.Context, addr crypto.Address) std.Account

GetAccount returns a specific account in the AccountKeeper.

func (AccountKeeper) GetAllAccounts

func (ak AccountKeeper) GetAllAccounts(ctx sdk.Context) []std.Account

GetAllAccounts returns all regular accounts (excludes session accounts). Session accounts are stored under the same "/a/" prefix but are filtered out by IterateAccounts via key length. Use IterateSessions to access sessions.

func (AccountKeeper) GetNextAccountNumber

func (ak AccountKeeper) GetNextAccountNumber(ctx sdk.Context) uint64

GetNextAccountNumber Returns and increments the global account number counter

func (AccountKeeper) GetParams

func (ak AccountKeeper) GetParams(ctx sdk.Context) Params

func (AccountKeeper) GetPubKey

func (ak AccountKeeper) GetPubKey(ctx sdk.Context, addr crypto.Address) (crypto.PubKey, error)

GetPubKey Returns the PubKey of the account at address

func (AccountKeeper) GetSequence

func (ak AccountKeeper) GetSequence(ctx sdk.Context, addr crypto.Address) (uint64, error)

GetSequence Returns the Sequence of the account at address

func (AccountKeeper) GetSessionAccount

func (ak AccountKeeper) GetSessionAccount(ctx sdk.Context, master, session crypto.Address) std.Account

GetSessionAccount returns a session account stored at /a/<master>/s/<session>.

func (AccountKeeper) InitGenesis

func (ak AccountKeeper) InitGenesis(ctx sdk.Context, data GenesisState)

InitGenesis - Init store state from genesis data

func (AccountKeeper) IterateAccounts

func (ak AccountKeeper) IterateAccounts(ctx sdk.Context, process func(std.Account) (stop bool))

IterateAccounts implements AccountKeeper. It iterates over regular accounts only — session accounts (which are also stored under the "/a/" prefix at /a/<master>/s/<session>) are skipped by checking key length. Regular account keys are exactly AccountStoreKeyLen bytes; session sub-keys are longer.

func (AccountKeeper) IterateSessions

func (ak AccountKeeper) IterateSessions(ctx sdk.Context, master crypto.Address, cb func(std.Account) bool)

IterateSessions iterates over all sessions of a master account.

func (AccountKeeper) Logger

func (ak AccountKeeper) Logger(ctx sdk.Context) *slog.Logger

Logger returns a module-specific logger.

func (AccountKeeper) NewAccountWithAddress

func (ak AccountKeeper) NewAccountWithAddress(ctx sdk.Context, addr crypto.Address) std.Account

NewAccountWithAddress implements AccountKeeper.

func (AccountKeeper) NewSessionAccount

func (ak AccountKeeper) NewSessionAccount(ctx sdk.Context, master crypto.Address, pubKey crypto.PubKey) std.Account

NewSessionAccount creates a new session account using the session prototype.

func (AccountKeeper) RemoveAccount

func (ak AccountKeeper) RemoveAccount(ctx sdk.Context, acc std.Account)

RemoveAccount removes an account for the account mapper store. NOTE: this will cause supply invariant violation if called

func (AccountKeeper) RemoveAllSessions

func (ak AccountKeeper) RemoveAllSessions(ctx sdk.Context, master crypto.Address)

RemoveAllSessions deletes all session accounts for a master via prefix delete.

func (AccountKeeper) RemoveSessionAccount

func (ak AccountKeeper) RemoveSessionAccount(ctx sdk.Context, master, session crypto.Address)

RemoveSessionAccount deletes a session account.

func (AccountKeeper) SetAccount

func (ak AccountKeeper) SetAccount(ctx sdk.Context, acc std.Account)

SetAccount implements AccountKeeper.

func (AccountKeeper) SetFeesCollectorAddress

func (ak AccountKeeper) SetFeesCollectorAddress(ctx sdk.Context, addr crypto.Address)

func (AccountKeeper) SetParams

func (ak AccountKeeper) SetParams(ctx sdk.Context, params Params) error

func (AccountKeeper) SetSessionAccount

func (ak AccountKeeper) SetSessionAccount(ctx sdk.Context, master crypto.Address, acc std.Account)

SetSessionAccount stores a session account at /a/<master>/s/<session>.

func (AccountKeeper) WillSetParam

func (ak AccountKeeper) WillSetParam(ctx sdk.Context, key string, value any)

type AccountKeeperI

type AccountKeeperI interface {
	NewAccountWithAddress(ctx sdk.Context, addr crypto.Address) std.Account
	GetAccount(ctx sdk.Context, addr crypto.Address) std.Account
	GetAllAccounts(ctx sdk.Context) []std.Account
	SetAccount(ctx sdk.Context, acc std.Account)
	IterateAccounts(ctx sdk.Context, process func(std.Account) bool)
	InitGenesis(ctx sdk.Context, data GenesisState)
	GetParams(ctx sdk.Context) Params
}

AccountKeeper manages access to accounts.

type AnteOptions

type AnteOptions struct {
	// If verifyGenesisSignatures is false, does not check signatures when Height==0.
	// This is useful for development, and maybe production chains.
	// Always check your settings and inspect genesis transactions.
	VerifyGenesisSignatures bool
}

type AuthParamsContextKey

type AuthParamsContextKey struct{}

type BankKeeperI

type BankKeeperI interface {
	SendCoins(ctx sdk.Context, fromAddr crypto.Address, toAddr crypto.Address, amt std.Coins) error
	SendCoinsUnrestricted(ctx sdk.Context, fromAddr crypto.Address, toAddr crypto.Address, amt std.Coins) error
}

Limited interface only needed for auth.

type DummyBankKeeper

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

DummyBankKeeper defines a supply keeper used only for testing to avoid circle dependencies

func NewDummyBankKeeper

func NewDummyBankKeeper(acck AccountKeeper, prmk params.ParamsKeeperI) DummyBankKeeper

NewDummyBankKeeper creates a DummyBankKeeper instance

func (DummyBankKeeper) SendCoins

func (bankk DummyBankKeeper) SendCoins(ctx sdk.Context, fromAddr crypto.Address, toAddr crypto.Address, amt std.Coins) error

SendCoins for the dummy supply keeper

func (DummyBankKeeper) SendCoinsUnrestricted

func (bankk DummyBankKeeper) SendCoinsUnrestricted(ctx sdk.Context, fromAddr crypto.Address, toAddr crypto.Address, amt std.Coins) error

func (DummyBankKeeper) WillSetParam

func (bankk DummyBankKeeper) WillSetParam(ctx sdk.Context, key string, value any)

WillSetParam checks if the key contains the module's parameter key prefix and updates the module parameter accordingly.

type GasPriceContextKey

type GasPriceContextKey struct{}

type GasPriceKeeper

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

func NewGasPriceKeeper

func NewGasPriceKeeper(key store.StoreKey) GasPriceKeeper

GasPriceKeeper The GasPriceKeeper stores the history of gas prices and calculates new gas price with formula parameters

func (GasPriceKeeper) LastGasPrice

func (gk GasPriceKeeper) LastGasPrice(ctx sdk.Context) std.GasPrice

It returns the gas price for the last block.

func (GasPriceKeeper) SetGasPrice

func (gk GasPriceKeeper) SetGasPrice(ctx sdk.Context, gp std.GasPrice)

SetGasPrice is called in InitChainer to store initial gas price set in the genesis

func (GasPriceKeeper) UpdateGasPrice

func (gk GasPriceKeeper) UpdateGasPrice(ctx sdk.Context)

We store the history. If the formula changes, we can replay blocks and apply the formula to a specific block range. The new gas price is calculated in EndBlock().

type GasPriceKeeperI

type GasPriceKeeperI interface {
	LastGasPrice(ctx sdk.Context) std.GasPrice
	SetGasPrice(ctx sdk.Context, gp std.GasPrice)
	UpdateGasPrice(ctx sdk.Context)
}

type GenesisState

type GenesisState struct {
	Params Params `json:"params" yaml:"params"`
}

GenesisState - all state that must be provided at genesis

func DefaultGenesisState

func DefaultGenesisState() GenesisState

DefaultGenesisState - Return a default genesis state

func NewGenesisState

func NewGenesisState(params Params) GenesisState

NewGenesisState - Create a new genesis state

func (GenesisState) MarshalBinary2

func (goo GenesisState) MarshalBinary2(cdc *amino.Codec, buf []byte, offset int) (int, error)

func (GenesisState) SizeBinary2

func (goo GenesisState) SizeBinary2(cdc *amino.Codec) (int, error)

func (*GenesisState) UnmarshalBinary2

func (goo *GenesisState) UnmarshalBinary2(cdc *amino.Codec, bz []byte, anyDepth int) error

type MsgCreateSession

type MsgCreateSession struct {
	Creator     crypto.Address `json:"creator" yaml:"creator"`
	SessionKey  crypto.PubKey  `json:"session_key" yaml:"session_key"`
	ExpiresAt   int64          `json:"expires_at" yaml:"expires_at"`               // unix timestamp; 0 = no expiry
	AllowPaths  []string       `json:"allow_paths,omitempty" yaml:"allow_paths"`   // realm path prefixes; empty = unrestricted
	SpendLimit  std.Coins      `json:"spend_limit,omitempty" yaml:"spend_limit"`   // max spend per period; empty = no spending
	SpendPeriod int64          `json:"spend_period,omitempty" yaml:"spend_period"` // seconds; 0 = lifetime cap
}

MsgCreateSession creates a new session key on the creator's account.

ExpiresAt is a unix timestamp; 0 means no expiry (valid until revoked). SpendLimit caps coin spending per period (gas fees, MsgCall.Send, etc.). Empty SpendLimit means no spending is allowed — the session can only sign txs where another signer pays gas, or call functions with zero Send. SpendPeriod is in seconds; 0 means SpendLimit is a lifetime cap.

func (MsgCreateSession) GetSignBytes

func (msg MsgCreateSession) GetSignBytes() []byte

func (MsgCreateSession) GetSigners

func (msg MsgCreateSession) GetSigners() []crypto.Address

func (MsgCreateSession) MarshalBinary2

func (goo MsgCreateSession) MarshalBinary2(cdc *amino.Codec, buf []byte, offset int) (int, error)

func (MsgCreateSession) Route

func (msg MsgCreateSession) Route() string

func (MsgCreateSession) SizeBinary2

func (goo MsgCreateSession) SizeBinary2(cdc *amino.Codec) (int, error)

func (MsgCreateSession) Type

func (msg MsgCreateSession) Type() string

func (*MsgCreateSession) UnmarshalBinary2

func (goo *MsgCreateSession) UnmarshalBinary2(cdc *amino.Codec, bz []byte, anyDepth int) error

func (MsgCreateSession) ValidateBasic

func (msg MsgCreateSession) ValidateBasic() error

type MsgRevokeAllSessions

type MsgRevokeAllSessions struct {
	Creator crypto.Address `json:"creator" yaml:"creator"`
}

MsgRevokeAllSessions removes all sessions from the creator's account.

func (MsgRevokeAllSessions) GetSignBytes

func (msg MsgRevokeAllSessions) GetSignBytes() []byte

func (MsgRevokeAllSessions) GetSigners

func (msg MsgRevokeAllSessions) GetSigners() []crypto.Address

func (MsgRevokeAllSessions) MarshalBinary2

func (goo MsgRevokeAllSessions) MarshalBinary2(cdc *amino.Codec, buf []byte, offset int) (int, error)

func (MsgRevokeAllSessions) Route

func (msg MsgRevokeAllSessions) Route() string

func (MsgRevokeAllSessions) SizeBinary2

func (goo MsgRevokeAllSessions) SizeBinary2(cdc *amino.Codec) (int, error)

func (MsgRevokeAllSessions) Type

func (msg MsgRevokeAllSessions) Type() string

func (*MsgRevokeAllSessions) UnmarshalBinary2

func (goo *MsgRevokeAllSessions) UnmarshalBinary2(cdc *amino.Codec, bz []byte, anyDepth int) error

func (MsgRevokeAllSessions) ValidateBasic

func (msg MsgRevokeAllSessions) ValidateBasic() error

type MsgRevokeSession

type MsgRevokeSession struct {
	Creator    crypto.Address `json:"creator" yaml:"creator"`
	SessionKey crypto.PubKey  `json:"session_key" yaml:"session_key"`
}

MsgRevokeSession removes a specific session from the creator's account.

func (MsgRevokeSession) GetSignBytes

func (msg MsgRevokeSession) GetSignBytes() []byte

func (MsgRevokeSession) GetSigners

func (msg MsgRevokeSession) GetSigners() []crypto.Address

func (MsgRevokeSession) MarshalBinary2

func (goo MsgRevokeSession) MarshalBinary2(cdc *amino.Codec, buf []byte, offset int) (int, error)

func (MsgRevokeSession) Route

func (msg MsgRevokeSession) Route() string

func (MsgRevokeSession) SizeBinary2

func (goo MsgRevokeSession) SizeBinary2(cdc *amino.Codec) (int, error)

func (MsgRevokeSession) Type

func (msg MsgRevokeSession) Type() string

func (*MsgRevokeSession) UnmarshalBinary2

func (goo *MsgRevokeSession) UnmarshalBinary2(cdc *amino.Codec, bz []byte, anyDepth int) error

func (MsgRevokeSession) ValidateBasic

func (msg MsgRevokeSession) ValidateBasic() error

type Params

type Params struct {
	MaxMemoBytes              int64            `json:"max_memo_bytes" yaml:"max_memo_bytes"`
	TxSigLimit                int64            `json:"tx_sig_limit" yaml:"tx_sig_limit"`
	TxSizeCostPerByte         int64            `json:"tx_size_cost_per_byte" yaml:"tx_size_cost_per_byte"`
	SigVerifyCostED25519      int64            `json:"sig_verify_cost_ed25519" yaml:"sig_verify_cost_ed25519"`
	SigVerifyCostSecp256k1    int64            `json:"sig_verify_cost_secp256k1" yaml:"sig_verify_cost_secp256k1"`
	GasPricesChangeCompressor int64            `json:"gas_price_change_compressor" yaml:"gas_price_change_compressor"`
	TargetGasRatio            int64            `json:"target_gas_ratio" yaml:"target_gas_ratio"`
	InitialGasPrice           std.GasPrice     `json:"initial_gasprice"`
	UnrestrictedAddrs         []crypto.Address `json:"unrestricted_addrs" yaml:"unrestricted_addrs"`
	FeeCollector              crypto.Address   `json:"fee_collector" yaml:"fee_collector"`
}

Params defines the parameters for the auth module.

func DefaultParams

func DefaultParams() Params

DefaultParams returns a default set of parameters.

func NewParams

func NewParams(maxMemoBytes, txSigLimit, txSizeCostPerByte,
	sigVerifyCostED25519, sigVerifyCostSecp256k1, gasPricesChangeCompressor, targetGasRatio int64,
	feeCollector crypto.Address,
) Params

NewParams creates a new Params object

func (Params) Equals

func (p Params) Equals(p2 Params) bool

Equals returns a boolean determining if two Params types are identical.

func (Params) MarshalBinary2

func (goo Params) MarshalBinary2(cdc *amino.Codec, buf []byte, offset int) (int, error)

func (Params) SizeBinary2

func (goo Params) SizeBinary2(cdc *amino.Codec) (int, error)

func (Params) String

func (p Params) String() string

String implements the stringer interface.

func (*Params) UnmarshalBinary2

func (goo *Params) UnmarshalBinary2(cdc *amino.Codec, bz []byte, anyDepth int) error

func (Params) Validate

func (p Params) Validate() error

type SessionAccountSetter

type SessionAccountSetter interface {
	SetSessionAccount(ctx sdk.Context, master crypto.Address, acc std.Account)
}

SessionAccountSetter can persist session accounts after spend deduction.

type SignatureVerificationGasConsumer

type SignatureVerificationGasConsumer = func(meter store.GasMeter, sig []byte, pubkey crypto.PubKey, params Params) sdk.Result

SignatureVerificationGasConsumer is the type of function that is used to both consume gas when verifying signatures and also to accept or reject different types of PubKey's. This is where apps can define their own PubKey

Jump to

Keyboard shortcuts

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