This commit is contained in:
parent
47d302a9a4
commit
45992c4f91
10 changed files with 670 additions and 13 deletions
|
|
@ -65,6 +65,27 @@ int main() {
|
|||
"eurc: numeric result rejected — the wire type is a hex string");
|
||||
Check(!ParseEthCallUint("garbage").has_value(), "eurc: malformed payload");
|
||||
|
||||
// The OUTBOUND half of the balance check, byte for byte: selector, then
|
||||
// the address left-padded into exactly one 32-byte ABI word — 24 zero hex
|
||||
// digits (12 bytes), then the 40 address digits. Pinned as a literal
|
||||
// because this line once padded 24 BYTES instead of 12: the address slid
|
||||
// past the argument word, every node cleanly answered balanceOf of a
|
||||
// zero-balance garbage address, and paid orders read as unpaid forever —
|
||||
// no error on either side. A wrong length here is money-losing even when
|
||||
// every reply parses.
|
||||
{
|
||||
const std::string data = Server::BalanceOfCallData(
|
||||
"0x311660cfd1d0c35616cf6dfc3932881b22bb46ec");
|
||||
Check(data ==
|
||||
"0x70a08231"
|
||||
"000000000000000000000000"
|
||||
"311660cfd1d0c35616cf6dfc3932881b22bb46ec",
|
||||
"eurc: balanceOf calldata is selector + one 32-byte word", data);
|
||||
Check(data.size() == 2 + 8 + 64,
|
||||
"eurc: balanceOf calldata is exactly 4 + 32 bytes",
|
||||
std::to_string(data.size()));
|
||||
}
|
||||
|
||||
const auto chains = Server::ParseEurcChains(R"({"chains":[
|
||||
{"name":"base","rpc":"https://mainnet.base.org",
|
||||
"contract":"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42",
|
||||
|
|
|
|||
Loading…
Reference in a new issue