Documentation
¶
Overview ¶
Package primary provides primary network wallet operations.
Index ¶
Constants ¶
const ( MainnetAPIURI = "https://api.lux.network" TestnetAPIURI = "https://api.lux-test.network" LocalAPIURI = "http://localhost:9630" )
Variables ¶
This section is empty.
Functions ¶
func AddAllUTXOs ¶
func AddAllUTXOs( ctx context.Context, utxos walletcommon.UTXOs, client UTXOClient, sourceChainID ids.ID, destinationChainID ids.ID, addrs []ids.ShortID, ) error
AddAllUTXOs fetches all the UTXOs referenced by [addresses] that were sent from [sourceChainID] to [destinationChainID] from the [client] and adds them into [utxos]. If [ctx] expires, then the returned error will be immediately reported.
UTXOs are read ZAP-native (see zapUTXO): the node serves the envelope utxo.UTXO.WireBytes() produces, and the zero-copy wire accessors read it directly. No codec.Manager and no intermediate encoding sit on this path.
func NewChainUTXOs ¶
func NewChainUTXOs(chainID ids.ID, utxos UTXOs) common.ChainUTXOs
Types ¶
type KeychainAdapter ¶
type KeychainAdapter struct {
*secp256k1fx.Keychain
}
KeychainAdapter adapts secp256k1fx.Keychain to BOTH wallet/keychain.Keychain (UTXO-side) and c.EVMKeychain (EVM-side).
func NewKeychainAdapter ¶
func NewKeychainAdapter(kc *secp256k1fx.Keychain) *KeychainAdapter
NewKeychainAdapter creates a KeychainAdapter from a secp256k1fx.Keychain
func (*KeychainAdapter) Addresses ¶
func (kc *KeychainAdapter) Addresses() set.Set[ids.ShortID]
Addresses implements wallet/keychain.Keychain (UTXO-side).
func (*KeychainAdapter) EVMAddresses ¶ added in v1.16.62
func (kc *KeychainAdapter) EVMAddresses() set.Set[gethcommon.Address]
EVMAddresses implements c.EVMKeychain (EVM-side address set).
func (*KeychainAdapter) GetByEVM ¶ added in v1.16.62
func (kc *KeychainAdapter) GetByEVM(addr gethcommon.Address) (keychain.Signer, bool)
GetByEVM implements c.EVMKeychain (EVM-side lookup by 20-byte addr).
type LUXState ¶
type LUXState struct {
PClient *platformvm.Client
PCTX *pbuilder.Context
// X-Chain: opt-in via AttachXChain. Nil if not attached or not registered on this network.
XClient *XClient
XCTX *xbuilder.Context
// C-Chain: opt-in via AttachCChain. EVM, fundamentally different from
// UTXO P/X — uses ethclient. Nil if not attached or not registered.
// CCTX would live in ./chain/c (EthClient + ChainID + GasPrice) — not
// a UTXOCtx. Wired through FetchEthState today.
UTXOs walletcommon.UTXOs
// contains filtered or unexported fields
}
func FetchPState ¶ added in v1.17.8
FetchPState fetches ONLY the P-Chain client + context + UTXOs.
This is the canonical entry point. P-Chain is the only required chain for sovereign-L1 spawn (CreateChainTx), validator ops, primary network transactions. X-Chain (UTXO asset transfers) and C-Chain (EVM smart contracts) are opt-in — call AttachXChain / AttachCChain on the returned state if you need them.
Sovereign-L1 callers: this is the function you want. Don't call FetchState (it tries to pull X + C, which is wasteful when they're not needed and breaks against P-only Quasar networks if not fail-softed correctly).
func FetchState ¶
FetchState is the P+X convenience that pre-fetches P (required) and X (opt-in via AttachXChain). Kept for back-compat. New callers should use FetchPState + AttachXChain / AttachCChain explicitly so the dependency graph is visible at the call site.
func (*LUXState) AttachXChain ¶ added in v1.17.8
AttachXChain adds X-Chain client + context to the state. Fail-soft: if X-Chain is not registered on this network (Quasar mainnet is P+C only), returns the state unchanged with no error. Any other RPC error is returned.
type UTXOClient ¶
type UTXOs ¶
type UTXOs interface {
AddUTXO(ctx context.Context, sourceChainID, destinationChainID ids.ID, utxo *lux.UTXO) error
RemoveUTXO(ctx context.Context, sourceChainID, destinationChainID, utxoID ids.ID) error
UTXOs(ctx context.Context, sourceChainID, destinationChainID ids.ID) ([]*lux.UTXO, error)
GetUTXO(ctx context.Context, sourceChainID, destinationChainID, utxoID ids.ID) (*lux.UTXO, error)
}
type Wallet ¶
Wallet provides chain wallets for the primary network.
func MakePChainWallet ¶
func MakePChainWallet(ctx context.Context, config *WalletConfig) (Wallet, error)
MakePChainWallet returns a wallet that only supports issuing P-chain transactions. This is an alias for MakeWallet for backward compatibility.
func MakeWallet ¶
func MakeWallet(ctx context.Context, config *WalletConfig) (Wallet, error)
MakeWallet returns a wallet that supports issuing transactions to the chains living in the primary network.
On creation, the wallet attaches to the provided uri and fetches all UTXOs that reference any of the provided keys. If the UTXOs are modified through an external issuance process, such as another instance of the wallet, the UTXOs may become out of sync. The wallet will also fetch all requested P-chain transactions.
The wallet manages all state locally, and performs all tx signing locally.
type WalletConfig ¶
type WalletConfig struct {
// Base URI to use for all node requests.
URI string // required
// Keys to use for signing all transactions.
LUXKeychain keychain.Keychain // required
EVMKeychain c.EVMKeychain // required
// Set of P-chain transactions that the wallet should know about to be able
// to generate transactions.
PChainTxs map[ids.ID]*txs.Tx // optional
// Set of P-chain transactions that the wallet should fetch to be able to
// generate transactions.
PChainTxsToFetch set.Set[ids.ID] // optional
}
type XClient ¶
type XClient struct {
// contains filtered or unexported fields
}
XClient is a client for interacting with the X-Chain
func NewXClient ¶
NewXClient returns a new X-Chain client
func NewXClientWithContext ¶
NewXClientWithContext returns a new X-Chain client with context information required for proper address formatting and UTXO queries. Note: Uses "X" alias for the endpoint (more reliable) but keeps blockchainID for address formatting in UTXO queries.
func (*XClient) GetAtomicUTXOs ¶
func (c *XClient) 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 implements UTXOClient. Queries the X-chain for UTXOs controlled by the given addresses.