Commit graph

68 commits

Author SHA1 Message Date
Oliver Gugger
f460060692
wasm 2021-05-25 14:21:39 +02:00
Olaoluwa Osuntokun
515a6ef476
clientdb: add new method to insert a sidecar ticket along w/ a bid
In this commit, we add a new method that lets us insert a sidecar ticket
as well as a bid in an atomic manner. We'll use this later when offering
this new type of automated ticket.
2021-05-09 19:24:58 -07:00
Oliver Gugger
16fc005a61
macaroons+clientdb: add timeout to DB open
To make sure we don't just block for forever if another Pool daemon
process is already running, we add a timeout and error out if obtaining
the unique file lock fails after 5 seconds.
2021-04-27 10:19:55 +02:00
Oliver Gugger
5f7f4cd7f4
multi: add sidecar channel info to leases list
A sidecar channel uses different multisig keys than a normal order so we
need to fix the lookup in the batch transaction. While we're at it, we
might as well return the self chan balance and whether it was a sidecar
channel in the leases response.
2021-04-07 14:19:30 +02:00
Oliver Gugger
2f56378898
order+clientdb: add sidecar ticket to bid order
With this commit we add the optional sidecar ticket to bid orders.
Because the node submitting the bid order doesn't necessarily need to be
the node creating the offer, we just store the ticket as is and don't
require it to be in the database already.
2021-04-02 14:18:10 +02:00
Oliver Gugger
f84debaeff
sidecar+clientdb: add sidecar storage
Both the trader offering to buy a sidecar channel for another node as
well as the recipient node will need to store the involved sidecar
tickets in their local databases. We add a simple store interface and
its implementation that will be used in future commits.
2021-04-01 22:34:07 +02:00
Oliver Gugger
b308f2ee35
clientdb: add self channel balance to bid order
With the additional data encoded as tlv, we can simply add the new
self channel balance field to the tlv stream.
2021-03-19 16:50:31 +01:00
Oliver Gugger
8f817aba5f
clientdb: add extra data as tlv stream to order
To make it way easier to add more data to orders, we add an extra key
in the order's bucket that will contain all future additional data
encoded as a tlv stream.
The PR containing this commit will likely become quite large as is and
therefore we don't want to overload it more by also adding a DB
migration. This can always be done in the future.
2021-03-19 16:50:30 +01:00
Oliver Gugger
83b458b504
multi: move auctioneer proto to auctioneerrpc package
As a preparation to extract the auctioneer proto package into its own
sub-module, we move it out of the poolrpc package.
2021-01-22 10:41:44 +01:00
Oliver Gugger
c76ae07895
clientdb: test snapshot serialization for all versions 2021-01-08 14:02:15 +01:00
Oliver Gugger
05626355ae
multi: use distinct clearing price per duration bucket 2021-01-08 14:02:14 +01:00
Oliver Gugger
a27fd7c1a0
multi: add and use new order version
We add a new order version that is allowed to submit lease durations
outside of the default/legacy 2016 block duration.
No new fields are added, so nothing changes in the serialization or the
digest. This version only signals that the client is able to process
batch requests with multiple duration buckets.
2021-01-08 14:02:11 +01:00
Oliver Gugger
713eba5279
clientdb: properly serialize batch version
Even though there still only is one batch version, we want to properly
encode/decode it as a preparation for future version changes.
2021-01-08 14:02:08 +01:00
Oliver Gugger
b589cb7e70
clientdb: remove unused pending batch TX key
Because we now only use the batch TX from the local pending batch
snapshot, the redundant information in the pending batch TX key is not
needed anymore.
2020-12-09 09:42:30 +01:00
Oliver Gugger
8b57bb9a4e
multi: replace PendingBatch with PendingBatchSnapshot
To be able to fully clean up an old, pending batch snapshot on daemon
startup, we first need to switch to a method that returns the full
snapshot instead of just its ID.
2020-12-09 09:42:30 +01:00
Oliver Gugger
4b2291aaa8
clientdb: add fetchPendingBatchSnapshot
In preparation for loading the full local pending batch snapshot instead
of only the ID when starting the daemon, we add a new function to the
database to retrieve the snapshot.
2020-12-09 09:42:29 +01:00
Oliver Gugger
9714deb848
multi: specify DB filename when opening clientdb
To make it possible to open any DB in the debug CLI, we allow specifying
the file name too instead of only the path.
2020-11-24 14:27:45 +01:00
Olaoluwa Osuntokun
7744d9d4bf
Merge pull request #104 from guggero/del-order-timestamp
Update order status to "failed" instead of deleting
2020-10-13 16:21:41 -07:00
Oliver Gugger
b0dc59a39e
order+clientdb: remove unused DelOrder method 2020-10-13 10:11:37 +02:00
Wilmer Paulino
664a55ad3b
clientdb: store order MinUnitsMatch field 2020-10-12 19:51:28 -07:00
Olaoluwa Osuntokun
273fb46088 clientdb: add new key within order bucket for min node tier
In this commit, we add a new key within the order bucket that stores
just the node tier for a given order. The current code only _expects_ a
node tier to exist for Bid orders, however things have been designed
such that, we can easily add tier options for Ask orders as well.

