xvm

package
v1.24.15 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2026 License: BSD-3-Clause Imports: 62 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultConfig = Config{
	Network:          network.DefaultConfig,
	ChecksumsEnabled: true,
	Config: config.Config{
		TxFee:            1000,
		CreateAssetTxFee: 10000,
	},
}
View Source
var ErrRejected = errors.New("rejected")

Functions

func AwaitTxAccepted

func AwaitTxAccepted(
	c *Client,
	ctx context.Context,
	txID ids.ID,
	freq time.Duration,
	options ...rpc.Option,
) error

AwaitTxAccepted waits for a transaction to be accepted

func NewPubSubFilterer added in v1.1.11

func NewPubSubFilterer(tx *txs.Tx) pubsub.Filterer

Types

type AssetDefinition

type AssetDefinition struct {
	Name         string                   `json:"name"`
	Symbol       string                   `json:"symbol"`
	Denomination avajson.Uint8            `json:"denomination"`
	InitialState map[string][]interface{} `json:"initialState"`
	Memo         string                   `json:"memo"`
}

type AssetIDChangeAddr added in v1.1.11

type AssetIDChangeAddr struct {
	FormattedAssetID
	JSONChangeAddr
}

AssetIDChangeAddr is an asset ID and a change address

type AssetInitialState

type AssetInitialState struct {
	FixedCap    []GenesisHolder
	VariableCap []GenesisOwners
}

AssetInitialState describes the initial state of an asset

type BCLookup added in v1.17.2

type BCLookup interface {
	Lookup(string) (ids.ID, error)
	PrimaryAlias(ids.ID) (string, error)
}

BCLookup provides blockchain alias lookup

type Balance

type Balance struct {
	AssetID string         `json:"asset"`
	Balance avajson.Uint64 `json:"balance"`
}

type BuildGenesisArgs added in v1.1.11

type BuildGenesisArgs struct {
	NetworkID   avajson.Uint32             `json:"networkID"`
	GenesisData map[string]AssetDefinition `json:"genesisData"`
	Encoding    formatting.Encoding        `json:"encoding"`
}

BuildGenesisArgs are arguments for BuildGenesis

type BuildGenesisReply added in v1.1.11

type BuildGenesisReply struct {
	Bytes    string              `json:"bytes"`
	Encoding formatting.Encoding `json:"encoding"`
}

BuildGenesisReply is the reply from BuildGenesis

type Client

type Client struct {
	Requester rpc.EndpointRequester
}

Client for interacting with the Exchange VM (X-Chain)

func NewClient

func NewClient(uri, chain string) *Client

NewClient returns an Exchange VM client for interacting with the X-Chain

func (*Client) GetAllBalances deprecated

func (c *Client) GetAllBalances(
	ctx context.Context,
	addr ids.ShortID,
	includePartial bool,
	options ...rpc.Option,
) ([]Balance, error)

GetAllBalances returns all asset balances for addr.

Deprecated: GetUTXOs should be used instead.

func (*Client) GetAssetDescription

func (c *Client) GetAssetDescription(ctx context.Context, assetID string, options ...rpc.Option) (*GetAssetDescriptionReply, error)

GetAssetDescription returns a description of assetID.

func (*Client) GetAtomicUTXOs

func (c *Client) GetAtomicUTXOs(
	ctx context.Context,
	addrs []ids.ShortID,
	sourceChain string,
	limit uint32,
	startAddress ids.ShortID,
	startUTXOID ids.ID,
	options ...rpc.Option,
) ([][]byte, ids.ShortID, ids.ID, error)

GetAtomicUTXOs returns the byte representation of the atomic UTXOs controlled by addrs from sourceChain.

func (*Client) GetBalance deprecated

func (c *Client) GetBalance(
	ctx context.Context,
	addr ids.ShortID,
	assetID string,
	includePartial bool,
	options ...rpc.Option,
) (*GetBalanceReply, error)

GetBalance returns the balance of assetID held by addr.

If includePartial is set, balance includes partial owned (i.e. in a multisig) funds.

Deprecated: GetUTXOs should be used instead.

func (*Client) GetBlock

func (c *Client) GetBlock(ctx context.Context, blkID ids.ID, options ...rpc.Option) ([]byte, error)

GetBlock returns the block with the given id.

func (*Client) GetBlockByHeight

func (c *Client) GetBlockByHeight(ctx context.Context, height uint64, options ...rpc.Option) ([]byte, error)

GetBlockByHeight returns the block at the given height.

func (*Client) GetHeight

func (c *Client) GetHeight(ctx context.Context, options ...rpc.Option) (uint64, error)

GetHeight returns the height of the last accepted block.

func (*Client) GetTx

func (c *Client) GetTx(ctx context.Context, txID ids.ID, options ...rpc.Option) ([]byte, error)

GetTx returns the byte representation of txID.

func (*Client) GetTxFee

func (c *Client) GetTxFee(ctx context.Context, options ...rpc.Option) (uint64, uint64, error)

GetTxFee returns the cost to issue certain transactions.

func (*Client) GetTxStatus deprecated

func (c *Client) GetTxStatus(ctx context.Context, txID ids.ID, options ...rpc.Option) (choices.Status, error)

GetTxStatus returns the status of [txID]

Deprecated: GetTxStatus only returns Accepted or Unknown, GetTx should be used instead to determine if the tx was accepted.

func (*Client) GetUTXOs

func (c *Client) GetUTXOs(
	ctx context.Context,
	addrs []ids.ShortID,
	limit uint32,
	startAddress ids.ShortID,
	startUTXOID ids.ID,
	options ...rpc.Option,
) ([][]byte, ids.ShortID, ids.ID, error)

GetUTXOs returns the byte representation of the UTXOs controlled by addrs.

func (*Client) IssueTx

func (c *Client) IssueTx(ctx context.Context, txBytes []byte, options ...rpc.Option) (ids.ID, error)

IssueTx issues a transaction to a node and returns the TxID

type Config

type Config struct {
	Network          network.Config `json:"network"`
	ChecksumsEnabled bool           `json:"checksumsEnabled"`
	config.Config
}

func ParseConfig

func ParseConfig(configBytes []byte) (Config, error)

type CreateAssetArgs added in v1.1.11

type CreateAssetArgs struct {
	JSONSpendHeader           // User, password, from addrs, change addr
	Name            string    `json:"name"`
	Symbol          string    `json:"symbol"`
	Denomination    byte      `json:"denomination"`
	InitialHolders  []*Holder `json:"initialHolders"`
	MinterSets      []Owners  `json:"minterSets"`
}

CreateAssetArgs are arguments for passing into CreateAsset

type CreateNFTAssetArgs added in v1.1.11

type CreateNFTAssetArgs struct {
	JSONSpendHeader          // User, password, from addrs, change addr
	Name            string   `json:"name"`
	Symbol          string   `json:"symbol"`
	MinterSets      []Owners `json:"minterSets"`
}

CreateNFTAssetArgs are arguments for passing into CreateNFTAsset requests

type ExportArgs added in v1.1.11

type ExportArgs struct {
	// User, password, from addrs, change addr
	JSONSpendHeader
	// Amount of nLUX to send
	Amount avajson.Uint64 `json:"amount"`

	// Chain the funds are going to. Optional. Used if To address does not include the chainID.
	TargetChain string `json:"targetChain"`

	// ID of the address that will receive the LUX. This address may include the
	// chainID, which is used to determine what the destination chain is.
	To string `json:"to"`

	AssetID string `json:"assetID"`
}

ExportArgs are arguments for passing into ExportAVA requests

type ExportKeyArgs added in v1.1.11

type ExportKeyArgs struct {
	apitypes.UserPass
	Address string `json:"address"`
}

ExportKeyArgs are arguments for ExportKey

type ExportKeyReply added in v1.1.11

type ExportKeyReply struct {
	// The decrypted PrivateKey for the Address provided in the arguments
	PrivateKey *secp256k1.PrivateKey `json:"privateKey"`
}

ExportKeyReply is the response for ExportKey

type Factory

type Factory struct {
	config.Config
}

func (*Factory) New

func (f *Factory) New(log.Logger) (interface{}, error)

type FormattedAssetID

type FormattedAssetID struct {
	AssetID ids.ID `json:"assetID"`
}

FormattedAssetID defines a JSON formatted struct containing an assetID as a string

type Genesis

type Genesis struct {
	Txs []*GenesisAsset `serialize:"true"`
}

Genesis represents the genesis state of the XVM

func NewGenesis

func NewGenesis(
	networkID uint32,
	genesisData map[string]GenesisAssetDefinition,
) (*Genesis, error)

NewGenesis creates a new Genesis from genesis data

func (*Genesis) Bytes

func (g *Genesis) Bytes() ([]byte, error)

Bytes serializes the Genesis to bytes using the XVM genesis codec

type GenesisAsset

type GenesisAsset struct {
	Alias             string `serialize:"true"`
	txs.CreateAssetTx `serialize:"true"`
}

GenesisAsset represents an asset in the genesis block

func (*GenesisAsset) Compare

func (g *GenesisAsset) Compare(other *GenesisAsset) int

Compare implements utils.Sortable for GenesisAsset

type GenesisAssetDefinition added in v1.24.12

type GenesisAssetDefinition struct {
	Name         string
	Symbol       string
	Denomination byte
	InitialState AssetInitialState
	Memo         []byte
}

GenesisAssetDefinition describes a genesis asset and its initial state

type GenesisHolder added in v1.24.12

type GenesisHolder struct {
	Amount  uint64
	Address string
}

GenesisHolder describes how much asset is owned by an address

type GenesisOwners added in v1.24.12

type GenesisOwners struct {
	Threshold uint32
	Minters   []string
}

GenesisOwners describes who can perform an action

type GetAddressTxsArgs added in v1.1.11

type GetAddressTxsArgs struct {
	apitypes.JSONAddress
	// Cursor used as a page index / offset
	Cursor avajson.Uint64 `json:"cursor"`
	// PageSize num of items per page
	PageSize avajson.Uint64 `json:"pageSize"`
	// AssetID defaulted to LUX if omitted or left blank
	AssetID string `json:"assetID"`
}

type GetAddressTxsReply added in v1.1.11

type GetAddressTxsReply struct {
	TxIDs []ids.ID `json:"txIDs"`
	// Cursor used as a page index / offset
	Cursor avajson.Uint64 `json:"cursor"`
}

type GetAllBalancesArgs

type GetAllBalancesArgs struct {
	apitypes.JSONAddress
	IncludePartial bool `json:"includePartial"`
}

type GetAllBalancesReply

type GetAllBalancesReply struct {
	Balances []Balance `json:"balances"`
}

GetAllBalancesReply is the response from a call to GetAllBalances

type GetAssetDescriptionArgs

type GetAssetDescriptionArgs struct {
	AssetID string `json:"assetID"`
}

GetAssetDescriptionArgs are arguments for passing into GetAssetDescription requests

type GetAssetDescriptionReply

type GetAssetDescriptionReply struct {
	FormattedAssetID
	Name         string        `json:"name"`
	Symbol       string        `json:"symbol"`
	Denomination avajson.Uint8 `json:"denomination"`
}

GetAssetDescriptionReply defines the GetAssetDescription replies returned from the API

type GetBalanceArgs

type GetBalanceArgs struct {
	Address        string `json:"address"`
	AssetID        string `json:"assetID"`
	IncludePartial bool   `json:"includePartial"`
}

GetBalanceArgs are arguments for passing into GetBalance requests

type GetBalanceReply

type GetBalanceReply struct {
	Balance avajson.Uint64 `json:"balance"`
	UTXOIDs []lux.UTXOID   `json:"utxoIDs"`
}

GetBalanceReply defines the GetBalance replies returned from the API

type GetCurrentValidatorOutput added in v1.17.2

type GetCurrentValidatorOutput struct {
	NodeID    ids.NodeID
	PublicKey interface{}
	Weight    uint64
}

GetCurrentValidatorOutput represents current validator info

type GetTxFeeReply

type GetTxFeeReply struct {
	TxFee            json.Uint64 `json:"txFee"`
	CreateAssetTxFee json.Uint64 `json:"createAssetTxFee"`
}

GetTxFeeReply is the response from a GetTxFee call

type GetTxStatusReply

type GetTxStatusReply struct {
	Status choices.Status `json:"status"`
}

GetTxStatusReply defines the GetTxStatus replies returned from the API

type Holder

type Holder struct {
	Amount  avajson.Uint64 `json:"amount"`
	Address string         `json:"address"`
}

Holder describes how much an address owns of an asset

type ImportArgs added in v1.1.11

type ImportArgs struct {
	// User that controls To
	apitypes.UserPass

	// Chain the funds are coming from
	SourceChain string `json:"sourceChain"`

	// Address receiving the imported LUX
	To string `json:"to"`
}

ImportArgs are arguments for passing into Import requests

type ImportKeyArgs added in v1.1.11

type ImportKeyArgs struct {
	apitypes.UserPass
	PrivateKey *secp256k1.PrivateKey `json:"privateKey"`
}

ImportKeyArgs are arguments for ImportKey

type ImportKeyReply added in v1.1.11

type ImportKeyReply struct {
	// The address controlled by the PrivateKey provided in the arguments
	Address string `json:"address"`
}

ImportKeyReply is the response for ImportKey

type JSONChangeAddr added in v1.24.12

type JSONChangeAddr struct {
	ChangeAddr string `json:"changeAddr"`
}

JSONChangeAddr contains the change address

type JSONFromAddrs added in v1.24.12

type JSONFromAddrs struct {
	From []string `json:"from"`
}

JSONFromAddrs contains the addresses to spend from

type JSONSpendHeader added in v1.24.12

type JSONSpendHeader struct {
	apitypes.UserPass
	JSONFromAddrs
	JSONChangeAddr
}

JSONSpendHeader includes common fields for spend transactions

type JSONTxIDChangeAddr added in v1.24.12

type JSONTxIDChangeAddr struct {
	apitypes.JSONTxID
	JSONChangeAddr
}

JSONTxIDChangeAddr contains a transaction ID and a change address

type MintArgs added in v1.1.11

type MintArgs struct {
	JSONSpendHeader                // User, password, from addrs, change addr
	Amount          avajson.Uint64 `json:"amount"`
	AssetID         string         `json:"assetID"`
	To              string         `json:"to"`
}

MintArgs are arguments for passing into Mint requests

type MintNFTArgs added in v1.1.11

type MintNFTArgs struct {
	JSONSpendHeader                     // User, password, from addrs, change addr
	AssetID         string              `json:"assetID"`
	Payload         string              `json:"payload"`
	To              string              `json:"to"`
	Encoding        formatting.Encoding `json:"encoding"`
}

MintNFTArgs are arguments for passing into MintNFT requests

type Owners

type Owners struct {
	Threshold avajson.Uint32 `json:"threshold"`
	Minters   []string       `json:"minters"`
}

Owners describes who can perform an action

type SendArgs added in v1.1.11

type SendArgs struct {
	// User, password, from addrs, change addr
	JSONSpendHeader

	// The amount, assetID, and destination to send funds to
	SendOutput

	// Memo field
	Memo string `json:"memo"`
}

SendArgs are arguments for passing into Send requests

type SendMultipleArgs added in v1.1.11

type SendMultipleArgs struct {
	// User, password, from addrs, change addr
	JSONSpendHeader

	// The outputs of the transaction
	Outputs []SendOutput `json:"outputs"`

	// Memo field
	Memo string `json:"memo"`
}

SendMultipleArgs are arguments for passing into SendMultiple requests

type SendNFTArgs added in v1.1.11

type SendNFTArgs struct {
	JSONSpendHeader                // User, password, from addrs, change addr
	AssetID         string         `json:"assetID"`
	GroupID         avajson.Uint32 `json:"groupID"`
	To              string         `json:"to"`
}

SendNFTArgs are arguments for passing into SendNFT requests

type SendOutput added in v1.1.11

type SendOutput struct {
	// The amount of funds to send
	Amount avajson.Uint64 `json:"amount"`

	// ID of the asset being sent
	AssetID string `json:"assetID"`

	// Address of the recipient
	To string `json:"to"`
}

