Files
zeekay 7cf87b230b node-unified is the node
The module already called itself github.com/luxfi/node while containing no node
in Go: cmd/luxd was twenty-one lines that printed the size of a few types, and
the Go column of the matrix measured a VM plugin. A repo that fetches the thing
it claims to be has not replaced it, so the Go sources move in — 1515 files,
the daemon and everything under it — and the build reaches outside this module
for nothing.

Rust and C++ sit beside it unchanged and are still measured against it by the
differential. That is the point of one repo: the reference implementation and
the two ports are the same checkout, so parity is a thing you can run rather
than a thing you assert.

Verified: builds, and the closure carries no lux-private — checked at build time
rather than believed. The daemon starts twelve chains on a local network
(P X C Q Z A B G K M F, plus D through its plugin) and reports healthy.
2026-09-07 16:15:25 -07:00

105 lines
2.5 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package importtx
import (
"github.com/spf13/pflag"
"github.com/luxfi/crypto/secp256k1"
"github.com/luxfi/ids"
"github.com/luxfi/node/wallet/network/primary"
)
const (
URIKey = "uri"
SourceURIsKey = "source-uris"
SourceChainIDKey = "source-chain-id"
DestinationChainIDKey = "destination-chain-id"
TxIDKey = "tx-id"
MaxFeeKey = "max-fee"
PrivateKeyKey = "private-key"
)
func AddFlags(flags *pflag.FlagSet) {
flags.String(URIKey, primary.LocalAPIURI, "API URI to use during issuance")
flags.StringSlice(SourceURIsKey, []string{primary.LocalAPIURI}, "API URIs to use during the fetching of signatures")
flags.String(SourceChainIDKey, "", "Chain the export transaction was issued on")
flags.String(DestinationChainIDKey, "", "Chain to send the asset to")
flags.String(TxIDKey, "", "ID of the export transaction")
flags.Uint64(MaxFeeKey, 0, "Maximum fee to spend")
flags.String(PrivateKeyKey, "", "Private key to sign the transaction (required)")
}
type Config struct {
URI string
SourceURIs []string
SourceChainID string
DestinationChainID string
TxID ids.ID
MaxFee uint64
PrivateKey *secp256k1.PrivateKey
}
func ParseFlags(flags *pflag.FlagSet, args []string) (*Config, error) {
if err := flags.Parse(args); err != nil {
return nil, err
}
uri, err := flags.GetString(URIKey)
if err != nil {
return nil, err
}
sourceURIs, err := flags.GetStringSlice(SourceURIsKey)
if err != nil {
return nil, err
}
sourceChainID, err := flags.GetString(SourceChainIDKey)
if err != nil {
return nil, err
}
destinationChainID, err := flags.GetString(DestinationChainIDKey)
if err != nil {
return nil, err
}
txIDStr, err := flags.GetString(TxIDKey)
if err != nil {
return nil, err
}
txID, err := ids.FromString(txIDStr)
if err != nil {
return nil, err
}
maxFee, err := flags.GetUint64(MaxFeeKey)
if err != nil {
return nil, err
}
skStr, err := flags.GetString(PrivateKeyKey)
if err != nil {
return nil, err
}
var sk secp256k1.PrivateKey
err = sk.UnmarshalText([]byte(`"` + skStr + `"`))
if err != nil {
return nil, err
}
return &Config{
URI: uri,
SourceURIs: sourceURIs,
SourceChainID: sourceChainID,
DestinationChainID: destinationChainID,
TxID: txID,
MaxFee: maxFee,
PrivateKey: &sk,
}, nil
}