wallet

package
v1.9.9 Latest Latest
Warning

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

Go to latest
Published: May 14, 2024 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultSubwallet = 698983191
View Source
const EncryptedCommentOpcode = 0x2167da4b

Variables

View Source
var (
	ErrUnsupportedWalletVersion = errors.New("wallet version is not supported")
	ErrTxWasNotConfirmed        = errors.New("transaction was not confirmed in a given deadline, but it may still be confirmed later")
	// Deprecated: use ton.ErrTxWasNotFound
	ErrTxWasNotFound = errors.New("requested transaction is not found")
)

Functions

func AddressFromPubKey

func AddressFromPubKey(key ed25519.PublicKey, version VersionConfig, subwallet uint32) (*address.Address, error)

func CreateCommentCell

func CreateCommentCell(text string) (*cell.Cell, error)

func CreateEncryptedCommentCell

func CreateEncryptedCommentCell(text string, senderAddr *address.Address, ourKey ed25519.PrivateKey, theirKey ed25519.PublicKey) (*cell.Cell, error)

func DecryptCommentCell

func DecryptCommentCell(commentCell *cell.Cell, sender *address.Address, ourKey ed25519.PrivateKey, theirKey ed25519.PublicKey) ([]byte, error)

func GetPublicKey

func GetPublicKey(ctx context.Context, api TonAPI, addr *address.Address) (ed25519.PublicKey, error)

func GetStateInit

func GetStateInit(pubKey ed25519.PublicKey, version VersionConfig, subWallet uint32) (*tlb.StateInit, error)

func NewSeed

func NewSeed() []string

func NewSeedWithPassword

func NewSeedWithPassword(password string) []string

Types

type ConfigHighloadV3

type ConfigHighloadV3 struct {
	// MessageTTL must be > 5 and less than 1<<22
	MessageTTL uint32

	// This function wil be used to get query id and creation time for the new message.
	// ID can be iterator from your database, max id is 1<<23, when it is higher, start from 0 and repeat
	// MessageBuilder should be defined if you want to send transactions
	MessageBuilder func(ctx context.Context, subWalletId uint32) (id uint32, createdAt int64, err error)
}

type Message

type Message struct {
	Mode            uint8
	InternalMessage *tlb.InternalMessage
}

func SimpleMessage

func SimpleMessage(to *address.Address, amount tlb.Coins, payload *cell.Cell) *Message

func SimpleMessageAutoBounce

func SimpleMessageAutoBounce(to *address.Address, amount tlb.Coins, payload *cell.Cell) *Message

SimpleMessageAutoBounce - will determine bounce flag from address

type RegularBuilder

type RegularBuilder interface {
	BuildMessage(ctx context.Context, isInitialized bool, _ *ton.BlockIDExt, messages []*Message) (*cell.Cell, error)
}

type SpecHighloadV2R2

type SpecHighloadV2R2 struct {
	SpecRegular
	SpecQuery
}

func (*SpecHighloadV2R2) BuildMessage

func (s *SpecHighloadV2R2) BuildMessage(_ context.Context, messages []*Message) (*cell.Cell, error)

type SpecHighloadV3

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

func (*SpecHighloadV3) BuildMessage

func (s *SpecHighloadV3) BuildMessage(ctx context.Context, messages []*Message) (_ *cell.Cell, err error)

type SpecQuery

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

func (*SpecQuery) SetCustomQueryIDFetcher

func (s *SpecQuery) SetCustomQueryIDFetcher(fetcher func() (ttl uint32, randPart uint32))

type SpecRegular

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

func (*SpecRegular) SetMessagesTTL

func (s *SpecRegular) SetMessagesTTL(ttl uint32)

type SpecSeqno

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

func (*SpecSeqno) SetCustomSeqnoFetcher deprecated

func (s *SpecSeqno) SetCustomSeqnoFetcher(fetcher func() uint32)

Deprecated: Use SetSeqnoFetcher

func (*SpecSeqno) SetSeqnoFetcher

func (s *SpecSeqno) SetSeqnoFetcher(fetcher func(ctx context.Context, subWallet uint32) (uint32, error))

type SpecV3

type SpecV3 struct {
	SpecRegular
	SpecSeqno
}

func (*SpecV3) BuildMessage

