❤
React
React to an NFT using a RARA reaction. This will generate an NFT (“Like Token”) for the Reactor. Add metadata to the reaction by including an IPFS hash.
Parameter Types
ReactionVault
Example
{
transformId: Uint256, // The ID of the Reaction Transform you want to use
quantity: Uint256, // The number of Reactions you'd like to send
referrerAddress: Address, // The Address that should receive referrer cuts
optionBits: Uint256, // Parameter version of the Reaction you're using
takerNFTChainId: Uint256, // Chain ID of the NFT receiving the Reaction
takerNFTAddress: Address, // Contract Address of the NFT receiving the Reaction
takerNFTId: Uint256, // Token ID of the NFT receiving the Reaction
curatorVaultOverride: Address, // Override used for alternate Curator Vaults
ipfsMetadataHash: String // Additional metadata to be saved with Reaction
}
// Polygon Mainnet
0xE5BA5c73378BC8Da94738CB04490680ae3eab88C
// Polygon Mumbai
0xA374674F97885BD378059708e97f7117CB74683d
Reaction Vault ABI
{
address: "0xA374674F97885BD378059708e97f7117CB74683d", // Mumbai Address
abi:[{
name: 'react',
stateMutability: 'payable',
type: 'function',
inputs: [
{
internalType: 'uint256',
name: 'transformId',
type: 'uint256',
},
{
internalType: 'uint256',
name: 'quantity',
type: 'uint256',
},
{
internalType: 'address',
name: 'referrer',
type: 'address',
},
{
internalType: 'uint256',
name: 'optionBits',
type: 'uint256',
},
{
internalType: 'uint256',
name: 'takerNftChainId',
type: 'uint256',
},
{
internalType: 'address',
name: 'takerNftAddress',
type: 'address',
},
{
internalType: 'uint256',
name: 'takerNftId',
type: 'uint256',
},
{
internalType: 'address',
name: 'curatorVaultOverride',
type: 'address',
},
{
internalType: 'string',
name: 'ipfsMetadataHash',
type: 'string',
},
],
outputs: []
}]
}
See ReactionVault tab for contract definitions
If you'd like to include a Comment or Tags with your Reaction, you'll need to save that information to IPFS first. If you just want to send a Reaction you can skip this step.
import { client } from 'ipfs-http-client'
interface IReactionMetadata {
comment?: String;
tags?: String[];
}
// Instantiate a new IPFS Client -- we use an IPFS node hosted by theGraph
const client = create(new URL('https://api.thegraph.com/ipfs/api/v0/'));
// Create a metadata blob to store comments and/or tags.
const reactionMetadata: IReactionMetadata = {
comment: "My first comment using the RARA! Social Curation Protocol",
tags: ["rara", "social", "curation"]
}
// Save reaction metadata on IPFS to generate an ipfsCID. Keep this ipfsCID handy as we'll use it in the next step.
const { ipfsCID } = await client.add(JSON.stringify(reactionMetadata));
To send a Reaction to an NFT, use the
react
function of the ReactionVault
. All parameters are required (see the Parameters section for more details).import { Contract, constants } from 'ethers'
// Select an NFT to receive the reaction
const TakerNFT = {
chainId: 80001,
contractAddress: 0x2953399124f0cbb46d2cbacd8a89cf0599974963,
tokenId: 107136376226630408484522358727913128313617592685310283300071728450490266025985
}
// Instantiate a Reaction Vault contract and attach a signer
const ReactionVault = new Contract(
reactionVault.address,
reactionVault.abi,
signer
);
// Call the React function with required parameters
const transaction = await ReactionVault.react(
102265098525112739997130475423667270810501597805004267158805479941320194430532, //transformId,
1, //quantity
constants.AddressZero, // referrerAddress
constants.Zero, // optionBits
TakerNFT.chainId, // takerNFT Chain ID
TakerNFT.contractAddress, // takerNFT Contract Address
TakerNFT.tokenId, // takerNFT ID
constants.AddressZero, // curatorVaultOverride
ipfsCID // "QmV3wpfESJdZTaY262rZMqGSmH8cV9ThDDxRaKDm1ZmoWs"
);
// await completion of React function call
const receipt = await transaction.wait()
All parameters are required
The number of reactions to be sent. If value is sent, the reaction quantity must equal the
value / reactionPrice
The address of the referring party. If value is sent, the referrer will be rewarded with
value * saleReferrerBasisPoints
. Use addressZero
if no referrerAddress
is set.This parameter can be used to create different versions of the reaction NFT. Use
0
if optionBits
are not set.Chain ID of the NFT receiving reactions
Contract Address of the NFT receiving reactions
Token ID of the NFT receiving reactions
This parameter allows for multiple Curator Vaults. Use
addressZero
if curatorVaultOverride
is not set.This parameter can be used to embed additional data about the user interaction. Use
maxInt256
if ipfsMetadataHash
is not set.