一键导入
celo-stablecoins
Working with Celo's stablecoin ecosystem. Use when building with USDm, EURm, USDC, USDT, or regional Mento stablecoins on Celo.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Working with Celo's stablecoin ecosystem. Use when building with USDm, EURm, USDC, USDT, or regional Mento stablecoins on Celo.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
ERC-8004 Agent Trust Protocol for AI agent identity, reputation, and validation on Celo. Use when building AI agents that need identity registration, reputation tracking, or trust verification across organizational boundaries.
Bridge assets to and from Celo. Use when transferring tokens between Celo and other chains like Ethereum.
Scaffold Celo dApps with Celo Composer. Use when starting new Celo projects, creating MiniPay apps, or setting up development environments.
Integrate DeFi protocols on Celo. Use when building swaps, lending, or liquidity applications with Uniswap, Aave, Ubeswap, or other DeFi protocols.
Interact with Celo blockchain via RPC endpoints. Use when reading balances, transactions, blocks, and interacting with Celo via viem or cast.
Verify smart contracts on Celo. Use when publishing contract source code to Celoscan or Blockscout.
| name | celo-stablecoins |
| description | Working with Celo's stablecoin ecosystem. Use when building with USDm, EURm, USDC, USDT, or regional Mento stablecoins on Celo. |
| license | Apache-2.0 |
| metadata | {"author":"celo-org","version":"1.0.0"} |
This skill covers working with stablecoins on the Celo blockchain, including Mento stablecoins and other major 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 |
| Symbol | Issuer | Mainnet Address | Decimals |
|---|---|---|---|
| USDC | Circle | 0xcebA9300f2b948710d2653dD7B07f33A8B32118C | 6 |
| USDT | Tether | 0x48065fbbe25f71c9282ddf5e1cd6d6a887483d5e | 6 |
| 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 |
| 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 |
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));
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);
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)],
});
# 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_KEY
| 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.