feat(#4): add Hash encoding support#51
Open
re1ro wants to merge 1 commit intofeature/typed-encoder-step3from
Open
feat(#4): add Hash encoding support#51re1ro wants to merge 1 commit intofeature/typed-encoder-step3from
re1ro wants to merge 1 commit intofeature/typed-encoder-step3from
Conversation
Collaborator
re1ro
commented
Oct 31, 2025
- enable EncodingType.Hash to produce keccak256 packed hashes
- add dedicated hash encoding tests covering nesting, arrays, and edge cases
- enable EncodingType.Hash to produce keccak256 packed hashes - add dedicated hash encoding tests covering nesting, arrays, and edge cases
There was a problem hiding this comment.
Pull Request Overview
This PR implements the Hash encoding type for the TypedEncoder library, which computes compact hash commitments using keccak256(abi.encodePacked(all_fields)).
Key changes:
- Added Hash encoding support to the main
encode()function with proper routing to_encodeHash() - Removed Hash from the "not implemented" error condition
- Added comprehensive test coverage for Hash encoding including primitives, nested structs, arrays, and edge cases
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| src/lib/TypedEncoder.sol | Implemented Hash encoding type by adding conditional check in encode() function and removing it from unimplemented types list |
| test/libs/TypedEncoderHashEncoding.t.sol | Added comprehensive test suite covering Hash encoding for basic primitives, multiple chunks, nested structs, arrays, and edge cases |
Comments suppressed due to low confidence (1)
src/lib/TypedEncoder.sol:92
- The documentation comment for the
encodingTypeparameter is outdated. It lists only a subset of available encoding types (Struct/Array/ABI/CallWithSelector/CallWithSignature) but omits Packed, Hash, Create, Create2, and Create3 which are defined in the EncodingType enum. Update the documentation to include all encoding types or reference the EncodingType enum documentation instead.
* @param encodingType Determines how this struct is encoded for ABI
* (Struct/Array/ABI/CallWithSelector/CallWithSignature)
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
fish-sammy
approved these changes
Nov 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.