Skip to content

Conversation

@MaksymMalicki
Copy link
Contributor

@MaksymMalicki MaksymMalicki commented Nov 28, 2025

This PR addresses #3282 (comment), and uses more descriptive felt.Hash type for trie node hash fields and felt.StateRootHash for all the state root hash fields in all triedb and trie2 packages

@codecov
Copy link

codecov bot commented Nov 28, 2025

Codecov Report

❌ Patch coverage is 72.88136% with 32 lines in your changes missing coverage. Please review.
✅ Project coverage is 76.21%. Comparing base (584e500) to head (0f9e3c1).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
core/trie2/trie.go 28.57% 20 Missing ⚠️
core/trie2/triedb/pathdb/journal.go 37.50% 5 Missing ⚠️
core/trie2/databasetest.go 70.00% 3 Missing ⚠️
core/trie2/trieutils/accessors.go 50.00% 2 Missing ⚠️
core/trie2/triedb/hashdb/database.go 94.11% 1 Missing ⚠️
core/trie2/triedb/rawdb/database.go 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3316      +/-   ##
==========================================
+ Coverage   76.20%   76.21%   +0.01%     
==========================================
  Files         346      346              
  Lines       32690    32761      +71     
==========================================
+ Hits        24912    24970      +58     
- Misses       5987     5999      +12     
- Partials     1791     1792       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@MaksymMalicki MaksymMalicki force-pushed the maksym/refactor-triedb-address branch 2 times, most recently from 9210f6f to 090e07a Compare December 3, 2025 17:59
@MaksymMalicki MaksymMalicki force-pushed the maksym/refactor-triedb-hash branch from ad10776 to 6bee396 Compare December 3, 2025 19:19
Base automatically changed from maksym/refactor-triedb-address to main December 4, 2025 05:22
@MaksymMalicki MaksymMalicki force-pushed the maksym/refactor-triedb-hash branch from 6a421db to 886e905 Compare December 5, 2025 11:49
Comment on lines 152 to 154
classNodes map[felt.Hash]map[trieutils.Path]trienode.TrieNode
contractNodes map[felt.Hash]map[trieutils.Path]trienode.TrieNode
contractStorageNodes map[felt.Hash]map[felt.Address]map[trieutils.Path]trienode.TrieNode
Copy link
Collaborator

Choose a reason for hiding this comment

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

felt.Hash is the most general type, but I think it is being miss-used.

felt.Hash means that there is not a good type to define it and it makes sense to be a general type, for example the return type of hashing function.

On the other hand, here we know the semantic meaning each hash has here, so we should use the appropriate types.

As far as I understand, it should be:

  1. classNodes keys should be of type felt.ClassHash
  2. contractNodes should be of type felt.Address since it is a contract address
  3. contractStorageNodes should be of type felt.Address to felt.StorageAddress (or felt.StorageSlot). <- The latter types are to be defined

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't think its correct or I'm missing something here. In this particular example, The felt.Hash in the hashmap mimics the layertree, which maps state root -> trie nodeset. So the felt.Hash represents the state root. The trieutils.Path represents the class hash for class trie, address for contract trie and the storage slot for the contract storage tries

Copy link
Collaborator

Choose a reason for hiding this comment

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

I see, then I think we should have a StateRootHash


// Child to parent layer relationship
childToParent map[felt.Felt]felt.Felt
childToParent map[felt.Hash]felt.Hash
Copy link
Collaborator

Choose a reason for hiding this comment

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

Similar coment to the previous ones, what would be the right hash here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

it's a mapping of child state root to the parent state root. Since its calculated from a few components using PoseidonHash (result of hashing function), I'd say it's correct or we introduce a special felt-like type for the state commitment

Copy link
Collaborator

Choose a reason for hiding this comment

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

I think here we could use StateRootHash again

Copy link
Contributor Author

Choose a reason for hiding this comment

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

let me add it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants