It risked panicking if a non-monotonic distribution was returned. While the provided RPC code won't return non-monotonic distributions, users are allowed to define their own implementations and override the provided method. Said implementations could omit this required check.
Monero Wallet
Wallet functionality for the Monero protocol, built around monero-serai. This library prides itself on resolving common pit falls developers may face.
monero-wallet also offers a FROST-inspired multisignature protocol orders of magnitude more performant than Monero's own.
This library is usable under no-std when the std feature (on by default) is
disabled.
Features
- Scanning Monero transactions
- Sending Monero transactions
- Sending Monero transactions with a FROST-inspired threshold multisignature protocol, orders of magnitude more performant than Monero's own
Caveats
This library DOES attempt to do the following:
- Create on-chain transactions identical to how wallet2 would (unless told not to)
- Not be detectable as monero-serai when scanning outputs
- Not reveal spent outputs to the connected RPC node
This library DOES NOT attempt to do the following:
- Have identical RPC behavior when creating transactions
- Be a wallet
This means that monero-serai shouldn't be fingerprintable on-chain. It also shouldn't be fingerprintable if a targeted attack occurs to detect if the receiving wallet is monero-serai or wallet2. It also should be generally safe for usage with remote nodes.
It won't hide from remote nodes it's monero-serai however, potentially allowing a remote node to profile you. The implications of this are left to the user to consider.
It also won't act as a wallet, just as a wallet functionality library. wallet2 has several non-transaction-level policies, such as always attempting to use two inputs to create transactions. These are considered out of scope to monero-serai.
Finally, this library only supports producing transactions with CLSAG signatures. That means this library cannot spend non-RingCT outputs.
Cargo Features
std(on by default): Enablesstd(and with it, more efficient internal implementations).compile-time-generators(on by default): Derives the generators at compile-time so they don't need to be derived at runtime. This is recommended if program size doesn't need to be kept minimal.multisig: Adds support for creation of transactions using a threshold multisignature wallet.