SendOutput specifies that [Amount] of asset [AssetID] be sent to [To]

type Service

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

Service defines the base service for the asset vm

func (*Service) CreateAddress added in v1.1.11

func (s *Service) CreateAddress(_ *http.Request, args *apitypes.UserPass, reply *apitypes.JSONAddress) error

CreateAddress creates an address for the user [args.Username]

func (*Service) CreateAsset added in v1.1.11

func (s *Service) CreateAsset(_ *http.Request, args *CreateAssetArgs, reply *AssetIDChangeAddr) error

CreateAsset returns ID of the newly created asset

func (*Service) CreateFixedCapAsset added in v1.1.11

func (s *Service) CreateFixedCapAsset(r *http.Request, args *CreateAssetArgs, reply *AssetIDChangeAddr) error

CreateFixedCapAsset returns ID of the newly created asset

func (*Service) CreateNFTAsset added in v1.1.11

func (s *Service) CreateNFTAsset(_ *http.Request, args *CreateNFTAssetArgs, reply *AssetIDChangeAddr) error

CreateNFTAsset returns ID of the newly created asset

func (*Service) CreateVariableCapAsset added in v1.1.11

func (s *Service) CreateVariableCapAsset(r *http.Request, args *CreateAssetArgs, reply *AssetIDChangeAddr) error

CreateVariableCapAsset returns ID of the newly created asset

func (*Service) Export added in v1.1.11

func (s *Service) Export(_ *http.Request, args *ExportArgs, reply *JSONTxIDChangeAddr) error

Export sends an asset from this chain to the P/C-Chain. After this tx is accepted, the LUX must be imported to the P/C-chain with an importTx. Returns the ID of the newly created atomic transaction

func (*Service) ExportKey added in v1.1.11

func (s *Service) ExportKey(_ *http.Request, args *ExportKeyArgs, reply *ExportKeyReply) error

ExportKey returns a private key from the provided user

func (*Service) GetAddressTxs added in v1.1.11

func (s *Service) GetAddressTxs(_ *http.Request, args *GetAddressTxsArgs, reply *GetAddressTxsReply) error

GetAddressTxs returns list of transactions for a given address

func (*Service) GetAllBalances

func (s *Service) GetAllBalances(_ *http.Request, args *GetAllBalancesArgs, reply *GetAllBalancesReply) error

GetAllBalances returns a map where:

Key: ID of an asset such that [args.Address] has a non-zero balance of the asset Value: The balance of the asset held by the address

If ![args.IncludePartial], returns only unlocked balance/UTXOs with a 1-out-of-1 multisig. Otherwise, returned balance/UTXOs includes assets held only partially by the address, and includes balances with locktime in the future.

func (*Service) GetAssetDescription

func (s *Service) GetAssetDescription(_ *http.Request, args *GetAssetDescriptionArgs, reply *GetAssetDescriptionReply) error

GetAssetDescription creates an empty account with the name passed in

func (*Service) GetBalance

func (s *Service) GetBalance(_ *http.Request, args *GetBalanceArgs, reply *GetBalanceReply) error

GetBalance returns the balance of an asset held by an address. If ![args.IncludePartial], returns only the balance held solely (1 out of 1 multisig) by the address and with a locktime in the past. Otherwise, returned balance includes assets held only partially by the address, and includes balances with locktime in the future.

func (*Service) GetBlock

func (s *Service) GetBlock(_ *http.Request, args *apitypes.GetBlockArgs, reply *apitypes.GetBlockResponse) error

GetBlock returns the requested block.

func (*Service) GetBlockByHeight

func (s *Service) GetBlockByHeight(_ *http.Request, args *apitypes.GetBlockByHeightArgs, reply *apitypes.GetBlockResponse) error

GetBlockByHeight returns the block at the given height.

func (*Service) GetHeight

func (s *Service) GetHeight(_ *http.Request, _ *struct{}, reply *apitypes.GetHeightResponse) error

GetHeight returns the height of the last accepted block.

func (*Service) GetTx

func (s *Service) GetTx(_ *http.Request, args *apitypes.GetTxArgs, reply *apitypes.GetTxReply) error

