Bitcoin

In bitcoin, the signature is a "normal" one and we check it against the signed tx hash. We then check whether the public key/s which signed it, owns the input/s.

we then check whether the inputs are unspent.

We then check that the inputs - outputs - fees = 0

We then check tx integrity, but this is not important in the comparison.

Monero

With monero I am not certain. Please clarify any mistakes.

We have the signature, which we can validate by making sure one member of the ring has signed the message. In this case, the message will be a hash of tx data; same as bitcoin.

Since the inputs/outputs are hidden, we cannot directly check whether an input has been spent already. We use the Key Image instead for this. If a key image has already been seen then it is rejected.

Not certain part: Addresses in Monero are one-time use. And KeyImages link to addresses which links to inputs. So by checking that the keyimage has not been used before, we can be certain that an input has not been used before using I = xH(P) where P is the one time public key, and p is the secret key generated from the sender.

Although the amounts are hidden, we can still check that:

 hiddenInputAmount - hiddenOutputAmount - NotHiddenFees = 0

Additionally, Monero also uses range proofs to show that the hidden amounts are > 0.

Would having a monero utxo db with the hidden outputs be pointless?

up vote 2 down vote accepted

And KeyImages link to addresses which links to inputs

Any particular key image specified in a ring signature in a transaction must correspond to one of the output public keys (sometimes called stealth addresses) referenced in that ring signature, but you can't tell which output. These outputs will be created in transactions where it will again not be clear which outputs were actually spent as part of that transaction.

where P is the one time public key, and p is the secret key generated from the sender

For clarity, P is created by the sender, but the sender cannot mathematically figure out the corresponding private key p. Only the recipient can mathematically determine that. This prevents the sender from spending the outputs that the sender creates for the recipient.

Would having a monero utxo db with the hidden outputs be pointless?

Only the person that owns an output can tell if it has been spent. For all other outputs, it is unknowable as to whether they have been spent or not. Therefore you can't create a UTXO database.

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.