We need to implement the ability to prove ownership of specific private NFTs.
An NFT owner should be able to create a cryptographic proof which can be verified to confirm its correctness.
A valid cryptographic proof could be a message "OWNERSHIP_PROOF_NFT"||OUTPOINT||TOKENID signed with the NFT's spending key where:
"OWNERSHIP_PROOF_NFT" is a string literal
|| is the concatenation operator
OUTPOINT is the current UTXO of the NFT we are proving ownership of as a string in the format txid:vout
TOKENID is the serialisation of the NFT Identifier as per the Navcoin-core rules (32 bytes uint256 hash concatenated with uint64 integer)
A validator would receive this proof together with the TOKENID and would check the latest OUTPOINT of the NFT from a full node. Then will verify the signature with the spending key of that outpoint to confirm or reject the ownership claim.
Changes needed in navcoin-core:
[x] navcoin/navcoin-core#919
[x] navcoin/navcoin-core#920
Changes needed in electrumx:
[ ] Support for the RPC changes related to showing last UTXO of an NFT
We need to implement the ability to prove ownership of specific private NFTs.
An NFT owner should be able to create a cryptographic proof which can be verified to confirm its correctness.
A valid cryptographic proof could be a message
"OWNERSHIP_PROOF_NFT"||OUTPOINT||TOKENID
signed with the NFT's spending key where:||
is the concatenation operatorOUTPOINT
is the current UTXO of the NFT we are proving ownership of as a string in the format txid:voutTOKENID
is the serialisation of the NFT Identifier as per the Navcoin-core rules (32 bytes uint256 hash concatenated with uint64 integer)A validator would receive this proof together with the
TOKENID
and would check the latestOUTPOINT
of the NFT from a full node. Then will verify the signature with the spending key of that outpoint to confirm or reject the ownership claim.Changes needed in
navcoin-core
:Changes needed in
electrumx
:Changes needed in
navcoin-js
: