Registering NFTs allow them to be used as reactions in the RARA protocol.
To sell Reactions as a Maker or to claim curation rewards as a Taker, the referenced NFT must be registered in the system. Registration is simply proving ownership of the NFT to the protocol contracts by the owner’s wallet. It does NOT involve sending the NFT to a different address, wrapping the NFT into another contract, or allowing any other contract to move the NFT on your behalf. This allows the user to maintain control over the NFT with their highest security, but still use the NFT in the RARA protocol.
When a wallet registers an NFT, they interact with the MakerRegistrar Contract. The address that owns the NFT calls the “registerNFT()” function and passes the relevant information, such as the NFT address and NFT ID. The contracts will then verify that the calling address owns the NFT, and if so, register it in the protocol. From then on, the owner of the NFT can sell Reactions or claim any accrued Taker rewards.

Cross Chain

Since the RARA protocol runs on the Polygon L2 and most really valuable NFTs live on Ethereum L1, RARA has built a way to bridge registration from L1 to L2. To do this, the owner of the L1 NFT can interact with the RootRegistrar Contract and call the “registerNFT” function. This logic will perform the same ownership checks on L1 as would occur on L2, and then send a message up to the contracts on L2 that will allow the NFT to be registered. Internally, the contracts keep track of the “chain ID” that each NFT lives on in order to distinguish L1 and L2 NFTs. Once the register transaction is confirmed on L1, it will take about 15 minutes for the message to be relayed up to L2 before the NFT is fully registered in the protocol.

NFT Creator Rewards

As a creator of an NFT, you may have set up creator royalties when you minted it. The protocol will honor these royalties any time the NFT is involved in an interaction that earns the current owner a fee. The creator will be rewarded out of the owner's rewards in the percentage specified.
Under the covers, RaRa uses the Royalty Registry to query a creator percentage cut. The Royalty Registry supports:
  • EIP2981 compatible NFTs
  • Minted NFTs with creator rewards defined on
    • SuperRare
    • Rarible
    • Manifold
    • Zora (limited functionality)
If you have an NFT that was minted outside of these platforms and standards, you can still earn rewards by creating a royalty override contract and registering it. See the documentation at the Royalty Registry for details on how to implement this.
Additionally, even if your contract does not have any on-chain details about royalties, the owner who registers the NFT in the protocol can optionally add the parameters to enable you to collect rewards. The registration API allows the caller to input a “Creator Address” and a “Creator Sale Basis Points”. The amount specified in the basis points will be used to calculate the percentage of royalties for the Creator. If royalty details are found on-chain with the Royalty Registry, these will override any royalty information that the user manually set on the registration call.

Source ID

When an NFT is registered in the system, it is assigned a Source ID. This is a unique ID derived from hashing the chain ID, NFT Address, and NFT ID. See “_deriveSourceId()” in the MakerRegistrar Contract. This ID is used to identify the NFT for any future references across contract calls. The Source ID is a 1-to-1 mapping of ID to NFT.

Option Bits

When an NFT is registered in the system, the caller can optionally specify Option Bits. This input parameter signals intent of the caller to transform the original NFT in some way to be used as a Reaction. This could be adding a border to the image, resizing it, or cropping it.
Transform ID In order to reference NFTs used as Reactions, a Transform ID is used to combine the 1-to-1 Source ID and Options Bits combination. Since an NFT can be registered multiple times with different Option Bits, this unique ID will be a 1-to-1 mapping between the “transformed” Reaction NFT and the ID. The Transform ID is a hash of the Source ID plus the Option Bits.

Registration Function

  • nftContractAddress - Address of NFT to be registered
  • nftId - ID of NFT to be registered
  • creatorAddress - (optional) Address of the creator to give creatorSaleBasisPoints cut of Maker rewards
  • creatorSaleBasisPoints (optional) Basis points for the creator during a reaction sale
  • optionBits - (optional) Params to allow owner to specify options or transformations performed during registration
The first two parameters are the only required items. All other items can be passed as 0 if it is not desired to be set.
RARA, the Social Curation Protocol for NFTs. © 2020-2023 RARA Social Inc.