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 []*cryft.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) // 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 []*cryft.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 NewWithOptions ¶
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.
type Context ¶
type Context struct { NetworkID uint32 CRYFTAssetID ids.ID BaseTxFee uint64 CreateSubnetTxFee uint64 TransformSubnetTxFee uint64 CreateBlockchainTxFee uint64 AddPrimaryNetworkValidatorFee uint64 AddPrimaryNetworkDelegatorFee uint64 AddSubnetValidatorFee uint64 AddSubnetDelegatorFee uint64 }
func NewContextFromClients ¶
Click to show internal directories.
Click to hide internal directories.