stellar

package
v0.0.0-...-a8b6a46 Latest Latest
Warning

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

Go to latest
Published: Jun 7, 2020 License: BSD-3-Clause, BSD-3-Clause Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const AccountNameMaxRunes = 24
View Source
const DefaultCurrencySetting = "USD"

Variables

This section is empty.

Functions

func AccountExchangeRate

func AccountExchangeRate(mctx libkb.MetaContext, remoter remote.Remoter, accountID stellar1.AccountID) (stellar1.OutsideExchangeRate, error)

AccountExchangeRate returns the exchange rate for an account for the logged in user. Note that it is possible that multiple users can own the same account and have different display currency preferences.

func ChangeAccountName

func ChangeAccountName(m libkb.MetaContext, accountID stellar1.AccountID, newName string) (err error)

ChangeAccountName changes the name of an account. Make sure to keep this in sync with ValidateAccountNameLocal. An empty name is not allowed. Renaming an account to an already used name is blocked. Maximum length of AccountNameMaxRunes runes.

func ChatSendPaymentMessage

func ChatSendPaymentMessage(m libkb.MetaContext, recipient stellarcommon.Recipient, txID stellar1.TransactionID) error

func Claim

func Claim(ctx context.Context, g *libkb.GlobalContext, remoter remote.Remoter,
	txID string, into stellar1.AccountID, dir *stellar1.RelayDirection,
	autoClaimToken *string) (res stellar1.RelayClaimResult, err error)

Claim claims a waiting relay. If `dir` is nil the direction is inferred.

func CreateNewAccount

func CreateNewAccount(m libkb.MetaContext, accountName string) (ret stellar1.AccountID, err error)

func CreateWallet

func CreateWallet(ctx context.Context, g *libkb.GlobalContext) (created bool, err error)

CreateWallet creates and posts an initial stellar bundle for a user. Only succeeds if they do not already have one. Safe (but wasteful) to call even if the user has a bundle already.

func CreateWalletGated

func CreateWalletGated(ctx context.Context, g *libkb.GlobalContext) (justCreated, hasWallet bool, err error)

CreateWalletGated may create a wallet for the user. Taking into account settings from the server and env. It should be speedy to call repeatedly _if_ the user gets a wallet. `hasWallet` returns whether the user has by the time this call returns.

func CreateWalletSoft

func CreateWalletSoft(ctx context.Context, g *libkb.GlobalContext)

CreateWalletSoft creates a user's initial wallet if they don't already have one. Does not get in the way of intentional user actions.

func DeleteAccount

func DeleteAccount(m libkb.MetaContext, accountID stellar1.AccountID) error

func ExportSecretKey

func ExportSecretKey(ctx context.Context, g *libkb.GlobalContext, accountID stellar1.AccountID) (res stellar1.SecretKey, err error)

func FormatAmount

func FormatAmount(amount string, precisionTwo bool) (string, error)

func FormatAmountWithSuffix

func FormatAmountWithSuffix(amount string, precisionTwo bool, simplify bool, suffix string) (string, error)

func FormatAmountXLM

func FormatAmountXLM(amount string) (string, error)

Example: "157.5000000 XLM"

func FormatCurrency

func FormatCurrency(ctx context.Context, g *libkb.GlobalContext, amount string, code stellar1.OutsideCurrencyCode) (string, error)

func FormatPaymentAmountXLM

func FormatPaymentAmountXLM(amount string, delta stellar1.BalanceDelta) (string, error)

func GetAccountDisplayCurrency

func GetAccountDisplayCurrency(mctx libkb.MetaContext, accountID stellar1.AccountID) (res string, err error)

GetAccountDisplayCurrency gets currency setting from the server, and it returned currency is empty (NULL in database), then default "USD" is used. When creating a wallet, client always sets default currency setting. Also when a new account in existing wallet is created, it will inherit currency setting from primary account (this happens serverside). Empty currency settings should only happen in very old accounts or when wallet generation was interrupted in precise moment.

