stake

package
v1.13.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 5, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Initializes a new stake account
	Instruction_Initialize uint32 = iota
	// Authorize a key to manage stake or withdrawal
	Instruction_Authorize
	// Delegate a stake account to a validator vote account
	Instruction_DelegateStake
	// Split an active stake account into a new stake account
	Instruction_Split
	// Withdraw unstaked lamports from the stake account
	Instruction_Withdraw
	// Deactivates the stake in the account
	Instruction_Deactivate
)
View Source
const ProgramName = "Stake"

Variables

View Source
var InstructionImplDef = bin.NewVariantDefinition(
	bin.Uint32TypeIDEncoding,
	[]bin.VariantType{
		{
			"Initialize", (*Initialize)(nil),
		},
		{
			"Authorize", nil,
		},
		{
			"DelegateStake", (*DelegateStake)(nil),
		},
		{
			"Split", (*Split)(nil),
		},
		{
			"Withdraw", (*Withdraw)(nil),
		},
		{
			"Deactivate", (*Deactivate)(nil),
		},
	},
)
View Source
var ProgramID solana.PublicKey = solana.StakeProgramID

Functions

func SetProgramID

func SetProgramID(pubkey solana.PublicKey)

Types

type Authorized

type Authorized struct {
	// Address that will own the stake account
	Staker *ag_solanago.PublicKey
	// Address that is permitted to with from the stake account
	Withdrawer *ag_solanago.PublicKey
}

func (*Authorized) MarshalWithEncoder

func (auth *Authorized) MarshalWithEncoder(encoder *bin.Encoder) error

func (*Authorized) UnmarshalWithDecoder

func (auth *Authorized) UnmarshalWithDecoder(dec *bin.Decoder) error

func (*Authorized) Validate

func (auth *Authorized) Validate() error

type Deactivate

type Deactivate struct {

	// [0] = [WRITE] Stake Account
	// ··········· Delegated stake account to be deactivated
	//
	// [1] = [] Clock Sysvar
	// ··········· The Clock Sysvar Account
	//
	// [2] = [SIGNER] Stake Authority
	// ··········· Stake authority
	//
	solana.AccountMetaSlice `bin:"-" borsh_skip:"true"`
}

func NewDeactivateInstruction

func NewDeactivateInstruction(

	stakeAccount solana.PublicKey,
	stakeAuthority solana.PublicKey,
) *Deactivate

NewDeactivateInstruction declares a new Deactivate instruction with the provided parameters and accounts.

func NewDeactivateInstructionBuilder

func NewDeactivateInstructionBuilder() *Deactivate

NewDeactivateInstructionBuilder creates a new `Deactivate` instruction builder.

func (Deactivate) Build

func (inst Deactivate) Build() *Instruction

func (*Deactivate) EncodeToTree

func (inst *Deactivate) EncodeToTree(parent treeout.Branches)

func (*Deactivate) GetClockSysvar

func (inst *Deactivate) GetClockSysvar() *solana.AccountMeta

func (*Deactivate) GetStakeAccount

func (inst *Deactivate) GetStakeAccount() *solana.AccountMeta

func (*Deactivate) GetStakeAuthority

func (inst *Deactivate) GetStakeAuthority() *solana.AccountMeta

func (*Deactivate) SetClockSysvar

func (inst *Deactivate) SetClockSysvar(clockSysvar solana.PublicKey) *Deactivate

func (*Deactivate) SetStakeAccount

func (inst *Deactivate) SetStakeAccount(stakeAccount solana.PublicKey) *Deactivate

func (*Deactivate) SetStakeAuthority

func (inst *Deactivate) SetStakeAuthority(stakeAuthority solana.PublicKey) *Deactivate

func (*Deactivate) Validate

func (inst *Deactivate) Validate() error

type DelegateStake

type DelegateStake struct {
	// [0] = [WRITE SIGNER] StakeAccount
	// ··········· Stake account getting initialized
	//
	// [1] = [] Vote Account
	// ··········· The validator vote account being delegated to
	//
	// [2] = [] Clock Sysvar
	// ··········· The Clock Sysvar Account
	//
	// [3] = [] Stake History Sysvar
	// ··········· The Stake History Sysvar Account
	//
	// [4] = [] Stake Config Account
	// ··········· The Stake Config Account
	//
	// [5] = [WRITE SIGNER] Stake Authoriy
	// ··········· The Stake Authority
	//
	solana.AccountMetaSlice `bin:"-" borsh_skip:"true"`
}

