Commit Graph

872 Commits

Author SHA1 Message Date
Luke Parker
2bbd545704 Only pull in things only needed for experimental when experimental 2023-07-03 12:38:36 -04:00
Luke Parker
733a5c1f8a Write a new impl of the merkle algorithm
This one tries to be understandable.
2023-07-03 12:33:19 -04:00
Luke Parker
2b190851a7 Correct comments 2023-07-03 12:06:52 -04:00
Luke Parker
0453bfb4b2 Mark legacy EcdhInfo amount decryption as experimental 2023-07-03 10:25:57 -04:00
Luke Parker
15546b6e27 Tidy Borromean, fix bugs in last commit, replace todo! with unreachable! 2023-07-03 10:15:56 -04:00
Luke Parker
c20f85da64 Tidy block.rs 2023-07-03 09:45:30 -04:00
Luke Parker
6d90c8b4f9 Merge branch 'develop' into HEAD
Also updates monero-generators per comments in
https://github.com/serai-dex/serai/pull/308.
2023-07-03 09:02:27 -04:00
Luke Parker
d49c636f0f Use serai- prefixes on Serai-specific packages
Fixes deny.toml, also runs a minor cargo update shrinking the tree.
2023-07-03 08:50:23 -04:00
Boog900
30834fe4d2 std-shims: six Read for &[u8] 2023-07-03 07:13:06 -04:00
GitHub Actions
d928b787f7 Update nightly 2023-07-03 07:10:53 -04:00
Luke Parker
c7b232949a Correct deny.toml with inclusion of message-queue 2023-07-03 07:09:35 -04:00
Luke Parker
acf2469dd8 cargo update
Resolves https://github.com/serai-dex/serai/security/dependabot/29
2023-07-01 20:27:03 -04:00
Luke Parker
6267acf3df Add a message queue
This is intended to be a reliable transport between the processors and
coordinator. Since it'll be intranet only, it's written as never fail.

Primarily needs testing and a proper ID.
2023-07-01 08:53:46 -04:00
Luke Parker
a95ecc2512 Represent RCT amounts with None, not 0.
Fixes #282.

Does allow any v1 TXs which exist, and v2 miner-TXs, to specify Some(0). As far
as I can tell, both were/are theoreitcally possible.
2023-06-29 13:16:51 -04:00
Luke Parker
ac708b3b2a no-std support for monero-serai (#311)
* Move monero-serai from std to std-shims, where possible

* no-std fixes

* Make the HttpRpc its own feature, thiserror only on std

* Drop monero-rs's epee for a homegrown one

We only need it for a single function. While I tried jeffro's, it didn't work
out of the box, had three unimplemented!s, and is no where near viable for
no_std.

Fixes #182, though should be further tested.

* no-std monero-serai

* Allow base58-monero via git

* cargo fmt
2023-06-29 04:14:29 -04:00
Luke Parker
d25c668ee4 Replace lazy_static with OnceLock inside monero-serai
lazy_static, if no_std environments were used, effectively required always
using spin locks. This resolves the ergonomics of that while adopting Rust std
code.

no_std does still use a spin based solution. Theoretically, we could use
atomics, yet writing our own Mutex wasn't a priority.
2023-06-28 21:45:57 -04:00
GitHub Actions
8ced63eaac Update nightly 2023-06-28 18:42:19 -04:00
Luke Parker
f6a497f3ac Slight terminology correction in sync test
Also correct a mistake from merging the most recent polkadot version.
2023-06-28 15:20:50 -04:00
akildemir
790fe7ee23 fix tributary sync test 2023-06-28 15:01:55 -04:00
Luke Parker
8c020abb86 Update to substrate polkadot-v0.9.43 2023-06-28 14:57:58 -04:00
Luke Parker
21f0bb2721 Pin setup-protoc to v2.0.0 2023-06-28 12:28:14 -04:00
Luke Parker
385ed2e97a Build no-std tests with RISC-V 32 IMAC
Turns out wasm still has std, making it suboptimal to use here.
2023-06-28 12:26:53 -04:00
Boog900
02750193f3 Add MgSig proving 2023-06-26 00:26:30 +01:00
Boog900
e4a615aa76 update MLSAG, ss2_elements will always be 2 2023-06-23 23:29:43 +01:00
Boog900
c1a2aafc83 fmt & clippy :) 2023-06-23 17:58:33 +01:00
Boog900
d1656d378e Add MLSAG verifying functionality 2023-06-23 13:29:59 +01:00
Boog900
ac30e3afaa Add Borromean range proof verifying functionality 2023-06-23 12:23:33 +01:00
Luke Parker
fca567f61d cargo update
Resolves an openssl advisory and nets ~-8 crates.
2023-06-22 06:25:33 -04:00
Luke Parker
dfa3106a38 Fix incorrect sig_hash generation
sig_hash was used as a challenge. challenges should be of the form H(R, A, m).
These sig hashes were solely H(A, m), allowing trivial forgeries.
2023-06-08 06:38:25 -04:00
Boog900
71ffcc8ef7 fix for the jokester that added unreduced scalars
to the borromean signature of
2368d846e671bf79a1f84c6d3af9f0bfe296f043f50cf17ae5e485384a53707b
2023-05-31 23:06:06 +01:00
Boog900
4a2f512b8d add block hash calculations 2023-05-31 20:44:11 +01:00
Boog900
f81f5c386d add borromean + fix mlsag 2023-05-31 19:32:47 +01:00
Luke Parker
c6982b5dfc Ensure canonical points in the cross-group DLEq proof 2023-05-30 22:05:52 -04:00
Boog900
d8b8ce9837 fix non-miner v1 txs 2023-05-30 21:05:45 +01:00
Boog900
eb7058801c fix miner v1 txs 2023-05-30 19:24:15 +01:00
Boog900
b014a78e3c fix last commit 2023-05-30 17:29:25 +01:00
Boog900
76f5c23b7f add mlsag 2023-05-30 16:29:57 +01:00
Luke Parker
1aa293cc4a Fix for prior commit 2023-05-27 04:15:57 -04:00
Luke Parker
8a24fc39a6 Only scan v2 Monero TXs 2023-05-27 04:13:40 -04:00
Luke Parker
40b2920412 Remove signed Substrate TXs from Coordinator 2023-05-13 22:43:13 -04:00
Luke Parker
47f8766da6 Use proper messages for ValidatorSets/InInstructions pallet
Provides a DST, and associated metadata as beneficial.

Also utilizes MuSig's context to session-bind. Since set_keys_messages also
binds to set, this is semi-redundant, yet that's appreciated.
2023-05-13 04:40:16 -04:00
Luke Parker
663b5f4b50 Add a context to MuSig key aggregation 2023-05-13 04:04:14 -04:00
Luke Parker
227176e4b8 Correct various no_std definitions 2023-05-13 04:03:56 -04:00
Luke Parker
f069567f12 Use a MuSig signature to publish validator set key pairs to Serai
The processor/coordinator flow still has to be rewritten.
2023-05-13 02:15:41 -04:00
Luke Parker
84c2d73093 Do the minimal amount of work for dkg to compile under no-std
The Substrate runtime requires access to the MuSig key aggregation function.

\#279 related.
2023-05-12 23:25:17 -04:00
Luke Parker
4d50b6892c Add a dedicated function to get a MuSig key 2023-05-11 03:21:54 -04:00
Luke Parker
3eade48a6f cargo update
Resolves a yanked crate and removes some duplicated dependencies.
2023-05-10 07:34:07 -04:00
Luke Parker
89974c529a Correct 2/3rds definitions throughout the codebase
The prior formula failed for some values, such as 20.
20 / 3 = 6, * 2 = 12, + 1 = 13. 13 is 65%, not >= 67.
2023-05-10 06:29:21 -04:00
Luke Parker
ffea02dfbf Implement MuSig key aggregation into DKG
Isn't spec compliant due to the lack of a spec to be compliant too.

Slight deviation from the paper by using a unique list instead of a multiset.

Closes #186, progresses #277.
2023-05-10 06:25:40 -04:00
Luke Parker
f55e9b40e6 Have coordinator publish batches to Substrate 2023-05-10 01:46:20 -04:00