func GetCurrencySetting

func GetCurrencySetting(mctx libkb.MetaContext, remoter remote.Remoter, accountID stellar1.AccountID) (res stellar1.CurrencyLocal, err error)

func GetOwnPrimaryAccountID

func GetOwnPrimaryAccountID(ctx context.Context, g *libkb.GlobalContext) (res stellar1.AccountID, err error)

func ImportSecretKey

func ImportSecretKey(ctx context.Context, g *libkb.GlobalContext, secretKey stellar1.SecretKey, makePrimary bool, accountName string) (err error)

func LookupRecipient

func LookupRecipient(m libkb.MetaContext, to stellarcommon.RecipientInput, isCLI bool) (res stellarcommon.Recipient, err error)

func LookupSender

func LookupSender(ctx context.Context, g *libkb.GlobalContext, accountID stellar1.AccountID) (stellar1.BundleEntry, error)

func LookupUserByAccountID

func LookupUserByAccountID(m libkb.MetaContext, accountID stellar1.AccountID) (uv keybase1.UserVersion, un libkb.NormalizedUsername, err error)

Lookup a user who has the stellar account ID. Verifies the result against the user's sigchain. If there are no users, or multiple users, returns NotFoundError.

func MakeRequestCLI

func MakeRequestCLI(m libkb.MetaContext, remoter remote.Remoter, arg MakeRequestArg) (ret stellar1.KeybaseRequestID, err error)

func MakeRequestGUI

func MakeRequestGUI(m libkb.MetaContext, remoter remote.Remoter, arg MakeRequestArg) (ret stellar1.KeybaseRequestID, err error)

func NoteDecryptB64

func NoteDecryptB64(ctx context.Context, g *libkb.GlobalContext, noteB64 string) (res stellar1.NoteContents, err error)

func NoteEncryptB64

func NoteEncryptB64(ctx context.Context, g *libkb.GlobalContext, note stellar1.NoteContents, other *keybase1.UserVersion) (noteB64 string, err error)

func OwnAccount

func OwnAccount(ctx context.Context, g *libkb.GlobalContext, accountID stellar1.AccountID) (bool, error)

func PaymentDetailCLILocal

func PaymentDetailCLILocal(ctx context.Context, g *libkb.GlobalContext, remoter remote.Remoter, txID string) (res stellar1.PaymentCLILocal, err error)

func RecentPaymentsCLILocal

func RecentPaymentsCLILocal(ctx context.Context, g *libkb.GlobalContext, remoter remote.Remoter, accountID stellar1.AccountID) (res []stellar1.PaymentOrErrorCLILocal, err error)

func ServiceInit

func ServiceInit(g *libkb.GlobalContext, remoter remote.Remoter)

func SetAccountAsPrimary

func SetAccountAsPrimary(m libkb.MetaContext, accountID stellar1.AccountID) (err error)

func TransformPaymentSummaryAccount

func TransformPaymentSummaryAccount(mctx libkb.MetaContext, p stellar1.PaymentSummary, oc OwnAccountLookupCache, accountID stellar1.AccountID, exchRate *stellar1.OutsideExchangeRate) (*stellar1.PaymentLocal, error)

TransformPaymentSummaryAccount converts a stellar1.PaymentSummary (p) into a stellar1.PaymentLocal, from the perspective of an owner of accountID.

exchRate is the current exchange rate from XLM to the "outside" currency that is the preference for accountID.

func TransformPaymentSummaryGeneric

func TransformPaymentSummaryGeneric(mctx libkb.MetaContext, p stellar1.PaymentSummary, oc OwnAccountLookupCache) (*stellar1.PaymentLocal, error)

TransformPaymentSummaryGeneric converts a stellar1.PaymentSummary (p) into a stellar1.PaymentLocal, without any modifications based on who is viewing the transaction.

func Upkeep

func Upkeep(ctx context.Context, g *libkb.GlobalContext) (err error)

Upkeep makes sure the bundle is encrypted for the user's latest PUK.

Types

type AutoClaimRunner

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

Claims relay payments in the background. Threadsafe.

func NewAutoClaimRunner

func NewAutoClaimRunner(remoter remote.Remoter) *AutoClaimRunner

func (*AutoClaimRunner) Kick

func (r *AutoClaimRunner) Kick(mctx libkb.MetaContext, trigger gregor.MsgID)

Kick the processor into gear. It will run until all relays in the queue are claimed. And then dismiss the gregor message. `trigger` is of the gregor message that caused the kick.

func (*AutoClaimRunner) Shutdown

func (r *AutoClaimRunner) Shutdown(mctx libkb.MetaContext)

type BuildPaymentCache

type BuildPaymentCache interface {
	OwnsAccount(libkb.MetaContext, stellar1.AccountID) (bool, error)
	PrimaryAccount(libkb.MetaContext) (stellar1.AccountID, error)
	// AccountSeqno should be cached _but_ it should also be busted asap.
	// Because it is used to prevent users from sending payments twice in a row.
	AccountSeqno(libkb.MetaContext, stellar1.AccountID) (string, error)
	IsAccountFunded(libkb.MetaContext, stellar1.AccountID) (bool, error)
	LookupRecipient(libkb.MetaContext, stellarcommon.RecipientInput) (stellarcommon.Recipient, error)
	GetOutsideExchangeRate(libkb.MetaContext, stellar1.OutsideCurrencyCode) (stellar1.OutsideExchangeRate, error)
	AvailableXLMToSend(libkb.MetaContext, stellar1.AccountID) (string, error)
	GetOutsideCurrencyPreference(libkb.MetaContext, stellar1.AccountID) (stellar1.OutsideCurrencyCode, error)
}

BuildPaymentCache has helpers for getting information quickly when building a payment. Methods should err on the side of performance rather at the cost of serialization. CORE-8119: But they don't yet.

func GetBuildPaymentCache

func GetBuildPaymentCache(mctx libkb.MetaContext, remoter remote.Remoter) BuildPaymentCache

type DisplayBalance

type DisplayBalance struct {
	Amount   string
	Currency string
}

type Loader

type Loader struct {
	libkb.Contextified

	sync.Mutex
	// contains filtered or unexported fields
}

func DefaultLoader

func DefaultLoader(g *libkb.GlobalContext) *Loader

func NewLoader

func NewLoader(g *libkb.GlobalContext) *Loader

func (*Loader) LoadPayment

func (p *Loader) LoadPayment(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID, senderUsername string, paymentID stellar1.PaymentID) *chat1.UIPaymentInfo

func (*Loader) LoadRequest

func (p *Loader) LoadRequest(ctx context.Context, convID chat1.ConversationID, msgID chat1.MessageID, senderUsername string, requestID stellar1.KeybaseRequestID) *chat1.UIRequestInfo

func (*Loader) Shutdown

func (p *Loader) Shutdown() error

func (*Loader) UpdatePayment

func (p *Loader) UpdatePayment(ctx context.Context, paymentID stellar1.PaymentID)

UpdatePayment schedules a load of paymentID. Gregor status notification handlers should call this to update the payment data.

func (*Loader) UpdateRequest

func (p *Loader) UpdateRequest(ctx context.Context, requestID stellar1.KeybaseRequestID)

UpdateRequest schedules a load for requestID. Gregor status notification handlers should call this to update the request data.

type MakeRequestArg

type MakeRequestArg struct {
	To       stellarcommon.RecipientInput
	Amount   string
	Asset    *stellar1.Asset
	Currency *stellar1.OutsideCurrencyCode
	Note     string
}

type OwnAccountLookupCache

type OwnAccountLookupCache interface {
	OwnAccount(ctx context.Context, accountID stellar1.AccountID) (own bool, accountName string, err error)
}

