key

package
v1.9.10 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2025 License: BSD-3-Clause Imports: 20 Imported by: 0

Documentation

Overview

Package key implements key manager and helper functions.

Index

Constants

View Source
const (

	// LocalKeyName is the name of the local development key file
	LocalKeyName = "local-key"
	// LocalKeyPath is the path where the local key is stored
	LocalKeyPath = "~/.lux/keys/" + LocalKeyName + ".pk"

	EwoqPrivateKey = privKeyEncPfx + rawEwoqPk
)

Variables

View Source
var (
	ErrInvalidType = errors.New("invalid type")
	ErrCantSpend   = errors.New("can't spend")
)
View Source
var (
	ErrInvalidPrivateKey         = errors.New("invalid private key")
	ErrInvalidPrivateKeyLen      = errors.New("invalid private key length (expect 64 bytes in hex)")
	ErrInvalidPrivateKeyEnding   = errors.New("invalid private key ending")
	ErrInvalidPrivateKeyEncoding = errors.New("invalid private key encoding")
)

Functions

func GetHRP

func GetHRP(networkID uint32) string

func GetLocalKeyPath added in v1.9.8

func GetLocalKeyPath() string

GetLocalKeyPath returns the expanded path to the local key file

func GetLocalPrivateKey added in v1.9.8

func GetLocalPrivateKey() (*secp256k1.PrivateKey, error)

GetLocalPrivateKey returns the secp256k1 private key for local development. It loads from ~/.lux/keys/local-key.pk, generating a new key if needed.

func SortTransferableInputsWithSigners

func SortTransferableInputsWithSigners(ins []*lux.TransferableInput, signers [][]ids.ShortID)

SortTransferableInputsWithSigners sorts the inputs and signers based on the input's utxo ID.

This is based off of (generics?): https://github.com/luxfi/node/blob/224c9fd23d41839201dd0275ac864a845de6e93e/vms/components/lux/transferables.go#L202

Types

type Key

type Key interface {
	// P returns all formatted P-Chain addresses.
	P() []string
	// C returns the C-Chain address in Ethereum format
	C() string
	// Addresses returns the all raw ids.ShortID address.
	Addresses() []ids.ShortID
	// Match attempts to match a list of addresses up to the provided threshold.
	Match(owners *secp256k1fx.OutputOwners, time uint64) ([]uint32, []ids.ShortID, bool)
	// Spend attempts to spend all specified UTXOs (outputs)
	// and returns the new UTXO inputs.
	//
	// If target amount is specified, it only uses the
	// outputs until the total spending is below the target
	// amount.
	Spends(outputs []*lux.UTXO, opts ...OpOption) (
		totalBalanceToSpend uint64,
		inputs []*lux.TransferableInput,
		signers [][]ids.ShortID,
	)
	// Sign generates [numSigs] signatures and attaches them to [pTx].
	Sign(pTx *txs.Tx, signers [][]ids.ShortID) error
}

Key defines methods for key manager interface.

type Op

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

type OpOption

type OpOption func(*Op)

func WithFeeDeduct

func WithFeeDeduct(fee uint64) OpOption

To deduct transfer fee from total spend (output). e.g., "units.MilliLux" for X/P-Chain transfer.

func WithTargetAmount

func WithTargetAmount(ta uint64) OpOption

func WithTime

func WithTime(t uint64) OpOption

type SOp

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

type SOpOption

type SOpOption func(*SOp)

func WithPrivateKey

func WithPrivateKey(privKey *secp256k1.PrivateKey) SOpOption

To create a new key SoftKey with a pre-loaded private key.

func WithPrivateKeyEncoded

func WithPrivateKeyEncoded(privKey string) SOpOption

To create a new key SoftKey with a pre-defined private key.

type SoftKey

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

func GetOrCreateLocalKey added in v1.9.8

func GetOrCreateLocalKey(networkID uint32) (*SoftKey, error)

GetOrCreateLocalKey loads the local development key from ~/.lux/keys/local-key.pk, generating a new one if it doesn't exist. This is the secure replacement for the hardcoded EWOQ key.

func LoadSoft

func LoadSoft(networkID uint32, keyPath string) (*SoftKey, error)

LoadSoft loads the private key from disk and creates the corresponding SoftKey.

func NewSoft

func NewSoft(networkID uint32, opts ...SOpOption) (*SoftKey, error)

func (*SoftKey) Addresses

func (m *SoftKey) Addresses() []ids.ShortID

func (*SoftKey) C

func (m *SoftKey) C() string

func (*SoftKey) Encode

func (m *SoftKey) Encode() string

Returns the private key encoded in CB58 and "PrivateKey-" prefix.

func (*SoftKey) Key

func (m *SoftKey) Key() *secp256k1.PrivateKey

Returns the private key.

func (*SoftKey) KeyChain

func (m *SoftKey) KeyChain() *secp256k1fx.Keychain

Returns the KeyChain

func (*SoftKey) Match

func (m *SoftKey) Match(owners *secp256k1fx.OutputOwners, time uint64) ([]uint32, []ids.ShortID, bool)

func (*SoftKey) P

func (m *SoftKey) P() []string

func (*SoftKey) PrivKeyHex

func (m *SoftKey) PrivKeyHex() string

func (*SoftKey) PrivateKeyRaw

func (m *SoftKey) PrivateKeyRaw() string

PrivateKeyRaw returns the private key in hex format

func (*SoftKey) Raw

func (m *SoftKey) Raw() []byte

Returns the private key in raw bytes.

func (*SoftKey) Save

func (m *SoftKey) Save(p string) error

Saves the private key to disk with hex encoding.

func (*SoftKey) Sign

func (m *SoftKey) Sign(pTx *txs.Tx, signers [][]ids.ShortID) error

func (*SoftKey) Spends

func (m *SoftKey) Spends(outputs []*lux.UTXO, opts ...OpOption) (
	totalBalanceToSpend uint64,
	inputs []*lux.TransferableInput,
	signers [][]ids.ShortID,
)

func (*SoftKey) X

func (m *SoftKey) X() []string

X returns the X-Chain addresses (as a slice for compatibility)

Jump to

Keyboard shortcuts

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