mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 12:19:24 +00:00
* add mlsag * fix last commit * fix miner v1 txs * fix non-miner v1 txs * add borromean + fix mlsag * add block hash calculations * fix for the jokester that added unreduced scalars to the borromean signature of 2368d846e671bf79a1f84c6d3af9f0bfe296f043f50cf17ae5e485384a53707b * Add Borromean range proof verifying functionality * Add MLSAG verifying functionality * fmt & clippy :) * update MLSAG, ss2_elements will always be 2 * Add MgSig proving * Tidy block.rs * Tidy Borromean, fix bugs in last commit, replace todo! with unreachable! * Mark legacy EcdhInfo amount decryption as experimental * Correct comments * Write a new impl of the merkle algorithm This one tries to be understandable. * Only pull in things only needed for experimental when experimental * Stop caching the Monero block hash now in processor that we have Block::hash * Corrections for recent processor commit * Use a clearer algorithm for the merkle Should also be more efficient due to not shifting as often. * Tidy Mlsag * Remove verify_rct_* from Mlsag Both methods were ports from Monero, overtly specific without clear documentation. They need to be added back in, with documentation, or included in a node which provides the necessary further context for them to be naturally understandable. * Move mlsag/mod.rs to mlsag.rs This should only be a folder if it has multiple files. * Replace EcdhInfo terminology The ECDH encrypted the amount, yet this struct contained the encrypted amount, not some ECDH. Also corrects the types on the original EcdhInfo struct. * Correct handling of commitment masks when scanning * Route read_array through read_raw_vec * Misc lint * Make a proper RctType enum No longer caches RctType in the RctSignatures as well. * Replace Vec<Bulletproofs> with Bulletproofs Monero uses aggregated range proofs, so there's only ever one Bulletproof. This is enforced with a consensus rule as well, making this safe. As for why Monero uses a vec, it's probably due to the lack of variadic typing used. Its effectively an Option for them, yet we don't need an Option since we do have variadic typing (enums). * Add necessary checks to Eventuality re: supported protocols * Fix for block 202612 and fix merkel root calculations * MLSAG (de)serialisation fix ss_2_elements will not always be 2 as rct type 1 transactions are not enforced to have one input * Revert "MLSAG (de)serialisation fix" This reverts commit5e710e0c96. here it checks number of MGs == number of inputs:0a1eaf26f9/src/cryptonote_core/tx_verification_utils.cpp (L60-59)and here it checks for RctTypeFull number of MGs == 1:0a1eaf26f9/src/ringct/rctSigs.cpp (L1325)so number of inputs == 1 so ss_2_elements == 2 * update `MlsagAggregate` comment * cargo update Resolves a yanked crate * Move location of serai-client in Cargo.toml --------- Co-authored-by: Luke Parker <lukeparker5132@gmail.com>
104 lines
3.5 KiB
TOML
104 lines
3.5 KiB
TOML
[package]
|
|
name = "monero-serai"
|
|
version = "0.1.4-alpha"
|
|
description = "A modern Monero transaction library"
|
|
license = "MIT"
|
|
repository = "https://github.com/serai-dex/serai/tree/develop/coins/monero"
|
|
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
|
|
edition = "2021"
|
|
|
|
[package.metadata.docs.rs]
|
|
all-features = true
|
|
rustdoc-args = ["--cfg", "docsrs"]
|
|
|
|
[dependencies]
|
|
std-shims = { path = "../../common/std-shims", version = "0.1", default-features = false }
|
|
|
|
async-trait = { version = "0.1", default-features = false }
|
|
thiserror = { version = "1", optional = true }
|
|
|
|
zeroize = { version = "^1.5", default-features = false, features = ["zeroize_derive"] }
|
|
subtle = { version = "^2.4", default-features = false }
|
|
|
|
rand_core = { version = "0.6", default-features = false }
|
|
# Used to send transactions
|
|
rand = { version = "0.8", default-features = false }
|
|
rand_chacha = { version = "0.3", default-features = false }
|
|
# Used to select decoys
|
|
rand_distr = { version = "0.4", default-features = false }
|
|
|
|
crc = { version = "3", default-features = false }
|
|
sha3 = { version = "0.10", default-features = false }
|
|
|
|
curve25519-dalek = { version = "^3.2", default-features = false }
|
|
|
|
# Used for the hash to curve, along with the more complicated proofs
|
|
group = { version = "0.13", default-features = false }
|
|
dalek-ff-group = { path = "../../crypto/dalek-ff-group", version = "0.3", default-features = false }
|
|
multiexp = { path = "../../crypto/multiexp", version = "0.3", default-features = false, features = ["batch"] }
|
|
|
|
# Needed for multisig
|
|
transcript = { package = "flexible-transcript", path = "../../crypto/transcript", version = "0.3", default-features = false, features = ["recommended"], optional = true }
|
|
dleq = { path = "../../crypto/dleq", version = "0.3", features = ["serialize"], optional = true }
|
|
frost = { package = "modular-frost", path = "../../crypto/frost", version = "0.7", features = ["ed25519"], optional = true }
|
|
|
|
monero-generators = { path = "generators", version = "0.3", default-features = false }
|
|
|
|
futures = { version = "0.3", default-features = false, features = ["alloc"], optional = true }
|
|
|
|
hex-literal = "0.4"
|
|
hex = { version = "0.4", default-features = false, features = ["alloc"] }
|
|
serde = { version = "1", default-features = false, features = ["derive"] }
|
|
serde_json = { version = "1", default-features = false, features = ["alloc"] }
|
|
|
|
base58-monero = { version = "1", git = "https://github.com/monero-rs/base58-monero", rev = "5045e8d2b817b3b6c1190661f504e879bc769c29", default-features = false, features = ["check"] }
|
|
|
|
# Used for the provided RPC
|
|
digest_auth = { version = "0.3", optional = true }
|
|
reqwest = { version = "0.11", features = ["json"], optional = true }
|
|
|
|
[build-dependencies]
|
|
dalek-ff-group = { path = "../../crypto/dalek-ff-group", version = "0.3", default-features = false }
|
|
monero-generators = { path = "generators", version = "0.3", default-features = false }
|
|
|
|
[dev-dependencies]
|
|
tokio = { version = "1", features = ["full"] }
|
|
monero-rpc = "0.3"
|
|
|
|
frost = { package = "modular-frost", path = "../../crypto/frost", version = "0.7", features = ["tests"] }
|
|
|
|
[features]
|
|
std = [
|
|
"std-shims/std",
|
|
|
|
"thiserror",
|
|
|
|
"zeroize/std",
|
|
"subtle/std",
|
|
|
|
"rand_core/std",
|
|
"rand_chacha/std",
|
|
"rand/std",
|
|
"rand_distr/std",
|
|
|
|
"sha3/std",
|
|
|
|
"curve25519-dalek/std",
|
|
|
|
"multiexp/std",
|
|
|
|
"monero-generators/std",
|
|
|
|
"futures/std",
|
|
|
|
"hex/std",
|
|
"serde/std",
|
|
"serde_json/std",
|
|
]
|
|
|
|
http_rpc = ["digest_auth", "reqwest"]
|
|
multisig = ["transcript", "frost", "dleq", "std"]
|
|
experimental = []
|
|
|
|
default = ["std", "http_rpc"]
|