Documentation
¶
Index ¶
- Constants
- Variables
- type AccountInfo
- type AddressAndBlindingKey
- type Balance
- type BalanceInfo
- type BalanceWithFee
- type Blinder
- type BlindingData
- type BlockchainListener
- type Deposits
- type Fee
- type FeeInfo
- type FillProposalOpts
- type FillProposalResult
- type FragmentDepositsReply
- type FragmentDepositsReq
- type HDWalletInfo
- type HDWalletStatus
- type InitWalletReply
- type Market
- type MarketInfo
- type MarketStrategy
- type MarketWithFee
- type MarketWithPrice
- type OperatorService
- type Page
- type PassphraseMsg
- type Price
- type PriceWithFee
- type ReportMarketFee
- type SendToManyRequest
- type SwapFailInfo
- type SwapInfo
- type TradeHandler
- type TradeInfo
- type TradeService
- type TransactionHandler
- type TxOut
- type TxOutpoint
- type UnblindedResult
- type Unspents
- type UtxoInfo
- type UtxoInfoList
- type WalletService
- type WalletUnlockerService
- type Webhook
- type WebhookInfo
- type WithdrawFeeReq
- type WithdrawMarketReq
- type Withdrawals
Constants ¶
View Source
const ( InitWallet = iota UnlockWallet ChangePassphrase )
Passphrase msg type
View Source
const ( TradeBuy = iota TradeSell )
trade type
View Source
const ( Processing = iota Done )
restore status
View Source
const ( TradeSettled = iota AccountLowBalance AccountWithdraw )
Topics to be published
Variables ¶
View Source
var ( ErrMarketInvalidBaseAsset = domain.ErrMarketInvalidBaseAsset ErrMarketInvalidQuoteAsset = domain.ErrMarketInvalidQuoteAsset // ErrFeeAccountNotFunded ... ErrFeeAccountNotFunded = errors.New("fee account not funded") // ErrUnknownStrategy ... ErrUnknownStrategy = errors.New("strategy not supported") // ErrMarketAlreadyExist ... ErrMarketAlreadyExist = errors.New("market already exists") // ErrMarketNotExist ... ErrMarketNotExist = errors.New("market does not exist") // ErrMarketNotFunded ... ErrMarketNotFunded = errors.New("market account not funded") // ErrMissingNonFundedMarkets ... ErrMissingNonFundedMarkets = errors.New("no non-funded markets found") // ErrInvalidOutpoint ... ErrInvalidOutpoint = errors.New("outpoint refers to inexistent tx output") // ErrInvalidOutpoints ... ErrInvalidOutpoints = errors.New("all outpoints must be funded for the same account") // internal errors ErrServiceUnavailable = errors.New("service is unavailable, try again later") // ErrPubSubServiceNotInitialized is returned when attempting to use // AddWebhook or RemoveWebhook RPCs without having initialized the pubsub // service at the start up. ErrPubSubServiceNotInitialized = errors.New("pubsub service is not initialized") // ErrInvalidActionType is returned if the attempting to register a webhook // for an invalid action type. ErrInvalidActionType = errors.New("action type is unknown") // ErrMarketBalanceTooLow is returned when the balance of the base or quote // asset of a market is below its fixed fee. ErrMarketBalanceTooLow = errors.New("market base or quote balance too low") // ErrWithdrawBaseAmountTooBig is returned when attempting to withdraw more // than the total amount of base asset of a market. ErrWithdrawBaseAmountTooBig = errors.New( "base amount to withdraw exceeds the market base balance", ) // ErrWithdrawQuoteAmountTooBig is returned when attempting to withdraw more // than the total amount of quote asset of a market. ErrWithdrawQuoteAmountTooBig = errors.New( "quote amount to withdraw is too big", ) // ErrWithdrawAmountTooBig is returned when attempting to withdraw more // than the total amount of LBTC asset of the fee account. ErrWithdrawAmountTooBig = errors.New( "amount to withdraw os too big", ) // ErrInvalidAccountIndex returned if provided account index is invalid ErrInvalidAccountIndex = errors.New("invalid account index") // ErrMissingMarketBalanceToWithdraw is returned in case none of the base or // quote amounts to withdraw for a market are defined. ErrMissingMarketBalanceToWithdraw = errors.New( "either base or quote amount to withdraw must be specified", ) // ErrMissingWithdrawAddress is returned if the receiving address to is not // set for a withdrawal. ErrMissingWithdrawAddress = errors.New("address must not be null") )
View Source
var ( DefaultFeeFragmenterFragments = uint32(50) DefaultFeeFragmenterAmount = uint64(5000) FragmentationMap = map[int]int{ 1: 30, 2: 15, 3: 10, 5: 2, } )
View Source
var ( BlinderManager Blinder TradeManager TradeHandler TransactionManager TransactionHandler )
View Source
var ( // ErrWalletNotFunded ... ErrWalletNotFunded = fmt.Errorf("wallet not funded") )
View Source
var ( // ErrWalletNotInitialized is returned when attempting to unlock or change // the password of a not initialized wallet. ErrWalletNotInitialized = fmt.Errorf("wallet not initialized") )
Functions ¶
This section is empty.
Types ¶
type AccountInfo ¶ added in v0.6.0
type AccountInfo struct {
Index uint32
DerivationPath string
Xpub string
LastExternalDerived uint32
LastInternalDerived uint32
}
AccountInfo contains info about a wallet account.
type AddressAndBlindingKey ¶ added in v0.1.2
type BalanceInfo ¶ added in v0.3.0
type BalanceWithFee ¶
type Blinder ¶ added in v0.3.1
type Blinder interface {
UnblindOutput(txout *transaction.TxOutput, key []byte) (UnblindedResult, bool)
}
type BlindingData ¶ added in v0.3.2
type BlindingData wallet.BlindingData
type BlockchainListener ¶
type BlockchainListener interface {
StartObservation()
StopObservation()
StartObserveAddress(accountIndex int, addr string, blindKey []byte)
StopObserveAddress(addr string)
StartObserveTx(txid, marketQuoteAsset string)
StopObserveTx(txid string)
StartObserveOutpoints(outpoints []explorer.Utxo, tradeID string)
StopObserveOutpoints(outpoints interface{})
PubSubService() ports.SecurePubSub
}
BlockchainListener defines the needed method sto start and stop a blockchain listener
func NewBlockchainListener ¶
func NewBlockchainListener( crawlerSvc crawler.Service, repoManager ports.RepoManager, pubsubSvc ports.SecurePubSub, net *network.Network, ) BlockchainListener
NewBlockchainListener returns a BlockchainListener with all the needed services
type FillProposalOpts ¶ added in v0.3.2
type FillProposalOpts struct {
Mnemonic []string
SwapRequest domain.SwapRequest
MarketUtxos []explorer.Utxo
FeeUtxos []explorer.Utxo
MarketInfo domain.AddressesInfo
FeeInfo domain.AddressesInfo
OutputInfo domain.AddressInfo
ChangeInfo domain.AddressInfo
FeeChangeInfo domain.AddressInfo
Network *network.Network
}
type FillProposalResult ¶ added in v0.3.2
type FragmentDepositsReply ¶ added in v0.7.0
type FragmentDepositsReq ¶ added in v0.7.0
type HDWalletInfo ¶ added in v0.6.0
type HDWalletInfo struct {
RootPath string
MasterBlindingKey string
Accounts []AccountInfo
}
HDWalletInfo contains info about the internal wallet of the daemon and its sub-accounts.
type HDWalletStatus ¶ added in v0.6.0
type InitWalletReply ¶ added in v0.3.0
type MarketInfo ¶
type MarketInfo struct {
AccountIndex uint64
Market Market
Fee Fee
Tradable bool
StrategyType int
Price domain.Prices
Balance Balance
}
MarketInfo is the data struct returned by ListMarket RPC.
type MarketStrategy ¶
type MarketStrategy struct {
Market
Strategy domain.StrategyType
}
type MarketWithFee ¶
type MarketWithPrice ¶
type OperatorService ¶
type OperatorService interface {
GetInfo(ctx context.Context) (*HDWalletInfo, error)
GetFeeAddress(
ctx context.Context, numOfAddresses int,
) ([]AddressAndBlindingKey, error)
ListFeeExternalAddresses(
ctx context.Context,
) ([]AddressAndBlindingKey, error)
GetFeeBalance(ctx context.Context) (int64, int64, error)
ClaimFeeDeposits(ctx context.Context, outpoints []TxOutpoint) error
GetFeeFragmenterAddress(ctx context.Context) (string, error)
FragmentFeeDeposits(
ctx context.Context,
req FragmentDepositsReq, chRes chan FragmentDepositsReply,
)
WithdrawFeeFunds(
ctx context.Context, req WithdrawFeeReq,
) ([]byte, []byte, error)
NewMarket(ctx context.Context, market Market) error
GetMarketAddress(
ctx context.Context, market Market, numOfAddresses int,
) ([]AddressAndBlindingKey, error)
ListMarketExternalAddresses(
ctx context.Context, req Market,
) ([]AddressAndBlindingKey, error)
GetMarketBalance(ctx context.Context, market Market) (*Balance, *Balance, error)
ClaimMarketDeposits(
ctx context.Context, market Market, outpoints []TxOutpoint,
) error
OpenMarket(ctx context.Context, market Market) error
CloseMarket(ctx context.Context, market Market) error
DropMarket(ctx context.Context, market Market) error
GetMarketCollectedFee(
ctx context.Context, market Market, page *Page,
) (*ReportMarketFee, error)
GetMarketFragmenterAddress(ctx context.Context, market Market) (string, error)
FragmentMarketDeposits(
ctx context.Context, market Market, req FragmentDepositsReq,
chRes chan FragmentDepositsReply,
)
WithdrawMarketFunds(
ctx context.Context, req WithdrawMarketReq,
) ([]byte, []byte, error)
UpdateMarketPercentageFee(
ctx context.Context, req MarketWithFee,
) (*MarketWithFee, error)
UpdateMarketFixedFee(
ctx context.Context, req MarketWithFee,
) (*MarketWithFee, error)
UpdateMarketPrice(ctx context.Context, req MarketWithPrice) error
UpdateMarketStrategy(ctx context.Context, req MarketStrategy) error
ListMarkets(ctx context.Context) ([]MarketInfo, error)
ListTrades(ctx context.Context, page *Page) ([]TradeInfo, error)
ListTradesForMarket(
ctx context.Context, market Market, page *Page,
) ([]TradeInfo, error)
ListUtxos(
ctx context.Context, accountIndex int, page *Page,
) (*UtxoInfoList, error)
ReloadUtxos(ctx context.Context) error
ListDeposits(
ctx context.Context, accountIndex int, page *Page,
) (Deposits, error)
ListWithdrawals(
ctx context.Context, accountIndex int, page *Page,
) (Withdrawals, error)
AddWebhook(ctx context.Context, hook Webhook) (string, error)
RemoveWebhook(ctx context.Context, id string) error
ListWebhooks(ctx context.Context, actionType int) ([]WebhookInfo, error)
}
OperatorService defines the methods of the application layer for the operator service.
func NewOperatorService ¶
func NewOperatorService( repoManager ports.RepoManager, explorerSvc explorer.Service, bcListener BlockchainListener, marketBaseAsset string, marketFee int64, net *network.Network, feeAccountBalanceThreshold uint64, ) OperatorService
NewOperatorService is a constructor function for OperatorService.
type PassphraseMsg ¶ added in v0.4.0
type PriceWithFee ¶
type ReportMarketFee ¶
type SendToManyRequest ¶
type SwapFailInfo ¶ added in v0.3.7
type TradeHandler ¶ added in v0.3.2
type TradeHandler interface {
FillProposal(FillProposalOpts) (*FillProposalResult, error)
}
type TradeInfo ¶ added in v0.3.7
type TradeInfo struct {
ID string
Status domain.Status
SwapInfo SwapInfo
SwapFailInfo SwapFailInfo
MarketWithFee MarketWithFee
Price Price
TxURL string
RequestTimeUnix uint64
AcceptTimeUnix uint64
CompleteTimeUnix uint64
SettleTimeUnix uint64
ExpiryTimeUnix uint64
}
TradeInfo contains info about a trade.
type TradeService ¶
type TradeService interface {
GetTradableMarkets(ctx context.Context) ([]MarketWithFee, error)
GetMarketPrice(
ctx context.Context,
market Market,
tradeType int,
amount uint64,
asset string,
) (*PriceWithFee, error)
TradePropose(
ctx context.Context,
market Market,
tradeType int,
swapRequest domain.SwapRequest,
) (domain.SwapAccept, domain.SwapFail, uint64, error)
TradeComplete(
ctx context.Context,
swapComplete domain.SwapComplete,
swapFail domain.SwapFail,
) (string, domain.SwapFail, error)
GetMarketBalance(
ctx context.Context,
market Market,
) (*BalanceWithFee, error)
}
func NewTradeService ¶
func NewTradeService( repoManager ports.RepoManager, explorerSvc explorer.Service, bcListener BlockchainListener, marketBaseAsset string, expiryDuration time.Duration, priceSlippage decimal.Decimal, net *network.Network, feeAccountBalanceThreshold uint64, ) TradeService
type TransactionHandler ¶ added in v0.3.4
type TransactionHandler interface {
ExtractUnspents(
txhex string,
infoByScript map[string]domain.AddressInfo,
network *network.Network,
) ([]domain.Unspent, []domain.UnspentKey, error)
ExtractBlindingData(
psetBase64 string,
inBlindingKeys, outBlidningKeys map[string][]byte,
) (map[int]BlindingData, map[int]BlindingData, error)
}
type TxOutpoint ¶ added in v0.3.0
type UnblindedResult ¶ added in v0.3.1
type UnblindedResult *transactionutil.UnblindedResult
type UtxoInfo ¶ added in v0.3.0
type UtxoInfo struct {
Outpoint *TxOutpoint
Value uint64
Asset string
}
type UtxoInfoList ¶ added in v0.3.0
type WalletService ¶
type WalletService interface {
GenerateAddressAndBlindingKey(
ctx context.Context,
) (address string, blindingKey string, err error)
GetWalletBalance(
ctx context.Context,
) (map[string]BalanceInfo, error)
SendToMany(
ctx context.Context,
req SendToManyRequest,
) ([]byte, []byte, error)
}
func NewWalletService ¶
func NewWalletService( repoManager ports.RepoManager, explorerService explorer.Service, blockchainListener BlockchainListener, net *network.Network, marketFee int64, ) WalletService
type WalletUnlockerService ¶ added in v0.5.0
type WalletUnlockerService interface {
GenSeed(ctx context.Context) ([]string, error)
InitWallet(
ctx context.Context,
mnemonic []string,
passphrase string,
restore bool,
chRes chan InitWalletReply,
)
UnlockWallet(
ctx context.Context,
passphrase string,
) error
ChangePassword(
ctx context.Context,
currentPassphrase string,
newPassphrase string,
) error
IsReady(ctx context.Context) HDWalletStatus
PassphraseChan() chan PassphraseMsg
ReadyChan() chan bool
}
func NewWalletUnlockerService ¶ added in v0.5.0
func NewWalletUnlockerService( repoManager ports.RepoManager, explorerService explorer.Service, blockchainListener BlockchainListener, net *network.Network, marketFee int64, marketBaseAsset string, rescanRangeStart, rescanRangeEnd int, ) WalletUnlockerService
type WebhookInfo ¶ added in v0.3.11
type WithdrawFeeReq ¶ added in v0.6.0
type WithdrawFeeReq struct {
Amount uint64
MillisatPerByte uint64
Address string
Asset string
Push bool
}
func (WithdrawFeeReq) Validate ¶ added in v0.6.0
func (r WithdrawFeeReq) Validate() error
type WithdrawMarketReq ¶
type WithdrawMarketReq struct {
Market
BalanceToWithdraw Balance
MillisatPerByte int64
Address string
Push bool
}
func (WithdrawMarketReq) Validate ¶ added in v0.6.0
func (r WithdrawMarketReq) Validate() error
type Withdrawals ¶ added in v0.6.0
type Withdrawals []domain.Withdrawal
Click to show internal directories.
Click to hide internal directories.