During blockchain scanning I need to do:
P − Hs(aR)G
with every output in order to determie whether it is mine, or not.
Monero Stack Exchange is a question and answer site for developers and users of the secure, private and untraceable cryptocurrency Monero. It only takes a minute to sign up.Sign up to join this community
The full math you have to do is:
D = P - Hs(8aR || i)G, where
i is a varint representing the index of the output. You then check whether
D matches your main public spend key or any of your subaddress public spend keys. if it does, the output is destined for you.
The output public key
P is in the json as vout.target.key. The transaction public key
R is not separately listed, so you'll need to parse the
extra field in the json and locate the txpubkey subfield.
The txextra field format is documented here: https://cryptonote.org/cns/cns005.txt
It's the "Tx public key" field mentioned in that document that you are interested in.
Also note that to support transactions with multiple subaddress recipients, there is also a new TX_EXTRA_TAG_ADDITIONAL_PUBKEYS field. If this field is present, then you'll need to check each output against the corresponding additional txpubkey listed in that field.