Monad Hackathon Guide
Welcome to the first ever Monad Hackathon! This document serves as a guide for integrating 0x into your hackathon projects. Our team is here to assist you.
Questions? Feel free to reach us at the following:
- Join our Discord
- Find the 0x team at the Monad Hackathon (Feb 24-25)
- Visit the 0x Booth at ETHDenver (Feb 27 - Mar 2)
Overview
Bounty Prize
$5,000 to the best integration of 0x Swap API on Monad Testnet.
Must demonstrate submitting a transaction, not just retrieving pricing data.
After the hackathon, selected participants may be considered for future collaborations or partnerships with 0x. We love featuring innovative builders!
Hackathon Ideas
This bounty challenges you to build impactful applications on Monad using 0x APIs.
Suggested Focus Areas (but not limited to):
AI
- AI trading bots
- Onchain AI agents
SocialFi
- Peer-to-peer payments
- Account tracker / copy-trades
Token Management
- Token screening tools
- Portfolio manager
- Token vesting tools
- Index rebalancing
- Trading platform
Other Consumer Products
- Wallets
- Bridges
- Prediction markets
📌 Looking for inspiration? Check out our case studies featuring real-world integrations!
What is 0x?
0x offers professional-grade APIs that aggregate and enable swaps at the best price on 9+ million tokens across 130+ DEXes on your favoriate EVM-compatible chains.
- Swap API → Easily embed swaps with best-execution pricing.
Trusted by: Coinbase Wallet, Matcha, Phantom, DefiLlama, Robinhood Wallet, Definitive, TrustWallet, deBridge, Socket, Li.Fi, MetaMask, Rainbow, Interface, Burner, and many more.
Try It Out
Run this cURL request to get a live swap quote for selling 100 WMONAD for USDT:
// Replace "YOUR_API_KEY" with your actual API key from https://dashboard.0x.org/create-account
curl --request GET \
--url "https://api.0x.org/swap/permit2/quote?sellAmount=100000000000000000000&chainId=10143&sellToken=0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701&buyToken=0xfBC2D240A5eD44231AcA3A9e9066bc4b33f01149&taker=0xb2d64FA9A19eD9b653b70ae648AA70D1e9547e06" \
--header "0x-api-key: API_KEY" \
--header "0x-version: v2"
You will receive a response that looks like this (see API Reference for details):
Expand to see response
{
"blockNumber": "4207992",
"buyAmount": "34084",
"buyToken": "0xfbc2d240a5ed44231aca3a9e9066bc4b33f01149",
"fees": {
"integratorFee": null,
"zeroExFee": {
"amount": "51",
"token": "0xfbc2d240a5ed44231aca3a9e9066bc4b33f01149",
"type": "volume"
},
"gasFee": null
},
"issues": {
"allowance": {
"actual": "0",
"spender": "0x000000000022d473030f116ddee9f6b43ac78ba3"
},
"balance": null,
"simulationIncomplete": false,
"invalidSourcesPassed": []
},
"liquidityAvailable": true,
"minBuyAmount": "33744",
"permit2": {
"type": "Permit2",
"hash": "0x150733c60db8fdd8b0a069202a468461f0f2c8b2ea1c3841fe7de7140246b3b1",
"eip712": {
"types": {
"EIP712Domain": [
{
"name": "name",
"type": "string"
},
{
"name": "chainId",
"type": "uint256"
},
{
"name": "verifyingContract",
"type": "address"
}
],
"PermitTransferFrom": [
{
"name": "permitted",
"type": "TokenPermissions"
},
{
"name": "spender",
"type": "address"
},
{
"name": "nonce",
"type": "uint256"
},
{
"name": "deadline",
"type": "uint256"
}
],
"TokenPermissions": [
{
"name": "token",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
}
]
},
"domain": {
"name": "Permit2",
"chainId": 10143,
"verifyingContract": "0x000000000022d473030f116ddee9f6b43ac78ba3"
},
"message": {
"permitted": {
"token": "0x760afe86e5de5fa0ee542fc7b7b713e1c5425701",
"amount": "100000000000000000000"
},
"spender": "0x07f37e56bc55b7f927807171647c2eee95c78f31",
"nonce": "2241959297937691820908574931991589",
"deadline": "1740090601"
},
"primaryType": "PermitTransferFrom"
}
},
"route": {
"fills": [
{
"from": "0x760afe86e5de5fa0ee542fc7b7b713e1c5425701",
"to": "0xfbc2d240a5ed44231aca3a9e9066bc4b33f01149",
"source": "Uniswap_V2",
"proportionBps": "10000"
}
],
"tokens": [
{
"address": "0x760afe86e5de5fa0ee542fc7b7b713e1c5425701",
"symbol": "WMON"
},
{
"address": "0xfbc2d240a5ed44231aca3a9e9066bc4b33f01149",
"symbol": "USDT"
}
]
},
"sellAmount": "100000000000000000000",
"sellToken": "0x760afe86e5de5fa0ee542fc7b7b713e1c5425701",
"tokenMetadata": {
"buyToken": {
"buyTaxBps": "0",
"sellTaxBps": "0"
},
"sellToken": {
"buyTaxBps": "0",
"sellTaxBps": "0"
}
},
"totalNetworkFee": "14851462500000000",
"transaction": {
"to": "0x07f37e56bc55b7f927807171647c2eee95c78f31",
"data": "0x1fff991f000000000000000000000000b2d64fa9a19ed9b653b70ae648aa70d1e9547e06000000000000000000000000fbc2d240a5ed44231aca3a9e9066bc4b33f0114900000000000000000000000000000000000000000000000000000000000083d000000000000000000000000000000000000000000000000000000000000000a0a0816374f4eca88cea608f3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000c4103b48be00000000000000000000000007f37e56bc55b7f927807171647c2eee95c78f31000000000000000000000000760afe86e5de5fa0ee542fc7b7b713e1c5425701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035b74531e11bdf8f8dbdce2bfccee186ca55c6d80000000000000000000000000000000000000000000000000000000000001e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012438c9c147000000000000000000000000fbc2d240a5ed44231aca3a9e9066bc4b33f01149000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000fbc2d240a5ed44231aca3a9e9066bc4b33f01149000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000ad01c20d5886137e056775af56915de824c8fce500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffc1fb425e00000000000000000000000035b74531e11bdf8f8dbdce2bfccee186ca55c6d8000000000000000000000000760afe86e5de5fa0ee542fc7b7b713e1c54257010000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000006e898131631616b1779bad70bc250000000000000000000000000000000000000000000000000000000067b7ace900000000000000000000000000000000000000000000000000000000000000c0",
"gas": "264026",
"gasPrice": "56250000000",
"value": "0"
},
"zid": "0xa0816374f4eca88cea608f3c"
}
0x Bounty Prize
0x is offering $5,000 to the best integration of 0x v2 Swap API on Monad Testnet.
Integrations must demonstrate submitting a transaction, not just retrieving pricing data from the endpoint. Read here for judging criteria.
After the Hackathon, prize winners and participants of the 0x bounty may be selected for future collaborations or partnerships. We love featuring our integrators and showcasing their work!
Judging Criteria
To qualify for the bounty, projects must:
🛠 Use of 0x Swap API
- Must integrate Swap API on Monad Testnet
- Must demonstrate submitting a transaction, not just fetching pricing data
💻 Code Completeness
- Built on Monad Testnet (Chain ID: 10143)
- Code must be written during the hackathon (Fresh Code Rule)
- High-quality, well-documented, and technically sound code
🌐 Market Adoption
- Project addresses a real-world use case
- Potential to attract users and adoption
🌈 Design
- If applicable, the UI/UX should be intuitive and user-friendly
✏️ Presentation Quality
- Clearly explains the problem, solution, and how 0x is integrated
- Demonstrates app architecture and functionality
Resources
Swap API
Learn
Code Examples
- 0x Examples Repo
- Swap API v2 Demo App (Permit2) using Next.js
- Swap API v2 (Permit2) Headless Example
- Swap API v2 (AllowanceHolder) Headless Example
- Use Swap API v2 in Your Smart Contract with Foundry
FAQs
Below are some commonly asked questions at hackathons. For a full list of 0x FAQs, see here.
What is the chain ID for Monad Testnet?
Monad Testnet's chain ID is 10143. See all our supported chains.
What's the Monad Testnet Explorer?
What tokens can I use for testing on Monad Testnet?
Try one of the top tokens listed here: https://testnet.monadexplorer.com/tokens
Note the following:
- Testnet liquidity is more limited than on mainnet
- Liquidity sources are also different between mainnets and testnets
- Not all pairs on mainnet are deployed on testnet, so the token pair availability is more limited
- Be aware that token you want to use for testing must have liquidity on at least one of the liquidity /sources; otherwise, you will receive an error.
Which other chains does 0x support?
See here for a list of all our supported chains.
Help, my 0x transaction reverted! How can I troubleshoot?
If your 0x quote is reverting, besides the standard revert issues related to ETH transactions, we recommend check the following are set correctly:
- Are allowances properly set for the user to trade the
sellToken
? - Does the user have enough
sellToken
balance to execute the swap? - Do users have enough to pay the gas?
- The slippage tolerance may be too low if the liquidity is very shallow for the token the user is trying to swap. Read here for how to handle this.
For more details on addressing common issues, read 0x FAQ & Troubleshooting
In my app flow, the transaction will need to be signed by a smart contract rather than an EOA. Do you have recommendations for how to implement this?
Try the using the swap/permit2
endpoint. Read more the difference between Permit2 and AllowanceHolder for Swap API.
Job Opportunities
Find open 0x positions at: https://0x.org/careers