# Syndicate Workshop - Deploy on Degen ### Feel free to reach out with any questions! #### Telegram: WillPapper #### Warpcast: [Will](https://warpcast.com/will) #### Syndicate Warpcast Channel: https://warpcast.com/~/channel/syndicate --- 1. **Sign up on https://dashboard.syndicate.io/** --- 2. **Create a new project. Set the following:** Name: `Deploy on Degen Workshop` Environment: `Staging` Chain: `Degen` --- 3. **Create your demo NFT:** You can find `YOUR_PROJECT_ID` in the Settings under General You can find `YOUR_API_KEY` in the Settings under API Keys. For `0x_CONTRACT_OWNER`, you can put your own wallet address or the Transaction Wallet (typically people use Ledgers or multi-sigs, but this is just a demo): --- Template for contract creation: ``` curl -H 'Authorization: Bearer YOUR_API_KEY' \ -H "Content-type: application/json" \ -d '{ "projectId": "YOUR_PROJECT_ID", "contractAddress": "0xfBFeE6E588cbD17357F2651B67ef3c30DA5bcAEA", "chainId": 666666666, "functionSignature": "createWithOpenMint(address owner,string calldata name,string calldata symbol)", "args": { "owner": "0x_CONTRACT_OWNER", "name": "Deploy on Degen Workshop", "symbol": "DEPLOY" } }' \ 'https://api.syndicate.io/transact/sendTransaction' ``` --- Example of my transaction (use this if anything breaks, API key will be invalidated after the workshop): ``` curl -H 'Authorization: Bearer Vc3XL6qaM8DbnLJ7lLrX' \ -H "Content-type: application/json" \ -d '{ "projectId": "59297242-769d-4faa-a36a-1124475ca71e", "contractAddress": "0xfBFeE6E588cbD17357F2651B67ef3c30DA5bcAEA", "chainId": 666666666, "functionSignature": "createWithOpenMint(address owner,string calldata name,string calldata symbol)", "args": { "owner": "0x670Ff38faD4D188C2F70f0611aD8706734A558c5", "name": "Deploy on Degen Workshop", "symbol": "DEPLOY" } }' \ 'https://api.syndicate.io/transact/sendTransaction' ``` --- 4. **Gas is automatically added to your wallet. The transaction is broadcast!** --- 5. **Go to the dashboard and click the transaction hash.** From the transaction hash, go to Internal Transactions. The `CREATE2` is your NFT. The `CREATE` is your mint module: https://explorer.degen.tips/tx/0x7f543bb3f489accf5411c605303996266f572371260193b0b81994371d2a7f2f?tab=internal Copy the address of your `CREATE` contract call. (I promise that this will become clearer to read after you broadcast your first mint!) --- 6. **Broadcast your mint.** `DEMO_MINT_MODULE_CONTRACT_ADDRESS` is the `CREATE` from before: --- Template for the mint: ``` curl -H 'Authorization: Bearer YOUR_API_KEY' \ -H "Content-type: application/json" \ -d '{ "projectId": "YOUR_PROJECT_ID", "contractAddress": "DEMO_MINT_MODULE_CONTRACT_ADDRESS", "chainId": 666666666, "functionSignature": "mint(address account)", "args": { "account": "0x3Cbd57dA2F08b3268da07E5C9038C11861828637" } }' \ 'https://api.syndicate.io/transact/sendTransaction' ``` --- Example of my transaction (use this if anything breaks, API key will be invalidated after the workshop): ``` curl -H 'Authorization: Bearer Vc3XL6qaM8DbnLJ7lLrX' \ -H "Content-type: application/json" \ -d '{ "projectId": "59297242-769d-4faa-a36a-1124475ca71e", "contractAddress": "0xdEf186CDAE3a9B96cf0Ce41BCBe290C0430eeb56", "chainId": 666666666, "functionSignature": "mint(address account)", "args": { "account": "0x3Cbd57dA2F08b3268da07E5C9038C11861828637" } }' \ 'https://api.syndicate.io/transact/sendTransaction' ``` --- 7. **The mint is broadcast!** Check your dashboard and click the transaction hash: https://explorer.degen.tips/tx/0x067bc4ff6638039e4ec87a18943f9c415464e0e9375047ff91438f1be801ce66. You’ll notice that the `CREATE2` from before is now recorded as a token on Blockscout. --- 8. **Let’s have some fun with this and run 100 mints!** ``` #!/bin/bash api_key='Vc3XL6qaM8DbnLJ7lLrX' project_id='59297242-769d-4faa-a36a-1124475ca71e' contract_address='0xdEf186CDAE3a9B96cf0Ce41BCBe290C0430eeb56' chain_id=666666666 function_signature='mint(address account)' account='0x3Cbd57dA2F08b3268da07E5C9038C11861828637' api_url='https://api.syndicate.io/transact/sendTransaction' for ((i=1; i<=100; i++)) do response=$(curl -s -H "Authorization: Bearer $api_key" \ -H "Content-type: application/json" \ -d '{ "projectId": "'"$project_id"'", "contractAddress": "'"$contract_address"'", "chainId": '"$chain_id"', "functionSignature": "'"$function_signature"'", "args": { "account": "'"$account"'" } }' \ "$api_url") transaction_id=$(echo "$response" | jq -r '.transactionId') echo "Mint count: $i, Transaction ID: $transaction_id" done ``` All mints are queued and broadcast automatically over time. All gas is subsidized as well!