mirror of
https://github.com/serai-dex/serai.git
synced 2024-12-22 19:49:22 +00:00
Add additional documentation
Some checks are pending
coins/ Tests / test-coins (push) Waiting to run
Coordinator Tests / build (push) Waiting to run
Full Stack Tests / build (push) Waiting to run
Lint / clippy (macos-13) (push) Waiting to run
Lint / clippy (macos-14) (push) Waiting to run
Lint / clippy (ubuntu-latest) (push) Waiting to run
Lint / clippy (windows-latest) (push) Waiting to run
Lint / deny (push) Waiting to run
Lint / fmt (push) Waiting to run
Lint / machete (push) Waiting to run
Monero Tests / unit-tests (push) Waiting to run
Monero Tests / integration-tests (v0.17.3.2) (push) Waiting to run
Monero Tests / integration-tests (v0.18.2.0) (push) Waiting to run
no-std build / build (push) Waiting to run
Processor Tests / build (push) Waiting to run
Tests / test-infra (push) Waiting to run
Tests / test-substrate (push) Waiting to run
Tests / test-serai-client (push) Waiting to run
Some checks are pending
coins/ Tests / test-coins (push) Waiting to run
Coordinator Tests / build (push) Waiting to run
Full Stack Tests / build (push) Waiting to run
Lint / clippy (macos-13) (push) Waiting to run
Lint / clippy (macos-14) (push) Waiting to run
Lint / clippy (ubuntu-latest) (push) Waiting to run
Lint / clippy (windows-latest) (push) Waiting to run
Lint / deny (push) Waiting to run
Lint / fmt (push) Waiting to run
Lint / machete (push) Waiting to run
Monero Tests / unit-tests (push) Waiting to run
Monero Tests / integration-tests (v0.17.3.2) (push) Waiting to run
Monero Tests / integration-tests (v0.18.2.0) (push) Waiting to run
no-std build / build (push) Waiting to run
Processor Tests / build (push) Waiting to run
Tests / test-infra (push) Waiting to run
Tests / test-substrate (push) Waiting to run
Tests / test-serai-client (push) Waiting to run
This commit is contained in:
parent
5bb3256d1f
commit
84f0e6c26e
5 changed files with 20 additions and 13 deletions
|
@ -94,7 +94,8 @@ async fn select_n(
|
|||
let mut candidates = Vec::with_capacity(remaining);
|
||||
while candidates.len() != remaining {
|
||||
// Use a gamma distribution, as Monero does
|
||||
// TODO: Cite these constants
|
||||
// https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c45
|
||||
// /src/wallet/wallet2.cpp#L142-L143
|
||||
let mut age = Gamma::<f64>::new(19.28, 1.0 / 1.61).unwrap().sample(rng).exp();
|
||||
#[allow(clippy::cast_precision_loss)]
|
||||
if age > TIP_APPLICATION {
|
||||
|
|
|
@ -226,7 +226,9 @@ impl Extra {
|
|||
}
|
||||
|
||||
/// The payment ID embedded within this extra.
|
||||
// TODO: Monero distinguishes encrypted/unencrypted payment ID retrieval
|
||||
// Monero finds the first nonce field and reads the payment ID from it:
|
||||
// https://github.com/monero-project/monero/blob/ac02af92867590ca80b2779a7bbeafa99ff94dcb/
|
||||
// src/wallet/wallet2.cpp#L2709-L2752
|
||||
pub fn payment_id(&self) -> Option<PaymentId> {
|
||||
for field in &self.0 {
|
||||
if let ExtraField::Nonce(data) = field {
|
||||
|
|
|
@ -301,7 +301,7 @@ impl WalletOutput {
|
|||
|
||||
/// The payment ID included with this output.
|
||||
///
|
||||
/// This field may be `Some` even if wallet would not return a payment ID. This will happen if
|
||||
/// This field may be `Some` even if wallet2 would not return a payment ID. This will happen if
|
||||
/// the scanned output belongs to the subaddress which spent Monero within the transaction which
|
||||
/// created the output. If multiple subaddresses spent Monero within this transactions, the key
|
||||
/// image with the highest index is determined to be the subaddress considered as the one
|
||||
|
|
|
@ -336,8 +336,8 @@ impl InternalScanner {
|
|||
}
|
||||
|
||||
// If the block's version is >= 12, drop all unencrypted payment IDs
|
||||
// TODO: Cite rule
|
||||
// TODO: What if TX extra had multiple payment IDs embedded?
|
||||
// https://github.com/monero-project/monero/blob/ac02af92867590ca80b2779a7bbeafa99ff94dcb/
|
||||
// src/wallet/wallet2.cpp#L2739-L2744
|
||||
if block.header.hardfork_version >= 12 {
|
||||
for output in &mut res.0 {
|
||||
if matches!(output.metadata.payment_id, Some(PaymentId::Unencrypted(_))) {
|
||||
|
@ -354,8 +354,10 @@ impl InternalScanner {
|
|||
///
|
||||
/// When an output is successfully scanned, the output key MUST be checked against the local
|
||||
/// database for lack of prior observation. If it was prior observed, that output is an instance
|
||||
/// of the burning bug (TODO: cite) and MAY be unspendable. Only the prior received output(s) or
|
||||
/// the newly received output will be spendable (as spending one will burn all of them).
|
||||
/// of the
|
||||
/// [burning bug](https://web.getmonero.org/2018/09/25/a-post-mortum-of-the-burning-bug.html) and
|
||||
/// MAY be unspendable. Only the prior received output(s) or the newly received output will be
|
||||
/// spendable (as spending one will burn all of them).
|
||||
///
|
||||
/// Once checked, the output key MUST be saved to the local database so future checks can be
|
||||
/// performed.
|
||||
|
|
|
@ -238,7 +238,6 @@ impl SignableTransaction {
|
|||
Err(SendError::NoInputs)?;
|
||||
}
|
||||
for input in &self.inputs {
|
||||
// TODO: Add a function for the ring length
|
||||
if input.decoys().len() !=
|
||||
match self.rct_type {
|
||||
RctType::ClsagBulletproof => 11,
|
||||
|
@ -317,11 +316,14 @@ impl SignableTransaction {
|
|||
})?;
|
||||
}
|
||||
|
||||
// The actual limit is half the block size, and for the minimum block size of 300k, that'd be
|
||||
// 150k
|
||||
// wallet2 will only create transactions up to 100k bytes however
|
||||
// TODO: Cite
|
||||
const MAX_TX_SIZE: usize = 100_000;
|
||||
// The limit is half the no-penalty block size
|
||||
// https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454
|
||||
// /src/wallet/wallet2.cpp#L110766-L11085
|
||||
// https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454
|
||||
// /src/cryptonote_config.h#L61
|
||||
// https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454
|
||||
// /src/cryptonote_config.h#L64
|
||||
const MAX_TX_SIZE: usize = (300_000 / 2) - 600;
|
||||
if weight >= MAX_TX_SIZE {
|
||||
Err(SendError::TooLargeTransaction)?;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue