crypto test fix
All checks were successful
Deploy / build-deploy (push) Successful in 3m40s

This commit is contained in:
Jorijn van der Graaf 2026-08-20 01:49:15 +02:00
commit 5d3a3adb86
2 changed files with 24 additions and 13 deletions

View file

@ -55,12 +55,16 @@ namespace {
// https://developers.circle.com/stablecoins/eurc-contract-addresses
constexpr std::string_view kContract = "0x08210F9170F89Ab7658F0B5E3fF39b0E03C594D4";
constexpr std::string_view kChainId = "11155111";
// Two endpoints from different operators (Allnodes, 1RPC) — the same two
// operators the production ethereum entry uses — because the rule under test
// is "no single node's word settles an order": min_confirmations=2 below
// makes both agree, same as the mainnet chains file.
// Three endpoints from different operators (Allnodes, Tenderly, 1RPC) with
// min_confirmations=2, because the rule under test is "no single node's word
// settles an order" — and because public RPCs differ by VANTAGE POINT, not
// just uptime: 1RPC answers residential IPs and 403s the Hetzner runner,
// which stalled the first CI run at 1-of-2 forever. Any two of three settle;
// the corroboration loop stops at quorum, so the third is only ever dialed
// when one of the first two fails.
constexpr std::string_view kRpcPrimary = "https://ethereum-sepolia-rpc.publicnode.com";
constexpr std::string_view kRpcSecondary = "https://1rpc.io/sepolia";
constexpr std::string_view kRpcSecondary = "https://sepolia.gateway.tenderly.co";
constexpr std::string_view kRpcTertiary = "https://1rpc.io/sepolia";
// €1 donation = 100 cents = 100 × 10^(6-2) EURC base units.
constexpr std::string_view kTransferUnits = "1000000";
@ -144,11 +148,11 @@ int main(int argc, char** argv) {
const fs::path chains = dir / "chains.json";
WriteFile(chains, std::format(
R"({{"chains":[{{"name":"ethereum-sepolia",)"
R"("rpcs":["{}","{}"],)"
R"("rpcs":["{}","{}","{}"],)"
R"("min_confirmations":2,)"
R"("contract":"{}","chain_id":{},)"
R"("block_tag":"latest","note":"testnet"}}]}})",
kRpcPrimary, kRpcSecondary, kContract, kChainId));
kRpcPrimary, kRpcSecondary, kRpcTertiary, kContract, kChainId));
// Fresh random addresses — see the header for why reuse would false-pass.
const fs::path pool = dir / "pool.txt";