-
Notifications
You must be signed in to change notification settings - Fork 12
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
[TODO] chore: update smt.MerkleRoot#Sum()
error handling
#672
Merged
Merged
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
fe59bcb
chore: update `smt.MerkleRoot#Sum()` error handling
bryanchriswhite d9b0c19
chore: bump smt version
bryanchriswhite aee4d0e
Merge branch 'main' into issues/584/refactor/smt-root
bryanchriswhite f354f0e
Merge branch 'main' into issues/584/refactor/smt-root
bryanchriswhite c200b87
fixup! chore: update `smt.MerkleRoot#Sum()` error handling
bryanchriswhite c1a8e82
chore: add digest size check
bryanchriswhite 9c2e300
test: fix tests
bryanchriswhite 3603bc5
fixup: HEAD^
bryanchriswhite 5f089be
Merge remote-tracking branch 'pokt/main' into issues/584/refactor/smt…
bryanchriswhite c218b27
Merge branch 'main' into issues/584/refactor/smt-root
bryanchriswhite 35e253c
chore: update go.{mod,sum}
bryanchriswhite 91f9cd9
Merge remote-tracking branch 'pokt/main' into issues/584/refactor/smt…
bryanchriswhite 9ccd83c
refactor: protocol.NewTrieHasher, .TrieHasherSize, .TrieRootSize
bryanchriswhite fbeb52c
Empty commit
bryanchriswhite 661e612
Empty commit
bryanchriswhite 7df656b
chore: update go.sum
bryanchriswhite b5d1db8
fix: linter errors
bryanchriswhite 902f09b
chore: review feedback improvements
bryanchriswhite File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package protocol | ||
|
||
import "crypto/sha256" | ||
|
||
const ( | ||
TrieHasherSize = sha256.Size | ||
TrieRootSize = TrieHasherSize + trieRootMetadataSize | ||
// TODO_CONSIDERATION: Export this from the SMT package. | ||
trieRootMetadataSize = 16 | ||
) | ||
|
||
var NewTrieHasher = sha256.New |
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,9 +5,11 @@ import ( | |
"math/rand" | ||
"testing" | ||
|
||
"github.com/pokt-network/smt" | ||
"github.com/stretchr/testify/require" | ||
|
||
"github.com/pokt-network/smt" | ||
|
||
"github.com/pokt-network/poktroll/pkg/crypto/protocol" | ||
testsession "github.com/pokt-network/poktroll/testutil/session" | ||
prooftypes "github.com/pokt-network/poktroll/x/proof/types" | ||
sessiontypes "github.com/pokt-network/poktroll/x/session/types" | ||
|
@@ -51,32 +53,37 @@ func ClaimWithRandomHash(t *testing.T, appAddr, supplierAddr string, sum uint64) | |
// TODO_MAINNET: Revisit if the SMT should be big or little Endian. Refs: | ||
// https://github.com/pokt-network/smt/pull/46#discussion_r1636975124 | ||
// https://github.com/pokt-network/smt/blob/ea585c6c3bc31c804b6bafa83e985e473b275580/smst.go#L23C10-L23C76 | ||
func SmstRootWithSum(sum uint64) smt.MerkleRoot { | ||
root := [smt.SmstRootSizeBytes]byte{} | ||
// Insert the sum into the root hash | ||
binary.BigEndian.PutUint64(root[smt.SmtRootSizeBytes:], sum) | ||
// Insert the count into the root hash | ||
// TODO_TECHDEBT: This is a hard-coded count of 1, but could be a parameter. | ||
// TODO_TECHDEBT: We are assuming the sum takes up 8 bytes. | ||
binary.BigEndian.PutUint64(root[smt.SmtRootSizeBytes+8:], 1) | ||
return smt.MerkleRoot(root[:]) | ||
func SmstRootWithSum(sum uint64) smt.MerkleSumRoot { | ||
root := [protocol.TrieRootSize]byte{} | ||
return encodeSum(root, sum) | ||
} | ||
|
||
// RandSmstRootWithSum returns a randomized SMST root with the given sum that | ||
// can be used for testing. Randomizing the root is a simple way to randomize | ||
// test claim hashes for testing proof requirement cases. | ||
func RandSmstRootWithSum(t *testing.T, sum uint64) smt.MerkleRoot { | ||
func RandSmstRootWithSum(t *testing.T, sum uint64) smt.MerkleSumRoot { | ||
t.Helper() | ||
|
||
root := [smt.SmstRootSizeBytes]byte{} | ||
root := [protocol.TrieRootSize]byte{} | ||
// Only populate the first 32 bytes with random data, leave the last 8 bytes for the sum. | ||
_, err := rand.Read(root[:smt.SmtRootSizeBytes]) //nolint:staticcheck // We need a deterministic pseudo-random source. | ||
_, err := rand.Read(root[:protocol.TrieHasherSize]) //nolint:staticcheck // We need a deterministic pseudo-random source. | ||
require.NoError(t, err) | ||
|
||
binary.BigEndian.PutUint64(root[smt.SmtRootSizeBytes:], sum) | ||
return encodeSum(root, sum) | ||
} | ||
|
||
// encodeSum returns a copy of the given root, binary encodes the given sum, | ||
// and stores the encoded sum in the root copy. | ||
func encodeSum(r [protocol.TrieRootSize]byte, sum uint64) smt.MerkleSumRoot { | ||
root := make([]byte, protocol.TrieRootSize) | ||
copy(root, r[:]) | ||
|
||
// Insert the sum into the root hash | ||
binary.BigEndian.PutUint64(root[protocol.TrieHasherSize:], sum) | ||
// Insert the count into the root hash | ||
// TODO_TECHDEBT: This is a hard-coded count of 1, but could be a parameter. | ||
// TODO_TECHDEBT: We are assuming the sum takes up 8 bytes. | ||
binary.BigEndian.PutUint64(root[smt.SmtRootSizeBytes+8:], 1) | ||
return smt.MerkleRoot(root[:]) | ||
binary.BigEndian.PutUint64(root[protocol.TrieHasherSize+8:], 1) | ||
|
||
return root | ||
Comment on lines
+75
to
+88
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Address TODO comments. The TODO comments indicate potential tech debt. Do you want me to help address these TODO comments or open a GitHub issue to track them? |
||
} |
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.
Oops, something went wrong.
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.
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.
Address TODO comments.
The TODO comments indicate potential tech debt and mainnet considerations.
Do you want me to help address these TODO comments or open a GitHub issue to track them?