Luke Parker
6d5049cab2
Move the task providing transactions onto the Tributary to the Tributary module
...
Slims down the main file a bit
2025-01-11 02:13:23 -05:00
Luke Parker
1419ba570a
Route from tributary scanner to message-queue
2025-01-11 01:55:36 -05:00
Luke Parker
542bf2170a
Provide Cosign/CosignIntent for Tributaries
2025-01-11 01:31:28 -05:00
Luke Parker
378d6b90cf
Delete old Tributaries on reboot
2025-01-10 20:10:05 -05:00
Luke Parker
cbe83956aa
Flesh out Coordinator main
...
Lot of TODOs as the APIs are all being routed together.
2025-01-10 02:24:24 -05:00
Luke Parker
091d485fd8
Have the Tributary scanner DB be distinct from the cosign DB
...
Allows deleting the entire Tributary scanner DB upon retiry.
2025-01-10 02:22:58 -05:00
Luke Parker
2a3eaf4d7e
Wrap the entire Libp2p object in an Arc
...
Makes `Clone` calls significantly cheaper as now only the outer Arc is cloned
(the inner ones have been removed). Also wraps uses of Serai in an Arc as we
shouldn't actually need/want multiple caller connection pools.
2025-01-10 01:26:07 -05:00
Luke Parker
23122712cb
Document validator jailing upon participation failures and slash report determination
...
These are TODOs. I just wanted to ensure this was written down and each seemed
too small for GH issues.
2025-01-09 19:50:39 -05:00
Luke Parker
47eb793ce9
Slash upon Tendermint evidence
...
Decoding slash evidence requires specifying the instantiated generic
`TendermintNetwork`. While irrelevant, that generic includes a type satisfying
`tributary::P2p`. It was only possible to route now that we've redone the P2P
API.
2025-01-09 06:58:00 -05:00
Luke Parker
9b0b5fd1e2
Have serai-cosign index finalized blocks' numbers
2025-01-09 06:57:26 -05:00
Luke Parker
893a24a1cc
Better document bounds in serai-coordinator-p2p
2025-01-09 06:57:12 -05:00
Luke Parker
b101e2211a
Complete serai-coordinator-p2p
2025-01-09 06:23:14 -05:00
Luke Parker
201a444e89
Remove tokio dependency from serai-coordinator-p2p
...
Re-implements tokio::mpsc::oneshot with a thin wrapper around async-channel.
Also replaces futures-util with futures-lite.
2025-01-09 02:16:05 -05:00
Luke Parker
9833911e06
Promote Request::Heartbeat from an enum variant to a struct
2025-01-09 01:41:42 -05:00
Luke Parker
465e8498c4
Make the coordinator's P2P modules their own crates
2025-01-09 01:26:25 -05:00
Luke Parker
adf20773ac
Add libp2p module documentation
2025-01-09 00:40:07 -05:00
Luke Parker
295c1bd044
Document improper handling of session rotation in P2P allow list
2025-01-09 00:16:45 -05:00
Luke Parker
dda6e3e899
Limit each peer to one connection
...
Prevents dialing the same peer multiple times (successfully).
2025-01-09 00:06:51 -05:00
Luke Parker
75a00f2a1a
Add allow_block_list to libp2p
...
The check in validators prevented connections from non-validators.
Non-validators could still participate in the network if they laundered their
connection through a malicious validator. allow_block_list ensures that peers,
not connections, are explicitly limited to validators.
2025-01-08 23:54:27 -05:00
Luke Parker
6cde2bb6ef
Correct and document topic subscription
2025-01-08 23:16:04 -05:00
Luke Parker
20326bba73
Replace KeepAlive with ping
...
This is more standard and allows measuring latency.
2025-01-08 23:01:36 -05:00
Luke Parker
ce83b41712
Finish mapping Libp2p to the P2p trait API
2025-01-08 19:39:09 -05:00
Luke Parker
b2bd5d3a44
Remove Debug bound on tributary::P2p
2025-01-08 17:40:32 -05:00
Luke Parker
de2d6568a4
Actually implement the Peer abstraction for Libp2p
2025-01-08 17:40:08 -05:00
Luke Parker
fd9b464b35
Add a trait for the P2p network used in the coordinator
...
Moves all of the Libp2p code to a dedicated directory. Makes the Heartbeat task
abstract over any P2p network.
2025-01-08 17:01:37 -05:00
Luke Parker
376a66b000
Remove async-trait from tendermint-machine, tributary-chain
2025-01-08 16:41:11 -05:00
Luke Parker
2121a9b131
Spawn the task to select validators to dial
2025-01-07 18:17:36 -05:00
Luke Parker
419223c54e
Build the swarm
...
Moves UpdateSharedValidatorsTask to validators.rs. While prior planned to
re-use a validators object across connecting and peer state management, the
current plan is to use an independent validators object for each to minimize
any contention. They should be built infrequently enough, and cheap enough to
update in the majority case (due to quickly checking if an update is needed),
that this is fine.
2025-01-07 18:09:25 -05:00
Luke Parker
a731c0005d
Finish routing our own channel abstraction around the Swarm event stream
2025-01-07 16:51:56 -05:00
Luke Parker
f27e4e3202
Move the WIP SwarmTask to its own file
2025-01-07 16:34:19 -05:00
Luke Parker
f55165e016
Add channels to send requests/recv responses
2025-01-07 15:51:15 -05:00
Luke Parker
d9e9887d34
Run the dial task whenever we have a peer disconnect
2025-01-07 15:36:42 -05:00
Luke Parker
82e753db30
Document risk of eclipse in the dial task
2025-01-07 15:35:34 -05:00
Luke Parker
052388285b
Remove TaskHandle::close
...
TaskHandle::close meant run_now may panic if the task was closed. Now, tasks
are only closed when all handles are dropped, causing all handles to point to
running tasks (ensuring run_now won't panic).
2025-01-07 15:26:41 -05:00
Luke Parker
47a4e534ef
Update serai-processor-signers to VariantSignid::Batch([u8; 32])
2025-01-07 15:26:23 -05:00
Luke Parker
257f691277
Start filling out message handling in SwarmTask
2025-01-05 01:23:28 -05:00
Luke Parker
c6d0fb477c
Inline noise into OnlyValidators
...
libp2p does support (noise, OnlyValidators) but it'll interpret it as either,
not a chain. This will act as the desired chain.
2025-01-05 00:55:25 -05:00
Luke Parker
96518500b1
Don't hold the shared Validators write lock while making requests to Serai
2025-01-05 00:29:11 -05:00
Luke Parker
2b8f481364
Parallelize requests within Validators::update
2025-01-05 00:17:05 -05:00
Luke Parker
479ca0410a
Add commentary on the use of FuturesOrdered
2025-01-04 23:28:54 -05:00
Luke Parker
9a5a661d04
Start on the task to manage the swarm
2025-01-04 23:28:29 -05:00
Luke Parker
3daeea09e6
Only let active Serai validators connect over P2P
2025-01-04 22:21:23 -05:00
Luke Parker
a64e2004ab
Dial new peers when we don't have the target amount
2025-01-04 18:04:24 -05:00
Luke Parker
f9f6d40695
Use Serai validator keys as PeerIds
2025-01-04 18:03:37 -05:00
Luke Parker
4836c1676b
Don't consider the Serai set in the cosigning protocol
...
The Serai set SHOULD be banned from setting keys so this SHOULD be unreachable.
It's now explicitly unreachable.
2025-01-04 13:52:17 -05:00
Luke Parker
985261574c
Add gossip behavior back to the coordinator
2025-01-03 14:00:20 -05:00
Luke Parker
3f3b0255f8
Tweak heartbeat task to run less often if there's no progress to be made
2025-01-03 13:59:14 -05:00
Luke Parker
5fc8500f8d
Add task to heartbeat a tributary to the P2P code
2025-01-03 13:04:27 -05:00
Luke Parker
49c221cca2
Restore request-response code to the coordinator
2025-01-03 13:02:50 -05:00
Luke Parker
906e2fb669
Start cosigning on Cosign or Cosigned, not just on Cosigned
2025-01-03 10:30:39 -05:00