Output recognition¶
The module provides means to obtain output information from transactions as well as recognize and decrypt those destined to user’s own wallet.
That functionality is a part of Transaction.outputs(wallet=None)
method which may take a wallet
as optional keyword, which will make it analyze outputs against all wallet’s addresses.
The wallet must have the secret view key while secret spend key is not required (which means
a view-only wallet is enough).
Note
Be aware that ed25519 cryptography used there is written in pure Python. Don’t expect high efficiency there. If you plan a massive analysis of transactions, please check if using Monero source code wouldn’t be better for you.
Note
Please make sure the wallet you provide has all existing subaddresses generated.
If you run another copy of the wallet and use subaddresses, the wallet you pass to
.outputs()
must have the same or bigger set of subaddressses present. For those
missing from the wallet, no recognition will happen.
Output data¶
The method will return a set of Output
objects. Each of them contains the following attributes:
stealth_address
— the stealth address of the output as hexadecimal string,amount
— the amount of the output,None
if unknown,index
— the index of the output,transaction
— theTransaction
the output is a part of,
payment
— aPayment
object if the output is destined to provided wallet,- otherwise
None
,
An example usage:
In [1]: from monero.daemon import Daemon
In [2]: from monero.wallet import Wallet
In [3]: daemon = Daemon(port=28081)
In [4]: tx = daemon.transactions("f79a10256859058b3961254a35a97a3d4d5d40e080c6275a3f9779acde73ca8d")[0]
In [5]: wallet = Wallet(port=28088)
In [6]: outs = tx.outputs(wallet=wallet)
In [7]: outs[0].payment.local_address
Out [7]: 76Qt2xMZ3m7b2tagubEgkvG81pwf9P3JYdxR65H2BEv8c79A9pCBTacEFv87tfdcqXRemBsZLFVGHTWbqBpkoBJENBoJJS9
In [8]: outs[0].payment.amount
Out [8]: Decimal('4.000000000000')