Repository navigation
feat: new RPC, Bank and Cloning Pipeline - #578
Merged
Merged
Conversation
- needs to be cleaned up to handle all program loaders - unwrap needs to be removed as well
- covered in newer tests - not repeatable due to hardcoded accounts - testing obsolete behavior (non-eager cloning)
This was referenced Oct 26, 2025
Closed
This was referenced Nov 5, 2025
This was referenced Nov 17, 2025
Merged
This was referenced Nov 26, 2025
This was referenced Dec 4, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR
Summary by CodeRabbit
-
- Magicblock Aperture: production-ready JSON‑RPC HTTP + WebSocket server with Solana‑compatible endpoints (account/program/token queries, blocks/slots, signatures, send/simulate transactions, airdrop) and live subscriptions.
-
- RPC docs wording clarified for WebSocket event subscriptions.
-
- Updated local Solana test validator version and improved test runner for faster, parallel feedback.
: Major Refactoring & Chainlink IntegrationNew Features
Documentation
Chores
magicblock-bank,magicblock-rpc,magicblock-pubsub,magicblock-geyser-plugin, and several other utility/testing crates have been deleted.magicblock-aperturecrate. Cloning pipeline (3 crates) has been rewritten as the newmagicblock-chainlinkcrate.test-kitcrate is added (derived from previous test-core crate). Integration tests (test-integration/) require careful review to ensure coverage of refactored and new functionality.magicblock-chainlink, lots of crates supporting the old cloning pipeline and dependency on conjunto crates were removed.End of Summary by CodeRabbit
PR Summary: Major Refactoring & Chainlink Integration
magicblock-bank,magicblock-rpc,magicblock-pubsub,magicblock-geyser-plugin, and several other utility/testing crates have been deleted.magicblock-aperturecrate. Cloning pipeline (3 crates) has been rewritten as the newmagicblock-chainlinkcrate.test-kitcrate is added (derived from previous test-core crate). Integration tests (test-integration/) require careful review to ensure coverage of refactored and new functionality.magicblock-chainlink, lots of crates supporting the old cloning pipeline and dependency on conjunto crates were removed.Review Guide
Phase 1: Review New Core Crates
magicblock-aperture:lib.rs::JsonRpcServer::run->server/->requests/->state/.magicblock-rpc,magicblock-pubsub, and parts ofmagicblock-bankis correct. Understand its interaction withmagicblock-processor(sending transactions/requests) andaccountsdb/ledger(fetching state). This crate replaces many deleted ones.magicblock-chainlink:lib.rs->chainlink/->remote_account_provider/.RemoteAccountProvider. Check error handling.Phase 2: Review Core Validator Adaptations
magicblock-core:link.rs::link.aperture) andmagicblock-processor. Ensure data structures are appropriate for the refactored architecture. The most important type isTransactionSchedulerHandlewhich is the only way to interact with execution engine (replacesexecute_*methods in the bank)magicblock-processor:lib.rs->scheduler.rs->executor/processing.rs.magicblock-bankis gone. Examine how transactions are received from sources (likeapertureviamagicblock-core::link) and executed. Verify state updates, fee logic, built-in handling, interacts with the rest of the validator viamagicblock-core::linkand shared state (accountsdb/ledger)Phase 3: Validate Refactoring & Interactions
bank,rpc,pubsub,geyser), explicitly confirm its core responsibilities are correctly handled withinmagicblock-apertureor other remaining crates.getAccountInfo) ->aperture->accountsdb.aperture->core::link->processor.aperture-> relevant state updates.chainlink->accountsdb/basechainTips
Code owner relevant code review
committor-servicecrate should be carefully reviewed by @taco-paco.Mainly the changes in these crates are related to the removal of the bank and different approach to the transaction execution.
Deprecated Tests
I decided to deprecate chainlink unit tests that call into the program directly using the solana test context with banks client underneath. I wrote those and they are also covered with integration tests now.
Without hacking the SVM crate with special exceptions while testing they won't run since we cannot ever add a delegated account to the banks client nor can we run a modification since we cannot make the validator auth privileged either (tried a bunch of stuff).
Follow Up Work
Migration to new AccountsDB
Since the account format has been modified in accountsdb, the data migration is necessary, which can be achieved with a migration tool