Along the way we modify the `orderCallback` to include the node tier
information as its read from a distinct bucket. In the future, we'll
likely want to make this into a struct so the function signature doesn't
ever expand.
2020-10-09 15:53:43 -07:00
Olaoluwa Osuntokun
281f2a17d2 multi: unify min/max durations into single field of LeaseDuration
In this commit, we replace the existing min/max duration system with a
single field that expresses the expected duration of a lease. Note that
we've left some of the exiting logic in place that select a duration
from a bid in an attempt to make this more of a "soft fork" which will
allow any existing orders to be cleared out as normal before we switch
over.

Once we add multiple durations (this commit assumes a single duration),
we'll need to modify the verification logic to be able to handle
multiple clearing prices for a given batch.
2020-10-05 17:57:16 -07:00
Oliver Gugger
f919298e58
rpcserver+clientdb: store match events for rejects
We also want to know whenever we reject a batch either fully or
partially so we also store an event for each involved order in case of a
reject message.
2020-10-01 13:16:58 +02:00
Oliver Gugger
80733657c5
rpcserver+clientdb: store match events for involved orders
We create and store an event every time an order is involved in a match
making process. We track the three distinct phases a batch goes through
from the trader's point of view so we can visualize this process in the
future.
2020-10-01 13:16:56 +02:00
Oliver Gugger
c147e8c96f
clientdb: store and retrieve order events
We create new store methods to store and retrieve order events. We also
emit and store the "created" and "state changed" events when appropriate.
2020-10-01 13:16:52 +02:00
Oliver Gugger
24dc11625b
clientdb: create and use copyOrder for applying batch updates
To make sure the source bucket in updateOrder always is the root order
bucket, we extract the single case were it didn't use to be that way
into its own function called copyOrder and use that for applying the
final batch updates.
2020-10-01 13:16:51 +02:00
Oliver Gugger
a6c363708f
clientdb: add migration for existing orders
With this commit we add a migration that adds a fake order
creation timestamp to all orders that existed before this code is first
run.
2020-10-01 13:16:50 +02:00
Oliver Gugger
046a9a4bda
clientdb: add event storage
This commit adds the ability to store and retrieve
events to/from the main event bucket but also their references in the
owner's buckets.
2020-10-01 13:16:48 +02:00
Oliver Gugger
4964dfca6c
order+clientdb: add order specific events
We add a couple of order specific events which we use to track the
activity around orders. Some events track the timestamps at which we
persist a change to orders, other events track more volatile occurrences
of the match making process.
2020-10-01 13:16:47 +02:00
Johan T. Halseth
0e665f592a
clientdb: store LocalBatchSnapshot on StorePendingBatch 2020-09-10 10:41:31 +02:00
Johan T. Halseth
60d7a0a48b
clientdb: add batch ID index bucket for snapshots 2020-09-10 10:41:31 +02:00
Johan T. Halseth
7c3a4d8492
clientdb: define LocalBatchSnapshot 2020-09-10 10:41:07 +02:00
Johan T. Halseth
169daf8131
clientdb: return updated order, account on modification 2020-09-10 09:51:57 +02:00
Johan T. Halseth
daf1e1a0bc
clientdb test: complete tx, don't require t for dummyOrder 2020-09-10 09:51:56 +02:00
Johan T. Halseth
4262ec71b4
clientdb/codec: add (de)serialization of LinearFeeSchedule 2020-09-10 09:51:55 +02:00
Olaoluwa Osuntokun
ffc9c60b13
multi: rename project from llm to pool 2020-09-09 19:55:10 -07:00
Wilmer Paulino
203627643b
clientdb: avoid serialization of latest tx in StateCanceledAfterRecovery
The latest transaction is also not known here, so we shouldn't serialize
it.
2020-09-04 11:36:25 -07:00
Wilmer Paulino
f71adf7b67
multi: re-purpose account close tx field to latest tx 2020-09-02 12:10:23 -07:00
Johan T. Halseth
a2abc187f3
multi: rename FundingFeeRate to MaxBatchFeeRate
The funding feerate field was previoulsy unused, so we rename it to
"max batch fee rate" in order to use it to communicate to the server the
maximum fee rate we are willing to pay to be included in a batch.

