Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Backend ¶
type Backend interface { ChainUTXOs BuilderBackend SignerBackend AcceptTx(ctx stdcontext.Context, tx *platformvm.Tx) error }
Backend defines the full interface required to support a P-chain wallet.
func NewBackend ¶
func NewBackend(ctx Context, utxos ChainUTXOs, txs map[ids.ID]*platformvm.Tx) Backend
type Builder ¶
type Builder interface { // 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. Because the P-chain // doesn't intend for balance transfers to occur, this method is expensive // and abuses the creation of subnets. // // - [outputs] specifies all the recipients and amounts that should be sent // from this transaction. NewBaseTx( outputs []*avax.TransferableOutput, options ...common.Option, ) (*platformvm.UnsignedCreateSubnetTx, error) // NewAddValidatorTx creates a new validator of the primary network. // // - [validator] 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( validator *pChainValidator.Validator, rewardsOwner *secp256k1fx.OutputOwners, shares uint32, options ...common.Option, ) (*platformvm.UnsignedAddValidatorTx, error) // NewAddSubnetValidatorTx creates a new validator of a subnet. // // - [validator] specifies all the details of the validation period such as // the startTime, endTime, sampling weight, nodeID, and subnetID. NewAddSubnetValidatorTx( validator *pChainValidator.SubnetValidator, options ...common.Option, ) (*platformvm.UnsignedAddSubnetValidatorTx, error) // NewAddDelegatorTx creates a new delegator to a validator on the primary // network. // // - [validator] 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( validator *pChainValidator.Validator, rewardsOwner *secp256k1fx.OutputOwners, options ...common.Option, ) (*platformvm.UnsignedAddDelegatorTx, 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, ) (*platformvm.UnsignedCreateChainTx, 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, ) (*platformvm.UnsignedCreateSubnetTx, 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, ) (*platformvm.UnsignedImportTx, 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, ) (*platformvm.UnsignedExportTx, error) }
Builder provides a convenient interface for building unsigned P-chain transactions.
func NewBuilder ¶
func NewBuilder(addrs ids.ShortSet, backend BuilderBackend) Builder
NewBuilder 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.
- [backend] provides the required access to the chain's context and state to build out the transactions.
func NewBuilderWithOptions ¶
NewBuilderWithOptions returns a new transaction builder that will use the given options by default.
- [builder] is the builder that will be called to perform the underlying opterations.
- [options] will be provided to the builder in addition to the options provided in the method calls.
type BuilderBackend ¶
type BuilderBackend interface { Context UTXOs(ctx stdcontext.Context, sourceChainID ids.ID) ([]*avax.UTXO, error) GetTx(ctx stdcontext.Context, txID ids.ID) (*platformvm.Tx, error) }
BuilderBackend specifies the required information needed to build unsigned P-chain transactions.
type ChainUTXOs ¶
type ChainUTXOs interface { AddUTXO(ctx stdcontext.Context, destinationChainID ids.ID, utxo *avax.UTXO) error RemoveUTXO(ctx stdcontext.Context, sourceChainID, utxoID ids.ID) error UTXOs(ctx stdcontext.Context, sourceChainID ids.ID) ([]*avax.UTXO, error) GetUTXO(ctx stdcontext.Context, sourceChainID, utxoID ids.ID) (*avax.UTXO, error) }
type Context ¶
type Context interface { NetworkID() uint32 HRP() string AVAXAssetID() ids.ID BaseTxFee() uint64 CreateSubnetTxFee() uint64 CreateBlockchainTxFee() uint64 }
func NewContext ¶
func NewContextFromClients ¶
func NewContextFromURI ¶
func NewContextFromURI(ctx stdcontext.Context, uri string) (Context, error)
type Signer ¶
type Signer interface { SignUnsigned(ctx stdcontext.Context, tx platformvm.UnsignedTx) (*platformvm.Tx, error) Sign(ctx stdcontext.Context, tx *platformvm.Tx) error }
func NewSigner ¶
func NewSigner(kc *secp256k1fx.Keychain, backend SignerBackend) Signer
type SignerBackend ¶
type SignerBackend interface { GetUTXO(ctx stdcontext.Context, chainID, utxoID ids.ID) (*avax.UTXO, error) GetTx(ctx stdcontext.Context, txID ids.ID) (*platformvm.Tx, error) }
type Wallet ¶
type Wallet interface { Context // Builder returns the builder that will be used to create the transactions. Builder() Builder // Signer returns the signer that will be used to sign the transactions. Signer() Signer // IssueBaseTx creates, signs, and issues a new simple value transfer. // Because the P-chain doesn't intend for balance transfers to occur, this // method is expensive and abuses the creation of subnets. // // - [outputs] specifies all the recipients and amounts that should be sent // from this transaction. IssueBaseTx( outputs []*avax.TransferableOutput, options ...common.Option, ) (ids.ID, error) // IssueAddValidatorTx creates, signs, and issues a new validator of the // primary network. // // - [validator] 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]. IssueAddValidatorTx( validator *pChainValidator.Validator, rewardsOwner *secp256k1fx.OutputOwners, shares uint32, options ...common.Option, ) (ids.ID, error) // IssueAddSubnetValidatorTx creates, signs, and issues a new validator of a // subnet. // // - [validator] specifies all the details of the validation period such as // the startTime, endTime, sampling weight, nodeID, and subnetID. IssueAddSubnetValidatorTx( validator *pChainValidator.SubnetValidator, options ...common.Option, ) (ids.ID, error) // IssueAddDelegatorTx creates, signs, and issues a new delegator to a // validator on the primary network. // // - [validator] 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. IssueAddDelegatorTx( validator *pChainValidator.Validator, rewardsOwner *secp256k1fx.OutputOwners, options ...common.Option, ) (ids.ID, error) // IssueCreateChainTx creates, signs, and issues 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. IssueCreateChainTx( subnetID ids.ID, genesis []byte, vmID ids.ID, fxIDs []ids.ID, chainName string, options ...common.Option, ) (ids.ID, error) // IssueCreateSubnetTx creates, signs, and issues a new subnet with the // specified owner. // // - [owner] specifies who has the ability to create new chains and add new // validators to the subnet. IssueCreateSubnetTx( owner *secp256k1fx.OutputOwners, options ...common.Option, ) (ids.ID, error) // IssueImportTx creates, signs, and issues 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. IssueImportTx( chainID ids.ID, to *secp256k1fx.OutputOwners, options ...common.Option, ) (ids.ID, error) // IssueExportTx creates, signs, and issues 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]. IssueExportTx( chainID ids.ID, outputs []*avax.TransferableOutput, options ...common.Option, ) (ids.ID, error) // IssueUnsignedTx signs and issues the unsigned tx. IssueUnsignedTx( utx platformvm.UnsignedTx, options ...common.Option, ) (ids.ID, error) // IssueTx issues the signed tx. IssueTx( tx *platformvm.Tx, options ...common.Option, ) (ids.ID, error) }
Click to show internal directories.
Click to hide internal directories.