func NewDelegateStakeInstruction

func NewDelegateStakeInstruction(

	validatorVoteAccount solana.PublicKey,
	stakeAuthority solana.PublicKey,
	stakeAccount solana.PublicKey,
) *DelegateStake

NewDelegateStakeInstruction declares a new DelegateStake instruction with the provided parameters and accounts.

func NewDelegateStakeInstructionBuilder

func NewDelegateStakeInstructionBuilder() *DelegateStake

NewDelegateStakeInstructionBuilder creates a new `DelegateStake` instruction builder.

func (DelegateStake) Build

func (inst DelegateStake) Build() *Instruction

func (*DelegateStake) EncodeToTree

func (inst *DelegateStake) EncodeToTree(parent treeout.Branches)

func (*DelegateStake) GetClockSysvar

func (inst *DelegateStake) GetClockSysvar() *solana.AccountMeta

func (*DelegateStake) GetConfigAccount

func (inst *DelegateStake) GetConfigAccount() *solana.AccountMeta

func (*DelegateStake) GetStakeAccount

func (inst *DelegateStake) GetStakeAccount() *solana.AccountMeta

func (*DelegateStake) GetStakeAuthority

func (inst *DelegateStake) GetStakeAuthority() *solana.AccountMeta

func (*DelegateStake) GetStakeHistorySysvar

func (inst *DelegateStake) GetStakeHistorySysvar() *solana.AccountMeta

func (*DelegateStake) GetVoteAccount

func (inst *DelegateStake) GetVoteAccount() *solana.AccountMeta

func (*DelegateStake) SetClockSysvar

func (inst *DelegateStake) SetClockSysvar(clockSysVarAcc solana.PublicKey) *DelegateStake

func (*DelegateStake) SetConfigAccount

func (inst *DelegateStake) SetConfigAccount(stakeConfigAcc solana.PublicKey) *DelegateStake

func (*DelegateStake) SetStakeAccount

func (inst *DelegateStake) SetStakeAccount(stakeAccount solana.PublicKey) *DelegateStake

func (*DelegateStake) SetStakeAuthority

func (inst *DelegateStake) SetStakeAuthority(stakeAuthority solana.PublicKey) *DelegateStake

func (*DelegateStake) SetStakeHistorySysvar

func (inst *DelegateStake) SetStakeHistorySysvar(stakeHistorySysVarAcc solana.PublicKey) *DelegateStake

func (*DelegateStake) SetVoteAccount

func (inst *DelegateStake) SetVoteAccount(voteAcc solana.PublicKey) *DelegateStake

func (*DelegateStake) Validate

func (inst *DelegateStake) Validate() error

type Initialize

type Initialize struct {
	// Authorization settings for stake account
	Authorized *Authorized

	// Lockup settings for stake account
	Lockup *Lockup

	// [0] = [WRITE SIGNER] StakeAccount
	// ··········· Stake account getting initialized
	//
	// [1] = [] RentSysvar
	// ··········· RentSysvar account
	//
	solana.AccountMetaSlice `bin:"-" borsh_skip:"true"`
}

func NewInitializeInstruction

func NewInitializeInstruction(

	staker solana.PublicKey,
	withdrawer solana.PublicKey,

	stakeAccount solana.PublicKey,
) *Initialize

NewInitializeInstruction declares a new Initialize instruction with the provided parameters and accounts.

func NewInitializeInstructionBuilder

func NewInitializeInstructionBuilder() *Initialize

NewInitializeInstructionBuilder creates a new `Initialize` instruction builder.

func (Initialize) Build

func (inst Initialize) Build() *Instruction

func (*Initialize) EncodeToTree

func (inst *Initialize) EncodeToTree(parent treeout.Branches)

func (*Initialize) GetRentSysvarAccount

func (inst *Initialize) GetRentSysvarAccount() *solana.AccountMeta

func (*Initialize) GetStakeAccount

func (inst *Initialize) GetStakeAccount() *solana.AccountMeta

func (*Initialize) MarshalWithEncoder

func (inst *Initialize) MarshalWithEncoder(encoder *bin.Encoder) error

func (*Initialize) SetCustodian

