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.
Find a file
Luke Parker af86b7a499
Support caching preprocesses in FROST (#190)
* Remove the explicit included participants from FROST

Now, whoever submits preprocesses becomes the signing set. Better separates
preprocess from sign, at the cost of slightly more annoying integrations
(Monero needs to now independently lagrange/offset its key images).

* Support caching preprocesses

Closes https://github.com/serai-dex/serai/issues/40.

I *could* have added a serialization trait to Algorithm and written a ton of
data to disk, while requiring Algorithm implementors also accept such work.
Instead, I moved preprocess to a seeded RNG (Chacha20) which should be as
secure as the regular RNG. Rebuilding from cache simply loads the previously
used Chacha seed, making the Algorithm oblivious to the fact it's being
rebuilt from a cache. This removes any requirements for it to be modified
while guaranteeing equivalency.

This builds on the last commit which delayed determining the signing set till
post-preprocess acquisition. Unfortunately, that commit did force preprocess
from ThresholdView to ThresholdKeys which had visible effects on Monero.

Serai will actually need delayed set determination for #163, and overall,
it remains better, hence it's inclusion.

* Document FROST preprocess caching

* Update ethereum to new FROST

* Fix bug in Monero offset calculation and update processor
2022-12-08 19:04:35 -05:00
.github Run cargo deny daily 2022-12-02 13:38:30 -05:00
coins Support caching preprocesses in FROST (#190) 2022-12-08 19:04:35 -05:00
common/zalloc Comment the allocator feature 2022-11-11 01:23:35 -05:00
contracts Fill out Cargo.tomls 2022-10-15 23:46:22 -04:00
crypto Support caching preprocesses in FROST (#190) 2022-12-08 19:04:35 -05:00
deploy Initial Tendermint implementation (#145) 2022-12-03 18:38:02 -05:00
docs Support caching preprocesses in FROST (#190) 2022-12-08 19:04:35 -05:00
processor Support caching preprocesses in FROST (#190) 2022-12-08 19:04:35 -05:00
substrate Update runtime commentary in Tendermint 2022-12-05 09:04:50 -05:00
.gitattributes Cluster Orchestration with Docker Compose (#114) 2022-09-12 15:01:14 -05:00
.gitignore fix for #166 & cleanup (#184) 2022-12-07 10:08:04 -05:00
.rustfmt.toml Apply an initial set of rustfmt rules 2022-07-16 15:16:30 -05:00
AGPL-3.0 Add an initial Substrate instantiation 2022-07-15 00:05:00 -04:00
Cargo.lock Support caching preprocesses in FROST (#190) 2022-12-08 19:04:35 -05:00
Cargo.toml Initial Tendermint implementation (#145) 2022-12-03 18:38:02 -05:00
CONTRIBUTING.md Clarify identation policy 2022-10-11 00:40:50 -05:00
deny.toml Initial Tendermint implementation (#145) 2022-12-03 18:38:02 -05:00
LICENSE Clarify licensing per https://github.com/serai-dex/serai/issues/13 2022-08-25 04:02:13 -04:00
README.md Add getting started link to main readme. 2022-10-31 11:35:21 -05:00

Serai

Serai is a new DEX, built from the ground up, initially planning on listing Bitcoin, Ethereum, Monero, DAI, and USDC, offering a liquidity pool trading experience. Funds are stored in an economically secured threshold multisig wallet.

Getting Started

Layout

  • docs: Documentation on the Serai protocol.

  • crypto: A series of composable cryptographic libraries built around the ff/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.

  • processor: A generic chain processor to process data for Serai and process events from Serai, executing transactions as expected and needed.

  • contracts: Smart Contracts implementing Serai's functionality.

  • substrate: Substrate crates used to instantiate the Serai network.