Documentation
¶
Index ¶
Constants ¶
View Source
const Alias = "P"
Variables ¶
View Source
var ( ErrNoChangeAddress = errors.New("no possible change address") ErrUnknownOutputType = errors.New("unknown output type") ErrUnknownOwnerType = errors.New("unknown owner type") ErrInsufficientAuthorization = errors.New("insufficient authorization") ErrInsufficientFunds = errors.New("insufficient funds") )
Functions ¶
Types ¶
type Builder ¶
type Builder interface {
// Context returns the configuration of the chain that this builder uses to
// create transactions.
Context() *Context
// GetBalance calculates the amount of each asset that this builder has
// control over.
GetBalance(
options ...common.Option,
) (map[ids.ID]uint64, error)
// GetImportableBalance calculates the amount of each asset that this
// builder could import from the provided chain.
//
// - [chainID] specifies the chain the funds are from.
GetImportableBalance(
chainID ids.ID,
options ...common.Option,
) (map[ids.ID]uint64, error)
// NewBaseTx creates a new simple value transfer.
//
// - [outputs] specifies all the recipients and amounts that should be sent
// from this transaction.
NewBaseTx(
outputs []*avax.TransferableOutput,
options ...common.Option,
) (*txs.BaseTx, error)
// NewAddValidatorTx creates a new validator of the primary network.
//
// - [vdr] specifies all the details of the validation period such as the
// startTime, endTime, stake weight, and nodeID.
// - [rewardsOwner] specifies the owner of all the rewards this validator
// may accrue during its validation period.
// - [shares] specifies the fraction (out of 1,000,000) that this validator
// will take from delegation rewards. If 1,000,000 is provided, 100% of
// the delegation reward will be sent to the validator's [rewardsOwner].
NewAddValidatorTx(
vdr *txs.Validator,
rewardsOwner *secp256k1fx.OutputOwners,
shares uint32,
options ...common.Option,
) (*txs.AddValidatorTx, error)
// NewAddSubnetValidatorTx creates a new validator of a subnet.
//
// - [vdr] specifies all the details of the validation period such as the
// startTime, endTime, sampling weight, nodeID, and subnetID.
NewAddSubnetValidatorTx(
vdr *txs.SubnetValidator,
options ...common.Option,
) (*txs.AddSubnetValidatorTx, error)
// NewRemoveSubnetValidatorTx removes [nodeID] from the validator
// set [subnetID].
NewRemoveSubnetValidatorTx(
nodeID ids.NodeID,
subnetID ids.ID,
options ...common.Option,
) (*txs.RemoveSubnetValidatorTx, error)
// NewAddDelegatorTx creates a new delegator to a validator on the primary
// network.
//
// - [vdr] specifies all the details of the delegation period such as the
// startTime, endTime, stake weight, and validator's nodeID.
// - [rewardsOwner] specifies the owner of all the rewards this delegator
// may accrue at the end of its delegation period.
NewAddDelegatorTx(
vdr *txs.Validator,
rewardsOwner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.AddDelegatorTx, error)
// NewCreateChainTx creates a new chain in the named subnet.
//
// - [subnetID] specifies the subnet to launch the chain in.
// - [genesis] specifies the initial state of the new chain.
// - [vmID] specifies the vm that the new chain will run.
// - [fxIDs] specifies all the feature extensions that the vm should be
// running with.
// - [chainName] specifies a human readable name for the chain.
NewCreateChainTx(
subnetID ids.ID,
genesis []byte,
vmID ids.ID,
fxIDs []ids.ID,
chainName string,
options ...common.Option,
) (*txs.CreateChainTx, error)
// NewCreateSubnetTx creates a new subnet with the specified owner.
//
// - [owner] specifies who has the ability to create new chains and add new
// validators to the subnet.
NewCreateSubnetTx(
owner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.CreateSubnetTx, error)
// NewTransferSubnetOwnershipTx changes the owner of the named subnet.
//
// - [subnetID] specifies the subnet to be modified
// - [owner] specifies who has the ability to create new chains and add new
// validators to the subnet.
NewTransferSubnetOwnershipTx(
subnetID ids.ID,
owner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.TransferSubnetOwnershipTx, error)
// NewConvertSubnetToL1Tx converts the subnet to a Permissionless L1.
//
// - [subnetID] specifies the subnet to be converted
// - [chainID] specifies which chain the manager is deployed on
// - [address] specifies the address of the manager
// - [validators] specifies the initial L1 validators of the L1
NewConvertSubnetToL1Tx(
subnetID ids.ID,
chainID ids.ID,
address []byte,
validators []*txs.ConvertSubnetToL1Validator,
options ...common.Option,
) (*txs.ConvertSubnetToL1Tx, error)
// NewRegisterL1ValidatorTx adds a validator to an L1.
//
// - [balance] that the validator should allocate to continuous fees
// - [proofOfPossession] is the BLS PoP for the key included in the Warp
// message
// - [message] is the Warp message that authorizes this validator to be
// added
NewRegisterL1ValidatorTx(
balance uint64,
proofOfPossession [bls.SignatureLen]byte,
message []byte,
options ...common.Option,
) (*txs.RegisterL1ValidatorTx, error)
// NewSetL1ValidatorWeightTx sets the weight of a validator on an L1.
//
// - [message] is the Warp message that authorizes this validator's weight
// to be changed
NewSetL1ValidatorWeightTx(
message []byte,
options ...common.Option,
) (*txs.SetL1ValidatorWeightTx, error)
// NewIncreaseL1ValidatorBalanceTx increases the balance of a validator on
// an L1 for the continuous fee.
// the continuous fee.
//
// - [validationID] of the validator
// - [balance] amount to increase the validator's balance by
NewIncreaseL1ValidatorBalanceTx(
validationID ids.ID,
balance uint64,
options ...common.Option,
) (*txs.IncreaseL1ValidatorBalanceTx, error)
// NewDisableL1ValidatorTx disables an L1 validator and returns the
// remaining funds allocated to the continuous fee to the remaining balance
// owner.
//
// - [validationID] of the validator to disable
NewDisableL1ValidatorTx(
validationID ids.ID,
options ...common.Option,
) (*txs.DisableL1ValidatorTx, error)
// NewImportTx creates an import transaction that attempts to consume all
// the available UTXOs and import the funds to [to].
//
// - [chainID] specifies the chain to be importing funds from.
// - [to] specifies where to send the imported funds to.
NewImportTx(
chainID ids.ID,
to *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.ImportTx, error)
// NewExportTx creates an export transaction that attempts to send all the
// provided [outputs] to the requested [chainID].
//
// - [chainID] specifies the chain to be exporting the funds to.
// - [outputs] specifies the outputs to send to the [chainID].
NewExportTx(
chainID ids.ID,
outputs []*avax.TransferableOutput,
options ...common.Option,
) (*txs.ExportTx, error)
// NewTransformSubnetTx creates a transform subnet transaction that attempts
// to convert the provided [subnetID] from a permissioned subnet to a
// permissionless subnet. This transaction will convert
// [maxSupply] - [initialSupply] of [assetID] to staking rewards.
//
// - [subnetID] specifies the subnet to transform.
// - [assetID] specifies the asset to use to reward stakers on the subnet.
// - [initialSupply] is the amount of [assetID] that will be in circulation
// after this transaction is accepted.
// - [maxSupply] is the maximum total amount of [assetID] that should ever
// exist.
// - [minConsumptionRate] is the rate that a staker will receive rewards
// if they stake with a duration of 0.
// - [maxConsumptionRate] is the maximum rate that staking rewards should be
// consumed from the reward pool per year.
// - [minValidatorStake] is the minimum amount of funds required to become a
// validator.
// - [maxValidatorStake] is the maximum amount of funds a single validator
// can be allocated, including delegated funds.
// - [minStakeDuration] is the minimum number of seconds a staker can stake
// for.
// - [maxStakeDuration] is the maximum number of seconds a staker can stake
// for.
// - [minValidatorStake] is the minimum amount of funds required to become a
// delegator.
// - [maxValidatorWeightFactor] is the factor which calculates the maximum
// amount of delegation a validator can receive. A value of 1 effectively
// disables delegation.
// - [uptimeRequirement] is the minimum percentage a validator must be
// online and responsive to receive a reward.
NewTransformSubnetTx(
subnetID 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.TransformSubnetTx, error)
// NewAddPermissionlessValidatorTx creates a new validator of the specified
// subnet.
//
// - [vdr] specifies all the details of the validation period such as the
// subnetID, startTime, endTime, stake weight, and nodeID.
// - [signer] if the subnetID is the primary network, this is the BLS key
// for this validator. Otherwise, this value should be the empty signer.
// - [assetID] specifies the asset to stake.
// - [validationRewardsOwner] specifies the owner of all the rewards this
// validator earns for its validation period.
// - [delegationRewardsOwner] specifies the owner of all the rewards this
// validator earns for delegations during its validation period.
// - [shares] specifies the fraction (out of 1,000,000) that this validator
// will take from delegation rewards. If 1,000,000 is provided, 100% of
// the delegation reward will be sent to the validator's [rewardsOwner].
NewAddPermissionlessValidatorTx(
vdr *txs.SubnetValidator,
signer signer.Signer,
assetID ids.ID,
validationRewardsOwner *secp256k1fx.OutputOwners,
delegationRewardsOwner *secp256k1fx.OutputOwners,
shares uint32,
options ...common.Option,
) (*txs.AddPermissionlessValidatorTx, error)
// NewAddPermissionlessDelegatorTx creates a new delegator of the specified
// subnet on the specified nodeID.
//
// - [vdr] specifies all the details of the delegation period such as the
// subnetID, startTime, endTime, stake weight, and nodeID.
// - [assetID] specifies the asset to stake.
// - [rewardsOwner] specifies the owner of all the rewards this delegator
// earns during its delegation period.
NewAddPermissionlessDelegatorTx(
vdr *txs.SubnetValidator,
assetID ids.ID,
rewardsOwner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.AddPermissionlessDelegatorTx, error)
}
Builder provides a convenient interface for building unsigned P-chain transactions.
func New ¶
New returns a new transaction builder.
- [addrs] is the set of addresses that the builder assumes can be used when signing the transactions in the future.
- context provides the chain's configuration.
- [backend] provides the chain's state.
func WithOptions ¶ added in v1.11.13
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.
Click to show internal directories.
Click to hide internal directories.