6a172825aa
* Schedule re-attempts and add a (not filled out) match statement to actually execute them A comment explains the methodology. To copy it here: """ This is because we *always* re-attempt any protocol which had participation. That doesn't mean we *should* re-attempt this protocol. The alternatives were: 1) Note on-chain we completed a protocol, halting re-attempts upon 34%. 2) Vote on-chain to re-attempt a protocol. This schema doesn't have any additional messages upon the success case (whereas alternative #1 does) and doesn't have overhead (as alternative #2 does, sending votes and then preprocesses. This only sends preprocesses). """ Any signing protocol which reaches sufficient participation will be re-attempted until it no longer does. * Have the Substrate scanner track DKG removals/completions for the Tributary code * Don't keep trying to publish a participant removal if we've already set keys * Pad out the re-attempt match a bit more * Have CosignEvaluator reload from the DB * Correctly schedule cosign re-attempts * Actuall spawn new DKG removal attempts * Use u32 for Batch ID in SubstrateSignableId, finish Batch re-attempt routing The batch ID was an opaque [u8; 5] which also included the network, yet that's redundant and unhelpful. * Clarify a pair of TODOs in the coordinator * Remove old TODO * Final comment cleanup * Correct usage of TARGET_BLOCK_TIME in reattempt scheduler It's in ms and I assumed it was in s. * Have coordinator tests drop BatchReattempts which aren't relevant yet may exist * Bug fix and pointless oddity removal We scheduled a re-attempt upon receiving 2/3rds of preprocesses and upon receiving 2/3rds of shares, so any signing protocol could cause two re-attempts (not one more). The coordinator tests randomly generated the Batch ID since it was prior an opaque byte array. While that didn't break the test, it was pointless and did make the already-succeeded check before re-attempting impossible to hit. * Add log statements, correct dead-lock in coordinator tests * Increase pessimistic timeout on recv_message to compensate for tighter best-case timeouts * Further bump timeout by a minute AFAICT, GH failed by just a few seconds. This also is worst-case in a single instance, making it fine to be decently long. * Further further bump timeout due to lack of distinct error |
||
---|---|---|
.github | ||
audits | ||
coins | ||
common | ||
coordinator | ||
crypto | ||
docs | ||
message-queue | ||
mini | ||
orchestration | ||
processor | ||
substrate | ||
tests | ||
.gitattributes | ||
.gitignore | ||
.rustfmt.toml | ||
AGPL-3.0 | ||
Cargo.lock | ||
Cargo.toml | ||
CONTRIBUTING.md | ||
deny.toml | ||
LICENSE | ||
README.md | ||
rust-toolchain.toml |
Serai
Serai is a new DEX, built from the ground up, initially planning on listing Bitcoin, Ethereum, DAI, and Monero, offering a liquidity-pool-based trading experience. Funds are stored in an economically secured threshold-multisig wallet.
Layout
-
audits
: Audits for various parts of Serai. -
docs
: Documentation on the Serai protocol. -
common
: Crates containing utilities common to a variety of areas under Serai, none neatly fitting under another category. -
crypto
: A series of composable cryptographic libraries built around theff
/group
APIs, achieving a variety of tasks. These range from generic infrastructure, to our IETF-compliant FROST implementation, to a DLEq proof as needed for Bitcoin-Monero atomic swaps. -
coins
: Various coin libraries intended for usage in Serai yet also by the wider community. This means they will always support the functionality Serai needs, yet won't disadvantage other use cases when possible. -
message-queue
: An ordered message server so services can talk to each other, even when the other is offline. -
processor
: A generic chain processor to process data for Serai and process events from Serai, executing transactions as expected and needed. -
coordinator
: A service to manage processors and communicate over a P2P network with other validators. -
substrate
: Substrate crates used to instantiate the Serai network. -
orchestration
: Dockerfiles and scripts to deploy a Serai node/test environment. -
tests
: Tests for various crates. Generally,crate/src/tests
is used, orcrate/tests
, yet any tests requiring crates' binaries are placed here.
Security
Serai hosts a bug bounty program via Immunefi. For in-scope critical vulnerabilities, we will reward whitehats with up to $30,000.
Anything not in-scope should still be submitted through Immunefi, with rewards issued at the discretion of the Immunefi program managers.
Links
- Website: https://serai.exchange/
- Immunefi: https://immunefi.com/bounty/serai/
- Twitter: https://twitter.com/SeraiDEX
- Mastodon: https://cryptodon.lol/@serai
- Discord: https://discord.gg/mpEUtJR3vz
- Matrix: https://matrix.to/#/#serai:matrix.org
- Reddit: https://www.reddit.com/r/SeraiDEX/
- Telegram: https://t.me/SeraiDEX