func (s *SpecV3) BuildMessage(ctx context.Context, _ bool, _ *ton.BlockIDExt, messages []*Message) (_ *cell.Cell, err error)

type SpecV4R2

type SpecV4R2 struct {
	SpecRegular
	SpecSeqno
}

func (*SpecV4R2) BuildMessage

func (s *SpecV4R2) BuildMessage(ctx context.Context, _ bool, _ *ton.BlockIDExt, messages []*Message) (_ *cell.Cell, err error)

type SpecV5R1

type SpecV5R1 struct {
	SpecRegular
	SpecSeqno
}

func (*SpecV5R1) BuildMessage

func (s *SpecV5R1) BuildMessage(ctx context.Context, _ bool, _ *ton.BlockIDExt, messages []*Message) (_ *cell.Cell, err error)

type TonAPI

type TonAPI interface {
	WaitForBlock(seqno uint32) ton.APIClientWrapped
	Client() ton.LiteClient
	CurrentMasterchainInfo(ctx context.Context) (*ton.BlockIDExt, error)
	GetAccount(ctx context.Context, block *ton.BlockIDExt, addr *address.Address) (*tlb.Account, error)
	SendExternalMessage(ctx context.Context, msg *tlb.ExternalMessage) error
	RunGetMethod(ctx context.Context, blockInfo *ton.BlockIDExt, addr *address.Address, method string, params ...interface{}) (*ton.ExecutionResult, error)
	ListTransactions(ctx context.Context, addr *address.Address, num uint32, lt uint64, txHash []byte) ([]*tlb.Transaction, error)
	FindLastTransactionByInMsgHash(ctx context.Context, addr *address.Address, msgHash []byte, maxTxNumToScan ...int) (*tlb.Transaction, error)
	FindLastTransactionByOutMsgHash(ctx context.Context, addr *address.Address, msgHash []byte, maxTxNumToScan ...int) (*tlb.Transaction, error)
}

type Version

type Version int
const (
	V1R1               Version = 11
	V1R2               Version = 12
	V1R3               Version = 13
	V2R1               Version = 21
	V2R2               Version = 22
	V3R1               Version = 31
	V3R2               Version = 32
	V3                         = V3R2
	V4R1               Version = 41
	V4R2               Version = 42
	V5R1               Version = 51
	HighloadV2R2       Version = 122
	HighloadV2Verified Version = 123
	HighloadV3         Version = 300
	Lockup             Version = 200
	Unknown            Version = 0
)

func GetWalletVersion

func GetWalletVersion(account *tlb.Account) Version

func (Version) String

func (v Version) String() string

type VersionConfig

type VersionConfig any

type Wallet

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

func FromPrivateKey

func FromPrivateKey(api TonAPI, key ed25519.PrivateKey, version VersionConfig) (*Wallet, error)

func FromSeed

func FromSeed(api TonAPI, seed []string, version VersionConfig) (*Wallet, error)

func FromSeedWithPassword

func FromSeedWithPassword(api TonAPI, seed []string, password string, version VersionConfig) (*Wallet, error)

func (*Wallet) Address

func (w *Wallet) Address() *address.Address

Address - returns old (bounce) version of wallet address DEPRECATED: because of address reform, use WalletAddress, it will return UQ format

func (*Wallet) BuildExternalMessage

func (w *Wallet) BuildExternalMessage(ctx context.Context, message *Message) (*tlb.ExternalMessage, error)

func (*Wallet) BuildExternalMessageForMany

func (w *Wallet) BuildExternalMessageForMany(ctx context.Context, messages []*Message) (*tlb.ExternalMessage, error)

func (*Wallet) BuildMessageForMany deprecated

func (w *Wallet) BuildMessageForMany(ctx context.Context, messages []*Message) (*tlb.ExternalMessage, error)

Deprecated: use BuildExternalMessageForMany

func (*Wallet) BuildTransfer

func (w *Wallet) BuildTransfer(to *address.Address, amount tlb.Coins, bounce bool, comment string) (_ *Message, err error)

func (*Wallet) BuildTransferEncrypted

func (w *Wallet) BuildTransferEncrypted(ctx context.Context, to *address.Address, amount tlb.Coins, bounce bool, comment string) (_ *Message, err error)

