WebCollectibles - an ActivityPub alternative to NFTs (WIP)

This is a work in progress. I plan to return make edits and additions, and I welcome your input. My goal is to implement this in ActivityPub Express & Immers Space and also to submit an FEP. Also not tied to the WebCollectibles name - happy to hear alternatives

Background:

NFTs (Non-Fungible Tokens) are the concept of linking a specific token in a cryptocurrency to some off-chain item like such as a work of digital art. There has been much news and hype around the concept, but it is highly financialized, inflated by wash trading, and powered by huge transaction fees collected from creators and collectors. Furthermore, the current implementations fall into one of three broad categories with significant drawbacks:

  1. Large public blockchain Proof-of-Work (e.g. Ethereum) - these have severe environmental costs, producing as much CO2 as nations of millions of people
  2. Independent blockchain with Proof-of-Stake or other alternative consensus (e.g. Wax) - these chains are not decentralized, requiring users to place their trust in a small set verifiers they cannot select.
  3. Side chains (e.g. Liquid) - these are a sort of worst-of-both worlds: they still generate costly Proof-of-Work transactions as people move their tokens in and out of the side chains, and they have centralized control by a small set of verifiers.

When I listen to artists who are interested in NFTs, their interests lie in having their work recognized and appreciated, having a trail of provenance on digital goods that continues to provide credit for the original artist, and the ability to bypass the gatekeepers of the traditional art worlds. That and making money, of course, but not specifically blockchain/cryptocurrency tech.

Why it matters to the Fediverse:

These artists’ desires I’m hearing are valid, and the idea of collecting things from around the Web and across platforms is fun. In Immers Space, the AP app for 3D worlds, we introduced a rudimentary system for collecting avatars from the different instances that you visit that you can then wear on any other instance (see, e.g. https://vreign.space).

Unlike cryptocurrencies, ActivityPub and the Fediverse present a way for us to offer a distributed ledger of collectibles that is both energy efficient and fully decentralized. The tradeoff is that AP does not offer trustless global consensus, but for me that is not much of a downside because I don’t want to live in a trustless world and I don’t want WebCollectibles to become a high-stakes financial instrument.

Implementation:

This can be done without any extensions to ActivityPub, we really only need to agree on the ideal sequence of Activities and Objects.

The Building blocks are:

  • Create - initial registration of a collectible by its creator
  • Offer - A collectible owner offers it to another AP Actor
  • Accept/Reject - response to Offer
  • Add/Remove - Recipient places accepted collectible into one of their collections (or later removes it)

Important questions:

  • Specifics on sequence of activities and what form the objects take
  • How to create a trail connecting the sequence of activities (is it as simple as inReplyTo?)
  • Verifying the history - must these be public activities for later verification, or is it an individual choice whether you want privacy or verifiability for each item
  • Differentiating between giving away / trading versus sharing / cloning
2 Likes

Thanks for such a beautiful post, looks like a cool project!

I’d encourage you to try to avoid hyperbolic language of this kind, as it may alienate some of your audience

For example, there are green, fair, federations such as the liquid side-chain that offer NFTs, without most of the perverse incentives that dominate that space

e.g. see: https://explorer.lightnite.io/

If a 3rd party controls your outbox, they will also likely control your keys, so they would essentially have ownership of the NFT by delegation. So it’s a bit less decentralized and more trust based, unless you add key management to a profile and to an outbox service. This may be an acceptable trade-off, but you’re getting quite close to a model where a 3rd party or website simply owns the NFT

NFTs are actually a use case I’m working on. I have a concept called web contracts which are basically going to be JSON blobs with provenance and a signed set of signatures to provide an audit trail. In my first implementation I’m going to use git to provide a trail of state, ownership and signatures over time. The system will also allow you to notarize and anchor those state changes in an underlying blockchain

I’ve just recently started to implement fungible tokens, but just about to start on non-fungible tokens, which seem to me to be like fungible tokens of size 1.

Some food for thought. Here is an example JSON blob from the liquid side chain

{
  "asset_id": "5f5109be19c618088228622c02e97d11e1347f1032cb9b6658cc359196a931bd",
  "contract": {
    "entity": {
      "domain": "explorer.lightnite.io"
    },
    "issuer_pubkey": "023dfbfd3f28f9021aa5f3b197a8dcf45e0feb4807c6ee18ada982f53c0010ca69",
    "name": "Strikeboard",
    "precision": "​0",
    "ticker": "HStri",
    "version": "​0"
  },
  "issuance_txin": {
    "txid": "fcb03f52965756c7c6a1023c81d1770e2825e143cca2fa6f4915a6caffd5c42e",
    "vin": "​0"
  },
  "issuance_prevout": {
    "txid": "ef1151a6ce439f2ba2df5a8e5fa8fce113f0128e211a1629de02ba97a0914951",
    "vout": "​2"
  },
  "version": "​0",
  "issuer_pubkey": "023dfbfd3f28f9021aa5f3b197a8dcf45e0feb4807c6ee18ada982f53c0010ca69",
  "name": "Strikeboard",
  "ticker": "HStri",
  "precision": "​0",
  "entity": {
    "domain": "explorer.lightnite.io"
  }
}

and the contract used to create it, and the proof

Translating this kind of thing to a JSON(-LD) or Activity Pub paradigm, seems like a cool idea. We’d have to get a common understanding of the fields required. Perhaps take it in stages and work out what to Create, then think further about ownership rights.

Specifics on sequence of activities and what form the objects take

I realize I’ve not really answered this, but I think it would be good to flesh out. Hopefully some food for thought tho. I’ll be working on something similar to this in 2022 and would be great if we could make compatible systems.

The trading I think also needs to be expanded. In what currency are you trading? What is the nature of an offer and accepting an offer? Again, cool things to explore, or see if anyone has done already…

1 Like

Thanks, buddy. I edited that section with examples and citations. I shouldn’t assume people know the technical details of which tokens fall into which category. For liquid, unless their whitepaper is outdated, it seems to be in the category of being controlled by a centralized, fixed set of verifiers:

The previous sections have taken the blocksigner and watchman federations to be fixed, im-
mutable sets. However, these federations are composed of real-world entities whose interests
change throughout time, and we need a mechanism to ensure continuity of the system as new
participants join and old participants leave… The first version of Liquid does not include dynamic federations, meaning that the first change in federation will require a hardfork to the network and replacement of the key modules which ultimately control the custodied Bitcoin. To prevent future transitions from being so disruptive, we will ensure that the first one includes a hardfork to enable Dynamic Federations

You’ve given me other useful feedback was well - I’ll return later to review carefully and update. Thanks again!

Yes, that’s fair enough, and dynafed I think is getting rolled out now-ish. There’s different trade offs, indeed!

I guess we all want to see an open system where the important thing is that artists can create, and keep the fruits of their labour, without becoming a proxy for proprietary, rent-seeking, token sales

Hopefully we can design and get something working on AP next year. I’m also using JS/express, so we might be able to run some tests :slight_smile:

I’m very interested in contributing to this

First, a small semantic point… Nonfungibles aren’t fungibles of size 1; they don’t have size. In simplest form, nonfungibles are unique, though some implementations allow you to mint a series. Forgive me if I’ve mistaken an implementation detail for a definition

I think the discussion should be about mechanisms - how to specify what currency, if any, is used, rather than specifying a specific currency, for an example

Then there’s the workflow. The key here is embedding an activity like move into an offer then processing that activity once it is accepted and acknowledged

Important to acknowledge, too, is that the trust model and scope for consensus is different than blockchain. If you actually want adversarial trust, this type of workflow can establish local consensus that could save gas fees through a couple different patterns. It could stand alone in other situations, e.g. “mutually suspicious” trust

Finally, let’s agree that we’re not suggesting that anyone put important private keys on a public instance. There’s an overlap between federation and P2P where servers can be safely run by individuals or groups with high levels of trust. That’s the goal in many cases. Even so, workflows shouldn’t be drafted in a way that expects the server to hold the private key. (Private keys on social AP servers are a different use case)

2 Likes

Stories…

Here are six stories detailing hypothetical uses cases promised, but not yet delivered, by NFTs. Now that NFTs are gaining traction as viable markets for art, games and collectibles, incentives for these capabilities are better aligned for the Fediverse to provide them (IMO):

Joyce is a museum curator in upstate New York who found sketches of the Seneca Falls Convention in the museum collection. The museum director asked her to research NFT offerings to raise money for restoration. The board has been reluctant about IT purchases recently, so “just use a database” isn’t an option; if she’s going to include an alternative to NFTs in her presentation, it’ll need to use free software and run in spare capacity on hardware the museum already owns and can reliably maintain when governance is taken into account

Cara is a furry who recently came out trans. Before she started her transition, she had commissioned a reference for a snow leopard fursona that no longer suits her. She talks with the original artist, who is onboard with her selling the art to raise money for GCS, but the artist wants only one person using that fursona at a time. They talked about NFTs, but that pattern didn’t really serve the purpose of preserving record of the artist’s intent

John and George convince Paul to play a distributed space opera MMO that they’ve been playing since last month. With a traditional MMO, game runners use sharding to adjust the number of servers for demand, so Paul wouldn’t necessarily be able to interact with his friends in-game. This game, however, uses a network of vats to represent game locations, so collaborating is simply a matter of being in the same virtual solar system. Players and other entities are represented in software using the actor model. Game assets use IPFS for art and embed lambdas describing the item in an Activity Pub document to describe behaviors. Paul wants to run a smuggler ship, so George is going to get a cloaking ring from John in a different system and give it to Paul. According to the game rules, the cloak can only be on one ship at a time. Also the vats are on different physical servers operated by different people. The operators lack the resources or organization to establish a database cluster. Also, this is a Ringo Starr joke

Chris is making a distributed collectible card game engine. They want artists and developers to be able to collaborate on card sets that would be sold in limited editions to be played on instances of their engine and others following any compatible API. After the initial sale, players and instance operators also want to sell, trade, and rent cards in order to experience nostalgia about physical CCGs under capitalism, but their sense of fairness dictates that the original creators should get a share of of rentals and increases in resale value

Sam is a graphic artist who works in pen and ink. He’s been exploring his Lakota heritage by doing ledger art. It’s his conviction that traditional art belongs to the tribe, but he still needs food and other things to survive colonialism for his work. His plan is to provide a certificate of authenticity with his ledger art and sell a lifetime lease on the art with the stipulation that the work be returned to the tribe upon the death of the current leaseholder and not be sold with an estate or other auction. The certificate of authenticity will describe the origin of the piece and provide a synopsis of the lease while pointing to a chain of custody and full conditions for anyone buying out the lease

Gwen is an anthropologist who grew up on a Navajo reservation in Arizona. She collaborates with a mobile app developer and a jewelry maker, both of whom are also Diné, to distribute and track some traditional turquoise jewelry. The goal is to teach others Diné values concerning the Earth, turquoise, and personal property and measure the response. People who receive the jewelry are supposed to record the story of how they obtained it, tell their stories and those that went before when someone expresses interest in the piece, offer it to anyone who asks, and instruct them to do the same. People are free to keep the jewelry as long as they follow the instructions, but should return it if they are no longer willing

Obviously, some of these involve offline data collection. While that may be off scope, the interfaces should be part of the design and simple as possible (but no simpler)