mirror of
https://github.com/luxfi/node.git
synced 2026-10-30 15:24:05 +00:00
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.
301 lines
6.8 KiB
Go
301 lines
6.8 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/crypto/bls"
|
|
"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 = (*withOptions)(nil)
|
|
|
|
type withOptions struct {
|
|
builder Builder
|
|
options []common.Option
|
|
}
|
|
|
|
// WithOptions 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 WithOptions(builder Builder, options ...common.Option) Builder {
|
|
return &withOptions{
|
|
builder: builder,
|
|
options: options,
|
|
}
|
|
}
|
|
|
|
func (w *withOptions) Context() *Context {
|
|
return w.builder.Context()
|
|
}
|
|
|
|
func (w *withOptions) GetBalance(
|
|
options ...common.Option,
|
|
) (map[ids.ID]uint64, error) {
|
|
return w.builder.GetBalance(
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) GetImportableBalance(
|
|
chainID ids.ID,
|
|
options ...common.Option,
|
|
) (map[ids.ID]uint64, error) {
|
|
return w.builder.GetImportableBalance(
|
|
chainID,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewBaseTx(
|
|
outputs []*lux.TransferableOutput,
|
|
options ...common.Option,
|
|
) (*txs.BaseTx, error) {
|
|
return w.builder.NewBaseTx(
|
|
outputs,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewAddValidatorTx(
|
|
vdr *txs.Validator,
|
|
rewardsOwner *secp256k1fx.OutputOwners,
|
|
shares uint32,
|
|
options ...common.Option,
|
|
) (*txs.AddValidatorTx, error) {
|
|
return w.builder.NewAddValidatorTx(
|
|
vdr,
|
|
rewardsOwner,
|
|
shares,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
// Removed in regenesis
|
|
func (w *withOptions) NewAddChainValidatorTx(
|
|
vdr *txs.ChainValidator,
|
|
options ...common.Option,
|
|
) (*txs.AddChainValidatorTx, error) {
|
|
return w.builder.NewAddChainValidatorTx(
|
|
vdr,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
// Removed in regenesis
|
|
func (w *withOptions) NewRemoveChainValidatorTx(
|
|
nodeID ids.NodeID,
|
|
chainID ids.ID,
|
|
options ...common.Option,
|
|
) (*txs.RemoveChainValidatorTx, error) {
|
|
return w.builder.NewRemoveChainValidatorTx(
|
|
nodeID,
|
|
chainID,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewAddDelegatorTx(
|
|
vdr *txs.Validator,
|
|
rewardsOwner *secp256k1fx.OutputOwners,
|
|
options ...common.Option,
|
|
) (*txs.AddDelegatorTx, error) {
|
|
return w.builder.NewAddDelegatorTx(
|
|
vdr,
|
|
rewardsOwner,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewCreateChainTx(
|
|
netID ids.ID,
|
|
genesis []byte,
|
|
vmID ids.ID,
|
|
fxIDs []ids.ID,
|
|
chainName string,
|
|
options ...common.Option,
|
|
) (*txs.CreateChainTx, error) {
|
|
return w.builder.NewCreateChainTx(
|
|
netID,
|
|
genesis,
|
|
vmID,
|
|
fxIDs,
|
|
chainName,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewCreateNetworkTx(
|
|
owner *secp256k1fx.OutputOwners,
|
|
options ...common.Option,
|
|
) (*txs.CreateNetworkTx, error) {
|
|
return w.builder.NewCreateNetworkTx(
|
|
owner,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
// Removed in regenesis
|
|
func (w *withOptions) NewTransferChainOwnershipTx(
|
|
chainID ids.ID,
|
|
owner *secp256k1fx.OutputOwners,
|
|
options ...common.Option,
|
|
) (*txs.TransferChainOwnershipTx, error) {
|
|
return w.builder.NewTransferChainOwnershipTx(
|
|
chainID,
|
|
owner,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewRegisterL1ValidatorTx(
|
|
balance uint64,
|
|
proofOfPossession [bls.SignatureLen]byte,
|
|
message []byte,
|
|
options ...common.Option,
|
|
) (*txs.RegisterL1ValidatorTx, error) {
|
|
return w.builder.NewRegisterL1ValidatorTx(
|
|
balance,
|
|
proofOfPossession,
|
|
message,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewSetL1ValidatorWeightTx(
|
|
message []byte,
|
|
options ...common.Option,
|
|
) (*txs.SetL1ValidatorWeightTx, error) {
|
|
return w.builder.NewSetL1ValidatorWeightTx(
|
|
message,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewIncreaseL1ValidatorBalanceTx(
|
|
validationID ids.ID,
|
|
balance uint64,
|
|
options ...common.Option,
|
|
) (*txs.IncreaseL1ValidatorBalanceTx, error) {
|
|
return w.builder.NewIncreaseL1ValidatorBalanceTx(
|
|
validationID,
|
|
balance,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewDisableL1ValidatorTx(
|
|
validationID ids.ID,
|
|
options ...common.Option,
|
|
) (*txs.DisableL1ValidatorTx, error) {
|
|
return w.builder.NewDisableL1ValidatorTx(
|
|
validationID,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewImportTx(
|
|
sourceChainID ids.ID,
|
|
to *secp256k1fx.OutputOwners,
|
|
options ...common.Option,
|
|
) (*txs.ImportTx, error) {
|
|
return w.builder.NewImportTx(
|
|
sourceChainID,
|
|
to,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewExportTx(
|
|
chainID ids.ID,
|
|
outputs []*lux.TransferableOutput,
|
|
options ...common.Option,
|
|
) (*txs.ExportTx, error) {
|
|
return w.builder.NewExportTx(
|
|
chainID,
|
|
outputs,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
// Removed in regenesis
|
|
func (w *withOptions) NewTransformChainTx(
|
|
chainID 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 w.builder.NewTransformChainTx(
|
|
chainID,
|
|
assetID,
|
|
initialSupply,
|
|
maxSupply,
|
|
minConsumptionRate,
|
|
maxConsumptionRate,
|
|
minValidatorStake,
|
|
maxValidatorStake,
|
|
minStakeDuration,
|
|
maxStakeDuration,
|
|
minDelegationFee,
|
|
minDelegatorStake,
|
|
maxValidatorWeightFactor,
|
|
uptimeRequirement,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) 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 w.builder.NewAddPermissionlessValidatorTx(
|
|
vdr,
|
|
signer,
|
|
assetID,
|
|
validationRewardsOwner,
|
|
delegationRewardsOwner,
|
|
shares,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|
|
|
|
func (w *withOptions) NewAddPermissionlessDelegatorTx(
|
|
vdr *txs.ChainValidator,
|
|
assetID ids.ID,
|
|
rewardsOwner *secp256k1fx.OutputOwners,
|
|
options ...common.Option,
|
|
) (*txs.AddPermissionlessDelegatorTx, error) {
|
|
return w.builder.NewAddPermissionlessDelegatorTx(
|
|
vdr,
|
|
assetID,
|
|
rewardsOwner,
|
|
common.UnionOptions(w.options, options)...,
|
|
)
|
|
}
|