func (*Wallet) DeployContract deprecated

func (w *Wallet) DeployContract(ctx context.Context, amount tlb.Coins, msgBody, contractCode, contractData *cell.Cell, waitConfirmation ...bool) (*address.Address, error)

Deprecated: use DeployContractWaitTransaction

func (*Wallet) DeployContractWaitTransaction

func (w *Wallet) DeployContractWaitTransaction(ctx context.Context, amount tlb.Coins, msgBody, contractCode, contractData *cell.Cell) (*address.Address, *tlb.Transaction, *ton.BlockIDExt, error)

func (*Wallet) FindTransactionByInMsgHash deprecated

func (w *Wallet) FindTransactionByInMsgHash(ctx context.Context, msgHash []byte, maxTxNumToScan ...int) (*tlb.Transaction, error)

Deprecated: use ton.FindLastTransactionByInMsgHash FindTransactionByInMsgHash returns transaction in wallet account with incoming message hash equal to msgHash.

func (*Wallet) GetBalance

func (w *Wallet) GetBalance(ctx context.Context, block *ton.BlockIDExt) (tlb.Coins, error)

func (*Wallet) GetSpec

func (w *Wallet) GetSpec() any

func (*Wallet) GetSubwallet

func (w *Wallet) GetSubwallet(subwallet uint32) (*Wallet, error)

func (*Wallet) PrepareExternalMessageForMany

func (w *Wallet) PrepareExternalMessageForMany(ctx context.Context, withStateInit bool, messages []*Message) (_ *tlb.ExternalMessage, err error)

PrepareExternalMessageForMany - Prepares external message for wallet can be used directly for offline signing but custom fetchers should be defined in this case

func (*Wallet) PrivateKey

func (w *Wallet) PrivateKey() ed25519.PrivateKey

func (*Wallet) Send

func (w *Wallet) Send(ctx context.Context, message *Message, waitConfirmation ...bool) error

func (*Wallet) SendMany

func (w *Wallet) SendMany(ctx context.Context, messages []*Message, waitConfirmation ...bool) error

func (*Wallet) SendManyGetInMsgHash

func (w *Wallet) SendManyGetInMsgHash(ctx context.Context, messages []*Message, waitConfirmation ...bool) ([]byte, error)

SendManyGetInMsgHash returns hash of external incoming message payload.

func (*Wallet) SendManyWaitTransaction

func (w *Wallet) SendManyWaitTransaction(ctx context.Context, messages []*Message) (*tlb.Transaction, *ton.BlockIDExt, error)

SendManyWaitTransaction always waits for tx block confirmation and returns found tx.

func (*Wallet) SendManyWaitTxHash

func (w *Wallet) SendManyWaitTxHash(ctx context.Context, messages []*Message) ([]byte, error)

SendManyWaitTxHash always waits for tx block confirmation and returns found tx hash in block.

func (*Wallet) SendWaitTransaction

func (w *Wallet) SendWaitTransaction(ctx context.Context, message *Message) (*tlb.Transaction, *ton.BlockIDExt, error)

SendWaitTransaction always waits for tx block confirmation and returns found tx.

func (*Wallet) Transfer

func (w *Wallet) Transfer(ctx context.Context, to *address.Address, amount tlb.Coins, comment string, waitConfirmation ...bool) error

Transfer - safe transfer, in case of error on smart contract side, you will get coins back, cannot be used to transfer TON to not yet initialized contract/wallet

func (*Wallet) TransferNoBounce

func (w *Wallet) TransferNoBounce(ctx context.Context, to *address.Address, amount tlb.Coins, comment string, waitConfirmation ...bool) error

TransferNoBounce - can be used to transfer TON to not yet initialized contract/wallet

func (*Wallet) TransferWithEncryptedComment

func (w *Wallet) TransferWithEncryptedComment(ctx context.Context, to *address.Address, amount tlb.Coins, comment string, waitConfirmation ...bool) error

TransferWithEncryptedComment - same as Transfer but encrypts comment, throws error if target contract (address) has no get_public_key method.

func (*Wallet) WalletAddress

func (w *Wallet) WalletAddress() *address.Address

WalletAddress - returns new standard non bounce address

Jump to

Keyboard shortcuts

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