Docs
Protocol
Protocol

Overview

All social activities can be characterized as interactions between different entities.

Entities

Crossbell is EVM-compatible, so two types of entities are inherited directly: crypto addresses and assets (NFTs/cryptocurrencies/etc.). However, in order to create a more comprehensive image for social activities, two additional entities are introduced in the Crossbell world: characters and notes. Characters are created and owned by a crypto address, and the character owner can post any notes under one of their characters.

Interaction

The most basic interaction that takes place in social activities is "following". However, there are numerous other types of interactions, such as:

  • character1 "super follows" character2
  • character3 "dates" with character4
  • note2 "comments" on note1
  • character1 "shares" note1 (interactions between different types of entities are also possible)
  • character1 "blocks" address3
  • etc.

In Crossbell, all such interactions are generalized as "links". Links can be emitted from either characters or notes, and they can point to any entity on Crossbell, or any external entity with a URI. Each link also has a type (e.g. "follow", "comment", etc.), which suggests its underlying meaning.

Ethereum addressCharacterNoteAsset on Crossbell (NFT/cryptocurrency/etc.)Any URI
Characterβœ“βœ“βœ“βœ“βœ“
Noteβœ“βœ“βœ“βœ“βœ“

Capitalization

Capitalization is closely related to ownership. It is not always easy to determine which entities should be native assets on Crossbell. After careful consideration, two types of information are proposed as native assets, and a manual approach is available for capitalizing non-asset information.

Characters

Each character is natively created as an NFT.

Linklists

All the linking objects with the same link type, emitted from a character, are natively aggregated as an NFT. Linklists can only be transferred along with the character NFT. As linking objects emitted from notes do not aggregate as same meaningful and valuable information as those from a character, they are not natively capitalized as NFTs.

Mint

In addition to the two native assets on Crossbell, there is a manual approach called "Mint" for converting non-NFT information into an NFT. For example, a note posted under a character is not natively an NFT. To manually capitalize such valuable or memorable single notes, a crypto address can mint the note to receive an NFT. It is like the note being a manual draft by the author, and when someone else mints it, the content is published as a book. The more users mint the notes, the more books are printed and sold.

Modularity

The protocol is composed of instances, links, and mints, which help to sketch the basics of social activities. For further flexibility and composability, two types of modules can be configured on the action object: link modules and mint modules. Each module is a standalone contract that adheres to a specific interface. The undetermined states within the contract hold unlimited potential. When an instance is linked, the corresponding link module is triggered; when a note is minted, the corresponding mint module is triggered. For example, a character can set a link module for itself so that the first 1000 followers get a special NFT; a character owner can set a mint module for any of their notes, requiring the minter to pay a specific amount of tokens.

Link modules cannot revert link interactions, as links are essentially used to deliver information within the context of social activities. Mint modules, on the other hand, can revert mint interactions, as minting generates new assets and involves property rights or copyright.

Deployed Blockchain and Contract Address

The protocol has been deployed on Crossbell network. The faucet and explorer can be found at:

The contract has been deployed at:

Web3Entry Proxy (for interactions only)0xa6f969045641Cf486a747A2688F3a5A6d43cd0D8
Web3Entry Implementation0x4dd1ed784b0C2bdF58a16e6311ad8E3f533401e8
Linklist Token Proxy0xFc8C75bD5c26F50798758f387B698f207a016b6A
Linklist Token Implementation0x7A74557aC8b06D5f13d15BF7444D0c524eB820D0
InteractionLogic0x315f6A340441878A09692d0D59CeE826ff57CDBb
LinkModuleLogic0xFC63B6Af4b5436d7Cf0e77782dFf8756f42F71AD
CharacterLogic0xf9eC2A9338C81DF2a771e0BBC98C8F43787CA805
PostLogic0xEA971E76e375438ae6E48EBF90D8c6635475a613
LinkLogic0x9BAdE758A6F1A72fecc9922516fa75C8A624D990
MintNFT0x7bB160FAbC629a8B288499cE9B48eEabD46CF3e1
Periphery0x96e96b7AF62D628cE7eb2016D2c1D2786614eA73
Periphery Implementation0x59702aB0abcD5aE5F5e25AF664B93dab59401C32
Resolver0xa5fa5302Be191fA9f8e7C35Cf5758D8bfDF4C90f