Documentation
¶
Overview ¶
Package key implements key manager and helper functions.
Index ¶
- Constants
- Variables
- func SortTransferableInputsWithSigners(ins []*avax.TransferableInput, signers [][]ids.ShortID)
- type HardKey
- func (h *HardKey) Addresses() []ids.ShortID
- func (h *HardKey) Disconnect() error
- func (h *HardKey) Match(owners *secp256k1fx.OutputOwners, time uint64) ([]uint32, []ids.ShortID, bool)
- func (h *HardKey) P() []string
- func (h *HardKey) Sign(pTx *txs.Tx, signers [][]ids.ShortID) error
- func (h *HardKey) Spends(outputs []*avax.UTXO, opts ...OpOption) (totalBalanceToSpend uint64, inputs []*avax.TransferableInput, ...)
- type Key
- type Op
- type OpOption
- type SOp
- type SOpOption
- type SoftKey
- func (m *SoftKey) Addresses() []ids.ShortID
- func (m *SoftKey) Encode() string
- func (m *SoftKey) Key() *crypto.PrivateKeySECP256K1R
- func (m *SoftKey) Match(owners *secp256k1fx.OutputOwners, time uint64) ([]uint32, []ids.ShortID, bool)
- func (m *SoftKey) P() []string
- func (m *SoftKey) Raw() []byte
- func (m *SoftKey) Save(p string) error
- func (m *SoftKey) Sign(pTx *txs.Tx, signers [][]ids.ShortID) error
- func (m *SoftKey) Spends(outputs []*avax.UTXO, opts ...OpOption) (totalBalanceToSpend uint64, inputs []*avax.TransferableInput, ...)
Constants ¶
const (
EwoqPrivateKey = "PrivateKey-" + rawEwoqPk
)
Variables ¶
var ( ErrInvalidType = errors.New("invalid type") ErrCantSpend = errors.New("can't spend") )
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 SortTransferableInputsWithSigners ¶ added in v0.0.2
func SortTransferableInputsWithSigners(ins []*avax.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/ava-labs/avalanchego/blob/224c9fd23d41839201dd0275ac864a845de6e93e/vms/components/avax/transferables.go#L202
Types ¶
type HardKey ¶ added in v0.0.2
type HardKey struct {
// contains filtered or unexported fields
}
func (*HardKey) Disconnect ¶ added in v0.0.2
func (*HardKey) Match ¶ added in v0.0.2
func (h *HardKey) Match(owners *secp256k1fx.OutputOwners, time uint64) ([]uint32, []ids.ShortID, bool)
type Key ¶
type Key interface {
// P returns all formatted P-Chain addresses.
P() []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 []*avax.UTXO, opts ...OpOption) (
totalBalanceToSpend uint64,
inputs []*avax.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 OpOption ¶
type OpOption func(*Op)
func WithFeeDeduct ¶
To deduct transfer fee from total spend (output). e.g., "units.MilliAvax" for X/P-Chain transfer.
func WithTargetAmount ¶
type SOpOption ¶ added in v0.0.2
type SOpOption func(*SOp)
func WithPrivateKey ¶
func WithPrivateKey(privKey *crypto.PrivateKeySECP256K1R) SOpOption
To create a new key SoftKey with a pre-loaded private key.
func WithPrivateKeyEncoded ¶
To create a new key SoftKey with a pre-defined private key.
type SoftKey ¶ added in v0.0.2
type SoftKey struct {
// contains filtered or unexported fields
}
func LoadSoft ¶ added in v0.0.2
LoadSoft loads the private key from disk and creates the corresponding SoftKey.
func (*SoftKey) Encode ¶ added in v0.0.2
Returns the private key encoded in CB58 and "PrivateKey-" prefix.
func (*SoftKey) Key ¶ added in v0.0.2
func (m *SoftKey) Key() *crypto.PrivateKeySECP256K1R
Returns the private key.
func (*SoftKey) Match ¶ added in v0.0.2
func (m *SoftKey) Match(owners *secp256k1fx.OutputOwners, time uint64) ([]uint32, []ids.ShortID, bool)