-
Notifications
You must be signed in to change notification settings - Fork 222
fix: reduce db calls for getTransactionReceipt RPC #3320
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR optimizes the getTransactionReceipt RPC endpoint by reducing the number of database calls. Instead of making separate queries by transaction hash to get the transaction and receipt, it first retrieves the block number and index from the hash, then uses those coordinates to fetch the transaction and receipt directly. This reduces database lookups from potentially 3+ calls down to 3 calls (one for the index lookup, one for transaction, one for receipt).
Key changes:
- Introduced new methods
TxBlockNumberAndIndexByHashandReceiptByBlockNumberAndIndexto enable block-coordinate-based lookups - Refactored
TransactionReceiptByHashto use the new lookup pattern
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| rpc/v9/transaction.go | Updated TransactionReceiptByHash to use new block-coordinate-based lookup methods |
| blockchain/blockchain.go | Added TxBlockNumberAndIndexByHash and ReceiptByBlockNumberAndIndex methods to Reader interface |
| core/accessors.go | Added GetReceiptByBlockNumIndex helper function for direct receipt lookup by coordinates |
| mocks/mock_blockchain.go | Generated mock implementations for new Reader interface methods |
| rpc/v9/transaction_test.go | Updated all test expectations to use new method call patterns |
| rpc/v9/subscriptions_test.go | Updated subscription test expectations for new method calls |
| rpc/v9/l1_test.go | Updated L1 message status test expectations and fixed type inconsistencies |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
Codecov Report❌ Patch coverage is ❌ Your patch check has failed because the patch coverage (34.69%) is below the target coverage (60.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #3320 +/- ##
==========================================
- Coverage 76.24% 76.16% -0.08%
==========================================
Files 349 349
Lines 33092 33121 +29
==========================================
- Hits 25231 25228 -3
- Misses 6063 6087 +24
- Partials 1798 1806 +8 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
rodrodros
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overview review, I am not sure I notice how we are doing less calls here
Based on my quick look,
with this PR, non-pending request will read from:
|
update v9 and tests Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Yaroslav Kukharuk <i.kukharuk@gmail.com> Apply suggestion from @infrmtcs Co-authored-by: Dat Duong <DuongDat.Informatics@rocketmail.com> Signed-off-by: Yaroslav Kukharuk <i.kukharuk@gmail.com> update new method name use felt.TransactionHash v8 transaction and tests fix linting errors apply the change to v10 update styling to be inline with codebase address feedback small fix Apply suggestions from code review Co-authored-by: Dat Duong <DuongDat.Informatics@rocketmail.com> Signed-off-by: Yaroslav Kukharuk <i.kukharuk@gmail.com> return receipt by value and update the tests style
67d8fe5 to
8c1c865
Compare
Fixes: #3258