Luke Parker
eafd054296
Start defining the coordinator
2023-04-15 17:38:47 -04:00
Luke Parker
51bf51ae1e
Make unsigned private due to unsafe calling potential
2023-04-15 16:37:59 -04:00
Luke Parker
28b6bc99ac
Update to the latest subxt
...
Writes a custom unsigned extrinic creator due to subxt having an internal error
with the scale metadata. While the code in our scope increased, it's much more
ergonomic to our usage. We may end up rewriting most of subxt, eventually.
2023-04-15 05:23:57 -04:00
Luke Parker
ce883104b7
cargo update
2023-04-15 03:27:45 -04:00
Luke Parker
f48022c6eb
Add basic getters to tributary
2023-04-15 00:41:48 -04:00
Luke Parker
124b994c23
Add a NewSet event to validator-sets
...
Updates to the latest serai-dex/substrate due to depending on
10ccaca0eb498a2316bbf627d419b29b1a75933a.
2023-04-15 00:40:33 -04:00
Luke Parker
2e2bc59703
Support reloading the mempool from disk
2023-04-14 15:51:56 -04:00
Luke Parker
c032f66f8a
must_use annotations on DbTxn
2023-04-14 15:04:26 -04:00
Luke Parker
695d923593
Reloaded provided transactions from the disk
...
Also resolves a race condition by asserting provided transactions must be
unique, allowing them to be safely provided multiple times.
2023-04-14 15:03:01 -04:00
Luke Parker
63318cb728
Add a DB to Tributary
...
Adds support for reloading most of the blockchain.
2023-04-14 14:11:40 -04:00
Luke Parker
6f6c9f7cdf
Add a dedicated db crate with a basic DB trait
...
It's needed by the processor and tributary (coordinator).
2023-04-14 11:47:43 -04:00
Luke Parker
04e7863dbd
Documentation and cargo update
2023-04-13 21:06:11 -04:00
Luke Parker
a5002c50ec
Fix the scheduler from dropping UTXOs when there weren't any payments
2023-04-13 20:59:36 -04:00
Luke Parker
72dd665ebf
Add DoS limits to tributary and require provided transactions be ordered
2023-04-13 20:35:55 -04:00
Luke Parker
8b1bce6abd
Add correction the last commit missed
2023-04-13 18:47:34 -04:00
Luke Parker
e73a51bfa5
Finish binding Tendermint into Tributary and define a Tributary master object
2023-04-13 18:43:27 -04:00
Luke Parker
5858b6c03e
Replace Tendermint step with sync_block
...
Step moved a step forward after an externally synced/added block. This created
a race condition to add the block between the sync process and the Tendermint
machine. Now that the block routes through Tendermint, there is no such race
condition.
2023-04-13 18:18:29 -04:00
Luke Parker
9bea368d36
Plan scheduled payments whenever outputs are received
...
The scheduler prior waited for the next series of payments to be added.
2023-04-13 15:41:56 -04:00
Luke Parker
a509dbfad6
Embed the mempool into the Blockchain
2023-04-13 09:47:14 -04:00
Luke Parker
03a6470a5b
Finish binding Tendermint, bar the P2P layer
2023-04-12 18:04:28 -04:00
Luke Parker
997dd611d5
Don't add blocks which aren't valid
...
Previously, Tendermint needed to be live more than it needed to be correct.
Under the original intention for it, correctness would fail if any coin
desynced, which would cause the node to fail entirely. By accepting a
supermajority's view of state, despite its own, a single coin's failure would
only lead to inability to participate with that single coin.
Now that Tendermint is solely for Tributary, nodes should halt a coin-specific
chain if their view of the chain differs. They are unable to meaningless
participate regardless.
This also means a supermajority of validators can no longer fake messages from
other validators, allowing the Tributary chain to use uniform weights with much
less impact. There is still enough impact they can't be used (ability to cause
a fork), yet they should allow uniform block production (as that's solely a DoS
concern).
While we prior could've simply additionally checked signatures, add_block's
lack of a failure case would've meant it had to panic. This would've been a DoS
possible a minority-weight *which affected the entire coordinator* and
therefore *the entire validator for all coins*.
2023-04-12 16:18:42 -04:00
Luke Parker
86cbf6e02e
Bind the signature scheme for tendermint-machine
2023-04-12 16:06:14 -04:00
Luke Parker
8c8232516d
Only allow designated participants to send transactions
2023-04-12 12:42:23 -04:00
Luke Parker
be947ce152
Add a mempool
2023-04-12 12:15:38 -04:00
Luke Parker
7c7f17aac6
Test the blockchain
2023-04-12 11:13:48 -04:00
Luke Parker
ff5c240fcc
Fix a bug in the merkle algorithm
2023-04-12 10:52:28 -04:00
Luke Parker
d5a12a9b97
Make TransactionKind have a reference to Signed
...
Broken commit due to partial staging of one file.
2023-04-12 09:38:20 -04:00
Luke Parker
354ac856a5
Extensively test transactions
2023-04-12 08:51:40 -04:00
Luke Parker
402a7be966
Block contructor and tests
2023-04-11 20:24:27 -04:00
Luke Parker
119d25be49
Clarify transaction length sizing
2023-04-11 19:18:26 -04:00
Luke Parker
2cfee536f6
Define all coordinator transaction types
2023-04-11 19:04:53 -04:00
Luke Parker
90f67b5e54
Slight merkle improvements
2023-04-11 19:04:27 -04:00
Luke Parker
4d17b922fe
Sign the genesis when signing transactions
...
Prevents replaying across tributaries, which is a risk for BTC/ETH (regarding key gen).
2023-04-11 19:03:52 -04:00
Luke Parker
7488d23e0d
Add basic transaction/block code to Tributary
2023-04-11 13:42:18 -04:00
Luke Parker
a290b74805
Tweak processor's slice handling due to a CI failure
...
The prior code worked without issue for me locally, but apparently it didn't
always.
2023-04-11 10:37:50 -04:00
Luke Parker
61757d5e19
Remove the substrate feature from tendermint
2023-04-11 10:34:41 -04:00
Luke Parker
09f8ac37c4
Create a folder for tributary, the micro-blockchain
...
Moves tendermint again, this time under tributary.
2023-04-11 10:18:31 -04:00
Luke Parker
c46cf47736
Move tendermint under the coordinator
...
We're planning to use it in the micro-blockchain the coordinator will run.
2023-04-11 09:28:32 -04:00
Luke Parker
defce32ff1
Remove k256/p256 git revision patch
...
New releases of k256 and p256 make it no longer necessary.
2023-04-11 09:23:57 -04:00
Luke Parker
de52c4db7f
Add empty coordinator
2023-04-11 09:21:35 -04:00
Luke Parker
d74cbe2cce
Have the Scanner assign batch IDs
2023-04-11 08:47:15 -04:00
Luke Parker
caa695511b
Improve log statements in processor
2023-04-11 06:06:17 -04:00
Luke Parker
7538c10159
Update processor README
2023-04-11 05:53:19 -04:00
Luke Parker
90f2b03595
Finish routing eventualities
...
Also corrects some misc TODOs and tidies up some log statements.
2023-04-11 05:49:27 -04:00
Luke Parker
9e78c8fc9e
Test the processor's Substrate signer
2023-04-10 12:48:48 -04:00
Luke Parker
d323fc8b7b
Handle signing batches in the processor
...
Duplicates the existing signer for one tailored to batch signing.
2023-04-10 11:11:46 -04:00
Luke Parker
82c34dcc76
Implement a FROST variant of Schnorrkel ( #274 )
...
* Minor lint
* Update frost-schnorrkel to the latest modular-frost
* Tidy up the schnorrkel library
2023-04-10 06:05:17 -04:00
Luke Parker
bc19975a8a
Update Bitcoin confirmations from 3 to 6
...
While Bitcoin practically doesn't have long re-orgs, it is possible for a
single miner to build a long chain. Recently, a miner found 5 blocks in a row,
which would be enough to re-org a transaction Serai considered finalized.
2023-04-10 02:51:44 -04:00
Luke Parker
b9f38fb354
Update processor message flow around the new SignedBatch flow
2023-04-10 02:51:36 -04:00
Luke Parker
ccec529cee
cargo update
...
Removes yanked crate.
2023-04-10 00:27:17 -04:00