Files
node/wallet/chain/p/builder/builder_with_options.go
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

301 lines
6.9 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package builder
import (
"time"
"github.com/luxfi/ids"
"github.com/luxfi/node/vms/platformvm/signer"
"github.com/luxfi/node/vms/platformvm/txs"
"github.com/luxfi/node/wallet/network/primary/common"
lux "github.com/luxfi/utxo"
"github.com/luxfi/utxo/secp256k1fx"
)
var _ Builder = (*builderWithOptions)(nil)
type builderWithOptions struct {
builder Builder
options []common.Option
}
// NewWithOptions returns a new builder that will use the given options by
// default.
//
// - [builder] is the builder that will be called to perform the underlying
// operations.
// - [options] will be provided to the builder in addition to the options
// provided in the method calls.
func NewWithOptions(builder Builder, options ...common.Option) Builder {
return &builderWithOptions{
builder: builder,
options: options,
}
}
func (b *builderWithOptions) Context() *Context {
return b.builder.Context()
}
func (b *builderWithOptions) GetBalance(
options ...common.Option,
) (map[ids.ID]uint64, error) {
return b.builder.GetBalance(
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) GetImportableBalance(
chainID ids.ID,
options ...common.Option,
) (map[ids.ID]uint64, error) {
return b.builder.GetImportableBalance(
chainID,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewBaseTx(
outputs []*lux.TransferableOutput,
options ...common.Option,
) (*txs.BaseTx, error) {
return b.builder.NewBaseTx(
outputs,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewAddValidatorTx(
vdr *txs.Validator,
rewardsOwner *secp256k1fx.OutputOwners,
shares uint32,
options ...common.Option,
) (*txs.AddValidatorTx, error) {
return b.builder.NewAddValidatorTx(
vdr,
rewardsOwner,
shares,
common.UnionOptions(b.options, options)...,
)
}
// Removed in regenesis
func (b *builderWithOptions) NewAddChainValidatorTx(
vdr *txs.ChainValidator,
options ...common.Option,
) (*txs.AddChainValidatorTx, error) {
return b.builder.NewAddChainValidatorTx(
vdr,
common.UnionOptions(b.options, options)...,
)
}
// Removed in regenesis
func (b *builderWithOptions) NewRemoveChainValidatorTx(
nodeID ids.NodeID,
netID ids.ID,
options ...common.Option,
) (*txs.RemoveChainValidatorTx, error) {
return b.builder.NewRemoveChainValidatorTx(
nodeID,
netID,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewAddDelegatorTx(
vdr *txs.Validator,
rewardsOwner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.AddDelegatorTx, error) {
return b.builder.NewAddDelegatorTx(
vdr,
rewardsOwner,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewCreateChainTx(
netID ids.ID,
genesis []byte,
vmID ids.ID,
fxIDs []ids.ID,
chainName string,
options ...common.Option,
) (*txs.CreateChainTx, error) {
return b.builder.NewCreateChainTx(
netID,
genesis,
vmID,
fxIDs,
chainName,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewCreateNetworkTx(
owner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.CreateNetworkTx, error) {
return b.builder.NewCreateNetworkTx(
owner,
common.UnionOptions(b.options, options)...,
)
}
// Removed in regenesis
func (b *builderWithOptions) NewTransferChainOwnershipTx(
chainID ids.ID,
owner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.TransferChainOwnershipTx, error) {
return b.builder.NewTransferChainOwnershipTx(
chainID,
owner,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewImportTx(
sourceChainID ids.ID,
to *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.ImportTx, error) {
return b.builder.NewImportTx(
sourceChainID,
to,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewExportTx(
chainID ids.ID,
outputs []*lux.TransferableOutput,
options ...common.Option,
) (*txs.ExportTx, error) {
return b.builder.NewExportTx(
chainID,
outputs,
common.UnionOptions(b.options, options)...,
)
}
// Removed in regenesis
func (b *builderWithOptions) NewTransformChainTx(
netID ids.ID,
assetID ids.ID,
initialSupply uint64,
maxSupply uint64,
minConsumptionRate uint64,
maxConsumptionRate uint64,
minValidatorStake uint64,
maxValidatorStake uint64,
minStakeDuration time.Duration,
maxStakeDuration time.Duration,
minDelegationFee uint32,
minDelegatorStake uint64,
maxValidatorWeightFactor byte,
uptimeRequirement uint32,
options ...common.Option,
) (*txs.TransformChainTx, error) {
return b.builder.NewTransformChainTx(
netID,
assetID,
initialSupply,
maxSupply,
minConsumptionRate,
maxConsumptionRate,
minValidatorStake,
maxValidatorStake,
minStakeDuration,
maxStakeDuration,
minDelegationFee,
minDelegatorStake,
maxValidatorWeightFactor,
uptimeRequirement,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewAddPermissionlessValidatorTx(
vdr *txs.ChainValidator,
signer signer.Signer,
assetID ids.ID,
validationRewardsOwner *secp256k1fx.OutputOwners,
delegationRewardsOwner *secp256k1fx.OutputOwners,
shares uint32,
options ...common.Option,
) (*txs.AddPermissionlessValidatorTx, error) {
return b.builder.NewAddPermissionlessValidatorTx(
vdr,
signer,
assetID,
validationRewardsOwner,
delegationRewardsOwner,
shares,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewAddPermissionlessDelegatorTx(
vdr *txs.ChainValidator,
assetID ids.ID,
rewardsOwner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.AddPermissionlessDelegatorTx, error) {
return b.builder.NewAddPermissionlessDelegatorTx(
vdr,
assetID,
rewardsOwner,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewRegisterL1ValidatorTx(
balance uint64,
proofOfPossession [96]byte,
message []byte,
options ...common.Option,
) (*txs.RegisterL1ValidatorTx, error) {
return b.builder.NewRegisterL1ValidatorTx(
balance,
proofOfPossession,
message,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewSetL1ValidatorWeightTx(
message []byte,
options ...common.Option,
) (*txs.SetL1ValidatorWeightTx, error) {
return b.builder.NewSetL1ValidatorWeightTx(
message,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewIncreaseL1ValidatorBalanceTx(
validationID ids.ID,
balance uint64,
options ...common.Option,
) (*txs.IncreaseL1ValidatorBalanceTx, error) {
return b.builder.NewIncreaseL1ValidatorBalanceTx(
validationID,
balance,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewDisableL1ValidatorTx(
validationID ids.ID,
options ...common.Option,
) (*txs.DisableL1ValidatorTx, error) {
return b.builder.NewDisableL1ValidatorTx(
validationID,
common.UnionOptions(b.options, options)...,
)
}