Luke Parker
9cc35a06ab
Add authenticated calls to Ethereum
...
Also uses numbered lists for function descriptions.
2022-07-21 23:22:48 -05:00
Luke Parker
004086b85b
Include origin as an Option in Shorthand
...
Converts (Network, Address) to Enum { Native(Address), Serai(Address) }
as it's not valid to send Bitcoin to Ethereum.
Corrects a legacy comment regarding serialization.
2022-07-21 23:22:48 -05:00
Luke Parker
ae3525ca2c
Document Instructions and various network's integrations
...
Tracking issue: https://github.com/serai-dex/serai/issues/57
2022-07-21 23:22:48 -05:00
silverpill
194c5acebb
Fix compilation errors in monero-serai
2022-07-17 16:55:49 -05:00
Luke Parker
c0cac7591d
Correct a missing fmt
2022-07-17 17:18:56 -04:00
Luke Parker
9cb2d8aa4a
Integrate ink!
2022-07-16 21:06:54 -04:00
Luke Parker
314c9cd8f7
Clean Substrate Cargo.tomls
2022-07-16 20:53:28 -04:00
Luke Parker
2bddce2087
Add a patch for zip so ethereum-serai doesn't conflict with Substrate
...
Also commits the lock file and updates documentation.
2022-07-16 17:49:35 -04:00
noot
c589743e2b
ethereum: implement schnorr verification contract deployment and related crypto ( #36 )
...
* basic schnorr verify working
* add schnorr-verify as submodule
* remove previous code
* Misc Ethereum work which will probably be disregarded
* add ecrecover hack test, worksgit add src/
* merge w develop
* starting w/ rust-web3
* trying to use ethers
* deploy_schnorr_verifier_contract finally working
* modify EthereumHram to use 27/28 for point parity
* updated address calc, solidity schnorr verify now working
* add verify failure to test
* update readme
* move ethereum/ to coins/
* un fmt coins/monero
* update .gitmodules
* fix cargo paths
* fix coins/monero
* add #[allow(non_snake_case)]
* un-fmt stuff
* move crypto to coins/ethereum
* move unit tests to ethereum/tests
* remove js, build w ethers
* update .gitignore
* address comments
* add q != 0 check
* update contract param order
* update contract license to AGPL
* update ethereum-serai license to GPL and fmt
* GPLv3 for ethereum-serai
* AGPLv3 for ethereum-serai
* actually fix license
Co-authored-by: Luke Parker <lukeparker5132@gmail.com>
2022-07-16 16:45:41 -05:00
Luke Parker
e67033a207
Apply an initial set of rustfmt rules
2022-07-16 15:16:30 -05:00
Luke Parker
0b879a53fa
Add an initial Substrate instantiation
...
Consensus has been nuked for an AcceptAny currently routed throough PoW
(when it doesn't have to be, doing so just took care of a few pieces of
leg work).
Updates AGPL handling.
2022-07-15 00:05:00 -04:00
Luke Parker
5ede5b9e8f
Update the DLEq proof for any amount of generators
...
The two-generator limit wasn't required nor beneficial. This does
theoretically optimize FROST, yet not for any current constructions. A
follow up proof which would optimize current constructions has been
noted in #38 .
Adds explicit no_std support to the core DLEq proof.
Closes #34 .
2022-07-13 23:29:48 -04:00
Luke Parker
46975812c3
Add a copy of the AGPL license text to processor/
2022-07-13 16:12:19 -04:00
Luke Parker
95a4101a9a
Tweak the hash_to_point test
...
It ran for too long and had a "test_" prefix not shared with other
tests.
2022-07-13 02:48:36 -04:00
Luke Parker
a1599df126
Update the processor for the previous commit
2022-07-13 02:48:11 -04:00
Luke Parker
6cc8ce840e
Move FROST to Read
...
Fixes https://github.com/serai-dex/serai/issues/33 and
https://github.com/serai-dex/serai/issues/35 . Also fixes a few potential
panics/DoS AFAICT.
2022-07-13 02:38:29 -04:00
Luke Parker
c0c8915698
Add missing Cargo.toml flags
2022-07-12 03:42:45 -04:00
Luke Parker
d81f6270c7
Version bump and synchronize packages
...
Uses "dleq-serai", instead of "dleq", as the dleq crate name hasn't been
transferred yet :(
2022-07-12 03:38:59 -04:00
Luke Parker
0b55fb6e06
Use a multiexp to calculate the FROST group nonce
2022-07-12 03:21:22 -04:00
Luke Parker
3e5cb5ea1f
Add the proposed IETF secp256k1 FROST vectors as NonIetf
2022-07-12 03:20:50 -04:00
Luke Parker
94f380f857
Update to FROST v7
2022-07-12 02:45:18 -04:00
Luke Parker
5eb61f3a87
Fix https://github.com/serai-dex/serai/issues/14 .
2022-07-12 01:28:01 -04:00
Luke Parker
cf28967754
Consolidate macros in dalek-ff-group
2022-07-10 16:48:08 -04:00
Luke Parker
953a873338
Implement hash_to_point in Rust
...
Closes https://github.com/serai-dex/serai/issues/32 .
2022-07-10 16:12:49 -04:00
Luke Parker
6ce506a79d
Add an implementation of Ed25519 FieldElements
2022-07-10 15:20:42 -04:00
Luke Parker
854fca3806
Close https://github.com/serai-dex/serai/issues/30 .
...
An extremely minimal subset of Monero is now all that's built, and I'm
sufficiently happy with it.
2022-07-09 21:51:39 -04:00
Luke Parker
53267a46c8
Return Timelocked instead of (Timelock, Vec<SpendableOutput>)
...
Timelocked doesn't expose the Vec yet requires calling not_locked(),
unlocked(Timelock), or ignore_timelock().
2022-07-09 18:53:52 -04:00
Luke Parker
a4cd1755a5
Document dalek-ff-group
...
Removes from_canonical_bytes, which is offered by from_repr, and
from_bytes_mod_order, which frequently leads to security issues.
Removes the pointless Compressed type.
Adds From u8/u16/u32 as they're pleasant.
2022-07-09 02:01:22 -04:00
Luke Parker
5942492519
Support transcripts with 32-byte challenges in the DLEq crate
2022-07-09 00:38:30 -04:00
Luke Parker
f8760ae021
Document the transcript library
2022-07-09 00:37:39 -04:00
Luke Parker
c5f75568cd
Add READMEs to Serai and Monero
2022-07-08 16:23:26 -04:00
Luke Parker
f50fd76b31
Fix dalek_ff_group invert
2022-07-08 16:05:17 -04:00
Luke Parker
41eaa1b124
Increase constant-time properties of from_repr/from_bytes
...
It's still not perfect, as it's Option -> CtOption which requires an
unwrap_or, but...
2022-07-08 15:30:56 -04:00
Luke Parker
a4c2f71610
Correct DLEq README column title
2022-07-07 14:28:53 -04:00
Luke Parker
f7106f09ed
Add further must_uses
2022-07-07 14:28:42 -04:00
Luke Parker
6c76458063
Statically link Monero
...
Closes https://github.com/serai-dex/serai/issues/11 .
2022-07-07 14:13:24 -04:00
Luke Parker
7d13be5797
Update Monero submodule
2022-07-07 09:53:31 -04:00
Luke Parker
b69337a3a6
Tweak DLEq README and rename the experimental_cross_group feature to just experimental
2022-07-07 09:52:10 -04:00
Luke Parker
7cbdcc8ae6
Add a comprehensive README to dleq
2022-07-07 08:36:23 -05:00
Luke Parker
72afcf1f06
Mark cross_group as experimental
...
While all of Serai can be argued as experimental, the DLEq proof is
especially so, as it's lacking any formal proofs over its theory.
Also adds doc(hidden) to the generic DLEqProof, now prefixed with __.
2022-07-07 08:36:23 -05:00
Luke Parker
4dbf50243b
Fix serialization
...
This enabled getting the proof sizes, which are:
- ConciseLinear had a proof size of 44607 bytes
- CompromiseLinear had a proof size of 48765 bytes
- ClassicLinear had a proof size of 56829 bytes
- EfficientLinear had a proof size of 65145 byte
2022-07-07 08:36:23 -05:00
Luke Parker
c3a0e0375d
Save an inversion on AOS verification
...
Incredibly minor, just nagged me
2022-07-07 08:36:23 -05:00
Luke Parker
44e0a41ca1
Add Classic/Compromise DLEqs and a benchmark
...
Formatted results from my laptop:
EfficientLinear had a average prove time of 188ms
EfficientLinear had a average verify time of 126ms
CompromiseLinear had a average prove time of 176ms
CompromiseLinear had a average verify time of 141ms
ConciseLinear had a average prove time of 191ms
ConciseLinear had a average verify time of 160ms
ClassicLinear had a average prove time of 214ms
ClassicLinear had a average verify time of 159ms
There is a decent error margin here. Concise is a drop-in replacement
for Classic, in practice *not* theory. Efficient is optimal for
performance, yet largest. Compromise is a middleground.
2022-07-07 08:36:23 -05:00
Luke Parker
1a2e6dc5cf
Consolidate concise/efficient and clean
2022-07-07 08:36:23 -05:00
Luke Parker
7d80b6e854
Fix multiexp for debug as well
...
Oversight on my end.
2022-07-07 08:36:23 -05:00
Luke Parker
9f8d1aa220
Clean AOS signatures
2022-07-07 08:36:23 -05:00
Luke Parker
fd817a6958
Fix multiexp for 0-length batches
2022-07-07 08:36:23 -05:00
Luke Parker
26cee46950
Add a batch verified DLEq
...
The batch verified one offers ~23% faster verification. While this
massively refactors for modularity, I'm still not happy with the DLEq
proofs at the top level, nor am I happy with the AOS signatures. I'll
work on cleaning them up more later.
2022-07-07 08:36:23 -05:00
Luke Parker
fe9a8d9495
Add must_use to the BatchVerifier's verify -> bool functions
2022-07-05 19:11:31 -04:00
Luke Parker
0ff5ee8292
Correct e_0 to actually be e_0
2022-07-05 15:14:04 -04:00