Idea: P2P SoulBound Token (Call For A Better Name!)

Hi Eth Magicians, I wanted to share some thoughts on a new pattern regarding ERC1155, or NFT that is 1.) non-transferrable (a.k.a soul bound) and can only be minted with signatures from all agreed addresses.

TLDR
Using ERC-1155 as a social footprint to represent interaction among a small set of addresses. When all participant agrees on such action, and provide the signatures; A mint can be initialised. Once minted, these tokens would be burnable, but not transferable.

Motivation:
Social interaction is full of friction without any review or trust system. It takes time for us to feel safe to strangers and new ideas. While centralised platforms like Linkedin, Facebook or Airbnb provide useful feedback, they are opaque, prone to censorship or fraud.

Being a popular and reputable figure on social media like Twitter, Instagram, is also not a reliable model, since the business model of social media tolerate buying up followers, and there is little way for normal users to distinguish how the validity of a person from their number of followers, no doubt these platform has been increasingly less reputable and more commercial.

With Ethereum, and public blockchain in general, it opens up the composability layer of human interaction and trust. When we interacted with another individual in a meaningful way, some sort of familiarity and trust is created such that later on it becomes easier for us to interact with the same person or even his/her friends. This is a non-trivial property of social interaction and how we build trust towards people around us. Currently, many of such meaningful interactions faded in the course of time because those meaningful interactions have no better way to be represented other than a twitter follow, or a telegram “Hi”.

Besides working as a medium of forming community, NFT can also be a tool to represent small group of social interaction. Once these social interactions are represented on-chain, there are potentially other dapps or trust composability usage based on custom metadata of the NFT they minted.

Reference Implementation

Some brief interfaces

// each address sign a message and provide their signature in order to whitelist themselves for a ERC1155 NFT
function initilizeNFT(bytes memory _signatures, bytes32 _rawMessageHash, address[] memory addresses)

// once the NFT is initialized, the address which provided signature in `initilizeNFT` can now mint the NFT. 
function mint(uint256 tokenId, address to) external {
      (require(p2pwhitelist[tokenId][to], "not whitelist");

A full implementation

Outstanding thoughts:

  1. Any concerns on privacy
  2. What metadata should be encoded
  3. Would the contract be ddos if it does not require privileged actor/owner.

Next Steps:

  1. Any feedback is appreciated!
  2. Further discussion on the implementation reference, to make sure it is as generic as possible and considering as many potential use cases as possible.
  3. Potentially draft a EIP / ERC Token Standard once enough use cases are explored.
2 Likes

I think protocols like cyberconnect and lens have already been building web3 social connections.

Connections in CyberConnect are stored on Ceramic(IPFS), connection in Lens are stored on Polygon chain which is more similar to your ideas.

Hey, nice thread! I just wanted to say that we’re actively exploring this idea of p2p minting in EIP-4973 and we’d love to hear your feedback: EIP-4973 - Account-bound Tokens - #129 by TimDaub

There is also a deliberate attempt at standardizing around p2p minting and burning which could be helpful: ERC-5679 Mint and Burn Tokens - #13 by xinbenlv

2 Likes

What this pattern wants to do is to use NFT to record a common moment that belongs to multiple addresses (instead of record “follow” like in previous social apps)

I think this granularity is pretty good. It’s a viable idea to bring multi-signature into scenarios like proving a shared experience.

Many IRL scenarios require multi-signatures before generating an NFT: shared moments, collaborative works, multi-party agreements, comment sys. Maybe the process can be standardized.

We are implementing a Semantic SBT to encode the social relationships on Ethereum Identity Ecosystem. MultiSig can be used in the case you described. See my post here:

We have the article here describing our idea of Semantic SBTs.

We are drafting a EIP now. Shoot me an email to discuss. j.chang@relationlabs.ai

@TimDaub 's design(EIP-4973) is directed, A->B B->A
@ChrisWong 's design is undirected, A-B, A-B-C

In fact, the input parameters of EIP-4973 (give and take) and ChrisWong’s initilizeNFT are very similar. But what they express do not belong to the same category. There are mainly two differences: 1.directed or undirected -ness of relationship 2.whether binding relationship of more than 2 addresses.

IMHO both are needed in real life.

I think in EIP-4973 we also want to solve for undirected consensual mints. I’ve called these things agreements where potentially two parties consent to minting a token that then however appears in both of their wallets, almost like a contract that two or more parties signed. Here’s that post: EIP-4973 - Account-bound Tokens - #125 by TimDaub

suggested name: NFT co-minting

This proposal expresses a process that multiple people create and mint an NFT together to record a thing shared by all parties.

The proposal should include:

  • the standard of registration and authentication
  • mint method (mint individually or mint for all)
  • whether the token can be transferred.
  • revokability

This is needed both in real society and socially in games. It’s a web3-native way of expressing relationships. I believe in the near future, it will become a ubiquitous basic proposal.

The proposal should not be limited to soulbound tokens. It’s also applicable to transferable NFTs.