Commit graph

9 commits

Author SHA1 Message Date
Blockstream Satellite
5882fddc49 Support retransmission of unconfirmed orders
This change implements a mechanism to retransmit orders if some of the
order's selected regions do not confirm transmission in due time. It
adds a worker to repeatedly check the orders and determine if they need
retransmission. Such orders will be added to a new table named
tx_retries. The tx_start function now first checks if there are regular
new paid orders to transmit. If not, it will check the retransmission
table and retransmit an order from there if one is available.

This patch also introduces a new order state called "retranmission". The
order enters this state while waiting for retransmission.
2021-12-28 10:01:04 -03:00
Blockstream Satellite
21ee2f212b Support API transmissions over selected regions
Users can provide a list of regions to POST /order requests. This list
indicates on which regions the order should be transmitted. It also
determines the expected transmission and reception confirmations.
2021-12-27 12:16:25 -03:00
Blockstream Satellite
2cfc39804e Remove tx loop and rely on tx confirmations
This change removes the infinite transmission loop with sleep periods
between each transmission. Now, a new transmission can start by a call
to "tx_start" on the following two conditions:

1) As soon as the application starts (if there is a previously paid
   order waiting already).
2) As soon as the current transmission ends. The server will immediately
   look for the next order ready for transmission and start it if
   available.

Meanwhile, the condition for ending the current transmission (i.e., for
calling "tx_end(order)") is when all Tx confirmations are received from
all regions.
2021-12-27 12:16:25 -03:00
Blockstream Satellite
e6cd148bc6 Support auth_token given as query string parameter 2021-07-21 14:43:44 -03:00
Blockstream Satellite
3d7a5b764d Add expired invoice error and rename paid error
- Add new error: INVOICE_ALREADY_EXPIRED.
- Rename ORDER_ALREADY_PAID to INVOICE_ALREADY_PAID.
2021-07-20 12:28:08 -03:00
Blockstream Satellite
24a4c5ccb7 Do not round the order's bid_per_byte value
Store the fractional value on the db. Let the frontend round if
necessary but keep it non-rounded on the backend.
2021-07-20 12:28:08 -03:00
Blockstream Satellite
1568ee54f2 Add a new error code for fetching info
Return a json response with a custom error code like most other API
endpoints.
2021-07-20 12:28:08 -03:00
Blockstream Satellite
d8e7516f01 Add date filter and paging on all orders/ states
- Add date filtering (before parameter) to /queued.
- Add page limit to /sent and /pending.
2021-07-20 12:28:08 -03:00
Blockstream Satellite
9d421771e7 Port the satellite API to python
- Preserve the SQLite database and use SQLAlchemy to wrap db
  interactions.
- Use Alembic for database migrations.
- Organize all the python modules on the new server/ directory.
- Use pytest for unit tests and organize test modules at server/tests/.
2021-07-20 12:28:08 -03:00