Skip to content

Conversation

@pdobacz
Copy link
Member

@pdobacz pdobacz commented Oct 21, 2025

Closes #1337 . Requires a fix on EEST side in order to fill, I'll open a PR there after the Weld

@codecov
Copy link

codecov bot commented Oct 21, 2025

Codecov Report

❌ Patch coverage is 96.38554% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 87.27%. Comparing base (ae53163) to head (fb7e02a).
⚠️ Report is 3 commits behind head on master.

Files with missing lines Patch % Lines
test/t8n/t8n.cpp 50.00% 2 Missing ⚠️
test/unittests/state_deposit_requests_test.cpp 95.83% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@ Coverage Diff @@ ## master #1339 +/- ## ========================================== + Coverage 87.25% 87.27% +0.02%  ========================================== Files 169 169 Lines 24976 25042 +66 Branches 4107 4118 +11 ========================================== + Hits 21792 21855 +63  - Misses 529 531 +2  - Partials 2655 2656 +1 
Flag Coverage Δ
eest-develop 80.01% <100.00%> (+0.10%) ⬆️
eest-develop-gmp 15.93% <0.00%> (-0.05%) ⬇️
eest-legacy 11.18% <0.00%> (-0.03%) ⬇️
eest-legacy-silkpre 17.61% <0.00%> (-0.05%) ⬇️
evmone-unittests 83.80% <83.13%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
core 93.62% <100.00%> (+0.03%) ⬆️
tooling 88.01% <50.00%> (-0.08%) ⬇️
tests 84.16% <95.83%> (+0.01%) ⬆️
Files with missing lines Coverage Δ
test/state/requests.cpp 98.86% <100.00%> (+0.90%) ⬆️
test/state/system_contracts.cpp 98.11% <ø> (ø)
test/unittests/state_deposit_requests_test.cpp 90.19% <95.83%> (+4.48%) ⬆️
test/t8n/t8n.cpp 75.00% <50.00%> (-0.42%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
@pdobacz pdobacz force-pushed the deposit-logs branch 2 times, most recently from 838c40c to c223c3b Compare October 21, 2025 09:27
@pdobacz pdobacz requested a review from chfast October 21, 2025 09:30
requests.append({&log.data[AMOUNT_OFFSET], AMOUNT_SIZE});
requests.append({&log.data[SIGNATURE_OFFSET], SIGNATURE_SIZE});
requests.append({&log.data[INDEX_OFFSET], INDEX_SIZE});
requests.append({&log.data[PUBKEY_OFFSET + WORD], PUBKEY_SIZE});
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note here, that since I needed to add validation and thus change the meaning of the variables, _OFFSET now points to the size word, not contents. It is in line with the EIP-6110 wording

Copy link
Member

@chfast chfast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why don't we fail EEST currently?

@pdobacz
Copy link
Member Author

pdobacz commented Oct 21, 2025

Why don't we fail EEST currently?

Aah, great question, I was confused about this too at first! The block is rejected for another reason - request hashes don't match with expected. I'll try to add a test which would fail for us

@pdobacz
Copy link
Member Author

pdobacz commented Oct 21, 2025

Why don't we fail EEST currently?

Aah, great question, I was confused about this too at first! The block is rejected for another reason - request hashes don't match with expected. I'll try to add a test which would fail for us

Actually, correction: I think it is not about the tests, but rather the filling client, what it does when it encounters invalid layout. It can either decide to put garbage into requests and hash it or leave empty. I think evmone (before this change) would hash garbage when running blockchain tests, and that the filling client (and evmone in this PR) leaves the requests empty, leading to mismatch and (expected) block invalidation.

@chfast
Copy link
Member

chfast commented Oct 21, 2025

Why don't we fail EEST currently?

Aah, great question, I was confused about this too at first! The block is rejected for another reason - request hashes don't match with expected. I'll try to add a test which would fail for us

Actually, correction: I think it is not about the tests, but rather the filling client, what it does when it encounters invalid layout. It can either decide to put garbage into requests and hash it or leave empty. I think evmone (before this change) would hash garbage when running blockchain tests, and that the filling client (and evmone in this PR) leaves the requests empty, leading to mismatch and (expected) block invalidation.

But tests are still failing to detect wrong implementation because the hash still mismatches but for different reason?
Or should we enhance our checks in blockchain tests to better detect requests mismatches?

@pdobacz
Copy link
Member Author

pdobacz commented Oct 21, 2025

But tests are still failing to detect wrong implementation because the hash still mismatches but for different reason? Or should we enhance our checks in blockchain tests to better detect requests mismatches?

Yes, I suppose the way to go would be to differentiate all the BlockException occurring during blockchaintest_runner.cpp and fail the test if mismatch is detected.

const auto size = read_word_as_size(offset);
return size.has_value() && (*size == expected_size);
};
if (!validate_size(PUBKEY_OFFSET, PUBKEY_SIZE) ||
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm confused here. Are we validating the compile-time constants here? If yes, convert this to a static_assert.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nope, the first argument is for lookup in the log.data. I'll improve the name to be more natural

@pdobacz
Copy link
Member Author

pdobacz commented Oct 21, 2025

I've eyeballed the coverage report, all looks fine to me

@chfast
Copy link
Member

chfast commented Oct 21, 2025

I've eyeballed the coverage report, all looks fine to me

This means we don't have the coverage for the case where the logs are empty.

image
@pdobacz
Copy link
Member Author

pdobacz commented Oct 21, 2025

I've eyeballed the coverage report, all looks fine to me

This means we don't have the coverage for the case where the logs are empty.

we do, just not PRed yet, sorry to skip over this :) and thank you for cross-checking
ethereum/execution-spec-tests@main...ipsilon:execution-spec-tests:tests/no-topics

@chfast
Copy link
Member

chfast commented Oct 21, 2025

I've eyeballed the coverage report, all looks fine to me

This means we don't have the coverage for the case where the logs are empty.

we do, just not PRed yet, sorry to skip over this :) and thank you for cross-checking ethereum/execution-spec-tests@main...ipsilon:execution-spec-tests:tests/no-topics

This PR is for the fix anyway, so it doesn't matter here.

@pdobacz pdobacz merged commit 8b957b3 into master Oct 21, 2025
23 checks passed
@pdobacz pdobacz deleted the deposit-logs branch October 21, 2025 17:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants