-
Notifications
You must be signed in to change notification settings - Fork 598
feat: Garaga UltraStarknet[Zk]Honk flavours #11489
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
Merged
ludamad
merged 146 commits into
AztecProtocol:master
from
raugfer:ultra-starknet-honk-merger
Apr 18, 2025
Merged
Changes from all commits
Commits
Show all changes
146 commits
Select commit
Hold shift + click to select a range
abef7f9
Adds structures and adjustments to support UltraStarknetHonk using Po…
raugfer 0fd97be
Incorporates poseidon to be used by the transcript module, still need…
raugfer 0938b9c
Replaces KeccakTranscript by PoseidonTranscript for UltraStarknetFlavor
raugfer 86b44dc
Adds cmake configuration to link poseidon C library lib_pos.so
raugfer 9fa447b
Adds license and source notice
raugfer 1b633d8
Adds preliminary implementation of poseidon hash wrapper for transcript
raugfer 86a37b6
Proper implementation of the StarknetPoseidonTranscript hash function
raugfer 2c85ee1
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 351e9eb
Fixes after merging master branch
raugfer 8b92a47
Merge branch 'master' into ultra-starknet-honk-merger
raugfer f290ce7
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 350a143
Declares WitnessComputation<UltraStarknetFlavor>
raugfer 3ac9b7b
Repositions the case for prove_ultra_starknet_honk_output_all
raugfer 9bdd328
Removes eol after last line
raugfer b0fd1da
Removes eol after last line
raugfer 74a63f8
Merge branch 'AztecProtocol:master' into ultra-starknet-honk-merger
feltroidprime 1715972
Merge branch 'master' into ultra-starknet-honk-merger
raugfer a7460fc
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 934841a
Preliminary implementation of Poseidon over Stark252 using BB framework
raugfer 39d8a73
Merge branch 'master' into ultra-starknet-honk-merger
raugfer a672344
Replaces C code by PoseidonPermutation class
raugfer 647d643
Refactor of barretenberg/crypto/poseidon/poseidon.cpp
raugfer 19985ea
Renames some entities to better match their usage
raugfer 512bb4f
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 6c4bd50
Splits implementation into separate files
raugfer 4e95111
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 7210ffd
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 7f39ed1
Merge branch 'master' into ultra-starknet-honk-merger
raugfer bcca8a8
Adds support for the UltraStarknetZK flavor
raugfer 7276516
Merge branch 'AztecProtocol:master' into ultra-starknet-honk-merger
raugfer b0043cc
Merge branch 'master' into ultra-starknet-honk-merger
raugfer c932acc
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 3cba62e
Adjustments to Starknet/StarknetZK after master merge
raugfer 818f32c
Adds "starknet" option to api
raugfer a7a4dc0
Adds a missing whitespace to "starknet" option description
raugfer f6fa3da
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 3c4a14e
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 0db9fcd
Merge branch 'master' into ultra-starknet-honk-merger
raugfer c61b6bf
Merge branch 'master' into ultra-starknet-honk-merger
raugfer f2265c3
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 673bfc6
Merge branch 'master' into ultra-starknet-honk-merger
raugfer da82c0b
Adds SmallSubgroupIPAProver<UltraStarknetZKFlavor> definition
raugfer ae314cc
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 870879a
Apply changes from latest ultra_keccak_zk_flavor.hpp
raugfer 3640283
Merge branch 'master' into ultra-starknet-honk-merger
raugfer cfe6e7e
Merge branch 'master' into ultra-starknet-honk-merger
raugfer f3e6f0d
Merge branch 'master' into ultra-starknet-honk-merger
raugfer d0f51c3
Adjustments after merging master
raugfer 5df64a8
Implements UltraStarknetFlavor by inheriting from UltraStarknetFlavor
raugfer a46ca6f
Implements UltraStarknetZKFlavor by inheriting from UltraKeccakZKFlavor
raugfer 1bac7aa
Implements StarknetTranscriptParams by inheriting from KeccakTranscri…
raugfer 0d15501
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 1f42848
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 268ff30
Adds TypeScript/WASM API support for the UltraStarknetFlavor
raugfer 0418fa6
Adds clarification comment
raugfer 4f83a46
Adds prove_then_verify flow for starknet to acir_tests
raugfer de80dc4
Adds preliminary ultra_starknet_honk support to yarn-project
raugfer 89c22c5
Merge branch 'master' into ultra-starknet-honk-merger
raugfer d972081
Moves stark252.hpp under ecc/curves/stark252
raugfer dc9bc5b
Adds WASM constants to stark252 base field parameters
raugfer 21fe016
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 1ddb003
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 366560b
Inverts Poseidon state[0]/state[2] to reuse BB sponge implementation
raugfer 58f4d9a
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 871c95f
Adds Poseidon template class to poseidon.hpp
raugfer 0bb6f57
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 6676b77
Merge branch 'master' into ultra-starknet-honk-merger
raugfer be04a29
Rewrites poseidon.cpp/poseidon.hpp to use Sponge class
raugfer 45ed872
Merge branch 'master' into ultra-starknet-honk-merger
raugfer b4efcb6
Removal of trailing empty space
raugfer d6cc578
Merge branch 'master' into ultra-starknet-honk-merger
raugfer caa48c6
Changes poseidon permutation implementation to match Garaga's behavior
raugfer efeec53
Removes state element order swap and updates Permutation parameters
raugfer a117990
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 85774de
Merge branch 'master' into ultra-starknet-honk-merger
feltroidprime 7ad4887
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 35d8033
Adds preliminary unit tests for poseidon
raugfer 12e8a4c
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 5efe495
Cleans up and adds unit tests
raugfer 201e2ec
Merge branch 'master' into ultra-starknet-honk-merger
raugfer e6b8c1b
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 53c8cce
Inlines poseidon stark252 hash directly into transcript implementation
raugfer 5100c22
Moves the bulk of UltraStarknet[ZK]Flavor implementation to folder ex…
raugfer a7a6a62
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 49d58df
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 8804b0e
Applies clang formating
raugfer f401319
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 89138ce
Fixes numeric namespace reference in tests
raugfer 689c517
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 9a3470c
Comments some unit tests for starknet/poseidon for now to satisfy CI
raugfer 5d342b6
Adds r_inv_X and r_inv_wasm_X to stark252.hpp
raugfer cf781a2
Adds back tests that were commented
raugfer d6de6b3
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 111d23f
Adds ecc as dependency for ext_starknet_crypto_poseidon
raugfer 32e072c
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 6288cfe
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 53cfc99
Adds ext_starknet_transcript as barretenberg_module
raugfer 0655be5
Adds missing directory to barretenberg/cpp/src/CMakeLists.txt
raugfer 40ab07b
Removes empty ext_starknet_transcript_objects from barretenberg/cpp/s…
raugfer 620d638
Merge branch 'master' into ultra-starknet-honk-merger
raugfer fe33f93
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 8061d97
Merge branch 'master' into ultra-starknet-honk-merger
raugfer a4cd75c
Attempts to fix CI linker issue with starknet hash function call
raugfer afce9d6
Attempts to fix CI linker issue with starknet hash function call
raugfer e58b21d
Attempts to fix CI linker issue with starknet hash function call
raugfer d29eba7
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 1aa68d6
Temporarily comments part of test failing CI
raugfer 0d2a3d3
Fixes formatting
raugfer 4ea7558
Comments unused declarations
raugfer f06baf4
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 578a770
Uncomments a line in the failing test
raugfer 5e8df0b
Uncomments test section that is failing
raugfer c468160
comments failing assertion
raugfer 4c6509e
Merge branch 'master' into ultra-starknet-honk-merger
raugfer a3a145f
Comments the other associated assertion
raugfer e5f6758
Removes comments from assertions
raugfer a6d4f30
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 78a2541
Fixes api_ultra_honk.cpp for UltraStarknetFlavor
raugfer cd7dda1
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 58a09cb
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 50da876
Fixes barretenberg ts
raugfer 0381701
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 4646c03
Merge branch 'master' into ultra-starknet-honk-merger
raugfer ad23d71
Comments faulty test
raugfer 2fca077
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 4b6f7cb
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 6bd9d52
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 53ed216
Adds back faulty test
raugfer f3a1e07
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 81b0126
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 1f044bd
Post merge adjusments
raugfer 4eca625
Fixes formatting after merge
raugfer 7d0172a
Merge branch 'master' into ultra-starknet-honk-merger
raugfer 597ce50
Merge branch 'master' into ultra-starknet-honk-merger
raugfer ccf574a
Merge branch 'master' into ultra-starknet-honk-merger
ludamad 634f305
fixes
ludamad cd194a2
hack to let me change base
ludamad a636c31
Merge branch 'ad/starknet-honk-merger-base' into ultra-starknet-honk-…
ludamad 0f7b3df
Merge commit 'cd194a21229ea5f463470db3de0db56ab312b9e1' into ad/stark…
ludamad ad480e5
Revert "hack to let me change base"
ludamad a8a3116
Merge branch 'ad/starknet-honk-merger-base' into ultra-starknet-honk-…
ludamad b01b99e
fix starknet zk + comment on duplication
ludamad 8e34f0d
Merge branch 'ad/starknet-honk-merger-base' into ultra-starknet-honk-…
ludamad 25d1616
Merge branch 'master' into ultra-starknet-honk-merger
ludamad e711488
fix: cbind.cpp
ludamad dc4cf04
Update c_bind.cpp
ludamad 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 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
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
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
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
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
2 changes: 1 addition & 1 deletion
2
barretenberg/cpp/src/barretenberg/benchmark/append_only_tree_bench/CMakeLists.txt
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| barretenberg_module(append_only_tree_bench crypto_poseidon2 crypto_pedersen_hash crypto_merkle_tree) | ||
| barretenberg_module(append_only_tree_bench crypto_poseidon2 ext_starknet_crypto_poseidon crypto_pedersen_hash crypto_merkle_tree) |
2 changes: 1 addition & 1 deletion
2
barretenberg/cpp/src/barretenberg/benchmark/indexed_tree_bench/CMakeLists.txt
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| barretenberg_module(indexed_tree_bench crypto_poseidon2 crypto_pedersen_hash crypto_merkle_tree) | ||
| barretenberg_module(indexed_tree_bench crypto_poseidon2 ext_starknet_crypto_poseidon crypto_pedersen_hash crypto_merkle_tree) |
2 changes: 1 addition & 1 deletion
2
barretenberg/cpp/src/barretenberg/benchmark/merkle_tree_bench/CMakeLists.txt
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| barretenberg_module(merkle_tree_bench crypto_poseidon2 crypto_pedersen_hash crypto_merkle_tree) | ||
| barretenberg_module(merkle_tree_bench crypto_poseidon2 ext_starknet_crypto_poseidon crypto_pedersen_hash crypto_merkle_tree) |
2 changes: 1 addition & 1 deletion
2
barretenberg/cpp/src/barretenberg/benchmark/poseidon2_bench/CMakeLists.txt
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| barretenberg_module(poseidon2_bench crypto_poseidon2) | ||
| barretenberg_module(poseidon2_bench crypto_poseidon2 ext_starknet_crypto_poseidon) |
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
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
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
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
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
1 change: 1 addition & 0 deletions
1
barretenberg/cpp/src/barretenberg/ext/starknet/crypto/CMakeLists.txt
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| add_subdirectory(poseidon) |
1 change: 1 addition & 0 deletions
1
barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/CMakeLists.txt
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| barretenberg_module(ext_starknet_crypto_poseidon ecc) |
19 changes: 19 additions & 0 deletions
19
barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.cpp
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| #include "poseidon.hpp" | ||
|
|
||
| namespace bb::starknet::crypto { | ||
|
|
||
| template <typename Params> | ||
| typename Poseidon<Params>::FF Poseidon<Params>::hash(const std::vector<typename Poseidon<Params>::FF>& input) | ||
| { | ||
| return Sponge::hash_internal(input); | ||
| } | ||
|
|
||
| template <typename Params> | ||
| typename Poseidon<Params>::FF Poseidon<Params>::hash(const std::vector<typename Poseidon<Params>::FF>& input, FF iv) | ||
| { | ||
| return Sponge::hash_internal(input, iv); | ||
| } | ||
|
|
||
| template class Poseidon<PoseidonStark252BaseFieldParams>; | ||
|
|
||
| } // namespace bb::starknet::crypto |
22 changes: 22 additions & 0 deletions
22
barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.hpp
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| #pragma once | ||
|
|
||
| #include "barretenberg/crypto/poseidon2/sponge/sponge.hpp" | ||
| #include "poseidon_params.hpp" | ||
| #include "poseidon_permutation.hpp" | ||
|
|
||
| namespace bb::starknet::crypto { | ||
|
|
||
| template <typename Params> class Poseidon { | ||
| public: | ||
| using FF = typename Params::FF; | ||
|
|
||
| using Sponge = bb::crypto::FieldSponge<FF, Params::t - 1, 1, Params::t, PoseidonPermutation<Params>>; | ||
|
|
||
| static FF hash(const std::vector<FF>& input); | ||
|
|
||
| static FF hash(const std::vector<FF>& input, FF iv); | ||
| }; | ||
|
|
||
| extern template class Poseidon<PoseidonStark252BaseFieldParams>; | ||
|
|
||
| } // namespace bb::starknet::crypto |
47 changes: 47 additions & 0 deletions
47
barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.test.cpp
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| #include "poseidon.hpp" | ||
| #include "barretenberg/ext/starknet/ecc/curves/stark252/stark252.hpp" | ||
| #include "poseidon_params.hpp" | ||
| #include <gtest/gtest.h> | ||
|
|
||
| using namespace bb::starknet; | ||
|
|
||
| namespace { | ||
| auto& engine = bb::numeric::get_debug_randomness(); | ||
| } | ||
|
|
||
| TEST(Poseidon, HashBasicTests) | ||
| { | ||
| using fq = stark252::fq; | ||
|
|
||
| fq a = fq::random_element(&engine); | ||
| fq b = fq::random_element(&engine); | ||
| fq c = fq::random_element(&engine); | ||
| fq d = fq::random_element(&engine); | ||
|
|
||
| std::vector<fq> input1{ a, b, c, d }; | ||
| std::vector<fq> input2{ d, c, b, a }; | ||
|
|
||
| auto r0 = crypto::Poseidon<crypto::PoseidonStark252BaseFieldParams>::hash(input1); | ||
| auto r1 = crypto::Poseidon<crypto::PoseidonStark252BaseFieldParams>::hash(input1); | ||
| auto r2 = crypto::Poseidon<crypto::PoseidonStark252BaseFieldParams>::hash(input2); | ||
|
|
||
| EXPECT_EQ(r0, r1); | ||
| EXPECT_NE(r0, r2); | ||
| } | ||
|
|
||
| TEST(Poseidon, HashConsistencyCheck) | ||
| { | ||
| using fq = stark252::fq; | ||
|
|
||
| fq a(std::string("9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); | ||
| fq b(std::string("9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); | ||
| fq c(std::string("0x9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); | ||
| fq d(std::string("0x9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); | ||
|
|
||
| std::vector<fq> input{ a, b, c, d }; | ||
| auto result = crypto::Poseidon<crypto::PoseidonStark252BaseFieldParams>::hash(input); | ||
|
|
||
| fq expected(std::string("0x0494e3a5a8047943395f79e41f11ba73285be9aa930953fbad060c0649a7c79d")); | ||
|
|
||
| EXPECT_EQ(result, expected); | ||
| } |
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.
@ledwards2225 I suppose this isn't high risk as we only pass known params here?
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.
We can probably delete this