Flare network
Skill Thanasimos/Thanas-flare-builders-toolkit/flare-network
Comprehensive Claude Code skill bundle for Flare-family EVM development: chain registry, FTSO/FDC/FAssets/Smart Accounts protocols, Enosys + SparkDEX integrations, Flare-specific security overlays, and audit/gas/test workflows.
npx -y skills add Thanasimos/Thanas-flare-builders-toolkit --skill flare-networkAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Concrete deployment registry for the Flare-family chains (Flare, Songbird, Coston2, Coston). Use when you need: a chain ID, an RPC URL, a block explorer URL, a token address (WFLR, USDT0, sFLR, FXRP, USDC, etc.), or the address of an ecosystem contract (Permit2, Multicall3, Enosys V3 / SparkDEX V3.1 / SparkDEX V4 / BlazeSwap / OpenOcean factories/routers/quoters/position-managers). Trigger on any mention of: "what's the address of X on Flare", "RPC for Songbird", "explorer API for Coston2", "is Permit2 deployed on Songbird", "WFLR address", "Multicall3 on Flare", "verify contract on flarescan", or any chain-info / address-lookup question. Pair with `flare-general` for protocol/architecture descriptions; this skill is the addresses- and-endpoints registry.
SKILL.md
14.3 KB, as published. Nobody here has run it
Flare Network — Deployment Registry
Authoritative addresses + endpoints for the Flare-family chains. For protocol
architecture (FTSO, FDC, FAssets, Smart Accounts), see the flare-general skill.
This skill answers "WHERE is X" questions — concrete addresses, RPC URLs, explorer
endpoints, and verification commands.
If you're unsure whether something is in scope: this skill is for deployed
contracts and network endpoints. Anything about how a protocol works lives in
the protocol-specific skills (flare-ftso, flare-fassets, etc.).
Chain matrix
| Chain | ID | Type | Native | Wrapped Native | Block Time |
|---|---|---|---|---|---|
| Flare | 14 | Mainnet | FLR | WFLR | ~2s |
| Songbird | 19 | Canary mainnet (real $) | SGB | WSGB | ~2s |
| Coston2 | 114 | Flare testnet | C2FLR | WC2FLR | ~2s |
| Coston | 16 | Songbird testnet | CFLR | WCFLR | ~2s |
RPC endpoints
Public RPCs (rate-limited, 30-block eth_getLogs cap)
flare: https://flare-api.flare.network/ext/C/rpc
songbird: https://songbird-api.flare.network/ext/C/rpc
coston2: https://coston2-api.flare.network/ext/C/rpc
coston: https://coston-api.flare.network/ext/C/rpc
Faster / paid alternatives
| Provider | Notes |
|---|---|
| Ankr (paid tier) | https://rpc.ankr.com/flare/<KEY> — domain-locked browser keys (origin-restricted); separate IP-locked key needed for server-side scripts/forge. Lifts eth_getLogs to ~5k blocks. |
Origin lock note — a browser-locked Ankr key returns Origin not allowed (-32079) to curl / forge-script. Use the public RPC for deploys; reserve Ankr for browser code.
Block explorers
Flare
| Explorer | API | Verifier type |
|---|---|---|
https://flare-explorer.flare.network (Blockscout) | https://flare-explorer.flare.network/api/ | blockscout |
https://flarescan.com (Routescan-backed) | https://api.routescan.io/v2/network/mainnet/evm/14/etherscan | etherscan |
Songbird
| Explorer | API | Verifier type |
|---|---|---|
https://songbird-explorer.flare.network | https://songbird-explorer.flare.network/api/ | blockscout |
https://songbird.flarescan.com | https://api.routescan.io/v2/network/mainnet/evm/19/etherscan | etherscan |
Coston2
| Explorer | API | Verifier type |
|---|---|---|
https://coston2-explorer.flare.network | https://coston2-explorer.flare.network/api/ | blockscout |
https://coston2.flarescan.com | https://api.routescan.io/v2/network/testnet/evm/114/etherscan | etherscan |
Verification command (Foundry)
Both explorer families work via forge verify-contract:
# Blockscout (no API key needed)
forge verify-contract \
--rpc-url flare \
--verifier blockscout \
--verifier-url "https://flare-explorer.flare.network/api/" \
--num-of-optimizations 200 --compiler-version 0.8.24 \
--constructor-args $ENCODED_ARGS \
$ADDRESS \
src/MyContract.sol:MyContract
# Routescan / Etherscan-style (use literal "verifyContract" as the key)
forge verify-contract \
--verifier etherscan \
--verifier-url "https://api.routescan.io/v2/network/mainnet/evm/14/etherscan" \
--etherscan-api-key "verifyContract" \
--num-of-optimizations 200 --compiler-version 0.8.24 \
--constructor-args $ENCODED_ARGS \
$ADDRESS \
src/MyContract.sol:MyContract
Constructor args go in via --constructor-args 0x.... Get them from the broadcast log:
broadcast/Deploy.s.sol/<chainId>/run-latest.json → transactions[i].arguments,
then cast abi-encode "constructor(...)" <args...> to encode.
Cross-chain infrastructure
Permit2 (Uniswap canonical)
0x000000000022D473030F116dDEE9F6B43aC78BA3 — deployed on Flare ONLY (chain 14).
NOT deployed on Songbird, NOT deployed on Coston2. Verify via:
cast code 0x000000000022D473030F116dDEE9F6B43aC78BA3 --rpc-url <chain>
# Returns full bytecode on Flare; returns 0x on Songbird/Coston2
Implication: Permit2-dependent contracts (batch sweeps, signed-permit flows) cannot be canary-tested on Songbird. Either deploy your own Permit2 fork there (~3000 LOC), use mocks, or skip Songbird and validate via Flare fork tests only.
Multicall3
0xcA11bde05977b3631167028862bE2a173976CA11 on all Flare-family chains (Flare,
Songbird, Coston2). Standard Multicall3 ABI. Useful for batched RPC reads.
When defining a custom chain in viem, you must explicitly register contracts.multicall3
or publicClient.multicall(...) will throw silently:
defineChain({
id: 14,
name: 'Flare',
// ...
contracts: {
multicall3: {
address: '0xcA11bde05977b3631167028862bE2a173976CA11',
blockCreated: 3002461,
},
},
})
Tokens
Addresses are case-insensitive on the EVM but stored canonical-checksummed below.
Flare (chain 14)
| Symbol | Address | Decimals | Notes |
|---|---|---|---|
| WFLR | 0x1D80c49BbBCd1C0911346656B529DF9E5c2F783d | 18 | Wrapped native; FTSO delegation hooks (see flare-dapp-pitfalls) |
| sFLR | 0x12e605bc104e93B45e1aD99F9e555f659051c2BB | 18 | Liquid-staked FLR |
| USDT0 | 0xe7cd86e13AC4309349F30B3435a9d337750fC82D | 6 | Tether's Flare deployment; blacklistable |
| USDC.e | 0xfbDa5F676cB37624f28265A144A48B0d6e87d3b6 | 6 | LayerZero-bridged USDC; blacklistable |
| FXRP | 0x9b27dF2BC1AC0F5dE8f43eF1e7df45f5be17Bf08 | 6 | FAssets-bridged XRP (see flare-fassets) |
| HLN | 0x140Df95E16D9eF21BD4d97c8E5A1bD4D04d23739 | 18 | Enosys governance token |
| APS | 0x6b8758DB1148Cb5e8A6c3D3a2c34a4eFf5Ed0e80 | 18 | Enosys auto-pool stake |
| eUSDT | 0x96B41289D90444B8adD57e6F265DB5aE8651DF29 | 6 | Enosys-wrapped USDT |
| rFLR | 0x26d460c3Cf931Fb2014FA436a49e3Af08619810e | 18 | Reward FLR (FlareDrops) |
Songbird (chain 19)
| Symbol | Address | Decimals | Notes |
|---|---|---|---|
| WSGB | 0x02f0826ef6aD107Cfc861152B32B52fD11BaB9ED | 18 | Wrapped native |
| USDT_SG | 0x99e1A4329afA76e0fC34C9bd56b016A509ECD37e | 6 | Songbird USDT variant |
Coston2 (chain 114, testnet)
| Symbol | Address | Decimals |
|---|---|---|
| WC2FLR | 0x767eecF7c0fa1d0F9CC0D75D6b5Bb2B8C0CF8A4b | 18 |
Token lists are not exhaustive — for the long tail (airdrops, dust), discover via
the explorer's account.tokenlist API. For Flare:
curl -s "https://flare-explorer.flare.network/api?module=account&action=tokenlist&address=$WALLET"
Concentrated-liquidity DEXes
Three CLMM families on Flare today. Picking the right one depends on whether you
need V3-shape (getPool(t0,t1,fee)) or Algebra-shape (poolByPair(t0,t1)) ABI.
Enosys V3 (Uniswap V3-compatible) — Flare
| Contract | Address |
|---|---|
| Factory | 0x17AA157AC8C54034381b840Cb8f6bf7Fc355f0de |
| NonfungiblePositionManager | 0xD9770b1C7A6ccd33C75b5bcB1c0078f46bE46657 |
| SwapRouter | 0x5FD34090E9b195d8482Ad3CC63dB078534F1b113 |
| QuoterV2 | 0x0A32EE3f66cC9E68ffb7cBeCf77bAef03e2d7C56 |
| FtsoRewardRedistributorForNft (FTSO only) | 0x5a0BfF8Ff1AF1DF28619Fce57d07E3bBb7BAF3d7 |
| FlaresRewardsRedistributorForNft (legacy, pre-2026-04) | 0x4410B821Fa1041D242f2C199C0EA78E4A5f15F19 |
| FtsoRewardRedistributorForAddress (EOA delegations) | 0x45aAa2e37B89f7514DF69FA084f381C67891C381 |
FTSO redistributor naming gotcha (Flare): the active NFT redistributor was rotated 2026-04
from FlaresRewardsRedistributorForNft (0x4410B821…) to FtsoRewardRedistributorForNft
(0x5a0BfF8F…). Same ABI shape; only the address changed. Rewards accrued under the legacy
contract are still claimable via direct calls — see enosys-dex-v3 for the address-allowlist
recovery pattern.
Enosys V3 — Songbird
| Contract | Address |
|---|---|
| Factory | 0x416F1CcBc55033Ae0133DA96F9096Fe8c2c17E7d |
| NonfungiblePositionManager | 0xFC02eB1Ab5079627103357BfbB8167d3BBAc6f1e |
| SwapRouter | 0x51bB58357c81523Dc7fc9D05f0C5921b122EE114 |
| QuoterV2 | 0x4855f257B4BD4e5724E39D3938128Cd363EDD6C7 |
| FtsoRewardRedistributorForNft | 0x421294D3eb38c87390fc7f1442623f5b7DBc5b86 |
SparkDEX V3.1 (Uniswap V3-compatible, no FTSO redistributor) — Flare
| Contract | Address |
|---|---|
| Factory | 0x8A2578d23d4C532cC9A98FaD91C0523f5efDE652 |
| NonfungiblePositionManager | 0xEE5FF5Bc5F852764b5584d92A4d592A53DC527da |
| SwapRouter | 0x8a1E35F5c98C4E85B36B7B253222eE17773b2781 |
| QuoterV2 | 0x5B5513c55fd06e2658010c121c37b07fC8e8B705 |
LP fees still accrue; FTSO delegation rewards do not (no redistributor deployed for this fork). Position NFT lifecycle is otherwise identical to Enosys V3.
SparkDEX V4 (Algebra V1.9+ with plugins, dynamic fees) — Flare
| Contract | Address |
|---|---|
| Factory | 0x805488DaA81c1b9e7C5cE3f1DCeA28F21448EC6A |
| NonfungiblePositionManager | 0x49BE8AA6c684b15e0C5450e8Fa0b16Bec1435596 |
| SwapRouter | 0x69D57B9D705eaD73a5d2f2476C30c55bD755cc2F |
| QuoterV2 | 0x6AD6A4f233F1E33613e996CCc17409B93fF8bf5f |
| Default pool deployer | 0x59a662Ed724F19AD019307126CbEBdcF4b57d6B1 |
Algebra differs from V3 in three places that matter when integrating:
- Pool resolution —
factory.poolByPair(token0, token1)(no fee tier). - Pool state —
globalState()returns 6 fields (V3'sslot0()returns 7), buttickis at index 1 in both. MintParamshasaddress deployerwhere V3 hasuint24 fee. Passaddress(0)to use the factory's default deployer (current SparkDEX V4 pattern). For non-default-deployer pools, you must pass the actual deployer address; verify by computingfactory.computePoolAddress(t0, t1)matches the pool you're targeting.
V2 routers (Uniswap V2-compatible)
Flare
| Router | Address | Selector for swapExactTokensForTokens |
|---|---|---|
| Enosys V2 Router | 0x088EeCB467B3968Da36c71F05023A1d3133B2B83 | 0x38ed1739 |
| BlazeSwap Router | 0xe3A1b355ca63abCBC9589334B5e609583C7BAa06 | 0x38ed1739 |
BlazeSwap quirk — its swapExactTokensForTokens checks amountOutMin against
the actual recipient balance change, not the getAmountsOut quote. For
fee-on-transfer tokens this means a quote-derived minOut will trip
BlazeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT. See flare-security for the
double-FoT-aware integration pattern.
Aggregators
OpenOcean
| Chain | Exchange contract |
|---|---|
| Flare | 0x6352a56caadC4F1E25CD6c75970Fa768A3304e64 |
Function selector for swap: 0x90411a32 (signature
swap(address,(SwapDescription),(uint256,uint256,uint256,bytes)[])). Do NOT guess
this from the human-readable signature — verify against the actual returned
calldata from the OO API:
curl -s '<OO API endpoint>' | jq -r '.data.data[2:10]'
OO API endpoint: https://open-api.openocean.finance/v3/{chainId}/swap_quote. Free,
unauthenticated, ~$0.01 minimum-USD-value gate per quote (legs below that get
rejected — fall back to V2 routers for dust).
Cross-chain bridges
LayerZero
LayerZero V2 endpoints are deployed on Flare and Songbird. For up-to-date contract addresses, see https://docs.layerzero.network/v2/deployments.
Stargate
Stargate v2 has Flare deployments for USDC and USDT0 routes. See https://stargateprotocol.gitbook.io/stargate.
Faucets (testnet only)
| Chain | Faucet |
|---|---|
| Coston2 (C2FLR) | https://coston2-faucet.flare.network |
| Coston (CFLR) | https://coston-faucet.flare.network |
Common command snippets
Read deployed bytecode (verify a contract exists at an address)
cast code $ADDRESS --rpc-url flare
# returns 0x if no contract; full bytecode if deployed
Find deployed function selectors in a contract's dispatch table
cast code $ADDRESS --rpc-url flare | grep -oE '63[0-9a-f]{8}1461' | head
# 63XXXXXXXX14 = PUSH4 selector + EQ — that's the dispatcher's selector check
Decode a 4-byte selector into a function signature
cast 4byte 0x90411a32
# returns swap(address,(address,address,address,address,uint256,uint256,uint256,bytes),(uint256,uint256,uint256,bytes)[])
Pull constructor args from a Foundry broadcast log
node -e "console.log(JSON.stringify(require('./broadcast/Deploy.s.sol/14/run-latest.json').transactions.find(t => t.contractName === 'MyContract').arguments))"
Encode constructor args for verification
cast abi-encode "constructor(address,address)" 0xabc... 0xdef...
Foundry config (recommended for Flare-family work)
# foundry.toml
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
optimizer = true
optimizer_runs = 200
solc_version = "0.8.24"
via_ir = true # required for stack-too-deep on complex contracts
fs_permissions = [{ access = "read", path = "config/" }]
[rpc_endpoints]
flare = "https://flare-api.flare.network/ext/C/rpc"
songbird = "https://songbird-api.flare.network/ext/C/rpc"
coston2 = "https://coston2-api.flare.network/ext/C/rpc"
When to use other skills
- Protocol architecture (FTSO, FDC, FAssets, Smart Accounts, FCC/TEE) —
flare-general, then the protocol-specific skill. - FTSO price feeds, anchor feeds, volatility incentives —
flare-ftso. - Flare Data Connector (cross-chain proofs) —
flare-fdc. - FAssets / FXRP minting + redemption —
flare-fassets. - ERC-4337 smart accounts on Flare —
flare-smart-accounts. - Enosys-specific contracts (DEX V3 reward managers, Loans/CDP, governance) —
enosys-contracts,enosys-dex-v3. - Cross-project gotchas (RPC log range, EIP-3855, MetaMask SDK hangs, claim-OOG) —
flare-dapp-pitfalls. - Flare-specific security review of a deployment —
flare-security. - Generic Solidity standards —
solidity(Cyfrin). - Auditing workflow —
audit(checklist) andaudit-contract(adversarial multi-agent).