associated_account

package
v0.0.8 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2024 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package field implements fast arithmetic modulo 2^255-19.

Index

Constants

View Source
const (
	// Maximum length of derived pubkey seed.
	MaxSeedLength = 32
	// Maximum number of seeds.
	MaxSeeds = 16
)
View Source
const PDA_MARKER = "ProgramDerivedAddress"

Variables

View Source
var ErrMaxSeedLengthExceeded = errors.New("Max seed length exceeded")

Functions

func FindAssociatedTokenAddress

func FindAssociatedTokenAddress(wallet common.Address, mint common.Address, options ...common.Address) (common.Address, uint8, error)

func FindAssociatedTokenAddressAndBumpSeed

func FindAssociatedTokenAddressAndBumpSeed(walletAddress common.Address, splTokenMintAddress common.Address, programID common.Address, options ...common.Address) (common.Address, uint8, error)

func FindProgramAddress

func FindProgramAddress(seed [][]byte, programID common.Address) (common.Address, uint8, error)

Find a valid program address and its corresponding bump seed.

func IsOnCurve

func IsOnCurve(b []byte) bool

Check if the provided `b` is on the ed25519 curve.

Types

type Create

type Create struct {
	Payer          common.Address `bin:"-" borsh_skip:"true"`
	Wallet         common.Address `bin:"-" borsh_skip:"true"`
	Mint           common.Address `bin:"-" borsh_skip:"true"`
	TokenProgramID common.Address `bin:"-" borsh_skip:"true"`

	// [0] = [WRITE, SIGNER] Payer
	// ··········· Funding account
	//
	// [1] = [WRITE] AssociatedTokenAccount
	// ··········· Associated token account address to be created
	//
	// [2] = [] Wallet
	// ··········· Wallet address for the new associated token account
	//
	// [3] = [] TokenMint
	// ··········· The token mint for the new associated token account
	//
	// [4] = [] SystemProgram
	// ··········· System program ID
	//
	// [5] = [] TokenProgram
	// ··········· SPL token program ID
	//
	// [6] = [] SysVarRent
	// ··········· SysVarRentPubkey
	AccountMetaSlice []*base.AccountMeta `bin:"-" borsh_skip:"true"`
}

func NewCreateInstruction

func NewCreateInstruction(
	payer common.Address,
	walletAddress common.Address,
	splTokenMintAddress common.Address,
) *Create

func NewCreateInstructionBuilder

func NewCreateInstructionBuilder() *Create

NewCreateInstructionBuilder creates a new `Create` instruction builder.

func (Create) Build

func (inst Create) Build() *Instruction

func (Create) MarshalWithEncoder

func (inst Create) MarshalWithEncoder(encoder *encodbin.Encoder) error

func (*Create) SetMint

func (inst *Create) SetMint(mint common.Address) *Create

func (*Create) SetPayer

func (inst *Create) SetPayer(payer common.Address) *Create

func (*Create) SetTokenProgramID

func (inst *Create) SetTokenProgramID(tokenProgramID common.Address) *Create

func (*Create) SetWallet

func (inst *Create) SetWallet(wallet common.Address) *Create

type Element

type Element struct {
	// contains filtered or unexported fields
}

Element represents an element of the field GF(2^255-19). Note that this is not a cryptographically secure group, and should only be used to interact with edwards25519.Point coordinates.

This type works similarly to math/big.Int, and all arguments and receivers are allowed to alias.

The zero value is a valid zero element.

func (*Element) Absolute

func (v *Element) Absolute(u *Element) *Element

Absolute sets v to |u|, and returns v.

func (*Element) Add

func (v *Element) Add(a, b *Element) *Element

Add sets v = a + b, and returns v.

func (*Element) Bytes

func (v *Element) Bytes() []byte

Bytes returns the canonical 32-byte little-endian encoding of v.

func (*Element) Equal

func (v *Element) Equal(u *Element) int

Equal returns 1 if v and u are equal, and 0 otherwise.

func (*Element) Invert

func (v *Element) Invert(z *Element) *Element

Invert sets v = 1/z mod p, and returns v.

If z == 0, Invert returns v = 0.

func (*Element) IsNegative

func (v *Element) IsNegative() int

IsNegative returns 1 if v is negative, and 0 otherwise.

func (*Element) Mult32

func (v *Element) Mult32(x *Element, y uint32) *Element

Mult32 sets v = x * y, and returns v.

func (*Element) Multiply

func (v *Element) Multiply(x, y *Element) *Element

Multiply sets v = x * y, and returns v.

func (*Element) Negate

func (v *Element) Negate(a *Element) *Element

Negate sets v = -a, and returns v.

func (*Element) One

func (v *Element) One() *Element

One sets v = 1, and returns v.

func (*Element) Pow22523

func (v *Element) Pow22523(x *Element) *Element

Pow22523 set v = x^((p-5)/8), and returns v. (p-5)/8 is 2^252-3.

func (*Element) Select

func (v *Element) Select(a, b *Element, cond int) *Element

Select sets v to a if cond == 1, and to b if cond == 0.

func (*Element) Set

func (v *Element) Set(a *Element) *Element

Set sets v = a, and returns v.

func (*Element) SetBytes

func (v *Element) SetBytes(x []byte) (*Element, error)

SetBytes sets v to x, where x is a 32-byte little-endian encoding. If x is not of the right length, SetBytes returns nil and an error, and the receiver is unchanged.

Consistent with RFC 7748, the most significant bit (the high bit of the last byte) is ignored, and non-canonical values (2^255-19 through 2^255-1) are accepted. Note that this is laxer than specified by RFC 8032, but consistent with most Ed25519 implementations.

func (*Element) SqrtRatio

func (r *Element) SqrtRatio(u, v *Element) (R *Element, wasSquare int)

SqrtRatio sets r to the non-negative square root of the ratio of u and v.

If u/v is square, SqrtRatio returns r and 1. If u/v is not square, SqrtRatio sets r according to Section 4.3 of draft-irtf-cfrg-ristretto255-decaf448-00, and returns r and 0.

func (*Element) Square

func (v *Element) Square(x *Element) *Element

Square sets v = x * x, and returns v.

func (*Element) Subtract

func (v *Element) Subtract(a, b *Element) *Element

Subtract sets v = a - b, and returns v.

func (*Element) Swap

func (v *Element) Swap(u *Element, cond int)

Swap swaps v and u if cond == 1 or leaves them unchanged if cond == 0, and returns v.

func (*Element) Zero

func (v *Element) Zero() *Element

Zero sets v = 0, and returns v.

type Instruction

type Instruction struct {
	encodbin.BaseVariant
}

func (*Instruction) Accounts

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

func (*Instruction) Data

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

func (*Instruction) MarshalWithEncoder

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

func (*Instruction) ProgramID

func (inst *Instruction) ProgramID() common.Address

type Point

type Point struct {
	// contains filtered or unexported fields
}

Point represents a point on the edwards25519 curve.

This type works similarly to math/big.Int, and all arguments and receivers are allowed to alias.

The zero value is NOT valid, and it may be used only as a receiver.

func (*Point) SetBytes

func (v *Point) SetBytes(x []byte) (*Point, error)

SetBytes sets v = x, where x is a 32-byte encoding of v. If x does not represent a valid point on the curve, SetBytes returns nil and an error and the receiver is unchanged. Otherwise, SetBytes returns v.

Note that SetBytes accepts all non-canonical encodings of valid points. That is, it follows decoding rules that match most implementations in the ecosystem rather than RFC 8032.

Jump to

Keyboard shortcuts

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