Question in regards it to a cold wallet, moneroaddress.
When depositing coins to your cold wallet, you can check to see if you received them. You just have to enter the view key, public address, and tx id on xmr.llcoins.
Now, how can I check if there have been any transactions since you've initially deposited them? Verifying that there hasn't been a hack on your wallet>
There is currently no easy way to do this. However, in the future there might:
https://www.reddit.com/r/Monero/comments/51i0n7/solved_it_hopefully_heres_how_we_can_make_the/What would be the best currently available (though not easy) way to do this?
First, you'd have to fully sync the blockchain on an online computer. Second, copy simplewallet, bitmonerod, and the blockchain to an USB and plug that into the offline computer. Third, use bitmonerod in offline modus (--offline flag) and it should use the blockchain you have already synced on the online computer. Fourth, use --restore-deterministic-wallet to create a wallet with your seed offline. Lastly, use refresh to sync your wallet. It will refresh up to the last block you have synced online. It should then show all the transactions (both incoming and outgoing) of your offline wallet up to that block.
That's quite an ordeal. I think someone (moneromooo?) was working on a way of getting the key image from a transaction so you can check the spent status using Moneroblocks API... (like Luigi's coin checker)
Note if you are already checking arrival of funds via the checktx page, there's a rather simple way you could generate the key image offline for just the output(s) you care about. This would take only a minute or two and not require syncing the chain or restoring a wallet.
I would need to set up the code to do it though.
That sounds potentially very useful. What information would be required on the offline computer to generate the key images in that simple way without restoring a wallet or syncing the chain?
You can generate the key images with the account keys, tx_public_key, and real_output_index (for each output).
You would have to feed your offline machine this information to allow the generate_key_image_helper function to generate the KIs.
The generate_key_image_helper function has a few steps in the KI creation where it calls the base generate_key_image function below:
void crypto_ops::generate_key_image(const public_key &pub, const secret_key &sec, key_image &image) {
ge_p3 point;
ge_p2 point2;
assert(sc_check(&sec) == 0);
hash_to_ec(pub, point);
ge_scalarmult(&point2, &sec, &point);
ge_tobytes(&image, &point2);
}
generate_key_image_helper code:
bool generate_key_image_helper(const account_keys& ack, const crypto::public_key& tx_public_key, size_t real_output_index, keypair& in_ephemeral, crypto::key_image& ki)
{
crypto::key_derivation recv_derivation = AUTO_VAL_INIT(recv_derivation);
bool r = crypto::generate_key_derivation(tx_public_key, ack.m_view_secret_key, recv_derivation);
CHECK_AND_ASSERT_MES(r, false, "key image helper: failed to generate_key_derivation(" << tx_public_key << ", " << ack.m_view_secret_key << ")");
r = crypto::derive_public_key(recv_derivation, real_output_index, ack.m_account_address.m_spend_public_key, in_ephemeral.pub);
CHECK_AND_ASSERT_MES(r, false, "key image helper: failed to derive_public_key(" << recv_derivation << ", " << real_output_index << ", " << ack.m_account_address.m_spend_public_key << ")");
crypto::derive_secret_key(recv_derivation, real_output_index, ack.m_spend_secret_key, in_ephemeral.sec);
crypto::generate_key_image(in_ephemeral.pub, in_ephemeral.sec, ki);
return true;
}
Sorry for quoting the code, I needed to post it for myself as a refresher given it's been a bit since I looked at these functions.
i speculate c++ code.