Get desktop application:
View/edit binary Protocol Buffers messages
The desired value of the account in satoshis.
The block height at which the account should expire.
The trader's account key.
The account version. Must be set to 0 for legacy (non-taproot) accounts.
The base key of the auctioneer. This key should be tweaked with the trader's per-batch tweaked key to obtain the corresponding per-batch tweaked auctioneer key. Or, in case of the version 1, Taproot enabled account, the trader and auctioneer key will be combined into a MuSig2 combined key that is static throughout the lifetime of the account. The on-chain uniqueness of the generated output will be ensured by the merkle root hash that is applied as a tweak to the MuSig2 combined internal key. The merkle root hash is either the hash of the timeout script path (which uses the trader key tweaked with the per-batch key) directly or the root of a tree with one leaf that is the timeout script path and a leaf that is a Taro commitment (which is a root hash by itself).
The initial per-batch key to be used for the account. For every cleared batch that the account participates in, this key will be incremented by the base point of its curve, resulting in a new key for both the trader and auctioneer in every batch.
Transaction output of the account. Has to be unspent and be a P2WSH of the account script below. The amount must also exactly correspond to the account value below.
The script used to create the account point. For version 1 (Taproot enabled) accounts this represents the 32-byte (x-only) Taproot public key with the combined MuSig2 key of the auctioneer's key and the trader's key with the expiry script path applied as a single tapscript leaf.
The value of the account in satoshis. Must match the amount of the account_point output.
The block height at which the account should expire.
The trader's account key.
The user agent string that identifies the software running on the user's side. This can be changed in the user's client software but it _SHOULD_ conform to the following pattern and use less than 256 characters: Agent-Name/semver-version(/additional-info) Examples: poold/v0.4.2-beta/commit=3b635821,initiator=pool-cli litd/v0.4.0-alpha/commit=326d754,initiator=lit-ui
The account version. Must be set to 0 for legacy (non-taproot) accounts.
(message has no fields)
The trader's account key of the account to be modified.
An additional set of inputs that can be included in the spending transaction of an account. These can be used to deposit more funds into an account. These must be under control of the backing lnd node's wallet.
An additional set of outputs that can be included in the spending transaction of an account. These can be used to withdraw funds from an account.
The new parameters to apply for the account.
A set of 66-byte nonces for each version 1 (Taproot enabled) account. The nonces can be used to produce a MuSig2 partial signature to spend the account using the key spend path, which is a MuSig2 combined key of the auctioneer key and the trader key.
The full list of UTXO information for each of the inputs being spent. This is required when spending a Taproot enabled (account version 1) output or when adding additional Taproot inputs.
The auctioneer's signature that allows a trader to broadcast a transaction spending from an account output. For version 1 (Taproot enabled) accounts, this merely represents a partial MuSig2 signature that can be combined into a full signature by the trader daemon by adding its own partial signature. A set of nonces will be provided by the server (in case this is a v1 account) to allow finalizing the MuSig2 signing session.
An optional set of 66-byte nonces for a version 1 (Taproot enabled) account spend. The nonces can be used to produce a MuSig2 partial signature to spend the account using the key spend path, which is a MuSig2 combined key of the auctioneer key and the trader key.
Submit an ask order.
Submit a bid order.
The user agent string that identifies the software running on the user's side. This can be changed in the user's client software but it _SHOULD_ conform to the following pattern and use less than 256 characters: Agent-Name/semver-version(/additional-info) Examples: poold/v0.4.2-beta/commit=3b635821,initiator=pool-cli litd/v0.4.0-alpha/commit=326d754,initiator=lit-ui
Order failed with the given reason.
Order was accepted.
The preimage to the order's unique nonce.
(message has no fields)
The state the order currently is in.
The number of currently unfilled units of this order. This will be equal to the total amount of units until the order has reached the state PARTIAL_FILL or EXECUTED.
(message has no fields)
The maximum account size in satoshis currently allowed by the auctioneer.
Deprecated, use explicit order duration from lease_duration_buckets.
The execution fee charged per matched order.
Deprecated, use lease_duration_buckets.
The confirmation target to use for fee estimation of the next batch.
The fee rate, in satoshis per kiloweight, estimated to use for the next batch.
The absolute unix timestamp at which the auctioneer will attempt to clear the next batch.
The set of lease durations the market is currently accepting and the state the duration buckets currently are in.
The value used by the auctioneer to determine if an account expiry height needs to be extended after participating in a batch and for how long.
The unique identifier of the batch.
The set of accounts the trader is interested in retrieving information for within the batch. Each account is identified by its trader key.
The version of the batch.
The unique identifier of the batch.
The set of modifications that should be applied to the requested accounts as a result of this batch.
Deprecated, use matched_markets.
Deprecated, use matched_markets.
The fee parameters used to calculate the execution fees.
The batch transaction including all witness data.
Fee rate of the batch transaction, expressed in satoshis per 1000 weight units (sat/kW).
The unix timestamp in nanoseconds the batch was made.
Maps the distinct lease duration markets to the orders that were matched within and the discovered market clearing price.
The target node to obtain ratings information for.
A series of node ratings for each of the queried nodes.
(message has no fields)
A map of all markets identified by their lease duration and the current set of statistics.
HashMail exposes a simple synchronous network stream that can be used for various types of synchronization and coordination. The service allows authenticated users to create a simplex stream call a cipher box. Once the stream is created, any user that knows of the stream ID can read/write from the stream, but only a single user can be on either side at a time.
NewCipherBox creates a new cipher box pipe/stream given a valid authentication mechanism. If the authentication mechanism has been revoked, or needs to be changed, then a CipherChallenge message is returned. Otherwise the method will either be accepted or rejected.
CipherSuccess is returned if the initialization of the cipher box was successful.
CipherChallenge is returned if the authentication mechanism was revoked or needs to be refreshed.
CipherError is returned if the authentication mechanism failed to validate.
DelCipherBox attempts to tear down an existing cipher box pipe. The same authentication mechanism used to initially create the stream MUST be specified.
(message has no fields)
SendStream opens up the write side of the passed CipherBox pipe. Writes will be non-blocking up to the buffer size of the pipe. Beyond that writes will block until completed.
RecvStream opens up the read side of the passed CipherBox pipe. This method will block until a full message has been read as this is a message based pipe/stream abstraction.
pool: `getinfo` GetInfo returns general information about the state of the Pool trader daemon.
(message has no fields)
The version of the Pool daemon that is running.
The total number of accounts in the local database.
The total number of accounts that are in an active, non-archived state, including expired accounts.
The total number of accounts that are active but have expired.
The total number of accounts that are in an archived/closed state.
The total number of orders in the local database.
The total number of active/pending orders that are still waiting for execution.
The total number of orders that have been archived.
The current block height as seen by the connected lnd node.
The number of batches an account of this node was ever involved in.
Our lnd node's rating as judged by the auctioneer server.
The number of available LSAT tokens.
Indicates whether there is an active subscription connection to the auctioneer. This will never be true if there is no active account. If there are active accounts, this value represents the network connection status to the auctioneer server.
Indicates whether the global `--newnodesonly` command line flag or `newnodesonly=true` configuration parameter was set on the Pool trader daemon.
A map of all markets identified by their lease duration and the current set of statistics such as number of open orders and total units of open interest.
pool: `stop` Stop gracefully shuts down the Pool trader daemon.
(message has no fields)
(message has no fields)
QuoteAccount gets a fee quote to fund an account of the given size with the given confirmation target. If the connected lnd wallet doesn't have enough balance to fund an account of the requested size, an error is returned.
The target number of blocks that the transaction should be confirmed in.
pool: `accounts new` InitAccount creates a new account with the requested size and expiration, funding it from the wallet of the connected lnd node.
The target number of blocks that the transaction should be confirmed in.
The fee rate, in satoshis per kw, to use for the initial funding transaction.
An optional identification string that will be appended to the user agent string sent to the server to give information about the usage of pool. This initiator part is meant for user interfaces to add their name to give the full picture of the binary used (poold, LiT) and the method used for opening the account (pool CLI, LiT UI, other 3rd party UI).
The version of account to create.
pool: `accounts list` ListAccounts returns a list of all accounts known to the trader daemon and their current state.
Only list accounts that are still active.
pool: `accounts close` CloseAccount closes an account and returns the funds locked in that account to the connected lnd node's wallet.
The trader key associated with the account that will be closed.
A single output/address to which the remaining funds of the account will be sent to at the specified fee. If an address is not specified, then the funds are sent to an address the backing lnd node controls.
The outputs to which the remaining funds of the account will be sent to. This should only be used when wanting to create two or more outputs, otherwise OutputWithFee should be used instead. The fee of the account's closing transaction is implicitly defined by the combined value of all outputs.
The hash of the closing transaction.
pool: `accounts withdraw` WithdrawAccount splits off parts of the account balance into the specified outputs while recreating the account with a reduced balance.
The trader key associated with the account that funds will be withdrawed from.
The outputs we'll withdraw funds from the account into.
The fee rate, in satoshis per kw, to use for the withdrawal transaction.
The new absolute expiration height of the account.
The new relative expiration height of the account.
The new version of the account. If this is set and is a valid version greater than the account's current version, then the account is upgraded to that version during the withdrawal.
The state of the account after processing the withdrawal.
The transaction used to withdraw funds from the account.
pool: `accounts deposit` DepositAccount adds more funds from the connected lnd node's wallet to an account.
The trader key associated with the account that funds will be deposited into.
The amount in satoshis to deposit into the account.
The fee rate, in satoshis per kw, to use for the deposit transaction.
The new absolute expiration height of the account.
The new relative expiration height of the account.
The new version of the account. If this is set and is a valid version greater than the account's current version, then the account is upgraded to that version during the deposit.
The state of the account after processing the deposit.
The transaction used to deposit funds into the account.
pool: `accounts renew` RenewAccount renews the expiration of an account.
The key associated with the account to renew.
The new absolute expiration height of the account.
The new relative expiration height of the account.
The fee rate, in satoshis per kw, to use for the renewal transaction.
The new version of the account. If this is set and is a valid version greater than the account's current version, then the account is upgraded to that version during the renewal.
The state of the account after processing the renewal.
The transaction used to renew the expiration of the account.
pool: `accounts bumpfee` BumpAccountFee attempts to bump the fee of an account's transaction through child-pays-for-parent (CPFP). Since the CPFP is performed through the backing lnd node, the account transaction must contain an output under its control for a successful bump. If a CPFP has already been performed for an account, and this RPC is invoked again, then a replacing transaction (RBF) of the child will be broadcast.
The trader key associated with the account that will have its fee bumped.
The new fee rate, in satoshis per kw, to use for the child of the account transaction.
(message has no fields)
pool: `accounts recover` RecoverAccounts queries the auction server for this trader daemon's accounts in case we lost our local account database.
Recover the latest account states without interacting with the Lightning Labs server.
Number of accounts that we are trying to recover. Used during the full_client recovery process.
Auctioneer's public key. Used during the full_client recovery process. This field should be left empty for testnet/mainnet, its value is already hardcoded in our codebase.
Initial block height. We won't try to look for any account with an expiry height smaller than this value. Used during the full_client recovery process.
bitcoind/btcd instance address. Used during the full_client recovery process.
bitcoind/btcd user name. Used during the full_client recovery process.
bitcoind/btcd password. Used during the full_client recovery process.
Use HTTP POST mode? bitcoind only supports this mode. Used during the full_client recovery process.
Use TLS to connect? bitcoind only supports non-TLS connections. Used during the full_client recovery process.
Path to btcd's TLS certificate, if TLS is enabled. Used during the full_client recovery process.
The number of accounts that were recovered.
pool: `accounts listfees` AccountModificationFees returns a map from account key to an ordered list of account action modification fees.
(message has no fields)
A map from account key to an ordered list of account modification fees.
pool: `orders submit` SubmitOrder creates a new ask or bid order and submits for the given account and submits it to the auction server for matching.
An optional identification string that will be appended to the user agent string sent to the server to give information about the usage of pool. This initiator part is meant for user interfaces to add their name to give the full picture of the binary used (poold, LiT) and the method used for submitting the order (pool CLI, LiT UI, other 3rd party UI).
Order failed with the given reason.
The order nonce of the accepted order.
In case a bid order was submitted for a sidecar ticket, that ticket is updated with the new state and bid order nonce.
pool: `orders list` ListOrders returns a list of all active and archived orders that are currently known to the trader daemon.
Can be set to true to list the orders including all events, which can be very verbose.
Only list orders that are still active.
pool: `orders cancel` CancelOrder cancels an active order with the auction server to remove it from future matching.
(message has no fields)
QuoteOrder calculates the premium, execution fees and max batch fee rate for an order based on the given order parameters.
Order amount in satoshis.
Fixed order rate in parts per billion.
Required number of blocks that a channel opened as a result of this bid should be kept open.
Maximum fee rate the trader is willing to pay for the batch transaction, expressed in satoshis per 1000 weight units (sat/KW).
The minimum number of order units that must be matched per order pair.
The total order premium in satoshis for filling the entire order. This represents the interest amount paid to the maker by the taker excluding any execution or chain fees.
The fixed order rate expressed as a fraction instead of parts per billion.
The fixed order rate expressed as a percentage instead of parts per billion.
The total execution fee in satoshis that needs to be paid to the auctioneer for executing the entire order.
The worst case chain fees that need to be paid if fee rates spike up to the max_batch_fee_rate_sat_per_kw value specified in the request. This value is highly dependent on the min_units_match parameter as well since the calculation assumes chain fees for the chain footprint of opening amt/min_units_match channels (hence worst case calculation).
pool: `auction fee` AuctionFee returns the current auction order execution fee specified by the auction server.
(message has no fields)
The execution fee charged per matched order.
pool: `auction leasedurations` LeaseDurations returns the current set of valid lease duration in the market as is, and also information w.r.t if the market is currently active.
(message has no fields)
Deprecated, use lease_duration_buckets.
The set of lease durations the market is currently accepting and the state the duration buckets currently are in.
pool: `auction nextbatchinfo` NextBatchInfo returns information about the next batch the auctioneer will perform.
(message has no fields)
The confirmation target the auctioneer will use for fee estimation of the next batch.
The fee rate, in satoshis per kiloweight, estimated by the auctioneer to use for the next batch.
The absolute unix timestamp in seconds at which the auctioneer will attempt to clear the next batch.
The value used by the auctioneer to determine if an account expiry height needs to be extended after participating in a batch and for how long.
pool: `auction snapshot` BatchSnapshot returns the snapshot of a past batch identified by its ID. If no ID is provided, the snapshot of the last finalized batch is returned. Deprecated, use BatchSnapshots instead.
pool: `listauth` GetLsatTokens returns all LSAT tokens the daemon ever paid for.
(message has no fields)
* List of all tokens the daemon knows of, including old/expired tokens.
pool: `auction leases` Leases returns the list of channels that were either purchased or sold by the trader within the auction.
An optional list of batches to retrieve the leases of. If empty, leases throughout all batches are returned.
An optional list of accounts to retrieve the leases of. If empty, leases for all accounts are returned.
The relevant list of leases purchased or sold within the auction.
The total amount of satoshis earned from the leases returned.
The total amount of satoshis paid for the leases returned.
pool: `auction ratings` Returns the Node Tier information for this target Lightning node, and other related ranking information.
The target node to obtain ratings information for.
A series of node ratings for each of the queried nodes.
pool: `auction snapshot` BatchSnapshots returns a list of batch snapshots starting at the start batch ID and going back through the history of batches, returning at most the number of specified batches. A maximum of 100 snapshots can be queried in one call. If no start batch ID is provided, the most recent finalized batch is used as the starting point to go back from.
pool: `sidecar offer` OfferSidecar is step 1/4 of the sidecar negotiation between the provider (the trader submitting the bid order) and the recipient (the trader receiving the sidecar channel). This step must be run by the provider. The result is a sidecar ticket with an offer to lease a sidecar channel for the recipient. The offer will be signed with the provider's lnd node public key. The ticket returned by this call will have the state "offered".
If false, then only the trader_key, unit, self_chan_balance, and lease_duration_blocks need to be set in the bid below. Otherwise, the fields as they're set when submitting a bid need to be filled in.
The bid template that will be used to populate the initial sidecar ticket as well as auto negotiate the remainig steps of the sidecar channel if needed.
pool: `sidecar register` RegisterSidecarRequest is step 2/4 of the sidecar negotiation between the provider (the trader submitting the bid order) and the recipient (the trader receiving the sidecar channel). This step must be run by the recipient. The result is a sidecar ticket with the recipient's node information and channel funding multisig pubkey filled in. The ticket returned by this call will have the state "registered".
The sidecar ticket to register and add the node and channel funding information to. The ticket must be in the state "offered".
If this value is True, then the daemon will attempt to finish negotiating the details of the sidecar channel automatically in the background. The progress of the ticket can be monitored using the SidecarState RPC. In addition, if this flag is set, then this method will _block_ until the sidecar negotiation either finishes or breaks down.
pool: `sidecar expectchannel` ExpectSidecarChannel is step 4/4 of the sidecar negotiation between the provider (the trader submitting the bid order) and the recipient (the trader receiving the sidecar channel). This step must be run by the recipient once the provider has submitted the bid order for the sidecar channel. From this point onwards the Pool trader daemon of both the provider as well as the recipient need to be online to receive and react to match making events from the server.
The sidecar ticket to expect an incoming channel for. The ticket must be in the state "ordered".
(message has no fields)
pool: `sidecar printticket` Decodes the base58 encoded sidecar ticket into its individual data fields for a more human-readable representation.
pool: `sidecar list` ListSidecars lists all sidecar tickets currently in the local database. This includes tickets offered by our node as well as tickets that our node is the recipient of. Optionally a ticket ID can be provided to filter the tickets.
The optional sidecar ID to filter for. If set, the result should either be a single ticket or no ticket in most cases. But because the ID is just 8 bytes and is randomly generated, there could be collisions, especially since tickets can also be crafted by a malicious party and given to any node. That's why the offer's public key is also used as an identifying element since that cannot easily be forged without also producing a valid signature. So an attacker cannot overwrite a ticket a node offered by themselves offering a ticket with the same ID and tricking the victim into registering that. Long story sort, there could be multiple tickets with the same ID but different offer public keys, which is why those keys should be checked as well.
pool: `sidecar cancel` CancelSidecar cancels the execution of a specific sidecar ticket. Depending on the state of the sidecar ticket its associated bid order might be canceled as well (if this ticket was offered by our node).
(message has no fields)
Used as response type in: Trader.InitAccount
Used as field type in:
, , ,The identifying component of an account. This is the key used for the trader in the 2-of-2 multi-sig construction of an account with an auctioneer.
The current outpoint associated with the account. This will change every time the account has been updated.
The current total amount of satoshis in the account.
The amount of satoshis in the account that is available, meaning not allocated to any oustanding orders.
The height at which the account will expire.
The current state of the account.
The hash of the account's latest transaction.
The current version of the account.
Used in:
The SHA256 hash of the trader's account key and a 32 byte random nonce. commit_hash = SHA256(accountPubKey || nonce)
The batch verification protocol version the client is using. Clients that don't use the latest version will be declined to connect and participate in an auction. The user should then be informed that a software update is required.
Used in:
,The final balance of the account after the executed batch.
Depending on the amount of the final balance of the account, the remainder is either sent to a new on-chain output, extended off-chain or fully consumed by the batch and its fees.
If the account was re-created on-chain then the new account's index in the transaction is set here. If the account was fully spent or the remainder was extended off-chain then no new account outpoint is created and -1 is returned here.
The trader's account key this diff is referring to.
The new account expiry height used to verify the batch. If the batch is successfully executed the account must update its expiry height to this value.
The new account version used to verify the batch. If this is non-zero, it means the account was automatically upgraded to the given version during the batch execution.
Used in:
Used in:
Modification action type.
Transaction ID.
Action transaction block height.
Action transaction timestamp.
Action transaction output amount.
Action transaction fee.
A flag which is true if fee value has not been set, and is otherwise false.
Action transaction fee value.
Used in:
The trader's account key of the account to recover.
Used in:
The state of an account when it is pending its confirmation on-chain.
The state of an account when it has undergone an update on-chain either as part of a matched order or a trader modification and it is pending its confirmation on-chain.
The state of an account once it has confirmed on-chain.
The state of an account once its expiration has been reached and its closing transaction has confirmed.
The state of an account when we're waiting for the closing transaction of an account to confirm that required cooperation with the auctioneer.
The state of an account once its closing transaction has confirmed.
The state of an account that indicates that the account was attempted to be recovered but failed because the opening transaction wasn't found by lnd. This could be because it was never published or it never confirmed. Then the funds are SAFU and the account can be considered to never have been opened in the first place.
The account has recently participated in a batch and is not yet confirmed.
Used in:
The trader's account key of the account to subscribe to.
The random 32 byte nonce the trader used to create the commitment hash.
The signature over the auth_hash which is the hash of the commitment and challenge. The signature is created with the trader's account key they committed to. auth_hash = SHA256(SHA256(accountPubKey || nonce) || challenge)
Used in:
, , , ,Let the version of lnd decide. If a version of lnd >= 0.15.0-beta is detected then a Taproot account is created. For earlier versions a legacy account is created. If a version of lnd >= 0.16.0-beta is detected, then a Taproot v2 account is created.
A legacy SegWit v0 p2wsh account with a single script.
A Taproot enabled account with MuSig2 combined internal key and the expiry script as a single tap script leaf.
A Taproot enabled account with MuSig2 combined internal key and the expiry script as a single tap script leaf. This version uses the MuSig2 v1.0.0-rc2 protocol for creating the combined internal key. This can only be selected when the connected lnd version is >= 0.16.0-beta.
Used in:
,The common fields shared between both ask and bid order types.
The number of blocks the liquidity provider is willing to provide the channel funds for.
The version of the order format that is used. Will be increased once new features are added.
The constraints for selling the liquidity based on channel discoverability.
The constraints for selling the liquidity based on the number of blocks before considering the channel confirmed.
Used in:
The version of the order.
The period of time the channel will survive for.
The true bid price of the order in parts per billion.
The channel type to be created.
Used in:
,The value of the account in satoshis. Must match the amount of the account_point output.
The block height at which the account should expire.
The trader's account key.
The long term auctioneer's account key.
The current batch key used to create the account output.
The current state of the account as the auctioneer sees it.
The block height of the last change to the account's output. Can be used to scan the chain for the output's spend state more efficiently.
Transaction output of the account. Depending on the state of the account, this output might have been spent.
The latest transaction of an account. This is only known by the auctioneer after the account has met its initial funding confirmation.
The account version. Will be set to 0 for legacy (non-taproot) accounts.
Used in:
The account's funding transaction is not yet confirmed on-chain.
The account is fully open and confirmed on-chain.
The account is still open but the CLTV expiry has passed and the trader can close it without the auctioneer's key. Orders for accounts in this state won't be accepted.
The account was modified by a deposit or withdrawal and is currently waiting for the modifying transaction to confirm.
The account is closed. The auctioneer doesn't track whether the closing transaction is already confirmed on-chain or not.
The account has recently participated in a batch and is not yet confirmed.
The account has reached the expiration height while it had a pending update that hasn't yet confirmed. This allows accounts to be renewed once confirmed and expired.
Used in:
,Default auction type where the bidder is paying for getting bitcoin inbound liqiudity from the asker.
Auction type where the bidder is paying the asker to accept a channel (bitcoin outbound liquidity) from the bidder.
Used as request type in: ChannelAuctioneer.BatchSnapshot, Trader.BatchSnapshot
The unique identifier of the batch encoded as a compressed pubkey.
Used as response type in: ChannelAuctioneer.BatchSnapshot, Trader.BatchSnapshot
Used as field type in:
The version of the batch.
The unique identifier of the batch.
The unique identifier of the prior batch.
Deprecated, use matched_markets.
Deprecated, use matched_markets.
The txid of the batch transaction.
The batch transaction including all witness data.
The fee rate, in satoshis per kiloweight, of the batch transaction.
The unix timestamp in nanoseconds the batch was made.
Maps the distinct lease duration markets to the orders that were matched within and the discovered market clearing price.
Used as request type in: ChannelAuctioneer.BatchSnapshots, Trader.BatchSnapshots
The unique identifier of the first batch to return, encoded as a compressed pubkey. This represents the newest/most current batch to fetch. If this is empty or a zero batch ID, the most recent finalized batch is used as the starting point to go back from.
The number of batches to return at most, including the start batch.
Used as response type in: ChannelAuctioneer.BatchSnapshots, Trader.BatchSnapshots
The list of batches requested.
Used in:
, ,The common fields shared between both ask and bid order types.
Required number of blocks that a channel opened as a result of this bid should be kept open.
The version of the order format that is used. Will be increased once new features are added.
The minimum node tier this order should be matched with. Only asks backed by a node this tier or higher will be eligible for matching with this bid.
Give the incoming channel that results from this bid being matched an initial outbound balance by adding additional funds from the taker's account into the channel. As a simplification for the execution protocol and the channel reserve calculations the min_chan_amt must be set to the full order amount. For the inbound liquidity market the self_chan_balance can be at most the same as the order amount.
If this bid order is meant to lease a channel for another node (which is dubbed a "sidecar channel") then this ticket contains all information required for setting up that sidecar channel. The ticket is expected to be the base58 encoded ticket, including the prefix and the checksum.
Signals if this bid is interested in an announced or unannounced channel.
Signals if this bid is interested in a zero conf channel or not.
Used in:
The version of the order.
The period of time the matched channel should be allocated for.
The true bid price of the order in parts per billion.
The channel type to be created.
Channel announcement constraints for matched channels.
Used in:
,Channel confirmation constraints for matched channels.
Used in:
,Used in:
The identifying type of the channel.
The node's identifying public key.
The remote node's identifying public key.
The node's base public key used within the non-delayed pay-to-self output on the commitment transaction.
RemotePaymentBasePoint is the remote node's base public key used within the non-delayed pay-to-self output on the commitment transaction.
Used in:
The channel supports static to_remote keys.
The channel uses an anchor-based commitment.
The channel build upon the anchor-based commitment and requires an additional CLTV of the channel lease maturity on any commitment and HTLC outputs that pay directly to the channel initiator (the seller).
A channel type that uses a Pay-to-Taproot output for the funding output.
Used as request type in: HashMail.SendStream
Used as response type in: HashMail.RecvStream
Used as request type in: HashMail.DelCipherBox, HashMail.NewCipherBox
A description of the stream one is attempting to initialize.
Used as request type in: HashMail.RecvStream
Used as response type in: HashMail.SendStream
Used as field type in:
, ,TODO(roasbeef): payment request, node key, etc, etc
Used in:
(message has no fields)
Used in:
(message has no fields)
Used in:
Used as request type in: ChannelAuctioneer.SubscribeBatchAuction, ChannelAuctioneer.SubscribeSidecar
Signal the intent to receive updates about a certain account and start by sending the commitment part of the authentication handshake. This is step 1 of the 3-way handshake.
Subscribe to update and interactive order execution events for account given and all its orders. Contains the final signature and is step 3 of the 3-way authentication handshake.
Accept the orders to be matched.
Reject a whole batch.
The channel funding negotiations with the matched peer were successful and the inputs to spend from the accounts are now signed.
The trader has lost its database and is trying to recover their accounts. This message can be sent after the successful completion of the 3-way authentication handshake where it will be established if the account exists on the auctioneer's side. This message must only be sent if the auctioneer knows of the account, otherwise it will regard it as a critical error and terminate the connection.
Used as response type in: Trader.DecodeSidecarTicket
Used as field type in:
The unique, pseudorandom identifier of the ticket.
The version of the ticket encoding format.
The state of the ticket.
The offered channel capacity in satoshis.
The offered push amount in satoshis.
The offered lease duration in blocks.
The public key the offer was signed with.
The signature over the offer's digest.
Whether the offer was created with the automatic order creation flag.
The recipient node's public identity key.
The recipient node's channel multisig public key to be used for the sidecar channel.
The index used when deriving the above multisig pubkey.
The nonce of the bid order created for this sidecar ticket.
The signature over the order's digest, signed with the private key that corresponds to the offer_sign_pubkey.
The pending channel ID of the sidecar channel during the execution phase.
The original, base58 encoded ticket.
If true, the channel acceptor for this ticket will expect an unannounced channel.
If true, the channel acceptor for this ticket will expect a zero conf channel.
Used in:
,NO_MARKET indicates that this bucket doesn't actually exist, in that no market is present for this market.
MARKET_CLOSED indicates that this market exists, but that it isn't currently running.
ACCEPTING_ORDERS indicates that we're accepting orders for this bucket, but not yet clearing for this duration.
MARKET_OPEN indicates that we're accepting orders, and fully clearing the market for this duration.
Used in:
, , ,The base fee in satoshis charged per order, regardless of the matched size.
The fee rate in parts per million.
Used in:
,Used in:
Used in:
The outpoint of the channel created.
The amount, in satoshis, of the channel created.
The intended duration, in blocks, of the channel created.
The absolute height that this channel lease expires.
The premium, in satoshis, either paid or received for the offered liquidity.
The execution fee, in satoshis, charged by the auctioneer for the channel created.
The fee, in satoshis, charged by the auctioneer for the batch execution transaction that created this lease.
The actual fixed rate expressed in parts per billionth this lease was bought/sold at.
The actual fixed rate of the bid/ask, this should always be 'better' than the clearing_rate_price.
The order executed that resulted in the channel created.
The unique identifier for the order that was matched with that resulted in the channel created.
Whether this channel was purchased from another trader or not.
The pubkey of the node that this channel was bought/sold from.
The tier of the node that this channel was bought/sold from.
The self channel balance that was pushed to the recipient.
Whether the channel was leased as a sidecar channel (bid orders only).
Used in:
Used in:
* The base macaroon that was baked by the auth server.
* The payment hash of the payment that was paid to obtain the token.
* The preimage of the payment hash, knowledge of this is proof that the payment has been paid. If the preimage is set to all zeros, this means the payment is still pending and the token is not yet fully valid.
* The amount of millisatoshis that was paid to get the token.
* The amount of millisatoshis paid in routing fee to pay for the token.
* The creation time of the token as UNIX timestamp in seconds.
* Indicates whether the token is expired or still valid.
* Identifying attribute of this token in the store. Currently represents the file name of the token where it's stored on the file system.
Used in:
,The number of open/pending ask orders per node tier.
The number of open/pending bid orders per node tier.
The total number of open/unmatched units in open/pending ask orders per node tier.
The total number of open/unmatched units in open/pending bid orders per node tier.
Used in:
Used in:
The state of the match making process the order went through.
The number of units that would be (or were) filled with this match.
The nonce of the order we were matched to.
The reason why the trader daemon rejected the order. Is only set if match_state is set to REJECTED.
Used in:
No reject occurred, this is the default value.
The client didn't come up with the same result as the server and is rejecting the batch because of that.
The client doesn't support the current batch verification version the server is using.
The client rejects some of the orders, not the full batch. This reason is set on matches for orders that were in the same batch as partial reject ones but were not themselves rejected.
The trader's client has a preference to only match orders with peers it doesn't already have channels with. The order that is rejected with this reason type comes from a peer that the trader already has channels with.
The trader's client couldn't connect to the remote node of the matched order or the channel funding could not be initialized for another reason. This could also be the rejecting node's fault if their connection is not stable. Using this code can have a negative impact on the reputation score of both nodes, depending on the number of errors recorded.
Used in:
The OrderMatchPrepare message from the auctioneer was received initially.
The OrderMatchPrepare message from the auctioneer was processed successfully and the batch was accepted.
The order was rejected by the trader daemon, either as an answer to a OrderMatchSignBegin or OrderMatchFinalize message from the auctioneer.
The OrderMatchSignBegin message from the auctioneer was processed successfully.
The OrderMatchFinalize message from the auctioneer was processed successfully.
Used in:
The ask order that was matched against.
The number of units that were filled from/by this matched order.
Used in:
The ask order that was matched against.
The number of units that were filled from/by this matched order.
Used in:
,Maps a user's own order_nonce to the opposite order type they were matched with. The order_nonce is a 32 byte hex encoded string because bytes is not allowed as a map key data type in protobuf.
The uniform clearing price rate in parts per billion that was used for this batch.
Used in:
The set of all orders matched in the batch.
The uniform clearing price rate in parts per billion that was used for this batch.
Used in:
, ,The bids the trader's own order was matched against. This list is empty if the trader's order was a bid order itself.
The asks the trader's own order was matched against. This list is empty if the trader's order was an ask order itself.
Used in:
,The full ask order that was matched.
The full bid order that was matched.
The fixed rate premium that was matched, expressed in parts-ber-billion.
The total number of satoshis that were bought.
The total number of units that were matched.
Used in:
Used in:
, ,The pubkey for the node these ratings belong to.
The tier of the target node.
Used in:
, , , ,The default node tier. This value will be determined at run-time by the current order version.
Tier 0, bid with this tier are opting out of the smaller "higher quality" pool of nodes to match their bids. Nodes in this tier are considered to have "no rating".
Tier 1, the "base" node tier. Nodes in this tier are shown to have a higher degree of up time and route-ability compared to the rest of the nodes in the network. This is the current default node tier when submitting bid orders.
Used in:
,The trader's account key of the account that is used for the order.
Fixed order rate in parts per billion.
Order amount in satoshis.
Maximum fee rate the trader is willing to pay for the batch transaction, expressed in satoshis per 1000 weight units (sat/KW).
Order nonce, acts as unique order identifier.
The state the order currently is in.
The number of order units the amount corresponds to.
The number of currently unfilled units of this order. This will be equal to the total amount of units until the order has reached the state PARTIAL_FILL or EXECUTED.
The value reserved from the account by this order to ensure the account can pay execution and chain fees in case it gets matched.
The unix timestamp in nanoseconds the order was first created/submitted.
A list of events that were emitted for this order. This field is only set when the verbose flag is set to true in the request.
The minimum number of order units that must be matched per order pair.
The channel type to use for the resulting matched channels.
List of nodes that will be allowed to match with our order. Incompatible with the `not_allowed_node_ids` field.
List of nodes that won't be allowed to match with our order. Incompatible with the `allowed_node_ids` field.
Auction type where this order must be considered during the matching.
Flag used to signal that this order can be shared in public market places.
Used in:
, , ,Used to set defaults when a trader doesn't specify a channel type.
The channel type will vary per matched channel based on the features shared between its participants.
A channel type that builds upon the anchors commitment format to enforce channel lease maturities in the commitment and HTLC outputs that pay to the channel initiator/seller.
A channel type that uses a Pay-to-Taproot output for the funding output.
Used in:
The unix timestamp in nanoseconds the event was emitted at. This is the primary key of the event and is unique across the database.
The human readable representation of the event.
The order was updated in the database.
The order was involved in a match making attempt.
Used in:
The batch ID this acceptance message refers to. Must be set to avoid out-of- order responses from disrupting the batching process.
Used in:
The unique identifier of the finalized batch.
The final transaction ID of the published batch transaction.
Used in:
Deprecated, use matched_markets.
Deprecated, use matched_markets.
A list of the user's own accounts that are being spent by the matched orders. The list contains the differences that would be applied by the server when executing the orders.
The fee parameters used to calculate the execution fees.
The batch transaction with all non-witness data.
Fee rate of the batch transaction, expressed in satoshis per 1000 weight units (sat/kW).
Fee rebate in satoshis, offered if another batch participant wants to pay more fees for a faster confirmation.
The 32 byte unique identifier of this batch.
The batch verification protocol version the server is using. Clients that don't support this version MUST return an `OrderMatchAccept` message with an empty list of orders so the batch can continue. The user should then be informed that a software update is required.
Maps the distinct lease duration markets to the orders that were matched within and the discovered market clearing price.
The earliest absolute height in the chain in which the batch transaction can be found within. This will be used by traders to base off their absolute channel lease maturity height.
Used in:
The ID of the batch to reject.
The reason/error string for the rejection.
The reason as a code.
The map of order nonces the trader was matched with but doesn't accept. The map contains the _other_ trader's order nonces and the reason for rejecting them. This can be a subset of the whole list of orders presented as matches if the trader only wants to reject some of them. This map is only considered by the auctioneer if the main reason_code is set to PARTIAL_REJECT. Otherwise it is assumed that the whole batch was faulty for some reason and that the trader rejects all orders contained. The auctioneer will only accept a certain number of these partial rejects before a trader's account is removed completely from the current batch. Abusing this functionality can also lead to a ban of the trader. The order nonces are hex encoded strings because the protobuf map doesn't allow raw bytes to be the map key type.
Used in:
The reason cannot be mapped to a specific code.
The client didn't come up with the same result as the server and is rejecting the batch because of that.
The client doesn't support the current batch verification version the server is using.
The client rejects some of the orders, not the full batch. When this code is set, the rejected_orders map must be set.
Used in:
The ID of the batch that the signatures are meant for.
A map with the signatures to spend the accounts being spent in a batch transaction. The map key corresponds to the trader's account key of the account in the batch transaction. The account key/ID has to be hex encoded into a string because protobuf doesn't allow bytes as a map key data type. For version 1 (Taproot enabled) accounts, this merely represents a partial MuSig2 signature that can be combined into a full signature by the auction server by adding its own partial signature. A set of nonces will be provided by the trader for each v1 account to allow finalizing the MuSig2 signing session.
The information for each channel created as part of a batch that's submitted to the auctioneer to ensure they can properly enforce a channel's service lifetime. Entries are indexed by the string representation of a channel's outpoint.
A set of 66-byte nonces for each version 1 (Taproot enabled) account. The nonces can be used to produce a MuSig2 partial signature to spend the account using the key spend path, which is a MuSig2 combined key of the auctioneer key and the trader key.
Used in:
The 32 byte unique identifier of this batch.
A set of 66-byte nonces for each version 1 (Taproot enabled) account. The nonces can be used to produce a MuSig2 partial signature to spend the account using the key spend path, which is a MuSig2 combined key of the auctioneer key and the trader key.
The full list of UTXO information for each of the inputs being spent. This is required when spending one or more Taproot enabled (account version 1) outputs.
Used in:
The reason/error string for the rejection.
The reason as a code.
Used in:
The trader's client has a preference to only match orders with peers it doesn't already have channels with. The order that is rejected with this reason type comes from a peer that the trader already has channels with.
The trader's client couldn't connect to the remote node of the matched order or the channel funding could not be initialized for another reason. This could also be the rejecting node's fault if their connection is not stable. Using this code can have a negative impact on the reputation score of both nodes, depending on the number of errors recorded.
Used in:
, ,Used in:
, , , ,Raw bytes representing the transaction id.
The index of the output on the transaction.
Used in:
,The value, in satoshis, of the output.
The address corresponding to the output.
Used in:
The address corresponding to the output.
The target number of blocks that the transaction should be confirmed in.
The fee rate, in satoshis per kw, to use for the withdrawal transaction.
Used in:
Used in:
The account key being used to authenticate.
A valid signature over the stream ID being used.
Used in:
,The common fields shared between both ask and bid order types.
The number of blocks the liquidity provider is willing to provide the channel funds for.
The version of the order format that is used. Will be increased once new features are added.
The constraints for selling the liquidity based on channel discoverability.
The constraints for selling the liquidity based on the number of blocks before considering the channel confirmed.
Used as response type in: ChannelAuctioneer.SubscribeBatchAuction, ChannelAuctioneer.SubscribeSidecar
Step 2 of the 3-way authentication handshake. Contains the authentication challenge. Subscriptions sent by the trader must sign the message SHA256(SHA256(accountPubKey || nonce) || challenge) with their account key to prove ownership of said key.
The trader has subscribed to account updates successfully, the 3-way authentication handshake completed normally.
An error occurred during any part of the communication. The trader should inspect the error code and act accordingly.
The auctioneer has matched a set of orders into a batch and now instructs the traders to validate the batch and prepare for order execution. Because traders have the possibility of backing out of a batch, multiple of these messages with the SAME batch_id can be sent.
This message is sent after all traders send back an OrderMatchAccept method. It signals that the traders should execute their local funding protocol, then send signatures for their account inputs.
All traders have accepted and signed the batch and the final transaction was broadcast.
The answer to a trader's request for account recovery. This message contains all information that is needed to restore the account to working order on the trader side.
Used in:
,The common fields shared between both ask and bid order types.
Required number of blocks that a channel opened as a result of this bid should be kept open.
The version of the order format that is used. Will be increased once new features are added.
The minimum node tier this order should be matched with. Only asks backed by a node this tier or higher will be eligible for matching with this bid.
Give the incoming channel that results from this bid being matched an initial outbound balance by adding additional funds from the taker's account into the channel. As a simplification for the execution protocol and the channel reserve calculations the min_chan_amt must be set to the full order amount. For the inbound liquidity market the self_chan_balance can be at most the same as the order amount.
If this bid order is meant to lease a channel for another node (which is dubbed a "sidecar channel") then this boolean needs to be set to true. The multi_sig_key, node_pub and node_addr fields of the order details must then correspond to the recipient node's details.
Signals if this bid is interested in an announced or unannounced channel.
Signals if this bid is interested in a zero conf channel or not.
Used in:
The unique challenge for each stream that has to be signed with the trader's account key for each account subscription.
The commit hash the challenge was created for.
Used in:
The outpoint that the input corresponds to.
The signature script required by the input. This only applies to NP2WKH inputs.
Used in:
The new value of the account.
The new expiry of the account as an absolute height.
The new version of the account.
Used in:
,The trader's account key of the account to use for the order.
Fixed order rate in parts per billion.
Order amount in satoshis.
Order nonce of 32 byte length, acts as unique order identifier.
Signature of the order's digest, signed with the user's account key. The signature must be fixed-size LN wire format encoded. Version 0 includes the fields version, rate_fixed, amt, max_batch_fee_rate_sat_per_kw and lease_duration_blocks in the order digest.
The multi signature key of the node creating the order, will be used for the target channel's funding TX 2-of-2 multi signature output.
The pubkey of the node creating the order.
The network addresses of the node creating the order.
The type of the channel that should be opened.
Maximum fee rate the trader is willing to pay for the batch transaction, expressed in satoshis per 1000 weight units (sat/kW).
List of nodes that will be allowed to match with our order. Incompatible with the `not_allowed_node_ids` field.
List of nodes that won't be allowed to match with our order. Incompatible with the `allowed_node_ids` field.
Auction type where this order must be considered during the matching.
Flag used to signal that this order can be shared in public market places.
Used in:
The value, in satoshis, of the output.
The script of the output to send the value to.
Used in:
A valid sidecar ticket that has been signed (offered) by a Pool account in the active state.
Used as request type in: Trader.DecodeSidecarTicket
Used as response type in: Trader.OfferSidecar, Trader.RegisterSidecar
The complete sidecar ticket in its string encoded form which is base58 encoded, has a human readable prefix ('sidecar...') and a checksum built in. The string encoded version will only be used on the trader side of the API. All requests to the auctioneer expect the ticket to be in its raw, tlv encoded byte form.
Used in:
The string representation of the subscription error.
The error code of the subscription error.
The trader's account key this error is referring to. This is not set if the error code is SERVER_SHUTDOWN as that error is only sent once per connection and not per individual subscription.
The auctioneer's partial account information as it was stored when creating the reservation. This is only set if the error code is INCOMPLETE_ACCOUNT_RESERVATION. Only the fields value, expiry, trader_key, auctioneer_key, batch_key and height_hint will be set in that case.
Used in:
The error cannot be mapped to a specific code.
The server is shutting down for maintenance. Traders should close the long-lived stream/connection and try to connect again after some time.
The account the trader tried to subscribe to does not exist in the auctioneer's database.
The account the trader tried to subscribe to was never completed and a reservation for it is still pending.
Used in:
The trader's account key this message is referring to.
Used in:
,The value of the transaction output in satoshis.
The public key script of the output.
Used in:
The state of the order previous to the change. This is what the state changed from.
The new state of the order after the change. This is what the state changed to.
The units that were filled at the time of the event.