GetTx returns the specified transaction

func (*Service) GetTxStatus deprecated

func (s *Service) GetTxStatus(_ *http.Request, args *apitypes.JSONTxID, reply *GetTxStatusReply) error

GetTxStatus returns the status of the specified transaction

Deprecated: GetTxStatus only returns Accepted or Unknown, GetTx should be used instead to determine if the tx was accepted.

func (*Service) GetUTXOs

func (s *Service) GetUTXOs(_ *http.Request, args *apitypes.GetUTXOsArgs, reply *apitypes.GetUTXOsReply) error

GetUTXOs gets all utxos for passed in addresses

func (*Service) Import added in v1.1.11

func (s *Service) Import(_ *http.Request, args *ImportArgs, reply *apitypes.JSONTxID) error

Import imports an asset to this chain from the P/C-Chain. The LUX must have already been exported from the P/C-Chain. Returns the ID of the newly created atomic transaction

func (*Service) ImportKey added in v1.1.11

func (s *Service) ImportKey(_ *http.Request, args *ImportKeyArgs, reply *apitypes.JSONAddress) error

ImportKey adds a private key to the provided user

func (*Service) IssueTx

func (s *Service) IssueTx(_ *http.Request, args *apitypes.FormattedTx, reply *apitypes.JSONTxID) error

IssueTx attempts to issue a transaction into consensus

func (*Service) ListAddresses added in v1.1.11

func (s *Service) ListAddresses(_ *http.Request, args *apitypes.UserPass, response *apitypes.JSONAddresses) error

ListAddresses returns all of the addresses controlled by user [args.Username]

func (*Service) Mint added in v1.1.11

func (s *Service) Mint(_ *http.Request, args *MintArgs, reply *JSONTxIDChangeAddr) error

Mint issues a transaction that mints more of the asset

func (*Service) MintNFT added in v1.1.11

func (s *Service) MintNFT(_ *http.Request, args *MintNFTArgs, reply *JSONTxIDChangeAddr) error

MintNFT issues a MintNFT transaction and returns the ID of the newly created transaction

func (*Service) Send added in v1.1.11

func (s *Service) Send(r *http.Request, args *SendArgs, reply *JSONTxIDChangeAddr) error

Send returns the ID of the newly created transaction

func (*Service) SendMultiple added in v1.1.11

func (s *Service) SendMultiple(_ *http.Request, args *SendMultipleArgs, reply *JSONTxIDChangeAddr) error

SendMultiple sends a transaction with multiple outputs.

func (*Service) SendNFT added in v1.1.11

func (s *Service) SendNFT(_ *http.Request, args *SendNFTArgs, reply *JSONTxIDChangeAddr) error

SendNFT sends an NFT

type SharedMemory added in v1.17.2

type SharedMemory interface {
	Get(peerChainID ids.ID, keys [][]byte) ([][]byte, error)
	Apply(map[ids.ID]interface{}, ...interface{}) error
}

SharedMemory provides cross-chain shared memory

type StaticClient added in v1.1.11

type StaticClient interface {
	BuildGenesis(ctx context.Context, args *BuildGenesisArgs, options ...rpc.Option) (*BuildGenesisReply, error)
}

StaticClient for interacting with the XVM static api

func NewStaticClient added in v1.1.11

func NewStaticClient(uri string) StaticClient

NewClient returns an XVM client for interacting with the xvm static api

type StaticService added in v1.1.11

type StaticService struct{}

StaticService defines the base service for the asset vm

func CreateStaticService added in v1.1.11

func CreateStaticService() *StaticService

func (*StaticService) BuildGenesis added in v1.1.11

func (*StaticService) BuildGenesis(_ *http.Request, args *BuildGenesisArgs, reply *BuildGenesisReply) error

BuildGenesis returns the UTXOs such that at least one address in [args.Addresses] is referenced in the UTXO.

type Tx

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

func (*Tx) Accept

func (tx *Tx) Accept(ctx context.Context) error

func (*Tx) Bytes

func (tx *Tx) Bytes() []byte

func (*Tx) Height added in v1.17.2

func (tx *Tx) Height() uint64

