How to Check Available Tokens
This guide explains how to find which tokens are available for betting in the BetSwirl protocol on different blockchain networks. It is only useful if you want to filter the tokens available on your app. By default, all tokens are displayed.
Note: This library supports multiple blockchain networks. See the list below for all supported chains.
Bank Contract Addresses
The Bank contract manages all available tokens. Here are the addresses by network:
Mainnet Networks (Same Address)
All mainnet networks use the same Bank contract address: 0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFA
- Base (8453): 0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFAย
- Arbitrum (42161): 0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFAย
- Polygon (137): 0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFAย
- Avalanche (43114): 0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFAย
- BSC (56): 0x8FB3110015FBCAA469ee45B64dcd2BdF544B9CFAย
Testnet Networks
- Base Sepolia (84532): 0x637D401554875a330264e910A3778DAf549F2021ย
- Polygon Amoy (80002): 0x89D47048152581633579450DC4888C931CD4c28Cย
- Avalanche Fuji (43113): 0x25bED5A341218Df801a64951d02d3c968E84a6d4ย
- Arbitrum Sepolia (421614): 0x3ca54e047aE5f9141b49c6817aa7994CDc589d19ย
Step-by-Step Guide to Check Tokens
1. Open the Block Explorer
Choose the appropriate block explorer for your network:
Mainnet:
- Base: https://basescan.orgย
- Arbitrum: https://arbiscan.ioย
- Polygon: https://polygonscan.comย
- Avalanche: https://snowtrace.ioย
- BSC: https://bscscan.comย
Testnet:
- Base Sepolia: https://sepolia.basescan.orgย
- Arbitrum Sepolia: https://sepolia.arbiscan.ioย
- Polygon Amoy: https://amoy.polygonscan.comย
- Avalanche Fuji: https://testnet.snowtrace.ioย
2. Navigate to the Bank Contract
- Paste the Bank contract address in the search bar
- Click on the address to open the contract page
- Click on the โContractโ tab
- Click on โRead Contractโ (not Write Contract)
3. Find and Call getTokens()
- Look for the function called
getTokensin the list - Click on it to expand
- Click the โQueryโ button (no wallet connection needed)
4. Understanding the Response
Youโll get an array of tuples. Each tuple represents a token with this structure:
[decimals, address, name, symbol, allowed, paused, balanceRisk, ...]Example response from Base:
[
[18, 0x0000000000000000000000000000000000000000, "ETH", "ETH", true, false, 200, ...],
[18, 0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed, "Degen", "DEGEN", true, false, 1000, ...],
[6, 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, "USD Coin", "USDC", true, false, 200, ...]
]Field Explanation
| Index | Field | Description |
|---|---|---|
| 0 | decimals | Token decimals (18 for most, 6 for USDC) |
| 1 | address | Token contract address |
| 2 | name | Full token name |
| 3 | symbol | Token symbol |
| 4 | allowed | true if token is allowed for betting |
| 5 | paused | true if token is temporarily disabled |
| 6 | balanceRisk | Risk percentage in basis points |
Using Tokens in Your Code
Once you know which tokens are available, you can use them in your app:
import type { TokenWithImage } from '@betswirl/ui-react'
import { base, polygon, arbitrum } from 'wagmi/chains'
// Example token configuration
const tokens = [
"0x0000000000000000000000000000000000000000", // Native token (ETH on Base, MATIC on Polygon, etc.)
"0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed", // DEGEN (Base)
"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC (Base)
] as Hex[]
// Use in BetSwirlSDKProvider with multi-chain support
<BetSwirlSDKProvider
initialChainId={base.id}
supportedChains={[base.id, polygon.id, arbitrum.id]}
filteredTokens={[DEGEN_TOKEN.address, NATIVE_TOKEN.address]} // Optional: limit available tokens
>
<YourApp />
</BetSwirlSDKProvider>Token Filtering
The filteredTokens prop allows you to control which tokens are available for users to select in your application.
How Token Filtering Works
- Without filtering - All active tokens from the Bank contract are available
- With filtering - Only tokens whose addresses are in the
filteredTokensarray are available - Invalid addresses - Tokens not found in the Bank contract of the current chain are automatically excluded
Common Use Cases
Limit to specific tokens for your application:
// Example: Only allow ETH, USDC, and DEGEN
const ALLOWED_TOKENS = [
"0x0000000000000000000000000000000000000000", // ETH
"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed", // DEGEN
]
<BetSwirlSDKProvider
initialChainId={base.id}
filteredTokens={ALLOWED_TOKENS}
>
<App />
</BetSwirlSDKProvider>Dynamic Token Filtering
You can change the filtered tokens dynamically based on application state:
const [filteredTokens, setFilteredTokens] = useState<string[]>([
"0x0000000000000000000000000000000000000000", // ETH
"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
])
// Update filtering based on user action
const showAllTokens = () => setFilteredTokens(undefined)
const showStableOnly = () => setFilteredTokens([
"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
])
return (
<BetSwirlSDKProvider
initialChainId={base.id}
filteredTokens={filteredTokens}
>
<App />
</BetSwirlSDKProvider>
)Available Tokens by Network (as of November 2025)
Base
- ETH - Native token (
0x0000000000000000000000000000000000000000) - DEGEN -
0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed - USDC -
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 - BETS -
0x94025780a1aB58868D9B2dBBB775f44b32e8E6e5 - PEPE -
0x52b492a33E447Cdb854c7FC19F1e57E8BfA1777D
Other Networks
Check using the steps above as token availability may vary by network.