📄
Smart Contracts - Collectives
Common questions related to direct interactions with Syndicate smart contracts.
- 1.Navigate to a tool that allows you to execute direct smart contract interactions from the owner wallet, such as Gnosis or MyEtherWallet (both are compatible with MetaMask). If you didn't set up the club with Gnosis, you should use MyEtherWallet. For these instructions, we'll use MyEtherWallet.
- 2.Press "Access my wallet" -> "Browser extension" to connect with MetaMask.
- 3.Press "Contract" -> "Interact with Contract."
- 4.Input the following information: Contract Type: *Blank* Contract Address: The value from your Syndicate's URL. For example, if your URL is app.syndicate.io/collectives/0x4a2c85076ac921518b3af37095c49091713d619, you should paste in
0x4a2c85076ac921518b3af37095c49091713d619
. ABI/JSON Interface:transferOwnership.json
attached below Press "Interact." - 5.Input the following information: Function:
TransferOwnership
newOwner: The wallet address of the new owner of the collective Press "Write" -> "Confirm & Send."
transferOwnership.json
251B
Code
- 1.Navigate to a tool that allows you to execute direct smart contract interactions from the owner wallet, such as Gnosis or MyEtherWallet (both are compatible with MetaMask). If you didn't set up the club with Gnosis, you should use MyEtherWallet. For these instructions, we'll use MyEtherWallet.
- 2.Press "Contract" -> "Interact with Contract."
- 3.Press "Access my wallet" -> "Browser extension" to connect with MetaMask.
- 4.Input the following information: Contract Type: *Blank* Contract Address: The value from your Syndicate's URL. For example, if your URL is app.syndicate.io/clubs/0x4a2c85076ac921518b3af37095c49091713d619, you should paste in
0x4a2c85076ac921518b3af37095c49091713d619
. ABI/JSON Interface:updateTransferGuard.json
attached below Press "Interact." - 5.Input the following information: Function:
updateTransferGuard
implementation (address):0x187bb389533C4d51A445D82338A6630B5D773F4e
Press "Write" -> "Confirm & Send." - 6.Done! You have now added a royalty filter to your Syndicate Collective.
updateTransferGuard.json
255B
Code
- 1.Open your Collective in another tab. The URL of your Collective should look something like this:
https://app.syndicate.io/collectives/
<contract_address>
?chain=mainnet
- 2.Immediately before the
?
in the URL, paste the term/merkle
. - 3.Follow the instructions for enabling the allowlist module and disabling the default minting module.
- 4.Enter the addresses you would like to add to the allowlist. Click "Register Merkle Root with Contract."
- 5.Done! Your collective NFTs will now only be able to be minted by the address on your allowlist.
Make sure your collective is set to "Open to new members" and uses the "Until a max number of collective NFTs are claimed" minting parameter. If you need to modify your collective for these settings, please see the instructions here.
- 1.Navigate to a tool that allows you to execute direct smart contract interactions from the owner wallet, such as Gnosis or MyEtherWallet (both are compatible with MetaMask). If you didn't set up the collective with Gnosis, you should use MyEtherWallet. For these instructions, we'll use MyEtherWallet.
- 2.Press "Access my wallet" -> "Browser extension" to connect with MetaMask.
- 3.Press "Contract" -> "Interact with Contract."
- 4.Input the following information: Contract Type: *Blank* Contract Address:
0x19cf03a6f1190062eeafd70c42cbc5f7ecff05a8
ABI/JSON Interface:updateModule.json
attached below Press "Interact." - 5.Input the following information: Function:
updateModule
token: The value from your Collective's URL. For example, if your URL is app.syndicate.io/collectives/0x4a2c85076ac921518b3af37095c49091713d619, you should paste in0x4a2c85076ac921518b3af37095c49091713d619
. module:0xb6e77703b036bfb97dd40a22f021a85ae4a6d750
allowed:true
Press "Write" -> "Confirm & Send." - 6.Input the following information: Contract Type: *Blank* Contract Address:
0xb6e77703b036bfb97dd40a22f021a85ae4a6d750
ABI/JSON Interface:ownerMintToNAddresses.json
attached below Press "Interact." - 7.Input the following information: Function:
ownerMintToNAddresses
collectiveAddress: The value from your Collective's URL. For example, if your URL is app.syndicate.io/collectives/0x4a2c85076ac921518b3af37095c49091713d619, you should paste in0x4a2c85076ac921518b3af37095c49091713d619
. accounts: The wallet addresses receiving NFTs. For example,["0x…acc1", "0x…acc2", ...]
Press "Write" -> "Confirm & Send."
updateModule.json
443B
Code
ownerMintToNAddresses.json
470B
Code
Make sure your collective is set to "Open to new members" and uses the "Until a max number of collective NFTs are claimed" minting parameter. If you need to modify your collective for these settings, please see the instructions here.
- 1.Navigate to a tool that allows you to execute direct smart contract interactions from the owner wallet, such as Gnosis or MyEtherWallet (both are compatible with MetaMask). If you didn't set up the collective with Gnosis, you should use MyEtherWallet. For these instructions, we'll use MyEtherWallet.
- 2.Press "Access my wallet" -> "Browser extension" to connect with MetaMask.
- 3.Press "Contract" -> "Interact with Contract."
- 4.Input the following information: Contract Type: *Blank* Contract Address:
0xb6e77703b036bfb97dd40a22f021a85ae4a6d750
ABI/JSON Interface:ownerMintToNAddresses.json
attached below Press "Interact." - 5.Input the following information: Function:
ownerMintToNAddresses
collectiveAddress: The value from your Collective's URL. For example, if your URL is app.syndicate.io/collectives/0x4a2c85076ac921518b3af37095c49091713d619, you should paste in0x4a2c85076ac921518b3af37095c49091713d619
. accounts: The wallet addresses receiving NFTs. For example,["0x…acc1", "0x…acc2", ...]
Press "Write" -> "Confirm & Send."
ownerMintToNAddresses.json
470B
Code
For more information on ERC-721 metadata standards, read OpenSea's docs here: https://docs.opensea.io/docs/metadata-standards
- 1.Create a folder on your local computer. Within that folder, for each NFT in your collective, create a JSON file for your NFT's metadata. You can use any metadata format you'd like, but we've attached an example below in
metadata.json
for reference. To ensure each NFT renders the correct metadata, you must name each JSON file after the token ID it will affect. After you're done editing each JSON, remove the.json
extension. - 2.If you'd like to assign custom artwork/images as part of this metadata update, proceed to step 3. If not, skip to step 4.
- 3.Create a folder on your local computer. Within that folder, drop in your NFT artwork files. Upload and pin your artwork folder to IPFS via Pinata. You can create an account and upload up to 100 images for free. When uploading your files, please make sure you do not 'submarine' them. Then, navigate to the metadata folder you created in step 1, and in each JSON's "image" property, paste in your desired image's IPFS hash (which should look something like
ipfs://QmbufdPyW3ErPdEbWRHZo732U5xAAbr7Tzu4JtQCvDfavB/image.png
). - 4.Upload and pin your metadata folder to IPFS via Pinata. Make sure the files within your folder do not have extensions.
- 5.Next, we'll execute a series of smart contract interactions: Navigate to a tool that allows you to execute direct smart contract interactions from the owner wallet, such as Gnosis or MyEtherWallet (both are compatible with MetaMask). If you didn't set up the collective with Gnosis, you should use MyEtherWallet. For these instructions, we'll use MyEtherWallet.
- 6.Press "Access my wallet" -> "Browser extension" to connect with MetaMask.
- 7.Press "Contract" -> "Interact with Contract."
- 8.Input the following information: Contract Type: *Blank* Contract Address: The value from your Collective's URL. For example, if your URL is app.syndicate.io/collectives/0x4a2c85076ac921518b3af37095c49091713d619, you should paste in
0x4a2c85076ac921518b3af37095c49091713d619
. ABI/JSON Interface:updateRenderer.json
attached below Press "Interact." - 9.Input the following information: Function:
updateRenderer
address implementation:0xeb1081b1bc69bbc5f39c7ae4a2d26618ff8fa998
Press "Write" -> "Confirm & Send." - 10.Input the following information: Contract Type: *Blank* Contract Address:
0xeb1081b1bc69bbc5f39c7ae4a2d26618ff8fa998
ABI/JSON Interface:updateBaseTokenURI.json
attached below Press "Interact." - 11.Input the following information: Function:
updateBaseTokenURI
collective address: The value from your Collective's URL. For example, if your URL is app.syndicate.io/collectives/0x4a2c85076ac921518b3af37095c49091713d619, you should paste in0x4a2c85076ac921518b3af37095c49091713d619
. string memory baseURI: The value from your Pinanta's metadata folder URL. For example, if your URL is https://gateway.pinata.cloud/ipfs/QmbufdPyW3ErPdEbWRHZo732U5xAAbr7Tzu4JtQCvDfavB, you should paste inipfs://QmbufdPyW3ErPdEbWRHZo732U5xAAbr7Tzu4JtQCvDfavB/
. Press "Write" -> "Confirm & Send." - 12.Done! You have now updated the metadata of your NFTs. If you'd like to verify that the metadata process was executed successfully, you can perform the following contract interaction:
- 13.Input the following information: Contract Type: *Blank* Contract Address:
0xeb1081b1bc69bbc5f39c7ae4a2d26618ff8fa998
ABI/JSON Interface:tokenURIOf.json
attached below Press "Interact." - 14.Input the following information: Function:
tokenURIOf
collective address: The value from your Collective's URL. For example, if your URL is app.syndicate.io/collectives/0x4a2c85076ac921518b3af37095c49091713d619, you should paste in0x4a2c85076ac921518b3af37095c49091713d619
. tokenId: According to the wallet address you'd like to retrieve metadata for, identify the corresponding Token ID, which can be found on Etherscan. On your collective's dashboard, click the "View on Etherscan" button. Under the "More Info" modal, click on the value for "Token Tracker." Next, click on the "Inventory" tab near the bottom half of the screen. You'll then see info for both wallet addresses and corresponding token IDs. Press "Call" -> "Confirm & Send." - 15.If the metadata update process has been executed successfully, this interaction will return the IPFS hash of the metadata JSON file you set in step 11. If the two values match, you're good to go!
Please note that metadata updates to platforms like OpenSea may take as long as a few hours to render.
metadata.json
168B
Code
updateRenderer.json
254B
Code
updateBaseTokenURI.json
357B
Code
tokenURIOf.json
445B
Code
- 1.Navigate to the metadata folder on your local computer, or download it from IPFS/Pinata, and make the desired modifications to each NFT's JSON.
- 2.Upload and pin your updated metadata folder to IPFS via Pinata. Make sure the files within your folder do not have extensions.
- 3.Navigate to a tool that allows you to execute direct smart contract interactions from the owner wallet, such as Gnosis or MyEtherWallet (both are compatible with MetaMask). If you didn't set up the collective with Gnosis, you should use MyEtherWallet. For these instructions, we'll use MyEtherWallet.
- 4.Press "Access my wallet" -> "Browser extension" to connect with MetaMask.
- 5.Press "Contract" -> "Interact with Contract."
- 6.Input the following information: Contract Type: *Blank* Contract Address:
0xeb1081b1bc69bbc5f39c7ae4a2d26618ff8fa998
ABI/JSON Interface:updateBaseTokenURI.json
attached below Press "Interact." - 7.Input the following information: Function:
updateBaseTokenURI
collective address: The value from your Collective's URL. For example, if your URL is app.syndicate.io/collectives/0x4a2c85076ac921518b3af37095c49091713d619, you should paste in0x4a2c85076ac921518b3af37095c49091713d619
. string memory baseURI: The value from your Pinanta's updated metadata folder URL. For example, if your URL is https://gateway.pinata.cloud/ipfs/QmbufdPyW3ErPdEbWRHZo732U5xAAbr7Tzu4JtQCvDfavB, you should paste inipfs://QmbufdPyW3ErPdEbWRHZo732U5xAAbr7Tzu4JtQCvDfavB/
. Press "Write" -> "Confirm & Send." - 8.Done! You have now updated the metadata of your NFTs.
Please note that metadata updates to platforms like OpenSea may take as long as a few hours to render.
updateBaseTokenURI.json
357B
Code
approve.json
434B
Code
Last modified 3mo ago