From e3eed36d8efd1ed0a562f3c47bace8bbcce53fdd Mon Sep 17 00:00:00 2001 From: GigaHierz Date: Mon, 24 Aug 2026 09:10:00 +0100 Subject: [PATCH] docs(partners): link provider address catalogs instead of hardcoding partner contract addresses Witnet and Band pages linked stale/rotating addresses; the Farcaster swap example used Ethereum's Uniswap V2 router, which has no code on Celo. Replace hardcoded partner addresses with links to the providers' canonical catalogs, placeholder-and-link for the router, and label example recipient addresses. Refs #2277 Co-Authored-By: Claude Fable 5 --- build-on-celo/build-with-farcaster.mdx | 14 +++++++++----- tooling/oracles/band-protocol.mdx | 4 ++-- tooling/oracles/wit-oracle.mdx | 9 +++------ 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/build-on-celo/build-with-farcaster.mdx b/build-on-celo/build-with-farcaster.mdx index e670173f2..9eda8d154 100644 --- a/build-on-celo/build-with-farcaster.mdx +++ b/build-on-celo/build-with-farcaster.mdx @@ -154,7 +154,7 @@ function SendTransaction() { const handleSend = () => { sendTransaction({ - to: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", + to: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", // example recipient — replace value: parseEther("0.01"), }); }; @@ -188,11 +188,11 @@ function BatchTransfer() { sendCalls({ calls: [ { - to: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", + to: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", // example recipient — replace value: parseEther("0.01"), }, { - to: "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC", + to: "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC", // example recipient — replace value: parseEther("0.02"), }, ], @@ -225,14 +225,14 @@ function ApproveAndSwap() { abi: erc20Abi, functionName: "approve", args: [ - "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", // Router address + "0xYourSwapRouterAddress", // a router deployed on Celo — see /tooling/contracts/uniswap-contracts parseUnits("100", 6), // Amount ], }), }, // Swap USDC for CELO { - to: "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", // Uniswap Router + to: "0xYourSwapRouterAddress", // a router deployed on Celo — see /tooling/contracts/uniswap-contracts data: encodeFunctionData({ abi: uniswapAbi, functionName: "swapExactTokensForETH", @@ -249,6 +249,10 @@ function ApproveAndSwap() { } ``` + +The swap example is a shape, not a recipe: the router address must be one deployed on Celo — pick it from [Uniswap contracts on Celo](/tooling/contracts/uniswap-contracts) — and the ABI must match that router (Celo has Uniswap v3/v4; the v2-style `swapExactTokensForETH` shown here will not work against them unchanged). + + **Limitations:** - Transactions execute sequentially, not atomically diff --git a/tooling/oracles/band-protocol.mdx b/tooling/oracles/band-protocol.mdx index 61f32257f..099e3775e 100644 --- a/tooling/oracles/band-protocol.mdx +++ b/tooling/oracles/band-protocol.mdx @@ -28,7 +28,7 @@ This tutorial will go over: environment -1. Enter the Celo Sepolia testnet Band reference data aggregator contract address [`0x8c064bCf7C0DA3B3b090BAbFE8f3323534D84d68`](https://docs.bandchain.org/develop/supported-blockchains/#testnets) to the `DemoOracle` constructor and deploy the contract. You can access the reference data aggregator contract on Mainnet at [`0xDA7a001b254CD22e46d3eAB04d937489c93174C3`](https://docs.bandchain.org/develop/supported-blockchains/#mainnets). Make sure you check the **current address** on their page, as it might happen that they updated their reference contract and then your Oracle data will not be correct anymore. +1. Enter the Band reference-data aggregator contract address for your network into the `DemoOracle` constructor and deploy the contract. Copy the current address for Celo from Band's [supported blockchains page](https://docs.bandchain.org/develop/supported-blockchains/) — Band updates the reference contract from time to time, and a stale address returns stale data. environment @@ -62,7 +62,7 @@ The "savePrice" function will save any base/quote rate that is passed to it in t ## Mainnet Reference Data Contract -You can access the reference data aggregator contract on Mainnet at [`0xDA7a001b254CD22e46d3eAB04d937489c93174C3`](https://docs.bandchain.org/develop/supported-blockchains/#mainnets). +Copy the current mainnet reference-data aggregator address from Band's [supported blockchains page](https://docs.bandchain.org/develop/supported-blockchains/). ## Available Reference Data diff --git a/tooling/oracles/wit-oracle.mdx b/tooling/oracles/wit-oracle.mdx index 465f139cf..547bbaaa1 100644 --- a/tooling/oracles/wit-oracle.mdx +++ b/tooling/oracles/wit-oracle.mdx @@ -22,8 +22,7 @@ The ***WitnetPriceRouter*** smart contract is deployed in all the [supported cha **WitnetProxy** -- *Alfajores*: [0x1111AbA2164AcdC6D291b08DfB374280035E1111](https://alfajores.celoscan.io/address/0x1111AbA2164AcdC6D291b08DfB374280035E1111) -- *Mainnet*: [0x1111AbA2164AcdC6D291b08DfB374280035E1111](https://celo.blockscout.com/address/0x1111AbA2164AcdC6D291b08DfB374280035E1111) +Copy the current `WitnetProxy` address for your network from Witnet's [Celo price feeds page](https://docs.witnet.io/smart-contracts/witnet-data-feeds/addresses/celo-price-feeds); live feeds and their update history are on [feeds.witnet.io/celo](https://feeds.witnet.io/celo). Witnet rotates these contracts, so always read the address from their catalog rather than hardcoding one. The Witnet Proxy contract is the easiest and most convenient way to consume Witnet price feeds on any of the [supported chains](https://docs.witnet.io/smart-contracts/supported-chains). @@ -75,7 +74,7 @@ You may also read the latest price of supported currency pairs from your **Web3* ```javascript web3 = Web3(Web3.HTTPProvider('https://forno.celo.org')) abi = '[{ "inputs": [{ "internalType": "bytes32", "name": "_id", "type": "bytes32" }], "name": "valueFor", "outputs": [{ "internalType": "int256", "name": "", "type": "int256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }]' -addr = '0x1111AbA2164AcdC6D291b08DfB374280035E1111' +addr = '' // copy from docs.witnet.io -> Celo price feeds contract = web3.eth.contract(address=addr, abi=abi) // get last value for "Price-CELO/USD-6" valueFor = contract.functions.valueFor().call("0x9ed884be") @@ -98,9 +97,7 @@ Crowd‑witnessed random seed generation A randomized subset of Witnet nodes each generate secret random bytes, commit and later reveal them. These are deterministically aggregated into a tamper‑proof seed—unbiased and unpredictable as long as at least one witness is honest. The WitnetRandomness contract is already deployed on Celo and other supported chains. It exposes a simple interface via IWitnetRandomness, available in the witnet‑solidity‑bridge npm package -- Alfajores: [0xC0FFEE98AD1434aCbDB894BbB752e138c1006fAB](https://alfajores.celoscan.io/address//0xC0FFEE98AD1434aCbDB894BbB752e138c1006fAB) - -- Mainnet: [0xC0FFEE98AD1434aCbDB894BbB752e138c1006fAB](https://celo.blockscout.com/address/0xC0FFEE98AD1434aCbDB894BbB752e138c1006fAB) +Copy the current randomness-contract address for your network from Witnet's [contract addresses page](https://docs.witnet.io/smart-contracts/witnet-randomness-oracle/contract-addresses). This very basic example shows how easy is to source random uint32 values into your own contracts: