From 46032fa18aef7e6fd3dbe8a129e706e4b8fcead4 Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Tue, 30 Jul 2024 17:22:34 +0000 Subject: [PATCH] Work around xDAI eth_getProof implementation bugs. --- eth-sender/source/scan.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/eth-sender/source/scan.cpp b/eth-sender/source/scan.cpp index 2743ed48e..46ea34925 100644 --- a/eth-sender/source/scan.cpp +++ b/eth-sender/source/scan.cpp @@ -57,14 +57,20 @@ task Scan(const Brick<32> &root, Code_ &&code, Each_ &&each) { auto check(root); const auto proofs(co_await code(preimage)); - for (size_t i(0); i != proofs.size(); ++i) { + for (size_t e(proofs.size()), i(0); i != e; ++i) { + const auto data(Bless(Str(proofs[i]))); + + // XXX: xDAI returns a... "terminating" 0x?! + if (data.done()) { + orc_assert(i == e - 1); + break; + } + const auto here(hash.substr(0, offset)); done.emplace(here); todo.erase(here); - const auto data(Bless(Str(proofs[i]))); orc_assert(HashK(data) == check); - const auto proof(Explode(data)); switch (proof.size()) { case 2: {