We also increase the default value to 500 sat/vbyte.
2020-08-07 16:34:07 +02:00
Oliver Gugger
6692073e89
clientdb+account: add code for migration-less new database fields
In the future we might want to have the possibility to add additional
fields to a database object (like orders or accounts) without the need
for a migration. We add the code for that already, even if it's not
being used currently.
2020-08-03 11:08:48 +02:00
Oliver Gugger
fcea7e6e97
clientdb: extract storeAccount and readAccount
As a preparation to add new account fields to a sub bucket, we extract
the read and write of an account into separate functions each.
2020-07-31 14:37:27 +02:00
Oliver Gugger
97624499a9
mod: update bbolt to fix go1.14 compat 2020-06-24 10:53:59 +02:00
Oliver Gugger
bb09760864
clientdb: fix formatting 2020-06-24 09:55:42 +02:00
Oliver Gugger
b120e5b21c
clientdb: fix order deletion 2020-06-23 15:38:53 +02:00
Olaoluwa Osuntokun
57fa63c237
multi: rename, fix modules 2020-06-21 19:37:00 -07:00
Wilmer Paulino
10efa7d582 clientdb: store global random lock ID upon database initialization 2020-06-17 18:34:49 -07:00
Olaoluwa Osuntokun
9a2268ad48 client: change order.Kit.AcctKey into raw key bytes
In this commit, we change the key stored within the internal order kit
into a raw pubkey array. Along the way we fix a bug in the verifier
tests due to using a map with pointer keys rather than the actual value
itself.
2020-05-26 19:57:54 -07:00
Wilmer Paulino
9f9e7d7cb6 clientdb: prevent test race condition by not modifying global test var 2020-05-05 14:20:49 -07:00
Wilmer Paulino
cb9c14b1b1 clientdb: add DeletePendingBatch 2020-05-05 13:54:36 -07:00
Wilmer Paulino
043a9f7d98 account: properly handle spend on pending batch not finalized
This commit aims to address a current gap within the system where trader
account states can become desynchronized if they participated in a batch
and they never received a Finalize message from the auctioneer.

From now on, if an account spend arrives while a trader has a pending
batch, then we assume they weren't able to receive its Finalize message,
and use the spend as an indication that the batch has been finalized.
This works because if a trader signs for a batch and disconnects, the
batch should have already been persisted, and if the batch was actually
finalized (i.e., broadcast without any changes), then the account should
have been spent.
2020-05-05 13:53:32 -07:00