Dados abertos
Tudo que o site mostra vem de endpoints públicos, sem chave. Abaixo, o índice completo, as âncoras e como reconstruir a raiz.
A API não respondeu no build ou devolveu dados de seed. Tudo o que você vê nesta página é ilustrativo até o piloto começar a coletar.
Índice de inflação em tempo real
Cesta de 200 itens do piloto, mediana geométrica por item, encadeada dia a dia. Base 100 no primeiro dia com cobertura ≥ 60%. Publicado só com cobertura ≥ 40%.
Salvador
+1,5% ▲
variação 30 d · último 104.88 · cobertura 86%
CSV direto da API: data, dayIndex, valor, variação diária, cobertura, publicado.
Nota metodológica. O índice não é o IPCA. É a variação de preços de gôndola observados por pessoas, ponderada igualmente por item da cesta, sem pesos de consumo. Dias sem cobertura mínima ficam em branco em vez de interpolados. Metodologia e cesta em /dados.
Âncoras diárias
| dia | data | raiz | folhas | tx | estado |
|---|---|---|---|---|---|
| 268 | 2026-09-26 | 0xf28de90cfd…cbf99864 | 16 | 0xc4a0a07f…c98a54 | confirmed |
| 267 | 2026-09-25 | 0xd09d8e1692…5563159e | 14.765 | 0x0593a947…f885c1 | confirmed |
| 266 | 2026-09-24 | 0xbcc5a139d4…208e4f7b | 13.104 | 0x6f23e1fb…a03a40 | confirmed |
| 265 | 2026-09-23 | 0xd9489315ba…f7529843 | 13.327 | 0xa4c0fd16…db45ca | confirmed |
| 264 | 2026-09-22 | 0x4239142fa3…5f5a7cfe | 12.464 | 0x3c14d93b…606a6b | confirmed |
| 263 | 2026-09-21 | 0x401e09af78…0d615215 | 13.833 | 0x1a84cfa0…13add8 | confirmed |
| 262 | 2026-09-20 | 0x5369a2919b…5cea1206 | 14.552 | 0x3c96dd3f…dcf1d9 | confirmed |
| 261 | 2026-09-19 | 0x0cc1d1affc…fdb3e4c7 | 13.549 | 0x978786d1…553113 | confirmed |
| 260 | 2026-09-18 | 0xb3ad6b96b1…8840a606 | 14.016 | 0x6fbdc0ba…92dc96 | confirmed |
| 259 | 2026-09-17 | 0x56a4be14d5…ed929b23 | 13.381 | 0x4ba83bdd…56d01f | confirmed |
| 258 | 2026-09-16 | 0x58642b1f22…5b6ce52c | 13.641 | 0x2c629d94…8a2eb7 | confirmed |
| 257 | 2026-09-15 | 0x916cf1ca3d…e6a85323 | 14.202 | 0xb88c0265…83bcbb | confirmed |
| 256 | 2026-09-14 | 0xb7ba72b3fe…88c4ef47 | 14.218 | 0x779f5ada…5d853c | confirmed |
| 255 | 2026-09-13 | 0x2e7b90124d…f1a82838 | 14.446 | 0x6f58be5c…4323b9 | confirmed |
| 254 | 2026-09-12 | 0x8f9a66d32c…e53ce298 | 13.688 | 0x728e68f6…2e5140 | confirmed |
| 253 | 2026-09-11 | 0x38c640b759…8eb0a07d | 14.732 | 0x34495f53…9546d3 | confirmed |
| 252 | 2026-09-10 | 0x83391c6e99…98a0c42c | 14.072 | 0xfee48964…82feb8 | confirmed |
| 251 | 2026-09-09 | 0x37165ea1e4…2657dd3e | 14.957 | 0xdae9fd87…ce86fb | confirmed |
| 250 | 2026-09-08 | 0xc75d07c676…e80df7e7 | 14.041 | 0x2326ea8d…eab831 | confirmed |
| 249 | 2026-09-07 | 0xb64454cca6…a83df469 | 12.826 | 0x202bb8f2…b84e16 | confirmed |
| 248 | 2026-09-06 | 0xd384869059…bcaf1047 | 14.731 | 0x26b9c6f4…93d44b | confirmed |
| 247 | 2026-09-05 | 0x5f8f3fb46f…4fbde386 | 12.561 | 0x7fcfd8fc…7da06b | confirmed |
| 246 | 2026-09-04 | 0xf243dc76d7…db7d3017 | 14.247 | 0x6fe5a604…7dc6bf | confirmed |
| 245 | 2026-09-03 | 0xbe311acde3…154ed02c | 13.356 | 0x652f2c54…b744d3 | confirmed |
| 244 | 2026-09-02 | 0x3bcde27b3b…24da7105 | 13.946 | 0x3ec1587e…a7a21e | confirmed |
| 243 | 2026-09-01 | 0xc96d4d4bea…0a0aeddf | 14.908 | 0x1a33470a…791ec1 | confirmed |
| 242 | 2026-08-31 | 0x45940bdfff…2c5268d0 | 12.560 | 0xfe107ea0…d9c0d0 | confirmed |
| 241 | 2026-08-30 | 0x48cb3bc753…a899b079 | 13.356 | 0x2bf2f3f1…060a51 | confirmed |
| 240 | 2026-08-29 | 0x7fe1a11150…38ecf908 | 14.692 | 0x874eb177…cfc76b | confirmed |
| 239 | 2026-08-28 | 0x19692cac01…8dbb8f2c | 14.045 | 0x93d300be…c24649 | confirmed |
Endpoints
- GET /v1/public/stats
- GET /v1/public/feed?city=salvador-ba&limit=20
- GET /v1/categories
- GET /v1/index/salvador-ba?days=30&scope=city
- GET /v1/index/salvador-ba.csv?days=90&scope=city
- GET /v1/index/salvador-ba/neighborhoods
- GET /v1/anchors?limit=30
- GET /v1/anchors/:day/proof?product=&store=
- GET /v1/stores/nearby?lat=-12.9714&lng=-38.5014&radiusM=25000
- GET /v1/meta
Reconstruir a raiz
Baixe o CSV do dia, gere uma folha por (produto, loja) com keccak256(abi.encode(...)) nos campos listados em ADR 0002, ordene por hash e monte uma StandardMerkleTree (OpenZeppelin). A raiz tem de bater com rootOf(dayIndex) no contrato.
leaf = keccak256(keccak256(abi.encode(
bytes16 productId, bytes16 storeId, uint32 priceCents,
uint64 firstObservedAt, uint64 lastObservedAt,
uint16 confidenceBp, bytes16 winningObservationId)))
root = StandardMerkleTree.of(sortByHash(leaves)).root
assert root == PrecisaAnchor.rootOf(dayIndex)