wallet

package
v1.16.39 Latest Latest
Warning

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

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

README

Lux SDK Wallet

Unified wallet implementation for all Lux chains (P, X, C, EVM) with support for both classical and post-quantum cryptography.

Architecture

wallet/
├── crypto/              # Cryptography abstraction layer
│   ├── interface.go     # Unified Signer interface
│   ├── classic/         # Classic crypto (secp256k1, BLS)
│   └── pqc/            # Post-quantum crypto (ML-DSA, ML-KEM, SLH-DSA)
├── chain/              # Chain-specific implementations
│   ├── p/              # P-Chain (Platform) wallet
│   ├── x/              # X-Chain (Exchange) wallet
│   ├── c/              # C-Chain (Contract) wallet
│   └── evm/            # Generic EVM wallet (for subnets like Zoo)
└── primary/            # Unified wallet managing all chains

Supported Cryptography

Classic Cryptography
  • SECP256K1 - Ethereum-compatible elliptic curve
  • SECP256R1 - NIST P-256
  • BLS - BLS12-381 for aggregated signatures
Post-Quantum Cryptography (NIST Standards)
  • ML-DSA (Dilithium replacement)
    • ML-DSA-87 (high security)
    • ML-DSA-65 (medium security)
    • ML-DSA-44 (low security)
  • SLH-DSA (SPHINCS+ replacement)
    • SLH-DSA-256
    • SLH-DSA-192
    • SLH-DSA-128
  • ML-KEM (Kyber replacement) - For key encapsulation
Hybrid Schemes
  • SECP256K1 + ML-DSA-87 - Classic + PQC
  • BLS + ML-DSA-87 - Aggregatable + PQC

Usage

Basic Wallet Creation
import (
    "github.com/luxfi/sdk/wallet"
    "github.com/luxfi/sdk/wallet/crypto"
)

// Create wallet with classic crypto
factory := crypto.NewFactory()
signer, err := factory.NewSigner(crypto.SECP256K1, privateKey)

// Create wallet with post-quantum crypto
pqcSigner, err := factory.NewSigner(crypto.MLDSA87, privateKey)

// Create multi-chain wallet
w, err := wallet.NewPrimary(uri, signer)
Chain-Specific Operations
// P-Chain operations
pWallet := w.P()
tx, err := pWallet.IssueAddValidatorTx(...)

// X-Chain operations
xWallet := w.X()
tx, err := xWallet.IssueBaseTx(...)

// C-Chain operations
cWallet := w.C()
tx, err := cWallet.IssueImportTx(...)

// EVM operations (Zoo, etc.)
evmWallet := w.EVM(chainID)
tx, err := evmWallet.SendTransaction(...)

Post-Quantum Migration

All wallet operations support PQC transparently:

// Same API, different crypto
classicSigner := crypto.NewSigner(crypto.SECP256K1, key)
pqcSigner := crypto.NewSigner(crypto.MLDSA87, pqKey)

// Both work with same wallet interface
wallet1 := wallet.New(uri, classicSigner)
wallet2 := wallet.New(uri, pqcSigner)

Features

  • ✅ Unified interface across all chains
  • ✅ Classic and PQC crypto support
  • ✅ Hardware wallet compatibility
  • ✅ BIP32/BIP44 key derivation
  • ✅ Address format compatibility
  • ✅ Cross-chain operations
  • ✅ Atomic swaps between chains
  • ✅ Fee estimation
  • ✅ Transaction building and signing

Documentation

Overview

Package wallet provides multi-chain wallet implementation.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInsufficientFunds = errors.New("insufficient funds")
	ErrNoUTXOs           = errors.New("no UTXOs available")
	ErrInvalidAddress    = errors.New("invalid address")
)

Functions

This section is empty.

Types

type TransferInput

type TransferInput struct {
	UTXOID  ids.ID
	AssetID ids.ID
	Amount  uint64
}

TransferInput represents an input to a transfer transaction

type TransferOutput

type TransferOutput struct {
	AssetID   ids.ID
	Amount    uint64
	Recipient ids.ShortID
	Locktime  uint64
}

TransferOutput represents an output from a transfer transaction

type TransferTx