Height returns the height of this transaction (not used in XVM)

func (*Tx) ID

func (tx *Tx) ID() ids.ID

func (*Tx) MissingDependencies

func (tx *Tx) MissingDependencies() (set.Set[ids.ID], error)

func (*Tx) Parent added in v1.17.2

func (tx *Tx) Parent() ids.ID

Parent returns the parent ID (not used in XVM DAG)

func (*Tx) ParentIDs added in v1.17.2

func (tx *Tx) ParentIDs() []ids.ID

ParentIDs returns the IDs of the parent transactions (inputs)

func (*Tx) Reject

func (*Tx) Reject(ctx context.Context) error

func (*Tx) Status

func (tx *Tx) Status() choices.Status

func (*Tx) Verify

func (tx *Tx) Verify(ctx context.Context) error

type VM

type VM struct {
	network.Atomic

	config.Config

	lux.AddressManager
	ids.Aliaser
	utxo.Spender

	// Lock for thread safety (exposed for tests)
	Lock sync.RWMutex

	// Chain information
	ChainID  ids.ID
	XChainID ids.ID

	// SharedMemory for cross-chain operations
	SharedMemory SharedMemory

	// These values are only initialized after the chain has been linearized.
	blockbuilder.Builder
	// contains filtered or unexported fields
}

func (*VM) BuildVertex

func (vm *VM) BuildVertex(ctx context.Context) (dagvertex.Vertex, error)

BuildVertex builds a new vertex - required for LinearizableVMWithEngine

func (*VM) Clock added in v1.24.12

func (vm *VM) Clock() *mockable.Clock

Clock returns the VM's clock for time-related operations

func (*VM) CodecRegistry added in v1.24.12

func (vm *VM) CodecRegistry() codec.Registry

CodecRegistry returns the codec registry for marshalling/unmarshalling

func (*VM) Connected

func (vm *VM) Connected(ctx context.Context, nodeID ids.NodeID, version *version.Application) error

func (*VM) CreateHandlers

func (vm *VM) CreateHandlers(context.Context) (map[string]http.Handler, error)

func (*VM) CreateStaticHandlers added in v1.17.2

func (vm *VM) CreateStaticHandlers(context.Context) (map[string]http.Handler, error)

func (*VM) Disconnected

func (vm *VM) Disconnected(ctx context.Context, nodeID ids.NodeID) error

func (*VM) GetBlock

func (vm *VM) GetBlock(_ context.Context, blkID ids.ID) (chain.Block, error)

func (*VM) GetBlockIDAtHeight

func (vm *VM) GetBlockIDAtHeight(_ context.Context, height uint64) (ids.ID, error)

func (*VM) GetEngine

func (vm *VM) GetEngine() dag.Engine

GetEngine returns the consensus engine - required for LinearizableVMWithEngine

func (*VM) GetTx added in v1.17.2

func (vm *VM) GetTx(ctx context.Context, txID ids.ID) (dag.Transaction, error)

GetTx returns a transaction by ID - required for LinearizableVMWithEngine

func (*VM) GetVertex added in v1.11.14

func (vm *VM) GetVertex(ctx context.Context, vtxID ids.ID) (dagvertex.Vertex, error)

GetVertex gets a vertex by ID - required for LinearizableVMWithEngine

func (*VM) HealthCheck

func (*VM) HealthCheck(context.Context) (interface{}, error)

func (*VM) Initialize

func (vm *VM) Initialize(
	ctx context.Context,
	init vmcore.Init,
) error

func (*VM) LastAccepted

func (vm *VM) LastAccepted(context.Context) (ids.ID, error)

func (*VM) Linearize

func (vm *VM) Linearize(ctx context.Context, stopVertexID ids.ID, toEngine chan<- vmcore.Message) error

func (*VM) LoadUser added in v1.1.11

func (vm *VM) LoadUser(
	username string,
	password string,
	addresses set.Set[ids.ShortID],
) ([]*lux.UTXO, *secp256k1fx.Keychain, error)

LoadUser retrieves user keys from external storage

func (*VM) Logger added in v1.24.12

func (vm *VM) Logger() log.Logger

Logger returns the VM's logger

