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

73 lines
1.5 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package p
import (
"time"
"github.com/luxfi/node/vms/platformvm"
"github.com/luxfi/node/vms/platformvm/txs"
"github.com/luxfi/node/wallet/chain/p/builder"
"github.com/luxfi/node/wallet/chain/p/wallet"
"github.com/luxfi/node/wallet/network/primary/common"
)
var _ wallet.Client = (*Client)(nil)
func NewClient(
c *platformvm.Client,
b wallet.Backend,
) *Client {
return &Client{
client: c,
backend: b,
}
}
type Client struct {
client *platformvm.Client
backend wallet.Backend
}
func (c *Client) IssueTx(
tx *txs.Tx,
options ...common.Option,
) error {
ops := common.NewOptions(options)
ctx := ops.Context()
startTime := time.Now()
txID, err := c.client.IssueTx(ctx, tx.Bytes())
if err != nil {
return err
}
issuanceDuration := time.Since(startTime)
if f := ops.PostIssuanceFunc(); f != nil {
f(txID)
}
if ops.AssumeDecided() {
return c.backend.AcceptTx(ctx, tx)
}
if err := platformvm.AwaitTxAccepted(c.client, ctx, txID, ops.PollFrequency()); err != nil {
return err
}
if f := ops.ConfirmationHandler(); f != nil {
totalDuration := time.Since(startTime)
confirmationDuration := totalDuration - issuanceDuration
f(common.ConfirmationReceipt{
ChainAlias: builder.Alias,
TxID: txID,
IssuanceDuration: issuanceDuration,
ConfirmationDuration: confirmationDuration,
TotalDuration: totalDuration,
})
}
return c.backend.AcceptTx(ctx, tx)
}