func (inst *Initialize) SetCustodian(custodian solana.PublicKey) *Initialize

func (*Initialize) SetLockupEpoch

func (inst *Initialize) SetLockupEpoch(epoch uint64) *Initialize

func (*Initialize) SetLockupTimestamp

func (inst *Initialize) SetLockupTimestamp(unixTimestamp int64) *Initialize

func (*Initialize) SetRentSysvarAccount

func (inst *Initialize) SetRentSysvarAccount(rentSysvar solana.PublicKey) *Initialize

Rent sysvar account

func (*Initialize) SetStakeAccount

func (inst *Initialize) SetStakeAccount(stakeAccount solana.PublicKey) *Initialize

Stake account account

func (*Initialize) SetStaker

func (inst *Initialize) SetStaker(staker solana.PublicKey) *Initialize

func (*Initialize) SetWithdrawer

func (inst *Initialize) SetWithdrawer(withdrawer solana.PublicKey) *Initialize

func (*Initialize) UnmarshalWithDecoder

func (inst *Initialize) UnmarshalWithDecoder(dec *bin.Decoder) error

func (*Initialize) Validate

func (inst *Initialize) Validate() error

type Instruction

type Instruction struct {
	bin.BaseVariant
}

func DecodeInstruction

func DecodeInstruction(accounts []*solana.AccountMeta, data []byte) (*Instruction, error)

func (*Instruction) Accounts

func (inst *Instruction) Accounts() (out []*solana.AccountMeta)

func (*Instruction) Data

func (inst *Instruction) Data() ([]byte, error)

func (*Instruction) EncodeToTree

func (inst *Instruction) EncodeToTree(parent treeout.Branches)

func (Instruction) MarshalWithEncoder

func (inst Instruction) MarshalWithEncoder(encoder *bin.Encoder) error

func (*Instruction) ProgramID

func (inst *Instruction) ProgramID() solana.PublicKey

func (*Instruction) TextEncode

func (inst *Instruction) TextEncode(encoder *text.Encoder, option *text.Option) error

func (*Instruction) UnmarshalWithDecoder

func (inst *Instruction) UnmarshalWithDecoder(decoder *bin.Decoder) error

type Lockup

type Lockup struct {
	// UnixTimestamp at which this stake will allow withdrawal, unless the transaction is signed by the custodian
	UnixTimestamp *int64
	// Epoch height at which this stake will allow withdrawal, unless the transaction is signed by the custodian
	Epoch *uint64
	// Custodian signature on a transaction exempts the operation from lockup constraints
	Custodian *ag_solanago.PublicKey
}

func (*Lockup) MarshalWithEncoder

func (lockup *Lockup) MarshalWithEncoder(encoder *bin.Encoder) error

func (*Lockup) UnmarshalWithDecoder

func (lockup *Lockup) UnmarshalWithDecoder(dec *bin.Decoder) error

func (*Lockup) Validate

func (lockup *Lockup) Validate() error

type Split

type Split struct {
	// Amount to split to new stake account
	Lamports *uint64
	// [0] = [WRITE] Stake Account
	// ··········· Stake account to be split; must be in the Initialized or Stake state
	//
	// [1] = [WRITE] New Stake Account
	// ··········· Uninitialized stake account that will take the split-off amount
	//
	// [2] = [SIGNER] Stake Authority
	// ··········· Stake authority
	//
	solana.AccountMetaSlice `bin:"-" borsh_skip:"true"`
}

func NewSplitInstruction

func NewSplitInstruction(

	lamports uint64,

	stakeAccount solana.PublicKey,
	newStakeAccount solana.PublicKey,
	stakeAuthority solana.PublicKey,
) *Split

NewSplitInstruction declares a new Split instruction with the provided parameters and accounts.

func NewSplitInstructionBuilder

func NewSplitInstructionBuilder() *Split

NewSplitInstructionBuilder creates a new `Split` instruction builder.

func (Split) Build

func (inst Split) Build() *Instruction

func (*Split) EncodeToTree

func (inst *Split) EncodeToTree(parent treeout.Branches)

func (*Split) GetNewStakeAccount

func (inst *Split) GetNewStakeAccount() *solana.AccountMeta

func (*Split) GetStakeAccount

func (inst *Split) GetStakeAccount() *solana.AccountMeta

func (*Split) GetStakeAuthority

func (inst *Split) GetStakeAuthority() *solana.AccountMeta

func (*Split) MarshalWithEncoder

func (inst *Split) MarshalWithEncoder(encoder *bin.Encoder) error

func (*Split) SetLamports

func (inst *Split) SetLamports(lamports uint64) *Split

func (*Split) SetNewStakeAccount

func (inst *Split) SetNewStakeAccount(voteAcc solana.PublicKey) *Split

func (*Split) SetStakeAccount

func (inst *Split) SetStakeAccount(stakeAccount solana.PublicKey) *Split

func (*Split) SetStakeAuthority

func (inst *Split) SetStakeAuthority(stakeAuthority solana.PublicKey) *Split

func (*Split) UnmarshalWithDecoder

func (inst *Split) UnmarshalWithDecoder(dec *bin.Decoder) error

func (*Split) Validate

func (inst *Split) Validate() error

type Withdraw

type Withdraw struct {
	// Withdraw unstaked lamports from the stake account
	Lamports *uint64
	// [0] = [WRITE] Stake Account
	// ··········· Stake account from which to withdraw
	//
	// [1] = [WRITE] Recipient Account
	// ··········· Recipient account
	//
	// [2] = [] Clock Sysvar
	// ··········· The Clock Sysvar Account
	//
	// [3] = [] Stake History Sysvar
	// ··········· The Stake History Sysvar Account
	//
	// [4] = [SIGNER] Withdraw Authority
	// ··········· Withdraw authority
	//
	// OPTIONAL:
	// [5] = [SIGNER] Lockup authority
	// ··········· If before lockup expiration
	solana.AccountMetaSlice `bin:"-" borsh_skip:"true"`
}

func NewWithdrawInstruction

func NewWithdrawInstruction(

	lamports uint64,

	stakeAccount solana.PublicKey,
	recipient solana.PublicKey,
	withdrawAuthority solana.PublicKey,
) *Withdraw

NewWithdrawInstruction declares a new Withdraw instruction with the provided parameters and accounts.

func NewWithdrawInstructionBuilder

func NewWithdrawInstructionBuilder() *Withdraw

NewWithdrawInstructionBuilder creates a new `Withdraw` instruction builder.

func (Withdraw) Build

func (inst Withdraw) Build() *Instruction

func (*Withdraw) EncodeToTree

func (inst *Withdraw) EncodeToTree(parent treeout.Branches)

func (*Withdraw) GetClockSysvar

func (inst *Withdraw) GetClockSysvar() *solana.AccountMeta

func (*Withdraw) GetRecipientAccount

func (inst *Withdraw) GetRecipientAccount() *solana.AccountMeta

func (*Withdraw) GetStakeAccount

func (inst *Withdraw) GetStakeAccount() *solana.AccountMeta

func (*Withdraw) GetStakeHistorySysvar

func (inst *Withdraw) GetStakeHistorySysvar() *solana.AccountMeta

func (*Withdraw) GetWithdrawAuthority

func (inst *Withdraw) GetWithdrawAuthority() *solana.AccountMeta

func (*Withdraw) MarshalWithEncoder

func (inst *Withdraw) MarshalWithEncoder(encoder *bin.Encoder) error

func (*Withdraw) SetClockSysvar

func (inst *Withdraw) SetClockSysvar(clockSysvar solana.PublicKey) *Withdraw

func (*Withdraw) SetLamports

func (inst *Withdraw) SetLamports(lamports uint64) *Withdraw

func (*Withdraw) SetRecipientAccount

func (inst *Withdraw) SetRecipientAccount(recipient solana.PublicKey) *Withdraw

func (*Withdraw) SetStakeAccount

func (inst *Withdraw) SetStakeAccount(stakeAccount solana.PublicKey) *Withdraw

func (*Withdraw) SetStakeHistorySysvar

func (inst *Withdraw) SetStakeHistorySysvar(historySysvar solana.PublicKey) *Withdraw

func (*Withdraw) SetWithdrawAuthority

func (inst *Withdraw) SetWithdrawAuthority(withdrawAuthority solana.PublicKey) *Withdraw

func (*Withdraw) UnmarshalWithDecoder

func (inst *Withdraw) UnmarshalWithDecoder(dec *bin.Decoder) error

func (*Withdraw) Validate

func (inst *Withdraw) Validate() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL