Commit Graph

335 Commits

Author SHA1 Message Date
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
46975812c3 Add a copy of the AGPL license text to processor/ 2022-07-13 16:12:19 -04:00
Luke Parker
a1599df126 Update the processor for the previous commit 2022-07-13 02:48:11 -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
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
daadb43875 Minor doc updates 2022-07-02 11:04:01 -04:00
Luke Parker
3de7a76051 Use GroupEncoding instead of Curve's from_slice/to_bytes
Increases usage of standardization while expanding dalek_ff_group.

Closes https://github.com/serai-dex/serai/issues/26 by moving 
dfg::EdwardsPoint to only be for the prime subgroup.
2022-06-28 01:25:26 -04:00
Luke Parker
ac17645fc8 Rename MultisigParams/MultisigKeys/MultisigView to Frost* 2022-06-28 00:09:41 -04:00
Luke Parker
7c86e4593a Implement Guaranteed Addresses
Closes https://github.com/serai-dex/serai/issues/27.

monero-rs is now solely used for Extra encoding.
2022-06-28 00:01:20 -04:00
Luke Parker
7b70baaa96 Rename transcript-trait to flexible-transcript
It offers the trait for flexibility, yet it also offers an incredibly 
competent (and logical) transcript format, along with a Merlin wrapper.
2022-06-27 09:02:21 -04:00
Luke Parker
020d246b8f Reorganize processor's handling of coins 2022-06-24 19:53:41 -04:00
Luke Parker
60254a0171 Reorganize FROST's handling of curves 2022-06-24 19:47:19 -04:00
Luke Parker
a46524f0ce Supply a RecommendedTranscript type of DT<Blake2b512> 2022-06-24 18:58:24 -04:00
Luke Parker
1caa6a9606 Enforce FROST StateMachine progression via the type system
A comment on the matter was made in 
https://github.com/serai-dex/serai/issues/12. While I do believe the API 
is slightly worse, I appreciate the explicitness.
2022-06-24 08:40:14 -04:00
Luke Parker
b6ea654823 Update the processor to use the coin's specified fee 2022-06-19 12:19:32 -04:00
Luke Parker
71fca06120 Correct monero/processor dependencies 2022-06-19 07:52:03 -04:00
Luke Parker
b4c1adcdfb Rename FROST's official package name and update documentation 2022-06-19 05:21:22 -04:00
Luke Parker
32473d9976 Route networking through Wallet, not Coin 2022-06-10 09:36:07 -04:00
Luke Parker
4b8822cb74 Clean input/output handling
These individual functions should be much easier to test, more legible, 
more robust, and adds additional functionality to obtain the best fit.
2022-06-10 09:12:27 -04:00
Luke Parker
8e8bfabc83 Make processor's test for an arbitrary coin, instead of just Monero 2022-06-09 04:34:31 -04:00
Luke Parker
75fb9b3198 Correct input/output selection
Payments weren't properly selected, as it'd drain a sequential series 
instead of the specified set, and inputs had a memory condition Rust 
couldn't prove was safe.
2022-06-09 04:34:15 -04:00
Luke Parker
27751d8d98 Successfully get processor to send a transaction out
Modifies FROST behavior so group_key has the offset applied regardless 
of if view was called. The unaltered secret_share and 
verification_shares (as they have differing values depending on the 
signing set) are no longer publicly accessible.
2022-06-09 02:48:53 -04:00
Luke Parker
5313210526 Monero prepare_send 2022-06-05 15:10:50 -04:00
Luke Parker
a46432b829 Add a proper database trait 2022-06-05 06:00:21 -04:00
Luke Parker
3617ed4eb7 Use const values for our traits where we can 2022-06-03 23:22:08 -04:00
Luke Parker
b83ca7d666 Implement a basic TX IO selector algorithm 2022-06-03 22:46:48 -04:00
Luke Parker
e4fc469e58 Use a transcript when generating the per-chain binding for a given set of keys
While it was fine as-is, as it only had one variable length property, 
this is a bit more robust. Also binds the Curve ID, which should declare 
differently even for just different basepoints, and therefore adds two 
variable length properties (justifying the transcript).
2022-06-03 01:37:12 -04:00
Luke Parker
dfd2f624ee Implement a proper Monero Timelock type
Transaction scanning now returns the timelock to ensure it's 
acknowledged by wallets.

Fixes https://github.com/serai-dex/serai/issues/16.
2022-06-02 00:00:26 -04:00
Luke Parker
df2876dbd4 Acknowledge Substrate's ordering and move to a multi-key wallet setup 2022-06-01 03:30:57 -04:00
Luke Parker
d8e794871c Move the processor to AGPL
See https://github.com/serai-dex/serai/issues/13.
2022-06-01 01:58:07 -04:00
Luke Parker
b5bdb545cc Add basic key management to the processor 2022-05-28 19:57:10 -04:00
Luke Parker
e982908690 Update the Monero max inputs with according documentation 2022-05-28 05:25:00 -04:00
Luke Parker
92098b24ea Implement get_outputs_in_block for Monero
Uses a dummy view/spend for now, as we don't have wallet management yet.
2022-05-28 05:24:17 -04:00
Luke Parker
c398b246ff Add the bones of the processor 2022-05-26 04:36:19 -04:00