celo-stablecoins
Skill8 starsChanged 2 months agoApache-2.0View on GitHub
Working with Celo's stablecoin ecosystem. Use when building with USDm, EURm, USDC, USDT, or regional Mento stablecoins on Celo.
In this repository15 other files it gives its agents.
- 8004Skill
- bridgingSkill
- celo-composerSkill
- celo-defiSkill
- celo-rpcSkill
- contract-verificationSkill
- evm-foundrySkill
- evm-hardhatSkill
- evm-wallet-integrationSkill
- fee-abstractionSkill
- minipay-integrationSkill
- thirdwebSkill
- viemSkill
- wagmiSkill
- x402Skill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 227
Always check the decimals of a token before formatting or parsing amounts.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Celo Stablecoins
This skill covers working with stablecoins on the Celo blockchain, including Mento stablecoins and other major stablecoins.
When to Use
- Reading stablecoin balances
- Transferring stablecoins
- Building payment applications
- Working with regional currencies
- Integrating USDC or USDT on Celo
Stablecoin Categories
Mento Stablecoins
Mento Protocol provides decentralized stablecoins pegged to various fiat currencies:
| Symbol | Currency | Mainnet Address |
| USDm | US Dollar | 0x765de816845861e75a25fca122bb6898b8b1282a |
| EURm | Euro | 0xd8763cba276a3738e6de85b4b3bf5fded6d6ca73 |
| BRLm | Brazilian Real | 0xe8537a3d056da446677b9e9d6c5db704eaab4787 |
| XOFm | West African CFA Franc | 0x73F93dcc49cB8A239e2032663e9475dd5ef29A08 |
| KESm | Kenyan Shilling | 0x456a3D042C0DbD3db53D5489e98dFb038553B0d0 |
| PHPm | Philippine Peso | 0x105d4A9306D2E55a71d2Eb95B81553AE1dC20d7B |
| COPm | Colombian Peso | 0x8a567e2ae79ca692bd748ab832081c45de4041ea |
| GBPm | British Pound | 0xCCF663b1fF11028f0b19058d0f7B674004a40746 |
| CADm | Canadian Dollar | 0xff4Ab19391af240c311c54200a492233052B6325 |
| AUDm | Australian Dollar | 0x7175504C455076F15c04A2F90a8e352281F492F9 |
| ZARm | South African Rand | 0x4c35853A3B4e647fD266f4de678dCc8fEC410BF6 |
| GHSm | Ghanaian Cedi | 0xfAeA5F3404bbA20D3cc2f8C4B0A888F55a3c7313 |
| NGNm | Nigerian Naira | 0xE2702Bd97ee33c88c8f6f92DA3B733608aa76F71 |
| JPYm | Japanese Yen | 0xc45eCF20f3CD864B32D9794d6f76814aE8892e20 |
| CHFm | Swiss Franc | 0xb55a79F398E759E43C95b979163f30eC87Ee131D |
Centralized Stablecoins
| Symbol | Issuer | Mainnet Address | Decimals |
| USDC | Circle | 0xcebA9300f2b948710d2653dD7B07f33A8B32118C | 6 |
| USDT | Tether | 0x48065fbbe25f71c9282ddf5e1cd6d6a887483d5e | 6 |
Other Stablecoins
| Symbol | Issuer | Currency | Mainnet Address |
| vEUR | VNX | Euro | 0x9346f43c1588b6df1d52bdd6bf846064f92d9cba |
| vGBP | VNX | British Pound | 0x7ae4265ecfc1f31bc0e112dfcfe3d78e01f4bb7f |
| vCHF | VNX | Swiss Franc | 0xc5ebea9984c485ec5d58ca5a2d376620d93af871 |
| USDM | Mountain Protocol | US Dollar (yield-bearing) | 0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C |
| USDA | Angle | US Dollar (yield-bearing) | 0x0000206329b97DB379d5E1Bf586BbDB969C63274 |
| EURA | Angle | Euro (yield-bearing) | 0xC16B81Af351BA9e64C1a069E3Ab18c244A1E3049 |
| USDGLO | Glo Foundation | US Dollar (impact-driven) | 0x4f604735c1cf31399c6e711d5962b2b3e0225ad3 |
| BRLA | BRLA Digital | Brazilian Real | 0xfecb3f7c54e2caae9dc6ac9060a822d47e053760 |
| COPM | Minteo | Colombian Peso | 0xC92E8Fc2947E32F2B574CCA9F2F12097A71d5606 |
| G$ | GoodDollar | UBI Token | 0x62b8b11039fcfe5ab0c56e502b1c372a3d2a9c7a |
Testnet Addresses (Celo Sepolia)
| Symbol | Testnet Address |
| USDm | 0xdE9e4C3ce781b4bA68120d6261cbad65ce0aB00b |
| EURm | 0xA99dC247d6b7B2E3ab48a1fEE101b83cD6aCd82a |
| BRLm | 0x2294298942fdc79417DE9E0D740A4957E0e7783a |
| XOFm | 0x5505b70207aE3B826c1A7607F19F3Bf73444A082 |
| KESm | 0xC7e4635651E3e3Af82b61d3E23c159438daE3BbF |
| PHPm | 0x0352976d940a2C3FBa0C3623198947Ee1d17869E |
| COPm | 0x5F8d55c3627d2dc0a2B4afa798f877242F382F67 |
| GBPm | 0x85F5181Abdbf0e1814Fc4358582Ae07b8eBA3aF3 |
| CADm | 0xF151c9a13b78C84f93f50B8b3bC689fedc134F60 |
| AUDm | 0x5873Faeb42F3563dcD77F0fbbdA818E6d6DA3139 |
| ZARm | 0x10CCfB235b0E1Ed394bACE4560C3ed016697687e |
| GHSm | 0x5e94B8C872bD47BC4255E60ECBF44D5E66e7401C |
| NGNm | 0x3d5ae86F34E2a82771496D140daFAEf3789dF888 |
| JPYm | 0x85Bee67D435A39f7467a8a9DE34a5B73D25Df426 |
| CHFm | 0x284E9b7B623eAE866914b7FA0eB720C2Bb3C2980 |
| USDT | 0xd077A400968890Eacc75cdc901F0356c943e4fDb |
Reading Balances
Using viem
import { createPublicClient, http, formatUnits } from "viem";
import { celo } from "viem/chains";
const publicClient = createPublicClient({
chain: celo,
transport: http("https://forno.celo.org"),
});
const ERC20_ABI = [
{
name: "balanceOf",
type: "function",
stateMutability: "view",
inputs: [{ name: "account", type: "address" }],
outputs: [{ type: "uint256" }],
},
{
name: "decimals",
type: "function",
stateMutability: "view",
inputs: [],
outputs: [{ type: "uint8" }],
},
] as const;
// USDm (18 decimals)
const USDm = "0x765de816845861e75a25fca122bb6898b8b1282a";
const balance = await publicClient.readContract({
address: USDm,
abi: ERC20_ABI,
functionName: "balanceOf",
args: ["0xYourAddress"],
});
console.log("USDm Balance:", formatUnits(balance, 18));
// USDC (6 decimals)
const USDC = "0xcebA9300f2b948710d2653dD7B07f33A8B32118C";
const usdcBalance = await publicClient.readContract({
address: USDC,
abi: ERC20_ABI,
functionName: "balanceOf",
args: ["0xYourAddress"],
});
console.log("USDC Balance:", formatUnits(usdcBalance, 6));Transferring Stablecoins
Using viem
import { createWalletClient, http, parseUnits } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { celo } from "viem/chains";
const account = privateKeyToAccount("0xYourPrivateKey");
const walletClient = createWalletClient({
account,
chain: celo,
transport: http("https://forno.celo.org"),
});
const ERC20_ABI = [
{
name: "transfer",
type: "function",
stateMutability: "nonpayable",
inputs: [
{ name: "to", type: "address" },
{ name: "amount", type: "uint256" },
],
outputs: [{ type: "bool" }],
},
] as const;
const USDm = "0x765de816845861e75a25fca122bb6898b8b1282a";
// Transfer 10 USDm
const hash = await walletClient.writeContract({
address: USDm,
abi: ERC20_ABI,
functionName: "transfer",
args: ["0xRecipientAddress", parseUnits("10", 18)],
});
console.log("Transaction hash:", hash);Transfer USDC (6 decimals)
const USDC = "0xcebA9300f2b948710d2653dD7B07f33A8B32118C";
// Transfer 10 USDC (note: 6 decimals)
const hash = await walletClient.writeContract({
address: USDC,
abi: ERC20_ABI,
functionName: "transfer",
args: ["0xRecipientAddress", parseUnits("10", 6)],
});Using cast (Foundry)
# Check USDm balance
cast call 0x765de816845861e75a25fca122bb6898b8b1282a \
"balanceOf(address)(uint256)" \
0xYourAddress \
--rpc-url https://forno.celo.org
# Transfer USDm
cast send 0x765de816845861e75a25fca122bb6898b8b1282a \
"transfer(address,uint256)" \
0xRecipientAddress \
10000000000000000000 \
--rpc-url https://forno.celo.org \
--private-key $PRIVATE_KEYDecimal Handling
| Token Type | Decimals | 1 Token in Wei |
| Mento (USDm, EURm, etc.) | 18 | 1000000000000000000 |
| USDC | 6 | 1000000 |
| USDT | 6 | 1000000 |
Always check the decimals of a token before formatting or parsing amounts.
Getting Test Tokens
- Get CELO from faucet: https://faucet.celo.org
- Swap CELO for stablecoins on Mento: https://app.mento.org
Additional Resources
- token-addresses.md - Complete token address reference
Source of truth: Celopedia
These skills are focused, task-level references. For anything broader — verified contract addresses, ecosystem and protocol data, listing requirements, grants, governance, migration guides, or cross-cutting Celo questions — Celopedia is the canonical source and is kept current. Where this skill and Celopedia disagree, Celopedia wins.
npx skills add celo-org/celopedia-skillsDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