Short-lived cache for looking up whether the logged-in user owns accounts.

func NewOwnAccountLookupCache

func NewOwnAccountLookupCache(ctx context.Context, g *libkb.GlobalContext) OwnAccountLookupCache

NewOwnAccountLookupCache fetches the list of accounts in the background and stores them.

type SendPaymentArg

type SendPaymentArg struct {
	From           stellar1.AccountID // Optional. Defaults to primary account.
	FromSeqno      *uint64            // Optional. Use this value for the from stellar sequence number.
	To             stellarcommon.RecipientInput
	Amount         string // Amount of XLM to send.
	DisplayBalance DisplayBalance
	SecretNote     string // Optional.
	PublicMemo     string // Optional.
	ForceRelay     bool
	QuickReturn    bool
}

type SendPaymentResult

type SendPaymentResult struct {
	KbTxID stellar1.KeybaseTransactionID
	// Direct: tx ID of the payment tx
	// Relay : tx ID of the funding payment tx
	TxID    stellar1.TransactionID
	Pending bool
	// Implicit team that the relay secret is encrypted for.
	// Present if this was a relay transfer.
	RelayTeamID *keybase1.TeamID
}

func SendPaymentCLI

func SendPaymentCLI(m libkb.MetaContext, remoter remote.Remoter, sendArg SendPaymentArg) (res SendPaymentResult, err error)

SendPaymentCLI sends XLM from CLI.

func SendPaymentGUI

func SendPaymentGUI(m libkb.MetaContext, remoter remote.Remoter, sendArg SendPaymentArg) (res SendPaymentResult, err error)

SendPaymentGUI sends XLM from GUI.

type SeqnoProvider

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

SeqnoProvider implements build.SequenceProvider. It is intended as a one-shot wrapper and shouldn't be reused after the transaction is built.

func NewSeqnoProvider

func NewSeqnoProvider(ctx context.Context, remoter remote.Remoter) *SeqnoProvider

NewSeqnoProvider creates a SeqnoProvider.

func (*SeqnoProvider) Override

func (s *SeqnoProvider) Override(aid string, seqno xdr.SequenceNumber)

func (*SeqnoProvider) SequenceForAccount

func (s *SeqnoProvider) SequenceForAccount(aid string) (xdr.SequenceNumber, error)

SequenceForAccount implements build.SequenceProvider.

type Stellar

type Stellar struct {
	libkb.Contextified
	// contains filtered or unexported fields
}

func NewStellar

func NewStellar(g *libkb.GlobalContext, remoter remote.Remoter) *Stellar

func (*Stellar) CachedHasWallet

func (s *Stellar) CachedHasWallet(ctx context.Context, uv keybase1.UserVersion) bool

func (*Stellar) CreateWalletGated

func (s *Stellar) CreateWalletGated(ctx context.Context) (err error)

func (*Stellar) CreateWalletSoft

func (s *Stellar) CreateWalletSoft(ctx context.Context)

func (*Stellar) GetServerDefinitions

func (s *Stellar) GetServerDefinitions(ctx context.Context) (ret stellar1.StellarServerDefinitions, err error)

func (*Stellar) InformHasWallet

func (s *Stellar) InformHasWallet(ctx context.Context, uv keybase1.UserVersion)

func (*Stellar) KickAutoClaimRunner

func (s *Stellar) KickAutoClaimRunner(mctx libkb.MetaContext, trigger gregor.MsgID)

func (*Stellar) OnLogout

func (s *Stellar) OnLogout()

func (*Stellar) SetFederationClientForTest

func (s *Stellar) SetFederationClientForTest(cli federation.ClientInterface)

func (*Stellar) Upkeep

func (s *Stellar) Upkeep(ctx context.Context) error

Directories

Path Synopsis
this file is for the implementation of all the frontend-requested service endpoints for wallets.
this file is for the implementation of all the frontend-requested service endpoints for wallets.

Jump to

Keyboard shortcuts

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