# 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!