Open
Conversation
Implement a demo validation target that parses incoming RPC requests and returns true if parsing succeeds. This validates message structure using the appropriate serialization format for each RPC type: - Protobuf (prost): SubmitTransaction, WaitForEffects, ValidatorHealth - BCS: ObjectInfo, TransactionInfo, Checkpoint, SystemState For SubmitTransaction, also validates that inner transaction bytes can be BCS-decoded as Transaction objects. The parsing validator builds to a 1.4MB dylib (vs 17KB for the reference validator) due to sui-types dependencies. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements test infrastructure for the dynamic RPC validation system: - Add ValidatorInfo struct with index and authority_name - Add ValidatorLibraryCallback type and global test callback registry - Add with_validator_library_callback() to TestClusterBuilder - Add reject_zero_sender test validator example - Create E2E test scaffolding for validation library testing The callback mechanism allows tests to provide different validation libraries to different validators based on their index or identity. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements full transaction execution in E2E tests: - test_all_validators_with_library_accepts_normal_sender: verifies transactions from non-zero-ending addresses succeed - test_all_validators_with_library_rejects_zero_sender: verifies transactions from zero-ending addresses are rejected - test_single_validator_with_library: verifies quorum still accepts when only one validator rejects Tests now fund addresses, build transactions with custom keypairs, and verify actual acceptance/rejection behavior. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Refactor the validation sidecar to separate safe Rust validation logic from the unsafe FFI boundary: - Add sidecar.rs with RpcValidator trait for safe validation methods - Add implement_validator_exports\! macro to generate extern C functions - Refactor reference_impl, parsing_validator, and reject_zero_sender examples to use the new trait/macro pattern This allows implementors to write validation logic entirely in safe Rust while the macro handles the unsafe pointer-to-slice conversion. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
The intent of this system is that it is supposed to "fail open" and make it very difficult to bring down the network by shipping a broken fix (provided the "fix" doesn't do something like "reject all transactions no matter what"). There will be a lot of testing needed to make sure the implementation lives up to that intent. This is an early preview
Summary
sui-dynamic-rpc-validatorcrate plus the framework wiring (config, network validation layer, sui-core integration) for a dynamic RPC validation sidecar (see DYNAMIC_RPC_VALIDATION_PRD.md).RpcValidatortrait and macro for building sidecar validators safely, plus a parsing validator implementation.Test plan
cargo check -p sui-core -p sui-node -p sui-dynamic-rpc-validatorcargo nextest run -p sui-dynamic-rpc-validatorcargo simtest -p sui-e2e-testsfor the dynamic RPC validation tests🤖 Generated with Claude Code