How it compares
What the same amount would have bought at each reference rate, at that moment.
- Arbolito—
- Market mid price (Uniswap)1 US$ = 5.0594 BRL
There is no published official rate for this pair; below we compare it with the market price.
How we did it
Direct, in 1 step: dollars → reais. Arbolito asked 2 quotes from different markets and executed the best available route.
Guaranteed minimum: R$ 12.58
Alternatives considered
Verification
Doesn't matchThis receipt was replaced by a corrected version, so full verification fails, as it should.See details
Fingerprint, transactions and the receipt's exact JSON, for anyone who wants to check it without trusting us.
Transactions on Celo
- Fingerprint (keccak256)
- 0xe6acaae03571e60f135bbbcdeb9b09675a79d9d87ea7ca3dc02a001464fe8871
- Conversion
- 0x43ab6ccad6…3f5ee743 ↗ block 79641974
- Receipt anchor
- 0x741eba2d59…56fa6d6a ↗ block 79641979
- Receipts contract
- ArbolitoReceipts 0x5C0b12…2d34 ↗
- Wallet
- 0x7e0316…6c3c ↗
- Attribution tag
- celo_e054d92430a5
Verify it yourself
This receipt is a JSON document. Its fingerprint (keccak256 of the canonical JSON) was written to Celo when the trade happened. Your browser recomputes it now and looks it up in the contract, without going through our servers.
You can edit it: change a single character and the fingerprint changes and is no longer found onchain.
Full verification
Verification found problems:
- execution.amountOut 0 does not match the 12647118280431389240 delivered onchain
How to verify without trusting this page
- Download the JSON.
- Sort every object's keys and strip whitespace (canonical JSON, RFC 8785).
- Compute keccak256 of that UTF-8 text.
- Call anchoredAt(hash) on the contract, or find the ReceiptAnchored event with that hash on Celoscan.
// Node 22+ (ESM), viem
import { keccak256, stringToBytes } from "viem";
const canon = (v) => v === null || typeof v !== "object" ? JSON.stringify(v)
: Array.isArray(v) ? "[" + v.map(canon).join(",") + "]"
: "{" + Object.keys(v).filter((k) => v[k] !== undefined).sort()
.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
const bundle = await (await fetch("/r/b334459a-884b-4bed-b4a3-d56710ae74ee.superseded/bundle.json")).json();
console.log(keccak256(stringToBytes(canon(bundle))));Every quote considered (2)
[
{
"venue": "uniswap_v3",
"tokenIn": "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e",
"tokenOut": "0xD76f5Faf6888e24D9F04Bf92a0c8B921FE4390e0",
"amountIn": "2500000",
"amountOut": "12647118280431389240",
"blockNumber": "79641965",
"firm": false,
"raw": {
"quoter": "0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8",
"sqrtPriceX96After": "178207405739221301699837094677302533",
"initializedTicksCrossed": 0,
"gasEstimate": "96369"
},
"meta": {
"pool": "0x01c3cf91cdf7B34181C7eC8566c0236951FEA40F",
"fee": 100
}
},
{
"venue": "textile_rfq",
"tokenIn": "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e",
"tokenOut": "0xD76f5Faf6888e24D9F04Bf92a0c8B921FE4390e0",
"amountIn": "2500000",
"amountOut": "12562998594356942009",
"blockNumber": "79641965",
"firm": false,
"raw": {
"kind": "preview",
"status": "preview",
"sellAmount": "2500000",
"buyAmount": "12562998594356942009",
"feeAmount": "249",
"takerPays": "2500000",
"rateRay": "198977257000000000011232245",
"availableSellAmount": "76231322359",
"routing": {
"preferenceApplied": false,
"restrictionApplied": false,
"fallbackUsed": false,
"targetMakerWallets": [],
"preferredQuotesReceived": 0,
"openMarketQuotesReceived": 0
}
}
}
]