Hi there,
After admiring all the goodies on IPFS and listening on on the NFT stuff going on I was wondering a thought experiment how to organise an NFT ecosystem on IPFS without using cryptocurrencies. Why? Well, because I assume there is a large portion of people out there maybe interested in NFTs but maybe think having a crypto-wallet is a friction (assumption).
And even if it isn’t the case, it is a nice experiment learning on all sorts of concepts.
So my thinking…
Can we design an NFT infrastructure that makes NFT investing more accessible to people not wanting to invest in crypto currency?
Design objectives:
- Directly and indirectly only fiat currencies will be used to transact (so no crypto market & compliance risks in the system)
- Immutability of transaction history is guaranteed.
- Transaction ledger is transparent to the public
- Anyone can participate in the system to inspect or transact
- We try to avoid implement as much as possible in crypto tech (web 3.0), but we don’t fear “web 2.0” – traditional tech with central and trusted parties, as even blockchain solutions rely on some sort of centralised governance
- We only use (permissioned) blockchain tech if the web 2.0 option really looks awfull
Maybe not the best formulated design principles, but hey - it is a try…
Solution design - using a linked-list in JSON files stored on IPFS in which the next block in the linked-list points to the previous one using the DID.
This creates an immutable list of concatable JSON files. The final block is a Genesis block - for ease of reference.
The JSON file is basically meta-data on the NFT asset (a picture, movie etc) which also is stored on IPFS - like is done now with NFTs like the ones on OpenSea (?).
So how would such JSON file look like?
Well - I have made an example on IPFS!
Genesis block - https://ipfs.io/ipfs/QmfVvjc67wQa9NVBt2Yt6aK1KQCREnbmGqzt4uYi9Xv5u7
And two NFTs - of which one has at least 1 ownerships change and the other not:
https://ipfs.io/ipfs/QmV9qcBbMbmge7hR5GDjLFFg2SZy1QAncdTAa1eBeYKAGC
https://ipfs.io/ipfs/QmUgT3VKmcUGoq6oCvGVfY7iRb5nxjDhs26o782D7sHHK6
(published via Pinata - so hopefully accessible)
Example json structure:
{
"blockVersion": "2",
"blockSequence": "1",
"prevBlock": "did:ipid:QmfVvjc67wQa9NVBt2Yt6aK1KQCREnbmGqzt4uYi9Xv5u7",
"prevBlockURL": "https://ipfs.io/ipfs/QmfVvjc67wQa9NVBt2Yt6aK1KQCREnbmGqzt4uYi9Xv5u7",
"ownership": {
"prevOwner": "GENESYS",
"curOwner": "QqlEQ6YateP8h0C5acvUmcZSwH13"
},
"assetDID": "did:ipid:QmUPhFnr3YrxHXBbbyq4ihLLMAs473CMosNy2BujnGY5sp",
"assetURL": "https://ipfs.io/ipfs/QmUPhFnr3YrxHXBbbyq4ihLLMAs473CMosNy2BujnGY5sp",
"assetDescription": "Keving Hart NFT",
"payload": {}
}
So to me this seems an append-only ledger, similar to a blockchain. Cool.
But it does not solve the double spent problem - anyone can publish blocks
So I wonder what would be a way to solve this in a decentralised way - not needing blockchains/smartcontracts?
I do wonder if it is possible. If I look at some docs, even p2p exchange of crypto requires a third party to check if conditions are met (a trusted third party or smart contract).
Especially when it comes to an interchange using fiat currency.
I personally don’t have any issue with a centralised system/party - like web 2.0 is doing.
But I was just curious to pick the community’s brain on this.
Hope to be learning a lot here!
Tom