I think that the preponderance of smartphones enables us to imagine adding spacetime data to the blockchain. I envision an end-user minted NFT with encrypted location data.
There are a thousand reasons why you might want to do this.
But let’s consider some dangerous areas and potential drawbacks of this idea.
First of all there is question of privacy, or lack thereof. These NFT’s would originate on the user’s device, and also would be stored on chain in a separate receive addy within the user’s mobile wallet. But they would be encrypted, so the only information that someone could deduce would be that the user checked in at a specific location [ETA: I meant “somewhere”]. Unless they have the encryption key… but we’ll come back to that.
Now, this isn’t just putting google maps location data on the blockchain… first of all, the end user decides when to mint the NFT. More importantly, this uses the phone’s GPS/GLONASS/Galileo sensor, when it is available. It simply leaves an encrypted time and date stamp, along with gps coordinates, on chain in the user’s wallet.
What if we’re using this in order to prove presence for some legal purpose, like showing up for a meeting with a suspect? Well, isn’t this what blockchain is made for? For recording indelible, indisputable truth?
That one is the rub. Of course we can’t plan for gps jamming or other means of hardware hacking, except to review the details of the encrypted nft, and possibly mark it for review based on circumstances. But what about ensuring that the nft originated from the user’s device? How can we prove witness to important events if someone could just create a fake proof of presence from their mom’s basement?
My idea is to tie it to the device, and to use the official Google Play Store to distribute an (open source) app that incorporates a checksum into the encryption for the data on that device that includes the md5 of its own executable, as well as the MEID, and of course the user’s strong password.
I realize they could hand their phone to a surrogate, but I have ideas for that too. This is a tool for the end user, and if used appropriately that can be shown. But the data remains in their hands.
I am struggling to learn Kotlin, and make this happen on Android first.
Is the idea of using an md5 on the same executable that delivers the encryption and mints the nft viable? Would this succeed in proving that a fraudulent NFT was created using some software that fakes the gps coordinates?
My aim would be for this to be standardized and certified via Google’s dev program. The code would be open source, so it would reveal that it queries MEID and executable checksum, in addition to gps coordinates and UTC.
But what if they run an adjusted version from their mom’s basement that specifies all of those inputs and fakes the gps coordinates to simulate “proof of presence” when they were actually in the basement eating cheetos… would we know?
Is there a way to prove it within reason? I can think of several other methods, but they complicate matters. I want PoP-NFT v1.0 to be simple enough to not require ipfs, and just record the necessary info to prove you were at a certain place at a certain time. I want it to run as a dap on the Ergo mobile wallet.
Can anyone more experienced in programming and cryptography comment, please?