state

package
v0.20.4 Latest Latest
Warning

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

Go to latest
Published: Nov 27, 2024 License: Apache-2.0 Imports: 34 Imported by: 5

Documentation

Overview

Package state provides a structure for celestia-node's ability to access state-relevant information from as well as submit transactions/messages to the celestia network.

This package contains one main interface, `Accessor`, that defines the methods available for both accessing and updating state on the celestia network.

`Accessor` will contain three different implementations:

  1. Implementation over a gRPC connection with a celestia-core node called `CoreAccess`.
  2. Implementation over a libp2p stream with a state-providing node.
  3. Implementation over a local running instance of the celestia-application (this feature will be implemented in *Full* nodes).

Index

Constants

View Source
const (
	// DefaultGasPrice specifies the default gas price value to be used when the user
	// wants to use the global minimal gas price, which is fetched from the celestia-app.
	DefaultGasPrice float64 = -1.0
)

Variables

View Source
var (
	ErrInvalidAmount = errors.New("state: amount must be greater than zero")
)

Functions

func WithMetrics

func WithMetrics(lc fx.Lifecycle, ca *CoreAccessor)

Types

type AccAddress

type AccAddress = sdk.AccAddress

AccAddress is an alias to the AccAddress type from Cosmos-SDK.

type Address

type Address struct {
	sdk.Address
}

Address is an alias to the Address type from Cosmos-SDK. It is embedded into a struct to provide a non-interface type for JSON serialization.

func (Address) MarshalJSON added in v0.11.0

func (a Address) MarshalJSON() ([]byte, error)

func (*Address) UnmarshalJSON added in v0.11.0

func (a *Address) UnmarshalJSON(data []byte) error

type Balance

type Balance = sdk.Coin

Balance is an alias to the Coin type from Cosmos-SDK.

type ConfigOption added in v0.15.0

type ConfigOption func(cfg *TxConfig)

ConfigOption is the functional option that is applied to the TxConfig instance to configure parameters.

func WithFeeGranterAddress added in v0.15.0

func WithFeeGranterAddress(granter string) ConfigOption

WithFeeGranterAddress is an option that allows you to specify a GranterAddress to pay the fees.

func WithGas added in v0.15.0

func WithGas(gas uint64) ConfigOption

WithGas is an option that allows to specify Gas. Gas will be calculated in case it wasn't specified.

func WithGasPrice added in v0.15.0

func WithGasPrice(gasPrice float64) ConfigOption

WithGasPrice is an option that allows to specify a GasPrice, which is needed to calculate the fee. In case GasPrice is not specified, the global GasPrice fetched from celestia-app will be used.

func WithKeyName added in v0.15.0

func WithKeyName(key string) ConfigOption

WithKeyName is an option that allows you to specify an KeyName, which is needed to sign the transaction. This key should be associated with the address and stored locally in the key store. Default Account will be used in case it wasn't specified.

func WithSignerAddress added in v0.15.0

func WithSignerAddress(address string) ConfigOption

WithSignerAddress is an option that allows you to specify an address, that will sign the transaction. This address must be stored locally in the key store. Default signerAddress will be used in case it wasn't specified.

type CoreAccessor

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

CoreAccessor implements service over a gRPC connection with a celestia-core node.

func NewCoreAccessor

func NewCoreAccessor(
	keyring keyring.Keyring,
	keyname string,
	getter libhead.Head[*header.ExtendedHeader],
	coreIP,
	grpcPort string,
	network string,
	options ...Option,
) (*CoreAccessor, error)

NewCoreAccessor dials the given celestia-core endpoint and constructs and returns a new CoreAccessor (state service) with the active connection.

func (*CoreAccessor) AccountAddress

func (ca *CoreAccessor) AccountAddress(context.Context) (Address, error)

func (*CoreAccessor) Balance

func (ca *CoreAccessor) Balance(ctx context.Context) (*Balance, error)

func (*CoreAccessor) BalanceForAddress

func (ca *CoreAccessor) BalanceForAddress(ctx context.Context, addr Address) (*Balance, error)

func (*CoreAccessor) BeginRedelegate

func (ca *CoreAccessor) BeginRedelegate(
	ctx context.Context,
	srcValAddr,
	dstValAddr ValAddress,
	amount Int,
	cfg *TxConfig,
) (*TxResponse, error)

func (*CoreAccessor) CancelUnbondingDelegation

func (ca *CoreAccessor) CancelUnbondingDelegation(
	ctx context.Context,
	valAddr ValAddress,
	amount,
	height Int,
	cfg *TxConfig,
) (*TxResponse, error)

func (*CoreAccessor) Delegate

func (ca *CoreAccessor) Delegate(
	ctx context.Context,
	delAddr ValAddress,
	amount Int,
	cfg *TxConfig,
) (*TxResponse, error)

func (*CoreAccessor) GrantFee added in v0.14.0

func (ca *CoreAccessor) GrantFee(
	ctx context.Context,
	grantee AccAddress,
	amount Int,
	cfg *TxConfig,
) (*TxResponse, error)

func (*CoreAccessor) LastPayForBlob added in v0.11.0

func (ca *CoreAccessor) LastPayForBlob() int64

func (*CoreAccessor) PayForBlobCount added in v0.11.0

func (ca *CoreAccessor) PayForBlobCount() int64

func (*CoreAccessor) QueryDelegation

func (ca *CoreAccessor) QueryDelegation(
	ctx context.Context,
	valAddr ValAddress,
) (*stakingtypes.QueryDelegationResponse, error)

func (*CoreAccessor) QueryRedelegations

func (ca *CoreAccessor) QueryRedelegations(
	ctx context.Context,
	srcValAddr,
	dstValAddr ValAddress,
) (*stakingtypes.QueryRedelegationsResponse, error)

func (*CoreAccessor) QueryUnbonding

func (*CoreAccessor) RevokeGrantFee added in v0.14.0

func (ca *CoreAccessor) RevokeGrantFee(
	ctx context.Context,
	grantee AccAddress,
	cfg *TxConfig,
) (*TxResponse, error)

func (*CoreAccessor) Start

func (ca *CoreAccessor) Start(ctx context.Context) error

func (*CoreAccessor) Stop

func (ca *CoreAccessor) Stop(context.Context) error

func (*CoreAccessor) SubmitPayForBlob added in v0.7.0

func (ca *CoreAccessor) SubmitPayForBlob(
	ctx context.Context,
	libBlobs []*libshare.Blob,
	cfg *TxConfig,
) (*TxResponse, error)

SubmitPayForBlob builds, signs, and synchronously submits a MsgPayForBlob with additional options defined in `TxConfig`. It blocks until the transaction is committed and returns the TxResponse. The user can specify additional options that can bee applied to the Tx.

func (*CoreAccessor) Transfer

func (ca *CoreAccessor) Transfer(
	ctx context.Context,
	addr AccAddress,
	amount Int,
	cfg *TxConfig,
) (*TxResponse, error)

func (*CoreAccessor) Undelegate

func (ca *CoreAccessor) Undelegate(
	ctx context.Context,
	delAddr ValAddress,
	amount Int,
	cfg *TxConfig,
) (*TxResponse, error)

type Int

type Int = math.Int

Int is an alias to the Int type from Cosmos-SDK.

type Option added in v0.14.0

type Option func(ca *CoreAccessor)

Option is the functional option that is applied to the coreAccessor instance to configure parameters.

type Tx

type Tx = coretypes.Tx

Tx is an alias to the Tx type from celestia-core.

type TxConfig added in v0.15.0

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

TxConfig specifies additional options that will be applied to the Tx.

func NewTxConfig added in v0.15.0

func NewTxConfig(opts ...ConfigOption) *TxConfig

NewTxConfig constructs a new TxConfig with the provided options. It starts with a DefaultGasPrice and then applies any additional options provided through the variadic parameter.

func (*TxConfig) FeeGranterAddress added in v0.15.0

func (cfg *TxConfig) FeeGranterAddress() string

func (*TxConfig) GasLimit added in v0.15.0

func (cfg *TxConfig) GasLimit() uint64

func (*TxConfig) GasPrice added in v0.15.0

func (cfg *TxConfig) GasPrice() float64

func (*TxConfig) KeyName added in v0.15.0

func (cfg *TxConfig) KeyName() string

func (*TxConfig) MarshalJSON added in v0.15.0

func (cfg *TxConfig) MarshalJSON() ([]byte, error)

func (*TxConfig) SignerAddress added in v0.15.0

func (cfg *TxConfig) SignerAddress() string

func (*TxConfig) UnmarshalJSON added in v0.15.0

func (cfg *TxConfig) UnmarshalJSON(data []byte) error

type TxResponse

type TxResponse = sdk.TxResponse

TxResponse is an alias to the TxResponse type from Cosmos-SDK.

type ValAddress

type ValAddress = sdk.ValAddress

ValAddress is an alias to the ValAddress type from Cosmos-SDK.

Jump to

Keyboard shortcuts

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