Crate monero_wallet

Crate monero_wallet 

Source
Expand description

§monero-wallet

Wallet functionality for the Monero protocol, built around monero-oxide. This library prides itself on resolving common pitfalls developers may face.

monero-wallet also offers a FROST-inspired multisignature protocol orders of magnitude more performant than Monero’s own, formalized as FROSTLASS.

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-wallet 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 scanning outputs/creating transactions
  • Be a wallet, maintaining state, performing output selection, and running in the background

This means that monero-wallet 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-wallet or wallet2. It also should be generally safe for usage with remote nodes, but may be detected as monero-wallet by a remote node. 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-wallet.

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): Enables std (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 represented by dkg. This functionality is not covered by SemVer, except along minor versions.

Re-exports§

pub use view_pair::ViewPairError;
pub use view_pair::ViewPair;
pub use view_pair::GuaranteedViewPair;
pub use output::WalletOutput;
pub use scan::Timelocked;
pub use scan::ScanError;
pub use scan::Scanner;
pub use scan::GuaranteedScanner;
pub use decoys::OutputWithDecoys;
pub use monero_interface as interface;
pub use monero_address as address;

Modules§

block
Block structs and functionality.
decoys 🔒
ed25519
Monero Ed25519
extra
Structures and functionality for working with transactions’ extra fields.
io
Monero IO
merkle
Merkle tree functionality.
output 🔒
primitives
Monero Primitives
ring_signatures
Ring Signature structs and functionality.
ringct
RingCT structs and functionality.
scan 🔒
send
Structs and functionality for sending transactions.
transaction
Transaction structs and functionality.
view_pair 🔒

Structs§

SharedKeyDerivations 🔒

Constants§

BLOCK_TIME
Monero’s block time target, in seconds.
COINBASE_LOCK_WINDOW
The minimum amount of blocks a coinbase output is locked for.
DEFAULT_LOCK_WINDOW
The minimum amount of blocks an output is locked for.