type TransferTx struct {
	NetworkID uint32
	ChainID   ids.ID
	Inputs    []TransferInput
	Outputs   []TransferOutput
	Memo      []byte
}

TransferTx represents a transfer transaction

type UTXO

type UTXO struct {
	ID       ids.ID
	AssetID  ids.ID
	Amount   uint64
	Owner    ids.ShortID
	Locktime uint64
}

UTXO represents an unspent transaction output

type Wallet

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

Wallet manages keys and transactions for personal usage

func New

func New(networkID uint32, chainID ids.ID) *Wallet

New creates a new wallet instance

func (*Wallet) AddUTXO

func (w *Wallet) AddUTXO(utxo *UTXO)

AddUTXO adds a UTXO to the wallet

func (*Wallet) CreateTransferTx

func (w *Wallet) CreateTransferTx(
	to ids.ShortID,
	assetID ids.ID,
	amount uint64,
	memo []byte,
) (*TransferTx, error)

CreateTransferTx creates a transfer transaction

func (*Wallet) GenerateKey

func (w *Wallet) GenerateKey() (ids.ShortID, error)

GenerateKey generates a new key and adds it to the wallet

func (*Wallet) GetAddress

func (w *Wallet) GetAddress() (ids.ShortID, error)

GetAddress returns a wallet address

func (*Wallet) GetAllAddresses

func (w *Wallet) GetAllAddresses() []ids.ShortID

GetAllAddresses returns all wallet addresses

func (*Wallet) GetBLSKey

func (w *Wallet) GetBLSKey() (*bls.SecretKey, error)

GetBLSKey returns the BLS key for validator operations

func (*Wallet) GetBalance

func (w *Wallet) GetBalance(assetID ids.ID) uint64

GetBalance returns the balance for a specific asset

func (*Wallet) GetUTXOs

func (w *Wallet) GetUTXOs(assetID ids.ID, amount uint64) ([]*UTXO, uint64, error)

GetUTXOs returns UTXOs for spending

func (*Wallet) ImportKey

func (w *Wallet) ImportKey(privateKey crypto.PrivateKey) (ids.ShortID, error)

ImportKey imports a private key into the wallet

func (*Wallet) RemoveUTXO

func (w *Wallet) RemoveUTXO(utxoID ids.ID)

RemoveUTXO removes a UTXO from the wallet

func (*Wallet) SetBLSKey

func (w *Wallet) SetBLSKey(key *bls.SecretKey)

SetBLSKey sets the BLS key for validator operations

func (*Wallet) Sign

func (w *Wallet) Sign(ctx context.Context, tx chain.Transaction) error

Sign signs a transaction with the wallet's keys

Directories

Path Synopsis
chain
c
Package c provides C-Chain wallet backend implementation.
Package c provides C-Chain wallet backend implementation.
p
Package p provides P-Chain wallet backend implementation.
Package p provides P-Chain wallet backend implementation.
p/builder
Package builder provides P-Chain transaction builder implementation.
Package builder provides P-Chain transaction builder implementation.
p/signer
Package signer provides P-Chain transaction signing implementation.
Package signer provides P-Chain transaction signing implementation.
p/wallet
Package wallet provides P-Chain wallet implementation.
Package wallet provides P-Chain wallet implementation.
x
Package x provides X-Chain wallet backend implementation.
Package x provides X-Chain wallet backend implementation.
x/builder
Package builder provides X-Chain transaction builder implementation.
Package builder provides X-Chain transaction builder implementation.
x/signer
Package signer provides X-Chain transaction signing implementation.
Package signer provides X-Chain transaction signing implementation.
Package crypto provides cryptographic interfaces for wallet signing.
Package crypto provides cryptographic interfaces for wallet signing.
classic
Package classic provides classic cryptographic signing implementation.
Package classic provides classic cryptographic signing implementation.
pqc
Package pqc provides post-quantum cryptography signing implementation.
Package pqc provides post-quantum cryptography signing implementation.
Package primary provides primary network wallet operations.
Package primary provides primary network wallet operations.
common
Package common provides common wallet utilities.
Package common provides common wallet utilities.
common/utxotest
Package utxotest provides UTXO testing utilities.
Package utxotest provides UTXO testing utilities.

Jump to

Keyboard shortcuts

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