NFT on IPFS using emulated blockchain data structure

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

You will need consensus. Historically, there was only one solution to decentralized consensus: decentralized ledgers (blockchain and its variations). If you don’t need decentralization, any server will do, but it won’t be a Non Fungible TOKEN. To be a token, it needs to be onchain. If you expect people to trust a server or something else to say: that asset belongs to Mr X, then any server will do. But you will need to give rules for acquiring “ownership”, and people to consider the server’s position as gospel. Good luck with that ^^. Assets will have much less value because of the dependency on the goodwill and reliability of the server. And it won’t be NFTs.

Hi there!

Thanks for those insights. Within the current usage of NFTs I think you are right. Then the question is what makes an NFT and what defines that?

Imho now that is defined by who makes the market, with a nice coloring of community opinion. Both I don’t control, unless I manage to develop the newest hype :slight_smile:

I am myself not sure a token can only exists if it is on a blockchain - as you seem to say. A hash of any asset can be used as a token, and when the underlying assets of two different hashes are not interchangeable (non-fungible), they then by that definition can serve as a non-fungible token - as opposed to dollars or bitcoins which are interchangeable tokens of value.

As to believing a central gospel, I think in the current setup of NFTs (or any blockchain setup) you need to believe many gospels dictated by one or many central parties. Whether it is an exchange, a market place, a layer-x service provider, a liquidity pool provider, a wallet provider or the people who control the source code of a chain…I always like to look at the business motiviation of such parties - which generally to me seems to control and monopolize. But then again, I am still a minority in this nor trying to start a flame :slight_smile:

Happy to hear any other views on how technically creating a decentralised transaction mechanism that covers for cooperative and uncooperative actors - aka a consensus mechanism!

Regards

Tom

There is a missing crutial property that will prevent it from being a digital asset (fungible or not): a record of who owns what. This is what is called “consensus” (read: “global enforceable consensus on who owns what”). If you create a nice image for example (the most popular form of NFT), and publish its hash, then anybody can copy it, so from the network point of view, it is as much yours as anybody else’s. Maybe you can sign it with your private key, but anybody can sign it with theirs. Maybe you can sign a date along with it, but anybody can forge a previous date. For the network to consider that you have a different relationship than anybody else to this hash, it needs to be recorded somewhere in a way that is not forgeable, and that everybody hence trusts. An authoritative server can play this role (saying “I’m not aware that this hash existed before Mr Tommertom send it to me. You should assume they are its creator”), or have a distributed ledger. But for this distributed ledger to be secured against forgery, it needs to have a consensus to be provably valid. The only way to do that is probably blockchain (and variations such as IOTA’s Tangle). It is unlikely that another way to do it has been discovered, as this breakthrough booted up a whole industry.

A “consensus” on a ledger is just a set of rules that you can prove the ledger followed and enforce.

The answer is simple: the consensus. The most common thing that it can guarantee you in most blockchains is : " This wallet is associated with this hash". That is what we interpret as “possession”. If you build a system where after one year of possession, the NFT is back for people to grab after a 24h auction, then this will be the consensus. If you design another saying that every hour a random wallet becomes the owner, this will make it the consensus.

The reason you need consensus if you want the notion of “possession” of an “asset”, is not only because it makes it possible to enforce it, but because it gives the very definition of what “possession” means in the context of your system !

NB: I take a very broad definition of consensus. A central server of DICE Games saying “this unique camouflage paint for AK-47 is granted to Player X only” would work if you drop the requirement of provability (you can’t prove that the server bent the advertized rules of attribution, you have to trust it). But even in that case, there is the consensus “DICE is the server who matters when deciding who owns what. If any other server says Player Y owns the painted AK, I should ignore it.”

Drop the notion of possession and you get plain IPFS.

Hey there

Thanks for this!

It really helps getting some sort of external validation and restructuring of my thinking.

And also thanks for the pointer to Tangle.

Always good to learn what it is developed out there

Tom

1 Like