Skip to content

Commit

Permalink
Clarify when wallet2 will decrypt payment IDs with citations
Browse files Browse the repository at this point in the history
  • Loading branch information
kayabaNerve committed Sep 5, 2024
1 parent cf814b3 commit b7ebbd7
Showing 1 changed file with 22 additions and 6 deletions.
28 changes: 22 additions & 6 deletions wallet/src/output.rs
Original file line number Diff line number Diff line change
Expand Up @@ -301,12 +301,28 @@ impl WalletOutput {

/// The payment ID included with this output.
///
/// 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
/// spending.
// TODO: Clarify and cite for point A ("highest index spent key image"??)
/// This field may be `Some` even if wallet2 would not return a payment ID. wallet2 will only
/// decrypt a payment ID if either:
///
/// A) The transaction wasn't made by the wallet (via checking if any key images are recognized)
/// B) For the highest-indexed input with a recognized key image, it spends an output with
/// subaddress account `(a, _)` which is distinct from this output's subaddress account
///
/// Neither of these cases are handled by `monero-wallet` as scanning doesn't have the context
/// of key images.
//
// Identification of the subaddress account for the highest-indexed input with a recognized key
// image:
// https://github.com/monero-project/monero/blob/a1dc85c5373a30f14aaf7dcfdd95f5a7375d3623
// /src/wallet/wallet2.cpp/#L2637-L2670
//
// Removal of 'transfers' received to this account:
// https://github.com/monero-project/monero/blob/a1dc85c5373a30f14aaf7dcfdd95f5a7375d3623
// /src/wallet/wallet2.cpp/#L2782-L2794
//
// Payment IDs only being decrypted for the remaining transfers:
// https://github.com/monero-project/monero/blob/a1dc85c5373a30f14aaf7dcfdd95f5a7375d3623
// /src/wallet/wallet2.cpp/#L2796-L2844
pub fn payment_id(&self) -> Option<PaymentId> {
self.metadata.payment_id
}
Expand Down

0 comments on commit b7ebbd7

Please sign in to comment.