func (*VM) NewHTTPHandler

func (vm *VM) NewHTTPHandler(ctx context.Context) (http.Handler, error)

NewHTTPHandler implements the engine.VM interface

func (*VM) ParseAddress added in v1.24.12

func (vm *VM) ParseAddress(addrStr string) (ids.ID, ids.ShortID, error)

ParseAddress resolves chain aliases (like "X") via BCLookup before parsing. This overrides the embedded AddressManager which can't resolve aliases.

func (*VM) ParseBlock

func (vm *VM) ParseBlock(_ context.Context, blkBytes []byte) (chain.Block, error)

func (*VM) ParseTx

func (vm *VM) ParseTx(_ context.Context, bytes []byte) (dag.Tx, error)

func (*VM) ParseVertex

func (vm *VM) ParseVertex(ctx context.Context, vtxBytes []byte) (dagvertex.Vertex, error)

ParseVertex parses vertex bytes - required for LinearizableVMWithEngine

func (*VM) SetEngine added in v1.11.14

func (vm *VM) SetEngine(engine interface{})

SetEngine sets the consensus engine - required for LinearizableVMWithEngine

func (*VM) SetPreference

func (vm *VM) SetPreference(_ context.Context, blkID ids.ID) error

func (*VM) SetState

func (vm *VM) SetState(_ context.Context, stateNum uint32) error

func (*VM) Shutdown

func (vm *VM) Shutdown() error

func (*VM) Version

func (*VM) Version(context.Context) (string, error)

func (*VM) WaitForEvent added in v1.1.11

func (vm *VM) WaitForEvent(ctx context.Context) (interface{}, error)

WaitForEvent implements the engine.VM interface

type WalletClient deprecated

type WalletClient struct {
	Requester rpc.EndpointRequester
}

WalletClient for interacting with exchangevm managed wallet.

Deprecated: Transactions should be issued using the `luxfi/node/wallet/chain/x.Wallet` utility.

func NewWalletClient deprecated

func NewWalletClient(uri, chain string) *WalletClient

NewWalletClient returns an Exchange VM wallet client for interacting with exchangevm managed wallet

Deprecated: Transactions should be issued using the `luxfi/node/wallet/chain/x.Wallet` utility.

func (*WalletClient) IssueTx

func (c *WalletClient) IssueTx(ctx context.Context, txBytes []byte, options ...rpc.Option) (ids.ID, error)

IssueTx issues a transaction to a node and returns the TxID

type WalletService

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

func (*WalletService) IssueTx

func (w *WalletService) IssueTx(_ *http.Request, args *apitypes.FormattedTx, reply *apitypes.JSONTxID) error

IssueTx attempts to issue a transaction into consensus

func (*WalletService) Send added in v1.1.11

func (w *WalletService) Send(r *http.Request, args *SendArgs, reply *JSONTxIDChangeAddr) error

Send returns the ID of the newly created transaction

func (*WalletService) SendMultiple added in v1.1.11

func (w *WalletService) SendMultiple(_ *http.Request, args *SendMultipleArgs, reply *JSONTxIDChangeAddr) error

SendMultiple sends a transaction with multiple outputs.

Directories

Path Synopsis
Package block is a generated GoMock package.
Package block is a generated GoMock package.
executor
Package executor is a generated GoMock package.
Package executor is a generated GoMock package.
executor/executormock
Package executormock is a generated GoMock package.
Package executormock is a generated GoMock package.
metricsmock
Package metricsmock is a generated GoMock package.
Package metricsmock is a generated GoMock package.
Package state is a generated GoMock package.
Package state is a generated GoMock package.
statemock
Package statemock is a generated GoMock package.
Package statemock is a generated GoMock package.
txs
Package txs is a generated GoMock package.
Package txs is a generated GoMock package.
mempool
Package mempool is a generated GoMock package.
Package mempool is a generated GoMock package.
mempool/mempoolmock
Package mempoolmock is a generated GoMock package.
Package mempoolmock is a generated GoMock package.
txsmock
Package txsmock is a generated GoMock package.
Package txsmock is a generated GoMock package.

Jump to

Keyboard shortcuts

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