Luke Parker
023afaf7ce
Bulletproofs+ ( #70 )
...
* Initial stab at Bulletproofs+
Does move around the existing Bulletproofs code, does still work as
expected.
* Make the Clsag RCTPrunable type work with BP and BP+
* Initial set of BP+ bug fixes
* Further bug fixes
* Remove RING_LEN as a constant
* Monero v16 TX support
Doesn't implement view tags, nor going back to v14, nor the updated BP
clawback logic.
* Support v14 and v16 at the same time
2022-07-27 04:05:43 -05:00
Luke Parker
76a7160ea5
Correct clippy warnings
...
Currently intended to be done with:
cargo clippy --features "recommended merlin batch serialize experimental
ed25519 ristretto p256 secp256k1 multisig" -- -A clippy::type_complexity
-A dead_code
2022-07-22 02:35:17 -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
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