tokens

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2024 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AllAccounts uint64 = 0
)

Variables

View Source
var (
	ErrNoFeeCredit           = errors.New("no fee credit in token wallet")
	ErrInsufficientFeeCredit = errors.New("insufficient fee credit balance for transaction(s)")
)
View Source
var (
	NoParent = TokenTypeID(make([]byte, crypto.SHA256.Size()))
)

Functions

func BearerPredicateFromPubKey

func BearerPredicateFromPubKey(receiverPubKey wallet.PubKey) wallet.Predicate

func DecodeHexOrEmpty

func DecodeHexOrEmpty(input string) ([]byte, error)

func FeeCreditRecordIDFromPublicKey

func FeeCreditRecordIDFromPublicKey(shardPart, pubKey []byte) types.UnitID

func ParsePredicateClause

func ParsePredicateClause(clause string, keyNr uint64, am account.Manager) ([]byte, error)

Types

type AccountDcResult added in v0.4.0

type AccountDcResult struct {
	AccountNumber     uint64
	SubmissionResults []*SubmissionResult
}

AccountDcResult dust collection results for single account.

type AttrWithInvariantPredicateInputs

type AttrWithInvariantPredicateInputs interface {
	types.SigBytesProvider
	SetInvariantPredicateSignatures([][]byte)
}

type AttrWithSubTypeCreationInputs

type AttrWithSubTypeCreationInputs interface {
	types.SigBytesProvider
	SetSubTypeCreationPredicateSignatures([][]byte)
}

type CreateFungibleTokenTypeAttributes

type CreateFungibleTokenTypeAttributes struct {
	Symbol                   string
	Name                     string
	Icon                     *Icon
	DecimalPlaces            uint32
	ParentTypeId             TokenTypeID
	SubTypeCreationPredicate wallet.Predicate
	TokenCreationPredicate   wallet.Predicate
	InvariantPredicate       wallet.Predicate
}

func (*CreateFungibleTokenTypeAttributes) ToCBOR added in v0.4.0

type CreateNonFungibleTokenTypeAttributes

type CreateNonFungibleTokenTypeAttributes struct {
	Symbol                   string
	Name                     string
	Icon                     *Icon
	ParentTypeId             TokenTypeID
	SubTypeCreationPredicate wallet.Predicate
	TokenCreationPredicate   wallet.Predicate
	InvariantPredicate       wallet.Predicate
	DataUpdatePredicate      wallet.Predicate
}

func (*CreateNonFungibleTokenTypeAttributes) ToCBOR added in v0.4.0

type Icon

type Icon struct {
	Type string
	Data []byte
}

type Kind added in v0.4.0

type Kind byte
const (
	Any Kind = 1 << iota
	Fungible
	NonFungible
)

func (Kind) String added in v0.4.0

func (kind Kind) String() string

type MintAttr

type MintAttr interface {
	types.SigBytesProvider
	SetBearer([]byte)
	SetTokenCreationPredicateSignatures([][]byte)
}

type MintNonFungibleTokenAttributes

type MintNonFungibleTokenAttributes struct {
	Name                string
	NftType             TokenTypeID
	Uri                 string
	Data                []byte
	Bearer              wallet.Predicate
	DataUpdatePredicate wallet.Predicate
}

func (*MintNonFungibleTokenAttributes) ToCBOR added in v0.4.0

type Observability

type Observability interface {
	TracerProvider() trace.TracerProvider
}

type PredicateInput

type PredicateInput struct {
	// first priority
	Argument types.PredicateBytes
	// if Argument empty, check AccountNumber
	AccountNumber uint64
}

func ParsePredicates

func ParsePredicates(arguments []string, keyNr uint64, am account.Manager) ([]*PredicateInput, error)

type RpcClient added in v0.4.0

type RpcClient interface {
	// tokens functions
	GetToken(ctx context.Context, id TokenID) (*TokenUnit, error)
	GetTokens(ctx context.Context, kind Kind, ownerID []byte) ([]*TokenUnit, error)
	GetTokenTypes(ctx context.Context, kind Kind, creator wallet.PubKey) ([]*TokenUnitType, error)
	GetTypeHierarchy(ctx context.Context, id TokenTypeID) ([]*TokenUnitType, error)

	// common functions
	GetRoundNumber(ctx context.Context) (uint64, error)
	GetFeeCreditRecord(ctx context.Context, unitID types.UnitID, includeStateProof bool) (*api.FeeCreditBill, error)
	GetUnitsByOwnerID(ctx context.Context, ownerID types.Bytes) ([]types.UnitID, error)
	SendTransaction(ctx context.Context, tx *types.TransactionOrder) ([]byte, error)
	GetTransactionProof(ctx context.Context, txHash types.Bytes) (*types.TransactionRecord, *types.TxProof, error)
	GetBlock(ctx context.Context, roundNumber uint64) (*types.Block, error)
}

type SubmissionResult

type SubmissionResult struct {
	TokenTypeID TokenTypeID
	TokenID     TokenID
	FeeSum      uint64
}

SubmissionResult dust collection result for single token type.

type TokenID added in v0.4.0

type TokenID = types.UnitID

type TokenTypeID added in v0.4.0

type TokenTypeID = types.UnitID

type TokenUnit added in v0.4.0

type TokenUnit struct {
	// common
	ID       TokenID     `json:"id"`
	Symbol   string      `json:"symbol"`
	TypeID   TokenTypeID `json:"typeId"`
	TypeName string      `json:"typeName"`
	Owner    types.Bytes `json:"owner"`
	Locked   uint64      `json:"locked"`

	// fungible only
	Amount   uint64 `json:"amount,omitempty,string"`
	Decimals uint32 `json:"decimals,omitempty"`
	Burned   bool   `json:"burned,omitempty"`

	// nft only
	NftName                string           `json:"nftName,omitempty"`
	NftURI                 string           `json:"nftUri,omitempty"`
	NftData                []byte           `json:"nftData,omitempty"`
	NftDataUpdatePredicate wallet.Predicate `json:"nftDataUpdatePredicate,omitempty"`

	// meta
	Kind   Kind          `json:"kind"`
	TxHash wallet.TxHash `json:"txHash"`
}

func (*TokenUnit) IsLocked added in v0.4.0

func (tu *TokenUnit) IsLocked() bool

type TokenUnitType added in v0.4.0

type TokenUnitType struct {
	// common
	ID                       TokenTypeID      `json:"id"`
	ParentTypeID             TokenTypeID      `json:"parentTypeId"`
	Symbol                   string           `json:"symbol"`
	Name                     string           `json:"name,omitempty"`
	Icon                     *tokens.Icon     `json:"icon,omitempty"`
	SubTypeCreationPredicate wallet.Predicate `json:"subTypeCreationPredicate,omitempty"`
	TokenCreationPredicate   wallet.Predicate `json:"tokenCreationPredicate,omitempty"`
	InvariantPredicate       wallet.Predicate `json:"invariantPredicate,omitempty"`

	// fungible only
	DecimalPlaces uint32 `json:"decimalPlaces,omitempty"`

	// nft only
	NftDataUpdatePredicate wallet.Predicate `json:"nftDataUpdatePredicate,omitempty"`

	// meta
	Kind   Kind          `json:"kind"`
	TxHash wallet.TxHash `json:"txHash"`
}

type Wallet

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

func New

func New(systemID types.SystemID, rpcClient RpcClient, am account.Manager, confirmTx bool, feeManager *fees.FeeManager, log *slog.Logger) (*Wallet, error)

func (*Wallet) AddFeeCredit

func (w *Wallet) AddFeeCredit(ctx context.Context, cmd fees.AddFeeCmd) (*fees.AddFeeCmdResponse, error)

func (*Wallet) CollectDust

func (w *Wallet) CollectDust(ctx context.Context, accountNumber uint64, allowedTokenTypes []TokenTypeID, invariantPredicateArgs []*PredicateInput) ([]*AccountDcResult, error)

func (*Wallet) GetAccountManager

func (w *Wallet) GetAccountManager() account.Manager

func (*Wallet) GetFeeCredit

func (w *Wallet) GetFeeCredit(ctx context.Context, cmd fees.GetFeeCreditCmd) (*api.FeeCreditBill, error)

GetFeeCredit returns fee credit bill for given account, can return nil if fee credit bill has not been created yet.

func (*Wallet) GetFeeCreditBill

func (w *Wallet) GetFeeCreditBill(ctx context.Context, unitID []byte) (*api.FeeCreditBill, error)

GetFeeCreditBill returns fee credit bill for given unitID can return nil if fee credit bill has not been created yet.

func (*Wallet) GetRoundNumber

func (w *Wallet) GetRoundNumber(ctx context.Context) (uint64, error)

func (*Wallet) GetToken

func (w *Wallet) GetToken(ctx context.Context, tokenID TokenID) (*TokenUnit, error)

func (*Wallet) GetTokenType

func (w *Wallet) GetTokenType(ctx context.Context, typeId TokenTypeID) (*TokenUnitType, error)

GetTokenType returns non-nil TokenUnitType or error if not found or other issues

func (*Wallet) ListTokenTypes

func (w *Wallet) ListTokenTypes(ctx context.Context, accountNumber uint64, kind Kind) ([]*TokenUnitType, error)

func (*Wallet) ListTokens

func (w *Wallet) ListTokens(ctx context.Context, kind Kind, accountNumber uint64) (map[uint64][]*TokenUnit, error)

ListTokens specify accountNumber=0 to list tokens from all accounts

func (*Wallet) LockToken

func (w *Wallet) LockToken(ctx context.Context, accountNumber uint64, tokenID []byte, ib []*PredicateInput) (*SubmissionResult, error)

func (*Wallet) NewFungibleToken

func (w *Wallet) NewFungibleToken(ctx context.Context, accNr uint64, typeId TokenTypeID, amount uint64, bearerPredicate wallet.Predicate, mintPredicateArgs []*PredicateInput) (*SubmissionResult, error)

func (*Wallet) NewFungibleType

func (w *Wallet) NewFungibleType(ctx context.Context, accNr uint64, attrs CreateFungibleTokenTypeAttributes, typeId TokenTypeID, subtypePredicateArgs []*PredicateInput) (*SubmissionResult, error)

func (*Wallet) NewNFT

func (w *Wallet) NewNFT(ctx context.Context, accNr uint64, attrs MintNonFungibleTokenAttributes, tokenID TokenID, mintPredicateArgs []*PredicateInput) (*SubmissionResult, error)

func (*Wallet) NewNonFungibleType

func (w *Wallet) NewNonFungibleType(ctx context.Context, accNr uint64, attrs CreateNonFungibleTokenTypeAttributes, typeId TokenTypeID, subtypePredicateArgs []*PredicateInput) (*SubmissionResult, error)

func (*Wallet) ReclaimFeeCredit

func (w *Wallet) ReclaimFeeCredit(ctx context.Context, cmd fees.ReclaimFeeCmd) (*fees.ReclaimFeeCmdResponse, error)

func (*Wallet) SendFungible

func (w *Wallet) SendFungible(ctx context.Context, accountNumber uint64, typeId TokenTypeID, targetAmount uint64, receiverPubKey []byte, invariantPredicateArgs []*PredicateInput) (*SubmissionResult, error)

func (*Wallet) Shutdown

func (w *Wallet) Shutdown()

func (*Wallet) TransferNFT

func (w *Wallet) TransferNFT(ctx context.Context, accountNumber uint64, tokenID TokenID, receiverPubKey wallet.PubKey, invariantPredicateArgs []*PredicateInput) (*SubmissionResult, error)

func (*Wallet) UnlockToken

func (w *Wallet) UnlockToken(ctx context.Context, accountNumber uint64, tokenID []byte, ib []*PredicateInput) (*SubmissionResult, error)

func (*Wallet) UpdateNFTData

func (w *Wallet) UpdateNFTData(ctx context.Context, accountNumber uint64, tokenID []byte, data []byte, updatePredicateArgs []*PredicateInput) (*SubmissionResult, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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