diff --git a/.circleci/config.yml b/.circleci/config.yml index 6da3525e4fc..1175377cfc4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -49,7 +49,7 @@ checkout: &checkout echo $GIT_CHECKOUT_KEY | base64 -d > .ssh/id_rsa chmod 0600 .ssh/id_rsa - # IF YOU'RE CHANGING THIS, YOU ALSO WANT TO CHANGE: build-system/remote_build/remote_build + # IF YOU'RE CHANGING THIS, YOU ALSO WANT TO CHANGE: build-system/scripts/remote_runner # Shallow checkout this commit. mkdir -p project cd project @@ -140,7 +140,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_tests barretenberg-x86_64-linux-clang-assert 1 stdlib-tests + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/run_tests 1 stdlib-tests - *save_logs barretenberg-dsl-tests: @@ -152,7 +152,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_tests barretenberg-x86_64-linux-clang-assert 1 dsl_tests + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/run_tests 1 dsl_tests - *save_logs barretenberg-tests: @@ -164,7 +164,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_test_script ./scripts/bb-tests.sh barretenberg-x86_64-linux-clang-assert + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/bb-tests.sh - *save_logs barretenberg-honk-tests: @@ -176,7 +176,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_tests barretenberg-x86_64-linux-clang-assert 1 honk_tests + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/run_tests 1 honk_tests - *save_logs barretenberg-proof-system-tests: @@ -188,7 +188,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_tests barretenberg-x86_64-linux-clang-assert 1 proof_system_tests + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/run_tests 1 proof_system_tests - *save_logs barretenberg-stdlib-recursion-turbo-tests: @@ -200,7 +200,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_tests barretenberg-x86_64-linux-clang-assert 1 stdlib_recursion_tests --gtest_filter=*turbo* + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/run_tests 1 stdlib_recursion_tests --gtest_filter=*turbo* - *save_logs barretenberg-stdlib-recursion-ultra-tests: @@ -212,7 +212,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_tests barretenberg-x86_64-linux-clang-assert 3 stdlib_recursion_tests --gtest_filter=-*turbo* + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/run_tests 3 stdlib_recursion_tests --gtest_filter=-*turbo* - *save_logs barretenberg-join-split-tests: @@ -224,7 +224,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_tests barretenberg-x86_64-linux-clang-assert 3 join_split_example_proofs_join_split_tests --gtest_filter=-*full_proof* + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/run_tests 3 join_split_example_proofs_join_split_tests --gtest_filter=-*full_proof* - *save_logs # barretenberg-benchmark-aggregator: @@ -271,7 +271,7 @@ jobs: - *setup_env - run: name: "Build and test" - command: cond_spot_run_tests bb.js + command: cond_spot_run_test bb.js 32 ./scripts/run_tests bb-js-acir-tests: docker: @@ -348,7 +348,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_tests circuits-wasm-linux-clang-assert 1 wasm scripts/a3-tests -*.skip*:*.circuit* + command: cond_spot_run_test circuits-wasm-linux-clang-assert 32 ./scripts/run_tests 1 wasm scripts/a3-tests -*.skip*:*.circuit* - *save_logs circuits-x86_64-tests: @@ -360,18 +360,9 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_tests circuits-x86_64-linux-clang-assert 1 x86_64 scripts/a3-tests -*.skip* + command: cond_spot_run_test circuits-x86_64-linux-clang-assert 32 ./scripts/run_tests 1 x86_64 scripts/a3-tests -*.skip* - *save_logs - circuits-end: - docker: - - image: cimg/base:current - resource_class: small - steps: - - run: - name: "Noop" - command: echo Noop - l1-contracts: machine: image: ubuntu-2004:202010-01 @@ -390,12 +381,6 @@ jobs: steps: - *checkout - *setup_env - # We make the build_manifest in the root available to yarn-project. We should be injecting another - # build context to docker instead, but that requires modifying the build script from build-system - # to accept arbitrary arguments to be passed to docker build, so we avoid it for now. - - run: - name: "Make build manifest available" - command: cp build_manifest.json yarn-project/ - run: name: "Build" command: build yarn-project-base @@ -673,8 +658,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_2_rpc_servers.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_2_rpc_servers.test.ts e2e-multiple-accounts-1-enc-key: machine: @@ -685,8 +669,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_multiple_accounts_1_enc_key.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_multiple_accounts_1_enc_key.test.ts e2e-deploy-contract: machine: @@ -697,8 +680,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_deploy_contract.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_deploy_contract.test.ts e2e-lending-contract: machine: @@ -709,8 +691,18 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_lending_contract.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_lending_contract.test.ts + + e2e-token-contract: + machine: + image: ubuntu-2004:202010-01 + resource_class: large + steps: + - *checkout + - *setup_env + - run: + name: "Test" + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_token_contract.test.ts e2e-private-token-contract: machine: @@ -721,8 +713,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_private_token_contract.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_private_token_contract.test.ts e2e-sandbox-example: machine: @@ -732,8 +723,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_sandbox_example.test.ts ./scripts/docker-compose-e2e-sandbox.yml - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_sandbox_example.test.ts ./scripts/docker-compose-e2e-sandbox.yml e2e-multi-transfer-contract: machine: @@ -743,8 +733,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_multi_transfer.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_multi_transfer.test.ts e2e-block-building: machine: @@ -755,8 +744,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_block_building.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_block_building.test.ts e2e-nested-contract: machine: @@ -767,8 +755,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_nested_contract.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_nested_contract.test.ts e2e-non-contract-account: machine: @@ -779,8 +766,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_non_contract_account.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_non_contract_account.test.ts e2e-cross-chain-messaging: machine: @@ -791,8 +777,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_cross_chain_messaging.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_cross_chain_messaging.test.ts e2e-public-cross-chain-messaging: machine: @@ -803,8 +788,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_public_cross_chain_messaging.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_public_cross_chain_messaging.test.ts e2e-public-to-private-messaging: machine: @@ -815,8 +799,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_public_to_private_messaging.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_public_to_private_messaging.test.ts e2e-account-contracts: machine: @@ -827,8 +810,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_account_contracts.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_account_contracts.test.ts e2e-escrow-contract: machine: @@ -838,8 +820,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_escrow_contract.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_escrow_contract.test.ts e2e-pending-commitments-contract: machine: @@ -850,8 +831,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_pending_commitments_contract.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_pending_commitments_contract.test.ts e2e-ordering: machine: @@ -862,8 +842,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_ordering.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_ordering.test.ts uniswap-trade-on-l1-from-l2: machine: @@ -874,8 +853,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local uniswap_trade_on_l1_from_l2.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local uniswap_trade_on_l1_from_l2.test.ts integration-archiver-l1-to-l2: machine: @@ -886,8 +864,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local integration_archiver_l1_to_l2.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local integration_archiver_l1_to_l2.test.ts integration-l1-publisher: machine: @@ -898,8 +875,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local integration_l1_publisher.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local integration_l1_publisher.test.ts e2e-public-token-contract: machine: @@ -910,8 +886,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_public_token_contract.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_public_token_contract.test.ts e2e-cli: machine: @@ -922,8 +897,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_cli.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_cli.test.ts e2e-p2p: machine: @@ -933,8 +907,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_p2p_network.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_p2p_network.test.ts e2e-browser-sandbox: machine: @@ -944,8 +917,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_aztec_js_browser.test.ts ./scripts/docker-compose-e2e-sandbox.yml - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_aztec_js_browser.test.ts ./scripts/docker-compose-e2e-sandbox.yml e2e-card-game: machine: @@ -955,8 +927,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_card_game.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local e2e_card_game.test.ts aztec-rpc-sandbox: machine: @@ -966,8 +937,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local aztec_rpc_sandbox.test.ts ./scripts/docker-compose-e2e-sandbox.yml - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local aztec_rpc_sandbox.test.ts ./scripts/docker-compose-e2e-sandbox.yml cli-docs-sandbox: machine: @@ -977,8 +947,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local cli_docs_sandbox.test.ts ./scripts/docker-compose-e2e-sandbox.yml - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local cli_docs_sandbox.test.ts ./scripts/docker-compose-e2e-sandbox.yml guides-writing-an-account-contract: machine: @@ -989,8 +958,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local guides/writing_an_account_contract.test.ts - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local guides/writing_an_account_contract.test.ts guides-dapp-testing: machine: @@ -1000,8 +968,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local guides/dapp_testing.test.ts ./scripts/docker-compose-e2e-sandbox.yml - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local guides/dapp_testing.test.ts ./scripts/docker-compose-e2e-sandbox.yml guides-sample-dapp: machine: @@ -1011,8 +978,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local sample-dapp ./scripts/docker-compose-e2e-sandbox.yml - working_directory: yarn-project/end-to-end + command: cond_run_script end-to-end ./scripts/run_tests_local sample-dapp ./scripts/docker-compose-e2e-sandbox.yml e2e-canary-test: machine: @@ -1022,8 +988,7 @@ jobs: - *setup_env - run: name: "Test" - command: ./scripts/cond_run_script canary-build $JOB_NAME ./scripts/run_tests uniswap_trade_on_l1_from_l2.test.ts canary-build ./scripts/docker-compose-e2e-sandbox.yml - working_directory: yarn-project/canary + command: cond_run_script canary-build ./scripts/run_tests uniswap_trade_on_l1_from_l2.test.ts canary-build ./scripts/docker-compose-e2e-sandbox.yml build-docs: machine: @@ -1298,14 +1263,6 @@ bb_test: &bb_test requires: - barretenberg-x86_64-linux-clang-assert <<: *defaults -circuits-wasm-test: &circuits-wasm-test - requires: - - circuits-wasm-linux-clang-assert - <<: *defaults -circuits-x86_64-test: &circuits-x86_64-test - requires: - - circuits-x86_64-linux-clang-assert - <<: *defaults workflows: system: @@ -1313,6 +1270,8 @@ workflows: equal: [system, << pipeline.parameters.workflow >>] jobs: - build-docs: *defaults + + # Barretenberg - barretenberg-x86_64-linux-gcc: *defaults - barretenberg-x86_64-linux-clang: *defaults - barretenberg-x86_64-linux-clang-assert: *defaults @@ -1338,6 +1297,10 @@ workflows: # only: # - master # <<: *defaults + - barretenberg-acir-tests-bb: + requires: + - barretenberg-x86_64-linux-clang-assert + <<: *defaults - bb-js: requires: - barretenberg-wasm-linux-clang @@ -1346,38 +1309,54 @@ workflows: requires: - bb-js <<: *defaults - - barretenberg-acir-tests-bb: - requires: - - barretenberg-x86_64-linux-clang-assert - <<: *defaults - bb-js-acir-tests: requires: - bb-js <<: *defaults - - circuits-wasm-linux-clang: *defaults - - circuits-wasm-linux-clang-assert: *defaults - - circuits-x86_64-linux-clang-tidy: *defaults - - circuits-x86_64-linux-clang: *defaults - - circuits-x86_64-linux-clang-assert: *defaults - - circuits-wasm-tests: - <<: *circuits-wasm-test - - circuits-x86_64-tests: - <<: *circuits-x86_64-test - - circuits-end: + # Circuits + - circuits-wasm-linux-clang: + requires: + - barretenberg-wasm-linux-clang + <<: *defaults + - circuits-wasm-linux-clang-assert: + requires: + - barretenberg-wasm-linux-clang + <<: *defaults + - circuits-x86_64-linux-clang-tidy: + requires: + - barretenberg-x86_64-linux-clang + <<: *defaults + - circuits-x86_64-linux-clang: + requires: + - barretenberg-x86_64-linux-clang + <<: *defaults + - circuits-x86_64-linux-clang-assert: + requires: + - barretenberg-x86_64-linux-clang + <<: *defaults + - circuits-wasm-tests: requires: - - circuits-wasm-linux-clang - circuits-wasm-linux-clang-assert - - circuits-x86_64-linux-clang-tidy - - circuits-x86_64-linux-clang + <<: *defaults + - circuits-x86_64-tests: + requires: - circuits-x86_64-linux-clang-assert - - circuits-wasm-tests - - circuits-x86_64-tests <<: *defaults + # - circuits-end: + # requires: + # - circuits-wasm-linux-clang + # - circuits-x86_64-linux-clang-tidy + # - circuits-x86_64-linux-clang + # - circuits-wasm-tests + # - circuits-x86_64-tests + # <<: *defaults + - l1-contracts: *defaults - noir-contracts-build: *defaults + # Yarn Project - yarn-project-base: requires: - circuits-wasm-linux-clang @@ -1439,6 +1418,7 @@ workflows: - e2e-2-rpc-servers: *e2e_test - e2e-deploy-contract: *e2e_test - e2e-lending-contract: *e2e_test + - e2e-token-contract: *e2e_test - e2e-private-token-contract: *e2e_test - e2e-sandbox-example: *e2e_test - e2e-multi-transfer-contract: *e2e_test @@ -1473,6 +1453,7 @@ workflows: - e2e-2-rpc-servers - e2e-deploy-contract - e2e-lending-contract + - e2e-token-contract - e2e-private-token-contract - e2e-sandbox-example - e2e-multi-transfer-contract @@ -1504,10 +1485,11 @@ workflows: <<: *defaults - aztec-sandbox-multi-platform: - requires: + requires: - e2e-end <<: *defaults + # Deployment and Canary tests - deploy-dockerhub: requires: - aztec-sandbox-multi-platform diff --git a/.github/workflows/mirror_barretenberg_repo.yml b/.github/workflows/mirror_barretenberg_repo.yml index b83c95e0f2a..d4ab13d76e1 100644 --- a/.github/workflows/mirror_barretenberg_repo.yml +++ b/.github/workflows/mirror_barretenberg_repo.yml @@ -5,8 +5,8 @@ on: branches: - master paths: - - 'circuits/cpp/barretenberg/**' - - '!circuits/cpp/barretenberg/.gitrepo' + - "barretenberg/**" + - "!barretenberg/.gitrepo" jobs: build: @@ -23,7 +23,7 @@ jobs: run: | # we push using git subrepo (https://github.com/ingydotnet/git-subrepo) # with some logic to recover from squashed parent commits - SUBREPO_PATH=circuits/cpp/barretenberg + SUBREPO_PATH=barretenberg # identify ourselves, needed to commit git config --global user.name AztecBot git config --global user.email tech@aztecprotocol.com diff --git a/.github/workflows/publish-bb.yml b/.github/workflows/publish-bb.yml index 2df722abf3d..5895d5ab9ca 100644 --- a/.github/workflows/publish-bb.yml +++ b/.github/workflows/publish-bb.yml @@ -49,13 +49,13 @@ jobs: - name: Compile Barretenberg run: | - cd circuits/cpp/barretenberg/cpp + cd barretenberg/cpp cmake --preset default -DCMAKE_BUILD_TYPE=RelWithAssert cmake --build --preset default --target bb - name: Tar and GZip bb Binary (Ubuntu) - working-directory: circuits/cpp/barretenberg/cpp/build/bin + working-directory: barretenberg/cpp/build/bin run: tar -cvzf barretenberg-x86_64-linux-gnu.tar.gz bb - name: Upload artifacts @@ -63,7 +63,7 @@ jobs: with: name: release-linux path: | - ./circuits/cpp/barretenberg/cpp/build/bin/barretenberg-x86_64-linux-gnu.tar.gz + ./barretenberg/cpp/build/bin/barretenberg-x86_64-linux-gnu.tar.gz build-wasm-ts: name: Build WASM and deploy to TS @@ -100,21 +100,21 @@ jobs: sudo apt -y update && sudo apt -y install yarn - name: Install WASI-SDK run: | - cd circuits/cpp/barretenberg/cpp + cd barretenberg/cpp ./scripts/install-wasi-sdk.sh - name: Compile Typescript run: | - cd circuits/cpp/barretenberg/ts + cd barretenberg/ts yarn install && yarn && yarn build - name: Tar and GZip barretenberg.wasm - working-directory: circuits/cpp/barretenberg/cpp/build-wasm/bin + working-directory: barretenberg/cpp/build-wasm/bin run: tar -cvzf barretenberg.wasm.tar.gz barretenberg.wasm - name: Tar and GZip acvm_backend.wasm - working-directory: circuits/cpp/barretenberg/cpp/build-wasm/bin + working-directory: barretenberg/cpp/build-wasm/bin run: tar -cvzf acvm_backend.wasm.tar.gz acvm_backend.wasm - name: Setup Node.js @@ -126,7 +126,7 @@ jobs: - name: Deploy Typescript to NPM if: github.event.inputs.tag != 'nightly' && github.event.inputs.tag != '' # Do not deploy to npm if it is a nightly build run: | - cd circuits/cpp/barretenberg/ts + cd barretenberg/ts yarn deploy env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} @@ -136,8 +136,8 @@ jobs: with: name: release-wasm path: | - ./circuits/cpp/barretenberg/cpp/build-wasm/bin/barretenberg.wasm.tar.gz - ./circuits/cpp/barretenberg/cpp/build-wasm/bin/acvm_backend.wasm.tar.gz + ./barretenberg/cpp/build-wasm/bin/barretenberg.wasm.tar.gz + ./barretenberg/cpp/build-wasm/bin/acvm_backend.wasm.tar.gz build-mac: name: Build on Mac (${{ matrix.target }}) @@ -163,20 +163,20 @@ jobs: - name: Compile Barretenberg (x86_64) if: matrix.target == 'x86_64-apple-darwin' - working-directory: circuits/cpp/barretenberg/cpp + working-directory: barretenberg/cpp run: | cmake --preset default -DCMAKE_BUILD_TYPE=RelWithAssert cmake --build --preset default --target bb - name: Compile Barretenberg (ARM) if: matrix.target == 'aarch64-apple-darwin' - working-directory: circuits/cpp/barretenberg/cpp + working-directory: barretenberg/cpp run: | cmake --toolchain ./cmake/toolchains/aarch64-darwin.cmake --preset default -DCMAKE_BUILD_TYPE=RelWithAssert cmake --build --preset default --target bb - name: Package barretenberg artifact - working-directory: circuits/cpp/barretenberg/cpp/build/bin + working-directory: barretenberg/cpp/build/bin run: | mkdir dist cp ./bb ./dist/bb @@ -186,7 +186,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: barretenberg-${{ matrix.target }} - path: ./circuits/cpp/barretenberg/cpp/build/bin/barretenberg-${{ matrix.target }}.tar.gz + path: ./barretenberg/cpp/build/bin/barretenberg-${{ matrix.target }}.tar.gz retention-days: 3 release: diff --git a/.gitignore b/.gitignore index 16bc8821c57..836f3f16ce3 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ node_modules build/ .idea cmake-build-debug +.bootstrapped \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index 64ffb023e53..e355139eb3d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ [submodule "legacy-barretenberg-build-system"] - path = circuits/cpp/barretenberg/build-system + path = barretenberg/build-system url = https://github.com/AztecProtocol/build-system [submodule "l1-contracts/lib/openzeppelin-contracts"] path = l1-contracts/lib/openzeppelin-contracts @@ -7,12 +7,12 @@ [submodule "l1-contracts/lib/forge-std"] path = l1-contracts/lib/forge-std url = https://github.com/foundry-rs/forge-std -[submodule "circuits/cpp/barretenberg/sol/lib/forge-std"] - path = circuits/cpp/barretenberg/sol/lib/forge-std +[submodule "barretenberg/sol/lib/forge-std"] + path = barretenberg/sol/lib/forge-std url = https://github.com/foundry-rs/forge-std -[submodule "circuits/cpp/barretenberg/sol/lib/solidity-stringutils"] - path = circuits/cpp/barretenberg/sol/lib/solidity-stringutils +[submodule "barretenberg/sol/lib/solidity-stringutils"] + path = barretenberg/sol/lib/solidity-stringutils url = https://github.com/Arachnid/solidity-stringutils -[submodule "circuits/cpp/barretenberg/sol/lib/openzeppelin-contracts"] - path = circuits/cpp/barretenberg/sol/lib/openzeppelin-contracts +[submodule "barretenberg/sol/lib/openzeppelin-contracts"] + path = barretenberg/sol/lib/openzeppelin-contracts url = https://github.com/OpenZeppelin/openzeppelin-contracts diff --git a/.ignore b/.ignore index c1c1645a0e7..d263d2fa829 100644 --- a/.ignore +++ b/.ignore @@ -1,2 +1,2 @@ -/circuits/cpp/barretenberg/ts -/circuits/cpp/barretenberg/foundation \ No newline at end of file +/barretenberg/ts +/barretenberg/foundation \ No newline at end of file diff --git a/.release-please-manifest.json b/.release-please-manifest.json index bb18cd9a1d3..a1a9e85c860 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - ".": "0.6.7", - "circuits/cpp/barretenberg": "0.6.7", - "circuits/cpp/barretenberg/ts": "0.6.7" + ".": "0.7.0", + "barretenberg": "0.7.0", + "barretenberg/ts": "0.7.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 4192d1e02d9..d59f82f0cd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,57 @@ # Changelog +## [0.7.0](https://github.com/AztecProtocol/aztec-packages/compare/aztec-packages-v0.6.7...aztec-packages-v0.7.0) (2023-09-13) + + +### ⚠ BREAKING CHANGES + +* **aztec-noir:** rename noir-aztec to aztec-noir ([#2071](https://github.com/AztecProtocol/aztec-packages/issues/2071)) + +### Features + +* **build:** Use LTS version of ubuntu ([#2239](https://github.com/AztecProtocol/aztec-packages/issues/2239)) ([ce6671e](https://github.com/AztecProtocol/aztec-packages/commit/ce6671e6ab72fcdc8114df5b6a45f81c0086b19d)) +* **ci:** Run nargo test in ci on all packages ([#2197](https://github.com/AztecProtocol/aztec-packages/issues/2197)) ([cca55f2](https://github.com/AztecProtocol/aztec-packages/commit/cca55f225f7277cfb44b44e4d1f50d5527afdb8b)) +* **cli:** Add commands for generating ts and nr interfaces ([#2241](https://github.com/AztecProtocol/aztec-packages/issues/2241)) ([c11b70d](https://github.com/AztecProtocol/aztec-packages/commit/c11b70d8186ef7ab9a9d4ab1a09589e7c47e91bb)), closes [#2183](https://github.com/AztecProtocol/aztec-packages/issues/2183) +* **cli:** Inspect contract command ([#2248](https://github.com/AztecProtocol/aztec-packages/issues/2248)) ([381706e](https://github.com/AztecProtocol/aztec-packages/commit/381706eaaad7054d620855f7b986e2df3cf62a91)), closes [#2180](https://github.com/AztecProtocol/aztec-packages/issues/2180) +* Define specific Sandbox version when running docker-compose up ([#2238](https://github.com/AztecProtocol/aztec-packages/issues/2238)) ([71da236](https://github.com/AztecProtocol/aztec-packages/commit/71da2360986e5b57f211ca095b95ade2617f4eb8)) +* **docs:** Updated docs explaining Sandbox accounts ([#2235](https://github.com/AztecProtocol/aztec-packages/issues/2235)) ([f560066](https://github.com/AztecProtocol/aztec-packages/commit/f560066394c3fc9725be18f320597794e29dc077)) +* Optimise sandbox startup time by only initialising the BB solver once. ([#2240](https://github.com/AztecProtocol/aztec-packages/issues/2240)) ([e9cac9c](https://github.com/AztecProtocol/aztec-packages/commit/e9cac9ced3604fdef1d6b298091639fc510cb4fb)) +* Remove entrypoint collection ([#2148](https://github.com/AztecProtocol/aztec-packages/issues/2148)) ([e97c94d](https://github.com/AztecProtocol/aztec-packages/commit/e97c94d8bc0659a95f457ba63369fca0dfba47c8)) +* Validate nargo version against expected one ([#2254](https://github.com/AztecProtocol/aztec-packages/issues/2254)) ([011c0b7](https://github.com/AztecProtocol/aztec-packages/commit/011c0b7c070f004fcc1c6f9ce8936830c9f496f6)) + + +### Bug Fixes + +* Add cjs-entry to bbjs package files ([#2237](https://github.com/AztecProtocol/aztec-packages/issues/2237)) ([ae16193](https://github.com/AztecProtocol/aztec-packages/commit/ae16193b3cdb2da3d57a1c74f7e71f139ced54d1)) +* Add link to example contracts in the monorepo ([#2219](https://github.com/AztecProtocol/aztec-packages/issues/2219)) ([8aede54](https://github.com/AztecProtocol/aztec-packages/commit/8aede5470d8e7d88227bf807c3c6cb5dec77a93d)) +* **build:** Update ubuntu version used in Docker builds ([#2236](https://github.com/AztecProtocol/aztec-packages/issues/2236)) ([dbe80b7](https://github.com/AztecProtocol/aztec-packages/commit/dbe80b739e97474b29e6a4125ac0d2f16e248b32)) +* **docs:** Use code snippet macros in bridge docs ([#2205](https://github.com/AztecProtocol/aztec-packages/issues/2205)) ([0c3a627](https://github.com/AztecProtocol/aztec-packages/commit/0c3a6271a1d90fa95a0163606e49f432573e66da)) +* Format barretenberg ([#2209](https://github.com/AztecProtocol/aztec-packages/issues/2209)) ([0801372](https://github.com/AztecProtocol/aztec-packages/commit/08013725091c7e80c1e83145ffbf3983cf1e7fe3)) +* Msgpack blowup with bigger objects ([#2207](https://github.com/AztecProtocol/aztec-packages/issues/2207)) ([b909937](https://github.com/AztecProtocol/aztec-packages/commit/b909937ba53b896e11e6b65db08b8f2bb83218d5)) +* Refactor constraints in scalar mul to use the high limb ([#2161](https://github.com/AztecProtocol/aztec-packages/issues/2161)) ([1d0e25d](https://github.com/AztecProtocol/aztec-packages/commit/1d0e25d9fad69aebccacf9f646e3291ea89716ca)) +* Reinstate v stripping in build ([#2220](https://github.com/AztecProtocol/aztec-packages/issues/2220)) ([13d34f5](https://github.com/AztecProtocol/aztec-packages/commit/13d34f56855bf5c86f04eec15c70b06ded7c955e)) +* Return partial witnesses based on the content of read requests. ([#2164](https://github.com/AztecProtocol/aztec-packages/issues/2164)) ([a2125f7](https://github.com/AztecProtocol/aztec-packages/commit/a2125f7611ad9ab3f479b806cbcc7ff1f97db57e)) +* Try e2e cli timeout bump ([#2210](https://github.com/AztecProtocol/aztec-packages/issues/2210)) ([a039fdd](https://github.com/AztecProtocol/aztec-packages/commit/a039fdd5d39a57eb25119e990acf309e3447b244)) +* Try workaround sample dapp ci timeout ([#2208](https://github.com/AztecProtocol/aztec-packages/issues/2208)) ([e39f6bf](https://github.com/AztecProtocol/aztec-packages/commit/e39f6bf3be2e577e9dffa2d4815b11eb442b5152)) + + +### Miscellaneous + +* Add a Nargo workspace in `noir-contracts` ([#2083](https://github.com/AztecProtocol/aztec-packages/issues/2083)) ([728a79c](https://github.com/AztecProtocol/aztec-packages/commit/728a79ca16c962462090b25959d1eab0f1e9f47f)) +* Add debugging to run_tests ([#2212](https://github.com/AztecProtocol/aztec-packages/issues/2212)) ([1c5e78a](https://github.com/AztecProtocol/aztec-packages/commit/1c5e78a4ac01bee4b785857447efdb02d8d9cb35)) +* **aztec-noir:** Rename noir-aztec to aztec-noir ([#2071](https://github.com/AztecProtocol/aztec-packages/issues/2071)) ([e1e14d2](https://github.com/AztecProtocol/aztec-packages/commit/e1e14d2c7fb44d56b9a10a645676d3551830bb10)) +* **circuits:** Merge and root rollup cbind msgpack ([#2192](https://github.com/AztecProtocol/aztec-packages/issues/2192)) ([4f3ecee](https://github.com/AztecProtocol/aztec-packages/commit/4f3eceefe1914dcd1ae3a9c7ae2d91861c25f1d3)) +* **noir-contracts:** 1655 - rename functions to make hack clearer for publicly created notes ([#2230](https://github.com/AztecProtocol/aztec-packages/issues/2230)) ([707bc09](https://github.com/AztecProtocol/aztec-packages/commit/707bc09a3c4b5a6460154931db55ee48842ee041)) +* Run the test for zero division with mul div up ([#2206](https://github.com/AztecProtocol/aztec-packages/issues/2206)) ([747de6a](https://github.com/AztecProtocol/aztec-packages/commit/747de6aa4b7da488d0f4bc7c545c7e0f4eed4ca9)) +* Update url for acir artifacts ([#2231](https://github.com/AztecProtocol/aztec-packages/issues/2231)) ([5e0abd3](https://github.com/AztecProtocol/aztec-packages/commit/5e0abd35dec449a665760e5ee51eeff89c76532c)) +* Use workspace build with `nargo compile --workspace` ([#2266](https://github.com/AztecProtocol/aztec-packages/issues/2266)) ([9ab66a0](https://github.com/AztecProtocol/aztec-packages/commit/9ab66a05993cebfd7e126fad4b3cdc6bb1e37faa)) + + +### Documentation + +* Dapp tutorial ([#2109](https://github.com/AztecProtocol/aztec-packages/issues/2109)) ([573dbc2](https://github.com/AztecProtocol/aztec-packages/commit/573dbc20a2b5ebae0e967e320da75febd5361eaf)), closes [#2051](https://github.com/AztecProtocol/aztec-packages/issues/2051) +* Minor fixes to dapp tutorial ([#2203](https://github.com/AztecProtocol/aztec-packages/issues/2203)) ([dcc927c](https://github.com/AztecProtocol/aztec-packages/commit/dcc927c9aa347cd305cecd260cfedfb5cda0454f)) + ## [0.6.7](https://github.com/AztecProtocol/aztec-packages/compare/aztec-packages-v0.6.6...aztec-packages-v0.6.7) (2023-09-11) diff --git a/README.md b/README.md index 31c7191b864..a229197bb96 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ All packages need to be included in the [build manifest](`build_manifest.json`), ## Debugging -Logging goes through the [`info` and `debug`](circuits/cpp/barretenberg/cpp/src/barretenberg/common/log.hpp) functions in C++, and through the [DebugLogger](yarn-project/foundation/src/log/debug.ts) module in Typescript. To see the log output, set a `DEBUG` environment variable to the name of the module you want to debug, to `aztec:*`, or to `*` to see all logs. +Logging goes through the [`info` and `debug`](barretenberg/cpp/src/barretenberg/common/log.hpp) functions in C++, and through the [DebugLogger](yarn-project/foundation/src/log/debug.ts) module in Typescript. To see the log output, set a `DEBUG` environment variable to the name of the module you want to debug, to `aztec:*`, or to `*` to see all logs. ## Releases diff --git a/VERSION b/VERSION index 9502cd8069c..f34b958bcd4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v0.6.7 x-release-please-version +v0.7.0 x-release-please-version diff --git a/circuits/cpp/barretenberg/.circleci/config.yml b/barretenberg/.circleci/config.yml similarity index 100% rename from circuits/cpp/barretenberg/.circleci/config.yml rename to barretenberg/.circleci/config.yml diff --git a/circuits/cpp/barretenberg/.dockerignore b/barretenberg/.dockerignore similarity index 100% rename from circuits/cpp/barretenberg/.dockerignore rename to barretenberg/.dockerignore diff --git a/circuits/cpp/barretenberg/.github/pull_request_template.md b/barretenberg/.github/pull_request_template.md similarity index 100% rename from circuits/cpp/barretenberg/.github/pull_request_template.md rename to barretenberg/.github/pull_request_template.md diff --git a/circuits/cpp/barretenberg/.github/workflows/benchmarks.yml b/barretenberg/.github/workflows/benchmarks.yml similarity index 100% rename from circuits/cpp/barretenberg/.github/workflows/benchmarks.yml rename to barretenberg/.github/workflows/benchmarks.yml diff --git a/circuits/cpp/barretenberg/.github/workflows/nix.yml b/barretenberg/.github/workflows/nix.yml similarity index 100% rename from circuits/cpp/barretenberg/.github/workflows/nix.yml rename to barretenberg/.github/workflows/nix.yml diff --git a/circuits/cpp/barretenberg/.github/workflows/noir.yml b/barretenberg/.github/workflows/noir.yml similarity index 100% rename from circuits/cpp/barretenberg/.github/workflows/noir.yml rename to barretenberg/.github/workflows/noir.yml diff --git a/circuits/cpp/barretenberg/.github/workflows/pull-request.yml b/barretenberg/.github/workflows/pull-request.yml similarity index 100% rename from circuits/cpp/barretenberg/.github/workflows/pull-request.yml rename to barretenberg/.github/workflows/pull-request.yml diff --git a/circuits/cpp/barretenberg/.gitignore b/barretenberg/.gitignore similarity index 100% rename from circuits/cpp/barretenberg/.gitignore rename to barretenberg/.gitignore diff --git a/circuits/cpp/barretenberg/.gitmodules b/barretenberg/.gitmodules similarity index 100% rename from circuits/cpp/barretenberg/.gitmodules rename to barretenberg/.gitmodules diff --git a/circuits/cpp/barretenberg/.gitrepo b/barretenberg/.gitrepo similarity index 75% rename from circuits/cpp/barretenberg/.gitrepo rename to barretenberg/.gitrepo index c9384a45b7c..c7afea8c09a 100644 --- a/circuits/cpp/barretenberg/.gitrepo +++ b/barretenberg/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/AztecProtocol/barretenberg branch = master - commit = 760438bf40eb3315b1953898a439e462baef5c90 - parent = 1d0e25d9fad69aebccacf9f646e3291ea89716ca + commit = 7edb1644d0ae472a70fc3554b7d2cfc6c5496168 + parent = 404ec34d38e1a9c3fbe7a3cdb6e88c28f62f72e4 method = merge cmdver = 0.4.6 diff --git a/circuits/cpp/barretenberg/.vscode/c_cpp_properties.json b/barretenberg/.vscode/c_cpp_properties.json similarity index 100% rename from circuits/cpp/barretenberg/.vscode/c_cpp_properties.json rename to barretenberg/.vscode/c_cpp_properties.json diff --git a/circuits/cpp/barretenberg/.vscode/settings.json b/barretenberg/.vscode/settings.json similarity index 100% rename from circuits/cpp/barretenberg/.vscode/settings.json rename to barretenberg/.vscode/settings.json diff --git a/barretenberg/CHANGELOG.md b/barretenberg/CHANGELOG.md index f043d40ff40..8291740c03b 100644 --- a/barretenberg/CHANGELOG.md +++ b/barretenberg/CHANGELOG.md @@ -1,15 +1,473 @@ # Changelog -## [0.5.2](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.5.1...barretenberg-v0.5.2) (2023-09-08) +## [0.7.0](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.7...barretenberg-v0.7.0) (2023-09-13) + + +### ⚠ BREAKING CHANGES + +* **aztec-noir:** rename noir-aztec to aztec-noir ([#2071](https://github.com/AztecProtocol/aztec-packages/issues/2071)) + +### Features + +* **build:** Use LTS version of ubuntu ([#2239](https://github.com/AztecProtocol/aztec-packages/issues/2239)) ([ce6671e](https://github.com/AztecProtocol/aztec-packages/commit/ce6671e6ab72fcdc8114df5b6a45f81c0086b19d)) + + +### Bug Fixes + +* **build:** Update ubuntu version used in Docker builds ([#2236](https://github.com/AztecProtocol/aztec-packages/issues/2236)) ([dbe80b7](https://github.com/AztecProtocol/aztec-packages/commit/dbe80b739e97474b29e6a4125ac0d2f16e248b32)) +* Format barretenberg ([#2209](https://github.com/AztecProtocol/aztec-packages/issues/2209)) ([0801372](https://github.com/AztecProtocol/aztec-packages/commit/08013725091c7e80c1e83145ffbf3983cf1e7fe3)) +* Msgpack blowup with bigger objects ([#2207](https://github.com/AztecProtocol/aztec-packages/issues/2207)) ([b909937](https://github.com/AztecProtocol/aztec-packages/commit/b909937ba53b896e11e6b65db08b8f2bb83218d5)) +* Refactor constraints in scalar mul to use the high limb ([#2161](https://github.com/AztecProtocol/aztec-packages/issues/2161)) ([1d0e25d](https://github.com/AztecProtocol/aztec-packages/commit/1d0e25d9fad69aebccacf9f646e3291ea89716ca)) + + +### Miscellaneous + +* Add debugging to run_tests ([#2212](https://github.com/AztecProtocol/aztec-packages/issues/2212)) ([1c5e78a](https://github.com/AztecProtocol/aztec-packages/commit/1c5e78a4ac01bee4b785857447efdb02d8d9cb35)) +* **aztec-noir:** Rename noir-aztec to aztec-noir ([#2071](https://github.com/AztecProtocol/aztec-packages/issues/2071)) ([e1e14d2](https://github.com/AztecProtocol/aztec-packages/commit/e1e14d2c7fb44d56b9a10a645676d3551830bb10)) +* Update url for acir artifacts ([#2231](https://github.com/AztecProtocol/aztec-packages/issues/2231)) ([5e0abd3](https://github.com/AztecProtocol/aztec-packages/commit/5e0abd35dec449a665760e5ee51eeff89c76532c)) + +## [0.6.7](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.6...barretenberg-v0.6.7) (2023-09-11) + + +### Miscellaneous + +* **barretenberg:** Synchronize aztec-packages versions + +## [0.6.6](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.5...barretenberg-v0.6.6) (2023-09-11) + + +### Miscellaneous + +* **barretenberg:** Synchronize aztec-packages versions + +## [0.6.5](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.4...barretenberg-v0.6.5) (2023-09-08) ### Miscellaneous -* **master:** Release 0.6.0 ([#2121](https://github.com/AztecProtocol/aztec-packages/issues/2121)) ([9bc8e11](https://github.com/AztecProtocol/aztec-packages/commit/9bc8e11ec4598c54d2c8f37c9f1a38ad90148f12)) +* **barretenberg:** Synchronize aztec-packages versions + +## [0.6.4](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.3...barretenberg-v0.6.4) (2023-09-08) + + +### Miscellaneous + +* **barretenberg:** Synchronize aztec-packages versions -## [0.6.0](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.5.1...barretenberg-v0.6.0) (2023-09-08) +## [0.6.3](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.2...barretenberg-v0.6.3) (2023-09-08) ### Miscellaneous * **barretenberg:** Synchronize aztec-packages versions + +## [0.6.2](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.1...barretenberg-v0.6.2) (2023-09-08) + + +### Miscellaneous + +* **barretenberg:** Synchronize aztec-packages versions + +## [0.6.1](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.5.2...barretenberg-v0.6.1) (2023-09-08) + + +### Bug Fixes + +* Work around intermittent wasm webkit issue ([#2140](https://github.com/AztecProtocol/aztec-packages/issues/2140)) ([a9b0934](https://github.com/AztecProtocol/aztec-packages/commit/a9b09344c80d8628f95f859d4e2d455d61f9e7c6)) + + +### Miscellaneous + +* **master:** Release 0.5.2 ([#2141](https://github.com/AztecProtocol/aztec-packages/issues/2141)) ([451aad6](https://github.com/AztecProtocol/aztec-packages/commit/451aad6ea92ebced9839ca14baae10cee327be35)) +* Release 0.5.2 ([f76b53c](https://github.com/AztecProtocol/aztec-packages/commit/f76b53c985116ac131a9b11b2a255feb7d0f8f13)) +* Release 0.6.1 ([1bd1a79](https://github.com/AztecProtocol/aztec-packages/commit/1bd1a79b0cefcd90306133aab141d992e8ea5fc3)) + +## [0.5.2](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.5.2...barretenberg-v0.5.2) (2023-09-08) + + +### Bug Fixes + +* Work around intermittent wasm webkit issue ([#2140](https://github.com/AztecProtocol/aztec-packages/issues/2140)) ([a9b0934](https://github.com/AztecProtocol/aztec-packages/commit/a9b09344c80d8628f95f859d4e2d455d61f9e7c6)) + + +### Miscellaneous + +* Release 0.5.2 ([f76b53c](https://github.com/AztecProtocol/aztec-packages/commit/f76b53c985116ac131a9b11b2a255feb7d0f8f13)) + +## [0.5.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.5.0...barretenberg-v0.5.1) (2023-09-05) + + +### Features + +* Add `info` command to bb ([#2010](https://github.com/AztecProtocol/barretenberg/issues/2010)) ([2882d97](https://github.com/AztecProtocol/barretenberg/commit/2882d97f5165239badb328be80568e7d683c0465)) +* **ci:** Use content hash in build system, restrict docs build to *.ts or *.cpp ([#1953](https://github.com/AztecProtocol/barretenberg/issues/1953)) ([297a20d](https://github.com/AztecProtocol/barretenberg/commit/297a20d7878a4aabab1cabf2cc5d2d67f9e969c5)) + + +### Bug Fixes + +* Adds Mac cross compile flags into barretenberg ([#1954](https://github.com/AztecProtocol/barretenberg/issues/1954)) ([0e17d97](https://github.com/AztecProtocol/barretenberg/commit/0e17d978a0cc6805b72646a8e36fd5267cbd6bcd)) +* **bb.js:** (breaking change) bundles bb.js properly so that it works in the browser and in node ([#1855](https://github.com/AztecProtocol/barretenberg/issues/1855)) ([bc93a5f](https://github.com/AztecProtocol/barretenberg/commit/bc93a5f8510d0dc600343e7e613ab84380d3c225)) +* **ci:** Incorrect content hash in some build targets ([#1973](https://github.com/AztecProtocol/barretenberg/issues/1973)) ([c6c469a](https://github.com/AztecProtocol/barretenberg/commit/c6c469aa5da7c6973f656ddf8af4fb20c3e8e4f6)) +* Compilation on homebrew clang 16.06 ([#1937](https://github.com/AztecProtocol/barretenberg/issues/1937)) ([79c29ee](https://github.com/AztecProtocol/barretenberg/commit/79c29eebbdb78c1e9aa5b4a3da6207fbf93bdd10)) +* Master ([#1981](https://github.com/AztecProtocol/barretenberg/issues/1981)) ([59a454e](https://github.com/AztecProtocol/barretenberg/commit/59a454ecf1611424893e1cb093774a23dde39310)) +* Unify base64 interface between mac and linux (cherry-picked) ([#1968](https://github.com/AztecProtocol/barretenberg/issues/1968)) ([37ee120](https://github.com/AztecProtocol/barretenberg/commit/37ee1204eba280442b6941eff448d6ff15eb9f04)) + +## [0.5.0](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.6...barretenberg-v0.5.0) (2023-09-01) + + +### ⚠ BREAKING CHANGES + +* update to acvm 0.24.0 ([#1925](https://github.com/AztecProtocol/barretenberg/issues/1925)) + +### Bug Fixes + +* Benchmark preset uses clang16 ([#1902](https://github.com/AztecProtocol/barretenberg/issues/1902)) ([cd0ff0e](https://github.com/AztecProtocol/barretenberg/commit/cd0ff0e2c049917ec47a110b45d76bed4c00ae2a)) +* Reset keccak var inputs to 0 ([#1881](https://github.com/AztecProtocol/barretenberg/issues/1881)) ([23011ee](https://github.com/AztecProtocol/barretenberg/commit/23011ee1ea7f1b00b0f4194ebceedc75ea01c157)) + + +### Miscellaneous Chores + +* Update to acvm 0.24.0 ([#1925](https://github.com/AztecProtocol/barretenberg/issues/1925)) ([5d8db8e](https://github.com/AztecProtocol/barretenberg/commit/5d8db8eb993334b43e24a51efba9c59e123320ab)) + +## [0.4.6](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.5...barretenberg-v0.4.6) (2023-08-29) + + +### Bug Fixes + +* Truncate SRS size to the amount of points that we have downloaded ([#1862](https://github.com/AztecProtocol/barretenberg/issues/1862)) ([3bcf12b](https://github.com/AztecProtocol/barretenberg/commit/3bcf12b1a302280d5112475c5993b125e130209e)) + +## [0.4.5](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.4...barretenberg-v0.4.5) (2023-08-28) + + +### Bug Fixes + +* Conditionally compile base64 command for bb binary ([#1851](https://github.com/AztecProtocol/barretenberg/issues/1851)) ([8f8b9f4](https://github.com/AztecProtocol/barretenberg/commit/8f8b9f46028a08342a3337db633782e5313e2763)) + +## [0.4.4](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.3...barretenberg-v0.4.4) (2023-08-28) + + +### Features + +* Add ARM build for Mac + cleanup artifacts ([#1837](https://github.com/AztecProtocol/barretenberg/issues/1837)) ([2d2d5ea](https://github.com/AztecProtocol/barretenberg/commit/2d2d5ea33c512ab36c1214fb5bb90f80d8247469)) + +## [0.4.3](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.2...barretenberg-v0.4.3) (2023-08-23) + + +### Features + +* **bb:** Use an environment variable to set the transcript URL ([#1750](https://github.com/AztecProtocol/barretenberg/issues/1750)) ([41d362e](https://github.com/AztecProtocol/barretenberg/commit/41d362e9c9ffeb763cd56ca8a9f8c4512b86c80c)) + + +### Bug Fixes + +* Clang version in README and subrepo edge case ([#1730](https://github.com/AztecProtocol/barretenberg/issues/1730)) ([74158c4](https://github.com/AztecProtocol/barretenberg/commit/74158c4e467d4b6ab90e7d5aeb9a28f04adc1d66)) +* Download SRS using one canonical URL across the codebase ([#1748](https://github.com/AztecProtocol/barretenberg/issues/1748)) ([5c91de7](https://github.com/AztecProtocol/barretenberg/commit/5c91de7296e054f6d5ac3dca94ca85e06d496048)) +* Proving fails when circuit has size > ~500K ([#1739](https://github.com/AztecProtocol/barretenberg/issues/1739)) ([6d32383](https://github.com/AztecProtocol/barretenberg/commit/6d323838a525190618d608598357ee4608c46699)) +* Revert clang check bootstrap.sh ([#1734](https://github.com/AztecProtocol/barretenberg/issues/1734)) ([65a38bc](https://github.com/AztecProtocol/barretenberg/commit/65a38bc045c66c5f64e87ba8c6e446945f2f0a24)) +* Update barretenberg bootstrap.sh for mac ([#1732](https://github.com/AztecProtocol/barretenberg/issues/1732)) ([f21ac3e](https://github.com/AztecProtocol/barretenberg/commit/f21ac3e893b5d30f7a4ba8ca10e6fd70f5c617b4)) + +## [0.4.2](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.1...barretenberg-v0.4.2) (2023-08-21) + + +### Bug Fixes + +* Remove automatic update to `AztecProtocol/dev-bb.js` ([#1712](https://github.com/AztecProtocol/barretenberg/issues/1712)) ([d883900](https://github.com/AztecProtocol/barretenberg/commit/d883900f9b297f659d14583ac93eede5160f9aae)) + +## [0.4.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.0...barretenberg-v0.4.1) (2023-08-21) + + +### Bug Fixes + +* **bb:** Fix Typo ([#1709](https://github.com/AztecProtocol/barretenberg/issues/1709)) ([286d64e](https://github.com/AztecProtocol/barretenberg/commit/286d64e6036336314114f1d2a25273f4dabe36f4)) + +## [0.4.0](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.6...barretenberg-v0.4.0) (2023-08-21) + + +### ⚠ BREAKING CHANGES + +* Barretenberg binaries now take in the encoded circuit instead of a json file ([#1618](https://github.com/AztecProtocol/barretenberg/issues/1618)) + +### Features + +* Add msgpack defs to remaining circuit types ([#1538](https://github.com/AztecProtocol/barretenberg/issues/1538)) ([e560e39](https://github.com/AztecProtocol/barretenberg/commit/e560e3955d039a93e2ed157c684ea36abd178d4b)) +* Add workflow to output to dev-bb.js ([#1299](https://github.com/AztecProtocol/barretenberg/issues/1299)) ([25a54f1](https://github.com/AztecProtocol/barretenberg/commit/25a54f123e6f98dafef4cd882839106eadf6ab8d)) +* Celer benchmark ([#1369](https://github.com/AztecProtocol/barretenberg/issues/1369)) ([8fd364a](https://github.com/AztecProtocol/barretenberg/commit/8fd364a3ff6e7b5f377ef5ec37649b47fe0a3e44)) +* Honk recursive verifier Pt. 1 ([#1488](https://github.com/AztecProtocol/barretenberg/issues/1488)) ([030dace](https://github.com/AztecProtocol/barretenberg/commit/030dacebd9831ed938b546133373cad63e17ecd8)) +* New stdlib Transcript ([#1219](https://github.com/AztecProtocol/barretenberg/issues/1219)) ([1b9e077](https://github.com/AztecProtocol/barretenberg/commit/1b9e0770e7e470f2708eb6f96cd5ee831b84f4f4)) + + +### Bug Fixes + +* **acir:** When retrying failed ACIR tests it should not use the default CLI argument ([#1673](https://github.com/AztecProtocol/barretenberg/issues/1673)) ([ea4792d](https://github.com/AztecProtocol/barretenberg/commit/ea4792ddc9c23f7390f47cf78d4939cce6458a46)) +* Align bbmalloc implementations ([#1513](https://github.com/AztecProtocol/barretenberg/issues/1513)) ([b92338d](https://github.com/AztecProtocol/barretenberg/commit/b92338d3c9de9d21a6933747a3f1479266d16f9e)) +* Barretenberg binaries now take in the encoded circuit instead of a json file ([#1618](https://github.com/AztecProtocol/barretenberg/issues/1618)) ([180cdc9](https://github.com/AztecProtocol/barretenberg/commit/180cdc9ac7cf9aa793d9774dc866ceb4e6ec3fbc)) +* Bb sync take 2 ([#1669](https://github.com/AztecProtocol/barretenberg/issues/1669)) ([d3eebe4](https://github.com/AztecProtocol/barretenberg/commit/d3eebe46e5b702801c866d7dd073a0eeb9f475b7)) +* Bin reference when installing package ([#678](https://github.com/AztecProtocol/barretenberg/issues/678)) ([c734295](https://github.com/AztecProtocol/barretenberg/commit/c734295a10d2c40ede773519664170880f28b2b7)) +* Fix paths in `barretenberg` bootstrap.sh script ([#1662](https://github.com/AztecProtocol/barretenberg/issues/1662)) ([c8917cd](https://github.com/AztecProtocol/barretenberg/commit/c8917cd8ec415dafe5309ec0e90aba28184d8294)) +* Fixed a failing test and added a small fuzzer ([#1384](https://github.com/AztecProtocol/barretenberg/issues/1384)) ([441e972](https://github.com/AztecProtocol/barretenberg/commit/441e972c88c5c314b4958e158f977f60a8c9e32d)) +* Sync aztec master ([#680](https://github.com/AztecProtocol/barretenberg/issues/680)) ([3afc243](https://github.com/AztecProtocol/barretenberg/commit/3afc2438053f530e49fbebbdbadd8db8a630bb8c)) + +## [0.3.6](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.5...barretenberg-v0.3.6) (2023-08-08) + + +### Features + +* Update release-please.yml ([#651](https://github.com/AztecProtocol/barretenberg/issues/651)) ([2795df6](https://github.com/AztecProtocol/barretenberg/commit/2795df6b705175a32fe2a6f18b3c572e297e277e)) + +## [0.3.5](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.4...barretenberg-v0.3.5) (2023-08-07) + + +### Features + +* Celer benchmark ([#1369](https://github.com/AztecProtocol/barretenberg/issues/1369)) ([d4ade2a](https://github.com/AztecProtocol/barretenberg/commit/d4ade2a5f06a3abf3c9c2635946d7121cc2f64b4)) +* Goblin Honk Composer/Prover/Verifier ([#1220](https://github.com/AztecProtocol/barretenberg/issues/1220)) ([970bb07](https://github.com/AztecProtocol/barretenberg/commit/970bb073763cc59552cd05dccf7f8fc63f58cef9)) +* Goblin translator prototype ([#1249](https://github.com/AztecProtocol/barretenberg/issues/1249)) ([7738d74](https://github.com/AztecProtocol/barretenberg/commit/7738d74791acc0fa8b1b1d8bb2a77783ca900123)) +* Internal keyword + lending contract and tests ([#978](https://github.com/AztecProtocol/barretenberg/issues/978)) ([e58ca4b](https://github.com/AztecProtocol/barretenberg/commit/e58ca4b332272fc57b2a5358bb5003bac79a8f5a)) +* Minimal barretenberg .circleci ([#1352](https://github.com/AztecProtocol/barretenberg/issues/1352)) ([708e2e2](https://github.com/AztecProtocol/barretenberg/commit/708e2e2786de5dce5bfc770c54734e5862a436e5)) + + +### Bug Fixes + +* Bootstrap.sh git hook for monorepo ([#1256](https://github.com/AztecProtocol/barretenberg/issues/1256)) ([b22b8d5](https://github.com/AztecProtocol/barretenberg/commit/b22b8d5f42ddfae140068c3ce8b3053d4c8d1874)) +* Build-system spot request cancellation ([#1339](https://github.com/AztecProtocol/barretenberg/issues/1339)) ([fc1d96a](https://github.com/AztecProtocol/barretenberg/commit/fc1d96a744a8d5a6cae06c408546c3638408551d)) +* Fixing external benchmarks ([#1250](https://github.com/AztecProtocol/barretenberg/issues/1250)) ([0ea6a39](https://github.com/AztecProtocol/barretenberg/commit/0ea6a39950e8cd5ff7765031457c162d03ebae06)) +* Fixing fuzzing build after composer splitting ([#1317](https://github.com/AztecProtocol/barretenberg/issues/1317)) ([946c23c](https://github.com/AztecProtocol/barretenberg/commit/946c23c52d45ddce973e453c40c048734e7f6937)) +* Reinstate barretenberg-benchmark-aggregator ([#1330](https://github.com/AztecProtocol/barretenberg/issues/1330)) ([407a915](https://github.com/AztecProtocol/barretenberg/commit/407a915a94c7d83dec9e14a11ad0e3461fd2906d)) +* Retry git submodule fetch ([#1371](https://github.com/AztecProtocol/barretenberg/issues/1371)) ([037dda3](https://github.com/AztecProtocol/barretenberg/commit/037dda3d254d56a20292d2bed5a9582d36c08427)) + +## [0.3.4](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.3...barretenberg-v0.3.4) (2023-07-25) + + +### Features + +* Add Goblin Ultra Circuit builder ([#587](https://github.com/AztecProtocol/barretenberg/issues/587)) ([2d38c25](https://github.com/AztecProtocol/barretenberg/commit/2d38c252de8b867955da661181e51f1a5f28cbc6)) +* Modify bb.js to be compatible with next.js ([#544](https://github.com/AztecProtocol/barretenberg/issues/544)) ([d384089](https://github.com/AztecProtocol/barretenberg/commit/d384089f60d1a6d5baeb0d3459556a310b790366)) +* Support public inputs in Ultra Honk ([#581](https://github.com/AztecProtocol/barretenberg/issues/581)) ([9cd0a06](https://github.com/AztecProtocol/barretenberg/commit/9cd0a064b8258bf4f72dd9e1c5e8f85b074d1bbc)) + +## [0.3.3](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.2...barretenberg-v0.3.3) (2023-07-17) + + +### Features + +* Bb and bb.js directly parse nargo bincode format. ([#610](https://github.com/AztecProtocol/barretenberg/issues/610)) ([d25e37a](https://github.com/AztecProtocol/barretenberg/commit/d25e37ad74b88dc45337b2a529ede3136dd4a699)) +* Goblin work done in Valencia ([#569](https://github.com/AztecProtocol/barretenberg/issues/569)) ([57af751](https://github.com/AztecProtocol/barretenberg/commit/57af751646dc3c038fea24ada4e160f6d422845f)) + +## [0.3.2](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.1...barretenberg-v0.3.2) (2023-07-12) + + +### Features + +* **msgpack:** Ability to specify NOSCHEMA for cbinds ([#605](https://github.com/AztecProtocol/barretenberg/issues/605)) ([8a4f5f1](https://github.com/AztecProtocol/barretenberg/commit/8a4f5f1d31e1d631c1cd3ed49c100858b58c56b2)) + +## [0.3.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.0...barretenberg-v0.3.1) (2023-07-11) + + +### Features + +* Sentence case changelog titles ([#598](https://github.com/AztecProtocol/barretenberg/issues/598)) ([1466108](https://github.com/AztecProtocol/barretenberg/commit/146610857ae511e9cfb27f873f49cec2dd19ddad)) + +## 0.3.0 (2023-07-11) + + +### ⚠ BREAKING CHANGES + +* Use circuit builders ([#501](https://github.com/AztecProtocol/barretenberg/issues/501)) +* **dsl:** add hash index to pedersen constraint ([#436](https://github.com/AztecProtocol/barretenberg/issues/436)) +* add support for ROM and RAM ACVM opcodes ([#417](https://github.com/AztecProtocol/barretenberg/issues/417)) +* replace `MerkleMembershipConstraint` with`ComputeMerkleRootConstraint` ([#385](https://github.com/AztecProtocol/barretenberg/issues/385)) +* Remove TOOLCHAIN logic and replace with CMake presets ([#162](https://github.com/AztecProtocol/barretenberg/issues/162)) + +### Features + +* Add `get_sibling_path` method in MerkleTree ([#584](https://github.com/AztecProtocol/barretenberg/issues/584)) ([b3db9f8](https://github.com/AztecProtocol/barretenberg/commit/b3db9f8944e546cd9da9a1529e2562ee75e62369)) +* Add `signature_verification_result` to schnorr stdlib ([#173](https://github.com/AztecProtocol/barretenberg/issues/173)) ([7ae381e](https://github.com/AztecProtocol/barretenberg/commit/7ae381e4c5a084efde18917569518c7d4040b653)) +* Add equality and serialization to poly_triple ([#172](https://github.com/AztecProtocol/barretenberg/issues/172)) ([142b041](https://github.com/AztecProtocol/barretenberg/commit/142b041b2d3d090785f0e6f319fbf7504c751098)) +* Add installation targets for libbarretenberg, wasm & headers ([#185](https://github.com/AztecProtocol/barretenberg/issues/185)) ([f2fdebe](https://github.com/AztecProtocol/barretenberg/commit/f2fdebe037d4d2d90761f98e28b4b0d3af9a0f63)) +* Add Noir DSL with acir_format and turbo_proofs namespaces ([#198](https://github.com/AztecProtocol/barretenberg/issues/198)) ([54fab22](https://github.com/AztecProtocol/barretenberg/commit/54fab2217f437bb04a5e9fb71b271cf91b90c6e5)) +* Add pkgconfig output for installed target ([#208](https://github.com/AztecProtocol/barretenberg/issues/208)) ([d85a365](https://github.com/AztecProtocol/barretenberg/commit/d85a365180ac2672bbd33bd8b799a1f154716ab3)) +* add support for ROM and RAM ACVM opcodes ([#417](https://github.com/AztecProtocol/barretenberg/issues/417)) ([697fabb](https://github.com/AztecProtocol/barretenberg/commit/697fabb7cbeadb9264db5047e7fd36565dad8790)) +* Allow bootstrap to work with linux + clang on ARM ([#131](https://github.com/AztecProtocol/barretenberg/issues/131)) ([52cb06b](https://github.com/AztecProtocol/barretenberg/commit/52cb06b445c73f2f324af6595af70ce9c130eb09)) +* **api:** external cpp header for circuits ([#489](https://github.com/AztecProtocol/barretenberg/issues/489)) ([fbbb342](https://github.com/AztecProtocol/barretenberg/commit/fbbb34287fdef0e8fedb2e25c5431f17501ad653)) +* **bb.js:** initial API ([#232](https://github.com/AztecProtocol/barretenberg/issues/232)) ([c860b02](https://github.com/AztecProtocol/barretenberg/commit/c860b02d80425de161af50acf33e94d94eb0659c)) +* Benchmark suite update ([d7b1499](https://github.com/AztecProtocol/barretenberg/commit/d7b14993ac8d329664fd36e7b4aa083935b1d407)) +* Benchmark suite update ([#508](https://github.com/AztecProtocol/barretenberg/issues/508)) ([d7b1499](https://github.com/AztecProtocol/barretenberg/commit/d7b14993ac8d329664fd36e7b4aa083935b1d407)) +* CI to test aztec circuits with current commit of bberg ([#418](https://github.com/AztecProtocol/barretenberg/issues/418)) ([20a0873](https://github.com/AztecProtocol/barretenberg/commit/20a0873dcbfe4a862ad53a9c137030689a521a04)) +* **dsl:** Add ECDSA secp256r1 verification ([#582](https://github.com/AztecProtocol/barretenberg/issues/582)) ([adc4c7b](https://github.com/AztecProtocol/barretenberg/commit/adc4c7b4eb634eae28dd28e25b94b93a5b49c80e)) +* **dsl:** add hash index to pedersen constraint ([#436](https://github.com/AztecProtocol/barretenberg/issues/436)) ([e0b8804](https://github.com/AztecProtocol/barretenberg/commit/e0b8804b9418c7aa39e29e800fecb4ed15d73b80)) +* **github:** add pull request template ([65f3e33](https://github.com/AztecProtocol/barretenberg/commit/65f3e3312061e7284c0dd0f0f89fa92ee92f9eac)) +* **honk:** Shared relation arithmetic ([#514](https://github.com/AztecProtocol/barretenberg/issues/514)) ([0838474](https://github.com/AztecProtocol/barretenberg/commit/0838474e67469a6d91d6595d1ee23e1dea53863c)) +* Improve barretenberg headers ([#201](https://github.com/AztecProtocol/barretenberg/issues/201)) ([4e03839](https://github.com/AztecProtocol/barretenberg/commit/4e03839a970a5d07dab7f86cd2b7166a09f5045a)) +* Initial native version of bb binary. ([#524](https://github.com/AztecProtocol/barretenberg/issues/524)) ([4a1b532](https://github.com/AztecProtocol/barretenberg/commit/4a1b5322dc78921d253e6a374eba0b616ab788df)) +* Make the circuit constructors field agnostic so we can check circuits on grumpkin ([#534](https://github.com/AztecProtocol/barretenberg/issues/534)) ([656d794](https://github.com/AztecProtocol/barretenberg/commit/656d7944f94f3da88250f3140838f3e32e9d0174)) +* Multithreaded Sumcheck ([#556](https://github.com/AztecProtocol/barretenberg/issues/556)) ([c4094b1](https://github.com/AztecProtocol/barretenberg/commit/c4094b155ba9d8e914c3e6a5b0d7808945b1eeed)) +* **nullifier_tree:** make empty nullifier tree leaves hash be 0 ([#360](https://github.com/AztecProtocol/barretenberg/issues/360)) ([#382](https://github.com/AztecProtocol/barretenberg/issues/382)) ([b85ab8d](https://github.com/AztecProtocol/barretenberg/commit/b85ab8d587b3e93db2aa0f1c4f012e58e5d97915)) +* Optimize memory consumption of pedersen generators ([#413](https://github.com/AztecProtocol/barretenberg/issues/413)) ([d60b16a](https://github.com/AztecProtocol/barretenberg/commit/d60b16a14219fd4bd130ce4537c3e94bfa10128f)) +* Parallelised folding in Gemini ([#550](https://github.com/AztecProtocol/barretenberg/issues/550)) ([3b962d3](https://github.com/AztecProtocol/barretenberg/commit/3b962d372491430871443fd1b95fd9e049e233c8)) +* **pkg-config:** Add a bindir variable ([#239](https://github.com/AztecProtocol/barretenberg/issues/239)) ([611bf34](https://github.com/AztecProtocol/barretenberg/commit/611bf34bcc6f82969a6fe546bf0a7cbecda6d36d)) +* Remove TOOLCHAIN logic and replace with CMake presets ([#162](https://github.com/AztecProtocol/barretenberg/issues/162)) ([09db0be](https://github.com/AztecProtocol/barretenberg/commit/09db0be3d09ee12b4b73b03abe8fa4565cdb6660)) +* replace `MerkleMembershipConstraint` with`ComputeMerkleRootConstraint` ([#385](https://github.com/AztecProtocol/barretenberg/issues/385)) ([74dbce5](https://github.com/AztecProtocol/barretenberg/commit/74dbce5dfa126ecd6dbda7b758581752f7b6a389)) +* Sort includes ([#571](https://github.com/AztecProtocol/barretenberg/issues/571)) ([dfa8736](https://github.com/AztecProtocol/barretenberg/commit/dfa8736136323e62a705066d25bef962a6a0b82d)) +* Split plonk and honk tests ([#529](https://github.com/AztecProtocol/barretenberg/issues/529)) ([ba583ff](https://github.com/AztecProtocol/barretenberg/commit/ba583ff00509f636feae7b78304b115e34fc2357)) +* Support nix package manager ([#234](https://github.com/AztecProtocol/barretenberg/issues/234)) ([19a72fe](https://github.com/AztecProtocol/barretenberg/commit/19a72fec0ff8d451fc94a9f5563202867a5f8147)) +* **ts:** allow passing srs via env functions ([#260](https://github.com/AztecProtocol/barretenberg/issues/260)) ([ac78353](https://github.com/AztecProtocol/barretenberg/commit/ac7835304f4524039abf0a0df9ae85d905f55c86)) +* **ultrahonk:** Added a simple filler table to minimize the amount of entries used to make UltraHonk polynomials non-zero ([b20b401](https://github.com/AztecProtocol/barretenberg/commit/b20b4012546c5b67623950d0fedb0974df8bf345)) +* **ultrahonk:** Added a simple filler table to minimize the amount of entries used to make UltraHonk polynomials non-zero ([#531](https://github.com/AztecProtocol/barretenberg/issues/531)) ([b20b401](https://github.com/AztecProtocol/barretenberg/commit/b20b4012546c5b67623950d0fedb0974df8bf345)) +* Utilize globally installed benchmark if available ([#152](https://github.com/AztecProtocol/barretenberg/issues/152)) ([fbc5027](https://github.com/AztecProtocol/barretenberg/commit/fbc502794e9bbdfda797b11ac71eba996d649722)) +* Utilize globally installed gtest if available ([#151](https://github.com/AztecProtocol/barretenberg/issues/151)) ([efa18a6](https://github.com/AztecProtocol/barretenberg/commit/efa18a621917dc6c38f453825cadc76eb793a73c)) +* Utilize globally installed leveldb if available ([#134](https://github.com/AztecProtocol/barretenberg/issues/134)) ([255dfb5](https://github.com/AztecProtocol/barretenberg/commit/255dfb52adca885b0a4e4380769a279922af49ff)) +* Working UltraPlonk for Noir ([#299](https://github.com/AztecProtocol/barretenberg/issues/299)) ([d56dfbd](https://github.com/AztecProtocol/barretenberg/commit/d56dfbdfd74b438b3c8652e1ae8740de99f93ae5)) + + +### Bug Fixes + +* add NUM_RESERVED_GATES before fetching subgroup size in composer ([#539](https://github.com/AztecProtocol/barretenberg/issues/539)) ([fa11abf](https://github.com/AztecProtocol/barretenberg/commit/fa11abf0877314b03420d6f7ace1312df41cd50b)) +* Adds `VERSION` file to release-please ([#542](https://github.com/AztecProtocol/barretenberg/issues/542)) ([31fb34c](https://github.com/AztecProtocol/barretenberg/commit/31fb34c307a4336414b1fd2076d96105a29b0e7b)) +* Align native library object library with wasm ([#238](https://github.com/AztecProtocol/barretenberg/issues/238)) ([4fa6c0d](https://github.com/AztecProtocol/barretenberg/commit/4fa6c0d2d8c6309d53757ad54d3433d1d662de5f)) +* Avoid bb.js memory issues. ([#578](https://github.com/AztecProtocol/barretenberg/issues/578)) ([96891de](https://github.com/AztecProtocol/barretenberg/commit/96891de21fd74ca33ea75ae97f73cada39a5d337)) +* Avoid targeting honk test files when testing is disabled ([#125](https://github.com/AztecProtocol/barretenberg/issues/125)) ([e4a70ed](https://github.com/AztecProtocol/barretenberg/commit/e4a70edf2bb39d67095cbe21fff310372369a92d)) +* BarycentricData instantiation time and unused code in secp curves ([#572](https://github.com/AztecProtocol/barretenberg/issues/572)) ([bc78bb0](https://github.com/AztecProtocol/barretenberg/commit/bc78bb00d273c756fa4f02967d219cd3fd788890)) +* bbmalloc linker error ([#459](https://github.com/AztecProtocol/barretenberg/issues/459)) ([d4761c1](https://github.com/AztecProtocol/barretenberg/commit/d4761c11f30eeecbcb2485f50516bee71809bab1)) +* Build on stock apple clang. ([#592](https://github.com/AztecProtocol/barretenberg/issues/592)) ([0ac4bc3](https://github.com/AztecProtocol/barretenberg/commit/0ac4bc36619f85c1b3a65d3f825ba5683cbbe30c)) +* **build:** git add -f .yalc ([#265](https://github.com/AztecProtocol/barretenberg/issues/265)) ([7671192](https://github.com/AztecProtocol/barretenberg/commit/7671192c8a60ff0bc0f8ad3e14ac299ff780cc25)) +* bump timeout on common test. ([c9bc87d](https://github.com/AztecProtocol/barretenberg/commit/c9bc87d29fa1325162cb1e7bf2db7cc85747fd9e)) +* Check for wasm-opt during configure & run on post_build ([#175](https://github.com/AztecProtocol/barretenberg/issues/175)) ([1ff6af3](https://github.com/AztecProtocol/barretenberg/commit/1ff6af3cb6b7b4d3bb53bfbdcbf1c3a568e0fa86)) +* check_circuit bug fix ([#510](https://github.com/AztecProtocol/barretenberg/issues/510)) ([4b156a3](https://github.com/AztecProtocol/barretenberg/commit/4b156a3648e6da9dfe292e354da9a27185d2aa9d)) +* cleanup of include statements and dependencies ([#527](https://github.com/AztecProtocol/barretenberg/issues/527)) ([b288c24](https://github.com/AztecProtocol/barretenberg/commit/b288c2420bdc350658cd3776bad1eb087cc28d63)) +* **cmake:** Remove leveldb dependency that was accidentally re-added ([#335](https://github.com/AztecProtocol/barretenberg/issues/335)) ([3534e2b](https://github.com/AztecProtocol/barretenberg/commit/3534e2bfcca46dbca30573286f43425dab6bc810)) +* **dsl:** Use info instead of std::cout to log ([#323](https://github.com/AztecProtocol/barretenberg/issues/323)) ([486d738](https://github.com/AztecProtocol/barretenberg/commit/486d73842b4b7d6aa84fa12d7462fe52e892d416)) +* Ecdsa Malleability Bug ([#512](https://github.com/AztecProtocol/barretenberg/issues/512)) ([5cf856c](https://github.com/AztecProtocol/barretenberg/commit/5cf856c5c29c9f9b8abb87d7bde23b4932711350)) +* **ecdsa:** correct short weierstrass curve eqn ([#567](https://github.com/AztecProtocol/barretenberg/issues/567)) ([386ec63](https://github.com/AztecProtocol/barretenberg/commit/386ec6372156d604e37e58490f1c7396077f84c4)) +* Ensure barretenberg provides headers that Noir needs ([#200](https://github.com/AztecProtocol/barretenberg/issues/200)) ([0171a49](https://github.com/AztecProtocol/barretenberg/commit/0171a499a175f88a0ee3fcfd4de0f43ad0ebff85)) +* Ensure TBB is optional using OPTIONAL_COMPONENTS ([#127](https://github.com/AztecProtocol/barretenberg/issues/127)) ([e3039b2](https://github.com/AztecProtocol/barretenberg/commit/e3039b26ea8aca4b8fdc4b2cbac6716ace261c76)) +* Fixed the memory issue ([#509](https://github.com/AztecProtocol/barretenberg/issues/509)) ([107d438](https://github.com/AztecProtocol/barretenberg/commit/107d438ad96847e40f8e5374749b8cba820b2007)) +* Increment CMakeList version on releases ([#536](https://github.com/AztecProtocol/barretenberg/issues/536)) ([b571411](https://github.com/AztecProtocol/barretenberg/commit/b571411a6d58f79e3e2553c3b1c81b4f186f2245)) +* msgpack error ([#456](https://github.com/AztecProtocol/barretenberg/issues/456)) ([943d6d0](https://github.com/AztecProtocol/barretenberg/commit/943d6d07c57bea521c2593e892e839f25f82b289)) +* msgpack variant_impl.hpp ([#462](https://github.com/AztecProtocol/barretenberg/issues/462)) ([b5838a6](https://github.com/AztecProtocol/barretenberg/commit/b5838a6c9fe456e832776da21379e41c0a2bbd5d)) +* **nix:** Disable ASM & ADX when building in Nix ([#327](https://github.com/AztecProtocol/barretenberg/issues/327)) ([3bc724d](https://github.com/AztecProtocol/barretenberg/commit/3bc724d2163d29041bfa29a1e49625bab77289a2)) +* **nix:** Use wasi-sdk 12 to provide barretenberg-wasm in overlay ([#315](https://github.com/AztecProtocol/barretenberg/issues/315)) ([4a06992](https://github.com/AztecProtocol/barretenberg/commit/4a069923f4a869f8c2315e6d3f738db6e66dcdfa)) +* Pass brew omp location via LDFLAGS and CPPFLAGS ([#126](https://github.com/AztecProtocol/barretenberg/issues/126)) ([54141f1](https://github.com/AztecProtocol/barretenberg/commit/54141f12de9eee86220003b1f80d39a41795cedc)) +* Remove leveldb_store from stdlib_merkle_tree ([#149](https://github.com/AztecProtocol/barretenberg/issues/149)) ([3ce5e7e](https://github.com/AztecProtocol/barretenberg/commit/3ce5e7e17ca7bb806373be833a44d55a8e584bda)) +* Revert "fix: add NUM_RESERVED_GATES before fetching subgroup size in composer" ([#540](https://github.com/AztecProtocol/barretenberg/issues/540)) ([a9fbc39](https://github.com/AztecProtocol/barretenberg/commit/a9fbc3973f24680f676682d15c3a4cef0a1ab798)) +* Revert generator changes that cause memory OOB access ([#338](https://github.com/AztecProtocol/barretenberg/issues/338)) ([500daf1](https://github.com/AztecProtocol/barretenberg/commit/500daf1ceb03771d2c01eaf1a86139a7ac1d814f)) +* Soundness issue in bigfield's `evaluate_multiply_add` method ([#558](https://github.com/AztecProtocol/barretenberg/issues/558)) ([1a98ac6](https://github.com/AztecProtocol/barretenberg/commit/1a98ac64787a0e2904fd22043497a8d11afe5e6c)) +* **srs:** Detect shasum utility when downloading lagrange ([#143](https://github.com/AztecProtocol/barretenberg/issues/143)) ([515604d](https://github.com/AztecProtocol/barretenberg/commit/515604dff83648e00106f35511aa567921599a78)) +* Store lagrange forms of selector polys w/ Ultra ([#255](https://github.com/AztecProtocol/barretenberg/issues/255)) ([b121963](https://github.com/AztecProtocol/barretenberg/commit/b12196362497c8dfb3a64284d28de2d8ee7d730c)) +* throw -> throw_or_abort in sol gen ([#388](https://github.com/AztecProtocol/barretenberg/issues/388)) ([7cfe3f0](https://github.com/AztecProtocol/barretenberg/commit/7cfe3f055815e333ff8a8f1f30e8377c83d2182a)) +* Trigger release-please ([#594](https://github.com/AztecProtocol/barretenberg/issues/594)) ([5042861](https://github.com/AztecProtocol/barretenberg/commit/5042861405df6b5659c0c32418720d8bdea81081)) +* Update versioning in nix files when a release is made ([#549](https://github.com/AztecProtocol/barretenberg/issues/549)) ([1b3ff93](https://github.com/AztecProtocol/barretenberg/commit/1b3ff93e7ed8873583cdade95a860adb8823f1cd)) +* **wasm:** Remove the CMAKE_STAGING_PREFIX variable from wasm preset ([#240](https://github.com/AztecProtocol/barretenberg/issues/240)) ([f2f8d1f](https://github.com/AztecProtocol/barretenberg/commit/f2f8d1f7a24ca73e30c981fd245c86f7f964abb7)) +* Wrap each use of filesystem library in ifndef __wasm__ ([#181](https://github.com/AztecProtocol/barretenberg/issues/181)) ([0eae962](https://github.com/AztecProtocol/barretenberg/commit/0eae96293b4d2da6b6b23ae80ac132fb49f90915)) + + +### Code Refactoring + +* Use circuit builders ([#501](https://github.com/AztecProtocol/barretenberg/issues/501)) ([709a29c](https://github.com/AztecProtocol/barretenberg/commit/709a29c89a305be017270361780995353188035a)) + +## [0.2.0](https://github.com/AztecProtocol/barretenberg/compare/v0.1.0...v0.2.0) (2023-07-11) + + +### ⚠ BREAKING CHANGES + +* Use circuit builders ([#501](https://github.com/AztecProtocol/barretenberg/issues/501)) + +### Features + +* Add `get_sibling_path` method in MerkleTree ([#584](https://github.com/AztecProtocol/barretenberg/issues/584)) ([b3db9f8](https://github.com/AztecProtocol/barretenberg/commit/b3db9f8944e546cd9da9a1529e2562ee75e62369)) +* **dsl:** Add ECDSA secp256r1 verification ([#582](https://github.com/AztecProtocol/barretenberg/issues/582)) ([adc4c7b](https://github.com/AztecProtocol/barretenberg/commit/adc4c7b4eb634eae28dd28e25b94b93a5b49c80e)) +* Initial native version of bb binary. ([#524](https://github.com/AztecProtocol/barretenberg/issues/524)) ([4a1b532](https://github.com/AztecProtocol/barretenberg/commit/4a1b5322dc78921d253e6a374eba0b616ab788df)) +* Make the circuit constructors field agnostic so we can check circuits on grumpkin ([#534](https://github.com/AztecProtocol/barretenberg/issues/534)) ([656d794](https://github.com/AztecProtocol/barretenberg/commit/656d7944f94f3da88250f3140838f3e32e9d0174)) +* Multithreaded Sumcheck ([#556](https://github.com/AztecProtocol/barretenberg/issues/556)) ([c4094b1](https://github.com/AztecProtocol/barretenberg/commit/c4094b155ba9d8e914c3e6a5b0d7808945b1eeed)) +* Optimize memory consumption of pedersen generators ([#413](https://github.com/AztecProtocol/barretenberg/issues/413)) ([d60b16a](https://github.com/AztecProtocol/barretenberg/commit/d60b16a14219fd4bd130ce4537c3e94bfa10128f)) +* Parallelised folding in Gemini ([#550](https://github.com/AztecProtocol/barretenberg/issues/550)) ([3b962d3](https://github.com/AztecProtocol/barretenberg/commit/3b962d372491430871443fd1b95fd9e049e233c8)) +* Sort includes ([#571](https://github.com/AztecProtocol/barretenberg/issues/571)) ([dfa8736](https://github.com/AztecProtocol/barretenberg/commit/dfa8736136323e62a705066d25bef962a6a0b82d)) +* Split plonk and honk tests ([#529](https://github.com/AztecProtocol/barretenberg/issues/529)) ([ba583ff](https://github.com/AztecProtocol/barretenberg/commit/ba583ff00509f636feae7b78304b115e34fc2357)) + + +### Bug Fixes + +* add NUM_RESERVED_GATES before fetching subgroup size in composer ([#539](https://github.com/AztecProtocol/barretenberg/issues/539)) ([fa11abf](https://github.com/AztecProtocol/barretenberg/commit/fa11abf0877314b03420d6f7ace1312df41cd50b)) +* Adds `VERSION` file to release-please ([#542](https://github.com/AztecProtocol/barretenberg/issues/542)) ([31fb34c](https://github.com/AztecProtocol/barretenberg/commit/31fb34c307a4336414b1fd2076d96105a29b0e7b)) +* Avoid bb.js memory issues. ([#578](https://github.com/AztecProtocol/barretenberg/issues/578)) ([96891de](https://github.com/AztecProtocol/barretenberg/commit/96891de21fd74ca33ea75ae97f73cada39a5d337)) +* BarycentricData instantiation time and unused code in secp curves ([#572](https://github.com/AztecProtocol/barretenberg/issues/572)) ([bc78bb0](https://github.com/AztecProtocol/barretenberg/commit/bc78bb00d273c756fa4f02967d219cd3fd788890)) +* Build on stock apple clang. ([#592](https://github.com/AztecProtocol/barretenberg/issues/592)) ([0ac4bc3](https://github.com/AztecProtocol/barretenberg/commit/0ac4bc36619f85c1b3a65d3f825ba5683cbbe30c)) +* bump timeout on common test. ([c9bc87d](https://github.com/AztecProtocol/barretenberg/commit/c9bc87d29fa1325162cb1e7bf2db7cc85747fd9e)) +* check_circuit bug fix ([#510](https://github.com/AztecProtocol/barretenberg/issues/510)) ([4b156a3](https://github.com/AztecProtocol/barretenberg/commit/4b156a3648e6da9dfe292e354da9a27185d2aa9d)) +* cleanup of include statements and dependencies ([#527](https://github.com/AztecProtocol/barretenberg/issues/527)) ([b288c24](https://github.com/AztecProtocol/barretenberg/commit/b288c2420bdc350658cd3776bad1eb087cc28d63)) +* Ecdsa Malleability Bug ([#512](https://github.com/AztecProtocol/barretenberg/issues/512)) ([5cf856c](https://github.com/AztecProtocol/barretenberg/commit/5cf856c5c29c9f9b8abb87d7bde23b4932711350)) +* **ecdsa:** correct short weierstrass curve eqn ([#567](https://github.com/AztecProtocol/barretenberg/issues/567)) ([386ec63](https://github.com/AztecProtocol/barretenberg/commit/386ec6372156d604e37e58490f1c7396077f84c4)) +* Increment CMakeList version on releases ([#536](https://github.com/AztecProtocol/barretenberg/issues/536)) ([b571411](https://github.com/AztecProtocol/barretenberg/commit/b571411a6d58f79e3e2553c3b1c81b4f186f2245)) +* Revert "fix: add NUM_RESERVED_GATES before fetching subgroup size in composer" ([#540](https://github.com/AztecProtocol/barretenberg/issues/540)) ([a9fbc39](https://github.com/AztecProtocol/barretenberg/commit/a9fbc3973f24680f676682d15c3a4cef0a1ab798)) +* Soundness issue in bigfield's `evaluate_multiply_add` method ([#558](https://github.com/AztecProtocol/barretenberg/issues/558)) ([1a98ac6](https://github.com/AztecProtocol/barretenberg/commit/1a98ac64787a0e2904fd22043497a8d11afe5e6c)) +* Update versioning in nix files when a release is made ([#549](https://github.com/AztecProtocol/barretenberg/issues/549)) ([1b3ff93](https://github.com/AztecProtocol/barretenberg/commit/1b3ff93e7ed8873583cdade95a860adb8823f1cd)) + + +### Code Refactoring + +* Use circuit builders ([#501](https://github.com/AztecProtocol/barretenberg/issues/501)) ([709a29c](https://github.com/AztecProtocol/barretenberg/commit/709a29c89a305be017270361780995353188035a)) + +## 0.1.0 (2023-06-15) + + +### ⚠ BREAKING CHANGES + +* **dsl:** add hash index to pedersen constraint ([#436](https://github.com/AztecProtocol/barretenberg/issues/436)) +* add support for ROM and RAM ACVM opcodes ([#417](https://github.com/AztecProtocol/barretenberg/issues/417)) +* replace `MerkleMembershipConstraint` with`ComputeMerkleRootConstraint` ([#385](https://github.com/AztecProtocol/barretenberg/issues/385)) +* Remove TOOLCHAIN logic and replace with CMake presets ([#162](https://github.com/AztecProtocol/barretenberg/issues/162)) + +### Features + +* Add `signature_verification_result` to schnorr stdlib ([#173](https://github.com/AztecProtocol/barretenberg/issues/173)) ([7ae381e](https://github.com/AztecProtocol/barretenberg/commit/7ae381e4c5a084efde18917569518c7d4040b653)) +* Add equality and serialization to poly_triple ([#172](https://github.com/AztecProtocol/barretenberg/issues/172)) ([142b041](https://github.com/AztecProtocol/barretenberg/commit/142b041b2d3d090785f0e6f319fbf7504c751098)) +* Add installation targets for libbarretenberg, wasm & headers ([#185](https://github.com/AztecProtocol/barretenberg/issues/185)) ([f2fdebe](https://github.com/AztecProtocol/barretenberg/commit/f2fdebe037d4d2d90761f98e28b4b0d3af9a0f63)) +* Add Noir DSL with acir_format and turbo_proofs namespaces ([#198](https://github.com/AztecProtocol/barretenberg/issues/198)) ([54fab22](https://github.com/AztecProtocol/barretenberg/commit/54fab2217f437bb04a5e9fb71b271cf91b90c6e5)) +* Add pkgconfig output for installed target ([#208](https://github.com/AztecProtocol/barretenberg/issues/208)) ([d85a365](https://github.com/AztecProtocol/barretenberg/commit/d85a365180ac2672bbd33bd8b799a1f154716ab3)) +* add support for ROM and RAM ACVM opcodes ([#417](https://github.com/AztecProtocol/barretenberg/issues/417)) ([697fabb](https://github.com/AztecProtocol/barretenberg/commit/697fabb7cbeadb9264db5047e7fd36565dad8790)) +* Allow bootstrap to work with linux + clang on ARM ([#131](https://github.com/AztecProtocol/barretenberg/issues/131)) ([52cb06b](https://github.com/AztecProtocol/barretenberg/commit/52cb06b445c73f2f324af6595af70ce9c130eb09)) +* **api:** external cpp header for circuits ([#489](https://github.com/AztecProtocol/barretenberg/issues/489)) ([fbbb342](https://github.com/AztecProtocol/barretenberg/commit/fbbb34287fdef0e8fedb2e25c5431f17501ad653)) +* **bb.js:** initial API ([#232](https://github.com/AztecProtocol/barretenberg/issues/232)) ([c860b02](https://github.com/AztecProtocol/barretenberg/commit/c860b02d80425de161af50acf33e94d94eb0659c)) +* Benchmark suite update ([d7b1499](https://github.com/AztecProtocol/barretenberg/commit/d7b14993ac8d329664fd36e7b4aa083935b1d407)) +* Benchmark suite update ([#508](https://github.com/AztecProtocol/barretenberg/issues/508)) ([d7b1499](https://github.com/AztecProtocol/barretenberg/commit/d7b14993ac8d329664fd36e7b4aa083935b1d407)) +* CI to test aztec circuits with current commit of bberg ([#418](https://github.com/AztecProtocol/barretenberg/issues/418)) ([20a0873](https://github.com/AztecProtocol/barretenberg/commit/20a0873dcbfe4a862ad53a9c137030689a521a04)) +* **dsl:** add hash index to pedersen constraint ([#436](https://github.com/AztecProtocol/barretenberg/issues/436)) ([e0b8804](https://github.com/AztecProtocol/barretenberg/commit/e0b8804b9418c7aa39e29e800fecb4ed15d73b80)) +* **github:** add pull request template ([65f3e33](https://github.com/AztecProtocol/barretenberg/commit/65f3e3312061e7284c0dd0f0f89fa92ee92f9eac)) +* **honk:** Shared relation arithmetic ([#514](https://github.com/AztecProtocol/barretenberg/issues/514)) ([0838474](https://github.com/AztecProtocol/barretenberg/commit/0838474e67469a6d91d6595d1ee23e1dea53863c)) +* Improve barretenberg headers ([#201](https://github.com/AztecProtocol/barretenberg/issues/201)) ([4e03839](https://github.com/AztecProtocol/barretenberg/commit/4e03839a970a5d07dab7f86cd2b7166a09f5045a)) +* **nullifier_tree:** make empty nullifier tree leaves hash be 0 ([#360](https://github.com/AztecProtocol/barretenberg/issues/360)) ([#382](https://github.com/AztecProtocol/barretenberg/issues/382)) ([b85ab8d](https://github.com/AztecProtocol/barretenberg/commit/b85ab8d587b3e93db2aa0f1c4f012e58e5d97915)) +* **pkg-config:** Add a bindir variable ([#239](https://github.com/AztecProtocol/barretenberg/issues/239)) ([611bf34](https://github.com/AztecProtocol/barretenberg/commit/611bf34bcc6f82969a6fe546bf0a7cbecda6d36d)) +* Remove TOOLCHAIN logic and replace with CMake presets ([#162](https://github.com/AztecProtocol/barretenberg/issues/162)) ([09db0be](https://github.com/AztecProtocol/barretenberg/commit/09db0be3d09ee12b4b73b03abe8fa4565cdb6660)) +* replace `MerkleMembershipConstraint` with`ComputeMerkleRootConstraint` ([#385](https://github.com/AztecProtocol/barretenberg/issues/385)) ([74dbce5](https://github.com/AztecProtocol/barretenberg/commit/74dbce5dfa126ecd6dbda7b758581752f7b6a389)) +* Support nix package manager ([#234](https://github.com/AztecProtocol/barretenberg/issues/234)) ([19a72fe](https://github.com/AztecProtocol/barretenberg/commit/19a72fec0ff8d451fc94a9f5563202867a5f8147)) +* **ts:** allow passing srs via env functions ([#260](https://github.com/AztecProtocol/barretenberg/issues/260)) ([ac78353](https://github.com/AztecProtocol/barretenberg/commit/ac7835304f4524039abf0a0df9ae85d905f55c86)) +* **ultrahonk:** Added a simple filler table to minimize the amount of entries used to make UltraHonk polynomials non-zero ([b20b401](https://github.com/AztecProtocol/barretenberg/commit/b20b4012546c5b67623950d0fedb0974df8bf345)) +* **ultrahonk:** Added a simple filler table to minimize the amount of entries used to make UltraHonk polynomials non-zero ([#531](https://github.com/AztecProtocol/barretenberg/issues/531)) ([b20b401](https://github.com/AztecProtocol/barretenberg/commit/b20b4012546c5b67623950d0fedb0974df8bf345)) +* Utilize globally installed benchmark if available ([#152](https://github.com/AztecProtocol/barretenberg/issues/152)) ([fbc5027](https://github.com/AztecProtocol/barretenberg/commit/fbc502794e9bbdfda797b11ac71eba996d649722)) +* Utilize globally installed gtest if available ([#151](https://github.com/AztecProtocol/barretenberg/issues/151)) ([efa18a6](https://github.com/AztecProtocol/barretenberg/commit/efa18a621917dc6c38f453825cadc76eb793a73c)) +* Utilize globally installed leveldb if available ([#134](https://github.com/AztecProtocol/barretenberg/issues/134)) ([255dfb5](https://github.com/AztecProtocol/barretenberg/commit/255dfb52adca885b0a4e4380769a279922af49ff)) +* Working UltraPlonk for Noir ([#299](https://github.com/AztecProtocol/barretenberg/issues/299)) ([d56dfbd](https://github.com/AztecProtocol/barretenberg/commit/d56dfbdfd74b438b3c8652e1ae8740de99f93ae5)) + + +### Bug Fixes + +* Align native library object library with wasm ([#238](https://github.com/AztecProtocol/barretenberg/issues/238)) ([4fa6c0d](https://github.com/AztecProtocol/barretenberg/commit/4fa6c0d2d8c6309d53757ad54d3433d1d662de5f)) +* Avoid targeting honk test files when testing is disabled ([#125](https://github.com/AztecProtocol/barretenberg/issues/125)) ([e4a70ed](https://github.com/AztecProtocol/barretenberg/commit/e4a70edf2bb39d67095cbe21fff310372369a92d)) +* bbmalloc linker error ([#459](https://github.com/AztecProtocol/barretenberg/issues/459)) ([d4761c1](https://github.com/AztecProtocol/barretenberg/commit/d4761c11f30eeecbcb2485f50516bee71809bab1)) +* **build:** git add -f .yalc ([#265](https://github.com/AztecProtocol/barretenberg/issues/265)) ([7671192](https://github.com/AztecProtocol/barretenberg/commit/7671192c8a60ff0bc0f8ad3e14ac299ff780cc25)) +* Check for wasm-opt during configure & run on post_build ([#175](https://github.com/AztecProtocol/barretenberg/issues/175)) ([1ff6af3](https://github.com/AztecProtocol/barretenberg/commit/1ff6af3cb6b7b4d3bb53bfbdcbf1c3a568e0fa86)) +* **cmake:** Remove leveldb dependency that was accidentally re-added ([#335](https://github.com/AztecProtocol/barretenberg/issues/335)) ([3534e2b](https://github.com/AztecProtocol/barretenberg/commit/3534e2bfcca46dbca30573286f43425dab6bc810)) +* **dsl:** Use info instead of std::cout to log ([#323](https://github.com/AztecProtocol/barretenberg/issues/323)) ([486d738](https://github.com/AztecProtocol/barretenberg/commit/486d73842b4b7d6aa84fa12d7462fe52e892d416)) +* Ensure barretenberg provides headers that Noir needs ([#200](https://github.com/AztecProtocol/barretenberg/issues/200)) ([0171a49](https://github.com/AztecProtocol/barretenberg/commit/0171a499a175f88a0ee3fcfd4de0f43ad0ebff85)) +* Ensure TBB is optional using OPTIONAL_COMPONENTS ([#127](https://github.com/AztecProtocol/barretenberg/issues/127)) ([e3039b2](https://github.com/AztecProtocol/barretenberg/commit/e3039b26ea8aca4b8fdc4b2cbac6716ace261c76)) +* Fixed the memory issue ([#509](https://github.com/AztecProtocol/barretenberg/issues/509)) ([107d438](https://github.com/AztecProtocol/barretenberg/commit/107d438ad96847e40f8e5374749b8cba820b2007)) +* msgpack error ([#456](https://github.com/AztecProtocol/barretenberg/issues/456)) ([943d6d0](https://github.com/AztecProtocol/barretenberg/commit/943d6d07c57bea521c2593e892e839f25f82b289)) +* msgpack variant_impl.hpp ([#462](https://github.com/AztecProtocol/barretenberg/issues/462)) ([b5838a6](https://github.com/AztecProtocol/barretenberg/commit/b5838a6c9fe456e832776da21379e41c0a2bbd5d)) +* **nix:** Disable ASM & ADX when building in Nix ([#327](https://github.com/AztecProtocol/barretenberg/issues/327)) ([3bc724d](https://github.com/AztecProtocol/barretenberg/commit/3bc724d2163d29041bfa29a1e49625bab77289a2)) +* **nix:** Use wasi-sdk 12 to provide barretenberg-wasm in overlay ([#315](https://github.com/AztecProtocol/barretenberg/issues/315)) ([4a06992](https://github.com/AztecProtocol/barretenberg/commit/4a069923f4a869f8c2315e6d3f738db6e66dcdfa)) +* Pass brew omp location via LDFLAGS and CPPFLAGS ([#126](https://github.com/AztecProtocol/barretenberg/issues/126)) ([54141f1](https://github.com/AztecProtocol/barretenberg/commit/54141f12de9eee86220003b1f80d39a41795cedc)) +* Remove leveldb_store from stdlib_merkle_tree ([#149](https://github.com/AztecProtocol/barretenberg/issues/149)) ([3ce5e7e](https://github.com/AztecProtocol/barretenberg/commit/3ce5e7e17ca7bb806373be833a44d55a8e584bda)) +* Revert generator changes that cause memory OOB access ([#338](https://github.com/AztecProtocol/barretenberg/issues/338)) ([500daf1](https://github.com/AztecProtocol/barretenberg/commit/500daf1ceb03771d2c01eaf1a86139a7ac1d814f)) +* **srs:** Detect shasum utility when downloading lagrange ([#143](https://github.com/AztecProtocol/barretenberg/issues/143)) ([515604d](https://github.com/AztecProtocol/barretenberg/commit/515604dff83648e00106f35511aa567921599a78)) +* Store lagrange forms of selector polys w/ Ultra ([#255](https://github.com/AztecProtocol/barretenberg/issues/255)) ([b121963](https://github.com/AztecProtocol/barretenberg/commit/b12196362497c8dfb3a64284d28de2d8ee7d730c)) +* throw -> throw_or_abort in sol gen ([#388](https://github.com/AztecProtocol/barretenberg/issues/388)) ([7cfe3f0](https://github.com/AztecProtocol/barretenberg/commit/7cfe3f055815e333ff8a8f1f30e8377c83d2182a)) +* **wasm:** Remove the CMAKE_STAGING_PREFIX variable from wasm preset ([#240](https://github.com/AztecProtocol/barretenberg/issues/240)) ([f2f8d1f](https://github.com/AztecProtocol/barretenberg/commit/f2f8d1f7a24ca73e30c981fd245c86f7f964abb7)) +* Wrap each use of filesystem library in ifndef __wasm__ ([#181](https://github.com/AztecProtocol/barretenberg/issues/181)) ([0eae962](https://github.com/AztecProtocol/barretenberg/commit/0eae96293b4d2da6b6b23ae80ac132fb49f90915)) diff --git a/circuits/cpp/barretenberg/LICENSE b/barretenberg/LICENSE similarity index 100% rename from circuits/cpp/barretenberg/LICENSE rename to barretenberg/LICENSE diff --git a/circuits/cpp/barretenberg/PROJECT b/barretenberg/PROJECT similarity index 100% rename from circuits/cpp/barretenberg/PROJECT rename to barretenberg/PROJECT diff --git a/circuits/cpp/barretenberg/README.md b/barretenberg/README.md similarity index 98% rename from circuits/cpp/barretenberg/README.md rename to barretenberg/README.md index bdc96b95d29..a6487a68e6d 100644 --- a/circuits/cpp/barretenberg/README.md +++ b/barretenberg/README.md @@ -1,7 +1,7 @@ ## Barretenberg, an optimized elliptic curve library for the bn128 curve, and PLONK SNARK prover -Barretenberg aims to be a stand-alone and well-specified library, but please see https://github.com/AztecProtocol/aztec-packages/edit/master/circuits/cpp/barretenberg for the authoritative source of this code. -The separate repository https://github.com/AztecProtocol/barretenberg is available if working on barretenberg independently of Aztec, however it is encouraged to develop in the context of Aztec to see if it will cause issues for Aztec end-to-end tests. +Barretenberg aims to be a stand-alone and well-specified library, but please see https://github.com/AztecProtocol/aztec-packages/edit/master/barretenberg for the authoritative source of this code. +The separate repository https://github.com/AztecProtocol/barretenberg is available if working on barretenberg independently of Aztec, however it is encouraged to develop in the context of Aztec to see if it will cause issues for Aztec end-to-end tests. **Currently, merging only occurs in aztec-packages. This is a mirror-only repository until it matures. Legacy release merges need an admin** As the spec solidifies, this should be less of an issue. Aztec and Barretenberg are currently under heavy development. diff --git a/barretenberg/VERSION b/barretenberg/VERSION new file mode 100644 index 00000000000..f34b958bcd4 --- /dev/null +++ b/barretenberg/VERSION @@ -0,0 +1 @@ +v0.7.0 x-release-please-version diff --git a/circuits/cpp/barretenberg/acir_tests/.dockerignore b/barretenberg/acir_tests/.dockerignore similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/.dockerignore rename to barretenberg/acir_tests/.dockerignore diff --git a/circuits/cpp/barretenberg/acir_tests/.gitignore b/barretenberg/acir_tests/.gitignore similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/.gitignore rename to barretenberg/acir_tests/.gitignore diff --git a/circuits/cpp/barretenberg/acir_tests/Dockerfile.bb b/barretenberg/acir_tests/Dockerfile.bb similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/Dockerfile.bb rename to barretenberg/acir_tests/Dockerfile.bb diff --git a/circuits/cpp/barretenberg/acir_tests/Dockerfile.bb.js b/barretenberg/acir_tests/Dockerfile.bb.js similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/Dockerfile.bb.js rename to barretenberg/acir_tests/Dockerfile.bb.js diff --git a/circuits/cpp/barretenberg/acir_tests/README.md b/barretenberg/acir_tests/README.md similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/README.md rename to barretenberg/acir_tests/README.md diff --git a/circuits/cpp/barretenberg/acir_tests/browser-test-app/package.json b/barretenberg/acir_tests/browser-test-app/package.json similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/browser-test-app/package.json rename to barretenberg/acir_tests/browser-test-app/package.json diff --git a/circuits/cpp/barretenberg/acir_tests/browser-test-app/serve.mt.json b/barretenberg/acir_tests/browser-test-app/serve.mt.json similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/browser-test-app/serve.mt.json rename to barretenberg/acir_tests/browser-test-app/serve.mt.json diff --git a/circuits/cpp/barretenberg/acir_tests/browser-test-app/src/index.html b/barretenberg/acir_tests/browser-test-app/src/index.html similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/browser-test-app/src/index.html rename to barretenberg/acir_tests/browser-test-app/src/index.html diff --git a/circuits/cpp/barretenberg/acir_tests/browser-test-app/src/index.ts b/barretenberg/acir_tests/browser-test-app/src/index.ts similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/browser-test-app/src/index.ts rename to barretenberg/acir_tests/browser-test-app/src/index.ts diff --git a/circuits/cpp/barretenberg/acir_tests/browser-test-app/tsconfig.json b/barretenberg/acir_tests/browser-test-app/tsconfig.json similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/browser-test-app/tsconfig.json rename to barretenberg/acir_tests/browser-test-app/tsconfig.json diff --git a/circuits/cpp/barretenberg/acir_tests/browser-test-app/webpack.config.js b/barretenberg/acir_tests/browser-test-app/webpack.config.js similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/browser-test-app/webpack.config.js rename to barretenberg/acir_tests/browser-test-app/webpack.config.js diff --git a/circuits/cpp/barretenberg/acir_tests/browser-test-app/yarn.lock b/barretenberg/acir_tests/browser-test-app/yarn.lock similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/browser-test-app/yarn.lock rename to barretenberg/acir_tests/browser-test-app/yarn.lock diff --git a/circuits/cpp/barretenberg/acir_tests/flows/all_cmds.sh b/barretenberg/acir_tests/flows/all_cmds.sh similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/flows/all_cmds.sh rename to barretenberg/acir_tests/flows/all_cmds.sh diff --git a/circuits/cpp/barretenberg/acir_tests/flows/prove_and_verify.sh b/barretenberg/acir_tests/flows/prove_and_verify.sh similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/flows/prove_and_verify.sh rename to barretenberg/acir_tests/flows/prove_and_verify.sh diff --git a/circuits/cpp/barretenberg/acir_tests/headless-test/bb.js.browser b/barretenberg/acir_tests/headless-test/bb.js.browser similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/headless-test/bb.js.browser rename to barretenberg/acir_tests/headless-test/bb.js.browser diff --git a/circuits/cpp/barretenberg/acir_tests/headless-test/package.json b/barretenberg/acir_tests/headless-test/package.json similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/headless-test/package.json rename to barretenberg/acir_tests/headless-test/package.json diff --git a/circuits/cpp/barretenberg/acir_tests/headless-test/src/index.ts b/barretenberg/acir_tests/headless-test/src/index.ts similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/headless-test/src/index.ts rename to barretenberg/acir_tests/headless-test/src/index.ts diff --git a/circuits/cpp/barretenberg/acir_tests/headless-test/tsconfig.json b/barretenberg/acir_tests/headless-test/tsconfig.json similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/headless-test/tsconfig.json rename to barretenberg/acir_tests/headless-test/tsconfig.json diff --git a/circuits/cpp/barretenberg/acir_tests/headless-test/yarn.lock b/barretenberg/acir_tests/headless-test/yarn.lock similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/headless-test/yarn.lock rename to barretenberg/acir_tests/headless-test/yarn.lock diff --git a/circuits/cpp/barretenberg/acir_tests/run_acir_tests.sh b/barretenberg/acir_tests/run_acir_tests.sh similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/run_acir_tests.sh rename to barretenberg/acir_tests/run_acir_tests.sh diff --git a/circuits/cpp/barretenberg/acir_tests/run_acir_tests_browser.sh b/barretenberg/acir_tests/run_acir_tests_browser.sh similarity index 100% rename from circuits/cpp/barretenberg/acir_tests/run_acir_tests_browser.sh rename to barretenberg/acir_tests/run_acir_tests_browser.sh diff --git a/circuits/cpp/barretenberg/barretenberg-wasm.nix b/barretenberg/barretenberg-wasm.nix similarity index 95% rename from circuits/cpp/barretenberg/barretenberg-wasm.nix rename to barretenberg/barretenberg-wasm.nix index b77203afb96..f25a1675ff5 100644 --- a/circuits/cpp/barretenberg/barretenberg-wasm.nix +++ b/barretenberg/barretenberg-wasm.nix @@ -6,7 +6,7 @@ in stdenv.mkDerivation { pname = "barretenberg.wasm"; - version = "0.6.7"; # x-release-please-version + version = "0.7.0"; # x-release-please-version src = ./cpp; diff --git a/circuits/cpp/barretenberg/barretenberg.code-workspace b/barretenberg/barretenberg.code-workspace similarity index 100% rename from circuits/cpp/barretenberg/barretenberg.code-workspace rename to barretenberg/barretenberg.code-workspace diff --git a/circuits/cpp/barretenberg/barretenberg.nix b/barretenberg/barretenberg.nix similarity index 96% rename from circuits/cpp/barretenberg/barretenberg.nix rename to barretenberg/barretenberg.nix index 2f44f94812d..2f561d7aec9 100644 --- a/circuits/cpp/barretenberg/barretenberg.nix +++ b/barretenberg/barretenberg.nix @@ -14,7 +14,7 @@ in buildEnv.mkDerivation { pname = "libbarretenberg"; - version = "0.6.7"; # x-release-please-version + version = "0.7.0"; # x-release-please-version src = ./cpp; diff --git a/circuits/cpp/barretenberg/bootstrap.sh b/barretenberg/bootstrap.sh similarity index 100% rename from circuits/cpp/barretenberg/bootstrap.sh rename to barretenberg/bootstrap.sh diff --git a/circuits/cpp/barretenberg/bootstrap_docker.sh b/barretenberg/bootstrap_docker.sh similarity index 100% rename from circuits/cpp/barretenberg/bootstrap_docker.sh rename to barretenberg/bootstrap_docker.sh diff --git a/circuits/cpp/barretenberg/build-system b/barretenberg/build-system similarity index 100% rename from circuits/cpp/barretenberg/build-system rename to barretenberg/build-system diff --git a/circuits/cpp/barretenberg/build_manifest.json b/barretenberg/build_manifest.json similarity index 100% rename from circuits/cpp/barretenberg/build_manifest.json rename to barretenberg/build_manifest.json diff --git a/circuits/cpp/barretenberg/build_manifest.sh b/barretenberg/build_manifest.sh similarity index 100% rename from circuits/cpp/barretenberg/build_manifest.sh rename to barretenberg/build_manifest.sh diff --git a/circuits/cpp/barretenberg/cpp/.aztec-packages-commit b/barretenberg/cpp/.aztec-packages-commit similarity index 100% rename from circuits/cpp/barretenberg/cpp/.aztec-packages-commit rename to barretenberg/cpp/.aztec-packages-commit diff --git a/circuits/cpp/barretenberg/cpp/.clang-format b/barretenberg/cpp/.clang-format similarity index 100% rename from circuits/cpp/barretenberg/cpp/.clang-format rename to barretenberg/cpp/.clang-format diff --git a/circuits/cpp/barretenberg/cpp/.clangd b/barretenberg/cpp/.clangd similarity index 100% rename from circuits/cpp/barretenberg/cpp/.clangd rename to barretenberg/cpp/.clangd diff --git a/circuits/cpp/barretenberg/cpp/.dockerignore b/barretenberg/cpp/.dockerignore similarity index 92% rename from circuits/cpp/barretenberg/cpp/.dockerignore rename to barretenberg/cpp/.dockerignore index f426dc2cbd6..0f7ce6f5134 100644 --- a/circuits/cpp/barretenberg/cpp/.dockerignore +++ b/barretenberg/cpp/.dockerignore @@ -17,3 +17,5 @@ # Needed scripts. !scripts/install-wasi-sdk.sh +!./.clang-format +!./format.sh \ No newline at end of file diff --git a/circuits/cpp/barretenberg/cpp/.gitignore b/barretenberg/cpp/.gitignore similarity index 100% rename from circuits/cpp/barretenberg/cpp/.gitignore rename to barretenberg/cpp/.gitignore diff --git a/barretenberg/cpp/.rebuild_patterns b/barretenberg/cpp/.rebuild_patterns new file mode 100644 index 00000000000..0c13870647a --- /dev/null +++ b/barretenberg/cpp/.rebuild_patterns @@ -0,0 +1,3 @@ +^barretenberg/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$ +^barretenberg/.*CMakeLists\\.txt$ +^barretenberg/.*Dockerfile.*$ \ No newline at end of file diff --git a/circuits/cpp/barretenberg/cpp/CMakeLists.txt b/barretenberg/cpp/CMakeLists.txt similarity index 95% rename from circuits/cpp/barretenberg/cpp/CMakeLists.txt rename to barretenberg/cpp/CMakeLists.txt index 7d32cfff096..515ccee5241 100644 --- a/circuits/cpp/barretenberg/cpp/CMakeLists.txt +++ b/barretenberg/cpp/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.24) project( Barretenberg DESCRIPTION "BN254 elliptic curve library, and PLONK SNARK prover" - VERSION 0.6.7 # x-release-please-version + VERSION 0.7.0 # x-release-please-version LANGUAGES CXX C ) @@ -21,7 +21,6 @@ option(DISABLE_TBB "Intel Thread Building Blocks" ON) option(COVERAGE "Enable collecting coverage from tests" OFF) option(ENABLE_ASAN "Address sanitizer for debugging tricky memory corruption" OFF) option(ENABLE_HEAVY_TESTS "Enable heavy tests when collecting coverage" OFF) -option(INSTALL_BARRETENBERG "Enable installation of barretenberg. (Projects embedding barretenberg may want to turn this OFF.)" ON) if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "arm64") message(STATUS "Compiling for ARM.") diff --git a/circuits/cpp/barretenberg/cpp/CMakePresets.json b/barretenberg/cpp/CMakePresets.json similarity index 90% rename from circuits/cpp/barretenberg/cpp/CMakePresets.json rename to barretenberg/cpp/CMakePresets.json index 6c709155e37..6ac7fd933f6 100644 --- a/circuits/cpp/barretenberg/cpp/CMakePresets.json +++ b/barretenberg/cpp/CMakePresets.json @@ -88,6 +88,16 @@ "FUZZING": "ON" } }, + { + "name": "smt-verification", + "displayName": "Build with smt verificaiton", + "description": "Build default preset but with smt library included", + "inherits": "clang16", + "binaryDir": "build-smt", + "cacheVariables": { + "SMT": "ON" + } + }, { "name": "coverage", "displayName": "Build with coverage", @@ -190,6 +200,11 @@ "inherits": "default", "configurePreset": "fuzzing" }, + { + "name": "smt-verification", + "inherits": "clang16", + "configurePreset": "smt-verification" + }, { "name": "coverage", "inherits": "default", @@ -200,7 +215,14 @@ "configurePreset": "wasm", "inheritConfigureEnvironment": true, "jobs": 0, - "targets": ["barretenberg.wasm", "acvm_backend.wasm"] + "targets": [ + "barretenberg.wasm", + "acvm_backend.wasm", + "barretenberg", + "wasi", + "env", + "honk_tests" + ] }, { "name": "wasm-dbg", @@ -258,6 +280,11 @@ "inherits": "default", "configurePreset": "fuzzing" }, + { + "name": "smt-verification", + "inherits": "clang16", + "configurePreset": "smt-verification" + }, { "name": "coverage", "inherits": "default", diff --git a/circuits/cpp/barretenberg/cpp/bootstrap.sh b/barretenberg/cpp/bootstrap.sh similarity index 72% rename from circuits/cpp/barretenberg/cpp/bootstrap.sh rename to barretenberg/cpp/bootstrap.sh index 4cc41dfb740..b1b1c27cb01 100755 --- a/circuits/cpp/barretenberg/cpp/bootstrap.sh +++ b/barretenberg/cpp/bootstrap.sh @@ -1,19 +1,13 @@ #!/bin/bash set -eu +# Navigate to script folder +cd "$(dirname "$0")" + # Clean. rm -rf ./build rm -rf ./build-wasm -# Install formatting git hook. -HOOKS_DIR=$(git rev-parse --git-path hooks) -# The pre-commit script will live in a barretenberg-specific hooks directory -# Find it based on the script directory. -# TODO(AD) it is a bit unintuitive that bootstrap sets one up for a barretenberg-oriented workflow -SCRIPT_PWD=`pwd` # fix: capture pwd instead of writing into script -echo "cd $SCRIPT_PWD && ./format.sh staged" > $HOOKS_DIR/pre-commit -chmod +x $HOOKS_DIR/pre-commit - # Determine system. if [[ "$OSTYPE" == "darwin"* ]]; then OS=macos @@ -25,9 +19,7 @@ else fi # Download ignition transcripts. -cd ./srs_db -./download_ignition.sh 3 -cd .. +(cd ./srs_db && ./download_ignition.sh 3) # Pick native toolchain file. ARCH=$(uname -m) diff --git a/circuits/cpp/barretenberg/cpp/cmake/arch.cmake b/barretenberg/cpp/cmake/arch.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/arch.cmake rename to barretenberg/cpp/cmake/arch.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/barretenberg.pc.in b/barretenberg/cpp/cmake/barretenberg.pc.in similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/barretenberg.pc.in rename to barretenberg/cpp/cmake/barretenberg.pc.in diff --git a/circuits/cpp/barretenberg/cpp/cmake/benchmark.cmake b/barretenberg/cpp/cmake/benchmark.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/benchmark.cmake rename to barretenberg/cpp/cmake/benchmark.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/build.cmake b/barretenberg/cpp/cmake/build.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/build.cmake rename to barretenberg/cpp/cmake/build.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/gtest.cmake b/barretenberg/cpp/cmake/gtest.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/gtest.cmake rename to barretenberg/cpp/cmake/gtest.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/module.cmake b/barretenberg/cpp/cmake/module.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/module.cmake rename to barretenberg/cpp/cmake/module.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/threading.cmake b/barretenberg/cpp/cmake/threading.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/threading.cmake rename to barretenberg/cpp/cmake/threading.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/toolchains/aarch64-darwin.cmake b/barretenberg/cpp/cmake/toolchains/aarch64-darwin.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/toolchains/aarch64-darwin.cmake rename to barretenberg/cpp/cmake/toolchains/aarch64-darwin.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/toolchains/aarch64-linux.cmake b/barretenberg/cpp/cmake/toolchains/aarch64-linux.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/toolchains/aarch64-linux.cmake rename to barretenberg/cpp/cmake/toolchains/aarch64-linux.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/toolchains/i386-linux.cmake b/barretenberg/cpp/cmake/toolchains/i386-linux.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/toolchains/i386-linux.cmake rename to barretenberg/cpp/cmake/toolchains/i386-linux.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/toolchains/wasm32-wasi.cmake b/barretenberg/cpp/cmake/toolchains/wasm32-wasi.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/toolchains/wasm32-wasi.cmake rename to barretenberg/cpp/cmake/toolchains/wasm32-wasi.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/toolchains/x86_64-darwin.cmake b/barretenberg/cpp/cmake/toolchains/x86_64-darwin.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/toolchains/x86_64-darwin.cmake rename to barretenberg/cpp/cmake/toolchains/x86_64-darwin.cmake diff --git a/circuits/cpp/barretenberg/cpp/cmake/toolchains/x86_64-linux.cmake b/barretenberg/cpp/cmake/toolchains/x86_64-linux.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/cmake/toolchains/x86_64-linux.cmake rename to barretenberg/cpp/cmake/toolchains/x86_64-linux.cmake diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang new file mode 100644 index 00000000000..c642b4a9a66 --- /dev/null +++ b/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang @@ -0,0 +1,21 @@ +FROM ubuntu:lunar AS builder +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential wget git libssl-dev cmake ninja-build curl +RUN curl https://wasmtime.dev/install.sh -sSf | bash /dev/stdin --version v3.0.1 +WORKDIR /usr/src/barretenberg/cpp +COPY ./scripts/install-wasi-sdk.sh ./scripts/install-wasi-sdk.sh +RUN ./scripts/install-wasi-sdk.sh +COPY . . +RUN cmake --preset wasm && cmake --build --preset wasm +RUN cmake --preset wasm-threads && cmake --build --preset wasm-threads + +FROM scratch +WORKDIR /usr/src/barretenberg/cpp +COPY . . +COPY --from=builder /usr/src/barretenberg/cpp/build-wasm/bin/barretenberg.wasm /usr/src/barretenberg/cpp/build-wasm/bin/barretenberg.wasm +COPY --from=builder /usr/src/barretenberg/cpp/build-wasm-threads/bin/barretenberg.wasm /usr/src/barretenberg/cpp/build-wasm-threads/bin/barretenberg.wasm +# Copy libs for consuming projects. +COPY --from=builder /usr/src/barretenberg/cpp/build-wasm/lib/libbarretenberg.a /usr/src/barretenberg/cpp/build-wasm/lib/libbarretenberg.a +COPY --from=builder /usr/src/barretenberg/cpp/build-wasm/lib/libwasi.a /usr/src/barretenberg/cpp/build-wasm/lib/libwasi.a +COPY --from=builder /usr/src/barretenberg/cpp/build-wasm/lib/libenv.a /usr/src/barretenberg/cpp/build-wasm/lib/libenv.a +# Copy wasi-sdk so that consuming projects have the toolchain available. +COPY --from=builder /usr/src/barretenberg/cpp/src/wasi-sdk-20.0 /usr/src/barretenberg/cpp/src/wasi-sdk-20.0 \ No newline at end of file diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang new file mode 100644 index 00000000000..79ce703bf62 --- /dev/null +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -0,0 +1,23 @@ +FROM alpine:3.18 AS builder +RUN apk update \ + && apk upgrade \ + && apk add --no-cache \ + build-base \ + clang16 \ + cmake \ + ninja \ + git \ + curl \ + perl +WORKDIR /usr/src/barretenberg/cpp +COPY . . +# Build bb binary. Everything else is built as part linux-clang-assert. +RUN cmake --preset default && cmake --build --preset default --target bb + +FROM alpine:3.18 +WORKDIR /usr/src/barretenberg/cpp +COPY . . +COPY --from=builder /usr/src/barretenberg/cpp/build/bin/bb /usr/src/barretenberg/cpp/build/bin/bb +# Copy libs for consuming projects. +COPY --from=builder /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a +COPY --from=builder /usr/src/barretenberg/cpp/build/lib/libenv.a /usr/src/barretenberg/cpp/build/lib/libenv.a \ No newline at end of file diff --git a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert similarity index 55% rename from circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert rename to barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert index c80a62e3118..a44442d0bf4 100644 --- a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert @@ -1,23 +1,23 @@ -FROM alpine:3.18 AS builder +# We have to stay on 3.17 for now, to get clang-format 15, as code is not yet formatted to 16. +FROM alpine:3.17 AS builder RUN apk update \ && apk upgrade \ && apk add --no-cache \ build-base \ - clang16 \ - openmp-dev \ + clang15 \ cmake \ ninja \ git \ curl \ - perl - + perl \ + clang-extra-tools \ + bash WORKDIR /usr/src/barretenberg/cpp - COPY . . # Build everything to ensure everything builds. All tests will be run from the result of this build. -RUN cmake --preset default -DCMAKE_BUILD_TYPE=RelWithAssert -DCI=ON && cmake --build --preset default +RUN ./format.sh check && cmake --preset default -DCMAKE_BUILD_TYPE=RelWithAssert -DCI=ON && cmake --build --preset default -FROM alpine:3.18 -RUN apk update && apk add curl openmp +FROM alpine:3.17 +RUN apk update && apk add curl libstdc++ COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin \ No newline at end of file diff --git a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-benchmarks b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-benchmarks similarity index 100% rename from circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-benchmarks rename to barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-benchmarks diff --git a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-fuzzing b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-fuzzing similarity index 100% rename from circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-fuzzing rename to barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-fuzzing diff --git a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc similarity index 73% rename from circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc rename to barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc index 9953c1b003c..4b27ba18a5f 100644 --- a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc @@ -13,5 +13,5 @@ COPY . . RUN cmake --preset gcc -DCI=ON && cmake --build --preset gcc FROM alpine:3.18 -RUN apk update && apk add libstdc++ libgomp -COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db +RUN apk update && apk add libstdc++ +COPY --from=builder /usr/src/barretenberg/cpp/build/bin/bb /usr/src/barretenberg/cpp/build/bin/bb diff --git a/circuits/cpp/barretenberg/cpp/docs/Fuzzing.md b/barretenberg/cpp/docs/Fuzzing.md similarity index 100% rename from circuits/cpp/barretenberg/cpp/docs/Fuzzing.md rename to barretenberg/cpp/docs/Fuzzing.md diff --git a/circuits/cpp/barretenberg/cpp/format.sh b/barretenberg/cpp/format.sh similarity index 69% rename from circuits/cpp/barretenberg/cpp/format.sh rename to barretenberg/cpp/format.sh index 48315e39621..0bf8bca805c 100755 --- a/circuits/cpp/barretenberg/cpp/format.sh +++ b/barretenberg/cpp/format.sh @@ -1,20 +1,24 @@ #!/bin/bash -set -eu +set -e if [ "$1" == "staged" ]; then - echo Formatting staged files... + echo Formatting barretenberg staged files... for FILE in $(git diff-index --diff-filter=d --relative --cached --name-only HEAD | grep -e '\.\(cpp\|hpp\|tcc\)$'); do clang-format -i $FILE sed -i.bak 's/\r$//' $FILE && rm ${FILE}.bak git add $FILE done +elif [ "$1" == "check" ]; then + for FILE in $(find ./src -iname *.hpp -o -iname *.cpp -o -iname *.tcc | grep -v src/msgpack-c); do + clang-format --dry-run --Werror $FILE + done elif [ -n "$1" ]; then for FILE in $(git diff-index --relative --name-only $1 | grep -e '\.\(cpp\|hpp\|tcc\)$'); do clang-format -i $FILE sed -i.bak 's/\r$//' $FILE && rm ${FILE}.bak done else - for FILE in $(find ./src -iname *.hpp -o -iname *.cpp -o -iname *.tcc | grep -v src/boost); do + for FILE in $(find ./src -iname *.hpp -o -iname *.cpp -o -iname *.tcc | grep -v src/msgpack-c); do clang-format -i $FILE sed -i.bak 's/\r$//' $FILE && rm ${FILE}.bak done diff --git a/circuits/cpp/barretenberg/cpp/notebook.ipynb b/barretenberg/cpp/notebook.ipynb similarity index 100% rename from circuits/cpp/barretenberg/cpp/notebook.ipynb rename to barretenberg/cpp/notebook.ipynb diff --git a/circuits/cpp/barretenberg/cpp/scripts/bb-tests.sh b/barretenberg/cpp/scripts/bb-tests.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/scripts/bb-tests.sh rename to barretenberg/cpp/scripts/bb-tests.sh diff --git a/circuits/cpp/barretenberg/cpp/scripts/collect_coverage_information.sh b/barretenberg/cpp/scripts/collect_coverage_information.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/scripts/collect_coverage_information.sh rename to barretenberg/cpp/scripts/collect_coverage_information.sh diff --git a/circuits/cpp/barretenberg/cpp/scripts/install-wasi-sdk.sh b/barretenberg/cpp/scripts/install-wasi-sdk.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/scripts/install-wasi-sdk.sh rename to barretenberg/cpp/scripts/install-wasi-sdk.sh diff --git a/circuits/cpp/barretenberg/cpp/scripts/run_tests b/barretenberg/cpp/scripts/run_tests similarity index 85% rename from circuits/cpp/barretenberg/cpp/scripts/run_tests rename to barretenberg/cpp/scripts/run_tests index b3b7ba69cd7..427a34531b0 100755 --- a/circuits/cpp/barretenberg/cpp/scripts/run_tests +++ b/barretenberg/cpp/scripts/run_tests @@ -18,7 +18,8 @@ export PATH="$PATH:$(git rev-parse --show-toplevel)/build-system/scripts" IMAGE_URI=$(calculate_image_uri $REPOSITORY) retry docker pull $IMAGE_URI -if [ -f "$TESTS" ]; then +# If there is a file in the scripts directory named $TESTS, those are the tests to run. +if [ -f "$(query_manifest projectDir $REPOSITORY)/scripts/$TESTS" ]; then TESTS=$(cat $TESTS | tr '\n' ' ') fi diff --git a/circuits/cpp/barretenberg/cpp/scripts/stdlib-tests b/barretenberg/cpp/scripts/stdlib-tests similarity index 100% rename from circuits/cpp/barretenberg/cpp/scripts/stdlib-tests rename to barretenberg/cpp/scripts/stdlib-tests diff --git a/circuits/cpp/barretenberg/cpp/scripts/strip-wasm.sh b/barretenberg/cpp/scripts/strip-wasm.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/scripts/strip-wasm.sh rename to barretenberg/cpp/scripts/strip-wasm.sh diff --git a/circuits/cpp/barretenberg/cpp/src/CMakeLists.txt b/barretenberg/cpp/src/CMakeLists.txt similarity index 83% rename from circuits/cpp/barretenberg/cpp/src/CMakeLists.txt rename to barretenberg/cpp/src/CMakeLists.txt index e9ffeb97e39..51ecf4fabbd 100644 --- a/circuits/cpp/barretenberg/cpp/src/CMakeLists.txt +++ b/barretenberg/cpp/src/CMakeLists.txt @@ -39,6 +39,7 @@ endif() include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/msgpack-c/include) + # I feel this should be limited to ecc, however it's currently used in headers that go across libraries, # and there currently isn't an easy way to inherit the DDISABLE_SHENANIGANS parameter. if(DISABLE_ASM) @@ -69,6 +70,12 @@ add_subdirectory(barretenberg/wasi) add_subdirectory(barretenberg/grumpkin_srs_gen) add_subdirectory(barretenberg/bb) + +if(SMT) + include_directories(${CMAKE_CURRENT_SOURCE_DIR} $ENV{HOME}/cvc5/tmp-lib/include) + add_subdirectory(barretenberg/smt_verification) +endif() + if(BENCHMARKS) add_subdirectory(barretenberg/benchmark) endif() @@ -183,49 +190,10 @@ if(WASM) PRIVATE -nostartfiles -Wl,--no-entry,--export-dynamic,--allow-undefined ) + target_link_options( acvm_backend.wasm PRIVATE -nostartfiles -Wl,--no-entry,--export-dynamic,--allow-undefined ) - - if(INSTALL_BARRETENBERG) - install(TARGETS barretenberg.wasm DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(TARGETS acvm_backend.wasm DESTINATION ${CMAKE_INSTALL_BINDIR}) - endif() - -else() - if(INSTALL_BARRETENBERG) - # The `install` function takes targets to install in different destinations on the system. - install( - - # TODO(dbanks12): should only need to install API headers - TARGETS barretenberg barretenberg_headers - - # We also give it an optional export name in case something wants to target the install. - EXPORT barretenbergTargets - - # The ARCHIVE output signifies static libraries that should be installed - # and we use the GNUInstallDirs location to install into the standard system library location - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - - # The FILE_SET output is used instead of PUBLIC_HEADER & PRIVATE_HEADER outputs because - # our headers don't have a clear delineation between public & private, but we still use - # the GNUInstallDirs location to install into the standard system header location - FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - ) - - set(pkg_config "${PROJECT_BINARY_DIR}/barretenberg.pc") - - configure_file( - "${PROJECT_SOURCE_DIR}/cmake/barretenberg.pc.in" - "${pkg_config}" - @ONLY - ) - - install( - FILES "${pkg_config}" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" - ) - endif() endif() diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/barretenberg.hpp b/barretenberg/cpp/src/barretenberg/barretenberg.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/barretenberg.hpp rename to barretenberg/cpp/src/barretenberg/barretenberg.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/bb/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/bb/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/bb/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/bb/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/bb/exec_pipe.hpp b/barretenberg/cpp/src/barretenberg/bb/exec_pipe.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/bb/exec_pipe.hpp rename to barretenberg/cpp/src/barretenberg/bb/exec_pipe.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/bb/file_io.hpp b/barretenberg/cpp/src/barretenberg/bb/file_io.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/bb/file_io.hpp rename to barretenberg/cpp/src/barretenberg/bb/file_io.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/bb/get_bytecode.hpp b/barretenberg/cpp/src/barretenberg/bb/get_bytecode.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/bb/get_bytecode.hpp rename to barretenberg/cpp/src/barretenberg/bb/get_bytecode.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/bb/get_crs.hpp b/barretenberg/cpp/src/barretenberg/bb/get_crs.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/bb/get_crs.hpp rename to barretenberg/cpp/src/barretenberg/bb/get_crs.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/bb/get_witness.hpp b/barretenberg/cpp/src/barretenberg/bb/get_witness.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/bb/get_witness.hpp rename to barretenberg/cpp/src/barretenberg/bb/get_witness.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/bb/log.hpp b/barretenberg/cpp/src/barretenberg/bb/log.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/bb/log.hpp rename to barretenberg/cpp/src/barretenberg/bb/log.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/bb/main.cpp b/barretenberg/cpp/src/barretenberg/bb/main.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/bb/main.cpp rename to barretenberg/cpp/src/barretenberg/bb/main.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/bb/readme.md b/barretenberg/cpp/src/barretenberg/bb/readme.md similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/bb/readme.md rename to barretenberg/cpp/src/barretenberg/bb/readme.md diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/benchmark/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/compare_branch_vs_baseline.sh b/barretenberg/cpp/src/barretenberg/benchmark/compare_branch_vs_baseline.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/compare_branch_vs_baseline.sh rename to barretenberg/cpp/src/barretenberg/benchmark/compare_branch_vs_baseline.sh diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/decrypt_bench/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/decrypt_bench/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/decrypt_bench/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/benchmark/decrypt_bench/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/decrypt_bench/main.cpp b/barretenberg/cpp/src/barretenberg/benchmark/decrypt_bench/main.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/decrypt_bench/main.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/decrypt_bench/main.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/benchmark_utilities.hpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/benchmark_utilities.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/benchmark_utilities.hpp rename to barretenberg/cpp/src/barretenberg/benchmark/honk_bench/benchmark_utilities.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_standard.sh b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_standard.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_standard.sh rename to barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_standard.sh diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_ultra.sh b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_ultra.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_ultra.sh rename to barretenberg/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_ultra.sh diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/honk.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/honk.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/honk.bench.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/honk_bench/honk.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/main.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/main.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/main.bench.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/honk_bench/main.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_honk.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_honk.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_honk.bench.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_honk.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_plonk.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_plonk.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_plonk.bench.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_plonk.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.bench.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_plonk.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_plonk.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_plonk.bench.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_plonk.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/main.cpp b/barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/main.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/main.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/main.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/plonk_bench/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/plonk_bench/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/plonk_bench/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/benchmark/plonk_bench/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/plonk_bench/plonk.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/plonk_bench/plonk.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/plonk_bench/plonk.bench.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/plonk_bench/plonk.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/benchmark/relations_bench/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/barycentric.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/barycentric.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/barycentric.bench.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/relations_bench/barycentric.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/main.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/main.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/main.bench.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/relations_bench/main.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/relations.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/relations.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/benchmark/relations_bench/relations.bench.cpp rename to barretenberg/cpp/src/barretenberg/benchmark/relations_bench/relations.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/common/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/common/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/assert.hpp b/barretenberg/cpp/src/barretenberg/common/assert.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/assert.hpp rename to barretenberg/cpp/src/barretenberg/common/assert.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/c_bind.cpp b/barretenberg/cpp/src/barretenberg/common/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/common/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/c_bind.hpp b/barretenberg/cpp/src/barretenberg/common/c_bind.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/c_bind.hpp rename to barretenberg/cpp/src/barretenberg/common/c_bind.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/constexpr_utils.hpp b/barretenberg/cpp/src/barretenberg/common/constexpr_utils.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/constexpr_utils.hpp rename to barretenberg/cpp/src/barretenberg/common/constexpr_utils.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/container.hpp b/barretenberg/cpp/src/barretenberg/common/container.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/container.hpp rename to barretenberg/cpp/src/barretenberg/common/container.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/fuzzer.hpp b/barretenberg/cpp/src/barretenberg/common/fuzzer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/fuzzer.hpp rename to barretenberg/cpp/src/barretenberg/common/fuzzer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/fuzzer_constants.hpp b/barretenberg/cpp/src/barretenberg/common/fuzzer_constants.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/fuzzer_constants.hpp rename to barretenberg/cpp/src/barretenberg/common/fuzzer_constants.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/inline.hpp b/barretenberg/cpp/src/barretenberg/common/inline.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/inline.hpp rename to barretenberg/cpp/src/barretenberg/common/inline.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/log.hpp b/barretenberg/cpp/src/barretenberg/common/log.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/log.hpp rename to barretenberg/cpp/src/barretenberg/common/log.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/map.hpp b/barretenberg/cpp/src/barretenberg/common/map.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/map.hpp rename to barretenberg/cpp/src/barretenberg/common/map.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/mem.cpp b/barretenberg/cpp/src/barretenberg/common/mem.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/mem.cpp rename to barretenberg/cpp/src/barretenberg/common/mem.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/mem.hpp b/barretenberg/cpp/src/barretenberg/common/mem.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/mem.hpp rename to barretenberg/cpp/src/barretenberg/common/mem.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/moody/blockingconcurrentqueue.h b/barretenberg/cpp/src/barretenberg/common/moody/blockingconcurrentqueue.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/moody/blockingconcurrentqueue.h rename to barretenberg/cpp/src/barretenberg/common/moody/blockingconcurrentqueue.h diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/moody/concurrentqueue.h b/barretenberg/cpp/src/barretenberg/common/moody/concurrentqueue.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/moody/concurrentqueue.h rename to barretenberg/cpp/src/barretenberg/common/moody/concurrentqueue.h diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/moody/lightweightsemaphore.h b/barretenberg/cpp/src/barretenberg/common/moody/lightweightsemaphore.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/moody/lightweightsemaphore.h rename to barretenberg/cpp/src/barretenberg/common/moody/lightweightsemaphore.h diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/net.hpp b/barretenberg/cpp/src/barretenberg/common/net.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/net.hpp rename to barretenberg/cpp/src/barretenberg/common/net.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_atomic_pool.cpp b/barretenberg/cpp/src/barretenberg/common/parallel_for_atomic_pool.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_atomic_pool.cpp rename to barretenberg/cpp/src/barretenberg/common/parallel_for_atomic_pool.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_moody.cpp b/barretenberg/cpp/src/barretenberg/common/parallel_for_moody.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_moody.cpp rename to barretenberg/cpp/src/barretenberg/common/parallel_for_moody.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp b/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp rename to barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_omp.cpp b/barretenberg/cpp/src/barretenberg/common/parallel_for_omp.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_omp.cpp rename to barretenberg/cpp/src/barretenberg/common/parallel_for_omp.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_queued.cpp b/barretenberg/cpp/src/barretenberg/common/parallel_for_queued.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_queued.cpp rename to barretenberg/cpp/src/barretenberg/common/parallel_for_queued.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_spawning.cpp b/barretenberg/cpp/src/barretenberg/common/parallel_for_spawning.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/parallel_for_spawning.cpp rename to barretenberg/cpp/src/barretenberg/common/parallel_for_spawning.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/printf.hpp b/barretenberg/cpp/src/barretenberg/common/printf.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/printf.hpp rename to barretenberg/cpp/src/barretenberg/common/printf.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/serialize.hpp b/barretenberg/cpp/src/barretenberg/common/serialize.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/serialize.hpp rename to barretenberg/cpp/src/barretenberg/common/serialize.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/slab_allocator.cpp b/barretenberg/cpp/src/barretenberg/common/slab_allocator.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/slab_allocator.cpp rename to barretenberg/cpp/src/barretenberg/common/slab_allocator.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/slab_allocator.hpp b/barretenberg/cpp/src/barretenberg/common/slab_allocator.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/slab_allocator.hpp rename to barretenberg/cpp/src/barretenberg/common/slab_allocator.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/streams.hpp b/barretenberg/cpp/src/barretenberg/common/streams.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/streams.hpp rename to barretenberg/cpp/src/barretenberg/common/streams.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/test.hpp b/barretenberg/cpp/src/barretenberg/common/test.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/test.hpp rename to barretenberg/cpp/src/barretenberg/common/test.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/thread.cpp b/barretenberg/cpp/src/barretenberg/common/thread.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/thread.cpp rename to barretenberg/cpp/src/barretenberg/common/thread.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/thread.hpp b/barretenberg/cpp/src/barretenberg/common/thread.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/thread.hpp rename to barretenberg/cpp/src/barretenberg/common/thread.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/throw_or_abort.hpp b/barretenberg/cpp/src/barretenberg/common/throw_or_abort.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/throw_or_abort.hpp rename to barretenberg/cpp/src/barretenberg/common/throw_or_abort.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/timer.hpp b/barretenberg/cpp/src/barretenberg/common/timer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/timer.hpp rename to barretenberg/cpp/src/barretenberg/common/timer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/common/wasm_export.hpp b/barretenberg/cpp/src/barretenberg/common/wasm_export.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/common/wasm_export.hpp rename to barretenberg/cpp/src/barretenberg/common/wasm_export.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/aes128/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/aes128/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/aes128/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/aes128/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.cpp b/barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.cpp rename to barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.hpp b/barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.hpp rename to barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/aes128/aes128.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/aes128/c_bind.cpp b/barretenberg/cpp/src/barretenberg/crypto/aes128/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/aes128/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/crypto/aes128/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/blake2s/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/blake2s/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2-impl.hpp b/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2-impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2-impl.hpp rename to barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2-impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.cpp b/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.cpp rename to barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.hpp b/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.hpp rename to barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/blake2s/blake2s.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/c_bind.cpp b/barretenberg/cpp/src/barretenberg/crypto/blake2s/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/crypto/blake2s/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/c_bind.hpp b/barretenberg/cpp/src/barretenberg/crypto/blake2s/c_bind.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake2s/c_bind.hpp rename to barretenberg/cpp/src/barretenberg/crypto/blake2s/c_bind.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/blake3s/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/blake3s/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3-impl.hpp b/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3-impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3-impl.hpp rename to barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3-impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.cpp b/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.cpp rename to barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.hpp b/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.hpp rename to barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/blake3s/blake3s.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/c_bind.cpp b/barretenberg/cpp/src/barretenberg/crypto/blake3s/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/crypto/blake3s/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/blake3s_full/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3-impl.hpp b/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3-impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3-impl.hpp rename to barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3-impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.cpp b/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.cpp rename to barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.hpp b/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.hpp rename to barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/blake3s_full/blake3s.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/ecdsa/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/ecdsa/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.cpp b/barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.h b/barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.h rename to barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.h diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa.hpp b/barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa.hpp rename to barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa_impl.hpp b/barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa_impl.hpp rename to barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/generators/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/generators/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/generators/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/generators/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/generators/fixed_base_scalar_mul.hpp b/barretenberg/cpp/src/barretenberg/crypto/generators/fixed_base_scalar_mul.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/generators/fixed_base_scalar_mul.hpp rename to barretenberg/cpp/src/barretenberg/crypto/generators/fixed_base_scalar_mul.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.cpp b/barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.cpp rename to barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.hpp b/barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.hpp rename to barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/generators/generator_data.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/hashers/hashers.hpp b/barretenberg/cpp/src/barretenberg/crypto/hashers/hashers.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/hashers/hashers.hpp rename to barretenberg/cpp/src/barretenberg/crypto/hashers/hashers.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/hmac/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/hmac/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/hmac/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/hmac/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/hmac/hmac.hpp b/barretenberg/cpp/src/barretenberg/crypto/hmac/hmac.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/hmac/hmac.hpp rename to barretenberg/cpp/src/barretenberg/crypto/hmac/hmac.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/hmac/hmac.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/hmac/hmac.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/hmac/hmac.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/hmac/hmac.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/keccak/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/keccak/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/keccak/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/keccak/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/keccak/hash_types.hpp b/barretenberg/cpp/src/barretenberg/crypto/keccak/hash_types.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/keccak/hash_types.hpp rename to barretenberg/cpp/src/barretenberg/crypto/keccak/hash_types.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/keccak/keccak.cpp b/barretenberg/cpp/src/barretenberg/crypto/keccak/keccak.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/keccak/keccak.cpp rename to barretenberg/cpp/src/barretenberg/crypto/keccak/keccak.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/keccak/keccak.hpp b/barretenberg/cpp/src/barretenberg/crypto/keccak/keccak.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/keccak/keccak.hpp rename to barretenberg/cpp/src/barretenberg/crypto/keccak/keccak.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/keccak/keccakf1600.cpp b/barretenberg/cpp/src/barretenberg/crypto/keccak/keccakf1600.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/keccak/keccakf1600.cpp rename to barretenberg/cpp/src/barretenberg/crypto/keccak/keccakf1600.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind.cpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind.hpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind.hpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind_new.cpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind_new.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind_new.cpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind_new.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind_new.hpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind_new.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind_new.hpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind_new.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/convert_buffer_to_field.hpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/convert_buffer_to_field.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/convert_buffer_to_field.hpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/convert_buffer_to_field.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen.cpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen.cpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen.hpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen.hpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.cpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.cpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.hpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.hpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind.cpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind.hpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind.hpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind_new.cpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind_new.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind_new.cpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/c_bind_new.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen.cpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen.cpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen.hpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen.hpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.hpp b/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.hpp rename to barretenberg/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/schnorr/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind.cpp b/barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind.hpp b/barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind.hpp rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind_new.cpp b/barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind_new.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind_new.cpp rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/c_bind_new.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/multisig.hpp b/barretenberg/cpp/src/barretenberg/crypto/schnorr/multisig.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/multisig.hpp rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/multisig.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/multisig.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/schnorr/multisig.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/multisig.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/multisig.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/proof_of_possession.hpp b/barretenberg/cpp/src/barretenberg/crypto/schnorr/proof_of_possession.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/proof_of_possession.hpp rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/proof_of_possession.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/proof_of_possession.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/schnorr/proof_of_possession.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/proof_of_possession.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/proof_of_possession.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.hpp b/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.hpp rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.tcc b/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.tcc similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.tcc rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.tcc diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/sha256/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/crypto/sha256/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/sha256/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/crypto/sha256/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/sha256/c_bind.cpp b/barretenberg/cpp/src/barretenberg/crypto/sha256/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/sha256/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/crypto/sha256/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.cpp b/barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.cpp rename to barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.hpp b/barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.hpp rename to barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.test.cpp rename to barretenberg/cpp/src/barretenberg/crypto/sha256/sha256.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/dsl/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/dsl/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.test.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_to_constraint_buf.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_to_constraint_buf.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_to_constraint_buf.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_to_constraint_buf.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.test.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.test.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/hash_to_field.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/hash_to_field.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/hash_to_field.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/hash_to_field.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/hash_to_field.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/hash_to_field.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/hash_to_field.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/hash_to_field.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/pedersen.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/pedersen.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/pedersen.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/pedersen.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/pedersen.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/pedersen.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/pedersen.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/pedersen.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/range_constraint.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/range_constraint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/range_constraint.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/range_constraint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/round.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/round.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/round.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/round.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/round.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/round.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/round.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/round.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/binary.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/binary.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/binary.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/binary.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/bincode.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/bincode.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/bincode.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/bincode.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/index.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/index.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/serde.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/serde.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/serde.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/serde.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/witness_map.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/witness_map.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/witness_map.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/witness_map.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp rename to barretenberg/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/types.hpp b/barretenberg/cpp/src/barretenberg/dsl/types.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/types.hpp rename to barretenberg/cpp/src/barretenberg/dsl/types.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/ecc/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/ecc/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/bn254.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/bn254.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/bn254.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/bn254.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq12.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq12.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq12.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq12.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq12.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq12.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq12.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq12.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq2.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq2.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq2.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq2.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq2.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq2.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq2.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq2.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq6.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq6.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq6.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq6.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq6.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq6.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq6.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fq6.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.bench.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.bench.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g1.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g1.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g1.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g1.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g1.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g1.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g2.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g2.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g2.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g2.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g2.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g2.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g2.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/g2.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing_impl.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing_impl.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/bn254/pairing_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/c_bind.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1_endo_notes.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1_endo_notes.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1_endo_notes.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1_endo_notes.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/types.hpp b/barretenberg/cpp/src/barretenberg/ecc/curves/types.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/curves/types.hpp rename to barretenberg/cpp/src/barretenberg/ecc/curves/types.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/asm_macros.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/asm_macros.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/asm_macros.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/asm_macros.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/extra_flag_solver.py b/barretenberg/cpp/src/barretenberg/ecc/fields/extra_flag_solver.py similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/extra_flag_solver.py rename to barretenberg/cpp/src/barretenberg/ecc/fields/extra_flag_solver.py diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/field.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field12.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field12.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field12.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/field12.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field2.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field2.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field2.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/field2.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field2_declarations.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field2_declarations.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field2_declarations.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/field2_declarations.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field6.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field6.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field6.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/field6.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field_declarations.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field_declarations.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field_declarations.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/field_declarations.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field_impl.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field_impl.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/field_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field_impl_generic.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field_impl_generic.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field_impl_generic.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/field_impl_generic.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field_impl_x64.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field_impl_x64.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/field_impl_x64.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/field_impl_x64.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/macro_scrapbook.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/macro_scrapbook.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/fields/macro_scrapbook.hpp rename to barretenberg/cpp/src/barretenberg/ecc/fields/macro_scrapbook.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.hpp rename to barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp rename to barretenberg/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/element.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/element.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/element.hpp rename to barretenberg/cpp/src/barretenberg/ecc/groups/element.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp rename to barretenberg/cpp/src/barretenberg/ecc/groups/element_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/group.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/group.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/group.hpp rename to barretenberg/cpp/src/barretenberg/ecc/groups/group.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/group_impl_asm.tcc b/barretenberg/cpp/src/barretenberg/ecc/groups/group_impl_asm.tcc similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/group_impl_asm.tcc rename to barretenberg/cpp/src/barretenberg/ecc/groups/group_impl_asm.tcc diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/group_impl_int128.tcc b/barretenberg/cpp/src/barretenberg/ecc/groups/group_impl_int128.tcc similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/group_impl_int128.tcc rename to barretenberg/cpp/src/barretenberg/ecc/groups/group_impl_int128.tcc diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/wnaf.hpp b/barretenberg/cpp/src/barretenberg/ecc/groups/wnaf.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/wnaf.hpp rename to barretenberg/cpp/src/barretenberg/ecc/groups/wnaf.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/wnaf.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/groups/wnaf.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/groups/wnaf.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/groups/wnaf.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/pippenger.md b/barretenberg/cpp/src/barretenberg/ecc/pippenger.md similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/pippenger.md rename to barretenberg/cpp/src/barretenberg/ecc/pippenger.md diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/point_table.hpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/point_table.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/point_table.hpp rename to barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/point_table.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/process_buckets.cpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/process_buckets.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/process_buckets.cpp rename to barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/process_buckets.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/process_buckets.hpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/process_buckets.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/process_buckets.hpp rename to barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/process_buckets.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/runtime_states.cpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/runtime_states.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/runtime_states.cpp rename to barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/runtime_states.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/runtime_states.hpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/runtime_states.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/runtime_states.hpp rename to barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/runtime_states.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp rename to barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp rename to barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/serialize.test.cpp b/barretenberg/cpp/src/barretenberg/ecc/serialize.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/ecc/serialize.test.cpp rename to barretenberg/cpp/src/barretenberg/ecc/serialize.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/env/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/env/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/env/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/env/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/env/data_store.cpp b/barretenberg/cpp/src/barretenberg/env/data_store.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/env/data_store.cpp rename to barretenberg/cpp/src/barretenberg/env/data_store.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/env/data_store.hpp b/barretenberg/cpp/src/barretenberg/env/data_store.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/env/data_store.hpp rename to barretenberg/cpp/src/barretenberg/env/data_store.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/env/hardware_concurrency.cpp b/barretenberg/cpp/src/barretenberg/env/hardware_concurrency.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/env/hardware_concurrency.cpp rename to barretenberg/cpp/src/barretenberg/env/hardware_concurrency.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/env/hardware_concurrency.hpp b/barretenberg/cpp/src/barretenberg/env/hardware_concurrency.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/env/hardware_concurrency.hpp rename to barretenberg/cpp/src/barretenberg/env/hardware_concurrency.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/env/logstr.cpp b/barretenberg/cpp/src/barretenberg/env/logstr.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/env/logstr.cpp rename to barretenberg/cpp/src/barretenberg/env/logstr.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/env/logstr.hpp b/barretenberg/cpp/src/barretenberg/env/logstr.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/env/logstr.hpp rename to barretenberg/cpp/src/barretenberg/env/logstr.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/examples/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/examples/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/examples/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/examples/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/examples/c_bind.cpp b/barretenberg/cpp/src/barretenberg/examples/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/examples/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/examples/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/examples/c_bind.hpp b/barretenberg/cpp/src/barretenberg/examples/c_bind.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/examples/c_bind.hpp rename to barretenberg/cpp/src/barretenberg/examples/c_bind.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/examples/simple/simple.cpp b/barretenberg/cpp/src/barretenberg/examples/simple/simple.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/examples/simple/simple.cpp rename to barretenberg/cpp/src/barretenberg/examples/simple/simple.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/examples/simple/simple.hpp b/barretenberg/cpp/src/barretenberg/examples/simple/simple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/examples/simple/simple.hpp rename to barretenberg/cpp/src/barretenberg/examples/simple/simple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/examples/simple/simple.test.cpp b/barretenberg/cpp/src/barretenberg/examples/simple/simple.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/examples/simple/simple.test.cpp rename to barretenberg/cpp/src/barretenberg/examples/simple/simple.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/grumpkin_srs_gen/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/grumpkin_srs_gen/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/grumpkin_srs_gen/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/grumpkin_srs_gen/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/grumpkin_srs_gen/grumpkin_srs_gen.cpp b/barretenberg/cpp/src/barretenberg/grumpkin_srs_gen/grumpkin_srs_gen.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/grumpkin_srs_gen/grumpkin_srs_gen.cpp rename to barretenberg/cpp/src/barretenberg/grumpkin_srs_gen/grumpkin_srs_gen.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/honk/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/honk/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/goblin_ultra_composer.test.cpp b/barretenberg/cpp/src/barretenberg/honk/composer/goblin_ultra_composer.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/goblin_ultra_composer.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/composer/goblin_ultra_composer.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.cpp b/barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.cpp rename to barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.hpp b/barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.hpp rename to barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.test.cpp b/barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/composer/standard_composer.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.cpp b/barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.cpp rename to barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.hpp b/barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.hpp rename to barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.test.cpp b/barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/composer/ultra_composer.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/flavor.test.cpp b/barretenberg/cpp/src/barretenberg/honk/flavor/flavor.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/flavor.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/flavor/flavor.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/goblin_ultra.hpp b/barretenberg/cpp/src/barretenberg/honk/flavor/goblin_ultra.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/goblin_ultra.hpp rename to barretenberg/cpp/src/barretenberg/honk/flavor/goblin_ultra.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/standard.hpp b/barretenberg/cpp/src/barretenberg/honk/flavor/standard.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/standard.hpp rename to barretenberg/cpp/src/barretenberg/honk/flavor/standard.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/standard_grumpkin.hpp b/barretenberg/cpp/src/barretenberg/honk/flavor/standard_grumpkin.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/standard_grumpkin.hpp rename to barretenberg/cpp/src/barretenberg/honk/flavor/standard_grumpkin.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/ultra.hpp b/barretenberg/cpp/src/barretenberg/honk/flavor/ultra.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/ultra.hpp rename to barretenberg/cpp/src/barretenberg/honk/flavor/ultra.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/ultra_grumpkin.hpp b/barretenberg/cpp/src/barretenberg/honk/flavor/ultra_grumpkin.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/ultra_grumpkin.hpp rename to barretenberg/cpp/src/barretenberg/honk/flavor/ultra_grumpkin.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/ultra_recursive.hpp b/barretenberg/cpp/src/barretenberg/honk/flavor/ultra_recursive.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/flavor/ultra_recursive.hpp rename to barretenberg/cpp/src/barretenberg/honk/flavor/ultra_recursive.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/claim.hpp b/barretenberg/cpp/src/barretenberg/honk/pcs/claim.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/claim.hpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/claim.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/commitment_key.hpp b/barretenberg/cpp/src/barretenberg/honk/pcs/commitment_key.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/commitment_key.hpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/commitment_key.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/commitment_key.test.hpp b/barretenberg/cpp/src/barretenberg/honk/pcs/commitment_key.test.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/commitment_key.test.hpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/commitment_key.test.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.cpp b/barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.cpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.hpp b/barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.hpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.test.cpp b/barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/gemini/gemini.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/ipa/ipa.hpp b/barretenberg/cpp/src/barretenberg/honk/pcs/ipa/ipa.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/ipa/ipa.hpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/ipa/ipa.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/ipa/ipa.test.cpp b/barretenberg/cpp/src/barretenberg/honk/pcs/ipa/ipa.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/ipa/ipa.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/ipa/ipa.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/kzg/kzg.hpp b/barretenberg/cpp/src/barretenberg/honk/pcs/kzg/kzg.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/kzg/kzg.hpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/kzg/kzg.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/kzg/kzg.test.cpp b/barretenberg/cpp/src/barretenberg/honk/pcs/kzg/kzg.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/kzg/kzg.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/kzg/kzg.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/shplonk/shplonk.hpp b/barretenberg/cpp/src/barretenberg/honk/pcs/shplonk/shplonk.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/shplonk/shplonk.hpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/shplonk/shplonk.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/shplonk/shplonk.test.cpp b/barretenberg/cpp/src/barretenberg/honk/pcs/shplonk/shplonk.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/shplonk/shplonk.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/shplonk/shplonk.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/verification_key.hpp b/barretenberg/cpp/src/barretenberg/honk/pcs/verification_key.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/verification_key.hpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/verification_key.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/wrapper.hpp b/barretenberg/cpp/src/barretenberg/honk/pcs/wrapper.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/pcs/wrapper.hpp rename to barretenberg/cpp/src/barretenberg/honk/pcs/wrapper.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/composer_lib.hpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/composer_lib.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/composer_lib.hpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/composer_lib.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/grand_product_library.hpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/grand_product_library.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/grand_product_library.hpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/grand_product_library.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/prover.cpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/prover.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/prover.cpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/prover.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/prover.hpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/prover.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/prover.hpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/prover.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.cpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.cpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.hpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.hpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.test.cpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/prover_library.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_prover.cpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_prover.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_prover.cpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_prover.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_prover.hpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_prover.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_prover.hpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_prover.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_verifier.cpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_verifier.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_verifier.cpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_verifier.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_verifier.hpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_verifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_verifier.hpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/ultra_verifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/verifier.cpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/verifier.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/verifier.cpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/verifier.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/verifier.hpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/verifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/verifier.hpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/verifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/work_queue.hpp b/barretenberg/cpp/src/barretenberg/honk/proof_system/work_queue.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/proof_system/work_queue.hpp rename to barretenberg/cpp/src/barretenberg/honk/proof_system/work_queue.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/partial_evaluation.test.cpp b/barretenberg/cpp/src/barretenberg/honk/sumcheck/partial_evaluation.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/partial_evaluation.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/sumcheck/partial_evaluation.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/relation_correctness.test.cpp b/barretenberg/cpp/src/barretenberg/honk/sumcheck/relation_correctness.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/relation_correctness.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/sumcheck/relation_correctness.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck.hpp b/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck.hpp rename to barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck.test.cpp b/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_output.hpp b/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_output.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_output.hpp rename to barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_output.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_round.hpp b/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_round.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_round.hpp rename to barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_round.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_round.test.cpp b/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_round.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_round.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/sumcheck/sumcheck_round.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/transcript/transcript.hpp b/barretenberg/cpp/src/barretenberg/honk/transcript/transcript.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/transcript/transcript.hpp rename to barretenberg/cpp/src/barretenberg/honk/transcript/transcript.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/transcript/transcript.test.cpp b/barretenberg/cpp/src/barretenberg/honk/transcript/transcript.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/transcript/transcript.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/transcript/transcript.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/utils/grand_product_delta.hpp b/barretenberg/cpp/src/barretenberg/honk/utils/grand_product_delta.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/utils/grand_product_delta.hpp rename to barretenberg/cpp/src/barretenberg/honk/utils/grand_product_delta.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/utils/power_polynomial.hpp b/barretenberg/cpp/src/barretenberg/honk/utils/power_polynomial.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/utils/power_polynomial.hpp rename to barretenberg/cpp/src/barretenberg/honk/utils/power_polynomial.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/honk/utils/power_polynomial.test.cpp b/barretenberg/cpp/src/barretenberg/honk/utils/power_polynomial.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/honk/utils/power_polynomial.test.cpp rename to barretenberg/cpp/src/barretenberg/honk/utils/power_polynomial.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/join_split_example/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/join_split_example/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/constants.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/constants.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/constants.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/constants.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/fixtures/user_context.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/fixtures/user_context.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/fixtures/user_context.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/fixtures/user_context.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/compute_circuit_data.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/compute_circuit_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/compute_circuit_data.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/compute_circuit_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.test.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.test.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.h b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.h rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.h diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_circuit_data.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_circuit_data.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_circuit_data.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_circuit_data.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_circuit_data.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_circuit_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_circuit_data.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_circuit_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_signing_data.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_signing_data.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_signing_data.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_signing_data.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_signing_data.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_signing_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_signing_data.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_signing_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/create_proof.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/create_proof.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/create_proof.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/create_proof.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/index.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/index.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.test.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.test.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_circuit.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_circuit.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_circuit.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_circuit.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_circuit.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_circuit.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_circuit.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_circuit.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_js_parity.test.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_js_parity.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_js_parity.test.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_js_parity.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.test.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.test.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/sign_join_split_tx.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/sign_join_split_tx.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/sign_join_split_tx.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/sign_join_split_tx.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/sign_join_split_tx.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/sign_join_split_tx.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/sign_join_split_tx.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/sign_join_split_tx.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/verify_signature.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/verify_signature.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/verify_signature.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/join_split/verify_signature.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/mock_circuit.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/mock_circuit.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/mock_circuit.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/mock_circuit.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/mock_circuit.test.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/mock_circuit.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/mock_circuit.test.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/mock/mock_circuit.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/account_note.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/account_note.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/account_note.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/account_note.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/commit.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/commit.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/commit.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/commit.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/index.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/index.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/asset_id.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/asset_id.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/asset_id.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/asset_id.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/asset_id.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/asset_id.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/asset_id.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/asset_id.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/bridge_call_data.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/bridge_call_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/bridge_call_data.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/bridge_call_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/claim_note.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/claim_note.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/claim_note.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/claim_note.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/complete_partial_commitment.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/complete_partial_commitment.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/complete_partial_commitment.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/complete_partial_commitment.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/compute_nullifier.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/compute_nullifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/compute_nullifier.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/compute_nullifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/create_partial_commitment.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/create_partial_commitment.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/create_partial_commitment.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/create_partial_commitment.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/index.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/index.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/witness_data.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/witness_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/witness_data.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/witness_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/index.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/index.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/commit.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/commit.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/commit.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/commit.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/complete_partial_commitment.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/complete_partial_commitment.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/complete_partial_commitment.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/complete_partial_commitment.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.test.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.test.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/create_partial_commitment.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/create_partial_commitment.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/create_partial_commitment.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/create_partial_commitment.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/index.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/index.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/value_note.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/value_note.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/value_note.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/value_note.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/value_note.test.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/value_note.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/value_note.test.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/value_note.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/witness_data.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/witness_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/witness_data.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/witness_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/constants.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/constants.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/constants.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/constants.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/account_note.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/account_note.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/account_note.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/account_note.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/account_note.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/account_note.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/account_note.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/account_note.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/compute_account_alias_hash_nullifier.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/compute_account_alias_hash_nullifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/compute_account_alias_hash_nullifier.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/compute_account_alias_hash_nullifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/compute_account_public_key_nullifier.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/compute_account_public_key_nullifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/compute_account_public_key_nullifier.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/compute_account_public_key_nullifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/index.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/index.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/asset_id.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/asset_id.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/asset_id.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/asset_id.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/asset_id.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/asset_id.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/asset_id.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/asset_id.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/bridge_call_data.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/bridge_call_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/bridge_call_data.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/bridge_call_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/claim_note.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/claim_note.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/claim_note.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/claim_note.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/claim_note_tx_data.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/claim_note_tx_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/claim_note_tx_data.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/claim_note_tx_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/complete_partial_commitment.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/complete_partial_commitment.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/complete_partial_commitment.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/complete_partial_commitment.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/compute_nullifier.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/compute_nullifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/compute_nullifier.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/compute_nullifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/create_partial_commitment.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/create_partial_commitment.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/create_partial_commitment.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/create_partial_commitment.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/index.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/index.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/index.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/index.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/complete_partial_commitment.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/complete_partial_commitment.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/complete_partial_commitment.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/complete_partial_commitment.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/compute_nullifier.cpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/compute_nullifier.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/compute_nullifier.cpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/compute_nullifier.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/compute_nullifier.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/compute_nullifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/compute_nullifier.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/compute_nullifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/create_partial_commitment.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/create_partial_commitment.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/create_partial_commitment.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/create_partial_commitment.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/index.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/index.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/value_note.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/value_note.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/value_note.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/value_note.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/verify.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/proofs/verify.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/proofs/verify.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/proofs/verify.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/types.hpp b/barretenberg/cpp/src/barretenberg/join_split_example/types.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/join_split_example/types.hpp rename to barretenberg/cpp/src/barretenberg/join_split_example/types.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/numeric/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/numeric/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/bitop.bench.cpp b/barretenberg/cpp/src/barretenberg/numeric/bitop/bitop.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/bitop.bench.cpp rename to barretenberg/cpp/src/barretenberg/numeric/bitop/bitop.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/count_leading_zeros.hpp b/barretenberg/cpp/src/barretenberg/numeric/bitop/count_leading_zeros.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/count_leading_zeros.hpp rename to barretenberg/cpp/src/barretenberg/numeric/bitop/count_leading_zeros.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/count_leading_zeros.test.cpp b/barretenberg/cpp/src/barretenberg/numeric/bitop/count_leading_zeros.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/count_leading_zeros.test.cpp rename to barretenberg/cpp/src/barretenberg/numeric/bitop/count_leading_zeros.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/get_msb.hpp b/barretenberg/cpp/src/barretenberg/numeric/bitop/get_msb.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/get_msb.hpp rename to barretenberg/cpp/src/barretenberg/numeric/bitop/get_msb.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/get_msb.test.cpp b/barretenberg/cpp/src/barretenberg/numeric/bitop/get_msb.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/get_msb.test.cpp rename to barretenberg/cpp/src/barretenberg/numeric/bitop/get_msb.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/keep_n_lsb.hpp b/barretenberg/cpp/src/barretenberg/numeric/bitop/keep_n_lsb.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/keep_n_lsb.hpp rename to barretenberg/cpp/src/barretenberg/numeric/bitop/keep_n_lsb.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/pow.hpp b/barretenberg/cpp/src/barretenberg/numeric/bitop/pow.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/pow.hpp rename to barretenberg/cpp/src/barretenberg/numeric/bitop/pow.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/rotate.hpp b/barretenberg/cpp/src/barretenberg/numeric/bitop/rotate.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/rotate.hpp rename to barretenberg/cpp/src/barretenberg/numeric/bitop/rotate.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/sparse_form.hpp b/barretenberg/cpp/src/barretenberg/numeric/bitop/sparse_form.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/bitop/sparse_form.hpp rename to barretenberg/cpp/src/barretenberg/numeric/bitop/sparse_form.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/random/engine.cpp b/barretenberg/cpp/src/barretenberg/numeric/random/engine.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/random/engine.cpp rename to barretenberg/cpp/src/barretenberg/numeric/random/engine.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/random/engine.hpp b/barretenberg/cpp/src/barretenberg/numeric/random/engine.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/random/engine.hpp rename to barretenberg/cpp/src/barretenberg/numeric/random/engine.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/random/engine.test.cpp b/barretenberg/cpp/src/barretenberg/numeric/random/engine.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/random/engine.test.cpp rename to barretenberg/cpp/src/barretenberg/numeric/random/engine.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint128/uint128.hpp b/barretenberg/cpp/src/barretenberg/numeric/uint128/uint128.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint128/uint128.hpp rename to barretenberg/cpp/src/barretenberg/numeric/uint128/uint128.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint128/uint128.test.cpp b/barretenberg/cpp/src/barretenberg/numeric/uint128/uint128.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint128/uint128.test.cpp rename to barretenberg/cpp/src/barretenberg/numeric/uint128/uint128.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint128/uint128_impl.hpp b/barretenberg/cpp/src/barretenberg/numeric/uint128/uint128_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint128/uint128_impl.hpp rename to barretenberg/cpp/src/barretenberg/numeric/uint128/uint128_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint256/uint256.hpp b/barretenberg/cpp/src/barretenberg/numeric/uint256/uint256.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint256/uint256.hpp rename to barretenberg/cpp/src/barretenberg/numeric/uint256/uint256.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint256/uint256.test.cpp b/barretenberg/cpp/src/barretenberg/numeric/uint256/uint256.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint256/uint256.test.cpp rename to barretenberg/cpp/src/barretenberg/numeric/uint256/uint256.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint256/uint256_impl.hpp b/barretenberg/cpp/src/barretenberg/numeric/uint256/uint256_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uint256/uint256_impl.hpp rename to barretenberg/cpp/src/barretenberg/numeric/uint256/uint256_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uintx/uintx.hpp b/barretenberg/cpp/src/barretenberg/numeric/uintx/uintx.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uintx/uintx.hpp rename to barretenberg/cpp/src/barretenberg/numeric/uintx/uintx.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uintx/uintx.test.cpp b/barretenberg/cpp/src/barretenberg/numeric/uintx/uintx.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uintx/uintx.test.cpp rename to barretenberg/cpp/src/barretenberg/numeric/uintx/uintx.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uintx/uintx_impl.hpp b/barretenberg/cpp/src/barretenberg/numeric/uintx/uintx_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/numeric/uintx/uintx_impl.hpp rename to barretenberg/cpp/src/barretenberg/numeric/uintx/uintx_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/plonk/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/plonk/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.cpp b/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.cpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp b/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/composer_lib.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.cpp b/barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.cpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.hpp b/barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.hpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.test.cpp b/barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.test.cpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/standard_composer.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.cpp b/barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.cpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.hpp b/barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.hpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.test.cpp b/barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.test.cpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/turbo_composer.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp b/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.hpp b/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.hpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.test.cpp b/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.test.cpp rename to barretenberg/cpp/src/barretenberg/plonk/composer/ultra_composer.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/flavor/flavor.hpp b/barretenberg/cpp/src/barretenberg/plonk/flavor/flavor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/flavor/flavor.hpp rename to barretenberg/cpp/src/barretenberg/plonk/flavor/flavor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/commitment_scheme.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/commitment_scheme.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/commitment_scheme.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/commitment_scheme.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/commitment_scheme.test.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/commitment_scheme.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/commitment_scheme.test.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/commitment_scheme.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/kate_commitment_scheme.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/kate_commitment_scheme.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/kate_commitment_scheme.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/kate_commitment_scheme.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/kate_commitment_scheme.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/kate_commitment_scheme.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/kate_commitment_scheme.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/kate_commitment_scheme.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/constants.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/constants.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/constants.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/constants.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/c_bind.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.test.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.test.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/prover/prover.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.test.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.test.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/serialize.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/serialize.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/serialize.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/serialize.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs.test.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs.test.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs_impl.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs_impl.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/commitment_open_proof.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/commitment_open_proof.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/commitment_open_proof.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/types/commitment_open_proof.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/polynomial_manifest.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/polynomial_manifest.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/polynomial_manifest.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/types/polynomial_manifest.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/program_settings.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/program_settings.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/program_settings.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/types/program_settings.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/proof.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/proof.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/proof.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/types/proof.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/prover_settings.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/prover_settings.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/types/prover_settings.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/types/prover_settings.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/generalized_permutation.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/generalized_permutation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/generalized_permutation.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/generalized_permutation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/kate_verification.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/kate_verification.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/kate_verification.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/kate_verification.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/permutation.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/permutation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/permutation.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/utils/permutation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/sol_gen.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/sol_gen.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/sol_gen.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/sol_gen.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.test.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.test.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.test.cpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/permutation_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/permutation_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/permutation_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/permutation_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/permutation_widget_impl.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/permutation_widget_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/permutation_widget_impl.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/permutation_widget_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/plookup_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/plookup_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/plookup_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/plookup_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/plookup_widget_impl.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/plookup_widget_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/plookup_widget_impl.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/plookup_widget_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/random_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/random_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/random_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/random_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/arithmetic_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/arithmetic_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/arithmetic_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/arithmetic_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/elliptic_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/elliptic_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/elliptic_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/elliptic_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/fixed_base_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/fixed_base_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/fixed_base_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/fixed_base_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/genperm_sort_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/genperm_sort_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/genperm_sort_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/genperm_sort_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/plookup_arithmetic_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/plookup_arithmetic_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/plookup_arithmetic_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/plookup_arithmetic_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/plookup_auxiliary_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/plookup_auxiliary_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/plookup_auxiliary_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/plookup_auxiliary_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/transition_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/transition_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/transition_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/transition_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_arithmetic_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_arithmetic_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_arithmetic_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_arithmetic_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_logic_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_logic_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_logic_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_logic_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_range_widget.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_range_widget.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_range_widget.hpp rename to barretenberg/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_range_widget.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/polynomials/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/polynomials/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/barycentric.hpp b/barretenberg/cpp/src/barretenberg/polynomials/barycentric.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/barycentric.hpp rename to barretenberg/cpp/src/barretenberg/polynomials/barycentric.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/barycentric.test.cpp b/barretenberg/cpp/src/barretenberg/polynomials/barycentric.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/barycentric.test.cpp rename to barretenberg/cpp/src/barretenberg/polynomials/barycentric.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/evaluation_domain.cpp b/barretenberg/cpp/src/barretenberg/polynomials/evaluation_domain.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/evaluation_domain.cpp rename to barretenberg/cpp/src/barretenberg/polynomials/evaluation_domain.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/evaluation_domain.hpp b/barretenberg/cpp/src/barretenberg/polynomials/evaluation_domain.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/evaluation_domain.hpp rename to barretenberg/cpp/src/barretenberg/polynomials/evaluation_domain.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/iterate_over_domain.hpp b/barretenberg/cpp/src/barretenberg/polynomials/iterate_over_domain.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/iterate_over_domain.hpp rename to barretenberg/cpp/src/barretenberg/polynomials/iterate_over_domain.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomial.cpp b/barretenberg/cpp/src/barretenberg/polynomials/polynomial.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomial.cpp rename to barretenberg/cpp/src/barretenberg/polynomials/polynomial.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp b/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp rename to barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.cpp b/barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.cpp rename to barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.hpp b/barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.hpp rename to barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.test.cpp b/barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.test.cpp rename to barretenberg/cpp/src/barretenberg/polynomials/polynomial_arithmetic.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomials.bench.cpp b/barretenberg/cpp/src/barretenberg/polynomials/polynomials.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/polynomials.bench.cpp rename to barretenberg/cpp/src/barretenberg/polynomials/polynomials.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp b/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/pow.hpp rename to barretenberg/cpp/src/barretenberg/polynomials/pow.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/pow.test.cpp b/barretenberg/cpp/src/barretenberg/polynomials/pow.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/pow.test.cpp rename to barretenberg/cpp/src/barretenberg/polynomials/pow.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/serialize.hpp b/barretenberg/cpp/src/barretenberg/polynomials/serialize.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/serialize.hpp rename to barretenberg/cpp/src/barretenberg/polynomials/serialize.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/univariate.hpp b/barretenberg/cpp/src/barretenberg/polynomials/univariate.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/univariate.hpp rename to barretenberg/cpp/src/barretenberg/polynomials/univariate.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/univariate.test.cpp b/barretenberg/cpp/src/barretenberg/polynomials/univariate.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/polynomials/univariate.test.cpp rename to barretenberg/cpp/src/barretenberg/polynomials/univariate.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/proof_system/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/proof_system/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/arithmetization/arithmetization.hpp b/barretenberg/cpp/src/barretenberg/proof_system/arithmetization/arithmetization.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/arithmetization/arithmetization.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/arithmetization/arithmetization.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/arithmetization/gate_data.hpp b/barretenberg/cpp/src/barretenberg/proof_system/arithmetization/gate_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/arithmetization/gate_data.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/arithmetization/gate_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.hpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.hpp similarity index 89% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.hpp index 4e5e29510d6..5422cca43d3 100644 --- a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.hpp @@ -3,8 +3,11 @@ #include "barretenberg/ecc/curves/bn254/fr.hpp" #include "barretenberg/proof_system/arithmetization/arithmetization.hpp" #include "barretenberg/proof_system/arithmetization/gate_data.hpp" +#include "barretenberg/serialize/cbind.hpp" #include +#include + namespace proof_system { static constexpr uint32_t DUMMY_TAG = 0; @@ -26,6 +29,8 @@ template class CircuitBuilderBase { std::vector public_inputs; std::vector variables; + std::unordered_map variable_names; + // index of next variable in equivalence class (=REAL_VARIABLE if you're last) std::vector next_var_index; // index of previous variable in equivalence class (=FIRST if you're in a cycle alone) @@ -57,6 +62,7 @@ template class CircuitBuilderBase { : selector_names_(std::move(selector_names)) { variables.reserve(size_hint * 3); + variable_names.reserve(size_hint * 3); next_var_index.reserve(size_hint * 3); prev_var_index.reserve(size_hint * 3); real_variable_index.reserve(size_hint * 3); @@ -187,6 +193,99 @@ template class CircuitBuilderBase { real_variable_tags.emplace_back(DUMMY_TAG); return index; } + + /** + * Assign a name to a variable(equivalence class). Should be one name per equivalence class. + * + * @param index Index of the variable you want to name. + * @param name Name of the variable. + * + */ + virtual void set_variable_name(uint32_t index, const std::string& name) + { + ASSERT(variables.size() > index); + uint32_t first_idx = get_first_variable_in_class(index); + + if (variable_names.contains(first_idx)) { + failure("Attempted to assign a name to a variable that already has a name"); + return; + } + variable_names.insert({ first_idx, name }); + } + + /** + * After assert_equal() merge two class names if present. + * Preserves the first name in class. + * + * @param index Index of the variable you have previously named and used in assert_equal. + * + */ + virtual void update_variable_names(uint32_t index) + { + uint32_t first_idx = get_first_variable_in_class(index); + + uint32_t cur_idx = next_var_index[first_idx]; + while (cur_idx != REAL_VARIABLE && !variable_names.contains(cur_idx)) { + cur_idx = next_var_index[cur_idx]; + } + + if (variable_names.contains(first_idx)) { + if (cur_idx != REAL_VARIABLE) { + variable_names.extract(cur_idx); + } + return; + } + + if (cur_idx != REAL_VARIABLE) { + std::string var_name = variable_names.find(cur_idx)->second; + variable_names.erase(cur_idx); + variable_names.insert({ first_idx, var_name }); + return; + } + failure("No previously assigned names found"); + } + + /** + * After finishing the circuit can be called for automatic merging + * all existing collisions. + * + */ + virtual void finalize_variable_names() + { + std::vector keys; + std::vector firsts; + + for (auto& tup : variable_names) { + keys.push_back(tup.first); + firsts.push_back(get_first_variable_in_class(tup.first)); + } + + for (size_t i = 0; i < keys.size() - 1; i++) { + for (size_t j = i + 1; j < keys.size(); i++) { + uint32_t first_idx_a = firsts[i]; + uint32_t first_idx_b = firsts[j]; + if (first_idx_a == first_idx_b) { + std::string substr1 = variable_names[keys[i]]; + std::string substr2 = variable_names[keys[j]]; + failure("Variables from the same equivalence class have separate names: " + substr2 + ", " + + substr2); + update_variable_names(first_idx_b); + } + } + } + } + + /** + * Export the existing circuit as msgpack compatible buffer. + * + * @return msgpack compatible buffer + */ + virtual msgpack::sbuffer export_circuit() + { + info("not implemented"); + return { 0 }; + }; + /** * Add a public variable to variables * diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_mini.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_mini.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_mini.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_mini.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp similarity index 92% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp index 100e4045706..285eed8283c 100644 --- a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp @@ -4,6 +4,9 @@ #include #include +#include "barretenberg/serialize/cbind.hpp" +#include "barretenberg/serialize/msgpack.hpp" + using namespace barretenberg; namespace proof_system { @@ -507,6 +510,55 @@ template bool StandardCircuitBuilder_::check_circuit() } return true; } + +/** + * Export the existing circuit as msgpack compatible buffer. + * + * @return msgpack compatible buffer + */ +template msgpack::sbuffer StandardCircuitBuilder_::export_circuit() +{ + using base = CircuitBuilderBase>; + CircuitSchema cir; + + uint64_t modulus[4] = { + FF::Params::modulus_0, FF::Params::modulus_1, FF::Params::modulus_2, FF::Params::modulus_3 + }; + std::stringstream buf; + buf << std::hex << std::setfill('0') << std::setw(16) << modulus[3] << std::setw(16) << modulus[2] << std::setw(16) + << modulus[1] << std::setw(16) << modulus[0]; + + cir.modulus = buf.str(); + + for (uint32_t i = 0; i < this->get_num_public_inputs(); i++) { + cir.public_inps.push_back(this->real_variable_index[this->public_inputs[i]]); + } + + for (auto& tup : base::variable_names) { + cir.vars_of_interest.insert({ this->real_variable_index[tup.first], tup.second }); + } + + for (auto var : this->variables) { + cir.variables.push_back(var); + } + + for (size_t i = 0; i < this->num_gates; i++) { + std::vector tmp_sel = { q_m[i], q_1[i], q_2[i], q_3[i], q_c[i] }; + std::vector tmp_w = { + this->real_variable_index[w_l[i]], + this->real_variable_index[w_r[i]], + this->real_variable_index[w_o[i]], + }; + cir.selectors.push_back(tmp_sel); + cir.wires.push_back(tmp_w); + } + + msgpack::sbuffer buffer; + msgpack::pack(buffer, cir); + return buffer; +} + template class StandardCircuitBuilder_; template class StandardCircuitBuilder_; + } // namespace proof_system \ No newline at end of file diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp similarity index 92% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp index 2c023001609..9c97bacd9b0 100644 --- a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp @@ -113,6 +113,19 @@ template class StandardCircuitBuilder_ : public CircuitBuilderBase size_t get_num_constant_gates() const override { return 0; } bool check_circuit(); + + msgpack::sbuffer export_circuit() override; + + private: + struct CircuitSchema { + std::string modulus; + std::vector public_inps; + std::unordered_map vars_of_interest; + std::vector variables; + std::vector> selectors; + std::vector> wires; + MSGPACK_FIELDS(modulus, public_inps, vars_of_interest, variables, selectors, wires); + } circuit_schema; }; extern template class StandardCircuitBuilder_; diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.hpp b/barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/composer/composer_lib.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/composer/permutation_lib.hpp b/barretenberg/cpp/src/barretenberg/proof_system/composer/permutation_lib.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/composer/permutation_lib.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/composer/permutation_lib.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/composer/permutation_lib.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/composer/permutation_lib.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/composer/permutation_lib.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/composer/permutation_lib.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/flavor/flavor.hpp b/barretenberg/cpp/src/barretenberg/proof_system/flavor/flavor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/flavor/flavor.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/flavor/flavor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/op_queue/ecc_op_queue.hpp b/barretenberg/cpp/src/barretenberg/proof_system/op_queue/ecc_op_queue.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/op_queue/ecc_op_queue.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/op_queue/ecc_op_queue.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/op_queue/ecc_op_queue.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/op_queue/ecc_op_queue.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/op_queue/ecc_op_queue.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/op_queue/ecc_op_queue.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/aes128.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/aes128.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/aes128.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/aes128.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/blake2s.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/blake2s.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/blake2s.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/blake2s.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/dummy.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/dummy.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/dummy.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/dummy.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_chi.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_chi.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_chi.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_chi.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_input.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_input.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_input.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_input.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_output.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_output.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_output.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_output.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_rho.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_rho.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_rho.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_rho.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_theta.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_theta.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_theta.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_theta.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.cpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/pedersen.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/pedersen.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/pedersen.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/pedersen.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.cpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/sha256.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/sha256.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/sha256.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/sha256.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/sparse.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/sparse.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/sparse.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/sparse.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/types.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/types.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/types.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/types.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/uint.hpp b/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/uint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/uint.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/uint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.cpp b/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.hpp b/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_cache.cpp b/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_cache.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_cache.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_cache.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_cache.hpp b/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_cache.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_cache.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_cache.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_wasm.cpp b/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_wasm.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_wasm.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_wasm.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_wasm.hpp b/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_wasm.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_wasm.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_wasm.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/arithmetic_relation.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/arithmetic_relation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/arithmetic_relation.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/arithmetic_relation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/auxiliary_relation.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/auxiliary_relation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/auxiliary_relation.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/auxiliary_relation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/ecc_op_queue_relation.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/ecc_op_queue_relation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/ecc_op_queue_relation.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/ecc_op_queue_relation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/elliptic_relation.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/elliptic_relation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/elliptic_relation.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/elliptic_relation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/gen_perm_sort_relation.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/gen_perm_sort_relation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/gen_perm_sort_relation.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/gen_perm_sort_relation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/lookup_relation.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/lookup_relation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/lookup_relation.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/lookup_relation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/permutation_relation.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/permutation_relation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/permutation_relation.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/permutation_relation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/relation_parameters.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/relation_parameters.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/relation_parameters.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/relation_parameters.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/relation_types.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/relation_types.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/relation_types.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/relation_types.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/standard_relation_consistency.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/standard_relation_consistency.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/standard_relation_consistency.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/standard_relation_consistency.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/ultra_arithmetic_relation.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/ultra_arithmetic_relation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/ultra_arithmetic_relation.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/ultra_arithmetic_relation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/ultra_relation_consistency.test.cpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/ultra_relation_consistency.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/relations/ultra_relation_consistency.test.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/relations/ultra_relation_consistency.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/types/circuit_type.hpp b/barretenberg/cpp/src/barretenberg/proof_system/types/circuit_type.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/types/circuit_type.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/types/circuit_type.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/types/merkle_hash_type.hpp b/barretenberg/cpp/src/barretenberg/proof_system/types/merkle_hash_type.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/types/merkle_hash_type.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/types/merkle_hash_type.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/types/pedersen_commitment_type.hpp b/barretenberg/cpp/src/barretenberg/proof_system/types/pedersen_commitment_type.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/types/pedersen_commitment_type.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/types/pedersen_commitment_type.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/work_queue/work_queue.cpp b/barretenberg/cpp/src/barretenberg/proof_system/work_queue/work_queue.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/work_queue/work_queue.cpp rename to barretenberg/cpp/src/barretenberg/proof_system/work_queue/work_queue.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/work_queue/work_queue.hpp b/barretenberg/cpp/src/barretenberg/proof_system/work_queue/work_queue.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/proof_system/work_queue/work_queue.hpp rename to barretenberg/cpp/src/barretenberg/proof_system/work_queue/work_queue.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/serialize/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/serialize/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/cbind.hpp b/barretenberg/cpp/src/barretenberg/serialize/cbind.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/cbind.hpp rename to barretenberg/cpp/src/barretenberg/serialize/cbind.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/cbind_fwd.hpp b/barretenberg/cpp/src/barretenberg/serialize/cbind_fwd.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/cbind_fwd.hpp rename to barretenberg/cpp/src/barretenberg/serialize/cbind_fwd.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_apply.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_apply.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_apply.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_apply.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/check_memory_span.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/check_memory_span.hpp similarity index 92% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/check_memory_span.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/check_memory_span.hpp index a9d7abe01ed..deac75683b3 100644 --- a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/check_memory_span.hpp +++ b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/check_memory_span.hpp @@ -59,18 +59,19 @@ template std::string check_memory_span(T* obj, Ar return {}; } -template std::string check_msgpack_method(T& object) +template std::string check_msgpack_method(const T& object) { std::string result; auto checker = [&](auto&... values) { result = check_memory_span(&object, &values...); }; - object.msgpack([&](auto&... keys_and_values) { std::apply(checker, drop_keys(std::tie(keys_and_values...))); }); + const_cast(object).msgpack( // NOLINT + [&](auto&... keys_and_values) { std::apply(checker, drop_keys(std::tie(keys_and_values...))); }); return result; } -void check_msgpack_usage(auto object) +void check_msgpack_usage(const auto& object) { std::string result = check_msgpack_method(object); if (!result.empty()) { throw_or_abort(result); } } -} // namespace msgpack \ No newline at end of file +} // namespace msgpack diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/concepts.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/concepts.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/concepts.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/concepts.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/drop_keys.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/drop_keys.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/drop_keys.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/drop_keys.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/func_traits.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/func_traits.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/func_traits.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/func_traits.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/msgpack_impl.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/msgpack_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/msgpack_impl.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/msgpack_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/name_value_pair_macro.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/name_value_pair_macro.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/name_value_pair_macro.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/name_value_pair_macro.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/schema_impl.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/schema_impl.hpp similarity index 93% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/schema_impl.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/schema_impl.hpp index a17041517c0..758db242bcd 100644 --- a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/schema_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/schema_impl.hpp @@ -66,7 +66,7 @@ struct MsgpackSchemaPacker : msgpack::packer { // Note: if this fails to compile, check first in list of template Arg's // it may need a msgpack_schema_pack specialization (particularly if it doesn't define MSGPACK_FIELDS). - (_msgpack_schema_pack(*this, Args{}), ...); /* pack schemas of all template Args */ + (_msgpack_schema_pack(*this, *std::make_unique()), ...); /* pack schemas of all template Args */ } /** * @brief Encode a type that defines msgpack based on its key value pairs. @@ -108,7 +108,10 @@ concept SchemaPackable = requires(T value, MsgpackSchemaPacker packer) { msgpack // Helper for packing (key, value, key, value, ...) arguments template -inline void _schema_pack_map_content(MsgpackSchemaPacker& packer, std::string key, Value value, Rest... rest) +inline void _schema_pack_map_content(MsgpackSchemaPacker& packer, + std::string key, + const Value& value, + const Rest&... rest) { static_assert( msgpack_concepts::SchemaPackable, @@ -200,7 +203,9 @@ inline void msgpack_schema_pack(MsgpackSchemaPacker& packer, std::array co packer.pack("array"); // That has a size 2 tuple as its 2nd arg packer.pack_array(2); /* param list format for consistency*/ - _msgpack_schema_pack(packer, T{}); + // To avoid WASM problems with large stack objects, we use a heap allocation. + // Small note: This works because make_unique goes of scope only when the whole line is done. + _msgpack_schema_pack(packer, *std::make_unique()); packer.pack(N); } diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/schema_name.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/schema_name.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/schema_name.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/schema_name.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/struct_map_impl.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/struct_map_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/struct_map_impl.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/struct_map_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/variant_impl.hpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/variant_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/variant_impl.hpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_impl/variant_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_schema.test.cpp b/barretenberg/cpp/src/barretenberg/serialize/msgpack_schema.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/msgpack_schema.test.cpp rename to barretenberg/cpp/src/barretenberg/serialize/msgpack_schema.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/raw_pointer.hpp b/barretenberg/cpp/src/barretenberg/serialize/raw_pointer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/raw_pointer.hpp rename to barretenberg/cpp/src/barretenberg/serialize/raw_pointer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/test_helper.hpp b/barretenberg/cpp/src/barretenberg/serialize/test_helper.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/serialize/test_helper.hpp rename to barretenberg/cpp/src/barretenberg/serialize/test_helper.hpp diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/smt_verification/CMakeLists.txt new file mode 100644 index 00000000000..b3fe42c39f5 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/CMakeLists.txt @@ -0,0 +1,2 @@ +#barretenberg_module(smt_verification common ${CMAKE_SOURCE_DIR}/src/cvc5/tmp-lib/lib/libcvc5.so.1) +barretenberg_module(smt_verification common proof_system stdlib_primitives $ENV{HOME}/cvc5/tmp-lib/lib/libcvc5.so.1) \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/README.md b/barretenberg/cpp/src/barretenberg/smt_verification/README.md new file mode 100644 index 00000000000..740b01b1479 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/README.md @@ -0,0 +1,253 @@ +# Building cvc5 + +As for now it's required to build cvc5 library manually. + + + +- inside your home repository do `git clone git@github.com:Sarkoxed/cvc5.git` (temporarily, since they have been merging my patch for a month now) +- inside the cvc5 repo: + - `git checkout finite-field-base-support` + - `./configure.sh production --auto-download --cocoa --cryptominisat -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ --prefix="./tmp-lib"` + - `cd build && make` + - `make install` + +Now you can import it using + +# How to use smt_circuit library + +## 1. Setting variable names during circuit creation and exporting the circuit. + +### There're five new methods inside (for now standard) circuit_builder + +- ```set_variable_name(u32 index, str name)``` - assignes a name to a variable. Specifically, binds a name with the first index of an equivalence class. + +- ```update_variable_names(u32 idx)``` - in case you've called ```assert_equal``` and ```update_real_variable_indices``` somewhere and you know that two or more variables from the equivalence class have separate names, call this method. Idx is the index of one of the variables of this class. The name of the first variable in class will remain. + +- ```finalize_variable_names()``` - in case you don't want to mess with previous method, this one finds all the collisions and removes them. + +- ```export_circuit()``` - exports all variables, gates, and assigned names to an msgpack-compatible buffer namely `msgpack::sbuffer`. + +To store it on the disk just do + +```cpp + msgpack::sbuffer buffer = circuit.export_circuit(); + + std::fstream myfile; + myfile.open("fname.pack", std::ios::out | std::ios::trunc | std::ios::binary); + + myfile.write(buffer.data(), static_cast(buffer.size())); + myfile.close(); +``` + +## 2. Symbolic Circuit initialization and term creation + +1. First you need to import the circuit from the saved file or from the buffer: + + - `smt_circuit::CircuitSchema c_info = smt_circuit::unpack_from_file(str fname);` + + - `smt_circuit::CircuitSchema c_info = smt_circuit::unpack_from_buffer(msgpack::sbuffer buf);` + + +2. Initialize the Solver: + + `smt_solver::Solver s(str modulus, bool produce_model=false, u32 base=16, u64 timeout)` + + !note that there should be no "0x" part in the modulus hex representation if you put it manually. Otherwise you can use `CircuitSchema.modulus` member. + + `produce_model` flag should be initialized as `true` if you want to check the values obtained using the solver when the result of the check does not meet your expectations. **All the public variables will be constrained to be equal their real value**. + + `base` can be any positive integer, it will mostly be 10 or 16, I guess. + + `timeout` solver timeout in milliseconds + +3. Initialize the Circuit + + From now and on we will use `smt_terms::FFTerm`, `smt_term::FFITerm` and `smt_terms::Bool` types to operate inside the solver. + + `FFTerm` - the symbolic value that simulates finite field elements. + + `FFTerm` - the symbolic value that simulates integer elements which behave like finite field ones. Usefull, when you want to create range constraints or perform operations like XOR. + + `Bool` - simulates the boolean values and mostly will be used only to simulate complex `if` statements if needed. + + - ```smt_circuit::Circuit circuit(CircuitSchema c_info, Solver* s, str tag="")``` + - ```smt_circuit::Circuit circuit(CircuitSchema c_info, Solver* s, str tag="")``` + + It will generate all the symbolic values of the circuit wires values, add all the gate constrains, create a map `string->FFTerm` and the inverse of it. + In case you want to create two similar circuits with the same solver and schema, then you should specify the tag(name) of a circuit. + FFTerm/FFITerm templates will define what theory core the solver should use. + + Then you can get the previously named variables via `circuit[name]` or any other variable by `circuit[idx]`. +4. Terms creation + + You are able to create two types of ff terms: + - `FFTerm Var(str name, Solver* s)` - creates a symbolic finite field variable + - `FFTerm Const(str val, Solver* s, u32 base=16)` - creates a numeric value. + + You can add, subtract, multiply and divide these variables(including !+, !-, etc); + Also there are two functions : + - `batch_add(std::vector& terms)` + - `batch_mul(std::vector& terms)` + to create an addition/multiplication Term in one call + + You can create a constraint `==` or `!=` that will be included directly into solver. + + `FFITerm` works the same as `FFTerm`. + + Also there is a Bool type: + - `Bool Bool(FFTerm/FFITerm t)` or `Bool Bool(bool b, Solver* s)` + + You can `|, &, ==, !=` these variables and also `batch_or`, `batch_and` them. + To create a constraint you should call `assert_term` method. + + The way I see the use of Bool types is to create terms like `(a == b && c == 1) || (a != b && c == 0)`, `(a!=1)||(b!=2)|(c!=3)` and of course more sophisticated ones. + + Note! That constraint like `Bool(FFTerm a) == Bool(FFITerm b)` won't work, since their types differ. + Note! `Bool(a == b)` won't work since `a==b` will create an equality constrain as I mentioned earlier and the return type of this operation is `void`. +5. Post model checking + + After generating all the constrains you should call `bool res = solver.check()` and depending on your goal it could be `true` or `false`. + + In case you expected `false` but `true` was returned you can then check what went wrong. + You should generate an unordered map with `str->term` values and ask the solver to obtain `unoredered_map res = solver.model(unordered_map terms)`. + Now you have the values of the specified terms, which resulted into `true` result. + +6. Automated verification of a unique witness + + There's also a function `pair unique_witness(CircuitSchema circuit_info, Solver* s, vector equall_variables, vector nequal_variables, vector at_least_one_equal_variable, vector at_least_one_nequal_variable)` that will create two separate circuits and constrain the provided variables. Then later you can run `s.check()` and `s.model()` if you wish. + +## 3. Simple examples + +### Function Equality +```cpp + StandardCircuitBuilder builder = StandardCircuitBuilder(); + + field_t a(witness_t(&builder, fr::random_element())); + field_t b(witness_t(&builder, fr::random_element())); + field_t c = (a + a) / (b + b + b); + + builder.set_variable_name(a.witness_index, "a"); + builder.set_variable_name(b.witness_index, "b"); + builder.set_variable_name(c.witness_index, "c"); + ASSERT_TRUE(builder.check_circuit()); + + auto buf = builder.export_circuit(); + + smt_circuit::CircuitSchema circuit_info = smt_circuit::unpack_from_buffer(buf); + smt_solver::Solver s(circuit_info.modulus, {true, 0}); + smt_circuit::Circuit circuit(circuit_info, &s); + smt_terms::FFTerm a1 = circuit["a"]; + smt_terms::FFTerm b1 = circuit["b"]; + smt_terms::FFTerm c1 = circuit["c"]; + smt_terms::FFTerm two = smt_terms::FFTerm::Const("2", &s, 10); + smt_terms::FFTerm thr = smt_terms::FFTerm::Const("3", &s, 10); + smt_terms::FFTerm cr = smt_terms::FFTerm::Var("cr", &s); + cr = (two * a1) / (thr * b1); + c1 != cr; + + bool res = s.check(); + ASSERT_FALSE(res); +``` +### Function Equality with mistake +```cpp + StandardCircuitBuilder builder = StandardCircuitBuilder(); + + field_t a(witness_t(&builder, fr::random_element())); + field_t b(witness_t(&builder, fr::random_element())); + field_t c = (a) / (b + b + b); // mistake was here + + builder.set_variable_name(a.witness_index, "a"); + builder.set_variable_name(b.witness_index, "b"); + builder.set_variable_name(c.witness_index, "c"); + ASSERT_TRUE(builder.check_circuit()); + + auto buf = builder.export_circuit(); + + smt_circuit::CircuitSchema circuit_info = smt_circuit::unpack_from_buffer(buf); + smt_solver::Solver s(circuit_info.modulus, {true, 0}); + smt_circuit::Circuit circuit(circuit_info, &s); + + smt_terms::FFTerm a1 = circuit["a"]; + smt_terms::FFTerm b1 = circuit["b"]; + smt_terms::FFTerm c1 = circuit["c"]; + + smt_terms::FFTerm two = smt_terms::FFTerm::Const("2", &s, 10); + smt_terms::FFTerm thr = smt_terms::FFTerm::Const("3", &s, 10); + smt_terms::FFTerm cr = smt_terms::FFTerm::Var("cr", &s); + cr = (two * a1) / (thr * b1); + c1 != cr; + + bool res = s.check(); + ASSERT_TRUE(res); + + std::unordered_map terms({ { "a", a1 }, { "b", b1 }, { "c", c1 }, { "cr", cr } }); + + std::unordered_map vals = s.model(terms); + + info("a = ", vals["a"]); + info("b = ", vals["b"]); + info("c = ", vals["c"]); + info("c_res = ", vals["cr"]); +``` +### Unique Witness +```cpp +// two roots of a quadratic eq x^2 + a * x + b = s + StandardCircuitBuilder builder = StandardCircuitBuilder(); + + field_t a(pub_witness_t(&builder, fr::random_element())); + field_t b(pub_witness_t(&builder, fr::random_element())); + info("a = ", a); + info("b = ", b); + builder.set_variable_name(a.witness_index, "a"); + builder.set_variable_name(b.witness_index, "b"); + field_t z(witness_t(&builder, fr::random_element())); + field_t ev = z * z + a * z + b; + info("ev = ", ev); + builder.set_variable_name(z.witness_index, "z"); + builder.set_variable_name(ev.witness_index, "ev"); + + auto buf = builder.export_circuit(); + + smt_circuit::CircuitSchema circuit_info = smt_circuit::unpack_from_buffer(buf); + smt_solver::Solver s(circuit_info.modulus, {true, 0}); + + std::pair, smt_circuit::Circuit> cirs = + smt_circuit::unique_witness(circuit_info, &s, { "ev" }, { "z" }); + + bool res = s.check(); + ASSERT_TRUE(res); + for (auto x : s.s.getAssertions()) { + info(x); + info(); + } + + std::unordered_map terms = { { "z_c1", cirs.first["z"] }, { "z_c2", cirs.second["z"] } }; + std::unordered_map vals = s.model(terms); + info(vals["z_c1"]); + info(vals["z_c2"]); +``` + +### Obtaining the model + +```cpp +void model_variables(Circuit& c, Solver* s, FFTerm& evaluation) +{ + std::unordered_map terms; + terms.insert({ "point", c["point"] }); + terms.insert({ "result", c["result"] }); + terms.insert({ "evaluation", evaluation }); + + auto values = s->model(terms); + + info("point = ", values["point"]); + info("circuit_result = ", values["result"]); + info("function_evaluation = ", values["evaluation"]); +} +``` + +More examples can be found in *.test.cpp files \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.cpp new file mode 100644 index 00000000000..7ff95288576 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.cpp @@ -0,0 +1,126 @@ +#include "circuit.hpp" + +namespace smt_circuit { + +/** + * @brief Get the CircuitSchema object + * @details Initialize the CircuitSchmea from the binary file + * that contains an msgpack compatible buffer. + * + * @param filename + * @return CircuitSchema + */ +CircuitSchema unpack_from_file(const std::string& filename) +{ + std::ifstream fin; + fin.open(filename, std::ios::in | std::ios::binary); + if (!fin.is_open()) { + throw std::invalid_argument("file not found"); + } + if (fin.tellg() == -1) { + throw std::invalid_argument("something went wrong"); + } + + fin.ignore(std::numeric_limits::max()); // ohboy + std::streamsize fsize = fin.gcount(); + fin.clear(); + fin.seekg(0, std::ios_base::beg); + info("File size: ", fsize); + + CircuitSchema cir; + char* encoded_data = (char*)aligned_alloc(64, static_cast(fsize)); + fin.read(encoded_data, fsize); + msgpack::unpack((const char*)encoded_data, static_cast(fsize)).get().convert(cir); + return cir; +} + +/** + * @brief Get the CircuitSchema object + * @details Initialize the CircuitSchmea from the msgpack compatible buffer. + * + * @param buf + * @return CircuitSchema + */ +CircuitSchema unpack_from_buffer(const msgpack::sbuffer& buf) +{ + CircuitSchema cir; + msgpack::unpack(buf.data(), buf.size()).get().convert(cir); + return cir; +} + +/** + * @brief Check your circuit for witness uniqness + * + * @details Creates two Circuit objects that represent the same + * circuit, however you can choose which variables should be (not) equal in both cases, + * and also the variables that should (not) be equal at the same time. + * + * @param circuit_info + * @param s pointer to the global solver + * @param equal all the variables that should be equal in both circuits + * @param nequal all the variables that should be different in both circuits + * @param eqall all the variables that should not be equal at the same time + * @param neqall all the variables that should not be different at the same time + * @return std::pair + */ +template +std::pair, Circuit> unique_witness(CircuitSchema& circuit_info, + Solver* s, + const std::vector& equal, + const std::vector& not_equal, + const std::vector& equal_at_the_same_time, + const std::vector& not_equal_at_the_same_time) +{ + Circuit c1(circuit_info, s, "circuit1"); + Circuit c2(circuit_info, s, "circuit2"); + + for (const auto& term : equal) { + c1[term] == c2[term]; + } + for (const auto& term : not_equal) { + c1[term] != c2[term]; + } + + std::vector eqs; + for (const auto& term : equal_at_the_same_time) { + Bool tmp = Bool(c1[term]) == Bool(c2[term]); + eqs.push_back(tmp); + } + + if (eqs.size() > 1) { + batch_or(eqs).assert_term(); + } else if (eqs.size() == 1) { + eqs[0].assert_term(); + } + + std::vector neqs; + for (const auto& term : not_equal_at_the_same_time) { + Bool tmp = Bool(c1[term]) != Bool(c2[term]); + neqs.push_back(tmp); + } + + if (neqs.size() > 1) { + batch_or(neqs).assert_term(); + } else if (neqs.size() == 1) { + neqs[0].assert_term(); + } + return { c1, c2 }; +} + +template std::pair, Circuit> unique_witness( + CircuitSchema& circuit_info, + Solver* s, + const std::vector& equal = {}, + const std::vector& not_equal = {}, + const std::vector& equal_at_the_same_time = {}, + const std::vector& not_eqaul_at_the_same_time = {}); + +template std::pair, Circuit> unique_witness( + CircuitSchema& circuit_info, + Solver* s, + const std::vector& equal = {}, + const std::vector& not_equal = {}, + const std::vector& equal_at_the_same_time = {}, + const std::vector& not_eqaul_at_the_same_time = {}); + +}; // namespace smt_circuit \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.hpp new file mode 100644 index 00000000000..9765e5233b8 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.hpp @@ -0,0 +1,245 @@ +#pragma once +#include +#include +#include +#include +#include + +#include "barretenberg/serialize/cbind.hpp" +#include "barretenberg/serialize/msgpack.hpp" + +#include "barretenberg/smt_verification/terms/bool.hpp" +#include "barretenberg/smt_verification/terms/ffiterm.hpp" +#include "barretenberg/smt_verification/terms/ffterm.hpp" + +namespace smt_circuit { +using namespace smt_solver; +using namespace smt_terms; + +struct CircuitSchema { + std::string modulus; + std::vector public_inps; + std::unordered_map vars_of_interest; + std::vector variables; + std::vector> selectors; + std::vector> wires; + MSGPACK_FIELDS(modulus, public_inps, vars_of_interest, variables, selectors, wires); +}; + +/** + * @brief Symbolic Circuit class. + * + * @details Contains all the information about the circuit: gates, variables, + * symbolic variables, specified names and global solver. + * + * @tparam FF FFTerm or FFITerm + */ +template class Circuit { + private: + void init(); + void add_gates(); + + public: + std::vector variables; // circuit witness + std::vector public_inps; // public inputs from the circuit + std::unordered_map vars_of_interest; // names of the variables + std::unordered_map terms; // inverse map of the previous memeber + std::vector> selectors; // selectors from the circuit + std::vector> wires_idxs; // values of the gates' wires + std::vector vars; // all the symbolic variables from the circuit + + Solver* solver; // pointer to the solver + std::string tag; // tag of the symbolic circuit. + // If not empty, will be added to the names + // of symbolic variables to prevent collisions. + + explicit Circuit(CircuitSchema& circuit_info, Solver* solver, const std::string& tag = ""); + + FF operator[](const std::string& name); + FF operator[](const uint32_t& idx) { return vars[idx]; }; + inline uint32_t get_num_gates() const { return static_cast(selectors.size()); }; + inline uint32_t get_num_vars() const { return static_cast(vars.size()); }; +}; + +/** + * @brief Construct a new Circuit::Circuit object + * + * @param circuit_info CircuitShema object + * @param solver pointer to the global solver + * @param tag tag of the circuit. Empty by default. + */ +template +Circuit::Circuit(CircuitSchema& circuit_info, Solver* solver, const std::string& tag) + : public_inps(circuit_info.public_inps) + , vars_of_interest(circuit_info.vars_of_interest) + , wires_idxs(circuit_info.wires) + , solver(solver) + , tag(tag) +{ + if (!this->tag.empty()) { + if (this->tag[0] != '_') { + this->tag = "_" + this->tag; + } + } + + for (auto var : circuit_info.variables) { + std::stringstream buf; // TODO(alex): looks bad. Would be great to create tostring() converter + buf << var; + std::string tmp = buf.str(); + tmp[1] = '0'; // avoiding `x` in 0x prefix + variables.push_back(tmp); + } + + for (auto& x : vars_of_interest) { + terms.insert({ x.second, x.first }); + } + + vars_of_interest.insert({ 0, "zero" }); + vars_of_interest.insert({ 1, "one" }); + terms.insert({ "zero", 0 }); + terms.insert({ "one", 1 }); + + for (auto sel : circuit_info.selectors) { + std::vector tmp_sel; + for (size_t j = 0; j < 5; j++) { + std::stringstream buf; // TODO(alex): #2 + buf << sel[j]; + std::string q_i = buf.str(); + q_i[1] = '0'; // avoiding `x` in 0x prefix + tmp_sel.push_back(q_i); + } + selectors.push_back(tmp_sel); + } + + this->init(); + this->add_gates(); +} + +/** + * Creates all the needed symbolic variables and constants + * which are used in circuit. + * + */ +template void Circuit::init() +{ + size_t num_vars = variables.size(); + + vars.push_back(FF::Var("zero" + this->tag, this->solver)); + vars.push_back(FF::Var("one" + this->tag, this->solver)); + + for (size_t i = 2; i < num_vars; i++) { + if (vars_of_interest.contains(static_cast(i))) { + std::string name = vars_of_interest[static_cast(i)]; + vars.push_back(FF::Var(name + this->tag, this->solver)); + } else { + vars.push_back(FF::Var("var_" + std::to_string(i) + this->tag, this->solver)); + } + } + + vars[0] == FF::Const("0", this->solver); + vars[1] == FF::Const("1", this->solver); + + for (auto i : public_inps) { + vars[i] == FF::Const(variables[i], this->solver); + } +} + +/** + * @brief Adds all the gate constraints to the solver. + * + */ +template void Circuit::add_gates() +{ + for (size_t i = 0; i < get_num_gates(); i++) { + FF q_m = FF::Const(selectors[i][0], this->solver); + FF q_1 = FF::Const(selectors[i][1], this->solver); + FF q_2 = FF::Const(selectors[i][2], this->solver); + FF q_3 = FF::Const(selectors[i][3], this->solver); + FF q_c = FF::Const(selectors[i][4], this->solver); + + uint32_t w_l = wires_idxs[i][0]; + uint32_t w_r = wires_idxs[i][1]; + uint32_t w_o = wires_idxs[i][2]; + + // Binary gate. Relaxes the solver. + // TODO(alex): Probably we can add other basic gates here too to relax the stuff. + // TODO(alex): Theoretically this can be applyed after we ensure that the block of polynomial equations holds + // and then simplify that block in future to relax the solver constraint system. Seems like a hard one to + // implement or actually to automate, but I'll think on it for a while. it will probably require to split + // add_gates and init methods into more complex/generalized parts. + if (w_l == w_r && w_r == w_o) { + if (std::string(q_m) == "1" && std::string(q_1) == "0" && std::string(q_2) == "0" && + std::string(q_3) == "-1" && std::string(q_c) == "0") { // squaring gate + (Bool(vars[w_l]) == Bool(vars[0]) | Bool(vars[w_l]) == Bool(vars[1])).assert_term(); + } + } + + FF eq = vars[0]; + + // mult selector + if (std::string(q_m) != "0") { + eq += q_m * vars[w_l] * vars[w_r]; + } + // w_l selector + if (std::string(q_1) != "0") { + eq += q_1 * vars[w_l]; + } + // w_r selector + if (std::string(q_2) != "0") { + eq += q_2 * vars[w_r]; + } + // w_o selector + if (std::string(q_3) != "0") { + eq += q_3 * vars[w_o]; + } + // w_c selector + if (std::string(q_c) != "0") { + eq += q_c; + } + eq == vars[0]; + } +} + +/** + * @brief Returns a previously named symbolic variable. + * + * @param name + * @return FF + */ +template FF Circuit::operator[](const std::string& name) +{ + if (!this->terms.contains(name)) { + throw std::length_error("No such an item " + name + " in vars or it vas not declared as interesting"); + } + uint32_t idx = this->terms[name]; + return this->vars[idx]; +} + +CircuitSchema unpack_from_buffer(const msgpack::sbuffer& buf); +CircuitSchema unpack_from_file(const std::string& fname); + +template +std::pair, Circuit> unique_witness(CircuitSchema& circuit_info, + Solver* s, + const std::vector& equal = {}, + const std::vector& not_equal = {}, + const std::vector& equal_at_the_same_time = {}, + const std::vector& not_eqaul_at_the_same_time = {}); + +extern template std::pair, Circuit> unique_witness( + CircuitSchema& circuit_info, + Solver* s, + const std::vector& equal = {}, + const std::vector& not_equal = {}, + const std::vector& equal_at_the_same_time = {}, + const std::vector& not_eqaul_at_the_same_time = {}); + +extern template std::pair, Circuit> unique_witness( + CircuitSchema& circuit_info, + Solver* s, + const std::vector& equal = {}, + const std::vector& not_equal = {}, + const std::vector& equal_at_the_same_time = {}, + const std::vector& not_eqaul_at_the_same_time = {}); + +}; // namespace smt_circuit diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/smt_bigfield.test.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/smt_bigfield.test.cpp new file mode 100644 index 00000000000..3747c980e65 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/smt_bigfield.test.cpp @@ -0,0 +1,233 @@ +#include "barretenberg/numeric/random/engine.hpp" + +#include "barretenberg/ecc/curves/bn254/fq.hpp" +#include "barretenberg/ecc/curves/bn254/fr.hpp" + +#include "barretenberg/stdlib/primitives/bigfield/bigfield.hpp" +#include "barretenberg/stdlib/primitives/bool/bool.hpp" +#include "barretenberg/stdlib/primitives/byte_array/byte_array.hpp" +#include "barretenberg/stdlib/primitives/field/field.hpp" + +#include "barretenberg/plonk/proof_system/constants.hpp" +#include "barretenberg/plonk/proof_system/prover/prover.hpp" +#include "barretenberg/plonk/proof_system/verifier/verifier.hpp" + +#include "barretenberg/stdlib/primitives/circuit_builders/circuit_builders.hpp" +#include "barretenberg/stdlib/primitives/curves/bn254.hpp" + +#include "barretenberg/polynomials/polynomial_arithmetic.hpp" +#include +#include +#include + +#include +#include +#include + +#include "barretenberg/smt_verification/circuit/circuit.hpp" + +using namespace smt_circuit; +using namespace barretenberg; +using namespace proof_system::plonk; + +using field_ct = proof_system::plonk::stdlib::field_t; +using witness_t = proof_system::plonk::stdlib::witness_t; +using pub_witness_t = proof_system::plonk::stdlib::public_witness_t; + +using bn254 = stdlib::bn254; + +using fr_ct = bn254::ScalarField; +using fq_ct = bn254::BaseField; +using public_witness_ct = bn254::public_witness_ct; +using witness_ct = bn254::witness_ct; + +SolverConfiguration config = { true, 0 }; + +msgpack::sbuffer create_circuit(bool pub_ab, bool ab) +{ + StandardCircuitBuilder builder = StandardCircuitBuilder(); + fq inputs[2]{ fq::random_element(), fq::random_element() }; + fq_ct a, b; + if (pub_ab) { + a = fq_ct(public_witness_ct(&builder, fr(uint256_t(inputs[0]).slice(0, fq_ct::NUM_LIMB_BITS * 2))), + public_witness_ct( + &builder, fr(uint256_t(inputs[0]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4)))); + b = fq_ct(public_witness_ct(&builder, fr(uint256_t(inputs[1]).slice(0, fq_ct::NUM_LIMB_BITS * 2))), + public_witness_ct( + &builder, fr(uint256_t(inputs[1]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4)))); + } else { + a = fq_ct( + witness_ct(&builder, fr(uint256_t(inputs[0]).slice(0, fq_ct::NUM_LIMB_BITS * 2))), + witness_ct(&builder, fr(uint256_t(inputs[0]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4)))); + b = fq_ct( + witness_ct(&builder, fr(uint256_t(inputs[1]).slice(0, fq_ct::NUM_LIMB_BITS * 2))), + witness_ct(&builder, fr(uint256_t(inputs[1]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4)))); + } + builder.set_variable_name(a.binary_basis_limbs[0].element.witness_index, "a_limb_0"); + builder.set_variable_name(a.binary_basis_limbs[1].element.witness_index, "a_limb_1"); + builder.set_variable_name(a.binary_basis_limbs[2].element.witness_index, "a_limb_2"); + builder.set_variable_name(a.binary_basis_limbs[3].element.witness_index, "a_limb_3"); + + if (ab) { + builder.set_variable_name(b.binary_basis_limbs[0].element.witness_index, "b_limb_0"); + builder.set_variable_name(b.binary_basis_limbs[1].element.witness_index, "b_limb_1"); + builder.set_variable_name(b.binary_basis_limbs[2].element.witness_index, "b_limb_2"); + builder.set_variable_name(b.binary_basis_limbs[3].element.witness_index, "b_limb_3"); + } + + fq_ct c; + if (ab) { + c = a * b; + } else { + c = a * a; + } + builder.set_variable_name(c.binary_basis_limbs[0].element.witness_index, "c_limb_0"); + builder.set_variable_name(c.binary_basis_limbs[1].element.witness_index, "c_limb_1"); + builder.set_variable_name(c.binary_basis_limbs[2].element.witness_index, "c_limb_2"); + builder.set_variable_name(c.binary_basis_limbs[3].element.witness_index, "c_limb_3"); + return builder.export_circuit(); +} + +const std::string q = "21888242871839275222246405745257275088696311157297823662689037894645226208583"; + +std::vector correct_result(Circuit& c, Solver* s) +{ + FFTerm a_limb0 = c["a_limb_0"]; + FFTerm a_limb1 = c["a_limb_1"]; + FFTerm a_limb2 = c["a_limb_2"]; + FFTerm a_limb3 = c["a_limb_3"]; + + FFTerm b_limb0 = c["b_limb_0"]; + FFTerm b_limb1 = c["b_limb_1"]; + FFTerm b_limb2 = c["b_limb_2"]; + FFTerm b_limb3 = c["b_limb_3"]; + + FFTerm c_limb0 = c["c_limb_0"]; + FFTerm c_limb1 = c["c_limb_1"]; + FFTerm c_limb2 = c["c_limb_2"]; + FFTerm c_limb3 = c["c_limb_3"]; + + FFTerm two68 = FFTerm::Const("100000000000000000", s); + FFTerm two136 = two68 * two68; + FFTerm two204 = two136 * two68; + + FFTerm a = a_limb0 + two68 * a_limb1 + two136 * a_limb2 + two204 * a_limb3; + FFTerm b = b_limb0 + two68 * b_limb1 + two136 * b_limb2 + two204 * b_limb3; + FFTerm cr = c_limb0 + two68 * c_limb1 + two136 * c_limb2 + two204 * c_limb3; + FFTerm n = FFTerm::Var("n", s); + FFTerm q_ = FFTerm::Const(q, s, 10); // Const(q_hex, s) + a* b != cr + n* q_; + return { cr, n }; +} + +void model_variables(Circuit& c, Solver* s, std::vector& evaluation) +{ + std::unordered_map terms; + for (size_t i = 0; i < 4; i++) { + terms.insert({ "a_limb_" + std::to_string(i), c["a_limb_" + std::to_string(i)] }); + terms.insert({ "b_limb_" + std::to_string(i), c["b_limb_" + std::to_string(i)] }); + terms.insert({ "c_limb_" + std::to_string(i), c["c_limb_" + std::to_string(i)] }); + } + terms.insert({ "cr", evaluation[0] }); + terms.insert({ "n", evaluation[1] }); + + auto values = s->model(terms); + + for (size_t i = 0; i < 4; i++) { + std::string tmp = "a_limb_" + std::to_string(i); + info(tmp, " = ", values[tmp]); + } + for (size_t i = 0; i < 4; i++) { + std::string tmp = "b_limb_" + std::to_string(i); + info(tmp, " = ", values[tmp]); + } + for (size_t i = 0; i < 4; i++) { + std::string tmp = "c_limb_" + std::to_string(i); + info(tmp, " = ", values[tmp]); + } + info("cr = ", values["cr"]); + info("n = ", values["n"]); +} + +void model_variables1(Circuit& c1, Circuit& c2, Solver* s) +{ + std::unordered_map terms; + for (size_t i = 0; i < 4; i++) { + terms.insert({ "a_limb_" + std::to_string(i), c1["a_limb_" + std::to_string(i)] }); + terms.insert({ "c1_limb_" + std::to_string(i), c1["c_limb_" + std::to_string(i)] }); + terms.insert({ "c2_limb_" + std::to_string(i), c2["c_limb_" + std::to_string(i)] }); + } + auto values = s->model(terms); + + for (size_t i = 0; i < 4; i++) { + std::string tmp = "a_limb_" + std::to_string(i); + info(tmp, " = ", values[tmp]); + } + + for (size_t i = 0; i < 4; i++) { + std::string tmp = "c1_limb_" + std::to_string(i); + info(tmp, " = ", values[tmp]); + } + + for (size_t i = 0; i < 4; i++) { + std::string tmp = "c2_limb_" + std::to_string(i); + info(tmp, " = ", values[tmp]); + } +} + +TEST(bigfield, multiplication_equal) +{ + bool public_a_b = true; + bool a_neq_b = true; + auto buf = create_circuit(public_a_b, a_neq_b); + + CircuitSchema circuit_info = unpack_from_buffer(buf); + Solver s(circuit_info.modulus, config); + Circuit circuit(circuit_info, &s); + std::vector ev = correct_result(circuit, &s); + + auto start = std::chrono::high_resolution_clock::now(); + bool res = s.check(); + auto stop = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(stop - start); + + info(); + info("Gates: ", circuit.get_num_gates()); + info("Result: ", s.getResult()); + info("Time elapsed: ", static_cast(duration.count()) / 1e6, " sec"); + + if (res) { + model_variables(circuit, &s, ev); + } +} + +TEST(bigfield, unique_square) +{ + auto buf = create_circuit(true, false); + + CircuitSchema circuit_info = unpack_from_buffer(buf); + + Solver s(circuit_info.modulus, config); + + std::pair, Circuit> cs = + unique_witness(circuit_info, + &s, + { "a_limb_0", "a_limb_1", "a_limb_2", "a_limb_3" }, + { "c_limb_0", "c_limb_1", "c_limb_2", "c_limb_3" }); + + auto start = std::chrono::high_resolution_clock::now(); + bool res = s.check(); + auto stop = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(stop - start); + + ASSERT_FALSE(res); + + info(); + info("Gates: ", cs.first.get_num_gates()); + info("Result: ", s.getResult()); + info("Time elapsed: ", static_cast(duration.count()) / 1e6, " sec"); + + if (res) { + model_variables1(cs.first, cs.second, &s); + } +} \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/smt_examples.test.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/smt_examples.test.cpp new file mode 100644 index 00000000000..5aa84f4c24d --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/smt_examples.test.cpp @@ -0,0 +1,181 @@ +#include "barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp" +#include +#include +#include +#include + +#include "barretenberg/stdlib/primitives/field/field.hpp" + +#include "barretenberg/smt_verification/circuit/circuit.hpp" + +using namespace barretenberg; +using namespace proof_system; + +namespace { +auto& engine = numeric::random::get_debug_engine(); +} + +using field_t = proof_system::plonk::stdlib::field_t; +using witness_t = proof_system::plonk::stdlib::witness_t; +using pub_witness_t = proof_system::plonk::stdlib::public_witness_t; + +TEST(circuit_verification, multiplication_true) +{ + StandardCircuitBuilder builder = StandardCircuitBuilder(); + + field_t a(witness_t(&builder, fr::random_element())); + field_t b(witness_t(&builder, fr::random_element())); + field_t c = (a + a) / (b + b + b); + + builder.set_variable_name(a.witness_index, "a"); + builder.set_variable_name(b.witness_index, "b"); + builder.set_variable_name(c.witness_index, "c"); + ASSERT_TRUE(builder.check_circuit()); + + auto buf = builder.export_circuit(); + + smt_circuit::CircuitSchema circuit_info = smt_circuit::unpack_from_buffer(buf); + smt_solver::Solver s(circuit_info.modulus, { true, 0 }); + smt_circuit::Circuit circuit(circuit_info, &s); + smt_terms::FFTerm a1 = circuit["a"]; + smt_terms::FFTerm b1 = circuit["b"]; + smt_terms::FFTerm c1 = circuit["c"]; + smt_terms::FFTerm two = smt_terms::FFTerm::Const("2", &s, 10); + smt_terms::FFTerm thr = smt_terms::FFTerm::Const("3", &s, 10); + smt_terms::FFTerm cr = smt_terms::FFTerm::Var("cr", &s); + cr = (two * a1) / (thr * b1); + c1 != cr; + + bool res = s.check(); + ASSERT_FALSE(res); +} + +TEST(circuit_verification, multiplication_true_kind) +{ + StandardCircuitBuilder builder = StandardCircuitBuilder(); + + field_t a(witness_t(&builder, fr::random_element())); + field_t b(witness_t(&builder, fr::random_element())); + field_t c = (a + a) / (b + b + b); + + builder.set_variable_name(a.witness_index, "a"); + builder.set_variable_name(b.witness_index, "b"); + builder.set_variable_name(c.witness_index, "c"); + ASSERT_TRUE(builder.check_circuit()); + + auto buf = builder.export_circuit(); + + smt_circuit::CircuitSchema circuit_info = smt_circuit::unpack_from_buffer(buf); + smt_solver::Solver s(circuit_info.modulus, { true, 0 }); + smt_circuit::Circuit circuit(circuit_info, &s); + smt_terms::FFTerm a1 = circuit["a"]; + smt_terms::FFTerm b1 = circuit["b"]; + smt_terms::FFTerm c1 = circuit["c"]; + smt_terms::FFTerm two = smt_terms::FFTerm::Const("2", &s, 10); + smt_terms::FFTerm thr = smt_terms::FFTerm::Const("3", &s, 10); + smt_terms::FFTerm cr = smt_terms::FFTerm::Var("cr", &s); + cr* thr* b1 == two* a1; + c1 != cr; + + bool res = s.check(); + ASSERT_FALSE(res); +} + +TEST(circuit_verification, multiplication_false) +{ + StandardCircuitBuilder builder = StandardCircuitBuilder(); + + field_t a(witness_t(&builder, fr::random_element())); + field_t b(witness_t(&builder, fr::random_element())); + field_t c = (a) / (b + b + b); // mistake was here + + builder.set_variable_name(a.witness_index, "a"); + builder.set_variable_name(b.witness_index, "b"); + builder.set_variable_name(c.witness_index, "c"); + ASSERT_TRUE(builder.check_circuit()); + + auto buf = builder.export_circuit(); + + smt_circuit::CircuitSchema circuit_info = smt_circuit::unpack_from_buffer(buf); + smt_solver::Solver s(circuit_info.modulus, { true, 0 }); + smt_circuit::Circuit circuit(circuit_info, &s); + + smt_terms::FFTerm a1 = circuit["a"]; + smt_terms::FFTerm b1 = circuit["b"]; + smt_terms::FFTerm c1 = circuit["c"]; + + smt_terms::FFTerm two = smt_terms::FFTerm::Const("2", &s, 10); + smt_terms::FFTerm thr = smt_terms::FFTerm::Const("3", &s, 10); + smt_terms::FFTerm cr = smt_terms::FFTerm::Var("cr", &s); + cr = (two * a1) / (thr * b1); + c1 != cr; + + bool res = s.check(); + ASSERT_TRUE(res); + + std::unordered_map terms({ { "a", a1 }, { "b", b1 }, { "c", c1 }, { "cr", cr } }); + + std::unordered_map vals = s.model(terms); + + info("a = ", vals["a"]); + info("b = ", vals["b"]); + info("c = ", vals["c"]); + info("c_res = ", vals["cr"]); +} + +TEST(circuit_verifiaction, unique_witness) +// two roots of a quadratic eq x^2 + a * x + b = s +{ + StandardCircuitBuilder builder = StandardCircuitBuilder(); + + field_t a(pub_witness_t(&builder, fr::random_element())); + field_t b(pub_witness_t(&builder, fr::random_element())); + builder.set_variable_name(a.witness_index, "a"); + builder.set_variable_name(b.witness_index, "b"); + field_t z(witness_t(&builder, fr::random_element())); + field_t ev = z * z + a * z + b; + builder.set_variable_name(z.witness_index, "z"); + builder.set_variable_name(ev.witness_index, "ev"); + + auto buf = builder.export_circuit(); + + smt_circuit::CircuitSchema circuit_info = smt_circuit::unpack_from_buffer(buf); + smt_solver::Solver s(circuit_info.modulus, { true, 0 }); + + std::pair, smt_circuit::Circuit> cirs = + smt_circuit::unique_witness(circuit_info, &s, { "ev" }, { "z" }); + + bool res = s.check(); + ASSERT_TRUE(res); + + std::unordered_map terms = { { "z_c1", cirs.first["z"] }, { "z_c2", cirs.second["z"] } }; + std::unordered_map vals = s.model(terms); + ASSERT_NE(vals["z_c1"], vals["z_c2"]); +} + +using namespace smt_terms; + +TEST(solver_use_case, solver) +{ + Solver s("11", { true, 0 }, 10); + FFTerm x = FFTerm::Var("x", &s); + FFTerm y = FFTerm::Var("y", &s); + + FFTerm z = x * y + x * x; + z == FFTerm::Const("15", &s, 10); + x != y; + x != FFTerm::Const("0", &s); + y != FFTerm::Const("0", &s); + + bool res = s.check(); + ASSERT_TRUE(res); + + std::unordered_map vars = { { "x", x }, { "y", y } }; + std::unordered_map mvars = s.model(vars); + + info("x = ", mvars["x"]); + info("y = ", mvars["y"]); +} + +// TODO(alex): Try setting the whole witness to be not equal at the same time, while setting inputs and outputs to be +// equal \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/smt_intmod.test.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/smt_intmod.test.cpp new file mode 100644 index 00000000000..7c98768ea89 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/smt_intmod.test.cpp @@ -0,0 +1,21 @@ +#include "barretenberg/smt_verification/circuit/circuit.hpp" +#include +#include + +// TODO(alex): more tests + +TEST(integer_mod, basic_arithmetic) +{ + smt_solver::Solver s("101", { true, 0 }, 10); + + smt_terms::FFITerm x = smt_terms::FFITerm::Var("x", &s); + smt_terms::FFITerm y = smt_terms::FFITerm::Var("y", &s); + smt_terms::FFITerm z = smt_terms::FFITerm::Const("79", &s); + + (x * y) == z; + info(s.check()); + + std::string xval = s.s.getValue(x.term).getIntegerValue(); + std::string yval = s.s.getValue(y.term).getIntegerValue(); + info(xval, " ", yval); +} \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/smt_polynomials.test.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/smt_polynomials.test.cpp new file mode 100644 index 00000000000..1570c0dec4d --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/smt_polynomials.test.cpp @@ -0,0 +1,167 @@ +#include "barretenberg/crypto/generators/generator_data.hpp" +#include "barretenberg/crypto/pedersen_commitment/pedersen.hpp" +#include "barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp" + +#include +#include +#include +#include +#include + +#include "barretenberg/stdlib/primitives/field/field.hpp" + +#include "barretenberg/serialize/cbind.hpp" +#include "barretenberg/smt_verification/circuit/circuit.hpp" + +using namespace barretenberg; +using namespace proof_system; +using namespace smt_circuit; + +using field_ct = proof_system::plonk::stdlib::field_t; +using witness_t = proof_system::plonk::stdlib::witness_t; +using pub_witness_t = proof_system::plonk::stdlib::public_witness_t; + +// TODO(alex): z1 = z2, s1=s2, but coefficients are not public +namespace { +auto& engine = numeric::random::get_debug_engine(); +} + +msgpack::sbuffer create_circuit(size_t n, bool pub_coeffs) +{ + StandardCircuitBuilder builder = StandardCircuitBuilder(); + std::vector coeffs; + std::vector idxs; + for (size_t i = 0; i < n; i++) { + fr tmp_coeff = fr::random_element(); + uint32_t idx; + if (pub_coeffs) { + idx = builder.add_public_variable(tmp_coeff); + } else { + idx = builder.add_variable(tmp_coeff); + } + idxs.push_back(idx); + coeffs.push_back(tmp_coeff); + builder.set_variable_name(idx, "coeff_" + std::to_string(i)); + } + + fr z(10); + uint32_t z_idx = builder.add_variable(z); + builder.set_variable_name(z_idx, "point"); + fr res = fr::zero(); + uint32_t res_idx = builder.zero_idx; // i think assert_equal was needed for zero initialization + builder.assert_equal(res_idx, 0); + + for (size_t i = 0; i < n; i++) { + res = res * z; + uint32_t mul_idx = builder.add_variable(res); + // builder.set_variable_name(mul_idx, "mul_" + std::to_string(i)); + builder.create_mul_gate({ res_idx, z_idx, mul_idx, fr::one(), fr::neg_one(), fr::zero() }); + + res = res + coeffs[i]; + uint32_t add_idx = builder.add_variable(res); + builder.create_add_gate({ + mul_idx, + idxs[i], + add_idx, + fr::one(), + fr::one(), + fr::neg_one(), + fr::zero(), + }); + + res_idx = add_idx; + } + builder.set_variable_name(res_idx, "result"); + + info("evaluation at point ", z, ": ", res); + info("gates: ", builder.num_gates); + info("variables: ", builder.get_num_variables()); + info("public inputs: ", builder.get_num_public_inputs()); + + return builder.export_circuit(); +} + +FFTerm polynomial_evaluation(Circuit& c, size_t n, bool is_correct = true) +{ + std::vector coeffs(n); + for (size_t i = 0; i < n; i++) { + coeffs[i] = c["coeff_" + std::to_string(i)]; + } + + FFTerm point = c["point"]; + FFTerm result = c["result"]; + + FFTerm ev = is_correct ? c["zero"] : c["one"]; + for (size_t i = 0; i < n; i++) { + ev = ev * point + coeffs[i]; + } + + result != ev; + return ev; +} + +void model_variables(Circuit& c, Solver* s, FFTerm& evaluation) +{ + std::unordered_map terms; + terms.insert({ "point", c["point"] }); + terms.insert({ "result", c["result"] }); + terms.insert({ "evaluation", evaluation }); + + auto values = s->model(terms); + + info("point = ", values["point"]); + info("circuit_result = ", values["result"]); + info("function_evaluation = ", values["evaluation"]); +} + +TEST(polynomial_evaluation, correct) +{ + size_t n = 30; + auto buf = create_circuit(n, true); + + CircuitSchema circuit_info = unpack_from_buffer(buf); + + Solver s(circuit_info.modulus, { true, 0 }); + Circuit circuit(circuit_info, &s); + FFTerm ev = polynomial_evaluation(circuit, n, true); + + auto start = std::chrono::high_resolution_clock::now(); + bool res = s.check(); + auto stop = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(stop - start); + + ASSERT_FALSE(res); + info(); + info("Gates: ", circuit.get_num_gates()); + info("Result: ", s.getResult()); + info("Time elapsed: ", static_cast(duration.count()) / 1e6, " sec"); +} + +TEST(polynomial_evaluation, incorrect) +{ + size_t n = 30; + auto buf = create_circuit(n, true); + + CircuitSchema circuit_info = unpack_from_buffer(buf); + + Solver s(circuit_info.modulus, { true, 0 }); + Circuit circuit(circuit_info, &s); + FFTerm ev = polynomial_evaluation(circuit, n, false); + + auto start = std::chrono::high_resolution_clock::now(); + bool res = s.check(); + auto stop = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(stop - start); + + ASSERT_TRUE(res); + info(); + info("Gates: ", circuit.get_num_gates()); + info("Result: ", s.getResult()); + info("Time elapsed: ", static_cast(duration.count()) / 1e6, " sec"); + + if (res) { + model_variables(circuit, &s, ev); + } +} + +// TODO(alex) try with arbitrary coefficients \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.cpp new file mode 100644 index 00000000000..4eca2d5c3ce --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.cpp @@ -0,0 +1,40 @@ +#include "solver.hpp" +#include + +namespace smt_solver { + +/** + * Check if the system is solvable. + * + * @return true if the system is solvable. + * */ +bool Solver::check() +{ + cvc5::Result result = this->s.checkSat(); + this->res = result.isSat(); + this->checked = true; + return this->res; +} + +/** + * If the system is solvable, extract the values for the given symbolic variables. + * + * @param terms A map containing pairs (name, symbolic term). + * @return A map containing pairs (name, value). + * */ +std::unordered_map Solver::model(std::unordered_map& terms) const +{ + if (!this->checked) { + throw std::length_error("Haven't checked yet"); + } + if (!this->res) { + throw std::length_error("There's no solution"); + } + std::unordered_map resulting_model; + for (auto& term : terms) { + std::string str_val = this->s.getValue(term.second).getFiniteFieldValue(); + resulting_model.insert({ term.first, str_val }); + } + return resulting_model; +} +}; // namespace smt_solver diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.hpp new file mode 100644 index 00000000000..508f79042ca --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.hpp @@ -0,0 +1,66 @@ +#pragma once +#include +#include +#include + +namespace smt_solver { + +/** + * @brief Solver configuration + * + * @param produce_model tells the solver to actually compute the values of the variables in SAT case. + * @param timeout tells the solver to stop trying after `timeout` msecs. + * + * @todo TODO(alex): more cvc5 options. + */ +struct SolverConfiguration { + bool produce_model; + uint64_t timeout; +}; + +/** + * @brief Class for the solver. + * + * @details Solver class that can be used to create + * a solver, finite field terms and the circuit. + * Check the satisfability of a system and get it's model. + */ +class Solver { + public: + cvc5::Solver s; + cvc5::Sort fp; + std::string modulus; // modulus in base 10 + bool res = false; + bool checked = false; + + explicit Solver(const std::string& modulus, const SolverConfiguration& config = { false, 0 }, uint32_t base = 16) + { + this->fp = s.mkFiniteFieldSort(modulus, base); + this->modulus = fp.getFiniteFieldSize(); + if (config.produce_model) { + s.setOption("produce-models", "true"); + } + if (config.timeout > 0) { + s.setOption("tlimit-per", std::to_string(config.timeout)); + } + } + + Solver(const Solver& other) = delete; + Solver(Solver&& other) = delete; + Solver& operator=(const Solver& other) = delete; + Solver& operator=(Solver&& other) = delete; + + bool check(); + + [[nodiscard]] std::string getResult() const + { + if (!checked) { + return "No result, yet"; + } + return res ? "SAT" : "UNSAT"; + } + + std::unordered_map model(std::unordered_map& terms) const; + ~Solver() = default; +}; +}; // namespace smt_solver diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.cpp new file mode 100644 index 00000000000..e7e85d8da86 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.cpp @@ -0,0 +1,40 @@ +#include "bool.hpp" + +namespace smt_terms { + +Bool Bool::operator|(const Bool& other) const +{ + cvc5::Term res = solver->mkTerm(cvc5::Kind::OR, { this->term, other.term }); + ; + return { res, this->solver }; +} + +void Bool::operator|=(const Bool& other) +{ + this->term = this->solver->mkTerm(cvc5::Kind::OR, { this->term, other.term }); +} + +Bool Bool::operator&(const Bool& other) const +{ + cvc5::Term res = solver->mkTerm(cvc5::Kind::AND, { this->term, other.term }); + return { res, this->solver }; +} + +void Bool::operator&=(const Bool& other) +{ + this->term = this->solver->mkTerm(cvc5::Kind::AND, { this->term, other.term }); +} + +Bool Bool::operator==(const Bool& other) const +{ + cvc5::Term res = solver->mkTerm(cvc5::Kind::EQUAL, { this->term, other.term }); + return { res, this->solver }; +} + +Bool Bool::operator!=(const Bool& other) const +{ + cvc5::Term res = solver->mkTerm(cvc5::Kind::EQUAL, { this->term, other.term }); + res = solver->mkTerm(cvc5::Kind::EQUAL, { res, this->solver->mkBoolean(false) }); + return { res, this->solver }; +} +}; // namespace smt_terms \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.hpp new file mode 100644 index 00000000000..ff67f22be4d --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.hpp @@ -0,0 +1,88 @@ +#pragma once +#include "ffiterm.hpp" +#include "ffterm.hpp" + +namespace smt_terms { +using namespace smt_solver; + +/** + * @brief Bool element class. + * + * @details Can be used to create non trivial constraints. + * Supports basic boolean arithmetic: &, |. + * + */ +class Bool { + public: + cvc5::Solver* solver; + cvc5::Term term; + bool asserted = false; + + explicit Bool(const cvc5::Term& t, Solver& slv) + : solver(&slv.s) + , term(t){}; + explicit Bool(const FFTerm& t) + : solver(&t.solver->s) + , term(t.term){}; + + explicit Bool(const FFITerm& t) + : solver(&t.solver->s) + , term(t.term){}; + + explicit Bool(bool t, Solver& slv) + : solver(&slv.s) + { + term = solver->mkBoolean(t); + } + Bool(const cvc5::Term& term, cvc5::Solver* s) + : solver(s) + , term(term){}; + Bool(const Bool& other) = default; + Bool(Bool&& other) = default; + + Bool& operator=(const Bool& right) = default; + Bool& operator=(Bool&& right) = default; + + void assert_term() + { + if (!asserted) { + solver->assertFormula(term); + asserted = true; + } + } + + Bool operator|(const Bool& other) const; + void operator|=(const Bool& other); + Bool operator|(const bool& other) const; + void operator|=(const bool& other) const; + + Bool operator&(const Bool& other) const; + void operator&=(const Bool& other); + Bool operator&(const bool& other) const; + void operator&=(const bool& other); + + Bool operator==(const Bool& other) const; + Bool operator!=(const Bool& other) const; + + operator std::string() const { return term.toString(); }; + operator cvc5::Term() const { return term; }; + + friend Bool batch_or(const std::vector& children) + { + cvc5::Solver* s = children[0].solver; + std::vector terms(children.begin(), children.end()); + cvc5::Term res = s->mkTerm(cvc5::Kind::OR, terms); + return { res, s }; + } + + friend Bool batch_and(const std::vector& children) + { + cvc5::Solver* s = children[0].solver; + std::vector terms(children.begin(), children.end()); + cvc5::Term res = s->mkTerm(cvc5::Kind::AND, terms); + return { res, s }; + } + + ~Bool() = default; +}; +}; // namespace smt_terms diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.cpp new file mode 100644 index 00000000000..d2a1a6c2670 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.cpp @@ -0,0 +1,155 @@ +#include "ffiterm.hpp" + +namespace smt_terms { + +/** + * Create an integer mod symbolic variable. + * + * @param name Name of the variable. Should be unique per variable. + * @param slv Pointer to the global solver. + * @return Finite field symbolic variable. + * */ +FFITerm FFITerm::Var(const std::string& name, Solver* slv) +{ + return FFITerm(name, slv); +}; + +/** + * Create an integer mod numeric member. + * + * @param val String representation of the value. + * @param slv Pointer to the global solver. + * @param base Base of the string representation. 16 by default. + * @return Finite field constant. + * */ +FFITerm FFITerm::Const(const std::string& val, Solver* slv, uint32_t base) +{ + return FFITerm(val, slv, true, base); +}; + +FFITerm::FFITerm(const std::string& t, Solver* slv, bool isconst, uint32_t base) + : solver(slv) + , modulus(slv->s.mkInteger(slv->modulus)) +{ + if (!isconst) { + this->term = slv->s.mkConst(slv->s.getIntegerSort(), t); + cvc5::Term ge = slv->s.mkTerm(cvc5::Kind::GEQ, { this->term, slv->s.mkInteger(0) }); + cvc5::Term lt = slv->s.mkTerm(cvc5::Kind::LT, { this->term, this->modulus }); + slv->s.assertFormula(ge); + slv->s.assertFormula(lt); + } else { + std::string tmp = slv->s.mkFiniteFieldElem(t, slv->fp, base).getFiniteFieldValue(); // dumb but works + if (tmp[0] == '-') { + this->term = slv->s.mkTerm(cvc5::Kind::ADD, { slv->s.mkInteger(tmp), this->modulus }); + } else { + this->term = slv->s.mkInteger(tmp); + } + // this->term = slv->s.mkInteger(tmp); won't work for now since the assertion will definitely fail + } +} + +FFITerm FFITerm::operator+(const FFITerm& other) const +{ + cvc5::Term res = this->solver->s.mkTerm(cvc5::Kind::ADD, { this->term, other.term }); + res = this->solver->s.mkTerm(cvc5::Kind::INTS_MODULUS, { res, this->modulus }); + return { res, this->solver }; +} + +void FFITerm::operator+=(const FFITerm& other) +{ + this->term = this->solver->s.mkTerm(cvc5::Kind::ADD, { this->term, other.term }); + this->term = + this->solver->s.mkTerm(cvc5::Kind::INTS_MODULUS, { this->term, this->modulus }); // TODO(alex): is it faster? +} + +FFITerm FFITerm::operator-(const FFITerm& other) const +{ + cvc5::Term res = this->solver->s.mkTerm(cvc5::Kind::SUB, { this->term, other.term }); + res = this->solver->s.mkTerm(cvc5::Kind::INTS_MODULUS, { res, this->modulus }); + return { res, this->solver }; +} + +void FFITerm::operator-=(const FFITerm& other) +{ + this->term = this->solver->s.mkTerm(cvc5::Kind::SUB, { this->term, other.term }); + this->term = + this->solver->s.mkTerm(cvc5::Kind::INTS_MODULUS, { this->term, this->modulus }); // TODO(alex): is it faster? +} + +FFITerm FFITerm::operator*(const FFITerm& other) const +{ + cvc5::Term res = solver->s.mkTerm(cvc5::Kind::MULT, { this->term, other.term }); + res = this->solver->s.mkTerm(cvc5::Kind::INTS_MODULUS, { res, this->modulus }); + return { res, this->solver }; +} + +void FFITerm::operator*=(const FFITerm& other) +{ + this->term = this->solver->s.mkTerm(cvc5::Kind::MULT, { this->term, other.term }); + this->term = + this->solver->s.mkTerm(cvc5::Kind::INTS_MODULUS, { this->term, this->modulus }); // TODO(alex): is it faster? +} + +/** + * @brief Division operation + * + * @details Returns a result of the division by + * creating a new symbolic variable and adding a new constraint + * to the solver. + * + * @param other + * @return FFITerm + */ +FFITerm FFITerm::operator/(const FFITerm& other) const +{ + cvc5::Term nz = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { other.term, this->solver->s.mkInteger("0") }); + nz = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { nz, this->solver->s.mkBoolean(false) }); + this->solver->s.assertFormula(nz); + + cvc5::Term res = this->solver->s.mkConst(this->solver->s.getIntegerSort(), + "fe0f65a52067384116dc1137d798e0ca00a7ed46950e4eab7db51e08481535f2_div_" + + std::string(*this) + "_" + std::string(other)); + cvc5::Term div = this->solver->s.mkTerm(cvc5::Kind::MULT, { res, other.term }); + div = this->solver->s.mkTerm(cvc5::Kind::INTS_MODULUS, { div, this->modulus }); + cvc5::Term eq = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { this->term, div }); + this->solver->s.assertFormula(eq); + return { res, this->solver }; +} + +void FFITerm::operator/=(const FFITerm& other) +{ + cvc5::Term nz = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { other.term, this->solver->s.mkInteger("0") }); + nz = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { nz, this->solver->s.mkBoolean(false) }); + this->solver->s.assertFormula(nz); + + cvc5::Term res = this->solver->s.mkConst(this->solver->fp, + "fe0f65a52067384116dc1137d798e0ca00a7ed46950e4eab7db51e08481535f2_div_" + + std::string(*this) + "__" + std::string(other)); + cvc5::Term div = this->solver->s.mkTerm(cvc5::Kind::MULT, { res, other.term }); + div = this->solver->s.mkTerm(cvc5::Kind::INTS_MODULUS, { div, this->modulus }); + cvc5::Term eq = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { this->term, div }); + this->solver->s.assertFormula(eq); + this->term = res; +} + +/** + * Create an equality constraint between two integer mod elements. + * + */ +void FFITerm::operator==(const FFITerm& other) const +{ + cvc5::Term eq = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { this->term, other.term }); + this->solver->s.assertFormula(eq); +} + +/** + * Create an inequality constraint between two integer mod elements. + * + */ +void FFITerm::operator!=(const FFITerm& other) const +{ + cvc5::Term eq = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { this->term, other.term }); + eq = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { eq, this->solver->s.mkBoolean(false) }); + this->solver->s.assertFormula(eq); +} +} // namespace smt_terms diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.hpp new file mode 100644 index 00000000000..6bb1239557b --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.hpp @@ -0,0 +1,80 @@ +#pragma once +#include "barretenberg/smt_verification/solver/solver.hpp" + +namespace smt_terms { +using namespace smt_solver; + +/** + * @brief Integer Modulo element class. + * + * @details Can be a symbolic variable or a constant. + * Both of them support basic arithmetic operations: +, -, *, /. + * Check the satisfability of a system and get it's model. + * + * @todo TODO(alex): mayb.. Have to patch cvc5 to create integers from hex... + */ +class FFITerm { + public: + Solver* solver; + cvc5::Term term; + cvc5::Term modulus; + + FFITerm() + : solver(nullptr) + , term(cvc5::Term()) + , modulus(cvc5::Term()){}; + + explicit FFITerm(const std::string& t, Solver* slv, bool isconst = false, uint32_t base = 16); + FFITerm(cvc5::Term& term, Solver* s) + : solver(s) + , term(term) + , modulus(s->s.mkInteger(s->modulus)) + {} + + FFITerm(const FFITerm& other) = default; + FFITerm(FFITerm&& other) = default; + + static FFITerm Var(const std::string& name, Solver* slv); + static FFITerm Const(const std::string& val, Solver* slv, uint32_t base = 16); + + FFITerm& operator=(const FFITerm& right) = default; + FFITerm& operator=(FFITerm&& right) = default; + + FFITerm operator+(const FFITerm& other) const; + void operator+=(const FFITerm& other); + FFITerm operator-(const FFITerm& other) const; + void operator-=(const FFITerm& other); + FFITerm operator*(const FFITerm& other) const; + void operator*=(const FFITerm& other); + FFITerm operator/(const FFITerm& other) const; + void operator/=(const FFITerm& other); + + void operator==(const FFITerm& other) const; + void operator!=(const FFITerm& other) const; + + operator std::string() const { return term.isIntegerValue() ? term.getIntegerValue() : term.toString(); }; + operator cvc5::Term() const { return term; }; + + ~FFITerm() = default; + friend std::ostream& operator<<(std::ostream& out, const FFITerm& k) { return out << k.term; } + + friend FFITerm batch_add(const std::vector& children) + { + Solver* slv = children[0].solver; + std::vector terms(children.begin(), children.end()); + cvc5::Term res = slv->s.mkTerm(cvc5::Kind::ADD, terms); + res = slv->s.mkTerm(cvc5::Kind::INTS_MODULUS, { res, children[0].modulus }); + return { res, slv }; + } + + friend FFITerm batch_mul(const std::vector& children) + { + Solver* slv = children[0].solver; + std::vector terms(children.begin(), children.end()); + cvc5::Term res = slv->s.mkTerm(cvc5::Kind::MULT, terms); + res = slv->s.mkTerm(cvc5::Kind::INTS_MODULUS, { res, children[0].modulus }); + return { res, slv }; + } +}; + +} // namespace smt_terms diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.cpp new file mode 100644 index 00000000000..4b96f68b8da --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.cpp @@ -0,0 +1,137 @@ +#include "ffterm.hpp" + +namespace smt_terms { + +/** + * Create a finite field symbolic variable. + * + * @param name Name of the variable. Should be unique per variable. + * @param slv Pointer to the global solver. + * @return Finite field symbolic variable. + * */ +FFTerm FFTerm::Var(const std::string& name, Solver* slv) +{ + return FFTerm(name, slv); +}; + +/** + * Create a finite field numeric member. + * + * @param val String representation of the value. + * @param slv Pointer to the global solver. + * @param base Base of the string representation. 16 by default. + * @return Finite field constant. + * */ +FFTerm FFTerm::Const(const std::string& val, Solver* slv, uint32_t base) +{ + return FFTerm(val, slv, true, base); +}; + +FFTerm::FFTerm(const std::string& t, Solver* slv, bool isconst, uint32_t base) + : solver(slv) +{ + if (!isconst) { + this->term = slv->s.mkConst(slv->fp, t); + } else { + this->term = slv->s.mkFiniteFieldElem(t, slv->fp, base); + } +} + +FFTerm FFTerm::operator+(const FFTerm& other) const +{ + cvc5::Term res = this->solver->s.mkTerm(cvc5::Kind::FINITE_FIELD_ADD, { this->term, other.term }); + return { res, this->solver }; +} + +void FFTerm::operator+=(const FFTerm& other) +{ + this->term = this->solver->s.mkTerm(cvc5::Kind::FINITE_FIELD_ADD, { this->term, other.term }); +} + +FFTerm FFTerm::operator-(const FFTerm& other) const +{ + cvc5::Term res = this->solver->s.mkTerm(cvc5::Kind::FINITE_FIELD_NEG, { other.term }); + res = solver->s.mkTerm(cvc5::Kind::FINITE_FIELD_ADD, { this->term, res }); + return { res, this->solver }; +} + +void FFTerm::operator-=(const FFTerm& other) +{ + cvc5::Term tmp_term = this->solver->s.mkTerm(cvc5::Kind::FINITE_FIELD_NEG, { other.term }); + this->term = this->solver->s.mkTerm(cvc5::Kind::FINITE_FIELD_ADD, { this->term, tmp_term }); +} + +FFTerm FFTerm::operator*(const FFTerm& other) const +{ + cvc5::Term res = solver->s.mkTerm(cvc5::Kind::FINITE_FIELD_MULT, { this->term, other.term }); + return { res, this->solver }; +} + +void FFTerm::operator*=(const FFTerm& other) +{ + this->term = this->solver->s.mkTerm(cvc5::Kind::FINITE_FIELD_MULT, { this->term, other.term }); +} + +/** + * @brief Division operation + * + * @details Returns a result of the division by + * creating a new symbolic variable and adding a new constraint + * to the solver. + * + * @param other + * @return FFTerm + */ +FFTerm FFTerm::operator/(const FFTerm& other) const +{ + cvc5::Term nz = this->solver->s.mkTerm(cvc5::Kind::EQUAL, + { other.term, this->solver->s.mkFiniteFieldElem("0", this->solver->fp) }); + nz = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { nz, this->solver->s.mkBoolean(false) }); + this->solver->s.assertFormula(nz); + + cvc5::Term res = this->solver->s.mkConst(this->solver->fp, + "fe0f65a52067384116dc1137d798e0ca00a7ed46950e4eab7db51e08481535f2_div_" + + std::string(*this) + "_" + std::string(other)); + cvc5::Term div = this->solver->s.mkTerm(cvc5::Kind::FINITE_FIELD_MULT, { res, other.term }); + cvc5::Term eq = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { this->term, div }); + this->solver->s.assertFormula(eq); + return { res, this->solver }; +} + +void FFTerm::operator/=(const FFTerm& other) +{ + cvc5::Term nz = this->solver->s.mkTerm(cvc5::Kind::EQUAL, + { other.term, this->solver->s.mkFiniteFieldElem("0", this->solver->fp) }); + nz = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { nz, this->solver->s.mkBoolean(false) }); + this->solver->s.assertFormula(nz); + + cvc5::Term res = this->solver->s.mkConst(this->solver->fp, + "fe0f65a52067384116dc1137d798e0ca00a7ed46950e4eab7db51e08481535f2_div_" + + std::string(*this) + "__" + std::string(other)); + cvc5::Term div = this->solver->s.mkTerm(cvc5::Kind::FINITE_FIELD_MULT, { res, other.term }); + cvc5::Term eq = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { this->term, div }); + this->solver->s.assertFormula(eq); + this->term = res; +} + +/** + * Create an equality constraint between two finite field elements. + * + */ +void FFTerm::operator==(const FFTerm& other) const +{ + cvc5::Term eq = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { this->term, other.term }); + this->solver->s.assertFormula(eq); +} + +/** + * Create an inequality constraint between two finite field elements. + * + */ +void FFTerm::operator!=(const FFTerm& other) const +{ + cvc5::Term eq = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { this->term, other.term }); + eq = this->solver->s.mkTerm(cvc5::Kind::EQUAL, { eq, this->solver->s.mkBoolean(false) }); + this->solver->s.assertFormula(eq); +} +} // namespace smt_terms \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.hpp new file mode 100644 index 00000000000..581b185bcb3 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.hpp @@ -0,0 +1,72 @@ +#pragma once +#include "barretenberg/smt_verification/solver/solver.hpp" + +namespace smt_terms { +using namespace smt_solver; + +/** + * @brief Finite Field element class. + * + * @details Can be a finite field symbolic variable or a constant. + * Both of them support basic arithmetic operations: +, -, *, /. + * Check the satisfability of a system and get it's model. + * + */ +class FFTerm { + public: + Solver* solver; + cvc5::Term term; + + FFTerm() + : solver(nullptr) + , term(cvc5::Term()){}; + + explicit FFTerm(const std::string& t, Solver* slv, bool isconst = false, uint32_t base = 16); + FFTerm(cvc5::Term& term, Solver* s) + : solver(s) + , term(term){}; + FFTerm(const FFTerm& other) = default; + FFTerm(FFTerm&& other) = default; + + static FFTerm Var(const std::string& name, Solver* slv); + static FFTerm Const(const std::string& val, Solver* slv, uint32_t base = 16); + + FFTerm& operator=(const FFTerm& right) = default; + FFTerm& operator=(FFTerm&& right) = default; + + FFTerm operator+(const FFTerm& other) const; + void operator+=(const FFTerm& other); + FFTerm operator-(const FFTerm& other) const; + void operator-=(const FFTerm& other); + FFTerm operator*(const FFTerm& other) const; + void operator*=(const FFTerm& other); + FFTerm operator/(const FFTerm& other) const; + void operator/=(const FFTerm& other); + + void operator==(const FFTerm& other) const; + void operator!=(const FFTerm& other) const; + + operator std::string() const { return term.isFiniteFieldValue() ? term.getFiniteFieldValue() : term.toString(); }; + operator cvc5::Term() const { return term; }; + + ~FFTerm() = default; + friend std::ostream& operator<<(std::ostream& out, const FFTerm& k) { return out << k.term; } + + friend FFTerm batch_add(const std::vector& children) + { + Solver* slv = children[0].solver; + std::vector terms(children.begin(), children.end()); + cvc5::Term res = slv->s.mkTerm(cvc5::Kind::FINITE_FIELD_ADD, terms); + return { res, slv }; + } + + friend FFTerm batch_mul(const std::vector& children) + { + Solver* slv = children[0].solver; + std::vector terms(children.begin(), children.end()); + cvc5::Term res = slv->s.mkTerm(cvc5::Kind::FINITE_FIELD_MULT, terms); + return { res, slv }; + } +}; + +} // namespace smt_terms \ No newline at end of file diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/solidity_helpers/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/solidity_helpers/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/add_2_circuit.hpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/add_2_circuit.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/add_2_circuit.hpp rename to barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/add_2_circuit.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/blake_circuit.hpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/blake_circuit.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/blake_circuit.hpp rename to barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/blake_circuit.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/recursive_circuit.hpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/recursive_circuit.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/recursive_circuit.hpp rename to barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/recursive_circuit.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/key_gen.cpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/key_gen.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/key_gen.cpp rename to barretenberg/cpp/src/barretenberg/solidity_helpers/key_gen.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/proof_gen.cpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/proof_gen.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/proof_gen.cpp rename to barretenberg/cpp/src/barretenberg/solidity_helpers/proof_gen.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/utils/instance_sol_gen.hpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/utils/instance_sol_gen.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/utils/instance_sol_gen.hpp rename to barretenberg/cpp/src/barretenberg/solidity_helpers/utils/instance_sol_gen.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/utils/utils.hpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/utils/utils.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/solidity_helpers/utils/utils.hpp rename to barretenberg/cpp/src/barretenberg/solidity_helpers/utils/utils.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/srs/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/srs/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/c_bind.cpp b/barretenberg/cpp/src/barretenberg/srs/c_bind.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/c_bind.cpp rename to barretenberg/cpp/src/barretenberg/srs/c_bind.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/c_bind.hpp b/barretenberg/cpp/src/barretenberg/srs/c_bind.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/c_bind.hpp rename to barretenberg/cpp/src/barretenberg/srs/c_bind.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/crs_factory.hpp b/barretenberg/cpp/src/barretenberg/srs/factories/crs_factory.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/crs_factory.hpp rename to barretenberg/cpp/src/barretenberg/srs/factories/crs_factory.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/file_crs_factory.cpp b/barretenberg/cpp/src/barretenberg/srs/factories/file_crs_factory.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/file_crs_factory.cpp rename to barretenberg/cpp/src/barretenberg/srs/factories/file_crs_factory.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/file_crs_factory.hpp b/barretenberg/cpp/src/barretenberg/srs/factories/file_crs_factory.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/file_crs_factory.hpp rename to barretenberg/cpp/src/barretenberg/srs/factories/file_crs_factory.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.cpp b/barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.cpp rename to barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.hpp b/barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.hpp rename to barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.test.cpp b/barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.test.cpp rename to barretenberg/cpp/src/barretenberg/srs/factories/mem_crs_factory.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/global_crs.cpp b/barretenberg/cpp/src/barretenberg/srs/global_crs.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/global_crs.cpp rename to barretenberg/cpp/src/barretenberg/srs/global_crs.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/global_crs.hpp b/barretenberg/cpp/src/barretenberg/srs/global_crs.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/global_crs.hpp rename to barretenberg/cpp/src/barretenberg/srs/global_crs.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/io.hpp b/barretenberg/cpp/src/barretenberg/srs/io.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/io.hpp rename to barretenberg/cpp/src/barretenberg/srs/io.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/io.test.cpp b/barretenberg/cpp/src/barretenberg/srs/io.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/io.test.cpp rename to barretenberg/cpp/src/barretenberg/srs/io.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/srs/scalar_multiplication.test.cpp b/barretenberg/cpp/src/barretenberg/srs/scalar_multiplication.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/srs/scalar_multiplication.test.cpp rename to barretenberg/cpp/src/barretenberg/srs/scalar_multiplication.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/commitment/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/commitment/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.bench.cpp b/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.bench.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.cpp b/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.hpp b/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.cpp b/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.hpp b/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/encryption/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.cpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.hpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.hpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa_impl.hpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa_impl.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.cpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.hpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/hash/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/celer/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/celer/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/celer/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/celer/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/celer/sha256.bench.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/celer/sha256.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/celer/sha256.bench.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/celer/sha256.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/external/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/external/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/external/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/external/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/external/external.bench.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/external/external.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/external/external.bench.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/external/external.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/sha256/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/sha256/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/sha256/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/sha256/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/sha256/sha256.bench.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/sha256/sha256.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/sha256/sha256.bench.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/benchmarks/sha256/sha256.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s_plookup.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s_plookup.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s_plookup.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s_plookup.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s_plookup.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s_plookup.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s_plookup.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s_plookup.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake_util.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake_util.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake_util.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake2s/blake_util.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s_plookup.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s_plookup.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s_plookup.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s_plookup.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s_plookup.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s_plookup.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s_plookup.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s_plookup.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_gates.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_gates.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_gates.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_gates.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_plookup.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_plookup.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_plookup.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_plookup.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_plookup.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_plookup.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_plookup.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_plookup.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256_plookup.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256_plookup.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256_plookup.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256_plookup.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256_plookup.hpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256_plookup.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256_plookup.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/hash/sha256/sha256_plookup.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash.hpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash_path.hpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash_path.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash_path.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/hash_path.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/index.hpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/index.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/index.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/index.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/membership.hpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/membership.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/membership.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/membership.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/membership.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/membership.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/membership.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/membership.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_store.hpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_store.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_store.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_store.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.hpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.bench.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.bench.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.bench.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.bench.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.hpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_leaf.hpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_leaf.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_leaf.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_leaf.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.hpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.hpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/primitives/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/address/address.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/address/address.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/address/address.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/address/address.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.fuzzer.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.fuzzer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.fuzzer.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.fuzzer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_all.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_all.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_all.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_all.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_impl.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_impl.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_standard.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_standard.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_standard.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_standard.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_turbo.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_turbo.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_turbo.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_turbo.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_batch_mul.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_batch_mul.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_batch_mul.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_batch_mul.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_bn254.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_bn254.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_bn254.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_bn254.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_impl.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_impl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_impl.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_impl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_nafs.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_nafs.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_nafs.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_nafs.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_secp256k1.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_secp256k1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_secp256k1.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_secp256k1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_tables.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_tables.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_tables.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_tables.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.fuzzer.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.fuzzer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.fuzzer.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.fuzzer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_all.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_all.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_all.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_all.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_standard.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_standard.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_standard.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_standard.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_turbo.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_turbo.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_turbo.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_turbo.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.fuzzer.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.fuzzer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.fuzzer.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.fuzzer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_all.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_all.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_all.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_all.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_standard.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_standard.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_standard.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_standard.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_turbo.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_turbo.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_turbo.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool_turbo.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.fuzzer.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.fuzzer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.fuzzer.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.fuzzer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_all.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_all.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_all.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_all.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_standard.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_standard.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_standard.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_standard.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_turbo.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_turbo.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_turbo.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_turbo.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders_fwd.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders_fwd.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders_fwd.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders_fwd.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/bn254.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/bn254.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/bn254.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/bn254.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/secp256k1.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/secp256k1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/secp256k1.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/secp256k1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/secp256r1.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/secp256r1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/secp256r1.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/curves/secp256r1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/field/array.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.fuzzer.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.fuzzer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.fuzzer.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.fuzzer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_all.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_all.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_all.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_all.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_standard.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_standard.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_standard.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_standard.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_turbo.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_turbo.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_turbo.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field_turbo.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/group.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/group.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/group.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/group/group.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/group.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/group.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/group/group.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/group/group.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/logic/logic.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/twin_rom_table.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/twin_rom_table.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/twin_rom_table.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/twin_rom_table.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/twin_rom_table.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/twin_rom_table.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/twin_rom_table.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/memory/twin_rom_table.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/point/point.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/point/point.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/point/point.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/point/point.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.fuzzer.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.fuzzer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.fuzzer.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.fuzzer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_all.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_all.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_all.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_all.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_standard.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_standard.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_standard.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_standard.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_turbo.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_turbo.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_turbo.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_turbo.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/arithmetic.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/arithmetic.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/arithmetic.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/arithmetic.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/comparison.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/comparison.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/comparison.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/comparison.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/logic.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/logic.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/logic.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/logic.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/arithmetic.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/arithmetic.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/arithmetic.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/arithmetic.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/comparison.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/comparison.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/comparison.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/comparison.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/logic.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/logic.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/logic.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/logic.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/uint.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/uint.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/uint.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/uint.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/uint.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/uint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/uint.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/plookup/uint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.fuzzer.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.fuzzer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.fuzzer.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.fuzzer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_all.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_all.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_all.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_all.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_standard.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_standard.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_standard.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_standard.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_turbo.fuzzer.cpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_turbo.fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_turbo.fuzzer.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/uint/uint_turbo.fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/witness/witness.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/witness/witness.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/primitives/witness/witness.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/primitives/witness/witness.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/recursion/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/aggregation_state/aggregation_state.hpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/aggregation_state/aggregation_state.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/aggregation_state/aggregation_state.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/aggregation_state/aggregation_state.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/aggregation_state/native_aggregation_state.hpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/aggregation_state/native_aggregation_state.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/aggregation_state/native_aggregation_state.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/aggregation_state/native_aggregation_state.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/transcript/transcript.hpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/transcript/transcript.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/transcript/transcript.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/transcript/transcript.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/transcript/transcript.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/transcript/transcript.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/transcript/transcript.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/transcript/transcript.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/ultra_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/ultra_recursive_verifier.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/ultra_recursive_verifier.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/ultra_recursive_verifier.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/ultra_recursive_verifier.hpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/ultra_recursive_verifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/ultra_recursive_verifier.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/ultra_recursive_verifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/verifier.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/verifier.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/honk/verifier/verifier.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/transcript/transcript.hpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/transcript/transcript.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/transcript/transcript.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/transcript/transcript.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/transcript/transcript.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/transcript/transcript.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/transcript/transcript.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/transcript/transcript.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verification_key/verification_key.hpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/verification_key/verification_key.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verification_key/verification_key.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/verification_key/verification_key.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verification_key/verification_key.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/verification_key/verification_key.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verification_key/verification_key.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/verification_key/verification_key.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/program_settings.hpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/program_settings.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/program_settings.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/program_settings.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.hpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier_turbo.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier_turbo.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier_turbo.test.cpp rename to barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier_turbo.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/types/turbo.hpp b/barretenberg/cpp/src/barretenberg/stdlib/types/turbo.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/types/turbo.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/types/turbo.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/types/ultra.hpp b/barretenberg/cpp/src/barretenberg/stdlib/types/ultra.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/types/ultra.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/types/ultra.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/utility/utility.hpp b/barretenberg/cpp/src/barretenberg/stdlib/utility/utility.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/utility/utility.hpp rename to barretenberg/cpp/src/barretenberg/stdlib/utility/utility.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/transcript/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/transcript/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/manifest.hpp b/barretenberg/cpp/src/barretenberg/transcript/manifest.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/manifest.hpp rename to barretenberg/cpp/src/barretenberg/transcript/manifest.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/transcript.cpp b/barretenberg/cpp/src/barretenberg/transcript/transcript.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/transcript.cpp rename to barretenberg/cpp/src/barretenberg/transcript/transcript.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/transcript.hpp b/barretenberg/cpp/src/barretenberg/transcript/transcript.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/transcript.hpp rename to barretenberg/cpp/src/barretenberg/transcript/transcript.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/transcript.test.cpp b/barretenberg/cpp/src/barretenberg/transcript/transcript.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/transcript.test.cpp rename to barretenberg/cpp/src/barretenberg/transcript/transcript.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/transcript_wrappers.cpp b/barretenberg/cpp/src/barretenberg/transcript/transcript_wrappers.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/transcript_wrappers.cpp rename to barretenberg/cpp/src/barretenberg/transcript/transcript_wrappers.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/transcript_wrappers.hpp b/barretenberg/cpp/src/barretenberg/transcript/transcript_wrappers.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/transcript/transcript_wrappers.hpp rename to barretenberg/cpp/src/barretenberg/transcript/transcript_wrappers.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/wasi/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/wasi/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/wasi/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/wasi/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/wasi/wasi_stubs.cpp b/barretenberg/cpp/src/barretenberg/wasi/wasi_stubs.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/wasi/wasi_stubs.cpp rename to barretenberg/cpp/src/barretenberg/wasi/wasi_stubs.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/wasi/wasm_init.cpp b/barretenberg/cpp/src/barretenberg/wasi/wasm_init.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/wasi/wasm_init.cpp rename to barretenberg/cpp/src/barretenberg/wasi/wasm_init.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/.clang-format b/barretenberg/cpp/src/msgpack-c/.clang-format similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/.clang-format rename to barretenberg/cpp/src/msgpack-c/.clang-format diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/.github/depends/boost.sh b/barretenberg/cpp/src/msgpack-c/.github/depends/boost.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/.github/depends/boost.sh rename to barretenberg/cpp/src/msgpack-c/.github/depends/boost.sh diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/.github/depends/zlib.sh b/barretenberg/cpp/src/msgpack-c/.github/depends/zlib.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/.github/depends/zlib.sh rename to barretenberg/cpp/src/msgpack-c/.github/depends/zlib.sh diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/.github/workflows/coverage.yml b/barretenberg/cpp/src/msgpack-c/.github/workflows/coverage.yml similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/.github/workflows/coverage.yml rename to barretenberg/cpp/src/msgpack-c/.github/workflows/coverage.yml diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/.github/workflows/gha.yml b/barretenberg/cpp/src/msgpack-c/.github/workflows/gha.yml similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/.github/workflows/gha.yml rename to barretenberg/cpp/src/msgpack-c/.github/workflows/gha.yml diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/.gitignore b/barretenberg/cpp/src/msgpack-c/.gitignore similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/.gitignore rename to barretenberg/cpp/src/msgpack-c/.gitignore diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/CHANGELOG.md b/barretenberg/cpp/src/msgpack-c/CHANGELOG.md similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/CHANGELOG.md rename to barretenberg/cpp/src/msgpack-c/CHANGELOG.md diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/CMakeLists.txt b/barretenberg/cpp/src/msgpack-c/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/CMakeLists.txt rename to barretenberg/cpp/src/msgpack-c/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/COPYING b/barretenberg/cpp/src/msgpack-c/COPYING similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/COPYING rename to barretenberg/cpp/src/msgpack-c/COPYING diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/Doxyfile b/barretenberg/cpp/src/msgpack-c/Doxyfile similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/Doxyfile rename to barretenberg/cpp/src/msgpack-c/Doxyfile diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/Files.cmake b/barretenberg/cpp/src/msgpack-c/Files.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/Files.cmake rename to barretenberg/cpp/src/msgpack-c/Files.cmake diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/LICENSE_1_0.txt b/barretenberg/cpp/src/msgpack-c/LICENSE_1_0.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/LICENSE_1_0.txt rename to barretenberg/cpp/src/msgpack-c/LICENSE_1_0.txt diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/NOTICE b/barretenberg/cpp/src/msgpack-c/NOTICE similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/NOTICE rename to barretenberg/cpp/src/msgpack-c/NOTICE diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/QUICKSTART-CPP.md b/barretenberg/cpp/src/msgpack-c/QUICKSTART-CPP.md similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/QUICKSTART-CPP.md rename to barretenberg/cpp/src/msgpack-c/QUICKSTART-CPP.md diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/README.md b/barretenberg/cpp/src/msgpack-c/README.md similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/README.md rename to barretenberg/cpp/src/msgpack-c/README.md diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/appveyor.yml b/barretenberg/cpp/src/msgpack-c/appveyor.yml similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/appveyor.yml rename to barretenberg/cpp/src/msgpack-c/appveyor.yml diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/ci/build_cmake.sh b/barretenberg/cpp/src/msgpack-c/ci/build_cmake.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/ci/build_cmake.sh rename to barretenberg/cpp/src/msgpack-c/ci/build_cmake.sh diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/ci/build_regression.sh b/barretenberg/cpp/src/msgpack-c/ci/build_regression.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/ci/build_regression.sh rename to barretenberg/cpp/src/msgpack-c/ci/build_regression.sh diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/ci/set_gcc_10.sh b/barretenberg/cpp/src/msgpack-c/ci/set_gcc_10.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/ci/set_gcc_10.sh rename to barretenberg/cpp/src/msgpack-c/ci/set_gcc_10.sh diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/cmake/CodeCoverage.cmake b/barretenberg/cpp/src/msgpack-c/cmake/CodeCoverage.cmake similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/cmake/CodeCoverage.cmake rename to barretenberg/cpp/src/msgpack-c/cmake/CodeCoverage.cmake diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/codecov.yml b/barretenberg/cpp/src/msgpack-c/codecov.yml similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/codecov.yml rename to barretenberg/cpp/src/msgpack-c/codecov.yml diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_array.hpp.erb b/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_array.hpp.erb similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_array.hpp.erb rename to barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_array.hpp.erb diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_array_decl.hpp.erb b/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_array_decl.hpp.erb similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_array_decl.hpp.erb rename to barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_array_decl.hpp.erb diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_map.hpp.erb b/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_map.hpp.erb similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_map.hpp.erb rename to barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_map.hpp.erb diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_map_decl.hpp.erb b/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_map_decl.hpp.erb similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_map_decl.hpp.erb rename to barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_define_map_decl.hpp.erb diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_msgpack_tuple.hpp.erb b/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_msgpack_tuple.hpp.erb similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_msgpack_tuple.hpp.erb rename to barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_msgpack_tuple.hpp.erb diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_msgpack_tuple_decl.hpp.erb b/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_msgpack_tuple_decl.hpp.erb similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_msgpack_tuple_decl.hpp.erb rename to barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_msgpack_tuple_decl.hpp.erb diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_zone.hpp.erb b/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_zone.hpp.erb similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_zone.hpp.erb rename to barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_zone.hpp.erb diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_zone_decl.hpp.erb b/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_zone_decl.hpp.erb similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_zone_decl.hpp.erb rename to barretenberg/cpp/src/msgpack-c/erb/v1/cpp03_zone_decl.hpp.erb diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/CMakeLists.txt b/barretenberg/cpp/src/msgpack-c/example/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/CMakeLists.txt rename to barretenberg/cpp/src/msgpack-c/example/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/boost/CMakeLists.txt b/barretenberg/cpp/src/msgpack-c/example/boost/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/boost/CMakeLists.txt rename to barretenberg/cpp/src/msgpack-c/example/boost/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/boost/asio_send_recv.cpp b/barretenberg/cpp/src/msgpack-c/example/boost/asio_send_recv.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/boost/asio_send_recv.cpp rename to barretenberg/cpp/src/msgpack-c/example/boost/asio_send_recv.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/boost/asio_send_recv_zlib.cpp b/barretenberg/cpp/src/msgpack-c/example/boost/asio_send_recv_zlib.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/boost/asio_send_recv_zlib.cpp rename to barretenberg/cpp/src/msgpack-c/example/boost/asio_send_recv_zlib.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/boost/msgpack_variant_capitalize.cpp b/barretenberg/cpp/src/msgpack-c/example/boost/msgpack_variant_capitalize.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/boost/msgpack_variant_capitalize.cpp rename to barretenberg/cpp/src/msgpack-c/example/boost/msgpack_variant_capitalize.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/boost/msgpack_variant_mapbased.cpp b/barretenberg/cpp/src/msgpack-c/example/boost/msgpack_variant_mapbased.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/boost/msgpack_variant_mapbased.cpp rename to barretenberg/cpp/src/msgpack-c/example/boost/msgpack_variant_mapbased.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/CMakeLists.txt b/barretenberg/cpp/src/msgpack-c/example/cpp03/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/CMakeLists.txt rename to barretenberg/cpp/src/msgpack-c/example/cpp03/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/class_intrusive.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/class_intrusive.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/class_intrusive.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/class_intrusive.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/class_intrusive_map.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/class_intrusive_map.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/class_intrusive_map.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/class_intrusive_map.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/class_non_intrusive.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/class_non_intrusive.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/class_non_intrusive.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/class_non_intrusive.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/custom.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/custom.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/custom.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/custom.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/enum.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/enum.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/enum.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/enum.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/map_based_versionup.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/map_based_versionup.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/map_based_versionup.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/map_based_versionup.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/protocol.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/protocol.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/protocol.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/protocol.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/protocol_new.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/protocol_new.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/protocol_new.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/protocol_new.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/reuse_zone.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/reuse_zone.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/reuse_zone.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/reuse_zone.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/simple.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/simple.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/simple.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/simple.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/speed_test.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/speed_test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/speed_test.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/speed_test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/speed_test_nested_array.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/speed_test_nested_array.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/speed_test_nested_array.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/speed_test_nested_array.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/stream.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp03/stream.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp03/stream.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp03/stream.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp11/CMakeLists.txt b/barretenberg/cpp/src/msgpack-c/example/cpp11/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp11/CMakeLists.txt rename to barretenberg/cpp/src/msgpack-c/example/cpp11/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp11/container.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp11/container.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp11/container.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp11/container.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp11/non_def_con_class.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp11/non_def_con_class.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp11/non_def_con_class.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp11/non_def_con_class.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp11/socket_stream_example.cpp b/barretenberg/cpp/src/msgpack-c/example/cpp11/socket_stream_example.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/cpp11/socket_stream_example.cpp rename to barretenberg/cpp/src/msgpack-c/example/cpp11/socket_stream_example.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/x3/CMakeLists.txt b/barretenberg/cpp/src/msgpack-c/example/x3/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/x3/CMakeLists.txt rename to barretenberg/cpp/src/msgpack-c/example/x3/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/x3/parse.cpp b/barretenberg/cpp/src/msgpack-c/example/x3/parse.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/x3/parse.cpp rename to barretenberg/cpp/src/msgpack-c/example/x3/parse.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/x3/stream_unpack.cpp b/barretenberg/cpp/src/msgpack-c/example/x3/stream_unpack.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/x3/stream_unpack.cpp rename to barretenberg/cpp/src/msgpack-c/example/x3/stream_unpack.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/example/x3/unpack.cpp b/barretenberg/cpp/src/msgpack-c/example/x3/unpack.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/example/x3/unpack.cpp rename to barretenberg/cpp/src/msgpack-c/example/x3/unpack.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/CMakeLists.txt b/barretenberg/cpp/src/msgpack-c/fuzz/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/CMakeLists.txt rename to barretenberg/cpp/src/msgpack-c/fuzz/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/regression_runner.cpp b/barretenberg/cpp/src/msgpack-c/fuzz/regression_runner.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/regression_runner.cpp rename to barretenberg/cpp/src/msgpack-c/fuzz/regression_runner.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer.cpp b/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer.cpp rename to barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-5656982724804608 b/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-5656982724804608 similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-5656982724804608 rename to barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-5656982724804608 diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-6022481354686464 b/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-6022481354686464 similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-6022481354686464 rename to barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-6022481354686464 diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyArray b/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyArray similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyArray rename to barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyArray diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyObject b/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyObject similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyObject rename to barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyObject diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/ExcessiveNesting b/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/ExcessiveNesting similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/ExcessiveNesting rename to barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/ExcessiveNesting diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/OpenWeatherMap b/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/OpenWeatherMap similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/OpenWeatherMap rename to barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/OpenWeatherMap diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/WeatherUnderground b/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/WeatherUnderground similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/WeatherUnderground rename to barretenberg/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/WeatherUnderground diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/adaptor_base.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/adaptor_base.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/adaptor_base.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/adaptor_base.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/adaptor_base_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/adaptor_base_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/adaptor_base_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/adaptor_base_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/array_ref.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/array_ref.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/array_ref.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/array_ref.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/array_ref_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/array_ref_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/array_ref_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/array_ref_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/bool.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/bool.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/bool.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/bool.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/fusion.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/fusion.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/fusion.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/fusion.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/msgpack_variant.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/msgpack_variant.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/msgpack_variant.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/msgpack_variant.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/optional.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/optional.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/optional.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/optional.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/string_ref.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/string_ref.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/string_ref.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/string_ref.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/string_view.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/string_view.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/string_view.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/boost/string_view.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/carray.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/carray.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/carray.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/carray.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/char_ptr.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/char_ptr.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/char_ptr.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/char_ptr.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/check_container_size.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/check_container_size.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/check_container_size.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/check_container_size.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/check_container_size_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/check_container_size_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/check_container_size_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/check_container_size_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/complex.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/complex.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/complex.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/complex.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array_char.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array_char.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array_char.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array_char.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array_unsigned_char.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array_unsigned_char.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array_unsigned_char.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array_unsigned_char.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/chrono.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/chrono.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/chrono.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/chrono.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/forward_list.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/forward_list.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/forward_list.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/forward_list.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/reference_wrapper.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/reference_wrapper.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/reference_wrapper.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/reference_wrapper.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/shared_ptr.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/shared_ptr.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/shared_ptr.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/shared_ptr.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/timespec.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/timespec.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/timespec.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/timespec.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unique_ptr.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unique_ptr.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unique_ptr.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unique_ptr.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unordered_map.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unordered_map.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unordered_map.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unordered_map.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unordered_set.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unordered_set.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unordered_set.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unordered_set.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/array_byte.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/array_byte.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/array_byte.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/array_byte.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/byte.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/byte.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/byte.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/byte.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/carray_byte.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/carray_byte.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/carray_byte.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/carray_byte.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/optional.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/optional.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/optional.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/optional.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/string_view.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/string_view.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/string_view.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/string_view.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/vector_byte.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/vector_byte.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/vector_byte.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/vector_byte.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp20/span.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp20/span.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp20/span.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/cpp20/span.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/define.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/define.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/define.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/define.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/define_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/define_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/define_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/define_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/deque.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/deque.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/deque.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/deque.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/ext.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/ext.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/ext.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/ext.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/ext_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/ext_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/ext_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/ext_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/fixint.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/fixint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/fixint.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/fixint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/fixint_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/fixint_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/fixint_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/fixint_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/float.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/float.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/float.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/float.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/int.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/int.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/int.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/int.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/int_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/int_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/int_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/int_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/list.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/list.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/list.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/list.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/map.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/map.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/map.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/map.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/map_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/map_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/map_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/map_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/msgpack_tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/msgpack_tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/msgpack_tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/msgpack_tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/msgpack_tuple_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/msgpack_tuple_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/msgpack_tuple_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/msgpack_tuple_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/nil.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/nil.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/nil.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/nil.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/nil_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/nil_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/nil_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/nil_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/pair.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/pair.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/pair.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/pair.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/raw.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/raw.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/raw.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/raw.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/raw_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/raw_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/raw_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/raw_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/set.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/set.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/set.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/set.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/size_equal_only.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/size_equal_only.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/size_equal_only.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/size_equal_only.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/size_equal_only_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/size_equal_only_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/size_equal_only_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/size_equal_only_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/string.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/string.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/string.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/string.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/tr1/unordered_map.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/tr1/unordered_map.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/tr1/unordered_map.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/tr1/unordered_map.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/tr1/unordered_set.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/tr1/unordered_set.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/tr1/unordered_set.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/tr1/unordered_set.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/v4raw.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/v4raw.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/v4raw.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/v4raw.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/v4raw_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/v4raw_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/v4raw_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/v4raw_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_bool.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_bool.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_bool.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_bool.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_char.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_char.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_char.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_char.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_unsigned_char.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_unsigned_char.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_unsigned_char.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/vector_unsigned_char.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/wstring.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/wstring.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/wstring.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/adaptor/wstring.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/assert.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/assert.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/assert.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/assert.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_config.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_config.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_config.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_config.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_config_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_config_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_config_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_config_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_version.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_version.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_version.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/cpp_version.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/create_object_visitor.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/create_object_visitor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/create_object_visitor.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/create_object_visitor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/create_object_visitor_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/create_object_visitor_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/create_object_visitor_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/create_object_visitor_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/fbuffer.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/fbuffer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/fbuffer.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/fbuffer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/fbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/fbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/fbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/fbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/gcc_atomic.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/gcc_atomic.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/gcc_atomic.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/gcc_atomic.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/iterator.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/iterator.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/iterator.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/iterator.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/iterator_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/iterator_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/iterator_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/iterator_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/meta.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/meta.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/meta.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/meta.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/meta_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/meta_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/meta_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/meta_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/null_visitor.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/null_visitor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/null_visitor.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/null_visitor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/null_visitor_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/null_visitor_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/null_visitor_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/null_visitor_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/object.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/object.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/object.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/object.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/object_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/object_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/object_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/object_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/object_fwd.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/object_fwd.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/object_fwd.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/object_fwd.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/object_fwd_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/object_fwd_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/object_fwd_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/object_fwd_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/pack.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/pack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/pack.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/pack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/pack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/pack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/pack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/pack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/parse.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/parse.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/parse.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/parse.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/parse_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/parse_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/parse_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/parse_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/parse_return.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/parse_return.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/parse_return.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/parse_return.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/alpha.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/alpha.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/alpha.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/alpha.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/arm.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/arm.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/arm.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/arm.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/blackfin.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/blackfin.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/blackfin.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/blackfin.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/convex.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/convex.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/convex.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/convex.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ia64.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ia64.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ia64.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ia64.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/m68k.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/m68k.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/m68k.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/m68k.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/mips.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/mips.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/mips.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/mips.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/parisc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/parisc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/parisc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/parisc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ppc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ppc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ppc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ppc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ptx.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ptx.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ptx.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/ptx.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/pyramid.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/pyramid.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/pyramid.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/pyramid.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/rs6k.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/rs6k.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/rs6k.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/rs6k.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sparc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sparc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sparc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sparc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/superh.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/superh.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/superh.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/superh.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sys370.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sys370.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sys370.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sys370.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sys390.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sys390.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sys390.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/sys390.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86/32.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86/32.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86/32.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86/32.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86/64.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86/64.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86/64.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86/64.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/z.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/z.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/z.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/architecture/z.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/borland.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/borland.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/borland.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/borland.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/clang.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/clang.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/clang.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/clang.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/comeau.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/comeau.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/comeau.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/comeau.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/compaq.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/compaq.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/compaq.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/compaq.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/diab.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/diab.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/diab.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/diab.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/digitalmars.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/digitalmars.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/digitalmars.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/digitalmars.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/dignus.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/dignus.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/dignus.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/dignus.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/edg.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/edg.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/edg.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/edg.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/ekopath.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/ekopath.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/ekopath.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/ekopath.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/gcc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/gcc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/gcc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/gcc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/gcc_xml.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/gcc_xml.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/gcc_xml.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/gcc_xml.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/greenhills.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/greenhills.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/greenhills.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/greenhills.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/hp_acc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/hp_acc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/hp_acc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/hp_acc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/iar.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/iar.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/iar.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/iar.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/ibm.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/ibm.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/ibm.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/ibm.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/intel.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/intel.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/intel.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/intel.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/kai.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/kai.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/kai.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/kai.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/llvm.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/llvm.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/llvm.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/llvm.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/metaware.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/metaware.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/metaware.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/metaware.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/metrowerks.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/metrowerks.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/metrowerks.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/metrowerks.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/microtec.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/microtec.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/microtec.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/microtec.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/mpw.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/mpw.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/mpw.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/mpw.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/nvcc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/nvcc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/nvcc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/nvcc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/palm.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/palm.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/palm.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/palm.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/pgi.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/pgi.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/pgi.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/pgi.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/sgi_mipspro.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/sgi_mipspro.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/sgi_mipspro.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/sgi_mipspro.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/sunpro.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/sunpro.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/sunpro.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/sunpro.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/tendra.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/tendra.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/tendra.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/tendra.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/visualc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/visualc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/visualc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/visualc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/watcom.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/watcom.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/watcom.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/compiler/watcom.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/_cassert.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/_cassert.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/_cassert.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/_cassert.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/_exception.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/_exception.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/_exception.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/_exception.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/comp_detected.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/comp_detected.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/comp_detected.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/comp_detected.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/endian_compat.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/endian_compat.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/endian_compat.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/endian_compat.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/os_detected.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/os_detected.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/os_detected.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/os_detected.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/platform_detected.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/platform_detected.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/platform_detected.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/platform_detected.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/test.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/test.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/test.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/test.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/test_def.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/test_def.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/test_def.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/detail/test_def.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/arm.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/arm.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/arm.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/arm.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/arm/versions.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/arm/versions.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/arm/versions.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/arm/versions.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/ppc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/ppc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/ppc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/ppc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/ppc/versions.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/ppc/versions.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/ppc/versions.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/ppc/versions.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86/versions.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86/versions.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86/versions.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86/versions.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86_amd.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86_amd.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86_amd.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86_amd.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86_amd/versions.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86_amd/versions.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86_amd/versions.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86_amd/versions.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/cuda.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/cuda.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/cuda.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/cuda.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/objc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/objc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/objc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/objc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/stdc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/stdc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/stdc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/stdc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/stdcpp.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/stdcpp.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/stdcpp.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/language/stdcpp.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/_prefix.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/_prefix.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/_prefix.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/_prefix.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/cloudabi.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/cloudabi.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/cloudabi.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/cloudabi.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/gnu.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/gnu.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/gnu.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/gnu.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/uc.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/uc.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/uc.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/uc.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/vms.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/vms.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/vms.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/vms.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/zos.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/zos.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/zos.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/c/zos.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/_prefix.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/_prefix.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/_prefix.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/_prefix.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/cxx.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/cxx.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/cxx.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/cxx.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/dinkumware.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/dinkumware.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/dinkumware.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/dinkumware.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/libcomo.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/libcomo.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/libcomo.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/libcomo.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/modena.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/modena.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/modena.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/modena.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/msl.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/msl.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/msl.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/msl.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/roguewave.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/roguewave.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/roguewave.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/roguewave.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/sgi.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/sgi.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/sgi.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/sgi.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/stdcpp3.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/stdcpp3.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/stdcpp3.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/stdcpp3.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/stlport.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/stlport.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/stlport.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/stlport.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/vacpp.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/vacpp.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/vacpp.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/library/std/vacpp.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/make.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/make.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/make.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/make.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/aix.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/aix.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/aix.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/aix.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/amigaos.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/amigaos.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/amigaos.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/amigaos.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/android.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/android.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/android.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/android.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/beos.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/beos.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/beos.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/beos.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/bsdi.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/bsdi.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/bsdi.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/bsdi.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/dragonfly.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/dragonfly.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/dragonfly.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/dragonfly.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/free.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/free.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/free.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/free.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/net.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/net.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/net.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/net.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/open.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/open.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/open.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/open.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/cygwin.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/cygwin.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/cygwin.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/cygwin.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/haiku.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/haiku.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/haiku.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/haiku.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/hpux.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/hpux.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/hpux.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/hpux.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/ios.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/ios.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/ios.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/ios.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/irix.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/irix.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/irix.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/irix.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/linux.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/linux.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/linux.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/linux.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/macos.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/macos.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/macos.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/macos.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/os400.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/os400.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/os400.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/os400.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/qnxnto.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/qnxnto.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/qnxnto.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/qnxnto.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/solaris.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/solaris.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/solaris.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/solaris.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/unix.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/unix.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/unix.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/unix.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/vms.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/vms.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/vms.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/vms.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/windows.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/windows.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/windows.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/os/windows.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other/endian.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other/endian.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other/endian.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other/endian.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other/workaround.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other/workaround.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other/workaround.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/other/workaround.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/cloudabi.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/cloudabi.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/cloudabi.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/cloudabi.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/ios.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/ios.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/ios.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/ios.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw32.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw32.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw32.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw32.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw64.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw64.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw64.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw64.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_desktop.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_desktop.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_desktop.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_desktop.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_phone.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_phone.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_phone.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_phone.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_runtime.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_runtime.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_runtime.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_runtime.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_server.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_server.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_server.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_server.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_store.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_store.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_store.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_store.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_system.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_system.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_system.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_system.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_uwp.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_uwp.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_uwp.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_uwp.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/version.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/version.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/version.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/version.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/version_number.h b/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/version_number.h similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/predef/version_number.h rename to barretenberg/cpp/src/msgpack-c/include/msgpack/predef/version_number.h diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/add.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/add.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/add.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/add.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/dec.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/dec.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/dec.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/dec.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/detail/div_base.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/detail/div_base.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/detail/div_base.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/detail/div_base.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/div.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/div.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/div.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/div.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/inc.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/inc.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/inc.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/inc.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/mod.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/mod.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/mod.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/mod.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/mul.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/mul.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/mul.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/mul.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/sub.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/sub.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/sub.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/sub.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/data.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/data.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/detail/get_data.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/detail/get_data.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/detail/get_data.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/detail/get_data.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/elem.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/elem.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/elem.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/elem.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/enum.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/enum.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/enum.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/enum.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/insert.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/insert.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/insert.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/insert.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/pop_back.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/pop_back.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/pop_back.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/pop_back.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/pop_front.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/pop_front.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/pop_front.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/pop_front.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/push_back.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/push_back.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/push_back.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/push_back.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/push_front.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/push_front.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/push_front.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/push_front.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/remove.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/remove.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/remove.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/remove.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/replace.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/replace.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/replace.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/replace.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/reverse.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/reverse.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/reverse.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/reverse.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/size.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/size.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/size.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/size.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_list.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_list.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_list.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_list.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_seq.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_seq.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_seq.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_seq.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/assert_msg.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/assert_msg.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/assert_msg.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/assert_msg.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/cat.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/cat.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/cat.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/cat.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comma.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comma.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comma.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comma.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comma_if.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comma_if.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comma_if.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comma_if.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/equal.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/equal.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/equal.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/equal.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/greater.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/greater.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/greater.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/greater.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/greater_equal.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/greater_equal.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/greater_equal.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/greater_equal.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/less.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/less.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/less.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/less.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/less_equal.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/less_equal.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/less_equal.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/less_equal.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/not_equal.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/not_equal.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/not_equal.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/not_equal.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/config/config.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/config/config.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/config/config.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/config/config.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/config/limits.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/config/limits.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/config/limits.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/config/limits.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/deduce_d.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/deduce_d.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/deduce_d.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/deduce_d.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/dmc/while.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/dmc/while.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/dmc/while.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/dmc/while.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/edg/while.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/edg/while.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/edg/while.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/edg/while.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/msvc/while.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/msvc/while.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/msvc/while.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/msvc/while.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/while.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/while.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/while.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/while.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/expr_if.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/expr_if.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/expr_if.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/expr_if.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/expr_iif.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/expr_iif.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/expr_iif.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/expr_iif.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/if.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/if.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/if.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/if.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/iif.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/iif.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/iif.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/iif.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/while.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/while.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/while.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/control/while.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/assert.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/assert.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/assert.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/assert.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/error.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/error.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/error.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/error.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/line.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/line.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/line.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/line.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/dec.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/dec.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/dec.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/dec.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/auto_rec.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/auto_rec.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/auto_rec.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/auto_rec.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/check.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/check.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/check.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/check.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/dmc/auto_rec.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/dmc/auto_rec.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/dmc/auto_rec.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/dmc/auto_rec.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_binary.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_binary.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_binary.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_binary.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_nullary.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_nullary.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_nullary.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_nullary.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_unary.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_unary.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_unary.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_unary.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/null.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/null.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/null.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/null.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/split.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/split.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/split.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/split.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/empty.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/empty.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/empty.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/empty.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params_with_a_default.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params_with_a_default.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params_with_a_default.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params_with_a_default.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params_with_defaults.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params_with_defaults.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params_with_defaults.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params_with_defaults.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_shifted.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_shifted.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_shifted.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_shifted.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_shifted_params.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_shifted_params.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_shifted_params.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_shifted_params.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/expand.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/expand.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/expand.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/expand.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/expr_if.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/expr_if.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/expr_if.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/expr_if.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/apply.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/apply.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/apply.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/apply.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/detail/is_empty.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/detail/is_empty.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/detail/is_empty.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/detail/is_empty.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/empty.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/empty.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/empty.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/empty.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/expand.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/expand.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/expand.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/expand.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/identity.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/identity.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/identity.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/identity.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/intercept.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/intercept.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/intercept.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/intercept.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_1.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_1.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty_or_1.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty_or_1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty_or_1.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty_or_1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/overload.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/overload.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/overload.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/overload.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/for.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/for.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/for.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/for.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/identity.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/identity.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/identity.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/identity.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/if.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/if.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/if.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/if.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/inc.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/inc.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/inc.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/inc.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iterate.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iterate.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iterate.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iterate.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower2.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower2.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower2.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower2.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower3.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower3.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower3.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower3.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower4.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower4.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower4.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower4.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower5.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower5.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower5.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower5.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper1.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper1.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper2.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper2.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper2.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper2.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper3.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper3.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper3.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper3.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper4.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper4.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper4.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper4.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper5.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper5.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper5.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper5.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/finish.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/finish.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/finish.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/finish.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward1.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward1.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward2.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward2.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward2.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward2.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward3.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward3.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward3.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward3.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward4.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward4.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward4.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward4.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward5.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward5.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward5.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward5.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse1.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse1.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse2.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse2.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse2.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse2.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse3.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse3.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse3.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse3.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse4.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse4.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse4.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse4.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse5.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse5.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse5.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse5.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/local.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/local.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/local.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/local.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/rlocal.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/rlocal.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/rlocal.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/rlocal.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/self.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/self.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/self.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/self.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/start.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/start.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/start.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/start.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/iterate.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/iterate.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/iterate.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/iterate.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/local.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/local.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/local.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/local.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/self.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/self.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/self.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/self.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/library.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/library.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/library.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/library.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/limits.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/limits.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/limits.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/limits.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/adt.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/adt.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/adt.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/adt.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/append.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/append.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/append.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/append.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/at.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/at.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/at.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/at.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/cat.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/cat.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/cat.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/cat.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/dmc/fold_left.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/dmc/fold_left.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/dmc/fold_left.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/dmc/fold_left.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/edg/fold_left.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/edg/fold_left.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/edg/fold_left.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/edg/fold_left.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/edg/fold_right.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/edg/fold_right.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/edg/fold_right.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/edg/fold_right.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/fold_left.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/fold_left.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/fold_left.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/fold_left.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/fold_right.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/fold_right.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/fold_right.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/fold_right.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/enum.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/enum.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/enum.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/enum.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/filter.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/filter.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/filter.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/filter.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/first_n.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/first_n.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/first_n.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/first_n.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/fold_left.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/fold_left.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/fold_left.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/fold_left.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/fold_right.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/fold_right.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/fold_right.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/fold_right.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each_i.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each_i.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each_i.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each_i.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each_product.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each_product.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each_product.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each_product.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/rest_n.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/rest_n.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/rest_n.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/rest_n.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/reverse.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/reverse.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/reverse.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/reverse.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/size.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/size.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/size.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/size.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_array.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_array.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_seq.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_seq.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_seq.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_seq.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/transform.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/transform.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/transform.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/list/transform.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/and.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/and.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/and.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/and.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitand.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitand.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitand.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitand.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitnor.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitnor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitnor.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitnor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitor.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitor.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitxor.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitxor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitxor.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitxor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bool.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bool.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bool.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bool.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/compl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/compl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/compl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/compl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/nor.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/nor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/nor.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/nor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/not.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/not.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/not.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/not.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/or.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/or.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/or.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/or.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/xor.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/xor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/xor.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/xor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/max.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/max.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/max.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/max.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/min.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/min.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/min.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/min.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/comma.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/comma.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/comma.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/comma.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/comma_if.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/comma_if.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/comma_if.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/comma_if.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/detail/is_begin_parens.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/detail/is_begin_parens.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/detail/is_begin_parens.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/detail/is_begin_parens.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/is_begin_parens.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/is_begin_parens.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/is_begin_parens.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/is_begin_parens.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/paren.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/paren.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/paren.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/paren.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/paren_if.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/paren_if.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/paren_if.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/paren_if.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/remove_parens.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/remove_parens.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/remove_parens.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/remove_parens.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_2nd.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_2nd.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_2nd.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_2nd.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_3rd.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_3rd.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_3rd.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_3rd.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to_2nd.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to_2nd.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to_2nd.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to_2nd.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to_3rd.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to_3rd.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to_3rd.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to_3rd.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/deduce_r.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/deduce_r.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/deduce_r.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/deduce_r.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/deduce_z.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/deduce_z.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/deduce_z.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/deduce_z.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/dmc/for.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/dmc/for.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/dmc/for.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/dmc/for.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/edg/for.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/edg/for.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/edg/for.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/edg/for.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/for.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/for.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/for.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/for.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/msvc/for.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/msvc/for.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/msvc/for.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/msvc/for.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_binary_params.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_binary_params.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_binary_params.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_binary_params.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params_with_a_default.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params_with_a_default.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params_with_a_default.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params_with_a_default.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params_with_defaults.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params_with_defaults.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params_with_defaults.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params_with_defaults.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted_binary_params.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted_binary_params.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted_binary_params.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted_binary_params.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted_params.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted_params.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted_params.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted_params.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing_binary_params.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing_binary_params.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing_binary_params.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing_binary_params.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing_params.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing_params.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing_params.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing_params.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/for.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/for.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/for.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/for.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/repeat.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/repeat.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/repeat.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/repeat.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/repeat_from_to.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/repeat_from_to.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/repeat_from_to.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/repeat_from_to.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection/max.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection/max.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection/max.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection/max.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection/min.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection/min.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection/min.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/selection/min.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/cat.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/cat.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/cat.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/cat.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/binary_transform.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/binary_transform.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/binary_transform.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/binary_transform.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/is_empty.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/is_empty.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/is_empty.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/is_empty.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/split.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/split.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/split.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/split.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/to_list_msvc.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/to_list_msvc.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/to_list_msvc.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/to_list_msvc.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/elem.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/elem.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/elem.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/elem.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/enum.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/enum.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/enum.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/enum.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/filter.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/filter.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/filter.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/filter.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/first_n.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/first_n.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/first_n.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/first_n.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/fold_left.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/fold_left.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/fold_left.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/fold_left.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/fold_right.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/fold_right.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/fold_right.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/fold_right.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each_i.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each_i.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each_i.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each_i.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each_product.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each_product.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each_product.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each_product.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/insert.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/insert.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/insert.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/insert.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/pop_back.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/pop_back.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/pop_back.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/pop_back.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/pop_front.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/pop_front.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/pop_front.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/pop_front.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/push_back.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/push_back.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/push_back.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/push_back.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/push_front.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/push_front.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/push_front.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/push_front.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/remove.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/remove.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/remove.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/remove.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/replace.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/replace.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/replace.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/replace.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/rest_n.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/rest_n.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/rest_n.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/rest_n.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/reverse.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/reverse.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/reverse.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/reverse.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/seq.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/seq.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/seq.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/seq.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/size.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/size.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/size.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/size.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/subseq.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/subseq.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/subseq.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/subseq.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_array.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_array.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_list.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_list.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_list.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_list.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/transform.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/transform.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/transform.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/transform.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/variadic_seq_to_seq.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/variadic_seq_to_seq.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/variadic_seq_to_seq.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/variadic_seq_to_seq.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/counter.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/counter.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/counter.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/counter.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/counter.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/counter.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/counter.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/counter.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/def.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/def.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/def.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/def.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/shared.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/shared.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/shared.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/shared.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot1.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot1.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot1.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot1.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot2.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot2.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot2.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot2.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot3.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot3.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot3.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot3.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot4.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot4.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot4.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot4.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot5.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot5.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot5.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot5.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/slot.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/slot.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/slot.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/slot.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/stringize.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/stringize.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/stringize.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/stringize.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/detail/is_single_return.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/detail/is_single_return.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/detail/is_single_return.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/detail/is_single_return.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/eat.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/eat.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/eat.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/eat.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/elem.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/elem.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/elem.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/elem.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/enum.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/enum.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/enum.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/enum.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/insert.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/insert.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/insert.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/insert.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/pop_back.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/pop_back.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/pop_back.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/pop_back.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/pop_front.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/pop_front.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/pop_front.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/pop_front.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/push_back.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/push_back.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/push_back.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/push_back.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/push_front.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/push_front.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/push_front.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/push_front.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/rem.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/rem.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/rem.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/rem.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/remove.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/remove.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/remove.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/remove.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/replace.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/replace.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/replace.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/replace.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/reverse.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/reverse.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/reverse.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/reverse.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/size.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/size.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/size.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/size.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_array.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_array.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_list.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_list.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_list.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_list.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_seq.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_seq.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_seq.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_seq.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/detail/is_single_return.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/detail/is_single_return.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/detail/is_single_return.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/detail/is_single_return.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/elem.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/elem.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/elem.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/elem.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/size.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/size.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/size.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/size.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_array.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_array.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_list.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_list.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_list.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_list.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_seq.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_seq.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_seq.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_seq.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/while.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/while.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/while.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/while.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/wstringize.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/wstringize.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/wstringize.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/preprocessor/wstringize.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/sbuffer.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/sbuffer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/sbuffer.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/sbuffer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/sbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/sbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/sbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/sbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/sysdep.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/sysdep.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/sysdep.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/sysdep.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/type.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/type.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/type.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/type.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/unpack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_define.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_define.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_define.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_define.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_exception.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_exception.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_exception.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/unpack_exception.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/adaptor_base.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/adaptor_base.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/adaptor_base.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/adaptor_base.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/adaptor_base_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/adaptor_base_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/adaptor_base_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/adaptor_base_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/array_ref.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/array_ref.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/array_ref.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/array_ref.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/array_ref_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/array_ref_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/array_ref_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/array_ref_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/bool.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/bool.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/bool.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/bool.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/fusion.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/fusion.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/fusion.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/fusion.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/optional.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/optional.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/optional.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/optional.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/string_ref.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/string_ref.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/string_ref.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/string_ref.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/string_view.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/string_view.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/string_view.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/string_view.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/carray.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/carray.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/carray.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/carray.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/char_ptr.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/char_ptr.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/char_ptr.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/char_ptr.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/check_container_size.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/check_container_size.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/check_container_size.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/check_container_size.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/check_container_size_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/check_container_size_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/check_container_size_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/check_container_size_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/complex.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/complex.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/complex.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/complex.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array_char.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array_char.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array_char.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array_char.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/chrono.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/chrono.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/chrono.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/chrono.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/forward_list.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/forward_list.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/forward_list.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/forward_list.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/reference_wrapper.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/reference_wrapper.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/reference_wrapper.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/reference_wrapper.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/shared_ptr.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/shared_ptr.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/shared_ptr.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/shared_ptr.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/timespec.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/timespec.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/timespec.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/timespec.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/array_byte.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/array_byte.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/array_byte.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/array_byte.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/byte.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/byte.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/byte.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/byte.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/optional.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/optional.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/optional.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/optional.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/string_view.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/string_view.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/string_view.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/string_view.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp20/span.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp20/span.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp20/span.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp20/span.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/define.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/define.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/define.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/define.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/define_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/define_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/define_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/define_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/deque.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/deque.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/deque.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/deque.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/ext.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/ext.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/ext.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/ext.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/ext_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/ext_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/ext_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/ext_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/fixint.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/fixint.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/fixint.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/fixint.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/fixint_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/fixint_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/fixint_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/fixint_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/float.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/float.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/float.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/float.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/int.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/int.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/int.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/int.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/int_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/int_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/int_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/int_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/list.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/list.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/list.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/list.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/map.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/map.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/map.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/map.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/map_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/map_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/map_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/map_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/msgpack_tuple.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/msgpack_tuple.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/msgpack_tuple.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/msgpack_tuple.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/msgpack_tuple_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/msgpack_tuple_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/msgpack_tuple_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/msgpack_tuple_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/nil.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/nil.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/nil.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/nil.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/nil_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/nil_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/nil_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/nil_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/pair.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/pair.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/pair.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/pair.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/raw.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/raw.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/raw.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/raw.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/raw_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/raw_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/raw_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/raw_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/set.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/set.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/set.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/set.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/size_equal_only.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/size_equal_only.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/size_equal_only.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/size_equal_only.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/size_equal_only_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/size_equal_only_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/size_equal_only_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/size_equal_only_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/string.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/string.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/string.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/string.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/tr1/unordered_map.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/tr1/unordered_map.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/tr1/unordered_map.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/tr1/unordered_map.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/tr1/unordered_set.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/tr1/unordered_set.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/tr1/unordered_set.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/tr1/unordered_set.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/v4raw.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/v4raw.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/v4raw.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/v4raw.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/v4raw_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/v4raw_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/v4raw_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/v4raw_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_bool.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_bool.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_bool.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_bool.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_char.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_char.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_char.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_char.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_unsigned_char.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_unsigned_char.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_unsigned_char.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_unsigned_char.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/wstring.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/wstring.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/wstring.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/adaptor/wstring.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/cpp_config.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/cpp_config.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/cpp_config.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/cpp_config.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/cpp_config_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/cpp_config_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/cpp_config_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/cpp_config_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp03_zone.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp03_zone.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp03_zone.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp03_zone.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp03_zone_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp03_zone_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp03_zone_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp03_zone_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp11_zone.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp11_zone.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp11_zone.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp11_zone.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp11_zone_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp11_zone_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp11_zone_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp11_zone_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/fbuffer.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/fbuffer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/fbuffer.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/fbuffer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/fbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/fbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/fbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/fbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/iterator.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/iterator.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/iterator.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/iterator.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/iterator_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/iterator_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/iterator_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/iterator_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/meta.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/meta.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/meta.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/meta.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/meta_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/meta_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/meta_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/meta_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_fwd.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_fwd.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_fwd.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_fwd.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_fwd_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_fwd_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_fwd_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/object_fwd_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/pack.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/pack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/pack.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/pack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/pack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/pack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/pack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/pack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/parse_return.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/parse_return.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/parse_return.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/parse_return.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/sbuffer.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/sbuffer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/sbuffer.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/sbuffer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/sbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/sbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/sbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/sbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack_exception.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack_exception.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack_exception.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/unpack_exception.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/version.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/version.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/version.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/version.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/versioning.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/versioning.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/versioning.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/versioning.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/vrefbuffer.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/vrefbuffer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/vrefbuffer.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/vrefbuffer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/vrefbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/vrefbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/vrefbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/vrefbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zbuffer.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zbuffer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zbuffer.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zbuffer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zone.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zone.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zone.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zone.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zone_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zone_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zone_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v1/zone_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/adaptor_base.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/adaptor_base.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/adaptor_base.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/adaptor_base.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/adaptor_base_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/adaptor_base_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/adaptor_base_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/adaptor_base_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/array_ref_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/array_ref_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/array_ref_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/array_ref_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/check_container_size_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/check_container_size_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/check_container_size_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/check_container_size_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/define_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/define_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/define_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/define_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/ext_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/ext_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/ext_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/ext_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/fixint_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/fixint_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/fixint_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/fixint_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/int_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/int_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/int_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/int_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/map_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/map_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/map_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/map_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/msgpack_tuple_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/msgpack_tuple_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/msgpack_tuple_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/msgpack_tuple_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/nil_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/nil_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/nil_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/nil_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/raw_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/raw_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/raw_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/raw_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/size_equal_only_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/size_equal_only_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/size_equal_only_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/size_equal_only_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/v4raw_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/v4raw_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/v4raw_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/adaptor/v4raw_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/cpp_config_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/cpp_config_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/cpp_config_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/cpp_config_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/create_object_visitor.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/create_object_visitor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/create_object_visitor.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/create_object_visitor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/create_object_visitor_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/create_object_visitor_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/create_object_visitor_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/create_object_visitor_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/detail/cpp03_zone_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/detail/cpp03_zone_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/detail/cpp03_zone_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/detail/cpp03_zone_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/detail/cpp11_zone_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/detail/cpp11_zone_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/detail/cpp11_zone_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/detail/cpp11_zone_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/fbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/fbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/fbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/fbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/iterator_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/iterator_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/iterator_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/iterator_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/meta_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/meta_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/meta_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/meta_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/null_visitor.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/null_visitor.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/null_visitor.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/null_visitor.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/null_visitor_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/null_visitor_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/null_visitor_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/null_visitor_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_fwd.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_fwd.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_fwd.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_fwd.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_fwd_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_fwd_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_fwd_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/object_fwd_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/pack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/pack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/pack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/pack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse_return.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse_return.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse_return.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/parse_return.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/sbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/sbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/sbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/sbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/unpack.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/unpack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/unpack.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/unpack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/unpack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/unpack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/unpack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/unpack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/vrefbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/vrefbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/vrefbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/vrefbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_parse.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_parse.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_parse.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_parse.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_parse_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_parse_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_parse_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_parse_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_unpack.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_unpack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_unpack.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_unpack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_unpack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_unpack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_unpack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/x3_unpack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/zbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/zbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/zbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/zbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/zone_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/zone_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v2/zone_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v2/zone_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/adaptor_base.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/adaptor_base.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/adaptor_base.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/adaptor_base.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/adaptor_base_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/adaptor_base_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/adaptor_base_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/adaptor_base_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/array_ref_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/array_ref_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/array_ref_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/array_ref_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/check_container_size_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/check_container_size_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/check_container_size_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/check_container_size_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/define_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/define_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/define_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/define_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/ext_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/ext_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/ext_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/ext_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/fixint_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/fixint_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/fixint_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/fixint_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/int_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/int_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/int_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/int_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/map_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/map_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/map_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/map_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/nil_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/nil_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/nil_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/nil_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/raw_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/raw_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/raw_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/raw_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/size_equal_only_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/size_equal_only_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/size_equal_only_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/size_equal_only_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/v4raw_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/v4raw_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/v4raw_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/adaptor/v4raw_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/cpp_config_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/cpp_config_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/cpp_config_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/cpp_config_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/create_object_visitor_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/create_object_visitor_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/create_object_visitor_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/create_object_visitor_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/detail/cpp03_zone_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/detail/cpp03_zone_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/detail/cpp03_zone_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/detail/cpp03_zone_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/detail/cpp11_zone_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/detail/cpp11_zone_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/detail/cpp11_zone_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/detail/cpp11_zone_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/fbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/fbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/fbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/fbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/iterator_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/iterator_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/iterator_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/iterator_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/meta_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/meta_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/meta_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/meta_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/null_visitor_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/null_visitor_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/null_visitor_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/null_visitor_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_fwd.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_fwd.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_fwd.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_fwd.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_fwd_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_fwd_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_fwd_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/object_fwd_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/pack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/pack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/pack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/pack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse_return.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse_return.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse_return.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/parse_return.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/sbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/sbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/sbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/sbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/unpack.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/unpack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/unpack.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/unpack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/unpack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/unpack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/unpack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/unpack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/vrefbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/vrefbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/vrefbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/vrefbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_parse_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_parse_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_parse_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_parse_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_unpack.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_unpack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_unpack.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_unpack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_unpack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_unpack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_unpack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/x3_unpack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/zbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/zbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/zbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/zbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/zone_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/zone_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/v3/zone_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/v3/zone_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/version.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/version.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/version.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/version.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/version_master.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/version_master.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/version_master.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/version_master.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/versioning.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/versioning.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/versioning.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/versioning.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/vrefbuffer.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/vrefbuffer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/vrefbuffer.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/vrefbuffer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/vrefbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/vrefbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/vrefbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/vrefbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_parse.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_parse.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_parse.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/x3_parse.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_parse_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_parse_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_parse_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/x3_parse_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_unpack.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_unpack.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_unpack.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/x3_unpack.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_unpack_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_unpack_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/x3_unpack_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/x3_unpack_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/zbuffer.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/zbuffer.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/zbuffer.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/zbuffer.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/zbuffer_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/zbuffer_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/zbuffer_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/zbuffer_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/zone.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/zone.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/zone.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/zone.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/zone_decl.hpp b/barretenberg/cpp/src/msgpack-c/include/msgpack/zone_decl.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/include/msgpack/zone_decl.hpp rename to barretenberg/cpp/src/msgpack-c/include/msgpack/zone_decl.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/make_file_list.sh b/barretenberg/cpp/src/msgpack-c/make_file_list.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/make_file_list.sh rename to barretenberg/cpp/src/msgpack-c/make_file_list.sh diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/makedist.sh b/barretenberg/cpp/src/msgpack-c/makedist.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/makedist.sh rename to barretenberg/cpp/src/msgpack-c/makedist.sh diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/msgpack-cxx-config.cmake.in b/barretenberg/cpp/src/msgpack-c/msgpack-cxx-config.cmake.in similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/msgpack-cxx-config.cmake.in rename to barretenberg/cpp/src/msgpack-c/msgpack-cxx-config.cmake.in diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/preprocess b/barretenberg/cpp/src/msgpack-c/preprocess similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/preprocess rename to barretenberg/cpp/src/msgpack-c/preprocess diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test-install/CMakeLists.txt b/barretenberg/cpp/src/msgpack-c/test-install/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test-install/CMakeLists.txt rename to barretenberg/cpp/src/msgpack-c/test-install/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test-install/simple.cpp b/barretenberg/cpp/src/msgpack-c/test-install/simple.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test-install/simple.cpp rename to barretenberg/cpp/src/msgpack-c/test-install/simple.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/CMakeLists.txt b/barretenberg/cpp/src/msgpack-c/test/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/CMakeLists.txt rename to barretenberg/cpp/src/msgpack-c/test/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/array_ref.cpp b/barretenberg/cpp/src/msgpack-c/test/array_ref.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/array_ref.cpp rename to barretenberg/cpp/src/msgpack-c/test/array_ref.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/boost_fusion.cpp b/barretenberg/cpp/src/msgpack-c/test/boost_fusion.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/boost_fusion.cpp rename to barretenberg/cpp/src/msgpack-c/test/boost_fusion.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/boost_optional.cpp b/barretenberg/cpp/src/msgpack-c/test/boost_optional.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/boost_optional.cpp rename to barretenberg/cpp/src/msgpack-c/test/boost_optional.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/boost_string_ref.cpp b/barretenberg/cpp/src/msgpack-c/test/boost_string_ref.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/boost_string_ref.cpp rename to barretenberg/cpp/src/msgpack-c/test/boost_string_ref.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/boost_string_view.cpp b/barretenberg/cpp/src/msgpack-c/test/boost_string_view.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/boost_string_view.cpp rename to barretenberg/cpp/src/msgpack-c/test/boost_string_view.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/boost_variant.cpp b/barretenberg/cpp/src/msgpack-c/test/boost_variant.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/boost_variant.cpp rename to barretenberg/cpp/src/msgpack-c/test/boost_variant.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/buffer.cpp b/barretenberg/cpp/src/msgpack-c/test/buffer.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/buffer.cpp rename to barretenberg/cpp/src/msgpack-c/test/buffer.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/buffer_c.cpp b/barretenberg/cpp/src/msgpack-c/test/buffer_c.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/buffer_c.cpp rename to barretenberg/cpp/src/msgpack-c/test/buffer_c.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/carray.cpp b/barretenberg/cpp/src/msgpack-c/test/carray.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/carray.cpp rename to barretenberg/cpp/src/msgpack-c/test/carray.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/cases.cpp b/barretenberg/cpp/src/msgpack-c/test/cases.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/cases.cpp rename to barretenberg/cpp/src/msgpack-c/test/cases.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/cases.mpac b/barretenberg/cpp/src/msgpack-c/test/cases.mpac similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/cases.mpac rename to barretenberg/cpp/src/msgpack-c/test/cases.mpac diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/cases_compact.mpac b/barretenberg/cpp/src/msgpack-c/test/cases_compact.mpac similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/cases_compact.mpac rename to barretenberg/cpp/src/msgpack-c/test/cases_compact.mpac diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/convert.cpp b/barretenberg/cpp/src/msgpack-c/test/convert.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/convert.cpp rename to barretenberg/cpp/src/msgpack-c/test/convert.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/fixint.cpp b/barretenberg/cpp/src/msgpack-c/test/fixint.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/fixint.cpp rename to barretenberg/cpp/src/msgpack-c/test/fixint.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/fuzz_unpack_pack_fuzzer_cpp11.cpp b/barretenberg/cpp/src/msgpack-c/test/fuzz_unpack_pack_fuzzer_cpp11.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/fuzz_unpack_pack_fuzzer_cpp11.cpp rename to barretenberg/cpp/src/msgpack-c/test/fuzz_unpack_pack_fuzzer_cpp11.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/inc_adaptor_define.cpp b/barretenberg/cpp/src/msgpack-c/test/inc_adaptor_define.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/inc_adaptor_define.cpp rename to barretenberg/cpp/src/msgpack-c/test/inc_adaptor_define.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/iterator_cpp11.cpp b/barretenberg/cpp/src/msgpack-c/test/iterator_cpp11.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/iterator_cpp11.cpp rename to barretenberg/cpp/src/msgpack-c/test/iterator_cpp11.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/json.cpp b/barretenberg/cpp/src/msgpack-c/test/json.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/json.cpp rename to barretenberg/cpp/src/msgpack-c/test/json.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/limit.cpp b/barretenberg/cpp/src/msgpack-c/test/limit.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/limit.cpp rename to barretenberg/cpp/src/msgpack-c/test/limit.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_basic.cpp b/barretenberg/cpp/src/msgpack-c/test/msgpack_basic.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_basic.cpp rename to barretenberg/cpp/src/msgpack-c/test/msgpack_basic.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_container.cpp b/barretenberg/cpp/src/msgpack-c/test/msgpack_container.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_container.cpp rename to barretenberg/cpp/src/msgpack-c/test/msgpack_container.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_cpp11.cpp b/barretenberg/cpp/src/msgpack-c/test/msgpack_cpp11.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_cpp11.cpp rename to barretenberg/cpp/src/msgpack-c/test/msgpack_cpp11.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_cpp17.cpp b/barretenberg/cpp/src/msgpack-c/test/msgpack_cpp17.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_cpp17.cpp rename to barretenberg/cpp/src/msgpack-c/test/msgpack_cpp17.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_cpp20.cpp b/barretenberg/cpp/src/msgpack-c/test/msgpack_cpp20.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_cpp20.cpp rename to barretenberg/cpp/src/msgpack-c/test/msgpack_cpp20.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_stream.cpp b/barretenberg/cpp/src/msgpack-c/test/msgpack_stream.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_stream.cpp rename to barretenberg/cpp/src/msgpack-c/test/msgpack_stream.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_tuple.cpp b/barretenberg/cpp/src/msgpack-c/test/msgpack_tuple.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_tuple.cpp rename to barretenberg/cpp/src/msgpack-c/test/msgpack_tuple.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_vref.cpp b/barretenberg/cpp/src/msgpack-c/test/msgpack_vref.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_vref.cpp rename to barretenberg/cpp/src/msgpack-c/test/msgpack_vref.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_x3_parse.cpp b/barretenberg/cpp/src/msgpack-c/test/msgpack_x3_parse.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/msgpack_x3_parse.cpp rename to barretenberg/cpp/src/msgpack-c/test/msgpack_x3_parse.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/multi_file1.cpp b/barretenberg/cpp/src/msgpack-c/test/multi_file1.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/multi_file1.cpp rename to barretenberg/cpp/src/msgpack-c/test/multi_file1.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/multi_file2.cpp b/barretenberg/cpp/src/msgpack-c/test/multi_file2.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/multi_file2.cpp rename to barretenberg/cpp/src/msgpack-c/test/multi_file2.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/object.cpp b/barretenberg/cpp/src/msgpack-c/test/object.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/object.cpp rename to barretenberg/cpp/src/msgpack-c/test/object.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/object_with_zone.cpp b/barretenberg/cpp/src/msgpack-c/test/object_with_zone.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/object_with_zone.cpp rename to barretenberg/cpp/src/msgpack-c/test/object_with_zone.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/pack_unpack.cpp b/barretenberg/cpp/src/msgpack-c/test/pack_unpack.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/pack_unpack.cpp rename to barretenberg/cpp/src/msgpack-c/test/pack_unpack.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/raw.cpp b/barretenberg/cpp/src/msgpack-c/test/raw.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/raw.cpp rename to barretenberg/cpp/src/msgpack-c/test/raw.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/reference.cpp b/barretenberg/cpp/src/msgpack-c/test/reference.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/reference.cpp rename to barretenberg/cpp/src/msgpack-c/test/reference.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/reference_cpp11.cpp b/barretenberg/cpp/src/msgpack-c/test/reference_cpp11.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/reference_cpp11.cpp rename to barretenberg/cpp/src/msgpack-c/test/reference_cpp11.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/reference_wrapper_cpp11.cpp b/barretenberg/cpp/src/msgpack-c/test/reference_wrapper_cpp11.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/reference_wrapper_cpp11.cpp rename to barretenberg/cpp/src/msgpack-c/test/reference_wrapper_cpp11.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/shared_ptr_cpp11.cpp b/barretenberg/cpp/src/msgpack-c/test/shared_ptr_cpp11.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/shared_ptr_cpp11.cpp rename to barretenberg/cpp/src/msgpack-c/test/shared_ptr_cpp11.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/size_equal_only.cpp b/barretenberg/cpp/src/msgpack-c/test/size_equal_only.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/size_equal_only.cpp rename to barretenberg/cpp/src/msgpack-c/test/size_equal_only.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/streaming.cpp b/barretenberg/cpp/src/msgpack-c/test/streaming.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/streaming.cpp rename to barretenberg/cpp/src/msgpack-c/test/streaming.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/test_allocator.hpp b/barretenberg/cpp/src/msgpack-c/test/test_allocator.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/test_allocator.hpp rename to barretenberg/cpp/src/msgpack-c/test/test_allocator.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/unique_ptr_cpp11.cpp b/barretenberg/cpp/src/msgpack-c/test/unique_ptr_cpp11.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/unique_ptr_cpp11.cpp rename to barretenberg/cpp/src/msgpack-c/test/unique_ptr_cpp11.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/user_class.cpp b/barretenberg/cpp/src/msgpack-c/test/user_class.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/user_class.cpp rename to barretenberg/cpp/src/msgpack-c/test/user_class.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/version.cpp b/barretenberg/cpp/src/msgpack-c/test/version.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/version.cpp rename to barretenberg/cpp/src/msgpack-c/test/version.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/visitor.cpp b/barretenberg/cpp/src/msgpack-c/test/visitor.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/visitor.cpp rename to barretenberg/cpp/src/msgpack-c/test/visitor.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/test/zone.cpp b/barretenberg/cpp/src/msgpack-c/test/zone.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/test/zone.cpp rename to barretenberg/cpp/src/msgpack-c/test/zone.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/msgpack-c/update_version.sh b/barretenberg/cpp/src/msgpack-c/update_version.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/msgpack-c/update_version.sh rename to barretenberg/cpp/src/msgpack-c/update_version.sh diff --git a/circuits/cpp/barretenberg/cpp/srs_db/download_ignition.sh b/barretenberg/cpp/srs_db/download_ignition.sh similarity index 100% rename from circuits/cpp/barretenberg/cpp/srs_db/download_ignition.sh rename to barretenberg/cpp/srs_db/download_ignition.sh diff --git a/circuits/cpp/barretenberg/cpp/srs_db/grumpkin/monomial/README.md b/barretenberg/cpp/srs_db/grumpkin/monomial/README.md similarity index 100% rename from circuits/cpp/barretenberg/cpp/srs_db/grumpkin/monomial/README.md rename to barretenberg/cpp/srs_db/grumpkin/monomial/README.md diff --git a/circuits/cpp/barretenberg/cpp/srs_db/ignition/monomial/checksums b/barretenberg/cpp/srs_db/ignition/monomial/checksums similarity index 100% rename from circuits/cpp/barretenberg/cpp/srs_db/ignition/monomial/checksums rename to barretenberg/cpp/srs_db/ignition/monomial/checksums diff --git a/circuits/cpp/barretenberg/cpp/srs_db/ignition/monomial/g2.dat b/barretenberg/cpp/srs_db/ignition/monomial/g2.dat similarity index 100% rename from circuits/cpp/barretenberg/cpp/srs_db/ignition/monomial/g2.dat rename to barretenberg/cpp/srs_db/ignition/monomial/g2.dat diff --git a/circuits/cpp/barretenberg/exports.json b/barretenberg/exports.json similarity index 100% rename from circuits/cpp/barretenberg/exports.json rename to barretenberg/exports.json diff --git a/circuits/cpp/barretenberg/flake.lock b/barretenberg/flake.lock similarity index 100% rename from circuits/cpp/barretenberg/flake.lock rename to barretenberg/flake.lock diff --git a/circuits/cpp/barretenberg/flake.nix b/barretenberg/flake.nix similarity index 100% rename from circuits/cpp/barretenberg/flake.nix rename to barretenberg/flake.nix diff --git a/circuits/cpp/barretenberg/scripts/bindgen.sh b/barretenberg/scripts/bindgen.sh similarity index 100% rename from circuits/cpp/barretenberg/scripts/bindgen.sh rename to barretenberg/scripts/bindgen.sh diff --git a/circuits/cpp/barretenberg/scripts/c_bind_files.txt b/barretenberg/scripts/c_bind_files.txt similarity index 100% rename from circuits/cpp/barretenberg/scripts/c_bind_files.txt rename to barretenberg/scripts/c_bind_files.txt diff --git a/circuits/cpp/barretenberg/scripts/decls_json.py b/barretenberg/scripts/decls_json.py similarity index 100% rename from circuits/cpp/barretenberg/scripts/decls_json.py rename to barretenberg/scripts/decls_json.py diff --git a/circuits/cpp/barretenberg/sol/.gitignore b/barretenberg/sol/.gitignore similarity index 100% rename from circuits/cpp/barretenberg/sol/.gitignore rename to barretenberg/sol/.gitignore diff --git a/circuits/cpp/barretenberg/sol/Dockerfile b/barretenberg/sol/Dockerfile similarity index 100% rename from circuits/cpp/barretenberg/sol/Dockerfile rename to barretenberg/sol/Dockerfile diff --git a/circuits/cpp/barretenberg/sol/README.md b/barretenberg/sol/README.md similarity index 100% rename from circuits/cpp/barretenberg/sol/README.md rename to barretenberg/sol/README.md diff --git a/circuits/cpp/barretenberg/sol/bootstrap.sh b/barretenberg/sol/bootstrap.sh similarity index 100% rename from circuits/cpp/barretenberg/sol/bootstrap.sh rename to barretenberg/sol/bootstrap.sh diff --git a/circuits/cpp/barretenberg/sol/figures/verifier.png b/barretenberg/sol/figures/verifier.png similarity index 100% rename from circuits/cpp/barretenberg/sol/figures/verifier.png rename to barretenberg/sol/figures/verifier.png diff --git a/circuits/cpp/barretenberg/sol/foundry.toml b/barretenberg/sol/foundry.toml similarity index 100% rename from circuits/cpp/barretenberg/sol/foundry.toml rename to barretenberg/sol/foundry.toml diff --git a/circuits/cpp/barretenberg/sol/lib/forge-std b/barretenberg/sol/lib/forge-std similarity index 100% rename from circuits/cpp/barretenberg/sol/lib/forge-std rename to barretenberg/sol/lib/forge-std diff --git a/circuits/cpp/barretenberg/sol/lib/openzeppelin-contracts b/barretenberg/sol/lib/openzeppelin-contracts similarity index 100% rename from circuits/cpp/barretenberg/sol/lib/openzeppelin-contracts rename to barretenberg/sol/lib/openzeppelin-contracts diff --git a/circuits/cpp/barretenberg/sol/lib/solidity-stringutils b/barretenberg/sol/lib/solidity-stringutils similarity index 100% rename from circuits/cpp/barretenberg/sol/lib/solidity-stringutils rename to barretenberg/sol/lib/solidity-stringutils diff --git a/circuits/cpp/barretenberg/sol/remappings.txt b/barretenberg/sol/remappings.txt similarity index 100% rename from circuits/cpp/barretenberg/sol/remappings.txt rename to barretenberg/sol/remappings.txt diff --git a/circuits/cpp/barretenberg/sol/scripts/init.sh b/barretenberg/sol/scripts/init.sh similarity index 100% rename from circuits/cpp/barretenberg/sol/scripts/init.sh rename to barretenberg/sol/scripts/init.sh diff --git a/circuits/cpp/barretenberg/sol/scripts/install_foundry.sh b/barretenberg/sol/scripts/install_foundry.sh similarity index 100% rename from circuits/cpp/barretenberg/sol/scripts/install_foundry.sh rename to barretenberg/sol/scripts/install_foundry.sh diff --git a/circuits/cpp/barretenberg/sol/scripts/run_fuzzer.sh b/barretenberg/sol/scripts/run_fuzzer.sh similarity index 100% rename from circuits/cpp/barretenberg/sol/scripts/run_fuzzer.sh rename to barretenberg/sol/scripts/run_fuzzer.sh diff --git a/circuits/cpp/barretenberg/sol/src/interfaces/IVerifier.sol b/barretenberg/sol/src/interfaces/IVerifier.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/src/interfaces/IVerifier.sol rename to barretenberg/sol/src/interfaces/IVerifier.sol diff --git a/circuits/cpp/barretenberg/sol/src/ultra/BaseUltraVerifier.sol b/barretenberg/sol/src/ultra/BaseUltraVerifier.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/src/ultra/BaseUltraVerifier.sol rename to barretenberg/sol/src/ultra/BaseUltraVerifier.sol diff --git a/circuits/cpp/barretenberg/sol/src/ultra/instance/Add2UltraVerifier.sol b/barretenberg/sol/src/ultra/instance/Add2UltraVerifier.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/src/ultra/instance/Add2UltraVerifier.sol rename to barretenberg/sol/src/ultra/instance/Add2UltraVerifier.sol diff --git a/circuits/cpp/barretenberg/sol/src/ultra/instance/BlakeUltraVerifier.sol b/barretenberg/sol/src/ultra/instance/BlakeUltraVerifier.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/src/ultra/instance/BlakeUltraVerifier.sol rename to barretenberg/sol/src/ultra/instance/BlakeUltraVerifier.sol diff --git a/circuits/cpp/barretenberg/sol/src/ultra/instance/RecursiveUltraVerifier.sol b/barretenberg/sol/src/ultra/instance/RecursiveUltraVerifier.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/src/ultra/instance/RecursiveUltraVerifier.sol rename to barretenberg/sol/src/ultra/instance/RecursiveUltraVerifier.sol diff --git a/circuits/cpp/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol rename to barretenberg/sol/src/ultra/keys/Add2UltraVerificationKey.sol diff --git a/circuits/cpp/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol rename to barretenberg/sol/src/ultra/keys/BlakeUltraVerificationKey.sol diff --git a/circuits/cpp/barretenberg/sol/src/ultra/keys/RecursiveUltraVerificationKey.sol b/barretenberg/sol/src/ultra/keys/RecursiveUltraVerificationKey.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/src/ultra/keys/RecursiveUltraVerificationKey.sol rename to barretenberg/sol/src/ultra/keys/RecursiveUltraVerificationKey.sol diff --git a/circuits/cpp/barretenberg/sol/test/base/DifferentialFuzzer.sol b/barretenberg/sol/test/base/DifferentialFuzzer.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/test/base/DifferentialFuzzer.sol rename to barretenberg/sol/test/base/DifferentialFuzzer.sol diff --git a/circuits/cpp/barretenberg/sol/test/base/TestBase.sol b/barretenberg/sol/test/base/TestBase.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/test/base/TestBase.sol rename to barretenberg/sol/test/base/TestBase.sol diff --git a/circuits/cpp/barretenberg/sol/test/ultra/Add2.t.sol b/barretenberg/sol/test/ultra/Add2.t.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/test/ultra/Add2.t.sol rename to barretenberg/sol/test/ultra/Add2.t.sol diff --git a/circuits/cpp/barretenberg/sol/test/ultra/Blake.t.sol b/barretenberg/sol/test/ultra/Blake.t.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/test/ultra/Blake.t.sol rename to barretenberg/sol/test/ultra/Blake.t.sol diff --git a/circuits/cpp/barretenberg/sol/test/ultra/Recursive.t.sol b/barretenberg/sol/test/ultra/Recursive.t.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/test/ultra/Recursive.t.sol rename to barretenberg/sol/test/ultra/Recursive.t.sol diff --git a/circuits/cpp/barretenberg/sol/test/ultra/TestBaseUltra.sol b/barretenberg/sol/test/ultra/TestBaseUltra.sol similarity index 100% rename from circuits/cpp/barretenberg/sol/test/ultra/TestBaseUltra.sol rename to barretenberg/sol/test/ultra/TestBaseUltra.sol diff --git a/circuits/cpp/barretenberg/ts/.dockerignore b/barretenberg/ts/.dockerignore similarity index 100% rename from circuits/cpp/barretenberg/ts/.dockerignore rename to barretenberg/ts/.dockerignore diff --git a/circuits/cpp/barretenberg/ts/.eslintrc.cjs b/barretenberg/ts/.eslintrc.cjs similarity index 100% rename from circuits/cpp/barretenberg/ts/.eslintrc.cjs rename to barretenberg/ts/.eslintrc.cjs diff --git a/circuits/cpp/barretenberg/ts/.gitignore b/barretenberg/ts/.gitignore similarity index 100% rename from circuits/cpp/barretenberg/ts/.gitignore rename to barretenberg/ts/.gitignore diff --git a/circuits/cpp/barretenberg/ts/.prettierrc.json b/barretenberg/ts/.prettierrc.json similarity index 100% rename from circuits/cpp/barretenberg/ts/.prettierrc.json rename to barretenberg/ts/.prettierrc.json diff --git a/circuits/cpp/barretenberg/ts/.yarn/releases/yarn-berry.cjs b/barretenberg/ts/.yarn/releases/yarn-berry.cjs similarity index 100% rename from circuits/cpp/barretenberg/ts/.yarn/releases/yarn-berry.cjs rename to barretenberg/ts/.yarn/releases/yarn-berry.cjs diff --git a/circuits/cpp/barretenberg/ts/.yarnrc.yml b/barretenberg/ts/.yarnrc.yml similarity index 100% rename from circuits/cpp/barretenberg/ts/.yarnrc.yml rename to barretenberg/ts/.yarnrc.yml diff --git a/barretenberg/ts/CHANGELOG.md b/barretenberg/ts/CHANGELOG.md index 352f3ac1273..4a19aa6095d 100644 --- a/barretenberg/ts/CHANGELOG.md +++ b/barretenberg/ts/CHANGELOG.md @@ -1,15 +1,213 @@ # Changelog -## [0.5.2](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.5.1...barretenberg.js-v0.5.2) (2023-09-08) +## [0.7.0](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.7...barretenberg.js-v0.7.0) (2023-09-13) + + +### Bug Fixes + +* Add cjs-entry to bbjs package files ([#2237](https://github.com/AztecProtocol/aztec-packages/issues/2237)) ([ae16193](https://github.com/AztecProtocol/aztec-packages/commit/ae16193b3cdb2da3d57a1c74f7e71f139ced54d1)) + + +### Miscellaneous + +* Add debugging to run_tests ([#2212](https://github.com/AztecProtocol/aztec-packages/issues/2212)) ([1c5e78a](https://github.com/AztecProtocol/aztec-packages/commit/1c5e78a4ac01bee4b785857447efdb02d8d9cb35)) + +## [0.6.7](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.6...barretenberg.js-v0.6.7) (2023-09-11) + + +### Miscellaneous + +* **barretenberg.js:** Synchronize aztec-packages versions + +## [0.6.6](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.5...barretenberg.js-v0.6.6) (2023-09-11) + + +### Miscellaneous + +* **barretenberg.js:** Synchronize aztec-packages versions + +## [0.6.5](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.4...barretenberg.js-v0.6.5) (2023-09-08) ### Miscellaneous -* **master:** Release 0.6.0 ([#2121](https://github.com/AztecProtocol/aztec-packages/issues/2121)) ([9bc8e11](https://github.com/AztecProtocol/aztec-packages/commit/9bc8e11ec4598c54d2c8f37c9f1a38ad90148f12)) +* **barretenberg.js:** Synchronize aztec-packages versions -## [0.6.0](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.5.1...barretenberg.js-v0.6.0) (2023-09-08) +## [0.6.4](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.3...barretenberg.js-v0.6.4) (2023-09-08) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions + +## [0.6.3](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.2...barretenberg.js-v0.6.3) (2023-09-08) + + +### Miscellaneous + +* **barretenberg.js:** Synchronize aztec-packages versions + +## [0.6.2](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.1...barretenberg.js-v0.6.2) (2023-09-08) + + +### Miscellaneous + +* **barretenberg.js:** Synchronize aztec-packages versions + +## [0.6.1](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.5.2...barretenberg.js-v0.6.1) (2023-09-08) + + +### Miscellaneous + +* **master:** Release 0.5.2 ([#2141](https://github.com/AztecProtocol/aztec-packages/issues/2141)) ([451aad6](https://github.com/AztecProtocol/aztec-packages/commit/451aad6ea92ebced9839ca14baae10cee327be35)) +* Release 0.5.2 ([f76b53c](https://github.com/AztecProtocol/aztec-packages/commit/f76b53c985116ac131a9b11b2a255feb7d0f8f13)) +* Release 0.6.1 ([1bd1a79](https://github.com/AztecProtocol/aztec-packages/commit/1bd1a79b0cefcd90306133aab141d992e8ea5fc3)) + +## [0.5.2](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.5.2...barretenberg.js-v0.5.2) (2023-09-08) + + +### Miscellaneous + +* Release 0.5.2 ([f76b53c](https://github.com/AztecProtocol/aztec-packages/commit/f76b53c985116ac131a9b11b2a255feb7d0f8f13)) + +## [0.5.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.5.0...barretenberg.js-v0.5.1) (2023-09-05) + + +### Features + +* Add `info` command to bb ([#2010](https://github.com/AztecProtocol/barretenberg/issues/2010)) ([2882d97](https://github.com/AztecProtocol/barretenberg/commit/2882d97f5165239badb328be80568e7d683c0465)) +* **ci:** Use content hash in build system, restrict docs build to *.ts or *.cpp ([#1953](https://github.com/AztecProtocol/barretenberg/issues/1953)) ([297a20d](https://github.com/AztecProtocol/barretenberg/commit/297a20d7878a4aabab1cabf2cc5d2d67f9e969c5)) + + +### Bug Fixes + +* **bb.js:** (breaking change) bundles bb.js properly so that it works in the browser and in node ([#1855](https://github.com/AztecProtocol/barretenberg/issues/1855)) ([bc93a5f](https://github.com/AztecProtocol/barretenberg/commit/bc93a5f8510d0dc600343e7e613ab84380d3c225)) +* **ci:** Incorrect content hash in some build targets ([#1973](https://github.com/AztecProtocol/barretenberg/issues/1973)) ([c6c469a](https://github.com/AztecProtocol/barretenberg/commit/c6c469aa5da7c6973f656ddf8af4fb20c3e8e4f6)) +* Master ([#1981](https://github.com/AztecProtocol/barretenberg/issues/1981)) ([59a454e](https://github.com/AztecProtocol/barretenberg/commit/59a454ecf1611424893e1cb093774a23dde39310)) + +## [0.5.0](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.6...barretenberg.js-v0.5.0) (2023-09-01) + + +### ⚠ BREAKING CHANGES + +* update to acvm 0.24.0 ([#1925](https://github.com/AztecProtocol/barretenberg/issues/1925)) + +### Miscellaneous Chores + +* Update to acvm 0.24.0 ([#1925](https://github.com/AztecProtocol/barretenberg/issues/1925)) ([5d8db8e](https://github.com/AztecProtocol/barretenberg/commit/5d8db8eb993334b43e24a51efba9c59e123320ab)) + +## [0.4.6](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.5...barretenberg.js-v0.4.6) (2023-08-29) + + +### Miscellaneous Chores + +* **barretenberg.js:** Synchronize barretenberg versions + +## [0.4.5](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.4...barretenberg.js-v0.4.5) (2023-08-28) + + +### Miscellaneous Chores + +* **barretenberg.js:** Synchronize barretenberg versions + +## [0.4.4](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.3...barretenberg.js-v0.4.4) (2023-08-28) + + +### Miscellaneous Chores + +* **barretenberg.js:** Synchronize barretenberg versions + +## [0.4.3](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.2...barretenberg.js-v0.4.3) (2023-08-23) + + +### Bug Fixes + +* Download SRS using one canonical URL across the codebase ([#1748](https://github.com/AztecProtocol/barretenberg/issues/1748)) ([5c91de7](https://github.com/AztecProtocol/barretenberg/commit/5c91de7296e054f6d5ac3dca94ca85e06d496048)) +* Proving fails when circuit has size > ~500K ([#1739](https://github.com/AztecProtocol/barretenberg/issues/1739)) ([6d32383](https://github.com/AztecProtocol/barretenberg/commit/6d323838a525190618d608598357ee4608c46699)) + +## [0.4.2](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.1...barretenberg.js-v0.4.2) (2023-08-21) + + +### Miscellaneous Chores + +* **barretenberg.js:** Synchronize barretenberg versions + +## [0.4.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.0...barretenberg.js-v0.4.1) (2023-08-21) + + +### Bug Fixes + +* **bb:** Fix Typo ([#1709](https://github.com/AztecProtocol/barretenberg/issues/1709)) ([286d64e](https://github.com/AztecProtocol/barretenberg/commit/286d64e6036336314114f1d2a25273f4dabe36f4)) + +## [0.4.0](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.6...barretenberg.js-v0.4.0) (2023-08-21) + + +### ⚠ BREAKING CHANGES + +* Barretenberg binaries now take in the encoded circuit instead of a json file ([#1618](https://github.com/AztecProtocol/barretenberg/issues/1618)) + +### Bug Fixes + +* Barretenberg binaries now take in the encoded circuit instead of a json file ([#1618](https://github.com/AztecProtocol/barretenberg/issues/1618)) ([180cdc9](https://github.com/AztecProtocol/barretenberg/commit/180cdc9ac7cf9aa793d9774dc866ceb4e6ec3fbc)) +* Bin reference when installing package ([#678](https://github.com/AztecProtocol/barretenberg/issues/678)) ([c734295](https://github.com/AztecProtocol/barretenberg/commit/c734295a10d2c40ede773519664170880f28b2b7)) +* Sync aztec master ([#680](https://github.com/AztecProtocol/barretenberg/issues/680)) ([3afc243](https://github.com/AztecProtocol/barretenberg/commit/3afc2438053f530e49fbebbdbadd8db8a630bb8c)) + +## [0.3.6](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.5...barretenberg.js-v0.3.6) (2023-08-08) + + +### Miscellaneous Chores + +* **barretenberg.js:** Synchronize barretenberg versions + +## [0.3.5](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.4...barretenberg.js-v0.3.5) (2023-08-07) + + +### Miscellaneous Chores + +* **barretenberg.js:** Synchronize barretenberg versions + +## [0.3.4](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.3...barretenberg.js-v0.3.4) (2023-07-25) + + +### Features + +* Modify bb.js to be compatible with next.js ([#544](https://github.com/AztecProtocol/barretenberg/issues/544)) ([d384089](https://github.com/AztecProtocol/barretenberg/commit/d384089f60d1a6d5baeb0d3459556a310b790366)) + +## [0.3.3](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.2...barretenberg.js-v0.3.3) (2023-07-17) + + +### Features + +* Bb and bb.js directly parse nargo bincode format. ([#610](https://github.com/AztecProtocol/barretenberg/issues/610)) ([d25e37a](https://github.com/AztecProtocol/barretenberg/commit/d25e37ad74b88dc45337b2a529ede3136dd4a699)) + +## [0.3.2](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.1...barretenberg.js-v0.3.2) (2023-07-12) + + +### Miscellaneous Chores + +* **barretenberg.js:** Synchronize barretenberg versions + +## [0.3.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.0...barretenberg.js-v0.3.1) (2023-07-11) + + +### Miscellaneous Chores + +* **barretenberg.js:** Synchronize barretenberg versions + +## 0.3.0 (2023-07-11) + + +### Features + +* **bb.js:** initial API ([#232](https://github.com/AztecProtocol/barretenberg/issues/232)) ([c860b02](https://github.com/AztecProtocol/barretenberg/commit/c860b02d80425de161af50acf33e94d94eb0659c)) +* **dsl:** Add ECDSA secp256r1 verification ([#582](https://github.com/AztecProtocol/barretenberg/issues/582)) ([adc4c7b](https://github.com/AztecProtocol/barretenberg/commit/adc4c7b4eb634eae28dd28e25b94b93a5b49c80e)) +* Initial native version of bb binary. ([#524](https://github.com/AztecProtocol/barretenberg/issues/524)) ([4a1b532](https://github.com/AztecProtocol/barretenberg/commit/4a1b5322dc78921d253e6a374eba0b616ab788df)) +* Optimize memory consumption of pedersen generators ([#413](https://github.com/AztecProtocol/barretenberg/issues/413)) ([d60b16a](https://github.com/AztecProtocol/barretenberg/commit/d60b16a14219fd4bd130ce4537c3e94bfa10128f)) +* **ts:** allow passing srs via env functions ([#260](https://github.com/AztecProtocol/barretenberg/issues/260)) ([ac78353](https://github.com/AztecProtocol/barretenberg/commit/ac7835304f4524039abf0a0df9ae85d905f55c86)) + + +### Bug Fixes + +* **build:** git add -f .yalc ([#265](https://github.com/AztecProtocol/barretenberg/issues/265)) ([7671192](https://github.com/AztecProtocol/barretenberg/commit/7671192c8a60ff0bc0f8ad3e14ac299ff780cc25)) +* bump timeout on common test. ([c9bc87d](https://github.com/AztecProtocol/barretenberg/commit/c9bc87d29fa1325162cb1e7bf2db7cc85747fd9e)) +* Trigger release-please ([#594](https://github.com/AztecProtocol/barretenberg/issues/594)) ([5042861](https://github.com/AztecProtocol/barretenberg/commit/5042861405df6b5659c0c32418720d8bdea81081)) diff --git a/circuits/cpp/barretenberg/ts/Dockerfile b/barretenberg/ts/Dockerfile similarity index 100% rename from circuits/cpp/barretenberg/ts/Dockerfile rename to barretenberg/ts/Dockerfile diff --git a/circuits/cpp/barretenberg/ts/README.md b/barretenberg/ts/README.md similarity index 100% rename from circuits/cpp/barretenberg/ts/README.md rename to barretenberg/ts/README.md diff --git a/circuits/cpp/barretenberg/ts/bb.js-dev b/barretenberg/ts/bb.js-dev similarity index 100% rename from circuits/cpp/barretenberg/ts/bb.js-dev rename to barretenberg/ts/bb.js-dev diff --git a/circuits/cpp/barretenberg/ts/cjs-entry/index.cjs b/barretenberg/ts/cjs-entry/index.cjs similarity index 100% rename from circuits/cpp/barretenberg/ts/cjs-entry/index.cjs rename to barretenberg/ts/cjs-entry/index.cjs diff --git a/circuits/cpp/barretenberg/ts/cjs-entry/index.d.ts b/barretenberg/ts/cjs-entry/index.d.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/cjs-entry/index.d.ts rename to barretenberg/ts/cjs-entry/index.d.ts diff --git a/circuits/cpp/barretenberg/ts/package.json b/barretenberg/ts/package.json similarity index 97% rename from circuits/cpp/barretenberg/ts/package.json rename to barretenberg/ts/package.json index a6ed00453a1..a13125a0191 100644 --- a/circuits/cpp/barretenberg/ts/package.json +++ b/barretenberg/ts/package.json @@ -1,7 +1,7 @@ { "name": "@aztec/bb.js", - "version": "0.6.7", - "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/circuits/cpp/barretenberg/ts", + "version": "0.7.0", + "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts", "license": "MIT", "type": "module", "types": "./cjs-entry/index.d.ts", diff --git a/circuits/cpp/barretenberg/ts/scripts/run_tests b/barretenberg/ts/scripts/run_tests similarity index 100% rename from circuits/cpp/barretenberg/ts/scripts/run_tests rename to barretenberg/ts/scripts/run_tests diff --git a/circuits/cpp/barretenberg/ts/src/async_map/index.ts b/barretenberg/ts/src/async_map/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/async_map/index.ts rename to barretenberg/ts/src/async_map/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg-threads.wasm b/barretenberg/ts/src/barretenberg-threads.wasm similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg-threads.wasm rename to barretenberg/ts/src/barretenberg-threads.wasm diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg.wasm b/barretenberg/ts/src/barretenberg.wasm similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg.wasm rename to barretenberg/ts/src/barretenberg.wasm diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg/index.ts b/barretenberg/ts/src/barretenberg/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg/index.ts rename to barretenberg/ts/src/barretenberg/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_api/blake2s.test.ts b/barretenberg/ts/src/barretenberg_api/blake2s.test.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_api/blake2s.test.ts rename to barretenberg/ts/src/barretenberg_api/blake2s.test.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_api/common.test.ts b/barretenberg/ts/src/barretenberg_api/common.test.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_api/common.test.ts rename to barretenberg/ts/src/barretenberg_api/common.test.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_api/index.ts b/barretenberg/ts/src/barretenberg_api/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_api/index.ts rename to barretenberg/ts/src/barretenberg_api/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_api/pedersen.test.ts b/barretenberg/ts/src/barretenberg_api/pedersen.test.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_api/pedersen.test.ts rename to barretenberg/ts/src/barretenberg_api/pedersen.test.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_api/schnorr.test.ts b/barretenberg/ts/src/barretenberg_api/schnorr.test.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_api/schnorr.test.ts rename to barretenberg/ts/src/barretenberg_api/schnorr.test.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_binder/heap_allocator.ts b/barretenberg/ts/src/barretenberg_binder/heap_allocator.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_binder/heap_allocator.ts rename to barretenberg/ts/src/barretenberg_binder/heap_allocator.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_binder/index.ts b/barretenberg/ts/src/barretenberg_binder/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_binder/index.ts rename to barretenberg/ts/src/barretenberg_binder/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_base/index.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_base/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_base/index.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_base/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/index.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/index.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts b/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts rename to barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/index.ts b/barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/index.ts rename to barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/wasm-module.d.ts b/barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/wasm-module.d.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/wasm-module.d.ts rename to barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/wasm-module.d.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/fetch_code/index.ts b/barretenberg/ts/src/barretenberg_wasm/fetch_code/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/fetch_code/index.ts rename to barretenberg/ts/src/barretenberg_wasm/fetch_code/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/fetch_code/node/index.ts b/barretenberg/ts/src/barretenberg_wasm/fetch_code/node/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/fetch_code/node/index.ts rename to barretenberg/ts/src/barretenberg_wasm/fetch_code/node/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/helpers/browser/index.ts b/barretenberg/ts/src/barretenberg_wasm/helpers/browser/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/helpers/browser/index.ts rename to barretenberg/ts/src/barretenberg_wasm/helpers/browser/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/helpers/index.ts b/barretenberg/ts/src/barretenberg_wasm/helpers/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/helpers/index.ts rename to barretenberg/ts/src/barretenberg_wasm/helpers/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/helpers/node/index.ts b/barretenberg/ts/src/barretenberg_wasm/helpers/node/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/helpers/node/index.ts rename to barretenberg/ts/src/barretenberg_wasm/helpers/node/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/helpers/node/node_endpoint.ts b/barretenberg/ts/src/barretenberg_wasm/helpers/node/node_endpoint.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/helpers/node/node_endpoint.ts rename to barretenberg/ts/src/barretenberg_wasm/helpers/node/node_endpoint.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/index.test.ts b/barretenberg/ts/src/barretenberg_wasm/index.test.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/index.test.ts rename to barretenberg/ts/src/barretenberg_wasm/index.test.ts diff --git a/circuits/cpp/barretenberg/ts/src/barretenberg_wasm/index.ts b/barretenberg/ts/src/barretenberg_wasm/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/barretenberg_wasm/index.ts rename to barretenberg/ts/src/barretenberg_wasm/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/bigint-array/index.ts b/barretenberg/ts/src/bigint-array/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/bigint-array/index.ts rename to barretenberg/ts/src/bigint-array/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/bindgen/function_declaration.ts b/barretenberg/ts/src/bindgen/function_declaration.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/bindgen/function_declaration.ts rename to barretenberg/ts/src/bindgen/function_declaration.ts diff --git a/circuits/cpp/barretenberg/ts/src/bindgen/index.ts b/barretenberg/ts/src/bindgen/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/bindgen/index.ts rename to barretenberg/ts/src/bindgen/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/bindgen/mappings.ts b/barretenberg/ts/src/bindgen/mappings.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/bindgen/mappings.ts rename to barretenberg/ts/src/bindgen/mappings.ts diff --git a/circuits/cpp/barretenberg/ts/src/bindgen/rust.ts b/barretenberg/ts/src/bindgen/rust.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/bindgen/rust.ts rename to barretenberg/ts/src/bindgen/rust.ts diff --git a/circuits/cpp/barretenberg/ts/src/bindgen/to_camel_case.ts b/barretenberg/ts/src/bindgen/to_camel_case.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/bindgen/to_camel_case.ts rename to barretenberg/ts/src/bindgen/to_camel_case.ts diff --git a/circuits/cpp/barretenberg/ts/src/bindgen/typescript.ts b/barretenberg/ts/src/bindgen/typescript.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/bindgen/typescript.ts rename to barretenberg/ts/src/bindgen/typescript.ts diff --git a/circuits/cpp/barretenberg/ts/src/crs/browser/cached_net_crs.ts b/barretenberg/ts/src/crs/browser/cached_net_crs.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/crs/browser/cached_net_crs.ts rename to barretenberg/ts/src/crs/browser/cached_net_crs.ts diff --git a/circuits/cpp/barretenberg/ts/src/crs/browser/index.ts b/barretenberg/ts/src/crs/browser/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/crs/browser/index.ts rename to barretenberg/ts/src/crs/browser/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/crs/index.ts b/barretenberg/ts/src/crs/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/crs/index.ts rename to barretenberg/ts/src/crs/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/crs/net_crs.ts b/barretenberg/ts/src/crs/net_crs.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/crs/net_crs.ts rename to barretenberg/ts/src/crs/net_crs.ts diff --git a/circuits/cpp/barretenberg/ts/src/crs/node/ignition_files_crs.ts b/barretenberg/ts/src/crs/node/ignition_files_crs.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/crs/node/ignition_files_crs.ts rename to barretenberg/ts/src/crs/node/ignition_files_crs.ts diff --git a/circuits/cpp/barretenberg/ts/src/crs/node/index.ts b/barretenberg/ts/src/crs/node/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/crs/node/index.ts rename to barretenberg/ts/src/crs/node/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/examples/simple.rawtest.ts b/barretenberg/ts/src/examples/simple.rawtest.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/examples/simple.rawtest.ts rename to barretenberg/ts/src/examples/simple.rawtest.ts diff --git a/circuits/cpp/barretenberg/ts/src/examples/simple.test.ts b/barretenberg/ts/src/examples/simple.test.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/examples/simple.test.ts rename to barretenberg/ts/src/examples/simple.test.ts diff --git a/circuits/cpp/barretenberg/ts/src/index.html b/barretenberg/ts/src/index.html similarity index 100% rename from circuits/cpp/barretenberg/ts/src/index.html rename to barretenberg/ts/src/index.html diff --git a/circuits/cpp/barretenberg/ts/src/index.ts b/barretenberg/ts/src/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/index.ts rename to barretenberg/ts/src/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/info.json b/barretenberg/ts/src/info.json similarity index 100% rename from circuits/cpp/barretenberg/ts/src/info.json rename to barretenberg/ts/src/info.json diff --git a/circuits/cpp/barretenberg/ts/src/main.ts b/barretenberg/ts/src/main.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/main.ts rename to barretenberg/ts/src/main.ts diff --git a/circuits/cpp/barretenberg/ts/src/random/browser/index.ts b/barretenberg/ts/src/random/browser/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/random/browser/index.ts rename to barretenberg/ts/src/random/browser/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/random/index.ts b/barretenberg/ts/src/random/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/random/index.ts rename to barretenberg/ts/src/random/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/random/node/index.ts b/barretenberg/ts/src/random/node/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/random/node/index.ts rename to barretenberg/ts/src/random/node/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/serialize/buffer_reader.ts b/barretenberg/ts/src/serialize/buffer_reader.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/serialize/buffer_reader.ts rename to barretenberg/ts/src/serialize/buffer_reader.ts diff --git a/circuits/cpp/barretenberg/ts/src/serialize/index.ts b/barretenberg/ts/src/serialize/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/serialize/index.ts rename to barretenberg/ts/src/serialize/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/serialize/output_type.ts b/barretenberg/ts/src/serialize/output_type.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/serialize/output_type.ts rename to barretenberg/ts/src/serialize/output_type.ts diff --git a/circuits/cpp/barretenberg/ts/src/serialize/serialize.ts b/barretenberg/ts/src/serialize/serialize.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/serialize/serialize.ts rename to barretenberg/ts/src/serialize/serialize.ts diff --git a/circuits/cpp/barretenberg/ts/src/types/fields.ts b/barretenberg/ts/src/types/fields.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/types/fields.ts rename to barretenberg/ts/src/types/fields.ts diff --git a/circuits/cpp/barretenberg/ts/src/types/fixed_size_buffer.ts b/barretenberg/ts/src/types/fixed_size_buffer.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/types/fixed_size_buffer.ts rename to barretenberg/ts/src/types/fixed_size_buffer.ts diff --git a/circuits/cpp/barretenberg/ts/src/types/index.ts b/barretenberg/ts/src/types/index.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/types/index.ts rename to barretenberg/ts/src/types/index.ts diff --git a/circuits/cpp/barretenberg/ts/src/types/point.ts b/barretenberg/ts/src/types/point.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/types/point.ts rename to barretenberg/ts/src/types/point.ts diff --git a/circuits/cpp/barretenberg/ts/src/types/ptr.ts b/barretenberg/ts/src/types/ptr.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/types/ptr.ts rename to barretenberg/ts/src/types/ptr.ts diff --git a/circuits/cpp/barretenberg/ts/src/types/raw_buffer.ts b/barretenberg/ts/src/types/raw_buffer.ts similarity index 100% rename from circuits/cpp/barretenberg/ts/src/types/raw_buffer.ts rename to barretenberg/ts/src/types/raw_buffer.ts diff --git a/circuits/cpp/barretenberg/ts/tsconfig.browser.json b/barretenberg/ts/tsconfig.browser.json similarity index 100% rename from circuits/cpp/barretenberg/ts/tsconfig.browser.json rename to barretenberg/ts/tsconfig.browser.json diff --git a/circuits/cpp/barretenberg/ts/tsconfig.json b/barretenberg/ts/tsconfig.json similarity index 100% rename from circuits/cpp/barretenberg/ts/tsconfig.json rename to barretenberg/ts/tsconfig.json diff --git a/circuits/cpp/barretenberg/ts/webpack.config.js b/barretenberg/ts/webpack.config.js similarity index 100% rename from circuits/cpp/barretenberg/ts/webpack.config.js rename to barretenberg/ts/webpack.config.js diff --git a/circuits/cpp/barretenberg/ts/yarn.lock b/barretenberg/ts/yarn.lock similarity index 100% rename from circuits/cpp/barretenberg/ts/yarn.lock rename to barretenberg/ts/yarn.lock diff --git a/circuits/cpp/barretenberg/wasi-sdk.nix b/barretenberg/wasi-sdk.nix similarity index 100% rename from circuits/cpp/barretenberg/wasi-sdk.nix rename to barretenberg/wasi-sdk.nix diff --git a/bootstrap.sh b/bootstrap.sh index 62b93deb023..88bca947176 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,20 +1,42 @@ #!/bin/bash set -eu -export CLEAN=${1:-} +export CMD=${1:-} cd "$(dirname "$0")" +# Lightweight bootstrap. Run `./bootstrap.sh clean` to bypass. +if [ -f .bootstrapped ]; then + echo -e '\033[1mRebuild L1 contracts...\033[0m' + (cd l1-contracts && forge build) + + echo -e '\n\033[1mUpdate npm deps...\033[0m' + (cd yarn-project && yarn install) + + echo -e '\n\033[1mRebuild Noir contracts...\033[0m' + (cd yarn-project/noir-contracts && yarn noir:build:all 2> /dev/null) + + echo -e '\n\033[1mRebuild barretenberg wasm...\033[0m' + (cd barretenberg/cpp && cmake --build --preset wasm && cmake --build --preset wasm-threads) + + echo -e '\n\033[1mRebuild circuits wasm...\033[0m' + (cd circuits/cpp && cmake --build --preset wasm -j --target aztec3-circuits.wasm) + + exit 0 +fi + # Remove all untracked files and directories. -if [ -n "$CLEAN" ]; then - if [ "$CLEAN" = "clean" ]; then +if [ -n "$CMD" ]; then + if [ "$CMD" = "clean" ]; then echo "WARNING: This will erase *all* untracked files, including hooks and submodules." echo -n "Continue? [y/n] " read user_input if [ "$user_input" != "y" ] && [ "$user_input" != "Y" ]; then exit 1 fi + rm .bootstrapped rm -rf .git/hooks/* + rm -rf .git/modules/* git clean -fd for SUBMODULE in $(git config --file .gitmodules --get-regexp path | awk '{print $2}'); do rm -rf $SUBMODULE @@ -34,5 +56,14 @@ if [ ! -f ~/.nvm/nvm.sh ]; then exit 1 fi +# Install pre-commit git hooks. +HOOKS_DIR=$(git rev-parse --git-path hooks) +echo "(cd barretenberg/cpp && ./format.sh staged)" > $HOOKS_DIR/pre-commit +echo "(cd circuits/cpp && ./format.sh staged)" >> $HOOKS_DIR/pre-commit +chmod +x $HOOKS_DIR/pre-commit + +barretenberg/cpp/bootstrap.sh circuits/cpp/bootstrap.sh yarn-project/bootstrap.sh + +touch .bootstrapped \ No newline at end of file diff --git a/bootstrap_docker.sh b/bootstrap_docker.sh index 4fced1f99a2..a0c1cdf3294 100755 --- a/bootstrap_docker.sh +++ b/bootstrap_docker.sh @@ -36,7 +36,7 @@ if [ -z "$PROJECT_NAME" ]; then fi fi -source ./build-system/scripts/setup_env $COMMIT_HASH '' mainframe_$USER +source ./build-system/scripts/setup_env $COMMIT_HASH '' mainframe_$USER > /dev/null docker buildx create --name multi-platform-builder --bootstrap --use build_local $PROJECT_NAME $ONLY_TARGET diff --git a/build-system/scripts/build b/build-system/scripts/build index 77bd1ca02c2..193d919e508 100755 --- a/build-system/scripts/build +++ b/build-system/scripts/build @@ -102,6 +102,7 @@ fi # Pull latest parents that are not ours. We also do not want to pull images suffixed by _, this is how we scope intermediate build images. PARENTS=$(cat $DOCKERFILE | sed -n -e 's/^FROM \([^[:space:]]\+\).*/\1/p' | sed '/_$/d' | grep -v $ECR_DEPLOY_URL | sort | uniq) for PARENT in $PARENTS; do + [ "$PARENT" == "scratch" ] && continue fetch_image $PARENT done @@ -127,14 +128,14 @@ done # Extract version from commit tag # Check if there is a commit tag if [[ -n "$COMMIT_TAG" ]]; then - + # Check if it's a repo-specific tag if [[ "$COMMIT_TAG" == *"/"* ]]; then REPO_NAME="${COMMIT_TAG%%/*}" COMMIT_TAG_VERSION="${COMMIT_TAG#*/}" echo "Tag was made for: $REPO_NAME" echo "Version: $COMMIT_TAG_VERSION" - + # Check if REPO_NAME is equal to REPOSITORY if [ "$REPO_NAME" != "$REPOSITORY" ]; then echo "REPO_NAME ($REPO_NAME) does not match REPOSITORY ($REPOSITORY). Ignoring..." @@ -165,16 +166,16 @@ for STAGE in $STAGES; do STAGE_CACHE_FROM="--cache-from $STAGE_IMAGE_LAST_URI" fi fi - + echo "Building stage: $STAGE" STAGE_IMAGE_COMMIT_URI=$ECR_URL/$REPOSITORY:cache-$CONTENT_HASH-$STAGE # Build our dockerfile, add timing information docker buildx build --platform $PLATFORMS --target $STAGE $STAGE_CACHE_FROM -t $STAGE_IMAGE_COMMIT_URI -f $DOCKERFILE --build-arg COMMIT_TAG=$COMMIT_TAG_VERSION --build-arg ARG_CONTENT_HASH=$CONTENT_HASH . \ | while read line ; do echo "$(date "+%H:%M:%S")| $line"; done - + # We don't want to have redo this stages work when building the final image. Use it as a layer cache. CACHE_FROM="--cache-from $STAGE_IMAGE_COMMIT_URI $CACHE_FROM" - + echo "Pushing stage: $STAGE" retry docker push $STAGE_IMAGE_COMMIT_URI > /dev/null 2>&1 echo diff --git a/build-system/scripts/build_local b/build-system/scripts/build_local index 697bfd6136c..4cd91c28f04 100755 --- a/build-system/scripts/build_local +++ b/build-system/scripts/build_local @@ -18,6 +18,22 @@ fi ROOT=$(git rev-parse --show-toplevel) source $ROOT/build_manifest.sh +# If given a name, check it exists. +if [ -n "$TARGET_PROJECT" ]; then + EXISTS=0 + for E in ${PROJECTS[@]}; do + ARR=(${E//:/ }) + PROJECT_DIR_NAME=${ARR[0]} + if [ "$PROJECT_DIR_NAME" = "$TARGET_PROJECT" ]; then + EXISTS=1 + fi + done + if [ "$EXISTS" -eq 0 ]; then + echo "Unknown project $TARGET_PROJECT, check build_manifest.sh"; + exit 1 + fi +fi + for E in ${PROJECTS[@]}; do ARR=(${E//:/ }) PROJECT_DIR_NAME=${ARR[0]} @@ -52,11 +68,11 @@ for E in ${PROJECTS[@]}; do time docker build ${ADDITIONAL_ARGS:-} --build-arg ARG_COMMIT_HASH=$COMMIT_HASH -f $DOCKERFILE -t $ECR_DEPLOY_URL/$REPO:latest . retry docker tag $ECR_DEPLOY_URL/$REPO:latest aztecprotocol/$REPO:latest - if [ -n "$LAUNCH" ]; then - docker run -ti --rm aztecprotocol/$REPO:latest - fi - if [ "$PROJECT_DIR_NAME" = "$TARGET_PROJECT" ]; then + if [ -n "$LAUNCH" ]; then + docker run -ti --rm aztecprotocol/$REPO:latest + fi + break fi diff --git a/build-system/scripts/check_rebuild b/build-system/scripts/check_rebuild index 3b0561836fe..9b277f43603 100755 --- a/build-system/scripts/check_rebuild +++ b/build-system/scripts/check_rebuild @@ -1,7 +1,5 @@ #!/bin/bash -# Fails if any files matching the rebuild patterns, have changed since the base commit. # If this script fails (nonzero exit), then the caller should rebuild. -# The rebuild patterns are taken from the build manifest (computed from set of dependencies). set -euo pipefail TAG=$1 @@ -16,7 +14,7 @@ if ! image_exists $REPOSITORY $TAG; then echo "Rebuild required." exit 1 elif image_exists $REPOSITORY tainted; then - # If a tainted tag exists, remove it exit with failure to rebuild. + # If a tainted tag exists, remove it and exit with failure to rebuild. echo "$REPOSITORY has been tainted. Will rebuild." exit 1 else diff --git a/build-system/scripts/cond_run_script b/build-system/scripts/cond_run_script new file mode 100755 index 00000000000..90cc9dd7a19 --- /dev/null +++ b/build-system/scripts/cond_run_script @@ -0,0 +1,23 @@ +#!/bin/bash +# Conditionally runs a script if the REPOSITORY content hash has changed and we haven't had a successful run. +# +# Arguments are: +# 1. REPOSITORY: The project repository name in ECR. Used to determine if there are changes since last success. +# 2... ARGS: Script and arguments to run. +set -eu + +REPOSITORY=$1 +shift + +CONTENT_HASH=$(calculate_content_hash $REPOSITORY) +BASE_TAG=cache-$CONTENT_HASH +SUCCESS_TAG=$BASE_TAG-$JOB_NAME + +echo "Content hash: $CONTENT_HASH" + +if ! check_rebuild $SUCCESS_TAG $REPOSITORY; then + init_submodules $REPOSITORY + cd $(query_manifest projectDir $REPOSITORY) + $@ + retry tag_remote_image $REPOSITORY $BASE_TAG $SUCCESS_TAG +fi diff --git a/build-system/scripts/cond_spot_run_build b/build-system/scripts/cond_spot_run_build index 813f7b6d63e..508096fb3a3 100755 --- a/build-system/scripts/cond_spot_run_build +++ b/build-system/scripts/cond_spot_run_build @@ -1,20 +1,7 @@ #!/bin/bash set -eu -set -o pipefail REPOSITORY=$1 -shift -SPEC=$1 -shift -DOCKERFILE=$(query_manifest dockerfile $REPOSITORY) +CPUS=$2 -CONTENT_HASH=$(calculate_content_hash $REPOSITORY) -echo "Content hash tag: cache-$CONTENT_HASH" - -cd $(query_manifest buildDir $REPOSITORY) - -if ! check_rebuild cache-$CONTENT_HASH $REPOSITORY; then - init_submodules $REPOSITORY - spot_run_script $CONTENT_HASH $SPEC $BUILD_SYSTEM_PATH/remote_build/remote_build $REPOSITORY $@ - retry tag_remote_image $REPOSITORY cache-$CONTENT_HASH cache-$CONTENT_HASH -fi +cond_spot_run_script $REPOSITORY $CPUS build $REPOSITORY \ No newline at end of file diff --git a/build-system/scripts/cond_spot_run_script b/build-system/scripts/cond_spot_run_script index 6fd419974a4..f3f49b715e9 100755 --- a/build-system/scripts/cond_spot_run_script +++ b/build-system/scripts/cond_spot_run_script @@ -1,31 +1,34 @@ #!/bin/bash -# Conditionally runs a script on a remote spot instance if any dependent code has changed between -# the last successful run and the present commit. -# -# It's expected to be run from the project directory, and that there be a directory called `scripts` -# containing the given named script to execute on the remote machine. -# -# This script is only useful if there is nothing to do in the event there is no rebuild. This is fine -# for running a suite of tests for example, but is not useful for performing a build, as even if a -# build has nothing to do, the previous images are retagged with the new commit hash for upstream jobs. +# Conditionally runs a script on a remote spot instance if the REPOSITORY content hash has changed and we haven't had a +# successful run. +# The TAG_POSTFIX is used by cond_spot_run_test whereby we use an image tag postfixed with JOB_NAME to identifify if +# we need to re-run the job due to prior failures. # # Arguments are: # 1. REPOSITORY: The project repository name in ECR. Used to determine if there are changes since last success. -# 2. SUCCESS_TAG: To track if this job needs to be run, the repository image is tagged with a prefix after a -# successful run. The script will only run if there were relevant code changes since the last successful commit. -# 3... ARGS: Arguments to pass to spot_run_script. +# 2. CPUS: Number of cpus on spot request. +# 3... ARGS: Script and arguments to run. +# +# Env vars are: +# TAG_POSTFIX: Optional. If provided we check for the image tag with this postfix to determine if re-run is required. set -eu REPOSITORY=$1 -shift -SUCCESS_TAG=$1 -shift +CPUS=$2 +shift 2 CONTENT_HASH=$(calculate_content_hash $REPOSITORY) -echo "Content hash tag: cache-$CONTENT_HASH-$SUCCESS_TAG" +BASE_TAG=cache-$CONTENT_HASH +SUCCESS_TAG=$BASE_TAG + +if [ -n "${TAG_POSTFIX:-}" ]; then + SUCCESS_TAG=$BASE_TAG-$TAG_POSTFIX +fi + +echo "Content hash: $CONTENT_HASH" -if ! check_rebuild cache-$CONTENT_HASH-$SUCCESS_TAG $REPOSITORY; then +if ! check_rebuild $SUCCESS_TAG $REPOSITORY; then init_submodules $REPOSITORY - spot_run_script $CONTENT_HASH $@ - retry tag_remote_image $REPOSITORY cache-$CONTENT_HASH cache-$CONTENT_HASH-$SUCCESS_TAG + spot_run_script $CONTENT_HASH $CPUS $@ + retry tag_remote_image $REPOSITORY $BASE_TAG $SUCCESS_TAG fi diff --git a/build-system/scripts/cond_spot_run_test b/build-system/scripts/cond_spot_run_test new file mode 100755 index 00000000000..383352bfe71 --- /dev/null +++ b/build-system/scripts/cond_spot_run_test @@ -0,0 +1,15 @@ +#!/bin/bash +set -euo pipefail + +REPOSITORY=$1 +CPUS=$2 +SCRIPT=$3 +shift 3 + +# We provide scripts relative to the project root, as that makes more sense. +# Augment the script path to be relative to the repo root, rather then the project root, for the remote runner. +SCRIPT=$(query_manifest relativeProjectDir $REPOSITORY)/$SCRIPT + +# Specify a TAG_POSTFIX as the JOB_NAME +mkdir -p /tmp/test-logs +TAG_POSTFIX=$JOB_NAME cond_spot_run_script $REPOSITORY $CPUS $SCRIPT $@ | tee "/tmp/test-logs/$JOB_NAME.log" diff --git a/build-system/scripts/cond_spot_run_test_script b/build-system/scripts/cond_spot_run_test_script deleted file mode 100755 index c760e69d00f..00000000000 --- a/build-system/scripts/cond_spot_run_test_script +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -set -eu -SCRIPT_PATH=$1 -REPOSITORY=$2 -shift -shift - -cd $(query_manifest projectDir $REPOSITORY) - -mkdir -p /tmp/test-logs - -set -o pipefail -cond_spot_run_script $REPOSITORY $JOB_NAME 32 $SCRIPT_PATH $@ | tee "/tmp/test-logs/$JOB_NAME.log" diff --git a/build-system/scripts/cond_spot_run_tests b/build-system/scripts/cond_spot_run_tests deleted file mode 100755 index 78097379f1f..00000000000 --- a/build-system/scripts/cond_spot_run_tests +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -set -eu - -cond_spot_run_test_script ./scripts/run_tests $@ diff --git a/build-system/scripts/query_manifest b/build-system/scripts/query_manifest index ba7b8c1fe33..e64086badc0 100755 --- a/build-system/scripts/query_manifest +++ b/build-system/scripts/query_manifest @@ -3,6 +3,7 @@ set -eu CMD=$1 REPO=$2 +ROOT_PATH=${ROOT_PATH:-$PWD} MANIFEST=$ROOT_PATH/build_manifest.json if [ $(jq "has(\"$REPO\")" $MANIFEST) == "false" ]; then @@ -10,36 +11,65 @@ if [ $(jq "has(\"$REPO\")" $MANIFEST) == "false" ]; then exit 1 fi +function addRebuildPatterns { + local TYPE=$(jq -r ".\"$1\".rebuildPatterns | type" $MANIFEST) + if [ "$TYPE" == "string" ]; then + local FILE=$(jq -r ".\"$1\".rebuildPatterns" $MANIFEST) + local BUILD_DIR=$($0 buildDir $1) + PATTERNS=(${PATTERNS[@]} $(cat $BUILD_DIR/$FILE)) + elif [ "$TYPE" == "array" ]; then + PATTERNS=(${PATTERNS[@]} $(jq -r ".\"$1\".rebuildPatterns | .[]" $MANIFEST)) + else + >&2 echo "Missing rebuildPatterns property. Either filename as string, or patterns as array." + exit 1 + fi +} + case "$CMD" in dockerfile) - jq -r ".\"$REPO\".dockerfile // \"Dockerfile\"" $MANIFEST + # In the manifest, the path is relative to buildDir. Return absolute path. + BUILD_DIR=$($0 buildDir $REPO) + DOCKERFILE=$(jq -r ".\"$REPO\".dockerfile // \"Dockerfile\"" $MANIFEST) + echo $BUILD_DIR/$DOCKERFILE ;; buildDir) - jq -r ".\"$REPO\".buildDir" $MANIFEST + # In the manifest, the path is relative to the repo root. Return absolute path. + BUILD_DIR=$(jq -r ".\"$REPO\".buildDir" $MANIFEST) + echo $ROOT_PATH/$BUILD_DIR ;; projectDir) + # In the manifest, the path is relative to the repo root. Return absolute path. + PROJECT_DIR=$(jq -r ".\"$REPO\".projectDir // .\"$REPO\".buildDir" $MANIFEST) + echo $ROOT_PATH/$PROJECT_DIR + ;; + relativeProjectDir) jq -r ".\"$REPO\".projectDir // .\"$REPO\".buildDir" $MANIFEST ;; dependencies) - ALL_DEPS=() + declare -A ALL_DEPS add_deps() { + if [[ -v ALL_DEPS[$1] ]]; then + return + fi + ALL_DEPS["$1"]=1 DEPS=($(jq -r ".\"$1\".dependencies // [] | .[]" $MANIFEST)) - ALL_DEPS=(${ALL_DEPS[@]} ${DEPS[@]}) for DEP in "${DEPS[@]}"; do add_deps $DEP done } add_deps $REPO - printf "%s\n" "${ALL_DEPS[@]}" | sort | uniq + for KEY in "${!ALL_DEPS[@]}"; do + echo $KEY + done | sort ;; rebuildPatterns) - ALL_PATTERNS=($(jq -r ".\"$REPO\".rebuildPatterns | .[]" $MANIFEST)) DEPS=($($0 dependencies $REPO)) + PATTERNS=() + addRebuildPatterns $REPO for DEP in "${DEPS[@]}"; do - PATTERNS=($(jq -r ".\"$DEP\".rebuildPatterns | .[]" $MANIFEST)) - ALL_PATTERNS=(${ALL_PATTERNS[@]} ${PATTERNS[@]}) + addRebuildPatterns $DEP done - printf "%s\n" "${ALL_PATTERNS[@]}" | sort | uniq + printf "%s\n" "${PATTERNS[@]}" | sort | uniq ;; submodulePath) DIR=$($0 buildDir $REPO) diff --git a/build-system/scripts/remote_run_script b/build-system/scripts/remote_run_script index 0e6417da156..e2ff2ff7756 100755 --- a/build-system/scripts/remote_run_script +++ b/build-system/scripts/remote_run_script @@ -1,17 +1,30 @@ #!/bin/bash +# Copies the runner script to the remote instance, runs it giving it script and args to run. +# The runner script checks out the repository first and runs setup-env. +# +# 1. IP: The IP address of the system to run the script on. +# 2... ARGS: Script and arguments to run. +# +# e.g. remote_run_script 1.2.3.4 build my_repo set -eu IP=$1 -FULL_PATH=$2 -shift 2 +shift SSH_CONFIG_PATH=${SSH_CONFIG_PATH:-$BUILD_SYSTEM_PATH/remote/ssh_config} -DIR_NAME=$(dirname $FULL_PATH) -SCRIPT_NAME=$(basename $FULL_PATH) -# Copy all files in script directory to spot instance. -scp -F $SSH_CONFIG_PATH $DIR_NAME/* $IP:. -scp -rF $SSH_CONFIG_PATH $BUILD_SYSTEM_PATH $BUILD_SYSTEM_PATH/../.git $BUILD_SYSTEM_PATH/../build_manifest.json $IP:. +# Copy the runner script to spot instance. This is what we actually run. +scp -rF $SSH_CONFIG_PATH $BUILD_SYSTEM_PATH/scripts/remote_runner $IP:. # Run script on remote instance, passing environment variables. -ssh -A -F $SSH_CONFIG_PATH $IP "COMMIT_HASH=$COMMIT_HASH COMMIT_TAG=$COMMIT_TAG JOB_NAME=$JOB_NAME GIT_REPOSITORY_URL=$GIT_REPOSITORY_URL DOCKERHUB_PASSWORD=$DOCKERHUB_PASSWORD ECR_DEPLOY_URL=$ECR_DEPLOY_URL ECR_URL=$ECR_URL ./$SCRIPT_NAME $@" +echo "Running ./remote_runner $@ on $IP..." +ssh -A -F $SSH_CONFIG_PATH $IP " + export COMMIT_HASH=$COMMIT_HASH + export COMMIT_TAG=$COMMIT_TAG + export JOB_NAME=$JOB_NAME + export GIT_REPOSITORY_URL=$GIT_REPOSITORY_URL + export DOCKERHUB_PASSWORD=$DOCKERHUB_PASSWORD + export ECR_DEPLOY_URL=$ECR_DEPLOY_URL + export ECR_URL=$ECR_URL + ./remote_runner $@ +" diff --git a/build-system/remote_build/remote_build b/build-system/scripts/remote_runner similarity index 81% rename from build-system/remote_build/remote_build rename to build-system/scripts/remote_runner index 8eab556ee57..8b0c338a2f7 100755 --- a/build-system/remote_build/remote_build +++ b/build-system/scripts/remote_runner @@ -3,7 +3,7 @@ set -eu ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts -echo "Initialising remote build..." +echo "Checking out code..." # IF YOU'RE CHANGING THIS, YOU ALSO WANT TO CHANGE: .circleci/config.yml # Shallow checkout this commit. @@ -16,13 +16,11 @@ git config remote.origin.promisor true git config remote.origin.partialclonefilter blob:none git fetch --depth 1 origin $COMMIT_HASH git checkout FETCH_HEAD -# Checkout barretenberg submodule only. -git submodule update --init build-system echo "Git checkout completed." BASH_ENV=/tmp/bash_env echo "Calling setup env..." source ./build-system/scripts/setup_env "$COMMIT_HASH" "$COMMIT_TAG" "$JOB_NAME" "$GIT_REPOSITORY_URL" -echo "Calling build..." -build $@ +echo "Calling $@..." +$@ diff --git a/build-system/scripts/spot_run_script b/build-system/scripts/spot_run_script index ddf4acebc43..920d661bb61 100755 --- a/build-system/scripts/spot_run_script +++ b/build-system/scripts/spot_run_script @@ -1,11 +1,14 @@ #!/bin/bash # Runs a test script on a remote spot instance. Arguments are: -# 1. Content hash for our repository contents. Used for identify spot jobs and image tags. -# 2. SPEC: Instance specification filename. -# 3... ARGS: Arguments to pass to remote_run_script. +# 1. CONTENT_HASH: Content hash for our repository contents. Used to identify spot jobs and image tags. +# 2. CPUS: Number of cpus on spot request. +# 3... ARGS: Script and arguments to run. +# +# Env vars: +# JOB_NAME: Set within setup-env. The job name as per CI. set -eu CONTENT_HASH=$1 -SPEC=$2 +CPUS=$2 shift 2 # On any sort of exit (error or not), kill spot request so it doesn't count against quota. @@ -19,7 +22,7 @@ function on_exit { trap on_exit EXIT # Get spot instance. -IP=$(request_spot $CONTENT_HASH:$JOB_NAME $SPEC) +IP=$(request_spot $CONTENT_HASH:$JOB_NAME $CPUS) # Run script remotely on spot instance, capturing success or failure. set +e diff --git a/build-system/scripts/spot_run_test_script b/build-system/scripts/spot_run_test_script deleted file mode 100755 index 06d4d455380..00000000000 --- a/build-system/scripts/spot_run_test_script +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -set -eu -SCRIPT_PATH=$1 -REPOSITORY=$2 -shift -shift - -cd $(query_manifest projectDir $REPOSITORY) - -mkdir -p /tmp/test-logs - -set -o pipefail - -CONTENT_HASH=$(calculate_content_hash $REPOSITORY) -echo "Content hash: $CONTENT_HASH" -spot_run_script $CONTENT_HASH 32 $SCRIPT_PATH $@ | tee "/tmp/test-logs/$JOB_NAME.log" diff --git a/build-system/scripts/spot_run_tests b/build-system/scripts/spot_run_tests deleted file mode 100755 index e7d8183c048..00000000000 --- a/build-system/scripts/spot_run_tests +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -set -eu - -spot_run_test_script ./scripts/run_tests $@ diff --git a/build_manifest.json b/build_manifest.json index 94da96e7994..c41e4323f56 100644 --- a/build_manifest.json +++ b/build_manifest.json @@ -1,108 +1,80 @@ { "barretenberg-x86_64-linux-clang": { - "buildDir": "circuits/cpp/barretenberg/cpp", + "buildDir": "barretenberg/cpp", "dockerfile": "dockerfiles/Dockerfile.x86_64-linux-clang", - "rebuildPatterns": [ - "^circuits/cpp/barretenberg/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/cpp/barretenberg/.*CMakeLists\\.txt$" - ], + "rebuildPatterns": ".rebuild_patterns", "dependencies": [] }, "barretenberg-x86_64-linux-clang-assert": { - "buildDir": "circuits/cpp/barretenberg/cpp", + "buildDir": "barretenberg/cpp", "dockerfile": "dockerfiles/Dockerfile.x86_64-linux-clang-assert", - "rebuildPatterns": [ - "^circuits/cpp/barretenberg/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/cpp/barretenberg/.*CMakeLists\\.txt$" - ], + "rebuildPatterns": ".rebuild_patterns", "dependencies": [] }, "barretenberg-x86_64-linux-clang-fuzzing": { - "buildDir": "circuits/cpp/barretenberg/cpp", + "buildDir": "barretenberg/cpp", "dockerfile": "dockerfiles/Dockerfile.x86_64-linux-clang-fuzzing", - "rebuildPatterns": [ - "^circuits/cpp/barretenberg/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/cpp/barretenberg/.*CMakeLists\\.txt$" - ], + "rebuildPatterns": ".rebuild_patterns", "dependencies": [] }, "barretenberg-x86_64-linux-gcc": { - "buildDir": "circuits/cpp/barretenberg/cpp", + "buildDir": "barretenberg/cpp", "dockerfile": "dockerfiles/Dockerfile.x86_64-linux-gcc", - "rebuildPatterns": [ - "^circuits/cpp/barretenberg/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/cpp/barretenberg/.*CMakeLists\\.txt$" - ], + "rebuildPatterns": ".rebuild_patterns", "dependencies": [] }, "barretenberg-wasm-linux-clang": { - "buildDir": "circuits/cpp/barretenberg/cpp", + "buildDir": "barretenberg/cpp", "dockerfile": "dockerfiles/Dockerfile.wasm-linux-clang", - "rebuildPatterns": [ - "^circuits/cpp/barretenberg/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/cpp/barretenberg/.*CMakeLists\\.txt$" - ], + "rebuildPatterns": ".rebuild_patterns", "dependencies": [] }, "bb.js": { - "buildDir": "circuits/cpp/barretenberg/ts", - "rebuildPatterns": ["^circuits/cpp/barretenberg/ts/"], + "buildDir": "barretenberg/ts", + "rebuildPatterns": ["^barretenberg/ts/"], "dependencies": ["barretenberg-wasm-linux-clang"] }, "barretenberg-acir-tests-bb": { - "buildDir": "circuits/cpp/barretenberg/acir_tests", + "buildDir": "barretenberg/acir_tests", "dockerfile": "Dockerfile.bb", - "rebuildPatterns": ["^circuits/cpp/barretenberg/acir_tests/"], + "rebuildPatterns": ["^barretenberg/acir_tests/"], "dependencies": ["barretenberg-x86_64-linux-clang-assert"] }, "barretenberg-acir-tests-bb.js": { - "buildDir": "circuits/cpp/barretenberg/acir_tests", + "buildDir": "barretenberg/acir_tests", "dockerfile": "Dockerfile.bb.js", - "rebuildPatterns": ["^circuits/cpp/barretenberg/acir_tests/"], + "rebuildPatterns": ["^barretenberg/acir_tests/"], "dependencies": ["bb.js"] }, "circuits-wasm-linux-clang": { "buildDir": "circuits/cpp", "dockerfile": "dockerfiles/Dockerfile.wasm-linux-clang", - "rebuildPatterns": [ - "^circuits/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/.*CMakeLists\\.txt$" - ], - "dependencies": [] + "rebuildPatterns": ".rebuild_patterns", + "dependencies": ["barretenberg-wasm-linux-clang"] }, "circuits-wasm-linux-clang-assert": { "buildDir": "circuits/cpp", "dockerfile": "dockerfiles/Dockerfile.wasm-linux-clang-assert", - "rebuildPatterns": [ - "^circuits/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/.*CMakeLists\\.txt$" - ], - "dependencies": [] + "rebuildPatterns": ".rebuild_patterns", + "dependencies": ["barretenberg-wasm-linux-clang"] }, "circuits-x86_64-linux-clang-tidy": { "buildDir": "circuits/cpp", "dockerfile": "dockerfiles/Dockerfile.x86_64-linux-clang-tidy", - "rebuildPatterns": [ - "^circuits/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/.*CMakeLists\\.txt$" - ], - "dependencies": [] + "rebuildPatterns": ".rebuild_patterns", + "dependencies": ["barretenberg-x86_64-linux-clang"] }, "circuits-x86_64-linux-clang": { "buildDir": "circuits/cpp", "dockerfile": "dockerfiles/Dockerfile.x86_64-linux-clang", - "rebuildPatterns": [ - "^circuits/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/.*CMakeLists\\.txt$" - ], - "dependencies": [] + "rebuildPatterns": ".rebuild_patterns", + "dependencies": ["barretenberg-x86_64-linux-clang"] }, "circuits-x86_64-linux-clang-assert": { "buildDir": "circuits/cpp", "dockerfile": "dockerfiles/Dockerfile.x86_64-linux-clang-assert", - "rebuildPatterns": [ - "^circuits/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/.*CMakeLists\\.txt$" - ], - "dependencies": [] - }, - "circuits-x86_64-linux-gcc": { - "buildDir": "circuits/cpp", - "dockerfile": "dockerfiles/Dockerfile.x86_64-linux-gcc", - "rebuildPatterns": [ - "^circuits/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/.*CMakeLists\\.txt$" - ], - "dependencies": [] + "rebuildPatterns": ".rebuild_patterns", + "dependencies": ["barretenberg-x86_64-linux-clang"] }, "docs": { "buildDir": ".", @@ -127,7 +99,6 @@ "buildDir": "yarn-project", "dockerfile": "yarn-project-base/Dockerfile", "rebuildPatterns": [ - "^circuits/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/.*CMakeLists\\.txt$", "^l1-contracts/", "^yarn-project/l1-artifacts/", "^yarn-project/noir-contracts/", @@ -144,6 +115,7 @@ "dockerfile": "acir-simulator/Dockerfile", "rebuildPatterns": ["^yarn-project/acir-simulator/"], "dependencies": [ + "yarn-project-base", "circuits.js", "foundation", "types", @@ -157,6 +129,7 @@ "dockerfile": "archiver/Dockerfile", "rebuildPatterns": ["^yarn-project/archiver/"], "dependencies": [ + "yarn-project-base", "circuits.js", "ethereum", "foundation", @@ -170,6 +143,7 @@ "dockerfile": "cli/Dockerfile", "rebuildPatterns": ["^yarn-project/cli/"], "dependencies": [ + "yarn-project-base", "aztec.js", "ethereum", "foundation", @@ -184,6 +158,7 @@ "dockerfile": "aztec-rpc/Dockerfile", "rebuildPatterns": ["^yarn-project/aztec-rpc/"], "dependencies": [ + "yarn-project-base", "acir-simulator", "circuits.js", "foundation", @@ -197,6 +172,7 @@ "dockerfile": "aztec-sandbox/Dockerfile", "rebuildPatterns": ["^yarn-project/aztec-sandbox/"], "dependencies": [ + "yarn-project-base", "aztec-node", "aztec-rpc", "aztec.js", @@ -230,7 +206,7 @@ "projectDir": "yarn-project/aztec.js", "dockerfile": "aztec.js/Dockerfile", "rebuildPatterns": ["^yarn-project/aztec.js/"], - "dependencies": ["circuits.js", "foundation", "types"] + "dependencies": ["yarn-project-base", "circuits.js", "foundation", "types"] }, "canary-build": { "buildDir": "yarn-project", @@ -238,6 +214,7 @@ "dockerfile": "canary/Dockerfile.build", "rebuildPatterns": ["^yarn-project/canary/"], "dependencies": [ + "yarn-project-base", "aztec.js", "l1-artifacts", "noir-contracts", @@ -249,17 +226,20 @@ "projectDir": "yarn-project/canary", "dockerfile": "canary/Dockerfile", "rebuildPatterns": ["^yarn-project/canary/"], - "dependencies": ["aztec.js", "foundation", "l1-artifacts", "noir-contracts"] + "dependencies": [ + "yarn-project-base", + "aztec.js", + "foundation", + "l1-artifacts", + "noir-contracts" + ] }, "circuits.js": { "buildDir": "yarn-project", "projectDir": "yarn-project/circuits.js", "dockerfile": "circuits.js/Dockerfile", - "rebuildPatterns": [ - "^circuits/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$|^circuits/.*CMakeLists\\.txt$", - "^yarn-project/circuits.js/" - ], - "dependencies": ["foundation"] + "rebuildPatterns": ["^yarn-project/circuits.js/"], + "dependencies": ["yarn-project-base", "foundation"] }, "end-to-end": { "buildDir": "yarn-project", @@ -267,6 +247,7 @@ "dockerfile": "end-to-end/Dockerfile", "rebuildPatterns": ["^yarn-project/end-to-end/"], "dependencies": [ + "yarn-project-base", "archiver", "aztec-node", "aztec-rpc", @@ -289,28 +270,28 @@ "projectDir": "yarn-project/ethereum", "dockerfile": "ethereum/Dockerfile", "rebuildPatterns": ["^yarn-project/ethereum/"], - "dependencies": ["foundation", "l1-artifacts"] + "dependencies": ["yarn-project-base", "foundation", "l1-artifacts"] }, "foundation": { "buildDir": "yarn-project", "projectDir": "yarn-project/foundation", "dockerfile": "foundation/Dockerfile", "rebuildPatterns": ["^yarn-project/foundation/"], - "dependencies": [] + "dependencies": ["yarn-project-base"] }, "key-store": { "buildDir": "yarn-project", "projectDir": "yarn-project/key-store", "dockerfile": "key-store/Dockerfile", "rebuildPatterns": ["^yarn-project/key-store/"], - "dependencies": ["circuits.js", "foundation", "types"] + "dependencies": ["yarn-project-base", "circuits.js", "foundation", "types"] }, "merkle-tree": { "buildDir": "yarn-project", "projectDir": "yarn-project/merkle-tree", "dockerfile": "merkle-tree/Dockerfile", "rebuildPatterns": ["^yarn-project/merkle-tree/"], - "dependencies": ["circuits.js", "foundation", "types"] + "dependencies": ["yarn-project-base", "circuits.js", "foundation", "types"] }, "noir-contracts-build": { "buildDir": "yarn-project", @@ -320,7 +301,12 @@ "^yarn-project/noir-contracts/", "^yarn-project/noir-libs/" ], - "dependencies": ["aztec.js", "foundation", "noir-compiler"] + "dependencies": [ + "yarn-project-base", + "aztec.js", + "foundation", + "noir-compiler" + ] }, "noir-contracts": { "buildDir": "yarn-project", @@ -330,42 +316,53 @@ "^yarn-project/noir-contracts/", "^yarn-project/noir-libs/" ], - "dependencies": ["aztec.js", "foundation", "noir-compiler"] + "dependencies": [ + "yarn-project-base", + "aztec.js", + "foundation", + "noir-compiler" + ] }, "noir-compiler": { "buildDir": "yarn-project", "projectDir": "yarn-project/noir-compiler", "dockerfile": "noir-compiler/Dockerfile", "rebuildPatterns": ["^yarn-project/noir-compiler/"], - "dependencies": ["foundation"] + "dependencies": ["yarn-project-base", "foundation"] }, "p2p": { "buildDir": "yarn-project", "projectDir": "yarn-project/p2p", "dockerfile": "p2p/Dockerfile", "rebuildPatterns": ["^yarn-project/p2p/"], - "dependencies": ["circuits.js", "foundation", "types"] + "dependencies": ["yarn-project-base", "circuits.js", "foundation", "types"] }, "p2p-bootstrap": { "buildDir": "yarn-project", "projectDir": "yarn-project/p2p-bootstrap", "dockerfile": "p2p/Dockerfile", "rebuildPatterns": ["^yarn-project/p2p-bootstrap/"], - "dependencies": ["foundation", "p2p"] + "dependencies": ["yarn-project-base", "foundation", "p2p"] }, "prover-client": { "buildDir": "yarn-project", "projectDir": "yarn-project/prover-client", "dockerfile": "prover-client/Dockerfile", "rebuildPatterns": ["^yarn-project/prover-client/"], - "dependencies": ["foundation"] + "dependencies": ["yarn-project-base", "foundation"] }, "rollup-provider": { "buildDir": "yarn-project", "projectDir": "yarn-project/rollup-provider", "dockerfile": "rollup-provider/Dockerfile", "rebuildPatterns": ["^yarn-project/rollup-provider/"], - "dependencies": ["aztec-node", "circuits.js", "foundation", "types"] + "dependencies": [ + "yarn-project-base", + "aztec-node", + "circuits.js", + "foundation", + "types" + ] }, "aztec-node": { "buildDir": "yarn-project", @@ -373,6 +370,7 @@ "dockerfile": "aztec-node/Dockerfile", "rebuildPatterns": ["^yarn-project/aztec-node/"], "dependencies": [ + "yarn-project-base", "archiver", "circuits.js", "foundation", @@ -390,6 +388,7 @@ "dockerfile": "sequencer-client/Dockerfile", "rebuildPatterns": ["^yarn-project/sequencer-client/"], "dependencies": [ + "yarn-project-base", "acir-simulator", "circuits.js", "ethereum", @@ -406,13 +405,19 @@ "projectDir": "yarn-project/types", "dockerfile": "types/Dockerfile", "rebuildPatterns": ["^yarn-project/types/"], - "dependencies": ["circuits.js", "foundation"] + "dependencies": ["yarn-project-base", "circuits.js", "foundation"] }, "world-state": { "buildDir": "yarn-project", "projectDir": "yarn-project/world-state", "dockerfile": "world-state/Dockerfile", "rebuildPatterns": ["^yarn-project/world-state/"], - "dependencies": ["circuits.js", "foundation", "merkle-tree", "types"] + "dependencies": [ + "yarn-project-base", + "circuits.js", + "foundation", + "merkle-tree", + "types" + ] } } diff --git a/build_manifest.sh b/build_manifest.sh index 23055fb9fdb..9cd3810f645 100755 --- a/build_manifest.sh +++ b/build_manifest.sh @@ -1,7 +1,7 @@ #!/bin/bash # Source this file to define the PROJECTS variable, needed by build_local, used by bootstrap_docker.sh. # -# PROJECT elements have structure PROJECT_DIR_NAME:WORKING_DIR:DOCKERFILE:REPO:LAUNCH. +# PROJECT elements have structure PROJECT_NAME:WORKING_DIR:DOCKERFILE:REPO:LAUNCH. # PROJECT_NAME: A name by which one can reference this project via the boostrap_docker.sh script. # WORKING_DIR: Everything within this directory is copied into the docker context (excluding paths in .dockerignore). # DOCKERFILE: Defaults to Dockerfile. However some projects have multiple build Dockerfiles located in subdirs. @@ -14,12 +14,17 @@ # commit them, so that the most important build path remains fast and simple. PROJECTS=( - bb-wasm:circuits/cpp/barretenberg/cpp:./dockerfiles/Dockerfile.wasm-linux-clang:barretenberg-wasm-linux-clang - bb-x86:circuits/cpp/barretenberg/cpp:./dockerfiles/Dockerfile.x86_64-linux-clang-assert:barretenberg-x86_64-linux-clang-assert - bb.js:circuits/cpp/barretenberg/ts:Dockerfile:bb.js::1 - run-acir-tests-bb:circuits/cpp/barretenberg/acir_tests:Dockerfile.bb - run-acir-tests-bb.js:circuits/cpp/barretenberg/acir_tests:Dockerfile.bb.js - circuits:circuits/cpp:./dockerfiles/Dockerfile.wasm-linux-clang:circuits-wasm-linux-clang + # bb-x86_64-linux-clang:barretenberg/cpp:./dockerfiles/Dockerfile.x86_64-linux-clang:barretenberg-x86_64-linux-clang + # bb-x86_64-linux-clang-assert:barretenberg/cpp:./dockerfiles/Dockerfile.x86_64-linux-clang-assert:barretenberg-x86_64-linux-clang-assert + # bb-x86_64-linux-gcc:barretenberg/cpp:./dockerfiles/Dockerfile.x86_64-linux-gcc:barretenberg-x86_64-linux-gcc + bb-wasm-linux-clang:barretenberg/cpp:./dockerfiles/Dockerfile.wasm-linux-clang:barretenberg-wasm-linux-clang + # bb-x86:barretenberg/cpp:./dockerfiles/Dockerfile.x86_64-linux-clang-assert:barretenberg-x86_64-linux-clang-assert + # bb.js:barretenberg/ts:Dockerfile:bb.js::1 + # run-acir-tests-bb:barretenberg/acir_tests:Dockerfile.bb + # run-acir-tests-bb.js:barretenberg/acir_tests:Dockerfile.bb.js + # circuits-x86_64-linux-clang:circuits/cpp:./dockerfiles/Dockerfile.x86_64-linux-clang:circuits-x86_64-linux-clang + # circuits-x86_64-linux-clang-assert:circuits/cpp:./dockerfiles/Dockerfile.x86_64-linux-clang-assert:circuits-x86_64-linux-clang-assert + circuits-wasm-linux-clang:circuits/cpp:./dockerfiles/Dockerfile.wasm-linux-clang:circuits-wasm-linux-clang l1-contracts:l1-contracts noir-contracts:yarn-project:DockerFile.build:noir-contracts-build noir-contracts:yarn-project diff --git a/circuits/cpp/.rebuild_patterns b/circuits/cpp/.rebuild_patterns new file mode 100644 index 00000000000..8b81b83403c --- /dev/null +++ b/circuits/cpp/.rebuild_patterns @@ -0,0 +1,3 @@ +^circuits/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$ +^circuits/.*CMakeLists\\.txt$ +^circuits/.*Dockerfile.*$ \ No newline at end of file diff --git a/circuits/cpp/CMakeLists.txt b/circuits/cpp/CMakeLists.txt index 3929ccd2e41..a3286d6121f 100644 --- a/circuits/cpp/CMakeLists.txt +++ b/circuits/cpp/CMakeLists.txt @@ -139,10 +139,6 @@ if(COVERAGE) ) endif() -# include barretenberg as ExternalProject -# (needs WASM to be set already) -include(cmake/barretenberg.cmake) - include(cmake/build.cmake) include(GNUInstallDirs) include(cmake/arch.cmake) diff --git a/circuits/cpp/CMakePresets.json b/circuits/cpp/CMakePresets.json index a97a84aa1ae..556a8444fcc 100644 --- a/circuits/cpp/CMakePresets.json +++ b/circuits/cpp/CMakePresets.json @@ -18,7 +18,6 @@ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON" }, "cacheVariables": { - "CMAKE_BBERG_PRESET": "default", "CMAKE_BUILD_TYPE": "Release" } }, @@ -32,9 +31,6 @@ "CXX": "$env{BREW_PREFIX}/opt/llvm/bin/clang++", "LDFLAGS": "-L$env{BREW_PREFIX}/opt/libomp/lib", "CPPFLAGS": "-I$env{BREW_PREFIX}/opt/libomp/include" - }, - "cacheVariables": { - "CMAKE_BBERG_PRESET": "homebrew" } }, { @@ -45,9 +41,6 @@ "environment": { "CC": "clang-15", "CXX": "clang++-15" - }, - "cacheVariables": { - "CMAKE_BBERG_PRESET": "clang15" } }, { @@ -76,9 +69,6 @@ "environment": { "CC": "clang-16", "CXX": "clang++-16" - }, - "cacheVariables": { - "CMAKE_BBERG_PRESET": "clang16" } }, { @@ -107,9 +97,6 @@ "environment": { "CC": "gcc", "CXX": "g++" - }, - "cacheVariables": { - "CMAKE_BBERG_PRESET": "gcc" } }, { @@ -120,9 +107,6 @@ "environment": { "CC": "gcc-10", "CXX": "g++-10" - }, - "cacheVariables": { - "CMAKE_BBERG_PRESET": "gcc10" } }, { @@ -139,8 +123,7 @@ "inherits": "default", "binaryDir": "build-fuzzing", "cacheVariables": { - "FUZZING": "ON", - "CMAKE_BBERG_PRESET": "fuzzing" + "FUZZING": "ON" } }, { @@ -151,8 +134,7 @@ "binaryDir": "build-coverage", "cacheVariables": { "COVERAGE": "ON", - "CMAKE_BUILD_TYPE": "Debug", - "CMAKE_BBERG_PRESET": "coverage" + "CMAKE_BUILD_TYPE": "Debug" } }, { @@ -178,7 +160,6 @@ "CMAKE_C_COMPILER_WORKS": "ON", "CMAKE_CXX_COMPILER_WORKS": "ON", "CMAKE_EXE_LINKER_FLAGS": "-O3", - "CMAKE_BBERG_PRESET": "wasm", "CMAKE_BUILD_TYPE": "Release" } }, diff --git a/circuits/cpp/barretenberg/CHANGELOG.md b/circuits/cpp/barretenberg/CHANGELOG.md deleted file mode 100644 index c982314138c..00000000000 --- a/circuits/cpp/barretenberg/CHANGELOG.md +++ /dev/null @@ -1,447 +0,0 @@ -# Changelog - -## [0.6.7](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.6...barretenberg-v0.6.7) (2023-09-11) - - -### Miscellaneous - -* **barretenberg:** Synchronize aztec-packages versions - -## [0.6.6](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.5...barretenberg-v0.6.6) (2023-09-11) - - -### Miscellaneous - -* **barretenberg:** Synchronize aztec-packages versions - -## [0.6.5](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.4...barretenberg-v0.6.5) (2023-09-08) - - -### Miscellaneous - -* **barretenberg:** Synchronize aztec-packages versions - -## [0.6.4](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.3...barretenberg-v0.6.4) (2023-09-08) - - -### Miscellaneous - -* **barretenberg:** Synchronize aztec-packages versions - -## [0.6.3](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.2...barretenberg-v0.6.3) (2023-09-08) - - -### Miscellaneous - -* **barretenberg:** Synchronize aztec-packages versions - -## [0.6.2](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.6.1...barretenberg-v0.6.2) (2023-09-08) - - -### Miscellaneous - -* **barretenberg:** Synchronize aztec-packages versions - -## [0.6.1](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.5.2...barretenberg-v0.6.1) (2023-09-08) - - -### Bug Fixes - -* Work around intermittent wasm webkit issue ([#2140](https://github.com/AztecProtocol/aztec-packages/issues/2140)) ([a9b0934](https://github.com/AztecProtocol/aztec-packages/commit/a9b09344c80d8628f95f859d4e2d455d61f9e7c6)) - - -### Miscellaneous - -* **master:** Release 0.5.2 ([#2141](https://github.com/AztecProtocol/aztec-packages/issues/2141)) ([451aad6](https://github.com/AztecProtocol/aztec-packages/commit/451aad6ea92ebced9839ca14baae10cee327be35)) -* Release 0.5.2 ([f76b53c](https://github.com/AztecProtocol/aztec-packages/commit/f76b53c985116ac131a9b11b2a255feb7d0f8f13)) -* Release 0.6.1 ([1bd1a79](https://github.com/AztecProtocol/aztec-packages/commit/1bd1a79b0cefcd90306133aab141d992e8ea5fc3)) - -## [0.5.2](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg-v0.5.2...barretenberg-v0.5.2) (2023-09-08) - - -### Bug Fixes - -* Work around intermittent wasm webkit issue ([#2140](https://github.com/AztecProtocol/aztec-packages/issues/2140)) ([a9b0934](https://github.com/AztecProtocol/aztec-packages/commit/a9b09344c80d8628f95f859d4e2d455d61f9e7c6)) - - -### Miscellaneous - -* Release 0.5.2 ([f76b53c](https://github.com/AztecProtocol/aztec-packages/commit/f76b53c985116ac131a9b11b2a255feb7d0f8f13)) - -## [0.5.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.5.0...barretenberg-v0.5.1) (2023-09-05) - - -### Features - -* Add `info` command to bb ([#2010](https://github.com/AztecProtocol/barretenberg/issues/2010)) ([2882d97](https://github.com/AztecProtocol/barretenberg/commit/2882d97f5165239badb328be80568e7d683c0465)) -* **ci:** Use content hash in build system, restrict docs build to *.ts or *.cpp ([#1953](https://github.com/AztecProtocol/barretenberg/issues/1953)) ([297a20d](https://github.com/AztecProtocol/barretenberg/commit/297a20d7878a4aabab1cabf2cc5d2d67f9e969c5)) - - -### Bug Fixes - -* Adds Mac cross compile flags into barretenberg ([#1954](https://github.com/AztecProtocol/barretenberg/issues/1954)) ([0e17d97](https://github.com/AztecProtocol/barretenberg/commit/0e17d978a0cc6805b72646a8e36fd5267cbd6bcd)) -* **bb.js:** (breaking change) bundles bb.js properly so that it works in the browser and in node ([#1855](https://github.com/AztecProtocol/barretenberg/issues/1855)) ([bc93a5f](https://github.com/AztecProtocol/barretenberg/commit/bc93a5f8510d0dc600343e7e613ab84380d3c225)) -* **ci:** Incorrect content hash in some build targets ([#1973](https://github.com/AztecProtocol/barretenberg/issues/1973)) ([c6c469a](https://github.com/AztecProtocol/barretenberg/commit/c6c469aa5da7c6973f656ddf8af4fb20c3e8e4f6)) -* Compilation on homebrew clang 16.06 ([#1937](https://github.com/AztecProtocol/barretenberg/issues/1937)) ([79c29ee](https://github.com/AztecProtocol/barretenberg/commit/79c29eebbdb78c1e9aa5b4a3da6207fbf93bdd10)) -* Master ([#1981](https://github.com/AztecProtocol/barretenberg/issues/1981)) ([59a454e](https://github.com/AztecProtocol/barretenberg/commit/59a454ecf1611424893e1cb093774a23dde39310)) -* Unify base64 interface between mac and linux (cherry-picked) ([#1968](https://github.com/AztecProtocol/barretenberg/issues/1968)) ([37ee120](https://github.com/AztecProtocol/barretenberg/commit/37ee1204eba280442b6941eff448d6ff15eb9f04)) - -## [0.5.0](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.6...barretenberg-v0.5.0) (2023-09-01) - - -### ⚠ BREAKING CHANGES - -* update to acvm 0.24.0 ([#1925](https://github.com/AztecProtocol/barretenberg/issues/1925)) - -### Bug Fixes - -* Benchmark preset uses clang16 ([#1902](https://github.com/AztecProtocol/barretenberg/issues/1902)) ([cd0ff0e](https://github.com/AztecProtocol/barretenberg/commit/cd0ff0e2c049917ec47a110b45d76bed4c00ae2a)) -* Reset keccak var inputs to 0 ([#1881](https://github.com/AztecProtocol/barretenberg/issues/1881)) ([23011ee](https://github.com/AztecProtocol/barretenberg/commit/23011ee1ea7f1b00b0f4194ebceedc75ea01c157)) - - -### Miscellaneous Chores - -* Update to acvm 0.24.0 ([#1925](https://github.com/AztecProtocol/barretenberg/issues/1925)) ([5d8db8e](https://github.com/AztecProtocol/barretenberg/commit/5d8db8eb993334b43e24a51efba9c59e123320ab)) - -## [0.4.6](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.5...barretenberg-v0.4.6) (2023-08-29) - - -### Bug Fixes - -* Truncate SRS size to the amount of points that we have downloaded ([#1862](https://github.com/AztecProtocol/barretenberg/issues/1862)) ([3bcf12b](https://github.com/AztecProtocol/barretenberg/commit/3bcf12b1a302280d5112475c5993b125e130209e)) - -## [0.4.5](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.4...barretenberg-v0.4.5) (2023-08-28) - - -### Bug Fixes - -* Conditionally compile base64 command for bb binary ([#1851](https://github.com/AztecProtocol/barretenberg/issues/1851)) ([8f8b9f4](https://github.com/AztecProtocol/barretenberg/commit/8f8b9f46028a08342a3337db633782e5313e2763)) - -## [0.4.4](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.3...barretenberg-v0.4.4) (2023-08-28) - - -### Features - -* Add ARM build for Mac + cleanup artifacts ([#1837](https://github.com/AztecProtocol/barretenberg/issues/1837)) ([2d2d5ea](https://github.com/AztecProtocol/barretenberg/commit/2d2d5ea33c512ab36c1214fb5bb90f80d8247469)) - -## [0.4.3](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.2...barretenberg-v0.4.3) (2023-08-23) - - -### Features - -* **bb:** Use an environment variable to set the transcript URL ([#1750](https://github.com/AztecProtocol/barretenberg/issues/1750)) ([41d362e](https://github.com/AztecProtocol/barretenberg/commit/41d362e9c9ffeb763cd56ca8a9f8c4512b86c80c)) - - -### Bug Fixes - -* Clang version in README and subrepo edge case ([#1730](https://github.com/AztecProtocol/barretenberg/issues/1730)) ([74158c4](https://github.com/AztecProtocol/barretenberg/commit/74158c4e467d4b6ab90e7d5aeb9a28f04adc1d66)) -* Download SRS using one canonical URL across the codebase ([#1748](https://github.com/AztecProtocol/barretenberg/issues/1748)) ([5c91de7](https://github.com/AztecProtocol/barretenberg/commit/5c91de7296e054f6d5ac3dca94ca85e06d496048)) -* Proving fails when circuit has size > ~500K ([#1739](https://github.com/AztecProtocol/barretenberg/issues/1739)) ([6d32383](https://github.com/AztecProtocol/barretenberg/commit/6d323838a525190618d608598357ee4608c46699)) -* Revert clang check bootstrap.sh ([#1734](https://github.com/AztecProtocol/barretenberg/issues/1734)) ([65a38bc](https://github.com/AztecProtocol/barretenberg/commit/65a38bc045c66c5f64e87ba8c6e446945f2f0a24)) -* Update barretenberg bootstrap.sh for mac ([#1732](https://github.com/AztecProtocol/barretenberg/issues/1732)) ([f21ac3e](https://github.com/AztecProtocol/barretenberg/commit/f21ac3e893b5d30f7a4ba8ca10e6fd70f5c617b4)) - -## [0.4.2](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.1...barretenberg-v0.4.2) (2023-08-21) - - -### Bug Fixes - -* Remove automatic update to `AztecProtocol/dev-bb.js` ([#1712](https://github.com/AztecProtocol/barretenberg/issues/1712)) ([d883900](https://github.com/AztecProtocol/barretenberg/commit/d883900f9b297f659d14583ac93eede5160f9aae)) - -## [0.4.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.4.0...barretenberg-v0.4.1) (2023-08-21) - - -### Bug Fixes - -* **bb:** Fix Typo ([#1709](https://github.com/AztecProtocol/barretenberg/issues/1709)) ([286d64e](https://github.com/AztecProtocol/barretenberg/commit/286d64e6036336314114f1d2a25273f4dabe36f4)) - -## [0.4.0](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.6...barretenberg-v0.4.0) (2023-08-21) - - -### ⚠ BREAKING CHANGES - -* Barretenberg binaries now take in the encoded circuit instead of a json file ([#1618](https://github.com/AztecProtocol/barretenberg/issues/1618)) - -### Features - -* Add msgpack defs to remaining circuit types ([#1538](https://github.com/AztecProtocol/barretenberg/issues/1538)) ([e560e39](https://github.com/AztecProtocol/barretenberg/commit/e560e3955d039a93e2ed157c684ea36abd178d4b)) -* Add workflow to output to dev-bb.js ([#1299](https://github.com/AztecProtocol/barretenberg/issues/1299)) ([25a54f1](https://github.com/AztecProtocol/barretenberg/commit/25a54f123e6f98dafef4cd882839106eadf6ab8d)) -* Celer benchmark ([#1369](https://github.com/AztecProtocol/barretenberg/issues/1369)) ([8fd364a](https://github.com/AztecProtocol/barretenberg/commit/8fd364a3ff6e7b5f377ef5ec37649b47fe0a3e44)) -* Honk recursive verifier Pt. 1 ([#1488](https://github.com/AztecProtocol/barretenberg/issues/1488)) ([030dace](https://github.com/AztecProtocol/barretenberg/commit/030dacebd9831ed938b546133373cad63e17ecd8)) -* New stdlib Transcript ([#1219](https://github.com/AztecProtocol/barretenberg/issues/1219)) ([1b9e077](https://github.com/AztecProtocol/barretenberg/commit/1b9e0770e7e470f2708eb6f96cd5ee831b84f4f4)) - - -### Bug Fixes - -* **acir:** When retrying failed ACIR tests it should not use the default CLI argument ([#1673](https://github.com/AztecProtocol/barretenberg/issues/1673)) ([ea4792d](https://github.com/AztecProtocol/barretenberg/commit/ea4792ddc9c23f7390f47cf78d4939cce6458a46)) -* Align bbmalloc implementations ([#1513](https://github.com/AztecProtocol/barretenberg/issues/1513)) ([b92338d](https://github.com/AztecProtocol/barretenberg/commit/b92338d3c9de9d21a6933747a3f1479266d16f9e)) -* Barretenberg binaries now take in the encoded circuit instead of a json file ([#1618](https://github.com/AztecProtocol/barretenberg/issues/1618)) ([180cdc9](https://github.com/AztecProtocol/barretenberg/commit/180cdc9ac7cf9aa793d9774dc866ceb4e6ec3fbc)) -* Bb sync take 2 ([#1669](https://github.com/AztecProtocol/barretenberg/issues/1669)) ([d3eebe4](https://github.com/AztecProtocol/barretenberg/commit/d3eebe46e5b702801c866d7dd073a0eeb9f475b7)) -* Bin reference when installing package ([#678](https://github.com/AztecProtocol/barretenberg/issues/678)) ([c734295](https://github.com/AztecProtocol/barretenberg/commit/c734295a10d2c40ede773519664170880f28b2b7)) -* Fix paths in `barretenberg` bootstrap.sh script ([#1662](https://github.com/AztecProtocol/barretenberg/issues/1662)) ([c8917cd](https://github.com/AztecProtocol/barretenberg/commit/c8917cd8ec415dafe5309ec0e90aba28184d8294)) -* Fixed a failing test and added a small fuzzer ([#1384](https://github.com/AztecProtocol/barretenberg/issues/1384)) ([441e972](https://github.com/AztecProtocol/barretenberg/commit/441e972c88c5c314b4958e158f977f60a8c9e32d)) -* Sync aztec master ([#680](https://github.com/AztecProtocol/barretenberg/issues/680)) ([3afc243](https://github.com/AztecProtocol/barretenberg/commit/3afc2438053f530e49fbebbdbadd8db8a630bb8c)) - -## [0.3.6](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.5...barretenberg-v0.3.6) (2023-08-08) - - -### Features - -* Update release-please.yml ([#651](https://github.com/AztecProtocol/barretenberg/issues/651)) ([2795df6](https://github.com/AztecProtocol/barretenberg/commit/2795df6b705175a32fe2a6f18b3c572e297e277e)) - -## [0.3.5](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.4...barretenberg-v0.3.5) (2023-08-07) - - -### Features - -* Celer benchmark ([#1369](https://github.com/AztecProtocol/barretenberg/issues/1369)) ([d4ade2a](https://github.com/AztecProtocol/barretenberg/commit/d4ade2a5f06a3abf3c9c2635946d7121cc2f64b4)) -* Goblin Honk Composer/Prover/Verifier ([#1220](https://github.com/AztecProtocol/barretenberg/issues/1220)) ([970bb07](https://github.com/AztecProtocol/barretenberg/commit/970bb073763cc59552cd05dccf7f8fc63f58cef9)) -* Goblin translator prototype ([#1249](https://github.com/AztecProtocol/barretenberg/issues/1249)) ([7738d74](https://github.com/AztecProtocol/barretenberg/commit/7738d74791acc0fa8b1b1d8bb2a77783ca900123)) -* Internal keyword + lending contract and tests ([#978](https://github.com/AztecProtocol/barretenberg/issues/978)) ([e58ca4b](https://github.com/AztecProtocol/barretenberg/commit/e58ca4b332272fc57b2a5358bb5003bac79a8f5a)) -* Minimal barretenberg .circleci ([#1352](https://github.com/AztecProtocol/barretenberg/issues/1352)) ([708e2e2](https://github.com/AztecProtocol/barretenberg/commit/708e2e2786de5dce5bfc770c54734e5862a436e5)) - - -### Bug Fixes - -* Bootstrap.sh git hook for monorepo ([#1256](https://github.com/AztecProtocol/barretenberg/issues/1256)) ([b22b8d5](https://github.com/AztecProtocol/barretenberg/commit/b22b8d5f42ddfae140068c3ce8b3053d4c8d1874)) -* Build-system spot request cancellation ([#1339](https://github.com/AztecProtocol/barretenberg/issues/1339)) ([fc1d96a](https://github.com/AztecProtocol/barretenberg/commit/fc1d96a744a8d5a6cae06c408546c3638408551d)) -* Fixing external benchmarks ([#1250](https://github.com/AztecProtocol/barretenberg/issues/1250)) ([0ea6a39](https://github.com/AztecProtocol/barretenberg/commit/0ea6a39950e8cd5ff7765031457c162d03ebae06)) -* Fixing fuzzing build after composer splitting ([#1317](https://github.com/AztecProtocol/barretenberg/issues/1317)) ([946c23c](https://github.com/AztecProtocol/barretenberg/commit/946c23c52d45ddce973e453c40c048734e7f6937)) -* Reinstate barretenberg-benchmark-aggregator ([#1330](https://github.com/AztecProtocol/barretenberg/issues/1330)) ([407a915](https://github.com/AztecProtocol/barretenberg/commit/407a915a94c7d83dec9e14a11ad0e3461fd2906d)) -* Retry git submodule fetch ([#1371](https://github.com/AztecProtocol/barretenberg/issues/1371)) ([037dda3](https://github.com/AztecProtocol/barretenberg/commit/037dda3d254d56a20292d2bed5a9582d36c08427)) - -## [0.3.4](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.3...barretenberg-v0.3.4) (2023-07-25) - - -### Features - -* Add Goblin Ultra Circuit builder ([#587](https://github.com/AztecProtocol/barretenberg/issues/587)) ([2d38c25](https://github.com/AztecProtocol/barretenberg/commit/2d38c252de8b867955da661181e51f1a5f28cbc6)) -* Modify bb.js to be compatible with next.js ([#544](https://github.com/AztecProtocol/barretenberg/issues/544)) ([d384089](https://github.com/AztecProtocol/barretenberg/commit/d384089f60d1a6d5baeb0d3459556a310b790366)) -* Support public inputs in Ultra Honk ([#581](https://github.com/AztecProtocol/barretenberg/issues/581)) ([9cd0a06](https://github.com/AztecProtocol/barretenberg/commit/9cd0a064b8258bf4f72dd9e1c5e8f85b074d1bbc)) - -## [0.3.3](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.2...barretenberg-v0.3.3) (2023-07-17) - - -### Features - -* Bb and bb.js directly parse nargo bincode format. ([#610](https://github.com/AztecProtocol/barretenberg/issues/610)) ([d25e37a](https://github.com/AztecProtocol/barretenberg/commit/d25e37ad74b88dc45337b2a529ede3136dd4a699)) -* Goblin work done in Valencia ([#569](https://github.com/AztecProtocol/barretenberg/issues/569)) ([57af751](https://github.com/AztecProtocol/barretenberg/commit/57af751646dc3c038fea24ada4e160f6d422845f)) - -## [0.3.2](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.1...barretenberg-v0.3.2) (2023-07-12) - - -### Features - -* **msgpack:** Ability to specify NOSCHEMA for cbinds ([#605](https://github.com/AztecProtocol/barretenberg/issues/605)) ([8a4f5f1](https://github.com/AztecProtocol/barretenberg/commit/8a4f5f1d31e1d631c1cd3ed49c100858b58c56b2)) - -## [0.3.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg-v0.3.0...barretenberg-v0.3.1) (2023-07-11) - - -### Features - -* Sentence case changelog titles ([#598](https://github.com/AztecProtocol/barretenberg/issues/598)) ([1466108](https://github.com/AztecProtocol/barretenberg/commit/146610857ae511e9cfb27f873f49cec2dd19ddad)) - -## 0.3.0 (2023-07-11) - - -### ⚠ BREAKING CHANGES - -* Use circuit builders ([#501](https://github.com/AztecProtocol/barretenberg/issues/501)) -* **dsl:** add hash index to pedersen constraint ([#436](https://github.com/AztecProtocol/barretenberg/issues/436)) -* add support for ROM and RAM ACVM opcodes ([#417](https://github.com/AztecProtocol/barretenberg/issues/417)) -* replace `MerkleMembershipConstraint` with`ComputeMerkleRootConstraint` ([#385](https://github.com/AztecProtocol/barretenberg/issues/385)) -* Remove TOOLCHAIN logic and replace with CMake presets ([#162](https://github.com/AztecProtocol/barretenberg/issues/162)) - -### Features - -* Add `get_sibling_path` method in MerkleTree ([#584](https://github.com/AztecProtocol/barretenberg/issues/584)) ([b3db9f8](https://github.com/AztecProtocol/barretenberg/commit/b3db9f8944e546cd9da9a1529e2562ee75e62369)) -* Add `signature_verification_result` to schnorr stdlib ([#173](https://github.com/AztecProtocol/barretenberg/issues/173)) ([7ae381e](https://github.com/AztecProtocol/barretenberg/commit/7ae381e4c5a084efde18917569518c7d4040b653)) -* Add equality and serialization to poly_triple ([#172](https://github.com/AztecProtocol/barretenberg/issues/172)) ([142b041](https://github.com/AztecProtocol/barretenberg/commit/142b041b2d3d090785f0e6f319fbf7504c751098)) -* Add installation targets for libbarretenberg, wasm & headers ([#185](https://github.com/AztecProtocol/barretenberg/issues/185)) ([f2fdebe](https://github.com/AztecProtocol/barretenberg/commit/f2fdebe037d4d2d90761f98e28b4b0d3af9a0f63)) -* Add Noir DSL with acir_format and turbo_proofs namespaces ([#198](https://github.com/AztecProtocol/barretenberg/issues/198)) ([54fab22](https://github.com/AztecProtocol/barretenberg/commit/54fab2217f437bb04a5e9fb71b271cf91b90c6e5)) -* Add pkgconfig output for installed target ([#208](https://github.com/AztecProtocol/barretenberg/issues/208)) ([d85a365](https://github.com/AztecProtocol/barretenberg/commit/d85a365180ac2672bbd33bd8b799a1f154716ab3)) -* add support for ROM and RAM ACVM opcodes ([#417](https://github.com/AztecProtocol/barretenberg/issues/417)) ([697fabb](https://github.com/AztecProtocol/barretenberg/commit/697fabb7cbeadb9264db5047e7fd36565dad8790)) -* Allow bootstrap to work with linux + clang on ARM ([#131](https://github.com/AztecProtocol/barretenberg/issues/131)) ([52cb06b](https://github.com/AztecProtocol/barretenberg/commit/52cb06b445c73f2f324af6595af70ce9c130eb09)) -* **api:** external cpp header for circuits ([#489](https://github.com/AztecProtocol/barretenberg/issues/489)) ([fbbb342](https://github.com/AztecProtocol/barretenberg/commit/fbbb34287fdef0e8fedb2e25c5431f17501ad653)) -* **bb.js:** initial API ([#232](https://github.com/AztecProtocol/barretenberg/issues/232)) ([c860b02](https://github.com/AztecProtocol/barretenberg/commit/c860b02d80425de161af50acf33e94d94eb0659c)) -* Benchmark suite update ([d7b1499](https://github.com/AztecProtocol/barretenberg/commit/d7b14993ac8d329664fd36e7b4aa083935b1d407)) -* Benchmark suite update ([#508](https://github.com/AztecProtocol/barretenberg/issues/508)) ([d7b1499](https://github.com/AztecProtocol/barretenberg/commit/d7b14993ac8d329664fd36e7b4aa083935b1d407)) -* CI to test aztec circuits with current commit of bberg ([#418](https://github.com/AztecProtocol/barretenberg/issues/418)) ([20a0873](https://github.com/AztecProtocol/barretenberg/commit/20a0873dcbfe4a862ad53a9c137030689a521a04)) -* **dsl:** Add ECDSA secp256r1 verification ([#582](https://github.com/AztecProtocol/barretenberg/issues/582)) ([adc4c7b](https://github.com/AztecProtocol/barretenberg/commit/adc4c7b4eb634eae28dd28e25b94b93a5b49c80e)) -* **dsl:** add hash index to pedersen constraint ([#436](https://github.com/AztecProtocol/barretenberg/issues/436)) ([e0b8804](https://github.com/AztecProtocol/barretenberg/commit/e0b8804b9418c7aa39e29e800fecb4ed15d73b80)) -* **github:** add pull request template ([65f3e33](https://github.com/AztecProtocol/barretenberg/commit/65f3e3312061e7284c0dd0f0f89fa92ee92f9eac)) -* **honk:** Shared relation arithmetic ([#514](https://github.com/AztecProtocol/barretenberg/issues/514)) ([0838474](https://github.com/AztecProtocol/barretenberg/commit/0838474e67469a6d91d6595d1ee23e1dea53863c)) -* Improve barretenberg headers ([#201](https://github.com/AztecProtocol/barretenberg/issues/201)) ([4e03839](https://github.com/AztecProtocol/barretenberg/commit/4e03839a970a5d07dab7f86cd2b7166a09f5045a)) -* Initial native version of bb binary. ([#524](https://github.com/AztecProtocol/barretenberg/issues/524)) ([4a1b532](https://github.com/AztecProtocol/barretenberg/commit/4a1b5322dc78921d253e6a374eba0b616ab788df)) -* Make the circuit constructors field agnostic so we can check circuits on grumpkin ([#534](https://github.com/AztecProtocol/barretenberg/issues/534)) ([656d794](https://github.com/AztecProtocol/barretenberg/commit/656d7944f94f3da88250f3140838f3e32e9d0174)) -* Multithreaded Sumcheck ([#556](https://github.com/AztecProtocol/barretenberg/issues/556)) ([c4094b1](https://github.com/AztecProtocol/barretenberg/commit/c4094b155ba9d8e914c3e6a5b0d7808945b1eeed)) -* **nullifier_tree:** make empty nullifier tree leaves hash be 0 ([#360](https://github.com/AztecProtocol/barretenberg/issues/360)) ([#382](https://github.com/AztecProtocol/barretenberg/issues/382)) ([b85ab8d](https://github.com/AztecProtocol/barretenberg/commit/b85ab8d587b3e93db2aa0f1c4f012e58e5d97915)) -* Optimize memory consumption of pedersen generators ([#413](https://github.com/AztecProtocol/barretenberg/issues/413)) ([d60b16a](https://github.com/AztecProtocol/barretenberg/commit/d60b16a14219fd4bd130ce4537c3e94bfa10128f)) -* Parallelised folding in Gemini ([#550](https://github.com/AztecProtocol/barretenberg/issues/550)) ([3b962d3](https://github.com/AztecProtocol/barretenberg/commit/3b962d372491430871443fd1b95fd9e049e233c8)) -* **pkg-config:** Add a bindir variable ([#239](https://github.com/AztecProtocol/barretenberg/issues/239)) ([611bf34](https://github.com/AztecProtocol/barretenberg/commit/611bf34bcc6f82969a6fe546bf0a7cbecda6d36d)) -* Remove TOOLCHAIN logic and replace with CMake presets ([#162](https://github.com/AztecProtocol/barretenberg/issues/162)) ([09db0be](https://github.com/AztecProtocol/barretenberg/commit/09db0be3d09ee12b4b73b03abe8fa4565cdb6660)) -* replace `MerkleMembershipConstraint` with`ComputeMerkleRootConstraint` ([#385](https://github.com/AztecProtocol/barretenberg/issues/385)) ([74dbce5](https://github.com/AztecProtocol/barretenberg/commit/74dbce5dfa126ecd6dbda7b758581752f7b6a389)) -* Sort includes ([#571](https://github.com/AztecProtocol/barretenberg/issues/571)) ([dfa8736](https://github.com/AztecProtocol/barretenberg/commit/dfa8736136323e62a705066d25bef962a6a0b82d)) -* Split plonk and honk tests ([#529](https://github.com/AztecProtocol/barretenberg/issues/529)) ([ba583ff](https://github.com/AztecProtocol/barretenberg/commit/ba583ff00509f636feae7b78304b115e34fc2357)) -* Support nix package manager ([#234](https://github.com/AztecProtocol/barretenberg/issues/234)) ([19a72fe](https://github.com/AztecProtocol/barretenberg/commit/19a72fec0ff8d451fc94a9f5563202867a5f8147)) -* **ts:** allow passing srs via env functions ([#260](https://github.com/AztecProtocol/barretenberg/issues/260)) ([ac78353](https://github.com/AztecProtocol/barretenberg/commit/ac7835304f4524039abf0a0df9ae85d905f55c86)) -* **ultrahonk:** Added a simple filler table to minimize the amount of entries used to make UltraHonk polynomials non-zero ([b20b401](https://github.com/AztecProtocol/barretenberg/commit/b20b4012546c5b67623950d0fedb0974df8bf345)) -* **ultrahonk:** Added a simple filler table to minimize the amount of entries used to make UltraHonk polynomials non-zero ([#531](https://github.com/AztecProtocol/barretenberg/issues/531)) ([b20b401](https://github.com/AztecProtocol/barretenberg/commit/b20b4012546c5b67623950d0fedb0974df8bf345)) -* Utilize globally installed benchmark if available ([#152](https://github.com/AztecProtocol/barretenberg/issues/152)) ([fbc5027](https://github.com/AztecProtocol/barretenberg/commit/fbc502794e9bbdfda797b11ac71eba996d649722)) -* Utilize globally installed gtest if available ([#151](https://github.com/AztecProtocol/barretenberg/issues/151)) ([efa18a6](https://github.com/AztecProtocol/barretenberg/commit/efa18a621917dc6c38f453825cadc76eb793a73c)) -* Utilize globally installed leveldb if available ([#134](https://github.com/AztecProtocol/barretenberg/issues/134)) ([255dfb5](https://github.com/AztecProtocol/barretenberg/commit/255dfb52adca885b0a4e4380769a279922af49ff)) -* Working UltraPlonk for Noir ([#299](https://github.com/AztecProtocol/barretenberg/issues/299)) ([d56dfbd](https://github.com/AztecProtocol/barretenberg/commit/d56dfbdfd74b438b3c8652e1ae8740de99f93ae5)) - - -### Bug Fixes - -* add NUM_RESERVED_GATES before fetching subgroup size in composer ([#539](https://github.com/AztecProtocol/barretenberg/issues/539)) ([fa11abf](https://github.com/AztecProtocol/barretenberg/commit/fa11abf0877314b03420d6f7ace1312df41cd50b)) -* Adds `VERSION` file to release-please ([#542](https://github.com/AztecProtocol/barretenberg/issues/542)) ([31fb34c](https://github.com/AztecProtocol/barretenberg/commit/31fb34c307a4336414b1fd2076d96105a29b0e7b)) -* Align native library object library with wasm ([#238](https://github.com/AztecProtocol/barretenberg/issues/238)) ([4fa6c0d](https://github.com/AztecProtocol/barretenberg/commit/4fa6c0d2d8c6309d53757ad54d3433d1d662de5f)) -* Avoid bb.js memory issues. ([#578](https://github.com/AztecProtocol/barretenberg/issues/578)) ([96891de](https://github.com/AztecProtocol/barretenberg/commit/96891de21fd74ca33ea75ae97f73cada39a5d337)) -* Avoid targeting honk test files when testing is disabled ([#125](https://github.com/AztecProtocol/barretenberg/issues/125)) ([e4a70ed](https://github.com/AztecProtocol/barretenberg/commit/e4a70edf2bb39d67095cbe21fff310372369a92d)) -* BarycentricData instantiation time and unused code in secp curves ([#572](https://github.com/AztecProtocol/barretenberg/issues/572)) ([bc78bb0](https://github.com/AztecProtocol/barretenberg/commit/bc78bb00d273c756fa4f02967d219cd3fd788890)) -* bbmalloc linker error ([#459](https://github.com/AztecProtocol/barretenberg/issues/459)) ([d4761c1](https://github.com/AztecProtocol/barretenberg/commit/d4761c11f30eeecbcb2485f50516bee71809bab1)) -* Build on stock apple clang. ([#592](https://github.com/AztecProtocol/barretenberg/issues/592)) ([0ac4bc3](https://github.com/AztecProtocol/barretenberg/commit/0ac4bc36619f85c1b3a65d3f825ba5683cbbe30c)) -* **build:** git add -f .yalc ([#265](https://github.com/AztecProtocol/barretenberg/issues/265)) ([7671192](https://github.com/AztecProtocol/barretenberg/commit/7671192c8a60ff0bc0f8ad3e14ac299ff780cc25)) -* bump timeout on common test. ([c9bc87d](https://github.com/AztecProtocol/barretenberg/commit/c9bc87d29fa1325162cb1e7bf2db7cc85747fd9e)) -* Check for wasm-opt during configure & run on post_build ([#175](https://github.com/AztecProtocol/barretenberg/issues/175)) ([1ff6af3](https://github.com/AztecProtocol/barretenberg/commit/1ff6af3cb6b7b4d3bb53bfbdcbf1c3a568e0fa86)) -* check_circuit bug fix ([#510](https://github.com/AztecProtocol/barretenberg/issues/510)) ([4b156a3](https://github.com/AztecProtocol/barretenberg/commit/4b156a3648e6da9dfe292e354da9a27185d2aa9d)) -* cleanup of include statements and dependencies ([#527](https://github.com/AztecProtocol/barretenberg/issues/527)) ([b288c24](https://github.com/AztecProtocol/barretenberg/commit/b288c2420bdc350658cd3776bad1eb087cc28d63)) -* **cmake:** Remove leveldb dependency that was accidentally re-added ([#335](https://github.com/AztecProtocol/barretenberg/issues/335)) ([3534e2b](https://github.com/AztecProtocol/barretenberg/commit/3534e2bfcca46dbca30573286f43425dab6bc810)) -* **dsl:** Use info instead of std::cout to log ([#323](https://github.com/AztecProtocol/barretenberg/issues/323)) ([486d738](https://github.com/AztecProtocol/barretenberg/commit/486d73842b4b7d6aa84fa12d7462fe52e892d416)) -* Ecdsa Malleability Bug ([#512](https://github.com/AztecProtocol/barretenberg/issues/512)) ([5cf856c](https://github.com/AztecProtocol/barretenberg/commit/5cf856c5c29c9f9b8abb87d7bde23b4932711350)) -* **ecdsa:** correct short weierstrass curve eqn ([#567](https://github.com/AztecProtocol/barretenberg/issues/567)) ([386ec63](https://github.com/AztecProtocol/barretenberg/commit/386ec6372156d604e37e58490f1c7396077f84c4)) -* Ensure barretenberg provides headers that Noir needs ([#200](https://github.com/AztecProtocol/barretenberg/issues/200)) ([0171a49](https://github.com/AztecProtocol/barretenberg/commit/0171a499a175f88a0ee3fcfd4de0f43ad0ebff85)) -* Ensure TBB is optional using OPTIONAL_COMPONENTS ([#127](https://github.com/AztecProtocol/barretenberg/issues/127)) ([e3039b2](https://github.com/AztecProtocol/barretenberg/commit/e3039b26ea8aca4b8fdc4b2cbac6716ace261c76)) -* Fixed the memory issue ([#509](https://github.com/AztecProtocol/barretenberg/issues/509)) ([107d438](https://github.com/AztecProtocol/barretenberg/commit/107d438ad96847e40f8e5374749b8cba820b2007)) -* Increment CMakeList version on releases ([#536](https://github.com/AztecProtocol/barretenberg/issues/536)) ([b571411](https://github.com/AztecProtocol/barretenberg/commit/b571411a6d58f79e3e2553c3b1c81b4f186f2245)) -* msgpack error ([#456](https://github.com/AztecProtocol/barretenberg/issues/456)) ([943d6d0](https://github.com/AztecProtocol/barretenberg/commit/943d6d07c57bea521c2593e892e839f25f82b289)) -* msgpack variant_impl.hpp ([#462](https://github.com/AztecProtocol/barretenberg/issues/462)) ([b5838a6](https://github.com/AztecProtocol/barretenberg/commit/b5838a6c9fe456e832776da21379e41c0a2bbd5d)) -* **nix:** Disable ASM & ADX when building in Nix ([#327](https://github.com/AztecProtocol/barretenberg/issues/327)) ([3bc724d](https://github.com/AztecProtocol/barretenberg/commit/3bc724d2163d29041bfa29a1e49625bab77289a2)) -* **nix:** Use wasi-sdk 12 to provide barretenberg-wasm in overlay ([#315](https://github.com/AztecProtocol/barretenberg/issues/315)) ([4a06992](https://github.com/AztecProtocol/barretenberg/commit/4a069923f4a869f8c2315e6d3f738db6e66dcdfa)) -* Pass brew omp location via LDFLAGS and CPPFLAGS ([#126](https://github.com/AztecProtocol/barretenberg/issues/126)) ([54141f1](https://github.com/AztecProtocol/barretenberg/commit/54141f12de9eee86220003b1f80d39a41795cedc)) -* Remove leveldb_store from stdlib_merkle_tree ([#149](https://github.com/AztecProtocol/barretenberg/issues/149)) ([3ce5e7e](https://github.com/AztecProtocol/barretenberg/commit/3ce5e7e17ca7bb806373be833a44d55a8e584bda)) -* Revert "fix: add NUM_RESERVED_GATES before fetching subgroup size in composer" ([#540](https://github.com/AztecProtocol/barretenberg/issues/540)) ([a9fbc39](https://github.com/AztecProtocol/barretenberg/commit/a9fbc3973f24680f676682d15c3a4cef0a1ab798)) -* Revert generator changes that cause memory OOB access ([#338](https://github.com/AztecProtocol/barretenberg/issues/338)) ([500daf1](https://github.com/AztecProtocol/barretenberg/commit/500daf1ceb03771d2c01eaf1a86139a7ac1d814f)) -* Soundness issue in bigfield's `evaluate_multiply_add` method ([#558](https://github.com/AztecProtocol/barretenberg/issues/558)) ([1a98ac6](https://github.com/AztecProtocol/barretenberg/commit/1a98ac64787a0e2904fd22043497a8d11afe5e6c)) -* **srs:** Detect shasum utility when downloading lagrange ([#143](https://github.com/AztecProtocol/barretenberg/issues/143)) ([515604d](https://github.com/AztecProtocol/barretenberg/commit/515604dff83648e00106f35511aa567921599a78)) -* Store lagrange forms of selector polys w/ Ultra ([#255](https://github.com/AztecProtocol/barretenberg/issues/255)) ([b121963](https://github.com/AztecProtocol/barretenberg/commit/b12196362497c8dfb3a64284d28de2d8ee7d730c)) -* throw -> throw_or_abort in sol gen ([#388](https://github.com/AztecProtocol/barretenberg/issues/388)) ([7cfe3f0](https://github.com/AztecProtocol/barretenberg/commit/7cfe3f055815e333ff8a8f1f30e8377c83d2182a)) -* Trigger release-please ([#594](https://github.com/AztecProtocol/barretenberg/issues/594)) ([5042861](https://github.com/AztecProtocol/barretenberg/commit/5042861405df6b5659c0c32418720d8bdea81081)) -* Update versioning in nix files when a release is made ([#549](https://github.com/AztecProtocol/barretenberg/issues/549)) ([1b3ff93](https://github.com/AztecProtocol/barretenberg/commit/1b3ff93e7ed8873583cdade95a860adb8823f1cd)) -* **wasm:** Remove the CMAKE_STAGING_PREFIX variable from wasm preset ([#240](https://github.com/AztecProtocol/barretenberg/issues/240)) ([f2f8d1f](https://github.com/AztecProtocol/barretenberg/commit/f2f8d1f7a24ca73e30c981fd245c86f7f964abb7)) -* Wrap each use of filesystem library in ifndef __wasm__ ([#181](https://github.com/AztecProtocol/barretenberg/issues/181)) ([0eae962](https://github.com/AztecProtocol/barretenberg/commit/0eae96293b4d2da6b6b23ae80ac132fb49f90915)) - - -### Code Refactoring - -* Use circuit builders ([#501](https://github.com/AztecProtocol/barretenberg/issues/501)) ([709a29c](https://github.com/AztecProtocol/barretenberg/commit/709a29c89a305be017270361780995353188035a)) - -## [0.2.0](https://github.com/AztecProtocol/barretenberg/compare/v0.1.0...v0.2.0) (2023-07-11) - - -### ⚠ BREAKING CHANGES - -* Use circuit builders ([#501](https://github.com/AztecProtocol/barretenberg/issues/501)) - -### Features - -* Add `get_sibling_path` method in MerkleTree ([#584](https://github.com/AztecProtocol/barretenberg/issues/584)) ([b3db9f8](https://github.com/AztecProtocol/barretenberg/commit/b3db9f8944e546cd9da9a1529e2562ee75e62369)) -* **dsl:** Add ECDSA secp256r1 verification ([#582](https://github.com/AztecProtocol/barretenberg/issues/582)) ([adc4c7b](https://github.com/AztecProtocol/barretenberg/commit/adc4c7b4eb634eae28dd28e25b94b93a5b49c80e)) -* Initial native version of bb binary. ([#524](https://github.com/AztecProtocol/barretenberg/issues/524)) ([4a1b532](https://github.com/AztecProtocol/barretenberg/commit/4a1b5322dc78921d253e6a374eba0b616ab788df)) -* Make the circuit constructors field agnostic so we can check circuits on grumpkin ([#534](https://github.com/AztecProtocol/barretenberg/issues/534)) ([656d794](https://github.com/AztecProtocol/barretenberg/commit/656d7944f94f3da88250f3140838f3e32e9d0174)) -* Multithreaded Sumcheck ([#556](https://github.com/AztecProtocol/barretenberg/issues/556)) ([c4094b1](https://github.com/AztecProtocol/barretenberg/commit/c4094b155ba9d8e914c3e6a5b0d7808945b1eeed)) -* Optimize memory consumption of pedersen generators ([#413](https://github.com/AztecProtocol/barretenberg/issues/413)) ([d60b16a](https://github.com/AztecProtocol/barretenberg/commit/d60b16a14219fd4bd130ce4537c3e94bfa10128f)) -* Parallelised folding in Gemini ([#550](https://github.com/AztecProtocol/barretenberg/issues/550)) ([3b962d3](https://github.com/AztecProtocol/barretenberg/commit/3b962d372491430871443fd1b95fd9e049e233c8)) -* Sort includes ([#571](https://github.com/AztecProtocol/barretenberg/issues/571)) ([dfa8736](https://github.com/AztecProtocol/barretenberg/commit/dfa8736136323e62a705066d25bef962a6a0b82d)) -* Split plonk and honk tests ([#529](https://github.com/AztecProtocol/barretenberg/issues/529)) ([ba583ff](https://github.com/AztecProtocol/barretenberg/commit/ba583ff00509f636feae7b78304b115e34fc2357)) - - -### Bug Fixes - -* add NUM_RESERVED_GATES before fetching subgroup size in composer ([#539](https://github.com/AztecProtocol/barretenberg/issues/539)) ([fa11abf](https://github.com/AztecProtocol/barretenberg/commit/fa11abf0877314b03420d6f7ace1312df41cd50b)) -* Adds `VERSION` file to release-please ([#542](https://github.com/AztecProtocol/barretenberg/issues/542)) ([31fb34c](https://github.com/AztecProtocol/barretenberg/commit/31fb34c307a4336414b1fd2076d96105a29b0e7b)) -* Avoid bb.js memory issues. ([#578](https://github.com/AztecProtocol/barretenberg/issues/578)) ([96891de](https://github.com/AztecProtocol/barretenberg/commit/96891de21fd74ca33ea75ae97f73cada39a5d337)) -* BarycentricData instantiation time and unused code in secp curves ([#572](https://github.com/AztecProtocol/barretenberg/issues/572)) ([bc78bb0](https://github.com/AztecProtocol/barretenberg/commit/bc78bb00d273c756fa4f02967d219cd3fd788890)) -* Build on stock apple clang. ([#592](https://github.com/AztecProtocol/barretenberg/issues/592)) ([0ac4bc3](https://github.com/AztecProtocol/barretenberg/commit/0ac4bc36619f85c1b3a65d3f825ba5683cbbe30c)) -* bump timeout on common test. ([c9bc87d](https://github.com/AztecProtocol/barretenberg/commit/c9bc87d29fa1325162cb1e7bf2db7cc85747fd9e)) -* check_circuit bug fix ([#510](https://github.com/AztecProtocol/barretenberg/issues/510)) ([4b156a3](https://github.com/AztecProtocol/barretenberg/commit/4b156a3648e6da9dfe292e354da9a27185d2aa9d)) -* cleanup of include statements and dependencies ([#527](https://github.com/AztecProtocol/barretenberg/issues/527)) ([b288c24](https://github.com/AztecProtocol/barretenberg/commit/b288c2420bdc350658cd3776bad1eb087cc28d63)) -* Ecdsa Malleability Bug ([#512](https://github.com/AztecProtocol/barretenberg/issues/512)) ([5cf856c](https://github.com/AztecProtocol/barretenberg/commit/5cf856c5c29c9f9b8abb87d7bde23b4932711350)) -* **ecdsa:** correct short weierstrass curve eqn ([#567](https://github.com/AztecProtocol/barretenberg/issues/567)) ([386ec63](https://github.com/AztecProtocol/barretenberg/commit/386ec6372156d604e37e58490f1c7396077f84c4)) -* Increment CMakeList version on releases ([#536](https://github.com/AztecProtocol/barretenberg/issues/536)) ([b571411](https://github.com/AztecProtocol/barretenberg/commit/b571411a6d58f79e3e2553c3b1c81b4f186f2245)) -* Revert "fix: add NUM_RESERVED_GATES before fetching subgroup size in composer" ([#540](https://github.com/AztecProtocol/barretenberg/issues/540)) ([a9fbc39](https://github.com/AztecProtocol/barretenberg/commit/a9fbc3973f24680f676682d15c3a4cef0a1ab798)) -* Soundness issue in bigfield's `evaluate_multiply_add` method ([#558](https://github.com/AztecProtocol/barretenberg/issues/558)) ([1a98ac6](https://github.com/AztecProtocol/barretenberg/commit/1a98ac64787a0e2904fd22043497a8d11afe5e6c)) -* Update versioning in nix files when a release is made ([#549](https://github.com/AztecProtocol/barretenberg/issues/549)) ([1b3ff93](https://github.com/AztecProtocol/barretenberg/commit/1b3ff93e7ed8873583cdade95a860adb8823f1cd)) - - -### Code Refactoring - -* Use circuit builders ([#501](https://github.com/AztecProtocol/barretenberg/issues/501)) ([709a29c](https://github.com/AztecProtocol/barretenberg/commit/709a29c89a305be017270361780995353188035a)) - -## 0.1.0 (2023-06-15) - - -### ⚠ BREAKING CHANGES - -* **dsl:** add hash index to pedersen constraint ([#436](https://github.com/AztecProtocol/barretenberg/issues/436)) -* add support for ROM and RAM ACVM opcodes ([#417](https://github.com/AztecProtocol/barretenberg/issues/417)) -* replace `MerkleMembershipConstraint` with`ComputeMerkleRootConstraint` ([#385](https://github.com/AztecProtocol/barretenberg/issues/385)) -* Remove TOOLCHAIN logic and replace with CMake presets ([#162](https://github.com/AztecProtocol/barretenberg/issues/162)) - -### Features - -* Add `signature_verification_result` to schnorr stdlib ([#173](https://github.com/AztecProtocol/barretenberg/issues/173)) ([7ae381e](https://github.com/AztecProtocol/barretenberg/commit/7ae381e4c5a084efde18917569518c7d4040b653)) -* Add equality and serialization to poly_triple ([#172](https://github.com/AztecProtocol/barretenberg/issues/172)) ([142b041](https://github.com/AztecProtocol/barretenberg/commit/142b041b2d3d090785f0e6f319fbf7504c751098)) -* Add installation targets for libbarretenberg, wasm & headers ([#185](https://github.com/AztecProtocol/barretenberg/issues/185)) ([f2fdebe](https://github.com/AztecProtocol/barretenberg/commit/f2fdebe037d4d2d90761f98e28b4b0d3af9a0f63)) -* Add Noir DSL with acir_format and turbo_proofs namespaces ([#198](https://github.com/AztecProtocol/barretenberg/issues/198)) ([54fab22](https://github.com/AztecProtocol/barretenberg/commit/54fab2217f437bb04a5e9fb71b271cf91b90c6e5)) -* Add pkgconfig output for installed target ([#208](https://github.com/AztecProtocol/barretenberg/issues/208)) ([d85a365](https://github.com/AztecProtocol/barretenberg/commit/d85a365180ac2672bbd33bd8b799a1f154716ab3)) -* add support for ROM and RAM ACVM opcodes ([#417](https://github.com/AztecProtocol/barretenberg/issues/417)) ([697fabb](https://github.com/AztecProtocol/barretenberg/commit/697fabb7cbeadb9264db5047e7fd36565dad8790)) -* Allow bootstrap to work with linux + clang on ARM ([#131](https://github.com/AztecProtocol/barretenberg/issues/131)) ([52cb06b](https://github.com/AztecProtocol/barretenberg/commit/52cb06b445c73f2f324af6595af70ce9c130eb09)) -* **api:** external cpp header for circuits ([#489](https://github.com/AztecProtocol/barretenberg/issues/489)) ([fbbb342](https://github.com/AztecProtocol/barretenberg/commit/fbbb34287fdef0e8fedb2e25c5431f17501ad653)) -* **bb.js:** initial API ([#232](https://github.com/AztecProtocol/barretenberg/issues/232)) ([c860b02](https://github.com/AztecProtocol/barretenberg/commit/c860b02d80425de161af50acf33e94d94eb0659c)) -* Benchmark suite update ([d7b1499](https://github.com/AztecProtocol/barretenberg/commit/d7b14993ac8d329664fd36e7b4aa083935b1d407)) -* Benchmark suite update ([#508](https://github.com/AztecProtocol/barretenberg/issues/508)) ([d7b1499](https://github.com/AztecProtocol/barretenberg/commit/d7b14993ac8d329664fd36e7b4aa083935b1d407)) -* CI to test aztec circuits with current commit of bberg ([#418](https://github.com/AztecProtocol/barretenberg/issues/418)) ([20a0873](https://github.com/AztecProtocol/barretenberg/commit/20a0873dcbfe4a862ad53a9c137030689a521a04)) -* **dsl:** add hash index to pedersen constraint ([#436](https://github.com/AztecProtocol/barretenberg/issues/436)) ([e0b8804](https://github.com/AztecProtocol/barretenberg/commit/e0b8804b9418c7aa39e29e800fecb4ed15d73b80)) -* **github:** add pull request template ([65f3e33](https://github.com/AztecProtocol/barretenberg/commit/65f3e3312061e7284c0dd0f0f89fa92ee92f9eac)) -* **honk:** Shared relation arithmetic ([#514](https://github.com/AztecProtocol/barretenberg/issues/514)) ([0838474](https://github.com/AztecProtocol/barretenberg/commit/0838474e67469a6d91d6595d1ee23e1dea53863c)) -* Improve barretenberg headers ([#201](https://github.com/AztecProtocol/barretenberg/issues/201)) ([4e03839](https://github.com/AztecProtocol/barretenberg/commit/4e03839a970a5d07dab7f86cd2b7166a09f5045a)) -* **nullifier_tree:** make empty nullifier tree leaves hash be 0 ([#360](https://github.com/AztecProtocol/barretenberg/issues/360)) ([#382](https://github.com/AztecProtocol/barretenberg/issues/382)) ([b85ab8d](https://github.com/AztecProtocol/barretenberg/commit/b85ab8d587b3e93db2aa0f1c4f012e58e5d97915)) -* **pkg-config:** Add a bindir variable ([#239](https://github.com/AztecProtocol/barretenberg/issues/239)) ([611bf34](https://github.com/AztecProtocol/barretenberg/commit/611bf34bcc6f82969a6fe546bf0a7cbecda6d36d)) -* Remove TOOLCHAIN logic and replace with CMake presets ([#162](https://github.com/AztecProtocol/barretenberg/issues/162)) ([09db0be](https://github.com/AztecProtocol/barretenberg/commit/09db0be3d09ee12b4b73b03abe8fa4565cdb6660)) -* replace `MerkleMembershipConstraint` with`ComputeMerkleRootConstraint` ([#385](https://github.com/AztecProtocol/barretenberg/issues/385)) ([74dbce5](https://github.com/AztecProtocol/barretenberg/commit/74dbce5dfa126ecd6dbda7b758581752f7b6a389)) -* Support nix package manager ([#234](https://github.com/AztecProtocol/barretenberg/issues/234)) ([19a72fe](https://github.com/AztecProtocol/barretenberg/commit/19a72fec0ff8d451fc94a9f5563202867a5f8147)) -* **ts:** allow passing srs via env functions ([#260](https://github.com/AztecProtocol/barretenberg/issues/260)) ([ac78353](https://github.com/AztecProtocol/barretenberg/commit/ac7835304f4524039abf0a0df9ae85d905f55c86)) -* **ultrahonk:** Added a simple filler table to minimize the amount of entries used to make UltraHonk polynomials non-zero ([b20b401](https://github.com/AztecProtocol/barretenberg/commit/b20b4012546c5b67623950d0fedb0974df8bf345)) -* **ultrahonk:** Added a simple filler table to minimize the amount of entries used to make UltraHonk polynomials non-zero ([#531](https://github.com/AztecProtocol/barretenberg/issues/531)) ([b20b401](https://github.com/AztecProtocol/barretenberg/commit/b20b4012546c5b67623950d0fedb0974df8bf345)) -* Utilize globally installed benchmark if available ([#152](https://github.com/AztecProtocol/barretenberg/issues/152)) ([fbc5027](https://github.com/AztecProtocol/barretenberg/commit/fbc502794e9bbdfda797b11ac71eba996d649722)) -* Utilize globally installed gtest if available ([#151](https://github.com/AztecProtocol/barretenberg/issues/151)) ([efa18a6](https://github.com/AztecProtocol/barretenberg/commit/efa18a621917dc6c38f453825cadc76eb793a73c)) -* Utilize globally installed leveldb if available ([#134](https://github.com/AztecProtocol/barretenberg/issues/134)) ([255dfb5](https://github.com/AztecProtocol/barretenberg/commit/255dfb52adca885b0a4e4380769a279922af49ff)) -* Working UltraPlonk for Noir ([#299](https://github.com/AztecProtocol/barretenberg/issues/299)) ([d56dfbd](https://github.com/AztecProtocol/barretenberg/commit/d56dfbdfd74b438b3c8652e1ae8740de99f93ae5)) - - -### Bug Fixes - -* Align native library object library with wasm ([#238](https://github.com/AztecProtocol/barretenberg/issues/238)) ([4fa6c0d](https://github.com/AztecProtocol/barretenberg/commit/4fa6c0d2d8c6309d53757ad54d3433d1d662de5f)) -* Avoid targeting honk test files when testing is disabled ([#125](https://github.com/AztecProtocol/barretenberg/issues/125)) ([e4a70ed](https://github.com/AztecProtocol/barretenberg/commit/e4a70edf2bb39d67095cbe21fff310372369a92d)) -* bbmalloc linker error ([#459](https://github.com/AztecProtocol/barretenberg/issues/459)) ([d4761c1](https://github.com/AztecProtocol/barretenberg/commit/d4761c11f30eeecbcb2485f50516bee71809bab1)) -* **build:** git add -f .yalc ([#265](https://github.com/AztecProtocol/barretenberg/issues/265)) ([7671192](https://github.com/AztecProtocol/barretenberg/commit/7671192c8a60ff0bc0f8ad3e14ac299ff780cc25)) -* Check for wasm-opt during configure & run on post_build ([#175](https://github.com/AztecProtocol/barretenberg/issues/175)) ([1ff6af3](https://github.com/AztecProtocol/barretenberg/commit/1ff6af3cb6b7b4d3bb53bfbdcbf1c3a568e0fa86)) -* **cmake:** Remove leveldb dependency that was accidentally re-added ([#335](https://github.com/AztecProtocol/barretenberg/issues/335)) ([3534e2b](https://github.com/AztecProtocol/barretenberg/commit/3534e2bfcca46dbca30573286f43425dab6bc810)) -* **dsl:** Use info instead of std::cout to log ([#323](https://github.com/AztecProtocol/barretenberg/issues/323)) ([486d738](https://github.com/AztecProtocol/barretenberg/commit/486d73842b4b7d6aa84fa12d7462fe52e892d416)) -* Ensure barretenberg provides headers that Noir needs ([#200](https://github.com/AztecProtocol/barretenberg/issues/200)) ([0171a49](https://github.com/AztecProtocol/barretenberg/commit/0171a499a175f88a0ee3fcfd4de0f43ad0ebff85)) -* Ensure TBB is optional using OPTIONAL_COMPONENTS ([#127](https://github.com/AztecProtocol/barretenberg/issues/127)) ([e3039b2](https://github.com/AztecProtocol/barretenberg/commit/e3039b26ea8aca4b8fdc4b2cbac6716ace261c76)) -* Fixed the memory issue ([#509](https://github.com/AztecProtocol/barretenberg/issues/509)) ([107d438](https://github.com/AztecProtocol/barretenberg/commit/107d438ad96847e40f8e5374749b8cba820b2007)) -* msgpack error ([#456](https://github.com/AztecProtocol/barretenberg/issues/456)) ([943d6d0](https://github.com/AztecProtocol/barretenberg/commit/943d6d07c57bea521c2593e892e839f25f82b289)) -* msgpack variant_impl.hpp ([#462](https://github.com/AztecProtocol/barretenberg/issues/462)) ([b5838a6](https://github.com/AztecProtocol/barretenberg/commit/b5838a6c9fe456e832776da21379e41c0a2bbd5d)) -* **nix:** Disable ASM & ADX when building in Nix ([#327](https://github.com/AztecProtocol/barretenberg/issues/327)) ([3bc724d](https://github.com/AztecProtocol/barretenberg/commit/3bc724d2163d29041bfa29a1e49625bab77289a2)) -* **nix:** Use wasi-sdk 12 to provide barretenberg-wasm in overlay ([#315](https://github.com/AztecProtocol/barretenberg/issues/315)) ([4a06992](https://github.com/AztecProtocol/barretenberg/commit/4a069923f4a869f8c2315e6d3f738db6e66dcdfa)) -* Pass brew omp location via LDFLAGS and CPPFLAGS ([#126](https://github.com/AztecProtocol/barretenberg/issues/126)) ([54141f1](https://github.com/AztecProtocol/barretenberg/commit/54141f12de9eee86220003b1f80d39a41795cedc)) -* Remove leveldb_store from stdlib_merkle_tree ([#149](https://github.com/AztecProtocol/barretenberg/issues/149)) ([3ce5e7e](https://github.com/AztecProtocol/barretenberg/commit/3ce5e7e17ca7bb806373be833a44d55a8e584bda)) -* Revert generator changes that cause memory OOB access ([#338](https://github.com/AztecProtocol/barretenberg/issues/338)) ([500daf1](https://github.com/AztecProtocol/barretenberg/commit/500daf1ceb03771d2c01eaf1a86139a7ac1d814f)) -* **srs:** Detect shasum utility when downloading lagrange ([#143](https://github.com/AztecProtocol/barretenberg/issues/143)) ([515604d](https://github.com/AztecProtocol/barretenberg/commit/515604dff83648e00106f35511aa567921599a78)) -* Store lagrange forms of selector polys w/ Ultra ([#255](https://github.com/AztecProtocol/barretenberg/issues/255)) ([b121963](https://github.com/AztecProtocol/barretenberg/commit/b12196362497c8dfb3a64284d28de2d8ee7d730c)) -* throw -> throw_or_abort in sol gen ([#388](https://github.com/AztecProtocol/barretenberg/issues/388)) ([7cfe3f0](https://github.com/AztecProtocol/barretenberg/commit/7cfe3f055815e333ff8a8f1f30e8377c83d2182a)) -* **wasm:** Remove the CMAKE_STAGING_PREFIX variable from wasm preset ([#240](https://github.com/AztecProtocol/barretenberg/issues/240)) ([f2f8d1f](https://github.com/AztecProtocol/barretenberg/commit/f2f8d1f7a24ca73e30c981fd245c86f7f964abb7)) -* Wrap each use of filesystem library in ifndef __wasm__ ([#181](https://github.com/AztecProtocol/barretenberg/issues/181)) ([0eae962](https://github.com/AztecProtocol/barretenberg/commit/0eae96293b4d2da6b6b23ae80ac132fb49f90915)) diff --git a/circuits/cpp/barretenberg/VERSION b/circuits/cpp/barretenberg/VERSION deleted file mode 100644 index 9502cd8069c..00000000000 --- a/circuits/cpp/barretenberg/VERSION +++ /dev/null @@ -1 +0,0 @@ -v0.6.7 x-release-please-version diff --git a/circuits/cpp/barretenberg/cpp/bin-test/target/acir.gz b/circuits/cpp/barretenberg/cpp/bin-test/target/acir.gz deleted file mode 100644 index d1fe5b039c4..00000000000 Binary files a/circuits/cpp/barretenberg/cpp/bin-test/target/acir.gz and /dev/null differ diff --git a/circuits/cpp/barretenberg/cpp/bin-test/target/witness.gz b/circuits/cpp/barretenberg/cpp/bin-test/target/witness.gz deleted file mode 100644 index b250bdfe7bc..00000000000 Binary files a/circuits/cpp/barretenberg/cpp/bin-test/target/witness.gz and /dev/null differ diff --git a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang b/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang deleted file mode 100644 index cb9474b73fc..00000000000 --- a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang +++ /dev/null @@ -1,15 +0,0 @@ -FROM ubuntu:jammy AS builder -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential wget git libssl-dev cmake ninja-build curl -RUN curl https://wasmtime.dev/install.sh -sSf | bash /dev/stdin --version v3.0.1 -WORKDIR /usr/src/barretenberg/cpp -COPY ./scripts/install-wasi-sdk.sh ./scripts/install-wasi-sdk.sh -RUN ./scripts/install-wasi-sdk.sh -COPY . . -# Build both honk_tests barretenberg.wasm -# This ensures that we aren't using features that would be incompatible with WASM for Honk -RUN cmake --preset wasm && cmake --build --preset wasm --target honk_tests --target barretenberg.wasm -RUN cmake --preset wasm-threads && cmake --build --preset wasm-threads --target barretenberg.wasm - -FROM alpine:3.18 -COPY --from=builder /usr/src/barretenberg/cpp/build-wasm/bin/barretenberg.wasm /usr/src/barretenberg/cpp/build-wasm/bin/barretenberg.wasm -COPY --from=builder /usr/src/barretenberg/cpp/build-wasm-threads/bin/barretenberg.wasm /usr/src/barretenberg/cpp/build-wasm-threads/bin/barretenberg.wasm diff --git a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang deleted file mode 100644 index e829b776cd3..00000000000 --- a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ /dev/null @@ -1,22 +0,0 @@ -FROM alpine:3.18 AS builder -RUN apk update \ - && apk upgrade \ - && apk add --no-cache \ - build-base \ - clang16 \ - openmp-dev \ - cmake \ - ninja \ - git \ - curl \ - perl - -WORKDIR /usr/src/barretenberg/cpp - -COPY . . -# Build the entire project, as we want to check everything builds under clang -RUN cmake --preset default && cmake --build --preset default - -FROM alpine:3.18 -RUN apk update && apk add openmp -COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db \ No newline at end of file diff --git a/circuits/cpp/barretenberg/cpp/scripts/run_aztec_circuits_tests b/circuits/cpp/barretenberg/cpp/scripts/run_aztec_circuits_tests deleted file mode 100755 index 59cc680393f..00000000000 --- a/circuits/cpp/barretenberg/cpp/scripts/run_aztec_circuits_tests +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -set -eu - -# To be called from CI for testing with docker and AWS. -# Can't be called locally unless AWS credentials are set up. -# -# Call from config.yml -# Example: -# command: cond_spot_run_script circuits-wasm-linux-clang-assert 1 wasm scripts/a3-tests -*.skip*:*.circuit* - -AZTEC_COMMIT=$1 # Aztec commit/branch to checkout (MANDATORY) -NUM_TRANSCRIPTS=$2 # integer (MANDATORY) -ARCH=$3 # x86_64 or wasm (MUST BE LOWERCASE) (MANDATORY) used in aztec's circuits `run_tests_local` -# TESTS=$4 (MANDATORY) used in aztec's circuits `run_tests_local` (test files rel to circuits/cpp) -# GTEST_FILTER=$5 (optional) used in aztec's circuits `run_tests_local` -# *** See `run_tests_local` for the args forwarded to that script -shift # arg1 (aztec commit) and arg2 (num transcripts) are not forwarded -shift # to aztec's circuits `run_tests_local` - -$(aws ecr get-login --region us-east-2 --no-include-email) 2> /dev/null - -export PATH="$PATH:$(git rev-parse --show-toplevel)/build-system/scripts" -REPOSITORY="barretenberg-circuits-${ARCH}-linux-clang-builder-runner" -IMAGE_URI=$(calculate_image_uri $REPOSITORY) -retry docker pull $IMAGE_URI - -if [ "$ARCH" != "wasm" ]; then - # x86_64 / anything other than wasm - PRESET=default - CONFIGURE_OPTS="-DCMAKE_BUILD_TYPE=RelWithAssert -DCI=ON" - BUILD_DIR=build -else - PRESET=wasm - BUILD_DIR=build-wasm -fi - -echo "*** Running Aztec circuits tests on commit: $AZTEC_COMMIT" -# run tests in docker -RUN_ARGS="$@" # helper var necessary for some reason to pass all args to docker run -docker run --rm -t $IMAGE_URI /bin/sh -c "\ - set -xe; \ - cd /usr/src/; \ - git clone https://github.com/AztecProtocol/aztec3-packages.git; \ - cd /usr/src/aztec3-packages/circuits/cpp; \ - git checkout $AZTEC_COMMIT; \ - rm -rf /usr/src/aztec3-packages/circuits/cpp/barretenberg; - mv /usr/src/barretenberg .; \ - cmake --preset $PRESET $CONFIGURE_OPTS; \ - cmake --build --preset $PRESET; \ - cd /usr/src/aztec3-packages/circuits/cpp/barretenberg/cpp/srs_db; \ - ./download_ignition.sh $NUM_TRANSCRIPTS; \ - cd /usr/src/aztec3-packages/circuits/cpp; \ - export PATH=\$PATH:~/.wasmtime/bin/; \ - ./scripts/run_tests_local $RUN_ARGS;" diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.test.cpp b/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.test.cpp deleted file mode 100644 index 3bda4b65bef..00000000000 --- a/circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.test.cpp +++ /dev/null @@ -1,134 +0,0 @@ -#include "acir_format.hpp" -#include "barretenberg/crypto/ecdsa/ecdsa.hpp" -#include "barretenberg/ecc/curves/grumpkin/grumpkin.hpp" -#include "barretenberg/plonk/proof_system/types/proof.hpp" -#include "barretenberg/plonk/proof_system/verification_key/verification_key.hpp" -#include "fixed_base_scalar_mul.hpp" - -#include -#include -#include - -namespace acir_format::tests { -using group_ct = proof_system::plonk::stdlib::group; - -size_t generate_scalar_mul_constraints(FixedBaseScalarMul& scalar_mul_constraint, - WitnessVector& witness_values, - uint256_t low_value, - uint256_t high_value, - grumpkin::g1::affine_element expected) -{ - uint32_t offset = 1; - - uint32_t low_index = offset; - witness_values.emplace_back(low_value); - offset += 1; - - uint32_t high_index = offset; - witness_values.emplace_back(high_value); - offset += 1; - - uint32_t pub_key_x_index = offset; - witness_values.emplace_back(expected.x); - offset += 1; - - uint32_t pub_key_y_index = offset; - witness_values.emplace_back(expected.y); - offset += 1; - - scalar_mul_constraint = FixedBaseScalarMul{ - .low = low_index, - .high = high_index, - .pub_key_x = pub_key_x_index, - .pub_key_y = pub_key_y_index, - }; - - return offset; -} - -size_t generate_fixed_base_scalar_mul_fixtures(FixedBaseScalarMul& scalar_mul_constraint, - WitnessVector& witness_values, - grumpkin::fr low, - grumpkin::fr high) -{ - - auto two_pow_128 = grumpkin::fr(2).pow(128); - grumpkin::g1::element expected_projective = (grumpkin::g1::one * low) + grumpkin::g1::one * (high * two_pow_128); - grumpkin::g1::affine_element expected = expected_projective.normalize(); - return generate_scalar_mul_constraints(scalar_mul_constraint, witness_values, low, high, expected); -} - -TEST(FixedBaseScalarMul, TestSimpleScalarMul) -{ - FixedBaseScalarMul scalar_mul_constraint; - WitnessVector witness_values; - auto low = grumpkin::fr(1); - auto high = grumpkin::fr(2); - size_t num_variables = generate_fixed_base_scalar_mul_fixtures(scalar_mul_constraint, witness_values, low, high); - acir_format constraint_system{ - .varnum = static_cast(num_variables), - .public_inputs = {}, - .logic_constraints = {}, - .range_constraints = {}, - .sha256_constraints = {}, - .schnorr_constraints = {}, - .ecdsa_k1_constraints = {}, - .ecdsa_r1_constraints = {}, - .blake2s_constraints = {}, - .keccak_constraints = {}, - .keccak_var_constraints = {}, - .pedersen_constraints = {}, - .hash_to_field_constraints = {}, - .fixed_base_scalar_mul_constraints = { scalar_mul_constraint }, - .recursion_constraints = {}, - .constraints = {}, - .block_constraints = {}, - }; - - auto builder = create_circuit_with_witness(constraint_system, witness_values); - - auto composer = Composer(); - auto prover = composer.create_prover(builder); - - auto proof = prover.construct_proof(); - auto verifier = composer.create_verifier(builder); - EXPECT_EQ(verifier.verify_proof(proof), true); -} -TEST(FixedBaseScalarMul, TestLimbLargerThan2Pow128) -{ - FixedBaseScalarMul scalar_mul_constraint; - WitnessVector witness_values; - grumpkin::fr low = grumpkin::fr(2).pow(129); - grumpkin::fr high = 1; - size_t num_variables = generate_fixed_base_scalar_mul_fixtures(scalar_mul_constraint, witness_values, low, high); - acir_format constraint_system{ - .varnum = static_cast(num_variables), - .public_inputs = {}, - .logic_constraints = {}, - .range_constraints = {}, - .sha256_constraints = {}, - .schnorr_constraints = {}, - .ecdsa_k1_constraints = {}, - .ecdsa_r1_constraints = {}, - .blake2s_constraints = {}, - .keccak_constraints = {}, - .keccak_var_constraints = {}, - .pedersen_constraints = {}, - .hash_to_field_constraints = {}, - .fixed_base_scalar_mul_constraints = { scalar_mul_constraint }, - .recursion_constraints = {}, - .constraints = {}, - .block_constraints = {}, - }; - - auto builder = create_circuit_with_witness(constraint_system, witness_values); - - auto composer = Composer(); - auto prover = composer.create_prover(builder); - - auto proof = prover.construct_proof(); - auto verifier = composer.create_verifier(builder); - EXPECT_EQ(verifier.verify_proof(proof), false); -} - -} // namespace acir_format::tests diff --git a/circuits/cpp/barretenberg/ts/CHANGELOG.md b/circuits/cpp/barretenberg/ts/CHANGELOG.md deleted file mode 100644 index 1dcbdc136f6..00000000000 --- a/circuits/cpp/barretenberg/ts/CHANGELOG.md +++ /dev/null @@ -1,201 +0,0 @@ -# Changelog - -## [0.6.7](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.6...barretenberg.js-v0.6.7) (2023-09-11) - - -### Miscellaneous - -* **barretenberg.js:** Synchronize aztec-packages versions - -## [0.6.6](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.5...barretenberg.js-v0.6.6) (2023-09-11) - - -### Miscellaneous - -* **barretenberg.js:** Synchronize aztec-packages versions - -## [0.6.5](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.4...barretenberg.js-v0.6.5) (2023-09-08) - - -### Miscellaneous - -* **barretenberg.js:** Synchronize aztec-packages versions - -## [0.6.4](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.3...barretenberg.js-v0.6.4) (2023-09-08) - - -### Miscellaneous - -* **barretenberg.js:** Synchronize aztec-packages versions - -## [0.6.3](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.2...barretenberg.js-v0.6.3) (2023-09-08) - - -### Miscellaneous - -* **barretenberg.js:** Synchronize aztec-packages versions - -## [0.6.2](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.6.1...barretenberg.js-v0.6.2) (2023-09-08) - - -### Miscellaneous - -* **barretenberg.js:** Synchronize aztec-packages versions - -## [0.6.1](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.5.2...barretenberg.js-v0.6.1) (2023-09-08) - - -### Miscellaneous - -* **master:** Release 0.5.2 ([#2141](https://github.com/AztecProtocol/aztec-packages/issues/2141)) ([451aad6](https://github.com/AztecProtocol/aztec-packages/commit/451aad6ea92ebced9839ca14baae10cee327be35)) -* Release 0.5.2 ([f76b53c](https://github.com/AztecProtocol/aztec-packages/commit/f76b53c985116ac131a9b11b2a255feb7d0f8f13)) -* Release 0.6.1 ([1bd1a79](https://github.com/AztecProtocol/aztec-packages/commit/1bd1a79b0cefcd90306133aab141d992e8ea5fc3)) - -## [0.5.2](https://github.com/AztecProtocol/aztec-packages/compare/barretenberg.js-v0.5.2...barretenberg.js-v0.5.2) (2023-09-08) - - -### Miscellaneous - -* Release 0.5.2 ([f76b53c](https://github.com/AztecProtocol/aztec-packages/commit/f76b53c985116ac131a9b11b2a255feb7d0f8f13)) - -## [0.5.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.5.0...barretenberg.js-v0.5.1) (2023-09-05) - - -### Features - -* Add `info` command to bb ([#2010](https://github.com/AztecProtocol/barretenberg/issues/2010)) ([2882d97](https://github.com/AztecProtocol/barretenberg/commit/2882d97f5165239badb328be80568e7d683c0465)) -* **ci:** Use content hash in build system, restrict docs build to *.ts or *.cpp ([#1953](https://github.com/AztecProtocol/barretenberg/issues/1953)) ([297a20d](https://github.com/AztecProtocol/barretenberg/commit/297a20d7878a4aabab1cabf2cc5d2d67f9e969c5)) - - -### Bug Fixes - -* **bb.js:** (breaking change) bundles bb.js properly so that it works in the browser and in node ([#1855](https://github.com/AztecProtocol/barretenberg/issues/1855)) ([bc93a5f](https://github.com/AztecProtocol/barretenberg/commit/bc93a5f8510d0dc600343e7e613ab84380d3c225)) -* **ci:** Incorrect content hash in some build targets ([#1973](https://github.com/AztecProtocol/barretenberg/issues/1973)) ([c6c469a](https://github.com/AztecProtocol/barretenberg/commit/c6c469aa5da7c6973f656ddf8af4fb20c3e8e4f6)) -* Master ([#1981](https://github.com/AztecProtocol/barretenberg/issues/1981)) ([59a454e](https://github.com/AztecProtocol/barretenberg/commit/59a454ecf1611424893e1cb093774a23dde39310)) - -## [0.5.0](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.6...barretenberg.js-v0.5.0) (2023-09-01) - - -### ⚠ BREAKING CHANGES - -* update to acvm 0.24.0 ([#1925](https://github.com/AztecProtocol/barretenberg/issues/1925)) - -### Miscellaneous Chores - -* Update to acvm 0.24.0 ([#1925](https://github.com/AztecProtocol/barretenberg/issues/1925)) ([5d8db8e](https://github.com/AztecProtocol/barretenberg/commit/5d8db8eb993334b43e24a51efba9c59e123320ab)) - -## [0.4.6](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.5...barretenberg.js-v0.4.6) (2023-08-29) - - -### Miscellaneous Chores - -* **barretenberg.js:** Synchronize barretenberg versions - -## [0.4.5](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.4...barretenberg.js-v0.4.5) (2023-08-28) - - -### Miscellaneous Chores - -* **barretenberg.js:** Synchronize barretenberg versions - -## [0.4.4](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.3...barretenberg.js-v0.4.4) (2023-08-28) - - -### Miscellaneous Chores - -* **barretenberg.js:** Synchronize barretenberg versions - -## [0.4.3](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.2...barretenberg.js-v0.4.3) (2023-08-23) - - -### Bug Fixes - -* Download SRS using one canonical URL across the codebase ([#1748](https://github.com/AztecProtocol/barretenberg/issues/1748)) ([5c91de7](https://github.com/AztecProtocol/barretenberg/commit/5c91de7296e054f6d5ac3dca94ca85e06d496048)) -* Proving fails when circuit has size > ~500K ([#1739](https://github.com/AztecProtocol/barretenberg/issues/1739)) ([6d32383](https://github.com/AztecProtocol/barretenberg/commit/6d323838a525190618d608598357ee4608c46699)) - -## [0.4.2](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.1...barretenberg.js-v0.4.2) (2023-08-21) - - -### Miscellaneous Chores - -* **barretenberg.js:** Synchronize barretenberg versions - -## [0.4.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.4.0...barretenberg.js-v0.4.1) (2023-08-21) - - -### Bug Fixes - -* **bb:** Fix Typo ([#1709](https://github.com/AztecProtocol/barretenberg/issues/1709)) ([286d64e](https://github.com/AztecProtocol/barretenberg/commit/286d64e6036336314114f1d2a25273f4dabe36f4)) - -## [0.4.0](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.6...barretenberg.js-v0.4.0) (2023-08-21) - - -### ⚠ BREAKING CHANGES - -* Barretenberg binaries now take in the encoded circuit instead of a json file ([#1618](https://github.com/AztecProtocol/barretenberg/issues/1618)) - -### Bug Fixes - -* Barretenberg binaries now take in the encoded circuit instead of a json file ([#1618](https://github.com/AztecProtocol/barretenberg/issues/1618)) ([180cdc9](https://github.com/AztecProtocol/barretenberg/commit/180cdc9ac7cf9aa793d9774dc866ceb4e6ec3fbc)) -* Bin reference when installing package ([#678](https://github.com/AztecProtocol/barretenberg/issues/678)) ([c734295](https://github.com/AztecProtocol/barretenberg/commit/c734295a10d2c40ede773519664170880f28b2b7)) -* Sync aztec master ([#680](https://github.com/AztecProtocol/barretenberg/issues/680)) ([3afc243](https://github.com/AztecProtocol/barretenberg/commit/3afc2438053f530e49fbebbdbadd8db8a630bb8c)) - -## [0.3.6](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.5...barretenberg.js-v0.3.6) (2023-08-08) - - -### Miscellaneous Chores - -* **barretenberg.js:** Synchronize barretenberg versions - -## [0.3.5](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.4...barretenberg.js-v0.3.5) (2023-08-07) - - -### Miscellaneous Chores - -* **barretenberg.js:** Synchronize barretenberg versions - -## [0.3.4](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.3...barretenberg.js-v0.3.4) (2023-07-25) - - -### Features - -* Modify bb.js to be compatible with next.js ([#544](https://github.com/AztecProtocol/barretenberg/issues/544)) ([d384089](https://github.com/AztecProtocol/barretenberg/commit/d384089f60d1a6d5baeb0d3459556a310b790366)) - -## [0.3.3](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.2...barretenberg.js-v0.3.3) (2023-07-17) - - -### Features - -* Bb and bb.js directly parse nargo bincode format. ([#610](https://github.com/AztecProtocol/barretenberg/issues/610)) ([d25e37a](https://github.com/AztecProtocol/barretenberg/commit/d25e37ad74b88dc45337b2a529ede3136dd4a699)) - -## [0.3.2](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.1...barretenberg.js-v0.3.2) (2023-07-12) - - -### Miscellaneous Chores - -* **barretenberg.js:** Synchronize barretenberg versions - -## [0.3.1](https://github.com/AztecProtocol/barretenberg/compare/barretenberg.js-v0.3.0...barretenberg.js-v0.3.1) (2023-07-11) - - -### Miscellaneous Chores - -* **barretenberg.js:** Synchronize barretenberg versions - -## 0.3.0 (2023-07-11) - - -### Features - -* **bb.js:** initial API ([#232](https://github.com/AztecProtocol/barretenberg/issues/232)) ([c860b02](https://github.com/AztecProtocol/barretenberg/commit/c860b02d80425de161af50acf33e94d94eb0659c)) -* **dsl:** Add ECDSA secp256r1 verification ([#582](https://github.com/AztecProtocol/barretenberg/issues/582)) ([adc4c7b](https://github.com/AztecProtocol/barretenberg/commit/adc4c7b4eb634eae28dd28e25b94b93a5b49c80e)) -* Initial native version of bb binary. ([#524](https://github.com/AztecProtocol/barretenberg/issues/524)) ([4a1b532](https://github.com/AztecProtocol/barretenberg/commit/4a1b5322dc78921d253e6a374eba0b616ab788df)) -* Optimize memory consumption of pedersen generators ([#413](https://github.com/AztecProtocol/barretenberg/issues/413)) ([d60b16a](https://github.com/AztecProtocol/barretenberg/commit/d60b16a14219fd4bd130ce4537c3e94bfa10128f)) -* **ts:** allow passing srs via env functions ([#260](https://github.com/AztecProtocol/barretenberg/issues/260)) ([ac78353](https://github.com/AztecProtocol/barretenberg/commit/ac7835304f4524039abf0a0df9ae85d905f55c86)) - - -### Bug Fixes - -* **build:** git add -f .yalc ([#265](https://github.com/AztecProtocol/barretenberg/issues/265)) ([7671192](https://github.com/AztecProtocol/barretenberg/commit/7671192c8a60ff0bc0f8ad3e14ac299ff780cc25)) -* bump timeout on common test. ([c9bc87d](https://github.com/AztecProtocol/barretenberg/commit/c9bc87d29fa1325162cb1e7bf2db7cc85747fd9e)) -* Trigger release-please ([#594](https://github.com/AztecProtocol/barretenberg/issues/594)) ([5042861](https://github.com/AztecProtocol/barretenberg/commit/5042861405df6b5659c0c32418720d8bdea81081)) diff --git a/circuits/cpp/barretenberg/ts/bin-test/target/acir.gz b/circuits/cpp/barretenberg/ts/bin-test/target/acir.gz deleted file mode 100644 index d1fe5b039c4..00000000000 Binary files a/circuits/cpp/barretenberg/ts/bin-test/target/acir.gz and /dev/null differ diff --git a/circuits/cpp/barretenberg/ts/bin-test/target/witness.gz b/circuits/cpp/barretenberg/ts/bin-test/target/witness.gz deleted file mode 100644 index b250bdfe7bc..00000000000 Binary files a/circuits/cpp/barretenberg/ts/bin-test/target/witness.gz and /dev/null differ diff --git a/circuits/cpp/bootstrap.sh b/circuits/cpp/bootstrap.sh index 0462e0085f6..f90114e82a4 100755 --- a/circuits/cpp/bootstrap.sh +++ b/circuits/cpp/bootstrap.sh @@ -16,18 +16,8 @@ if [ -n "${CLEAN:-}" ]; then # Clean. rm -rf ./build rm -rf ./build-wasm - - # Clean barretenberg. - rm -rf ./barretenberg/cpp/build - rm -rf ./barretenberg/cpp/build-wasm - rm -rf ./barretenberg/cpp/src/wasi-sdk-* fi -# Install formatting git hook. -HOOKS_DIR=$(git rev-parse --git-path hooks) -echo "cd \$(git rev-parse --show-toplevel)/circuits/cpp && ./format.sh staged" > $HOOKS_DIR/pre-commit -chmod +x $HOOKS_DIR/pre-commit - # Determine system. if [[ "$OSTYPE" == "darwin"* ]]; then OS=macos @@ -38,9 +28,6 @@ else exit 1 fi -# Download ignition transcripts. -(cd barretenberg/cpp/srs_db && ./download_ignition.sh 3) - # Pick native toolchain file. ARCH=$(uname -m) if [ "$OS" == "macos" ]; then @@ -74,9 +61,6 @@ echo "#################################" cmake --preset $PRESET -DCMAKE_BUILD_TYPE=RelWithAssert cmake --build --preset $PRESET ${@/#/--target } -# Install the webassembly toolchain. -(cd ./barretenberg/cpp && ./scripts/install-wasi-sdk.sh) - # Build WASM. cmake --preset wasm cmake --build --preset wasm diff --git a/circuits/cpp/cmake/barretenberg.cmake b/circuits/cpp/cmake/barretenberg.cmake deleted file mode 100644 index 41e68f00721..00000000000 --- a/circuits/cpp/cmake/barretenberg.cmake +++ /dev/null @@ -1,72 +0,0 @@ -# Here we Set up barretenberg as an ExternalProject -# - Point to its source and build directories -# - Construct its `configure` and `build` command lines -# - include its `src/` in `search path for includes -# - Depend on specific libraries from barretenberg -# -# If barretenberg's cmake files change, its configure and build are triggered -# If barretenberg's source files change, build is triggered - -include(ExternalProject) - -# Reference barretenberg artifacts (like library archives) via this dir: -if (WASM) - set(BBERG_BUILD_DIR ${BBERG_DIR}/build-wasm) - set(BBERG_TARGETS --target barretenberg --target env --target wasi --target barretenberg.wasm) -else() - set(BBERG_BUILD_DIR ${BBERG_DIR}/build) - set(BBERG_TARGETS --target barretenberg --target env --target wasi) -endif() - -if(NOT CMAKE_BBERG_PRESET) - set(CMAKE_BBERG_PRESET default) -endif() - -# Naming: Project: Barretenberg, Libraries: barretenberg, env -# Need BUILD_ALWAYS to ensure that barretenberg is automatically reconfigured when its CMake files change -# "Enabling this option forces the build step to always be run. This can be the easiest way to robustly -# ensure that the external project's own build dependencies are evaluated rather than relying on the -# default success timestamp-based method." - https://cmake.org/cmake/help/latest/module/ExternalProject.html - -ExternalProject_Add(Barretenberg - SOURCE_DIR ${BBERG_DIR} - BUILD_IN_SOURCE TRUE - BUILD_ALWAYS TRUE - UPDATE_COMMAND "" - INSTALL_COMMAND "" - CONFIGURE_COMMAND - ${CMAKE_COMMAND} - --preset ${CMAKE_BBERG_PRESET} - -DCMAKE_CXX_FLAGS=${CMAKE_BBERG_CXX_FLAGS} - -DMULTITHREADING=${MULTITHREADING} - -DENABLE_ASAN=${ENABLE_ASAN} - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - BUILD_COMMAND - ${CMAKE_COMMAND} - --build - --preset ${CMAKE_BBERG_PRESET} - ${BBERG_TARGETS} - # byproducts needed by ninja generator (not needed by make) - BUILD_BYPRODUCTS - ${BBERG_BUILD_DIR}/lib/libbarretenberg.a - ${BBERG_BUILD_DIR}/lib/libenv.a -) - -include_directories(${BBERG_DIR}/src) - -# Add the imported barretenberg and env libraries, point to their library archives, -# and add a dependency of these libraries on the imported project -add_library(barretenberg STATIC IMPORTED) -set_target_properties(barretenberg PROPERTIES IMPORTED_LOCATION ${BBERG_BUILD_DIR}/lib/libbarretenberg.a) -add_dependencies(barretenberg Barretenberg) - -# env is needed for logstr in native executables and wasm tests -# It is otherwise omitted from wasm to prevent use of C++ logstr instead of imported/Typescript -add_library(env STATIC IMPORTED) -set_target_properties(env PROPERTIES IMPORTED_LOCATION ${BBERG_BUILD_DIR}/lib/libenv.a) -add_dependencies(env Barretenberg) - -# wasi is needed to initialize global statics and ensure we're following the reactor wasi pattern. -add_library(wasi STATIC IMPORTED) -set_target_properties(wasi PROPERTIES IMPORTED_LOCATION ${BBERG_BUILD_DIR}/lib/libwasi.a) -add_dependencies(wasi Barretenberg) diff --git a/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang b/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang index 47ecf761c73..1dc91d8ba1a 100644 --- a/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang +++ b/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang @@ -1,16 +1,14 @@ -FROM ubuntu:jammy AS builder -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential wget git libssl-dev cmake ninja-build curl binaryen +FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-wasm-linux-clang as bb -WORKDIR /usr/src/circuits/cpp/barretenberg/cpp -COPY ./barretenberg/cpp/scripts/install-wasi-sdk.sh ./scripts/install-wasi-sdk.sh -RUN ./scripts/install-wasi-sdk.sh +FROM ubuntu:lunar AS builder +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential wget git libssl-dev cmake ninja-build curl binaryen +COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp WORKDIR /usr/src/circuits/cpp COPY . . - RUN cmake --preset wasm && cmake --build --preset wasm --target aztec3-circuits.wasm -FROM alpine:3.17 +FROM scratch +COPY --from=builder /usr/src/barretenberg/cpp/build-wasm/bin/barretenberg.wasm /usr/src/barretenberg/cpp/build-wasm/bin/primitives.wasm +COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db COPY --from=builder /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm -COPY --from=builder /usr/src/circuits/cpp/barretenberg/cpp/build-wasm/bin/barretenberg.wasm /usr/src/circuits/cpp/barretenberg/cpp/build-wasm/bin/primitives.wasm -COPY --from=builder /usr/src/circuits/cpp/barretenberg/cpp/srs_db /usr/src/circuits/cpp/barretenberg/cpp/srs_db COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures diff --git a/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang-assert b/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang-assert index 615244dc7ba..8bb6eb718e8 100644 --- a/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang-assert +++ b/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang-assert @@ -1,18 +1,16 @@ -FROM ubuntu:jammy AS builder -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential git libssl-dev cmake ninja-build curl binaryen +FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-wasm-linux-clang as bb -WORKDIR /usr/src/circuits/cpp/barretenberg/cpp -COPY ./barretenberg/cpp/scripts/install-wasi-sdk.sh ./scripts/install-wasi-sdk.sh -RUN ./scripts/install-wasi-sdk.sh +FROM ubuntu:lunar AS builder +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential git libssl-dev cmake ninja-build curl binaryen +COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp WORKDIR /usr/src/circuits/cpp COPY . . - RUN cmake --preset wasm && cmake --build --preset wasm -FROM ubuntu:jammy +FROM ubuntu:lunar RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y xz-utils curl RUN curl https://wasmtime.dev/install.sh -sSf | bash /dev/stdin --version v3.0.1 -COPY --from=builder /usr/src/circuits/cpp/barretenberg/cpp/srs_db /usr/src/circuits/cpp/barretenberg/cpp/srs_db +COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures COPY --from=builder /usr/src/circuits/cpp/scripts /usr/src/circuits/cpp/scripts COPY --from=builder /usr/src/circuits/cpp/build-wasm/bin/*_tests /usr/src/circuits/cpp/build-wasm/bin/ diff --git a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index c2ccf93631b..c0eca292e40 100644 --- a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -1,23 +1,22 @@ +FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-x86_64-linux-clang as bb + FROM alpine:3.17 AS builder RUN apk update \ && apk upgrade \ && apk add --no-cache \ build-base \ clang15 \ - openmp-dev \ cmake \ ninja \ git \ curl \ perl - +COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp WORKDIR /usr/src/circuits/cpp - COPY . . # Build the entire project, as we want to check everything builds under clang RUN cmake --preset default && cmake --build --preset default FROM alpine:3.17 -RUN apk update && apk add openmp -COPY --from=builder /usr/src/circuits/cpp/barretenberg/cpp/srs_db /usr/src/circuits/cpp/barretenberg/cpp/srs_db +COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures \ No newline at end of file diff --git a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert index 98da87ea4d6..9095d9d056a 100644 --- a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert +++ b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert @@ -1,24 +1,25 @@ +FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-x86_64-linux-clang as bb + FROM alpine:3.17 AS builder RUN apk update \ && apk upgrade \ && apk add --no-cache \ build-base \ clang15 \ - openmp-dev \ cmake \ ninja \ git \ curl \ perl - +COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp WORKDIR /usr/src/circuits/cpp COPY . . # Build everything to ensure everything builds. All tests will be run from the result of this build. RUN cmake --preset default -DCMAKE_BUILD_TYPE=RelWithAssert -DCI=ON && cmake --build --preset default FROM alpine:3.17 -RUN apk update && apk add curl openmp bash -COPY --from=builder /usr/src/circuits/cpp/barretenberg/cpp/srs_db /usr/src/circuits/cpp/barretenberg/cpp/srs_db +RUN apk update && apk add curl bash libstdc++ +COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures COPY --from=builder /usr/src/circuits/cpp/scripts /usr/src/circuits/cpp/scripts COPY --from=builder /usr/src/circuits/cpp/build/bin/*_tests /usr/src/circuits/cpp/build/bin/ \ No newline at end of file diff --git a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-tidy b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-tidy index 6064bc941c4..c852c9f8a34 100644 --- a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-tidy +++ b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-tidy @@ -1,3 +1,5 @@ +FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-x86_64-linux-clang as bb + FROM alpine:3.17 AS builder RUN apk update \ && apk upgrade \ @@ -13,11 +15,9 @@ RUN apk update \ perl \ bash \ python3 - +COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp WORKDIR /usr/src/circuits/cpp - COPY . . - # Configure cmake and check if code is tidy RUN cmake --preset default RUN ./scripts/tidy.sh fix \ No newline at end of file diff --git a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc deleted file mode 100644 index d2c506fe4d7..00000000000 --- a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc +++ /dev/null @@ -1,18 +0,0 @@ -FROM alpine:3.17 AS builder -RUN apk update \ - && apk upgrade \ - && apk add --no-cache \ - build-base \ - cmake \ - ninja \ - git \ - curl -WORKDIR /usr/src/circuits/cpp -COPY . . -# Build the entire project, as we want to check everything builds under gcc. -RUN cmake --preset gcc -DCI=ON && cmake --build --preset gcc - -FROM alpine:3.17 -RUN apk update && apk add libstdc++ libgomp -COPY --from=builder /usr/src/circuits/cpp/barretenberg/cpp/srs_db /usr/src/circuits/cpp/barretenberg/cpp/srs_db -COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures diff --git a/circuits/cpp/format.sh b/circuits/cpp/format.sh index 4ed7b6472ad..e12e84ab27a 100755 --- a/circuits/cpp/format.sh +++ b/circuits/cpp/format.sh @@ -2,7 +2,7 @@ set -eu if [ "${1:-}" == "staged" ]; then - echo Formatting staged files... + echo Formatting circuits staged files... for FILE in $(git diff-index --diff-filter=d --relative --cached --name-only HEAD | grep -e '\.\(cpp\|hpp\|tcc\)$'); do clang-format -i $FILE sed -i.bak 's/\r$//' $FILE && rm ${FILE}.bak diff --git a/circuits/cpp/scripts/build_run_tests_docker_local b/circuits/cpp/scripts/build_run_tests_docker_local index a075cbba172..2ca15edddfb 100755 --- a/circuits/cpp/scripts/build_run_tests_docker_local +++ b/circuits/cpp/scripts/build_run_tests_docker_local @@ -32,8 +32,8 @@ time docker build -f $DOCKERFILE -t $IMAGE_URI . RUN_ARGS="$@" # helper var necessary for some reason to pass all args to docker run time docker run --rm -t $IMAGE_URI /bin/sh -c "\ set -xe; \ - cd /usr/src/circuits/cpp/barretenberg/cpp/srs_db; \ - ln -sf /usr/src/circuits/cpp/barretenberg/cpp/srs_db /usr/src/circuits/cpp/srs_db; \ + cd /usr/src/barretenberg/cpp/srs_db; \ + ln -sf /usr/src/barretenberg/cpp/srs_db /usr/src/circuits/cpp/srs_db; \ ./download_ignition.sh $NUM_TRANSCRIPTS; \ cd /usr/src/circuits/cpp; \ export PATH=\$PATH:~/.wasmtime/bin/; \ diff --git a/circuits/cpp/scripts/run_tests b/circuits/cpp/scripts/run_tests index a7ff014edcb..003dac3ed13 100755 --- a/circuits/cpp/scripts/run_tests +++ b/circuits/cpp/scripts/run_tests @@ -33,9 +33,10 @@ $(git rev-parse --show-toplevel)/build-system/scripts/retry docker pull $IMAGE_U RUN_ARGS="$@" # helper var necessary for some reason to pass all args to docker run time docker run --rm -t $IMAGE_URI /bin/sh -c "\ set -xe; \ + mv /usr/src/barretenberg /usr/src/circuits/cpp/; \ cd /usr/src/circuits/cpp/barretenberg/cpp/srs_db; \ - ln -sf /usr/src/circuits/cpp/barretenberg/cpp/srs_db /usr/src/circuits/cpp/srs_db; \ ./download_ignition.sh $NUM_TRANSCRIPTS; \ cd /usr/src/circuits/cpp; \ + ln -sf /usr/src/circuits/cpp/barretenberg/cpp/srs_db /usr/src/circuits/cpp/srs_db; \ export PATH=\$PATH:~/.wasmtime/bin/; \ ./scripts/run_tests_local $RUN_ARGS;" diff --git a/circuits/cpp/src/CMakeLists.txt b/circuits/cpp/src/CMakeLists.txt index 52aa6bbbb22..fa1462dcf39 100644 --- a/circuits/cpp/src/CMakeLists.txt +++ b/circuits/cpp/src/CMakeLists.txt @@ -14,7 +14,8 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") add_compile_options(-fconstexpr-ops-limit=100000000) endif() -include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../barretenberg/cpp/src/msgpack-c/include) +include_directories(${CMAKE_SOURCE_DIR}/barretenberg/cpp/src) +include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/barretenberg/cpp/src/msgpack-c/include) # I feel this should be limited to ecc, however it's currently used in headers that go across libraries, # and there currently isn't an easy way to inherit the DDISABLE_SHENANIGANS parameter. diff --git a/circuits/cpp/src/aztec3/CMakeLists.txt b/circuits/cpp/src/aztec3/CMakeLists.txt index ff5e0a94b0a..72dcc455356 100644 --- a/circuits/cpp/src/aztec3/CMakeLists.txt +++ b/circuits/cpp/src/aztec3/CMakeLists.txt @@ -1,9 +1,16 @@ +if (WASM) + link_directories(${CMAKE_SOURCE_DIR}/barretenberg/cpp/build-wasm/lib) +else() + link_directories(${CMAKE_SOURCE_DIR}/barretenberg/cpp/build/lib) +endif() + add_subdirectory(circuits) add_subdirectory(oracle) add_subdirectory(dbs) add_subdirectory(utils) if (WASM) + # We can't build a wasm module by just linking to the libraries as that produces, nothing. # There are a couple of other ways to avoiding listing all the object files here and leveraging the dependency # tree, but they come with the problem that they will import the 'env' object files. We explicitly want to avoid @@ -24,5 +31,4 @@ if (WASM) # TODO revisit implications of whole-archive -nostartfiles -Wl,--whole-archive -Wl,--no-entry -Wl,--export-dynamic -Wl,--import-memory -Wl,--allow-undefined -Wl,--stack-first -Wl,-z,stack-size=1048576 ) - endif() diff --git a/docs/.dockerignore b/docs/.dockerignore index 7e43ece4f42..61e5039c958 100644 --- a/docs/.dockerignore +++ b/docs/.dockerignore @@ -13,7 +13,7 @@ Release/ circuits/cpp/build/ circuits/cpp/build-wasm/ circuits/cpp/build-coverage/ -circuits/cpp/barretenberg/ +barretenberg/ # Ignore Node.js build artifacts */node_modules/ diff --git a/docs/.gitrepo b/docs/.gitrepo index e4f665770ef..e3df984cbe5 100644 --- a/docs/.gitrepo +++ b/docs/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/AztecProtocol/docs branch = main - commit = eb85223fb6c6ba1add75a830b0e156773f7ee740 - parent = c11b70d8186ef7ab9a9d4ab1a09589e7c47e91bb + commit = 6905fb906199ab1a69c4c263029f9a0b8708ee4d + parent = 0c3a6271a1d90fa95a0163606e49f432573e66da method = merge cmdver = 0.4.6 diff --git a/docs/docs/dev_docs/contracts/portals/data_structures.md b/docs/docs/dev_docs/contracts/portals/data_structures.md index b8e21dea115..96ead1a06c0 100644 --- a/docs/docs/dev_docs/contracts/portals/data_structures.md +++ b/docs/docs/dev_docs/contracts/portals/data_structures.md @@ -10,14 +10,7 @@ The `DataStructures` are structs that we are using throughout the message infras An entry for the messageboxes multi-sets. -```solidity title="DataStructures.sol" - struct Entry { - uint64 fee; - uint32 count; - uint32 version; - uint32 deadline; - } -``` +#include_code data_structure_entry l1-contracts/src/core/libraries/DataStructures.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -31,12 +24,7 @@ An entry for the messageboxes multi-sets. An entity on L1, specifying the address and the chainId for the entity. Used when specifying sender/recipient with an entity that is on L1. -```solidity title="DataStructures.sol" - struct L1Actor { - address actor; - uint256 chainId; - } -``` +#include_code l1_actor l1-contracts/src/core/libraries/DataStructures.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -48,12 +36,7 @@ An entity on L1, specifying the address and the chainId for the entity. Used whe An entity on L2, specifying the address and the version for the entity. Used when specifying sender/recipient with an entity that is on L2. -```solidity title="DataStructures.sol" - struct L2Actor { - bytes32 actor; - uint256 version; - } -``` +#include_code l2_actor l1-contracts/src/core/libraries/DataStructures.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -64,16 +47,7 @@ An entity on L2, specifying the address and the version for the entity. Used whe A message that is sent from L1 to L2. -```solidity title="DataStructures.sol" - struct L1ToL2Msg { - L1Actor sender; - L2Actor recipient; - bytes32 content; - bytes32 secretHash; - uint32 deadline; - uint64 fee; - } -``` +#include_code l1_to_l2_msg l1-contracts/src/core/libraries/DataStructures.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -88,13 +62,7 @@ A message that is sent from L1 to L2. A message that is sent from L2 to L1. -```solidity title="DataStructures.sol" - struct L2ToL1Msg { - DataStructures.L2Actor sender; - DataStructures.L1Actor recipient; - bytes32 content; - } -``` +#include_code l2_to_l1_msg l1-contracts/src/core/libraries/DataStructures.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -106,14 +74,7 @@ A message that is sent from L2 to L1. A snapshot of the registry values. -```solidity title="DataStructures.sol" - struct RegistrySnapshot { - address rollup; - address inbox; - address outbox; - uint256 blockNumber; - } -``` +#include_code registry_snapshot l1-contracts/src/core/libraries/DataStructures.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | diff --git a/docs/docs/dev_docs/contracts/portals/inbox.md b/docs/docs/dev_docs/contracts/portals/inbox.md index 41551eabe0e..ba47e4b8ddc 100644 --- a/docs/docs/dev_docs/contracts/portals/inbox.md +++ b/docs/docs/dev_docs/contracts/portals/inbox.md @@ -10,14 +10,8 @@ The `Inbox` is a contract deployed on L1 that handles message passing from L1 to Sends a message from L1 to L2. -```solidity -function sendL2Message( - DataStructures.L2Actor memory _recipient, - uint32 _deadline, - bytes32 _content, - bytes32 _secretHash -) external payable returns (bytes32); -``` +#include_code send_l1_to_l2_message l1-contracts/src/core/interfaces/messagebridge/IInbox.sol solidity + | Name | Type | Description | | -------------- | ------- | ----------- | @@ -40,12 +34,7 @@ function sendL2Message( ## `cancelL2Message()` Cancels a message that has not yet been consumed. -```solidity -function cancelL2Message( - DataStructures.L1ToL2Msg memory _message, - address _feeCollector -) external returns (bytes32 entryKey); -``` +#include_code pending_l2_cancel l1-contracts/src/core/interfaces/messagebridge/IInbox.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -63,9 +52,8 @@ function cancelL2Message( Allows the `Rollup` to consume multiple messages in a single transaction. -```solidity -function batchConsume(bytes32[] memory _entryKeys, address _feeCollector) external; -``` +#include_code inbox_batch_consume l1-contracts/src/core/interfaces/messagebridge/IInbox.sol solidity + | Name | Type | Description | | -------------- | ------- | ----------- | | `_entryKeys` | `bytes32[]` | The entry keys (message hashs) to consume | @@ -84,9 +72,7 @@ Will claim the fees that has accrued to the `msg.sender` from consuming messages Let the sequencer withdraw fees from the inbox. -```solidity -function withdrawFees() external; -``` +#include_code inbox_withdraw_fees l1-contracts/src/core/interfaces/messagebridge/IInbox.sol solidity #### Edge cases @@ -95,10 +81,7 @@ function withdrawFees() external; ## `get()` Retrieves the `entry` for a given message. The entry contains fee, number of occurrences, deadline and version information. -```solidity -function get(bytes32 _entryKey) - external view returns (DataStructures.Entry memory); -``` +#include_code inbox_get l1-contracts/src/core/interfaces/messagebridge/IInbox.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -112,11 +95,7 @@ function get(bytes32 _entryKey) ## `contains()` Returns whether the key exists in the inbox. -```solidity -function contains( - bytes32 _entryKey -) external view returns (bool); -``` +#include_code inbox_contains l1-contracts/src/core/interfaces/messagebridge/IInbox.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -126,11 +105,7 @@ function contains( ## `computeEntryKey()` Computes the hash of a message. -```solidity -function computeEntryKey( - DataStructures.L1ToL2Msg memory _message -) external pure returns (bytes32 entryKey); -``` +#include_code inbox_compute_entry_key l1-contracts/src/core/interfaces/messagebridge/IInbox.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | diff --git a/docs/docs/dev_docs/contracts/portals/main.md b/docs/docs/dev_docs/contracts/portals/main.md index 4af8dcdb944..b1ead86a80e 100644 --- a/docs/docs/dev_docs/contracts/portals/main.md +++ b/docs/docs/dev_docs/contracts/portals/main.md @@ -30,29 +30,14 @@ Should we discard the use of the L2Actor struct and use the individual fields in With all that information at hand, we can call the `sendL2Message` function on the Inbox. The function will return a `field` (inside `bytes32`) that is the hash of the message. This hash can be used as an identifier to spot when your message has been included in a rollup block. -```solidity title="IInbox.sol" - function sendL2Message( - DataStructures.L2Actor memory _recipient, - uint32 _deadline, - bytes32 _content, - bytes32 _secretHash - ) external payable returns (bytes32); -``` +#include_code send_l1_to_l2_message l1-contracts/src/core/interfaces/messagebridge/IInbox.sol solidity As time passes, a sequencer will see your tx, the juicy fee provided and include it in a rollup block. Upon inclusion, it is removed from L1, and made available to be consumed on L2. To consume the message, we can use the `consume_l1_to_l2_message` function within the `context` struct. The `msg_key` is the hash of the message produced from the `sendL2Message` call, the `content` is the content of the message, and the `secret` is the pre-image hashed to compute the `secretHash`. -```rust title="context.nr" - fn consume_l1_to_l2_message( - &mut self, - inputs: abi::PrivateContextInputs, - msg_key: Field, - content: Field, - secret: Field - ) -``` +#include_code context_consume_l1_to_l2_message /yarn-project/noir-libs/aztec-noir/src/context.nr rust Computing the `content` might be a little clunky in its current form, as we are still adding a number of bytes utilities. A good example exists within the [Non-native token example](https://github.com/AztecProtocol/aztec-packages/blob/master/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/hash.nr). @@ -62,27 +47,7 @@ The `inputs` that is passed into `consume_l1_to_l2_message` are only temporary, An example usage of this flow is a token bridge, in the Aztec contract a `mint` function consumes a message from L1 and mints tokens to a user. Note that we are using a private function, as we don't want to expose the user that is receiving the tokens publicly. -```rust title="NonNativeTokenContract.nr" -// mints token upon consuming valid messages from portal -fn mint( - ... - amount: Field, - owner: Field, - msg_key: Field, - secret: Field, -) -> distinct pub abi::PrivateCircuitPublicInputs { - ... - let content_hash = get_mint_content_hash(amount, owner, canceller); - - // Consume the message from L1 - context.consume_l1_to_l2_message(inputs, msg_key, content_hash, secret); - - // Mint the tokens to the owner - let balance = storage.balances.at(owner); - send_note(&mut context, balance, amount, owner); - ... -} -``` +#include_code non_native_token_mint yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr rust After the transaction has been mined, the message is consumed, and the tokens have been minted on Aztec and are ready for use by the user. A consumed message cannot be consumed again. @@ -98,9 +63,7 @@ The portal must ensure that the sender is as expected. One way to do this, is to To send a message to L1 from your Aztec contract, you must use the `message_portal` function on the `context`. When messaging to L1, only the `content` is required (as field). -```rust title="context.nr" - fn message_portal(&mut self, content: Field) -``` +#include_code context_message_portal /yarn-project/noir-libs/aztec-noir/src/context.nr rust When sending a message from L2 to L1 we don't need to pass recipient, deadline, secret nor fees. Recipient is populated with the attached portal and the remaining values are not needed as the message is inserted into the outbox at the same time as it was included in a block (for the inbox it could be inserted and then only included in rollup block later). @@ -110,68 +73,17 @@ Access control on the L1 portal contract is essential to prevent consumption of As earlier, we can use a token bridge as an example. In this case, we are burning tokens on L2 and sending a message to the portal to free them on L1. -```rust title="NonNativeTokenContract.nr" -// burns token and sends a message to the portal -fn withdraw( - amount: Field, - sender: Field, - recipient: Field, - callerOnL1: Field, -) -> distinct pub abi::PrivateCircuitPublicInputs { - ... - let sender_balance = storage.balances.at(sender); - spend_notes(&mut context, sender_balance, amount, sender); - - let content = get_withdraw_content_hash(amount, recipient, callerOnL1); - context.message_portal(content); - ... -} -``` +#include_code non_native_token_withdraw yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr rust When the transaction is included in a rollup block the message will be inserted into the `Outbox`, where the recipient portal can consume it from. When consuming, the `msg.sender` must match the `recipient` meaning that only portal can actually consume the message. -```solidity title="IOutbox.sol" -struct L2ToL1Msg { - DataStructures.L2Actor sender; - DataStructures.L1Actor recipient; - bytes32 content; -} +#include_code l2_to_l1_msg l1-contracts/src/core/libraries/DataStructures.sol solidity -function consume(DataStructures.L2ToL1Msg memory _message) - external - returns (bytes32 entryKey); -``` +#include_code outbox_consume l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol solidity As noted earlier, the portal contract should check that the sender is as expected. In the example below, we support only one sender contract (stored in `l2TokenAddress`) so we can just pass it as the sender, that way we will only be able to consume messages from that contract. If multiple senders are supported, you could use a have `mapping(address => bool) allowed` and check that `allowed[msg.sender]` is `true`. -```solidity title="TokenPortal.sol" -function withdraw(uint256 _amount, address _recipient, bool _withCaller) - external - returns (bytes32) - { - // Create the message structure - DataStructures.L2ToL1Msg memory message = DataStructures.L2ToL1Msg({ - sender: DataStructures.L2Actor(l2TokenAddress, version), - recipient: DataStructures.L1Actor(address(this), block.chainid), - content: Hash.sha256ToField( - abi.encodeWithSignature( - "withdraw(uint256,address,address)", - _amount, - _recipient, - _withCaller ? msg.sender : address(0) - ) - ) - }); - - // Consume the message - bytes32 entryKey = registry.getOutbox().consume(message); - - // Transfer the tokens to the user - underlying.transfer(_recipient, _amount); - - return entryKey; - } -``` +#include_code token_portal_withdraw l1-contracts/test/portals/TokenPortal.sol solidity ## How to deploy a contract with a portal @@ -227,42 +139,11 @@ As this requires logic on the portal itself, it is not something that the protoc The portal can call the `cancelL2Message` at the `Inbox` when `block.timestamp > deadline` for the message. -```solidity title="IInbox.sol" -function cancelL2Message( - DataStructures.L1ToL2Msg memory _message, - address _feeCollector -) external returns (bytes32 entryKey); -``` +#include_code pending_l2_cancel l1-contracts/src/core/interfaces/messagebridge/IInbox.sol solidity Building on our token example from earlier, this can be called like: -```solidity title="TokenPortal.sol" -function cancelL1ToAztecMessage( - bytes32 _to, - uint256 _amount, - uint32 _deadline, - bytes32 _secretHash, - uint64 _fee - ) external returns (bytes32) { - IInbox inbox = registry.getInbox(); - DataStructures.L1Actor memory l1Actor = DataStructures.L1Actor(address(this), block.chainid); - DataStructures.L2Actor memory l2Actor = DataStructures.L2Actor(l2TokenAddress, 1); - DataStructures.L1ToL2Msg memory message = DataStructures.L1ToL2Msg({ - sender: l1Actor, - recipient: l2Actor, - content: Hash.sha256ToField( - abi.encodeWithSignature("mint(uint256,bytes32,address)", _amount, _to, msg.sender) - ), - secretHash: _secretHash, - deadline: _deadline, - fee: _fee - }); - bytes32 entryKey = inbox.cancelL2Message(message, address(this)); - // Ensures that `msg.sender == canceller` by using `msg.sender` in the hash computation. - underlying.transfer(msg.sender, _amount); - return entryKey; - } -``` +#include_code token_portal_cancel l1-contracts/test/portals/TokenPortal.sol solidity The example above ensure that the user can cancel their message if it is underpriced. @@ -286,34 +167,7 @@ bytes memory message = abi.encodeWithSignature( This way, the message can be consumed by the portal contract, but only if the caller is the designated caller. By being a bit clever when specifying the designated caller, we can ensure that the calls are done in the correct order. For the Uniswap example, say that we have token portals implemented as we have done throughout this page, and n Uniswap portal implementing the designated caller: -```solidity title="UniswapPortal.sol" - function swap( - address _inputTokenPortal, - uint256 _inAmount, - uint24 _uniswapFeeTier, - address _outputTokenPortal, - uint256 _amountOutMinimum, - bytes32 _aztecRecipient, - bytes32 _secretHash, - uint32 _deadlineForL1ToL2Message, - address _canceller, - bool _withCaller - ) public payable returns (bytes32) { - // Withdraw the input asset from the portal with designated caller - TokenPortal(_inputTokenPortal).withdraw(_inAmount, address(this), true); - - // Consume message to Uniswap portal (self) - registry.getOutbox().consume(...); - - // swap... - uint256 amountOut = ROUTER.exactInputSingle(swapParams); - - // Deposit the output asset to the L2 via its portal - return TokenPortal(_outputTokenPortal).depositToAztec{value: msg.value}( - _aztecRecipient, amountOut, _deadlineForL1ToL2Message, _secretHash, _canceller - ); - } -``` +#include_code solidity_uniswap_swap l1-contracts/test/portals/UniswapPortal.sol solidity We could then have withdraw transactions (on L2) where we are specifying the `UniswapPortal` as the caller. Because the order of the calls are specified in the contract, and that it reverts if any of them fail, we can be sure that it will execute the withdraw first, then the swap and then the deposit. Since only the `UniswapPortal` is able to execute the withdraw, we can be sure that the ordering is ensured. However, note that this means that if it for some reason is impossible to execute the batch (say prices moved greatly), the user will be stuck with the funds on L1 unless the `UniswapPortal` implements proper error handling! diff --git a/docs/docs/dev_docs/contracts/portals/outbox.md b/docs/docs/dev_docs/contracts/portals/outbox.md index bf33f06a38b..bbc1289c35d 100644 --- a/docs/docs/dev_docs/contracts/portals/outbox.md +++ b/docs/docs/dev_docs/contracts/portals/outbox.md @@ -10,9 +10,7 @@ The `Outbox` is a contract deployed on L1 that handles message passing from the Inserts multiple messages from the `Rollup`. -```solidity -function sendL1Messages(bytes32[] memory _entryKey) external; -``` +#include_code outbox_send_l1_msg l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -27,11 +25,8 @@ function sendL1Messages(bytes32[] memory _entryKey) external; Allows a recipient to consume a message from the `Outbox`. -```solidity -function consume( - DataStructures.L2ToL1Msg memory _message -) external returns (bytes32 entryKey); -``` +#include_code outbox_consume l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol solidity + | Name | Type | Description | | -------------- | ------- | ----------- | @@ -48,10 +43,7 @@ function consume( ## `get()` Retrieves the `entry` for a given message. The entry contains fee, occurrences, deadline and version information. -```solidity -function get(bytes32 _entryKey) - external view returns (DataStructures.Entry memory); -``` +#include_code outbox_get l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -64,11 +56,7 @@ function get(bytes32 _entryKey) ## `contains()` Returns whether the key is found in the inbox. -```solidity -function contains( - bytes32 _entryKey -) external view returns (bool); -``` +#include_code outbox_contains l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | @@ -78,11 +66,7 @@ function contains( ## `computeEntryKey()` Computes the hash of a message. -```solidity -function computeEntryKey( - DataStructures.L2ToL1Msg memory _message -) external pure returns (bytes32 entryKey); -``` +#include_code outbox_compute_entry_key l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol solidity | Name | Type | Description | | -------------- | ------- | ----------- | diff --git a/docs/docs/dev_docs/contracts/portals/registry.md b/docs/docs/dev_docs/contracts/portals/registry.md index ddcf34c3959..2c1b561ba7a 100644 --- a/docs/docs/dev_docs/contracts/portals/registry.md +++ b/docs/docs/dev_docs/contracts/portals/registry.md @@ -10,9 +10,7 @@ The registry is a contract deployed on L1, that contains addresses for the `Roll Retrieves the number of versions that have been deployed. -```solidity -function numberOfVersions() external view returns (uint256); -``` +#include_code registry_number_of_versions l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol solidity | Name | Description | | -------------- | ----------- | @@ -21,9 +19,7 @@ function numberOfVersions() external view returns (uint256); ## `getRollup()` Retrieves the current rollup contract. -```solidity -function getRollup() external view returns (IRollup); -``` +#include_code registry_get_rollup l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol solidity | Name | Description | | -------------- | ----------- | @@ -33,9 +29,7 @@ function getRollup() external view returns (IRollup); Retrieves the current inbox contract. -```solidity -function getInbox() external view returns (IInbox); -``` +#include_code registry_get_inbox l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol solidity | Name | Description | | -------------- | ----------- | @@ -45,9 +39,7 @@ function getInbox() external view returns (IInbox); Retrieves the current inbox contract. -```solidity -function getOutbox() external view returns (IOutbox); -``` +#include_code registry_get_outbox l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol solidity | Name | Description | | -------------- | ----------- | @@ -56,9 +48,8 @@ function getOutbox() external view returns (IOutbox); ## `getVersionFor(address _rollup)` Retrieve the version of a specific rollup contract. -```solidity -function getVersionFor(address _rollup) external view returns (uint256); -``` + +#include_code registry_get_version_for l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol solidity | Name | Description | | -------------- | ----------- | @@ -72,20 +63,8 @@ Will revert with `Registry__RollupNotRegistered(_rollup)` if the rollup have not Retrieve the snapshot of a specific version. -```solidity -// Snippet from DataStructures.sol -struct RegistrySnapshot { - address rollup; - address inbox; - address outbox; - uint256 blockNumber; - } - -function getSnapshot(uint256 _version) - external - view - returns (DataStructures.RegistrySnapshot memory); -``` +#include_code registry_snapshot l1-contracts/src/core/libraries/DataStructures.sol solidity +#include_code registry_get_snapshot l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol solidity | Name | Description | | -------------- | ----------- | @@ -100,12 +79,7 @@ function getSnapshot(uint256 _version) Retrieves the snapshot for the current version. -```solidity -function getCurrentSnapshot() - external - view - returns (DataStructures.RegistrySnapshot memory); -``` +#include_code registry_get_current_snapshot l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol solidity | Name | Description | | -------------- | ----------- | diff --git a/l1-contracts/src/core/interfaces/messagebridge/IInbox.sol b/l1-contracts/src/core/interfaces/messagebridge/IInbox.sol index fb5de27ae26..da3fba36088 100644 --- a/l1-contracts/src/core/interfaces/messagebridge/IInbox.sol +++ b/l1-contracts/src/core/interfaces/messagebridge/IInbox.sol @@ -24,6 +24,7 @@ interface IInbox { event L1ToL2MessageCancelled(bytes32 indexed entryKey); + // docs:start:send_l1_to_l2_message /** * @notice Inserts an entry into the Inbox * @dev Will emit `MessageAdded` with data for easy access by the sequencer @@ -40,7 +41,9 @@ interface IInbox { bytes32 _content, bytes32 _secretHash ) external payable returns (bytes32); + // docs:end:send_l1_to_l2_message + // docs:start:pending_l2_cancel /** * @notice Cancel a pending L2 message * @dev Will revert if the deadline have not been crossed - message only cancellable past the deadline @@ -53,7 +56,9 @@ interface IInbox { function cancelL2Message(DataStructures.L1ToL2Msg memory _message, address _feeCollector) external returns (bytes32 entryKey); + // docs:end:pending_l2_cancel + // docs:start:inbox_batch_consume /** * @notice Batch consumes entries from the Inbox * @dev Only callable by the rollup contract @@ -62,29 +67,38 @@ interface IInbox { * @param _feeCollector - The address to receive the "fee" */ function batchConsume(bytes32[] memory _entryKeys, address _feeCollector) external; + // docs:end:inbox_batch_consume + // docs:start:inbox_withdraw_fees /** * @notice Withdraws fees accrued by the sequencer */ function withdrawFees() external; + // docs:end:inbox_withdraw_fees + // docs:start:inbox_get /** * @notice Fetch an entry * @param _entryKey - The key to lookup * @return The entry matching the provided key */ function get(bytes32 _entryKey) external view returns (DataStructures.Entry memory); + // docs:end:inbox_get + // docs:start:inbox_contains /** * @notice Check if entry exists * @param _entryKey - The key to lookup * @return True if entry exists, false otherwise */ function contains(bytes32 _entryKey) external view returns (bool); + // docs:end:inbox_contains + // docs:start:inbox_compute_entry_key /// @notice Given a message, computes an entry key for the Inbox function computeEntryKey(DataStructures.L1ToL2Msg memory _message) external pure returns (bytes32); + // docs:end:inbox_compute_entry_key } diff --git a/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol b/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol index 3c822b2823e..ecbfcfd98de 100644 --- a/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol +++ b/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol @@ -16,20 +16,25 @@ interface IOutbox { event MessageConsumed(bytes32 indexed entryKey, address indexed recipient); + // docs:start:outbox_compute_entry_key /** * @notice Computes an entry key for the Outbox * @param _message - The L2 to L1 message * @return The key of the entry in the set */ function computeEntryKey(DataStructures.L2ToL1Msg memory _message) external returns (bytes32); + // docs:end:outbox_compute_entry_key + // docs:start:outbox_send_l1_msg /** * @notice Inserts an array of entries into the Outbox * @dev Only callable by the rollup contract * @param _entryKeys - Array of entry keys (hash of the message) - computed by the L2 counterpart and sent to L1 via rollup block */ function sendL1Messages(bytes32[] memory _entryKeys) external; + // docs:end:outbox_send_l1_msg + // docs:start:outbox_consume /** * @notice Consumes an entry from the Outbox * @dev Only meaningfully callable by portals, otherwise should never hit an entry @@ -38,18 +43,23 @@ interface IOutbox { * @return entryKey - The key of the entry removed */ function consume(DataStructures.L2ToL1Msg memory _message) external returns (bytes32 entryKey); + // docs:end:outbox_consume + // docs:start:outbox_get /** * @notice Fetch an entry * @param _entryKey - The key to lookup * @return The entry matching the provided key */ function get(bytes32 _entryKey) external view returns (DataStructures.Entry memory); + // docs:end:outbox_get + // docs:start:outbox_contains /** * @notice Check if entry exists * @param _entryKey - The key to lookup * @return True if entry exists, false otherwise */ function contains(bytes32 _entryKey) external view returns (bool); + // docs:end:outbox_contains } diff --git a/l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol b/l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol index 580d92a309f..0d184a521f2 100644 --- a/l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol +++ b/l1-contracts/src/core/interfaces/messagebridge/IRegistry.sol @@ -7,22 +7,38 @@ import {IInbox} from "./IInbox.sol"; import {IOutbox} from "./IOutbox.sol"; interface IRegistry { + // docs:start:registry_upgrade function upgrade(address _rollup, address _inbox, address _outbox) external returns (uint256); + // docs:end:registry_upgrade + // docs:start:registry_get_rollup function getRollup() external view returns (IRollup); + // docs:end:registry_get_rollup + // docs:start:registry_get_version_for function getVersionFor(address _rollup) external view returns (uint256); + // docs:end:registry_get_version_for + // docs:start:registry_get_inbox function getInbox() external view returns (IInbox); + // docs:end:registry_get_inbox + // docs:start:registry_get_outbox function getOutbox() external view returns (IOutbox); + // docs:end:registry_get_outbox + // docs:start:registry_get_snapshot function getSnapshot(uint256 _version) external view returns (DataStructures.RegistrySnapshot memory); + // docs:end:registry_get_snapshot + // docs:start:registry_get_current_snapshot function getCurrentSnapshot() external view returns (DataStructures.RegistrySnapshot memory); + // docs:end:registry_get_current_snapshot + // docs:start:registry_number_of_versions function numberOfVersions() external view returns (uint256); + // docs:end:registry_number_of_versions } diff --git a/l1-contracts/src/core/libraries/DataStructures.sol b/l1-contracts/src/core/libraries/DataStructures.sol index 251a8147643..f588c7c1d4d 100644 --- a/l1-contracts/src/core/libraries/DataStructures.sol +++ b/l1-contracts/src/core/libraries/DataStructures.sol @@ -8,6 +8,7 @@ pragma solidity >=0.8.18; * @notice Library that contains data structures used throughout the Aztec protocol */ library DataStructures { + // docs:start:data_structure_entry /** * @notice Entry struct - Done as struct to easily support extensions if needed * @param fee - The fee provided to sequencer for including in the inbox. 0 if Outbox (as not applicable). @@ -21,7 +22,9 @@ library DataStructures { uint32 version; uint32 deadline; } + // docs:end:data_structure_entry + // docs:start:l1_actor /** * @notice Actor on L1. * @param actor - The address of the actor @@ -31,7 +34,9 @@ library DataStructures { address actor; uint256 chainId; } + // docs:end:l1_actor + // docs:start:l2_actor /** * @notice Actor on L2. * @param actor - The aztec address of the actor @@ -41,7 +46,9 @@ library DataStructures { bytes32 actor; uint256 version; } + // docs:end:l2_actor + // docs:start:l1_to_l2_msg /** * @notice Struct containing a message from L1 to L2 * @param sender - The sender of the message @@ -59,7 +66,9 @@ library DataStructures { uint32 deadline; uint64 fee; } + // docs:end:l1_to_l2_msg + // docs:start:l2_to_l1_msg /** * @notice Struct containing a message from L2 to L1 * @param sender - The sender of the message @@ -71,7 +80,9 @@ library DataStructures { DataStructures.L1Actor recipient; bytes32 content; } + // docs:end:l2_to_l1_msg + // docs:start:registry_snapshot /** * @notice Struct for storing address of cross communication components and the block number when it was updated * @param rollup - The address of the rollup contract @@ -85,4 +96,5 @@ library DataStructures { address outbox; uint256 blockNumber; } + // docs:end:registry_snapshot } diff --git a/l1-contracts/test/portals/TokenPortal.sol b/l1-contracts/test/portals/TokenPortal.sol index 4188e380b07..40bdada2423 100644 --- a/l1-contracts/test/portals/TokenPortal.sol +++ b/l1-contracts/test/portals/TokenPortal.sol @@ -55,6 +55,7 @@ contract TokenPortal { return inbox.sendL2Message{value: msg.value}(actor, _deadline, contentHash, _secretHash); } + // docs:start:token_portal_cancel /** * @notice Cancel the L1 to L2 message * @dev only callable by the `canceller` of the message @@ -92,7 +93,9 @@ contract TokenPortal { underlying.transfer(msg.sender, _amount); return entryKey; } + // docs:end:token_portal_cancel + // docs:start:token_portal_withdraw /** * @notice Withdraw funds from the portal * @dev Second part of withdraw, must be initiated from L2 first as it will consume a message from outbox @@ -126,4 +129,5 @@ contract TokenPortal { return entryKey; } + // docs:end:token_portal_withdraw } diff --git a/l1-contracts/test/portals/UniswapPortal.sol b/l1-contracts/test/portals/UniswapPortal.sol index 048eeeeb739..8d68ff8861a 100644 --- a/l1-contracts/test/portals/UniswapPortal.sol +++ b/l1-contracts/test/portals/UniswapPortal.sol @@ -34,6 +34,7 @@ contract UniswapPortal { bytes32 contentHash; } + // docs:start:solidity_uniswap_swap /** * @notice Exit with funds from L2, perform swap on L1 and deposit output asset to L2 again * @dev `msg.value` indicates fee to submit message to inbox. Currently, anyone can call this method on your behalf. @@ -125,4 +126,5 @@ contract UniswapPortal { _aztecRecipient, amountOut, _deadlineForL1ToL2Message, _secretHash, _canceller ); } + // docs:end:solidity_uniswap_swap } diff --git a/release-please-config.json b/release-please-config.json index fbc063f21a9..fa44df2381a 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -22,12 +22,12 @@ "package-name": "aztec-packages", "extra-files": ["VERSION"] }, - "circuits/cpp/barretenberg/ts": { + "barretenberg/ts": { "release-type": "node", "package-name": "barretenberg.js", "component": "barretenberg.js" }, - "circuits/cpp/barretenberg": { + "barretenberg": { "release-type": "simple", "component": "barretenberg", "package-name": "barretenberg", diff --git a/scripts/migrate_barretenberg_branch.sh b/scripts/migrate_barretenberg_branch.sh index 9f3001c7421..8cf396867c3 100755 --- a/scripts/migrate_barretenberg_branch.sh +++ b/scripts/migrate_barretenberg_branch.sh @@ -36,7 +36,7 @@ fi BRANCH="$1" COMMIT_MESSAGE="$2" -SUBREPO_PATH=circuits/cpp/barretenberg # can be changed to another subrepo if useful +SUBREPO_PATH=barretenberg # can be changed to another subrepo if useful SCRIPT_DIR=$(dirname "$(realpath "$0")") cd "$SCRIPT_DIR"/.. @@ -59,7 +59,7 @@ fi echo "(branch migrate) Automatic git data fix" # Tosses away the .gitrepo changes, as those we only want if pulling from barretenberg master, not PRs (which will go in as aztec commits). -# because git-subrepo uses 'git rm -r', we fix up .gitmodules after as well. This is an edge-case gotcha using +# because git-subrepo uses 'git rm -r', we fix up .gitmodules after as well. This is an edge-case gotcha using # git submodules along with git-subrepo. git checkout HEAD^ -- "$SUBREPO_PATH"/.gitrepo .gitmodules diff --git a/scripts/update.sh b/scripts/update.sh deleted file mode 100755 index ab78b6827dc..00000000000 --- a/scripts/update.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -set -eu - -# Script for running after updating the working copy with remote changes. -# Similar to bootstrap, but more lightweight and oriented towards working on end-to-end. - -echo -e '\033[1mRebuild L1 contracts...\033[0m' -(cd l1-contracts && forge build) - -echo -e '\n\033[1mUpdate npm deps...\033[0m' -(cd yarn-project && yarn install) - -echo -e '\n\033[1mRebuild Noir contracts...\033[0m' -(cd yarn-project/noir-contracts && yarn noir:build:all 2> /dev/null) - -echo -e '\n\033[1mRebuild circuits wasm...\033[0m' -(cd circuits/cpp && cmake --build --preset wasm -j --target aztec3-circuits.wasm) diff --git a/yarn-project/acir-simulator/package.json b/yarn-project/acir-simulator/package.json index 8b0b06821c9..ef6fd4d3bfc 100644 --- a/yarn-project/acir-simulator/package.json +++ b/yarn-project/acir-simulator/package.json @@ -35,7 +35,7 @@ "@aztec/circuits.js": "workspace:^", "@aztec/foundation": "workspace:^", "@aztec/types": "workspace:^", - "acvm_js": "github:noir-lang/acvm-js-wasm#arv/0.25.0", + "@noir-lang/acvm_js": "0.26.1", "levelup": "^5.1.1", "memdown": "^6.1.1", "tslib": "^2.4.0" diff --git a/yarn-project/acir-simulator/src/acvm/acvm.ts b/yarn-project/acir-simulator/src/acvm/acvm.ts index 82c0e53e22b..e806f22618c 100644 --- a/yarn-project/acir-simulator/src/acvm/acvm.ts +++ b/yarn-project/acir-simulator/src/acvm/acvm.ts @@ -12,7 +12,7 @@ import { WasmBlackBoxFunctionSolver, WitnessMap, executeCircuitWithBlackBoxSolver, -} from 'acvm_js'; +} from '@noir-lang/acvm_js'; import { traverseCauseChain } from '../common/errors.js'; diff --git a/yarn-project/acir-simulator/src/acvm/deserialize.ts b/yarn-project/acir-simulator/src/acvm/deserialize.ts index 538b14e4a76..c9d0f540526 100644 --- a/yarn-project/acir-simulator/src/acvm/deserialize.ts +++ b/yarn-project/acir-simulator/src/acvm/deserialize.ts @@ -22,7 +22,7 @@ import { EthAddress } from '@aztec/foundation/eth-address'; import { Fr, Point } from '@aztec/foundation/fields'; import { Tuple } from '@aztec/foundation/serialize'; -import { getReturnWitness } from 'acvm_js'; +import { getReturnWitness } from '@noir-lang/acvm_js'; import { ACVMField, ACVMWitness, fromACVMField } from './acvm.js'; diff --git a/yarn-project/acir-simulator/src/client/debug.ts b/yarn-project/acir-simulator/src/client/debug.ts index f03a1f251c8..21efa0e576c 100644 --- a/yarn-project/acir-simulator/src/client/debug.ts +++ b/yarn-project/acir-simulator/src/client/debug.ts @@ -1,4 +1,4 @@ -import { ForeignCallInput } from 'acvm_js'; +import { ForeignCallInput } from '@noir-lang/acvm_js'; import { ACVMField } from '../acvm/index.js'; diff --git a/yarn-project/acir-simulator/src/client/private_execution.ts b/yarn-project/acir-simulator/src/client/private_execution.ts index 79b5afc1f19..2e058c86852 100644 --- a/yarn-project/acir-simulator/src/client/private_execution.ts +++ b/yarn-project/acir-simulator/src/client/private_execution.ts @@ -135,15 +135,16 @@ export class PrivateFunctionExecution { return Promise.resolve(ZERO_ACVM_FIELD); }, enqueuePublicFunctionCall: async ([acvmContractAddress], [acvmFunctionSelector], [acvmArgsHash]) => { + const selector = FunctionSelector.fromField(fromACVMField(acvmFunctionSelector)); const enqueuedRequest = await this.enqueuePublicFunctionCall( frToAztecAddress(fromACVMField(acvmContractAddress)), - FunctionSelector.fromField(fromACVMField(acvmFunctionSelector)), + selector, this.context.packedArgsCache.unpack(fromACVMField(acvmArgsHash)), this.callContext, ); this.log( - `Enqueued call to public function (with side-effect counter #${enqueuedRequest.sideEffectCounter}) ${acvmContractAddress}:${acvmFunctionSelector}`, + `Enqueued call to public function (with side-effect counter #${enqueuedRequest.sideEffectCounter}) ${acvmContractAddress}:${selector}`, ); enqueuedPublicFunctionCalls.push(enqueuedRequest); return toAcvmEnqueuePublicFunctionResult(enqueuedRequest); diff --git a/yarn-project/acir-simulator/src/client/simulator.ts b/yarn-project/acir-simulator/src/client/simulator.ts index 5a7003c02a6..4326437987e 100644 --- a/yarn-project/acir-simulator/src/client/simulator.ts +++ b/yarn-project/acir-simulator/src/client/simulator.ts @@ -7,7 +7,7 @@ import { Fr } from '@aztec/foundation/fields'; import { DebugLogger, createDebugLogger } from '@aztec/foundation/log'; import { AztecNode, FunctionCall, TxExecutionRequest } from '@aztec/types'; -import { WasmBlackBoxFunctionSolver, createBlackBoxSolver } from 'acvm_js'; +import { WasmBlackBoxFunctionSolver, createBlackBoxSolver } from '@noir-lang/acvm_js'; import { createSimulationError } from '../common/errors.js'; import { PackedArgsCache } from '../common/packed_args_cache.js'; @@ -22,7 +22,7 @@ import { UnconstrainedFunctionExecution } from './unconstrained_execution.js'; * The ACIR simulator. */ export class AcirSimulator { - private static solver: WasmBlackBoxFunctionSolver; // ACVM's backend + private static solver: Promise; // ACVM's backend private log: DebugLogger; constructor(private db: DBOracle) { @@ -42,8 +42,8 @@ export class AcirSimulator { * * @returns ACVM WasmBlackBoxFunctionSolver */ - public static async getSolver(): Promise { - if (!this.solver) this.solver = await createBlackBoxSolver(); + public static getSolver(): Promise { + if (!this.solver) this.solver = createBlackBoxSolver(); return this.solver; } diff --git a/yarn-project/acir-simulator/src/public/executor.ts b/yarn-project/acir-simulator/src/public/executor.ts index 7c7ce906dd3..4d8fe6da158 100644 --- a/yarn-project/acir-simulator/src/public/executor.ts +++ b/yarn-project/acir-simulator/src/public/executor.ts @@ -124,10 +124,11 @@ export class PublicExecutor { }, callPublicFunction: async ([address], [functionSelector], [argsHash]) => { const args = packedArgs.unpack(fromACVMField(argsHash)); - this.log(`Public function call: addr=${address} selector=${functionSelector} args=${args.join(',')}`); + const selector = FunctionSelector.fromField(fromACVMField(functionSelector)); + this.log(`Public function call: addr=${address} selector=${selector} args=${args.join(',')}`); const childExecutionResult = await this.callPublicFunction( frToAztecAddress(fromACVMField(address)), - FunctionSelector.fromField(fromACVMField(functionSelector)), + selector, args, execution.callContext, globalVariables, diff --git a/yarn-project/aztec-rpc/src/simulator_oracle/index.ts b/yarn-project/aztec-rpc/src/simulator_oracle/index.ts index cfdeccff424..52737d91a42 100644 --- a/yarn-project/aztec-rpc/src/simulator_oracle/index.ts +++ b/yarn-project/aztec-rpc/src/simulator_oracle/index.ts @@ -48,7 +48,7 @@ export class SimulatorOracle implements DBOracle { async getAuthWitness(messageHash: Fr): Promise { const witness = await this.db.getAuthWitness(messageHash); - if (!witness) throw new Error(`Unknown auth witness for message hash ${messageHash.toString()}`); + if (!witness) throw new Error(`Unknown auth witness for message hash ${messageHash.toString(true)}`); return witness; } diff --git a/yarn-project/aztec-sandbox/Dockerfile b/yarn-project/aztec-sandbox/Dockerfile index 49d86dddaaa..fb4464fc5dd 100644 --- a/yarn-project/aztec-sandbox/Dockerfile +++ b/yarn-project/aztec-sandbox/Dockerfile @@ -3,7 +3,7 @@ FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder ARG COMMIT_TAG="" # Remove SRS files (currently not producing proofs) -RUN rm -rf /usr/src/circuits/cpp/barretenberg/cpp/srs_db/ignition/monomial +RUN rm -rf /usr/src/barretenberg/cpp/srs_db/ignition/monomial COPY . . # Update aztec-rpc version if COMMIT_TAG has been used diff --git a/yarn-project/aztec-sandbox/docker-compose.yml b/yarn-project/aztec-sandbox/docker-compose.yml index abd49fab09d..e6da4cef6bb 100644 --- a/yarn-project/aztec-sandbox/docker-compose.yml +++ b/yarn-project/aztec-sandbox/docker-compose.yml @@ -7,7 +7,7 @@ services: - '8545:8545' aztec: - image: aztecprotocol/aztec-sandbox:latest + image: 'aztecprotocol/aztec-sandbox:${SANDBOX_VERSION:-latest}' ports: - '8080:8080' environment: diff --git a/yarn-project/aztec.js/src/abis/ecdsa_account_contract.json b/yarn-project/aztec.js/src/abis/ecdsa_account_contract.json index 9b641c8c749..4a6b52f7974 100644 --- a/yarn-project/aztec.js/src/abis/ecdsa_account_contract.json +++ b/yarn-project/aztec.js/src/abis/ecdsa_account_contract.json @@ -84,7 +84,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "H4sIAAAAAAAA/+2dB3xUVRbGbxIIVcVV6SX0Du+lkIQaeu9gQ0RKQERBMLji2ntviIiIiIiIiL333nuvu+r27vbO7j3hPLleBzKT+SaZ77dzf7/DyZkZ7nz/70158+59972WZcxZNqRJyrZRR/+O6rpenevVTW3Ud+pmXt3cq1t4dUuvbuXVrb26jVe39ep2Xp3n1e29uoNXd/TqTl7d2au7eHVXr+7m1d29uodX9/TqXl7d26v7eHVfrw68OvTqfK8u8OpCry7SWl4XRv2VJq8D2fbNdRu31G3ZWrdZW902eboNOqjXndTTLupdN/Woh3rRS5n7KFugDPmqtVA1Rfr6eXqLvbrEq0u9ur9XD/DqgV49yKsHe/UQry7z6qFePcyrh3v1CK8e6dWjvHq0V4/x6rFePc6rx3v1BK+e6NWTvHqyV0/x6qlePc2rp3v1DK+eaXa/HuW2PLOryeugWLd3qW7XAbr9Bul2GqLbY6j6Plz9Hak+jla/xqov45V/onJOVp6pqnu66pupWnLNt98fO82u94jk5ppbaG6puZXm1prbaG6ruZ3mPM3tNXfQ3FFzJ82dNXfR3FVzN83dNffQ3FNzL829NffR3FdzoDnUnK+5QHOh5iKnv4NtHKLbKlvDOLf7nvXT/1usuURzqeb+mgdoHqh5kObBmodoLtM8VPMwzcM1j9A8UvMozaM1j9E8VvM4zeM1T9A8UfMkzZM1T9E8VfM0zdM1z9A80/HsUBuHqWc5jmfR7W7Tr/JKTmkFQb/CwvLi/PKwIJwb5JfOKykKCovm9SsJS8KikqIF+SUFBeUlhSXFpfNKi4PSsLCgPFxYVFqwMNjVDnf6CpJsqdQ5i0TnESQ6Z5PoPJJE5xwSnUeR6JxLonMeic75JDoXkOgsJ9G5kETnIqDOaB+zifYn+56yr3Wo5sM1z9J8hObZmo/UPEfzUZrnap6neb7mBZrLNS/UvMjs3sc72sZis2sfT46/RPt40e2p9PYYnLdh5G2k8RhllNuW2DhWGes6jNHtbsvxGKXvIInW1GdMordmQO8Py0rN+y+Gf0Ey1M1NDJ3V7K0F0L/Da9a/oLrULc0edFajt1ZA/2bVvH9Bdahbm73oTLC3NkD/jqgd/4JEqduaKnQm0Fs7oH+za8+/IBHqPBOHzjh7aw/078ja9S+Il7qDiVNnHL11BPo3p/b9C+Kh7mQS0FlFb52B/h2VHv4FVVF3MQnq3EtvXYH+zU0f/4K9UXcz1dC5h966A/2bl17+BXui7mGqqTNGbz2B/s1PP/+CWNS9TBI6vd56A/1bkJ7+BT51H5OkTqe3vkD/ytPXv+Bb1AagU3sLgf4tTG//KnHln3wD0ml7KwD6tyj9/ZMWFgL7co85Jevf0ST+AY8ThbOA/i0m8Q94nCOcDfTvGBL/gL/TwzlA/5aQ+Af8nRnOBfp3LIl/wN9J4Xygf8eR+Afczw/Lgf4tJfEPuJ8aLgL6t4zEP+B+VrgY6N/xJP4B9xPCJUD/lpP4B/yeC48D+reCxD/g53S4DOjfCST+AT9nwuVA/ypI/AO+T8ITgP6trCH/kt5PBW4L4GsmXFlzr7+k5l/1M7j5V8XA7bqaZP5VicHNvyoF+nc1yfyr/gY3/2oA0L81JPOvBhrc/KtBQP+uIZl/Ndjg5l8NAfq3lmT+VZmJQ2ecvQ0F+nctyfyrYSZOnXH0Nhzo3zqS+VcjTAI6q+htJNC/60jmX40yCercS2+jgf6tJ5l/NcZUQ+ceehsL9O96kvlX40w1dcbobTzQvw0k868mmCR0er1NBPp3A8n8q0kmSZ1Ob5OB/m0kmX81xQB0am9Tgf7dSDL/apoB6bS9TQf6t4nk+OkMYF+rgcdPbyLxD3icKFwD9G8ziX/A4xzhWqB/N5P4B/ydHq4D+reFxD/g78xwPdC/W0j8A/5OCjcA/dtK4h9wPz/cCPTvVhL/gPup4Sagf9tI/APuZ4Wbgf7dRuIfcD8h3AL0bzuJf8DvuXAr0L/bSfwDfk6H24D+7SDxD/g5E24H+ncHiX/A90m4A+jfnSTzr5YCtwXwNRMi/YvWzorW1ZY5Z+76uUvNt9eGzdYsbZmN4/X/5prda2tFt7sNvX7YcuC2yfL0L1fGZQ7rChsnKGs957HR7Tlm9+svVisDaq3r9d3uu8+RluuW6U1ptx6Yc3NarbPl3ZU261fFuDst1oXaw0Nqfb2lvTysVtcxquKhtbY+UFB1q5V1d4L4Wo2vZxPE32p0nZggsVZj668EibcaWdckqF5L+XohQfVbStfhCJJryPUtvvkd4u/nBsm1sCgFGtH7i6k6z0JvSrvzF5yb0+q8AO+utJlvH+PutJjHvoeH1Pr88L08rFbnXVfx0FqbzxxU3WplnnAQX6vx+bdB/K1G57UGibUamy8aJN5qZB5mUL2W8vmNQfVbSucNBsk15Hy8lO0vziTQmJ0CjanQuQKoM8vRWeH83VhzA7PrGhzSsp3bcjy2Bs79Uct1/i7D6C3KxfsZyHHr+g6H8Xj31fv313rpsorFC1cNX1E+t6J8waRlFeWuidFB8JwYHWU5t7sHy+s4T57r3e8aG91Xz+w24ZtWZiBuhG6f6FduBa6vICeWCSa9PxWyHI3RC2GljRNtfN9h2Md8d+NHLQXvqiBV76pchyNq7rtK7q+Dfd4C99PJOH6bGL4Z5/nlHR596i0qr5iyct6xi+ePL18Va5vlxOjX/XT0PwTc7Rjdl9I3cfSRFutFFg0ruvft1Pt36mMk72fjJBurVLQLEd1uYhhQpjnZoVTgGy88yWA/ePyhTmN4dkcMWGcqPViZIg/QOk802C+JzFB6Zig9npYZSk+stzwTx/s0M5T+TcsMpSfWW2YoPbHeMkPpCfaWfF+ZofRqNu0mM5ReqTqodssMpSfWMkPpifWWGUpPrLfMUHpivWWG0hPrLTOUnlhvmaH0xHrLDKWnn8ZUDZpl698n2/iB2d1aaXZHUN1R1VgDMv8Pw9oNHQ7j8UbD2k20Lj9uccXIpfNXrDreDmtPWLbIHZyqp7lujH5cX6XVcf6u6/jpj2znOrrKMMz5DczuoXzjPLfbypy/GzhaGmK1VL63GjnPFemKnqeRc389R0cjrI7KU/MaevyuhhQ9byV/4yr4G8fQ0bgG+d1pLg09ne57P7ov5YO2Dc2eP+SMwZ+veorBf5mkQuepJDpPI9F5OonOM0h0nkmi8ywSnWeT6DyHROe5JDrPI9F5PonOC0h0Xkii8yISnReT6LyEROelJDovI9F5OYnOK0h0Xkmi8yoSnatJdF5NonMNic5rSHSuJdF5LYnOdSQ6ryPRuZ5E5/UkOjeQ6LyBROdGEp03kujcRKLzJhKdm0l03kyicwuJzltIdG4l0Xkric5tJDpvI9G5nUTn7SQ6d5DovINE550kOu8i0Xk3ic57SHTeS6LzPhKd95PofIBE54MkOh8i0fkwic5HSHQ+SqLzMRKdj5PofAKjc2FhfmFKdT5J4udTJDqfJtH5DInOZ0l0Pkei83kSnS+Q6HyRROdLJDpfJtH5ConOV0l0vkai83USnW+Q6HyTROdbJDrfJtH5DonOd0l0vkei830SnR+Q6PyQROdHJDo/JtH5CYnOT0l0fkai8/MU6cz2dAbJtcrFFlDMPyRhzgYy/4iEOQfI/AUJcx0g85ckzHWBzF+RMOcCmX9Mwnw0kPknJMynAJl/SsJ8KpD5ZyTMpwGZf07CfDqQ+RckzGcAmX9JwnwmkPlXJMxnAZl/TcJ8NpD5NyTM5wCZf0vCfC6Q+XckzOcBmX9Pwnw+kPlrEuYLgMx/IGG+EMj8RxLmi4DMfyJhvhjI/GcS5kuAzH8hYb4UyPxXEubLgMx/I2G+HMj8dxLmK4DM/yBhvhLI/E8S5quAzP8iYV4NZP43CfPVQOb/kDCvATLvJGG+Bsj8XxLmtUBmmazBwHwtkDmLhHkdkDmbhPk6IHMOCfN6IHMdEubrgcx1SZg3AJlzSZjdNRGTZa5HwrwRyFyfhHkFkLkBCfONQOaGJMybgMyNSJhvAjI3JmHeDGTeh4T5ZiDzviTMW4DM+5Ew3wJkbkLCvBXIvD8J861A5u+RMG8DMh9AwnwbkPlAEubtQOaDSJhvBzI3JWHeAWRuRsJ8B5C5OQnzEiBzCxLmO4HMLUmY7wIytyJhvhvI3JqE+R4gcxsS5nuBzG1JmO8DMrcjYb4fyJxHwvwAkLk9CfODQOYOJMwPAZk7kjA/DGTuRML8CJC5Mwnzo0DmLiTMjwGZu5IwPw5k7kbC/ASQuTsJ85NA5h4kzE8BmXuSMD8NZO5FwvwMkLk3CfOzQOY+JMzPAZn7kjA/D2QOSJhfADKHJMwvApnzSZhfAjIXkDC/DGQuJGF+BchcRML8KpC5Hwnza0DmYhLm14HMJSTMbwCZS0mY3wQy9ydhfgvIPICE+W0g80AS5neAzINImN8FMg8mYX4PyDyEhPl9IHMZCfMHQOahJMwfApmHkTB/BGQeTsL8MZB5BAnzJ0DmkSTMnwKZR5EwfwZkHk3C/DmQeQwJcz0g81gS5vpA5nEkzA2AzONJmBsCmSeQMDcCMk8kYW4MZJ5EwrwPkHkyCfO+QOYpJMz7AZmnkjA3ATJPI2HeH8g8nYT5e0DmGSTMBwCZZ5IwHwhkPpiE+SAg8yFA5oO0nyxllmtCyjUS5ZqBcg09+T0ov4/k94LsP8v+pOxfyf6GfP/K95F8Psvnlbx/5fUs29flbWqjmY3mNlrYaGmjlY3WNtrYaGujnY08G+1tdLDR0UYnG51tdLHR1UY3G91t9LDR00YvG71t9LHRV7ywEdrIF49tFNoostHPRrGNEhulNvrbGGBjoI1BNgbbGKJ6h9oYZmO4jRE2RtoYZWO0jTE2xtoYZ2O8jQk2JtqYZGOyjSk2ptqYZmO6jRk2Zto4WX2Qa6HKtUG/sPGlja9syLUF5Vp7cu05uRabXJtMrtUl166SaznJtY3kWj9y7Ru5FoxcG+VrG3LtDLmWhFxbQa41IGvvy1r0sja7rFUua3fLWtaytrOsdSxr/8pauLI2rGxsWTtU1tKUtSVlrUVZe1DW4pO16WStNlm7TNbykrWtZK0nWftI1gKStXFkrRhZO0XWEpG1NWStCVl7QdYikHPz5Vx1OXdbzmWWc3vlXFc591POhZRzA+VcOTl3TM6lknOL5FwbOfdEzsWQcxNkrr7MXZe53DK3Web6ytxXmQsqcyNlrqDMnZO5ZDK3SuYaydwbmYsiczNkroKM3ctYtoztylinjP3JWFjl2JANGTuQY+lybFmOtcqxRzkWJ8em5FiNHLuQ3/Ly21Z+68lvH/ktIPvGsq8o+06yLyHfrfJdI5+98lkk782o/Q9skLv5jFABAA==", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -153,7 +153,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ] diff --git a/yarn-project/aztec.js/src/abis/schnorr_account_contract.json b/yarn-project/aztec.js/src/abis/schnorr_account_contract.json index e2d89237085..916ede6ff82 100644 --- a/yarn-project/aztec.js/src/abis/schnorr_account_contract.json +++ b/yarn-project/aztec.js/src/abis/schnorr_account_contract.json @@ -72,7 +72,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -141,7 +141,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "H4sIAAAAAAAA/+1dBZgUR9OePQGOw93ddeeEu0MPCe7ucBx3CYQASYA4ECEkIUJCjHiIuxF3d3d3d3fydx3Vudph4QvZqk3Xz8zz1PP29O31vNVVLe/s7G6Hip7X3RgcEWMpxtKwbM/TA+cVsJy+9d/KXg9HPWP1jTUw1pD8n/17I2ONjTUx1hT/nkL+3sxYc2MtjLUk12ttrBI5bxM4bxs4bxc4bx847xA47xg47xQ47xw47xI47xo47xY47x44jwbO/cB5VuA8O3CeEzjPDZz3CJznBc7zA+cFgfOegfNegfPegfM+gfO+gfN+gfPCwHn/wPmAwPnAwPmgwPlugfPBgfMhgfOhgfNhgfPhgfMRgfORgfNRgfPRgfMxgfOxgfNxgfPxgfMJgfOJgfNJgfPJgfMpgfOpgfNpgfPpgfMZgfOZgfNZgfPZgfM5gfO5gfOiwPk8PIf5IdXbmi9wwDwAYx/GO4xxGNcdvK3jF8YsjFMYmzAeYQzCuIOxBuMLxhSMIxg7MF5gjMC4gLEA+Q85D3kOuQ35DDncD68N+Qk5CXkIuQf5BjkGeQW5BPkDOQN5ArkB+QA5MAZjPQ5jOgFjNwljNAVjMQ37fAb27SzswznYV0XYJ9A/MPe2wP6A+XaLt3XOBWyA2BCxEWJjxCaITRGbITZHbIHYErEVYmvENohtEdshtkfsgNgRsRNiZ8QuiF0RuyF2R4wi+ohZiNmIOYi5pL1iY/O9rbkC60gK9o2tD/ZZD/zfPMR8xALEnoi9EHsj9kHsi9gPsRCxP+IAxIGIgxB3QxyMOARxKOIwxOGIIxBHIo5CHI04BnEs4jjE8YgTECciTiJ9VmKsFPssnfSZradHBLEQMTvaIyenJC+rxM/2i6JZBfPyc6M5ufN65Pv5fm5+7vys/Ozskvyc/LyCeQV50QI/J7vEL80tyC6Nbj12J21FEzwkee6hhOcCJTwXKuG5pxKei5Tw3EsJz8VKeC5RwnOpEp57K+G5jxKe+yrhuUwJz+VKeK5QwnM/JTz3V8LzAEaeQa0GGhk0yxTEqYjTEKcjzkCciTgLcTbiHMS5iEWI8xB3R9wDcQHiQsQ9ERch7oW4GHEJ4lLEvRH3QdwXcRnicsQViPsh7o94gFeu1Q40dpC3VadB31itZuslY3uwpyMHD1HCc6USnquU8FythOehSngepoTn4Up4HqGE5xolPI9UwnOtEp5Hefx7txrYHtx/hz1MCeKBiAcjHoK4EnEV4mrEQxEPQzwc8QjENYhHIq5FPMor3zsdbewYb+veCd7itnsnW5+K9ds7Cnn6xpdrO2e+YNslgm2XyrWdGxVsWzCWuVkVSJvrEI9FPA7xeMQTENeT/zksdStmeFvfP4XDtgl1NtfTSZ39exqps39PJXX27ymkzv49Qurs373A9eEoRIwmeFTwtp0Lowke4HNN4ocXx99InH5JidN/9u/pcfqPxsP+3calGv49Q6C/MpnbBI6VvdgjEjgvJOVM4n8VAf+qCvhXZSf8q0r8qybgX3UB/6rthH/ViX81BPyrKeBfjZ3wrybxr5aAf8xt+tBmbQGedXnbzIM41PH+eRzqkjjUE/CvPnOb0EYDwt/6arlnkr/XJ7414OXhR8g1bbv2vIHcdcv8b/g//G8Yh0fDJPrfMPQ/9D/0P/Q/9J/5un7Z+k6vC8eO1nfKpRErl63ru0R8GxP+1lfLPZP8nca3MS+Psvg28mL71J43JtcN/We9bui/F/of+h/6H/of+h/6H/of+h/6H/of+h/6H/of+h/6H/of+h/6H/rvgv+Z5O8phAvzfXZ/R/f3G8XhkuoQlzSHuKQ7xKWCQ1wqOsSlkkNcMhziUtkhLpkOcaniEJeqDnGp5hCX6g5xqeEQl5oOcanlEJfaDnGp4xCXug5xqecQl/oOcWngEBfBZ392mkvkP+ZCP0/ikTr79xRSZ/Ud/dxJEyzTz500xTL93Ekz4qeta47liqSuBZYrkbqWpGyxFZYrk7rWWK5C6tpguRqpa4vlGqSuHZZrkbr2WK5N6jpguQ6p64jleqTO9hvtZ9tvjUmd7bcmpM72W1NSZ/utGamz/dac1Nl+a0HqbL/RfrT91orU2bxsTepsX7YhdXY/15bU2f5tR+rs/qY9qbN93oHU2fXe9iP4f0Gk/O/2tTQXO8Zpx5bpmLLXLkSMJnaUjSl6nUJybq9VmXDo4ACXhg5xaeAQl/oOcannEJe6DnGp4xCX2g5xqeUQl5oOcanhEJfqDnGp5hCXqg5xqeIQl0yHuFR2iEuGQ1wqOcSlokNcKjjEJd0hLmkOcUl1iEtKHC4S75lbPQqH1YwNCA/LqR3h0Za5T6CNNnF4tCU87PXbEB6teXnAzxj8rfcpj9aEh71+K8KjJS8P+BmFv+9PUB4tCQ97/RaER3NeHvAzDn/fT6E8mhMe9vr0/lVTXh7wMxJ/3/+hPJoSHvb6TQgP5mc7ekAbjeLwaEx42Os3Ijw68fKIecbE/naTHaf2WqnkNafizRbYV9J7l/ReVGcs0/tYXbBM74F1xXILUtcNy/TeW3cs0/t2O7rn15nU2TWhC6mza1ZXUmfX1G6kzq759voV8XXM38GRBdeyGtMekcB5ISnTe6RWs9P3zpi/z6MsR+oEuNhze61MwqGGHJe8zO1c2x70Gag6Av3gBfrBHnXicEl1iEuaQ1zSHeJSwSEuFR3iUskhLhkOcansEJdMh7hUcYhLVYe4VHOIS3WHuNRwiEtNh7jUcohLbYe4RP5jLtt7dsP+nb5fXpeULdr3HOkzFPUDfkKdvV9Cn6uw7ylXJXVW99BnLax2rE7qrGai33OaEsc3u1el3Olv/No6u3erT+rsHqoBqbN7mYakzu4pqGazfUSf07B9ZLnDNQ9M3dbPlDh+0nZsWfq5H3qdQnJur0WfUWjsAJfaDnGp5RCXmg5xqeEQl+oOcanmEJeqDnGp4hCXTIe4VHaIS4ZDXCo5xKWiQ1wqOMQl3SEuaQ5xSXWIS0ocLszf87nN903bvW5DwsNyos/+c3/vdSTAowW5Lv38A/N3eJe9p1s3jv9UU9nr1xWMA9V2tm0YF4Upcr4LvBdbFkf7ficcq4hfzUn/SVy3WeC69QLXpe81VcDXWK72f1PJa0amlMdhKJYrk/boZwxaBK5FtbD9m32Pr6WA7/Ya9nq2z1sS31sS31uQ/2lAfLevGUd8n5Ja/n/MzzKUvWdu37dNIbxbE67Mz3GUPT9Bn+Ow7bcide1J2c4J9n/ocx7tCU+JuYnysNen34/cMQ5P+nxOh8DrBN7nL8s/yoM+O0Tf57evmUNyazLJLYk4d/K27b+2pC+6MF+TPqNA+4MehaTchXDpxsslmz4H8U+4dCNcuvNyiUrtXeiPc1lfLfdM8nf6WcEoL4+y/Vx3L7ZP7XmUXDf0n/W6qvynzxp1/o+5ZBIOXeW4ZGd6yckD2rd077ya7J19Zt+gzRxmPyB2WV75sYr4lUP6T+K62YHr+oHrRgIxXEW42v9NJa+ZkVoeh6PI3tm2R8eAxLzQwys/7DWpps3Fcg/CQ2L/lheHB9WW9vp5hIfEPig/Dg/63LK9fj7hUcDMIyPAA44d7UcKCJdeAlx67gSXXoRLHwEuvXeCSx/CpZ8Al747waUf4dJfgEvhTnDpT7gMFOAyYCe42OvD/w3CMh1bu/HyK1v3BwW42HN7rUzCIVeQS2aca9N+6OlAP1gOPf7DfujtQD9YDnn/YT/0daAfLIf6/2E/FDrQD/Z67f7DfhjgQD9YDilJ7ofKpI4+rzeY99p59Jr0vutgcs0hzP5Cm8OY/YC8GerFHjtal4cR/0bwcinTUSNJ+4XkGvS6o5j7lV43gmavYetTSfl1m9TkdXDYvLOcIReHx3kdLQ8N/E8m+ftwYZ9HEB6F5NxeC7TnM8TX4XF40zFv/z6E8JbQhMMID3t9+n1zzHlZNkao73DsaIyMIFyY41Y2RkaT9gvJNeh1xzD3O72uHSP2GrY+lZS/Inkzprz4d95YzjBGRsZ5HS0Hx1Am+ftIYZ/pWC0k5/ZaMEbeJ76OjMN7GOFt/071g8QYoWPbXp+OEea8LBsj1Hc4djRGRhEuzHErGyNjSfuF5Br0uuOY+51e144Rew1bn0pfYx+WIa+Dw+aN5QxjZHSc19FycAxlkr+PFvaZjtVCcm6vBWPkJzJGRsfhTdc/+3fpe4t0bNvr0zHCnJdlY4T6DseOxsgYwoU5bmVjZDxpv5Bcg153AnO/0+vaMWKvYetTSbkOGSMTyot/543lDGNkbJzX0XJwDGWSv48V9pmO1UJybq8FYySD+Do2Dm+6/tm/0/sOEmOEjm17fTpGmPOybIxQ3+HY0RgZR7gwx61sjEwk7ReSa9DrTmLud3pdO0bsNWx9Kim3J3kzqbz4d95YzjBGxsd5HS0Hx1Am+ft4YZ/pWC0k5/ZaMEaaEF/Hx+FN1z/7d+nnH+nYttenY4Q5L8vGCPUdjh2NkQmEC3PcysbIZNJ+IbkGve4U5n6n17VjxF7D1qeSck+SN1PKi3/njeUMY2RinNfRcnAMZZK/TxT2mY7VQnJurwVjpDvxdWIc3nT9s3+n9yslxggd2/b6dIww52XZGKG+w7GjMTKJcGGOW9kYmUraLyTXoNedxtzv9Lp2jNhr2PpUUh5F8mZaefHvvLGcYYxMjvM6Wg6OoUzy98nCPtOxWkjO7bVgjAwgvk6Ow5uuf/bvVsJAbtm40XvMkwV82d54n0z41QpwF+CSlxnn2vT50+BzzhJzCO0Le7+dfv7Z1tH9QiF5dsby7kzaoblinxWiz7zSnG4S+B9oc2rgdeD7dF7fy55DpTzg2NFcNp1wmcnLpWwum0XaLyTXoNedzXtdn17XzmX2GrY+lZQXk/E9u7z4dw5YzhDDGXFeR8vTAv+TSf4+Q9jnmYRHITm314IcLya+zojDmz7Paf9O1yOJsTqd8LDXp2PV8qDPsTHnaln/zQj0nz2nsewc6C8BLtmZca5Nn7u0/RV87jKTlYefB21WZW6T/j6GPXY0P9nrV/LKP+u6e8my0UuWlewbIf9v27T6rTJpI4WUU8n/pHnb8kiPU1chTl1Fb9ujEilnkHIm+b/KAZ70d0Dod4VYzvZvFb1t+4l1ENojJdB2drRHTk5JXlaJn+0XRbMK5uXnRnNy5/XI9/P93Pzc+Vn52dkl+Tn5eQXzCvKiBX5OdolfmluQXYqNpzDyPJ6vLfos+98dy8VzPWP/pXpxAi/A+QSPd+G3x4mknBbIMTjolyty++QFrhPsx2qe8KCSCNKJAu2e5PElrJTfJ/HHKGpnd5uE64xtMXYs4nGIcGwwdrK3dYWAmT4lUE+PoP+J9ukpHu9OpwLhfwr6uIH4eqqx09BXuhrZ+p3pt9ONbcS26Cftbb1kv50h2G9noI+nE1/PNHYW+ppJXmvrg22k4P+eiQgT5NnGzsE2qpDX2vpgGyfg/56NCDE519h52EZV8lpbTw/uBZ9zLjlfIH52R1kP+6s+YgPEhoiNEBsjNkFsitgMsTliC8SWiK0IbjJ2AcajGulzW5/ixS5E3PPnJr62oi2wnQuNXWTsYmOXGLvU2GXGLjd2hbErjV1l7Gpj1xi71th1xq43doOxzcZuNHaTsZuN3WLsVmO3Gbvd2B3G7jR2l7G7jd1j7F5j9xm7Hzspgn0HXCp55ecXBc4vDpxfEji/NHB+WeD88sD5FYHzKwPnVwXOrw6cXxM4vzZwfl3g/PrA+Q2B882B8xsD5zcFzm8OnN8SOL81cH5b4Pz2wPkdgfM7A+d3Bc7vDpzfEzi/N3B+X+D8fi9WbcFh16JCxGhiR8yYSXQeu5CxrcMryIigYP/9W54lpXBE/YuY2oJYXMzYf0c4339lTfuXJN5WFvrsX8rYf2tc7r+cv3n6lyXWVpT47F/O2H9Hutp/WTE8/Sv+fVvRgM/+lYz9t9bB/utRug1P/6p/11Z+HJ/9qxn77yjX+i8/Lk//mp1vK287PvvXMvbf0S71X952efrX7VxbWTvw2b+esf+OcaX/8nbI07/hn7dV/D989jcz9t86F/ov73/y9G/8Z21F/4HP/k2M/Xfsf91/0X/E07/5f7eV+w999m9h7L/j/sv+y/nHPP1bd9hWTulO+Ozfxth/x/9X/Ze3Uzz927ffVv5O+uzfwdh/J/wH/VdQutM8/TvjtxX9Fz77dzH23/pk91/0X/H07962Lf9f+uzfw9h/Jyaz/+b/a57+vbFtZSfgs38fY/+dlKT+yypNiKd/v8d3L5Hes0u0/zYkqf+iiR0+4302fw1j/52spP8Y7xP5axn77xQl/cd4n8M/mrH/TlXSf4w63V/H2H+nKek/Rp3pH8fYf6cr6T9GneSfwNh/G5X0H+M+3z+Rsf/OUNJ/jPtUfwNj/52ppP8Y91n+KYz9d5aS/mPcJ/inMfbf2Ur6j3Gd8zcy9t85SvqPcZ72z2Tsv3OV9B/jPOOfzdh/5ynpP8Zx4jPmjM/Zf/A8aHVv67OjcMA9J7jXBvfu7vG2PicH937hXjLcQ4d78vBeBLy3Ae/pwHtE8N4YvNcG7zHCe5bwXi289wvvecN76PDsADyLAM9gwDMd8CwLPBsDzwTBM0YXe1ufl7zQiz24n8V+4N+3tc3zJMn6UMwDfG3FfCjmQVIOPxSTYJsPYIdyt/uQx5f8Un4/xB8j0U/GPcTIM9UrHyjxDp7rZEUZ2/aDFXK8oz6dUB5GfITU2Y+opnixX70MR4T0LUxQf5H/ox+7jZA2/vJiP14bfE1kO+3Qj8ra/6/mxX7sthAxmuAhMKFGRSdM+8Q7BPAur/wJ+EfINTwSBHrtRCethxnbenQHfbKzbSdr9X/Uk1n9HyPlcPVPsM1HsUO5233cc3v1B78f549RXK6J+v8IcuVu925HpWyQJ2cuPcEXa5+z/+zCBPz6e7FHggvTNvKPc2F6hK0/s3a4c06U55OM/ZesBfRJT2YBfYqUwwU0wTafxA7lbvdpz+0FFPx+mj9GovL5aUae25PPEov/v+QsKZf/Myn+DOKzpG5npPgAb9tYBaX4AO9/S/F47YRSfPvH31L8GdKZcP6st60U5/owcLxBlOjq/wwjr2c9mQHIPQk94yVngk+U53OMPGGyqO5te3D3A/cix9kHUhyf92TyiT2hXvD4Jo5kyYYX+NqKkQ0vknIoGxJs8wXsUO52X/Lclg3g90v8MRKVDS8x8lQoG/w4dNXJhpcRXyF1oWzgaTMpsuFlL1Y2vOLpkg0vM/J6xZMZ3NyT0Mtecib4RHm+ypivWmXDqwo4vubJ5BN7Qr3u8U0cyZINr/O1FSMb3iDlUDYk2Obr2KHc7b7puS0bwO83+WMkKhveZOSpUDZkxaGrTja8hfg2qQtlA0+bSZENb3mxsuFtT5dseIuR19uezODmnoTe8pIzwSfK8x0+nllaZcM7Cji+68nkE3tCvefxTRzJkg3v8bUVIxveJ+VQNiTY5nvYodztfuC5LRvA7w/4YyQqGz5g5KlQNmTHoatONnyI+BGpC2UDT5tJkQ0ferGy4SNPl2z4kJHXR57M4OaehD70kjPBJ8rzYz6e2Vplw8cKOH7iyeQTe0J96vFNHMmSDZ/ytRUjGz4j5VA2JNjmp9ih3O1+7rktG8Dvz/ljJCobPmfkqVA25MShq042fIH4JakLZQNPm0mRDV94sbLhS0+XbPiCkdeXnszg5p6EvvCSM8EnyvMrPp45WmXDVwo4fu3J5BN7Qn3j8U0cyZIN3/C1FSMbviXlUDYk2OY32KHc7X7nuS0bwO/v+GMkKhu+Y+SpUDbkxqGrTjZ8j/gDqQtlA0+bSZEN33uxsuEHT5ds+J6R1w+ezODmnoS+95IzwSfK80c+nrlaZcOPCjj+5MnkE3tC/ezxTRzJkg0/87UVIxt+IeVQNiTY5s/Yodzt/uq5LRvA71/5YyQqG35l5KlQNvSIQ1edbPgN8XdSF8oGnjaTIht+82Jlw++eLtnwGyOv3z2Zwc09Cf3mJWeCT5TnH3w8e2iVDX8o4PinJ5NP7Am1xeObOJIlG7bwtRUjG+jX+IeyIcE2t2CHsndUxG3ZsMWLjRRTu6KygfZpNMFDoWzIi0NXnWyIYAenkNwLZQNPm0mRDRBAKhtSIrpkQ4RxYk6JyAxu7kkoEknOBJ8oz1Q+nnlaZUNqxH2OaUL5xJ5Q6RG+iSNZsiGdsXMp3wrkJJQNCbYJQaoQ4W+3ouOyAfyuqEw2VNy1ZUN+HLrqZEMl7OCMUDbolA2VArIhQ5lsqMQ4MWdEZAY39yRUSYlsqMzHM1+rbKgccZ9jphbZUEWhbKgiJBuqhrKBN0hVBWRDNcdlA/hdTZlsqLZry4aCOHTVyYbq2ME1QtmgUzZUD8iGGspkQ3XGiblGRGZwc09C1ZXIhpp8PAu0yoaaEfc51tIiG2orlA21hWRDnVA28AapjoBsqOu4bAC/6yqTDXV3bdlQFIeuOtlQDzu4figbdMqGegHZUF+ZbKjHODHXj8gMbu5JqJ4S2dCAj2eRVtnQIOI+x4ZaZEMjhbKhkZBsaBzKBt4gNRaQDU0clw3gdxNlsqHJri0b5sWhq042NMUObhbKBp2yoWlANjRTJhuaMk7MzSIyg5t7EmqqRDY05+M5T6tsaB5xn2MLLbKhpULZ0FJINrQKZQNvkFoJyIbWjssG8Lu1MtnQeteWDcVx6KqTDW2wg9uGskGnbGgTkA1tlcmGNowTc9uIzODmnoTaKJEN7fh4FmuVDe0i7nNsr0U2dFAoGzoIyYaOoWzgDVJHAdnQyXHZAH53UiYbOu3asmF+HLrqZENn7OAuoWzQKRs6B2RDF2WyoTPjxNwlIjO4uSehzkpkQ1c+nvO1yoauEfc5dtMiG7orlA3dhWRDNJQNvEGKCsgG33HZAH77ymSDv2vLhpI4dNXJhizs4OxQNuiUDVkB2ZCtTDZkMU7M2RGZwc09CWUpkQ05fDxLtMqGnIj7HHO1yIYeCmVDDyHZkBfKBt4g5QnIhnzHZQP4na9MNuTv2rKhNA5ddbKhADu4ZygbdMqGgoBs6KlMNhQwTsw9IzKDm3sSKlAiG3rx8SzVKht6Rdzn2FuLbOijUDb0EZINfUPZwBukvgKyoZ/jsgH87qdMNvTbpWWDz7m1/89kQyF2cP9QNuiUDYUB2dBfmWwoZJyY+0dkBjf3JFSoRDYMYOPpR7XKhgER9zkO1CIbBimUDYOEZMNuoWzgDdJuArJhsOOyAfwerEw2DN61ZYMfh6462TAEO3hoKBt0yoYhAdkwVJlsGMI4MQ+NyAxu7kloiBLZMIxPNvhaZcOwiPsch2uRDSMUyoYRQrJhZCgbeIM0UkA2jHJcNoDfo5TJhlG7tmzIikNXnWwYjR08JpQNOmXD6IBsGKNMNoxmnJjHRGQGN/ckNFqJbBjLJxuytMqGsRH3OY7TIhvGK5QN44Vkw4RQNvAGaYKAbJjouGwAvycqkw0Td23ZkB2HrjrZMAk7eHIoG3TKhkkB2TBZmWyYxDgxT47IDG7uSWiSEtkwhU82ZGuVDVMi7nOcqkU2TFMoG6YJyYbpoWzgDdJ0Adkww3HZAH7PUCYbZuzasiEnDl11smEmdvCsUDbolA0zA7JhljLZMJNxYp4VkRnc3JPQTCWyYTafbMjRKhtmR9znOEeLbJirUDbMFZINRaFs4A1SkYBsmOe4bAC/5ymTDfN2bdmQG4euOtlQjB08P5QNOmVDcUA2zFcmG4oZJ+b5EZnBzT0JFSuRDSV8siFXq2woibjPsVSLbNhdoWzYXUg27BHKBt4g7SEgGxY4LhvA7wXKZMOCXVs29IhDV51sWIgdvGcoG3TKhoUB2bCnMtmwkHFi3jMiM7i5J6GFSmTDIj7Z0EOrbFgUcZ/jXlpkw2KFsmGxkGxYEsoG3iAtEZANSx2XDeD3UmWyYemuLRvy4tBVJxv2xg7eJ5QNOmXD3gHZsI8y2bA348S8T0RmcHNPQnsrkQ378smGPK2yYd+I+xyXaZENyxXKhuVCsmFFKBt4g7RCQDbs57hsAL/3UyYb9tu1ZUN+HLrqZMP+2MEHhLJBp2zYPyAbDlAmG/ZnnJgPiMgMbu5JaH8lsuFAPtmQr1U2HBhxn+NBWmTDwQplw8FCsuGQUDbwBukQAdmw0nHZAH6vVCYbVu7asqEgDl11smEVdvDqUDbolA2rArJhtTLZsIpxYl4dkRnc3JPQKiWy4VA+2VCgVTYcGnGf42FaZMPhCmXD4UKy4YhQNvAG6QgB2bDGcdkAfq9RJhvW7NqyoSgOXXWy4Ujs4LWhbNApG44MyIa1ymTDkYwT89qIzODmnoSOVCIbjuKTDUVaZcNREfc5Hq1FNhyjUDYcIyQb1oWygTdI6wRkw7GOywbw+1hlsuHYXVs2zItDV51sOA47+PhQNuiUDccFZMPxymTDcYwT8/ERmcHNPQkdp0Q2nMAnG+ZplQ0nRNznuF6LbDhRoWw4UUg2nBTKBt4gnSQgGzY4LhvA7w3KZMOGXVs2FMehq042nIwdfEooG3TKhpMDsuEUZbLhZMaJ+ZSIzODmnoROViIbTuWTDcVaZcOpEfc5nqZFNpyuUDacLiQbNoaygTdIGwVkwxmOywbw+wxlsuGMXVs2zI9DV51sOBM7+KxQNuiUDWcGZMNZymTDmYwT81kRmcHNPQmdqUQ2nM0nG+ZrlQ1nR9zneI4W2XCuQtlwrpBsOC+UDbxBOk9ANpzvuGwAv89XJhvO37VlQ0kcuupkwybs4AtC2aBTNmwKyIYLlMmGTYwT8wURmcHNPQltUiIbLuSTDSVaZcOFEfc5XqRFNlysUDZcLCQbLgllA2+QLhGQDZc6LhvA70uVyYZLd23ZUBqHrjrZcBl28OWhbNApGy4LyIbLlcmGyxgn5ssjMoObexK6TIlsuIJPNpRqlQ1XRNzneCUnRyCXbmydsS3GjkW0F2htrJKxNohtEdshtkfsgNgRsRNiZ8QuiF0RuyF2R4wi+ohZiNmIOYi5iD0Q8xDzEQsQeyL2QuyN2AexL2I/xELE/ogDEAciDkLcDXEw4hDEoYjDEIcjjkAciTgKcTTiGMSxiOMQxyNOQJyIOAlxMuIUxKmI0xCnI85AnIk4C3E24hzEuYhFiPMQW3hbj+fx/DXEdxE/Qfwa8SfEPxHTIlsxE7EWYkPEFojtEbsh5iL2RhyIOBxxHOJUxDmIpYh7IS5DPAjxMMSjEdcjnoZ4DuJFiFciXhVY2rkH9VWMC2OyJHYzvrZiJPbVocTmDdLVAhL7GsclNvh9jYDE/qfSNZrYwTq4JHk2UsKznsc/WQGuxvK15uQ6Y9cbu8HYZmM3GrvJ2M3GbjF2q7HbjN1u7A5jdxq7y9jdxu4xdq+x+4zdb+wBYw8ae8jYw8YeMfaosceMPW7sCWNPGnvK2NPGnjH2rLHnjD1v7AVjLxp7ydjLxl4x9qqx14y9buwNY28ae8vY28beMfausfeMvW/sA2MfGvvI2MfGPjH2qbHPjH1u7AtjXxr7ytjXxr4x9q2x74x9b+wHYz8a+8nYz8Z+Mfarsd+M/W7sD2N/Gtti7C/oSDPDR4ylGEs1lmYs3VgFYxWNVTKWYayysUxjVYxVNVbNWHVjNYzVNFbLWG1jdYzVNVbPWH1jDYw1NNbIWGNjTYw1NdbMWHNjLYy1NNbKWGtjbYy1NdbOWHtjHYx1NNbJWGdjXYx1NdbNWHeyOlnVA7czgotXhrftrZEML3Zxg0PLLQ8QDpWIH17AX3v7pgLrdfOjcK10L/YILsqFcfoTuNbGcnHRokVj91mwomhZyeDli4uXLViymA5r2/xqxNQ47gXr00hXVMRyOqmz/1eRYCTIvxAx0TWVrs/RxA4fnKjhhXNdONfFznUSeRtNSbytktKtR7KEEOUcTfCgfOm9+1AIJdgmBAk6lLvdrBS+5JfyOyuFPUaim/UsxgGVLMF2fUSmb5njliXYdsx7jdl4kkMqd+a9xr+8bWMV8WLfa/zL+9/vNcZrJ3yvcfvH3+81QgD/9Mrfa8xJ2faiKYFrJzoBZjNOprmkLT8/OysrLxtelz8/6ufML87Kz8qaPy8nWhwtKs4qKcjxC0pzsnKyi+cXzzNtFvml0dKi4oLS/K1tJWsnkSu0k+gR7iR4g9RDYCeR5/hOAvzOE9pJcMuIHOTK3W4+8wCF7oQ2A6pqm4c4ookdMbuTRGUV5ySdk8KbR/bgjnuBQllaILSY9AwXE94g9RRYTHo5vpiA372UydJeCmXpDaEsjZGlvfGkTyhLdcrS3gFZ2icJsrQ342TaV6Es7Su0k+gX7iR4g9RPYCdR6PhOoiw5lcjSPsiVu93+ArK0fxJk6Q2MspRzku6jRJYOUChLBwgtJgPDxYQ3SAMFFpNBji8m4PcgZbJ0kEJZujmUpTGydDc8GRzKUp2ydLeALB2cBFm6G+NkOkShLB0itJMYGu4keIM0VGAnMczxnQT4PUyJLB2MXLnbHS4gS4cnQZZuZpSlnJP0YCWydIRCWTpCaDEZGS4mvEEaKbCYjHJ8MQG/RymTpaMUytJbQlkaI0tH48mYUJbqlKWjA7J0TBJk6WjGyXSsQlk6VmgnMS7cSfAGaZzATmK84zsJ8Hu8Elk6BrlytztBQJZOSIIsvYVRlnJO0mOUyNKJCmXpRKHFZFK4mPAGaZLAYjLZ8cUE/J6sTJZOVihLbw1laYwsnYInU0NZqlOWTgnI0qlJkKVTGCfTaQpl6TShncT0cCfBG6TpAjuJGY7vJMDvGUpk6VTkyt3uTAFZOjMJsvRWRlnKOUlPVSJLZymUpbOEFpPZ4WLCG6TZAovJHMcXE/B7jjJZOkehLL0tlKUxsnQunhSFslSnLJ0bkKVFSZClcxkn03kKZek8oZ1EcbiT4A1SscBOYr7jOwnwe74SWVqEXLnbLRGQpSVJkKW3McpSzkm6SIksLVUoS0uFFpPdw8WEN0i7Cywmezi+mIDfeyiTpXsolKXdhSZY5rglTZYuwJOFoSzVKUsXBGTpwiTI0gWMk+meCmXpnkI7iUXhToI3SIsEdhJ7Ob6TAL/3UiJLFyJX7nYXC8jSxUmQpd0ZZRXnJL1QaNfEvTBx/vDgkhS35zf4EcAlAmPn3gpuzxnwA1MSft9XITk5Hk3s8Bnj498nHOtoYkfZD0hKxPpBx3P8OqEcf0hJjjPGx3/I8RyvJ5Tjjzqe47cL5fhjSnKcMT7+Y47nOOwfl6SU96XLXMco4jpVEdeiJHJNdA4BmhJz05OOj9Mbhebkp5TMyYzx8Z9yPNY3CcX62STF2iGd63P6DPGAG7z2BjBogS3e1p/YA+yDOBixsrGlprx3ytZflK5J+srW2zbtOyc3Yps3Id6MOAbbnIpYhAht7mPK++I1apFr2PrgNdrj/3ZA7IjYCbEzYhfEKsaWmfJyvEZtcg1bb6+xlFwb/vd25H8H4p2IdyHejXgP4r2I9yHej/gA4oOIDyE+jPgI4qOIjyE+jvgE4pOITyE+jfgM4rOIzyE+j/gC4ouILyG+jPgK4quIryG+jvgG4puIbyG+jfgO4ruI7yG+j/gB4oeIHyF+jPgJ4qeInyF+jvgF4peIXyF+jfgN4reI3yF+j/gD4o+IPyH+jPgL4q+IvyH+jvgH4p+IWxD/QvQwXyKIKYipiGmI6YgVECsiVkLMsGMPMdPmMGJVxGqI1RFr2PGEWAuxNmIdxLqI9RDrIzZAbIjYCLExYhPEpojNEJsjtkBsidgKsTViG8S2iO0QlyF2Rexmx7KxFaa8H47ZOl75mLX1dszae+XXYiyWYhsrbF8Y29+UD8C26pK2bH2y3uBr7vHO5/Y4MKW8HL7Bl2CbzbFDuds9KMXtN/jA74NS2GOUtEdwOAeXJM/GSnjW9/gnK8DVWD7Y5NohxlYaW2VstbFDjR1m7HBjRxhbY+xIY2uNHWXsaGPHGFtn7Fhjxxk73tgJxtYbO9HYScY2GDvZ2CnGTjV2mrHTjW00doaxM42dZexsY+cYO9fYecbON7bJ2AXGLjR2kbGLjV1i7FJjlxm73NgVxq40dpWxq41dY+xaY9cZu97YDcY2G7vR2E3GbjZ2i7Fbjd1m7HZjdxi709hdxu42do+xe43dZ+x+Yw8Ye9DYQ8YeNvaIsUeNPWbscWNPGHvS2FPGnjb2jLFnjT1n7HljLxh70dhLxl429oqxV429Zux1Y28Ye9PYW8beNvaOsXeNvWfsfWMfGPvQ2EfGPjb2ibFPjX1m7HNjXxj70thXxr429o2xb419Z+x7Yz8Y+9HYT8Z+NvaLsV+N/Wbs95TyvK2OCI9lBRevDG/bR7wyvG3fMNfy6BZsQCoRP7yAv/YxtAqs182PwrXSvdgjuCgXxulP4Foby8VFixaN3WfBiqJlJYOXLy5etmDJYjqsbfOrEVPjuBesTyNdURHL6aTO/l9FgpEg/0LERNdUuj5HEzt8cKKeF8514VwXO9dJ5O0fKXwP9yRLCFHO0QQPyvdP0tehEEqwTQgSdCh3u1tS+JJfyu8tKewxEt2sb2EcUMkSbCtTZPqWOW5J+8zEX/aEdH74mQmeNpPymQkIIP3MBPRU8KIpgWsnOgH+xTiZRlLL29LymQnKOZrgQfmmkEEY7iQSbBOClJLK325qqts7CfA7NZU9RiLPpnjIlbvdNOYBCoMQ2gyoKvbPTKxklFWck7SXyptH9uCOe3oqX/8lazFJF1pMKoSLCW+QKggsJhUdX0zA74pCi4k9JPs0muCRLFm6KpSlMbK0EnZ6RihLdcpSCCCVpRlJkKWVGCfTygplaWWhnURmuJPgDVKmwE6iiuM7CfC7ihJZmoFcudutKiBLqyZBlq5ilKWck3SGEllaTaEsrSa0mFQPFxPeIFUXWExqOL6YgN81lMnSGgpl6epQlsbI0prY6bVCWapTltYMyNJaSZClNRkn09oKZWltoZ1EnXAnwRukOgI7ibqO7yTA77pKZGkt5Mrdbj0BWVovCbJ0NaMs5ZykaymRpfUVytL6QotJg3Ax4Q1SA4HFpKHjiwn43VCZLG2oUJYeEcrSGFnaCDu9cShLdcrSRgFZ2jgJsrQR42TaRKEsbSK0k2ga7iR4g9RUYCfRzPGdBPjdTIksbYxcudttLiBLmydBlh7BKEs5J+nGSmRpC4WytIXQYtIyXEx4g9RSYDFp5fhiAn63UiZLWymUpWtCWRojS1tjp7cJZalOWdo6IEvbJEGWtmacTNsqlKVthXYS7cKdBG+Q2gnsJNo7vpMAv9srkaVtkCt3ux0EZGmHJMjSNYyylHOSbqNElnZUKEs7Ci0mncLFhDdInQQWk86OLybgd2dlsrSzQll6ZChLY2RpF+z0rqEs1SlLuwRkadckyNIujJNpN4WytJvQTqJ7uJPgDVJ3gZ1E1PGdBPgdVSJLuyJX7nZ9AVnqJ0GWHskoSzkn6a5KZGmWQlmaJbSYZIeLCW+QsgUWkxzHFxPwO0eZLM1RKEt/D2VpjCzNxU7vEcpSnbI0NyBLeyRBluYyTqZ5CmVpntBOIj/cSfAGKV9gJ1Hg+E4C/C5QIkt7IFfudnsKyNKeSZClvzPKUs5JuoeQLOVemDh/eLBXqtvzG/wIYC+BsfN8BbfnDPiBKQm/X1DyC+uM8fFfEI51NLGj7AckJWL9suM5fohQjr+iJMcZ4+O/4niO1xfK8dcdz/G1Qjn+hpIcZ4yP/4bjOQ77x15J0iTRxA6/sSKubRRx7ZpEronOITDWJeamtx0fp4cKzcnvKJmTGePjv+N4rA8TivX7SYq1QzrX5/QZ4gE3eO0NYNACW6CQuhUzEGshVjbW25T7pG79Ren6pK9svW3TvnNyKLZ5GOLhiI2xzTaIXRFrGutryv3wGg3INWx98BrfY5s/IP6I+BPiz4i/IFaB2Jp2+uM1GtKYY729xlJybfjftdjGUYhHIx6DuA7xWMTjEI9HPAFxPeKJiCchbkA8GfEUxFMRT0M8HXEj4hmIZyKehXg24jmI5yKeh3g+4ibECxAvRLwI8WLESxAvRbwM8XLEKxCvRLwK8WrEaxCvRbwO8XrEGxA3I96IeBPizYi3IN6KeBvi7Yh3IN6JeBfi3Yj3IN6LeB/i/YgPID6I+BDiw4iPID6K+Bji44hPID6J+BTi04jPID6L+Bzi84gvIL6I+BLiy4ivIL6K+Bri64hvIL6J+Bbi24jvIL6L+B7i+4gfIH6I+BHix4ifIH6K+Bni54hfIH6J+BXi14jfIH6L+B1iIY6zX/H8N8ROxgaYvw3EMduIjFlbb8es3fodjP/bG9scYOczY4NMeTdsqzFpy9bTg3vdGvzv75dHA235yXojcrDQG5FDwjcieYM0ROCNyKGOvxEJfg9V9kjTUIWPNC1JkenbBOPmC7a9zbXo5DQMO314+EiTzkeaIIB3eeWPNA0ng9IjQaDXTnQCHMY4mY7YwSSys20naycxQmgnMTLcSfAGaaTATmKU4zsJ8HuUklvHw5Erd7sfCt1WS/QRpiBPzlwazfgIzofMt+hgEgN+/b3YI9H+DPKmu7tEZSnnIjdc6JEw7nEzRqGsHyO0GI8NF2PeII0VWIzHOb4Yg9/jlLzn3EuIa7KkfSKTbGnsURyHroi0l4ghU1tROtmNxwBO+Je3CQbE8Tl4m2CA979vE8Rr5//VbQKXE8Lu5ManlgcGzickYWfH+YD5BMZFYyLfpFNq+3Mi6U+JfBguoLg+dusBym12o+D3eAG/P3H8wVHwe4KA3586qrCDCznnvEFzPNH++8zR/gscPmN++4w543+m5MGp8YxrzSTGXIY2JNaWSakycxhnrCXeU9w/hd/vyUruGk1RwnOqEp7TGHnCw0FNvPI7WJBTEC/oC7hOGv49eDBd399eH0UTO0Tex+fmOEgo39gTbjojUeGEEgvW9FT3Oc7g5qhlJZypZOaexbhD0zqQZikYSLO1zMxz+IhmaU2oOQoSaq6WhCriI5qtNaGKFCTUPE6OyXorvgVfWzFvxReHb8XzBqlY4K34+Y6/FQ9+z1f89nYLz0vKHjia2OE3UcKzgcc/WQFWwXKJSQr4uubdje1hbIGxhcb2NLbI2F7GFhtbYmwpSaDqiPC2dnCyy/C2fYs8w9v2q9a0vPUNd6cqET+8gL/2bfwKvNcthmule7FHcBIvjNOfwLUhlksW7728ZHnJ2OXzFi0oHrx8cfGyBUsWDyxatIgmg72ITYrUOE4G69NIh1TEcjqps/9XkeB2nx9IdCaez6howYmmXuIjRMLPvRlWr2R/R/veqfwzGBz7hNst3iDtI7Dd2tfx7Rb4va/Qk4/2kOzTaIJHsraFu0vdeeDlmbTvaF+Gnb78Xz6pGH6gcftHUj7QCAGk39G+PHXbi3I/pbGMcTJdQdrS8h3tK4R2EvuFOwneIO0nsJPY3/GdBPi9v9BOgltGLEeu3O0eIPAYN7QZvHHA/fjg7oyyinOSXq7kDeUDFcrSA4UWk4PCxYQ3SAcJLCYHO76YgN8HK5OlByuUpXuEsjRGlh6Cnb4ylKU6ZekhAVm6Mgmy9BDGyXSVQlm6SmgnsTrcSfAGabXATuJQx3cS4PehSmTpSuTK3e5hArL0sCTI0j0YZRXnJL1SiSw9XKEsPVxoMTkiXEx4g3SEwGKyxvHFBPxeo0yWrlEoSxeEsjRGlh6Jnb42lKU6ZemRAVm6Ngmy9EjGyfQohbL0KKGdxNHhToI3SEcL7CSOcXwnAX4fo0SWrkWu3O2uE5Cl65IgSxcwyirOSXqtEll6rEJZeqzQYnJcuJjwBuk4gcXkeMcXE/D7eGWy9HiFsnSvUJbGyNITsNPXh7JUpyw9ISBL1ydBlp7AOJmeqFCWnii0kzgp3EnwBukkgZ3EBsd3EuD3BiWydD1y5W73ZAFZenISZOlejLKKc5Jer0SWnqJQlp4itJicGi4mvEE6VWAxOc3xxQT8Pk2ZLD1NoSxdHMrSGFl6Onb6xlCW6pSlpwdk6cYkyNLTGSfTMxTK0jOEdhJnhjsJ3iCdKbCTOMvxnQT4fZYSWboRuXK3e7aALD07CbJ0MaOs4pykNyqRpecolKXnCC0m54aLCW+QzhVYTM5zfDEBv89TJkvPUyhLl4SyNEaWno+dvimUpTpl6fkBWbopCbL0fMbJ9AKFsvQCoZ3EheFOgjdIFwrsJC5yfCcBfl+kRJZuQq7c7V4sIEsvToIsXcIoqzgn6U1CuybuhYnze+QvSXV7fmth2rhEYOx87fiv0sI3P0v4/U2SfhU0mtjhM8bH/0Y41tHEjrLfA5CI9feO53ipUI7/oCTHGePj/+B4jjcQyvGfHc/xpUI5/ouSHGeMj/+L4zm+HmPt8bYrwnWjIq6bksg10XEJ40divP/ueO4vFJrn/lAyzzHGx//D8VjvKRTrv5IUa4e0o8/pM8QDbpram6qwv97ibf19AMCViGsRKxu71JQvS93680nNSF/ZetumfTdiIf7vnoiLENcjbkTchFjT2OWmfAVeozm5hq2nB3dOXankUYOrlPC8OpU/X20KXIk5cxXi1YjwDtk1pnwt5lALkkO2XtLn65TE5nolPG8QzKHrMGeuR7yB5NBmU74Rc6glySFbL+nzTUpic7MSnrcI5tBNmDM3I95CcuhWU74Nc6gVySFbL+nz7Upic4cSnncK5tDtmDN3IN5JcuguU74bc6g1ySFbL+nzPUpic68SnvcJ5tA9mDP3It5Hcuh+U34Ac6gNySFbL+nzg0pi85ASng8L5tCDmDMPIT5McugRU34Uc6gtySFbL+nzY0pi87gSnk8I5tBjmDOPIz5BcuhJU34Kc6gdySFbL+nz00pi84wSns8K5tDTmDPPID5Lcug5U34ec6g9ySFbL+nzC0pi86ISni8J5tALmDMvIr5EcuhlU34Fc6gDySFbL+nzq0pi85oSnq8L5tCrmDOvIb5OcugNU34Tc6gjySFbL+nzW0pi87YSnu8I5tBbmDNvI75DcuhdU34Pc6gTySFbL+nz+0pi84ESnh8K5tD7mDMfIH5IcugjU/4Yc6gzySFbL+nzJ0pi86kSnp8J5tAnmDOfIn5GcuhzU/4Cc6gLySFbL+nzl0pi85USnl8L5tCXmDNfIX5NcugbU/4Wc6grySFbL+nzd0pi870Snj8I5tB3mDPfI/5AcuhHU/4Jc6gbySFbL+nzz0pi84sSnr8K5tDPmDO/IP5Kcug3U/4dc6g7ySFbL+nzH0pi86dAbGw//4Gx+BOxkrEtpvwXxiRKXmvrJX2FB9w0xCSSJhcT6AOIRSStPCYpppyatjUmPnmtrZf0NU1JTNIFY5KGsUgnMalgyhUxJlnktbZe0tdKSmKSIRiTShiLDBKTyqaciTHJJq+19ZK+VlESk6qCMamCsahKYlLNlKtjTHLIa229pK81lMSkpmBMamAsapKY1DLl2hiTXPJaWy/pax0lMakrGJM6GIu6JCb1TLk+xqQHea2tl/S1gZKYNBSMSQOMRUMSk0am3Bhjkkdea+slfW2iJCZNBWPSBGPRlMSkmSk3x5jkk9faeklfWyiJSUvBmLTAWLQkMWllyq0xJgXktbZe0tc2SmLSVjAmbTAWbUlM2plye4xJT/JaWy/pawclMekoGJMOGIuOJCadTLkzxqQXea2tl/S1i5KYdBWMSReMRVcSk26m3B1j0pu81tZL+hpVEhNfMCZRjIVPYpJlytkYkz7ktbZe0tccJTHJFYxJDsYil8SkhynnYUz6ktfaeklf85XEpEAwJvkYiwISk56m3Atj0o+81tZL+tpbSUz6KOHZVwnPfkp4Firh2V8JzwFKeA5UwnOQEp67KeE5WAnPIUp4DlXCc5gSnsOV8ByhhOdIJTxHKeE5WgnPMUp4jlXCc5wSnuOV8JyghOdEJTwnKeE5WQnPKUp4TlXCc5oSntOV8JyhhOdMJTxnKeE5WwnPOUp4zlXCs0gJz3lKeBYr4TlfCc8SJTxLlfDcXQnPPZTwXKCE50IlPPdUwnOREp57KeG5WAnPJUp4LhV4FmYKtnc5fl51KWJvfCamD2JfxH6I1+DrNiPeingX4v2IjyA+ifgc4suIbyC+i/gR4ueI3yD+iPgb4hbEFORTAbEyYjXEWoj1EBshNkNshdgOsRNiN8QsxB6IPRELEfsjDkAciDgIcTfEwYhDEIciDkMcjjgCcSTiKMTRiGMQxyKOQxyPOAFxIuIkxMmIUxCnIk5DnI44A3Em4izE2YhzEOciFiHOQyxGnI9YgliKuDviHogLEBci7om4CHEvxMWISxCXIsJ3/uxtyvvgM1uFXvkzW7Y++Pn5EsydSxH3trlibF9TXoZt9Sdt2Xpow45regTHejSxw2/p8Y51eyxPKy/bYgr5u+2j8Ael/0GbLbFDudtdkca3aEj5vSKNPUZlv9ae6m17uDy4JHk2VcKzocc/WQFWwfJ+Jtf2N3aAsQONHWTsYGOHGFtpbJWx1cYONXYYycvqiPDFKMHJLoPkWoTU0ckQjgqkXMjko8DkGoUFqxLxwwv4W82L/XEqpusWw7XSvdgjOIkXxulP4NoQyyWL915esrxk7PJ5ixYUD16+uHjZgiWLBxYtWkSTwV7EJkVqHCeD9WmkQypiOZ3U2f+rSDAS9KIQMdGZeAXf9t0HJwZ4iY8QCT8PZ1i97E/WJ2u7dXga/wwGxxHhdos3SEcIbLfWOL7dAr/XCGy3PHJI9mk0wSNZ28IDhO4DMcctS7Btn05OR2LOrSW5Z7cWKR75fiYSDxsn+Je/vG1jFSHlFHxN6g5eE9lOO3SLY//fbnGY+0RkuyY6+UawcyGAf+KF4Hxt2rYXTQlcO9EJ8EjGyfQo0pafn52VlZcNr8ufH/Vz5hdn5WdlzZ+XEy2OFhVnlRTk+AWlOVk52cXzi+eZNov80mhpUXFBaf7WtpK1kzhKaCdxdLiT4A3S0QI7iWMc30mA38cI7SS4ZcRa5Mrd7jrmAQqDENoM3jhIZY7dAYyyinOSXiu0a+KO+7EKZemxQovJceFiwhuk4wQWk+MdX0zA7+OVydLjFcrSA0NZGiNLT8CcWx/KUp2y9ISALF2fBFl6AuNkeqJCWXqi0E7ipHAnwRukkwR2Ehsc30mA3xuUyNL1yJW73ZMFZOnJSZClBzLKKs5Jer0SWXqKQll6itBicmq4mPAG6VSBxeQ0xxcT8Ps0ZbL0NIWy9KBQlsbI0tMx5zaGslSnLD09IEs3JkGWns44mZ6hUJaeIbSTODPcSfAG6UyBncRZju8kwO+zlMjSjciVu92zBWTp2UmQpQcxyirOSXqjEll6jkJZeo7QYnJuuJjwBulcgcXkPMcXE/D7PGWy9DyFsnRVKEtjZOn5mHObQlmqU5aeH5Clm5IgS89nnEwvUChLLxDaSVwY7iR4g3ShwE7iIsd3EuD3RUpk6Sbkyt3uxQKy9OIkyNJVjLKKc5LepESWXqJQll4itJhcGi4mvEG6VGAxuczxxQT8vkyZLL1MoSxdHcrSGFl6OebcFaEs1SlLLw/I0iuSIEsvZ5xMr1QoS68U2klcFe4keIN0lcBO4mrHdxLg99VKZOkVyJW73WsEZOk1SZClqxllFeckfYUSWXqtQll6rdBicl24mPAG6TqBxeR6xxcT8Pt6ZbL0eoWy9NBQlsbI0hsw5zaHslSnLL0hIEs3J0GW3sA4md6oUJbeKLSTuCncSfAG6SaBncTNju8kwO+blcjSzciVu91bBGTpLUmQpYcyyirOSXqz0K6Je2Hi/B75W9Pcnt9amjZuFRg7kYpuzxnwzc8SfqdUTE6ORxM7fMb4+CnCsY4mdpT9HoBErNMdz/H9hXK8gpIcZ4yPX8HxHG8olOMZjuf4YUI5XllJjjPGx6/seI5vwlh7vO2KcL1CEdfNSeSa8P7KkxnvVR3P/YOF5rlqSuY5xvj41RyP9SFCsa6ZpFg7pB19Tp8hHnDT1E6VsL+GH0Bci7gecSNiZWO3mfLtaVt/Pmkg6Stbb9u070YcjP97COJKxE2IVyBuRqxp7A5TvhOvMYhcw9bTgzun7lLyqMHdSnjek8afr/b+4l2YM3cj3oMI75Dda8r3YQ7tRnLI1kv6fL+S2DyghOeDgjl0P+bMA4gPkhx6yJQfxhwaTHLI1kv6/IiS2DyqhOdjgjn0CObMo4iPkRx63JSfwBwaQnLI1kv6/KSS2DylhOfTgjn0JObMU4hPkxx6xpSfxRwaSnLI1kv6/JyS2DyvhOcLgjn0HObM84gvkBx60ZRfwhwaRnLI1kv6/LKS2LyihOergjn0MubMK4ivkhx6zZRfxxwaTnLI1kv6/IaS2LyphOdbgjn0BubMm4hvkRx625TfwRwaQXLI1kv6/K6S2LynhOf7gjn0LubMe4jvkxz6wJQ/xBwaSXLI1kv6/JGS2HyshOcngjn0EebMx4ifkBz61JQ/wxwaRXLI1kv6/LmS2HyhhOeXgjn0OebMF4hfkhz6ypS/xhwaTXLI1kv6/I2S2HyrhOd3gjn0DebMt4jfkRz63pR/wBwaQ3LI1kv6/KOS2PykhOfPgjn0I+bMT4g/kxz6xZR/xRwaS3LI1kv6/JuS2PyuhOcfgjn0G+bM74h/kBz6E8qYQ+NIDtl6SZ//UhIb6BwNPCPpcjn0F+YM9AVgJL08h1JMOTV9aw6NJzlk6yV9TlMSm3QlPCsI5lAa5kw6YgWSQxVNuRLm0ASSQ7Ze0ucMJbGprIRnpmAOZWDOVEbMJDlUxZSrYg5NJDlk6yV9rqYkNtUFYmP7uRrGojpiJWM1TLkmxmQSea2tl/S1lpKY1BaMSS2MRW0SkzqmXBdjMpm81tZL+lpPSUzqC8akHsaiPolJA1NuiDGZQl5r6yV9baQkJo0FY9IIY9GYxKSJKTfFmEwlr7X1kr42UxKT5oIxaYaxaE5i0sKUW2JMppHX2npJX1spiUlrwZi0wli0JjFpY8ptMSbTyWttvaSv7ZTEpL1gTNphLNqTmHQw5Y4YkxnktbZe0tdOSmLSWTAmnTAWnUlMuphyV4zJTPJaWy/pazclMekuGJNuGIvuJCZRU/YxJrPIa229pK9ZSmKSLRiTLIxFNolJjinnYkxmk9faeklfeyiJSZ5gTHpgLPJITPJNuQBjMoe81tZL+tpTSUx6CcakJ8aiF4lJb1PugzGZS15r6yV97askJv0EY9IXY9GPxKTQlPtjTIrIa229pK8DlMRkoGBMBmAsBpKYDDLl3TAm88hrbb2kr4OVxGSIYEwGYyyGkJgMNeVhGJNi8lpbL+nrcCUxGSEYk+EYixEkJiNNeRTGZD55ra2X9HW0kpiMUcJzrBKe45TwHK+E5wQlPCcq4TlJCc/JSnhOUcJzqhKe05TwnK6E5wwlPGcq4TlLCc/ZSnjOUcJzrhKeRUp4zlPCs1gJz/lKeJYo4VmqhOfuSnjuoYTnAiU8FyrhuacSnouU8NxLCc/FSnguUcJzqRKeeyvhuY8Snvsq4blMCc/lSniuUMJzPyU891fC8wAlPA9UwvMgJTwPVsLzECU8VyrhuUoJz9VKeB6qhOdhAs/CTMH27sDvNjgMcTQ+EzMGcSziOMR78XUPIT6O+Azii4ivIb6N+AHip4hfIX6P+Avin4gpeL2KiFUQayDWQWyA2ASxBWIbxA6IXRCjiDmI+Yi9EQsRByEORRyJOB5xAuJExEmIkxGnIE5FnIY4HXEG4kzEWYizEecgzkUsQpyHWIw4H7EEsRRxd8Q9EBcgLkTcE3ER4l6IixGXIC5F3BtxH8R9EZchLkdcgbgf4v6IByAeiHgQ4sGIhyCuRFyFuBrxUMTDEDsbO9yUj0jf+sxWiVf+zJatD35+fj/MrdsQD8e2ahlbY8pHYlulpC1bTw/u8b02/V+3FQ205Sfrh6/XMs9J9jiK9LX9Cp4U8vfwh693ok0I0lHp/O0enc6X/FJ+H53OHqMdLvLRxI6YPo0meKR65QNFkvMlqTJ9m2DcfMG2t7kWnZyOwZxbR3IvAzHFK5/IKpB4/P0FQcb+8raNVYSUU/A1qTt4TWQ77WSQOvv/1QgXxj6JCkzOUdHJN4KdCwG8Cy8E5+vIoPRIEOi1E50Aj2GcTI/dwSSys20naydxrNBO4rhwJ8EbpOMEdhLHO76TAL+PF9pJcMuIdciVu93aQj85mZpgnwZ5cubSCXyTkl+b+ecrYRIDfv292CPR/gzypru7RGUp5yK3Ll0mH7nHzXqFsn690GJ8YrgY8wbpRIHF+CTHF2Pw+6QkLcbRxA4ffvtZgmuypH0ik2xp7FEch66ItJeIIVNbUTrZbcC8OPlf3iYYEMfn4G2CAd7/vk0Qr53/V7cJXE4Iu5PbkF4eGDg/OQk7O0Y//JMZF41T+CadUtufp5D+lMiHdQKKq25F2cUt0d0o+L1BwO96bvm9DT/w+2QBv+s7qrCDCznnvEFzPNH+a+Bo/wUOnzG/fcac8aX6j/tW+QbGteZUxjs80IbE2nJquswcxhlrifcU903j9/s0JXeNTlfCc6MSnmcw8gS9trtXfgcLcgriBX0B10nDvwcPpuv72+ujaGKHyPv43BzXCOUbe8KdyUhUOKHEgnVmuvscz+LmqGUlPFvJzH0O4w5N60A6R8FAOlfLzHweH9EsrQl1noKEOl9LQm3iI5qtNaE2KUioC7Qk1IVKluaLlPC8WAnPS5h5sj8ZYNo4VcDvphXd9vtc08b5An43S9IN60R5Xsq4BWeMtS/Vf9xxvkzJ/HO5Ep5XKOF5pRKeVynhebUSntco4XmtEp7XKeF5vRKeNyjhuVkJzxuV8LxJCc+blfC8RQnPW5XwvE0Jz9uV8LxDCc87lfC8SwnPu5XwvEcJz3uV8LxPCc/7lfB8QAnPB5XwfEgJz4eV8HxECc9HlfB8TAnPx5XwfEIJzyeV8HxKCc+nlfB8RgnPZ5XwfE4Jz+eV8HxBCc8XlfB8SQnPl5XwfEUJz1eV8HxNCc/XlfB8QwnPN5XwfEsJz7eV8HxHCc93lfB8TwnP95Xw/EAJzw+V8PxICc+PlfD8RAnPT5Xw/EwJz8+V8PxCCc8vlfD8SgnPr5Xw/EYJz2+V8PxOCc/vlfD8QQnPH5Xw/EkJz58d/xzcQSmeNzOV3++Wjn8OrpfxeYaA362UfA7uF8bPwTHG2m+lIG9mC+TNr47PE+D3XAG/f1Pg9zwBv3933O8VaZ53tsCX9bV1fHzDlwmeJeB3OyXrwh+M6wJjrP12CvLmXIG8+dPxeQL8Pl/A7y0K/L5AwO+/lOga+Pp8DTwjSnimKOGZqoRnmhKe6Up4VlDCs6IQz5QAz2hiR9nvc3L5XEmJzymMPmco8TmV0efKSnxOY/Q5U4nP6Yw+V1HicwVGn6sq8floRp+rKfH5QsYfqaiuxOeLGH2uocTnixl9rqnE50sYfa6lxOdLGX2urcTnyxh9rqPE58sZfa6rxOcrGH2up8TnKxl9rq/E56sYfW6gxOerGX1uqMTnaxh9bqTE52sZfW6sxOfrGH1uosTn6xl9bqrE5xsYfW6mxOfNjD43V+LzjYw+t1Di802MPrdU4vPNjD63UuLzLYw+t1bi862MPrdR4vNtjD63VeLz7Yw+t1Pi8x2MPrdX4vOdjD53UOLzXYw+d1Ti892MPndS4vM9jD53VuLzvYw+d1Hi832MPndV4vP9jD53U+LzA4w+d1fi84OMPkeV+PwQo8++Ep8fZvQ5S4nPjzD6nK3E50cZfc5R4vNjjD7nKvH5cUafeyjx+QlGn/OU+Pwko8/5Snx+itHnAiU+P83oc08lPj/D6HMvJT4/y+hzbyU+P8focx8lPj/P6HNfJT6/wOhzPyU+v8joc6ESn19i9Lm/Ep9fZvR5gBKfX2H0eaASn19l9HmQEp9fY/R5NyU+v87o82AlPr/B6PMQJT6/yejzUCU+v8Xo8zAlPr/N6PNwJT6/w+jzCCU+v8vo80glPr/H6PMoJT6/z+jzaCU+f8Do8xglPn/I6PNYJT5/xOjzOCU+f8zo83glPn/C6PMEJT5/yujzRCU+f8bo8yQlPn/O6PNkJT5/wejzFCU+f8no81QlPn/F6PM0JT5/zejzdCU+f8Po8wwlPn/L6PNMJT5/x+jzLCU+f8/o82wlPv/A6PMcJT7/yOjzXCU+/8Toc5ESn39m9HmeEp9/YfS5WInPvzL6PF+Jz78x+lyixOffGX0uVeLzH4w+767E5z8Zfd5Dic9bGH1eoMTnvxh9XqjEZ/rbHIn6vKeW79Nn9HmRlu/TZ/R5Ly3fp8/o82It36fP6PMSLd+nz+jzUi3fp8/o895KfK7I6PM+Wnz2+HzeV4nPlRh9XqbE5wxGn5cr8bkyo88rlPicyejzfkp8rsLo8/5KfK7K6PMBSnyuxujzgUp8rs7o80FKfK7B6PPBSnyuyejzIUp8rsXo80olPtdm9HmVEp/rMPq8WonPdRl9PpTR57rYTgR9ht+EhN9IhN8MhN/QAz0I+gj0AuyfYT8J+yvYb8D6C+sRzM8wX8H4hXyG+EK7o7DtesbqG2tgrKGxRsYaG2tirKmxZsaaG2thrKWxVsZaG2tjrK2xdsbaG+tgrKOxTsY6G+tirKuxbsa6Q18Y841lQR8byzGWa6yHsTxj+cYKjPU01stYb2N9jPU11g/j09/YAGMDjQ0ytpuxwcaGGBtqbJix4cZGGBuJPo42NsbYWGPjjI03NsHYRGOTjE02NsXYVGPTjE03NsPYTGOzjM02NsfYXGNFxuYZOxD7Dn4/FX5PFH5fE35vEn5/EX6PEH6fD36vDn6/DX7PDH7fC37vCn7/CX4PCX4fCH4vB34/Bn5PBX5fBH5vA35/An6PAX6fAL6vH76/Hr7PHb7fHL7vG77/Gr4PGr4fGb4vGL4/F75PFr5fFb5vFL5/E76PEr6fEb6vEL6/D77PDr7fDb7vDL7/C74PC74fCr4vCb4/CL5PB75fBr5vBb5/BL6PA76fouz7GozB5/nh8+3weW/4/DN8Hhg+HwufF4XPT8LnCeHzdfB5M/j8FXweCT6fA59Xgc9vwOcZ4Pl+eN4dnv+G56Hh+WB4XhaeH4XnKeH5QnjeDp4/g+ex4PkkeF4Hnl+B5zng+QZ4vx/e/4b3g+H9UXi/EN4/g/eT4P0VeL8B7r/D/Wi4Pwv3K+H+HdzPgvs7cL8D9D/oYdCHoJdAP8B+GvaXsN+C/Qesx7A+wXwN8xeMZ3v8H2p7eH+/aAYA", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ] diff --git a/yarn-project/aztec.js/src/abis/schnorr_auth_witness_account_contract.json b/yarn-project/aztec.js/src/abis/schnorr_auth_witness_account_contract.json index 8590b945486..c39c83865de 100644 --- a/yarn-project/aztec.js/src/abis/schnorr_auth_witness_account_contract.json +++ b/yarn-project/aztec.js/src/abis/schnorr_auth_witness_account_contract.json @@ -15,7 +15,268 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "_set_is_valid_storage", + "functionType": "open", + "isInternal": true, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "value", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "returnTypes": [ + { + "kind": "struct", + "path": "aztec::abi::PublicCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::abi::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "field" + } + }, + { + "name": "storage_contract_address", + "type": { + "kind": "field" + } + }, + { + "name": "portal_contract_address", + "type": { + "kind": "field" + } + }, + { + "name": "is_delegate_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_contract_deployment", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "return_values", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "contract_storage_update_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::abi::ContractStorageUpdateRequest", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "old_value", + "type": { + "kind": "field" + } + }, + { + "name": "new_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "contract_storage_read", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::abi::ContractStorageRead", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "public_call_stack", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_commitments", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_logs_hash", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_log_preimages_length", + "type": { + "kind": "field" + } + }, + { + "name": "block_data", + "type": { + "kind": "struct", + "path": "aztec::abi::HistoricBlockData", + "fields": [ + { + "name": "private_data_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "nullifier_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "contract_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "l1_to_l2_messages_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "blocks_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "public_data_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "global_variables_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "prover_address", + "type": { + "kind": "field" + } + } + ] + } + ], + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -80,7 +341,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -97,7 +358,285 @@ } ], "returnTypes": [], - "bytecode": "H4sIAAAAAAAA/+2dB5gUVRaFXw0ZFBAlSBIVI4auCcyMccCAESNGUBmYUTAiIGBCRcAAmHPOOa26usY1rnGNa1xzXuMaV93FfVduyeuiUaDPa+p88+r77neriuHVObfqva6/urrqxjJj3rMhU2RDZpvrfLLcIrXcUufdKVmu01yR619Z2VBd3hBXxMNz5bX1NVW5yqr6/jVxTVxVUzWyvKaioqGmsqa6tr62OlcbV1Y0xI1VtRWNuTlTV6etXJGTT53dSHQuS6KzO4nOHiQ6e5Lo7EWiszeJzuVIdPYh0bk8ic4VSHSuSKKzL4nOlUh0rkyicxUSnauS6FyNROfqJDr7kehcg0TnmiQ61yLRuTaJzhyJzphEZzmJzgoSnZUkOquAOkWbXGPso+11sTHbRlfN3TQvq7m75h6ae2rupbm35uU099G8vOYVNK+oua/mlTSvrHkVzatqXk3z6pr7aV5D85qa19K8tuac5lhzueYKzZWaq5z2+tuoNnOuxcqkl2x/W+9z39YYjmOwlkTnOiQ61yXRuR6JzvVJdG5AonNDEp11JDoHkOgcSKJzIxKdG5Po3IRE56YGfy7cUduT8z05J6zRXKt5Hc3ral5P8/qaN9C8oeY6zQM0D9S8keaNNW+ieVMz91x0kI3NzNz7ApJz0WR9MzPv/QGF6pwrboq74NrKNXd0bq55C9WcbGNLG1vZ2NrGYBvb2NjWxnY2trexg40dbQyxsZONnW3sYmNXG7vZ2N3GUBvDbOxhY08be9kYbqPexggbI2002Gi0sbeNfWyMsjHaxr429rOxv40DbBxo4yAbY2wcbGOsjXE2xts4xMYEGxNtTLJxqI3DbBxu4wgbR9qYbOMoG0fbOMbGFBvH2phqY5qN6TaOs3G8jRO0Bic6dTpXd2gbM/cYSKaWznyd5lyRk3vfCarNFqrfONk4fto422xm5vXb3FmX/HvCaO21Ds2hmisr3G0lU7q/1TnzyfZbqyaZ9m4YN2D8uH12HjXugIaxYyOnlaTljQq0nLhuaebu4TqIq1x5G6dyC+KqpZNbQ7VU5kRLq4XQ0trR0gaqZc5R3xbcprTRztGfeE20t3P+va3jrR1WRxyZ/F5Xl9KQbDf4h243+DfBf/Af/Af/wX/wH/wH/8F/8B/8B//Bf/Af/Af/wX/wH/wH/8F/8B/8B//Bf/Af/Af/wX/wH/zXBf/Bf/Af/Af/wX/wH/wH/8F/8B/8B//Bf/Af/Af/wX/wH/wH/8F/8B/8B//Bf/Af/Af/C+2/jbOuxWLW0s7R0MqblspcO1P4OAB7zrUpsB15WsawaO42lwR7kzY7gn2I3OTJHjJNdnx1dOrnY7sdUttdMrVd+ZslHA2THa3J/23m/M3EaO5+aHD2A3rfSxtLOdqT5564/T7xsJSjvxNWhzwE1CxdQEcnR0ey/aWddcm8OyZ0hmqrlAeT/vr01bS2zo6OZXQ++bs2znxHZ13XVC1lXbeUL1m3rM4v46wrK7CNREtXZ13ypJtuzrqkPkm7rVR3suzWL2mrTnOuuKnc1ZLocTXL1N2Zb5bS39bx3N3R2QOr89d+7Opo7Wy3h7PdntDtznnOTg+TP0Wp5TpnvqejpTdUy5waLOe0X+dsw91uH+x2Y3e7kUayjWR9M2d+llOgPnNnfzueE81y7PQq8HfufI/U/2nn/Hsvz557OzrqnOVkW9KXpzheexXQ7X52J//u9hMfY3VPR0ey/U7OcqLDHVfAx+qv9euVql+y7O7LFql64bXMOVdLb9s9r0rq5Z5Xpfs4rDBlqcaz/MjBPtrODBszbcyycZKNk22cYuNUG6fZON3GGTbOtHGWjbNtnGPjXBvn2TjfxgU2LrRxkY2LbVxi41Ibl9m43MYVNq60cZWNq21cY+NaG9dpkZLHOIqW1mbu8szU8qzU8kmp5ZNTy6eklk9NLZ+WWj49tXxGavnM1PJZqeWzU8vnpJbPTS2fl1o+P7V8QWr5wtTyRanli1PLl6SWL00tX5Zavjy1fEVq+crU8lWp5atTy9eklq9NLV9n5j68LpmSk5A6zbniprw+U+yjVWcA2xpbhoWJ+dVvUXU2NMqUi2eC2pJ9MQtYv3GZr9+vTccnFd9WuXqOTwbWb3yW61f5m874lOLayjme41OB9Tskq/Urz9MZn7bobeVSnuPTgfWbkMH69W+cR2d8xqK1VVPAc3wmsH4Ts1a/moI647MWvq3q+XiOzwbWb1KW6lc9X53xOQvXVvnveI7PBdbv0KzUr/p3dcbnLXhbI/7Ac3w+sH6HZaF+1X+oM75gwdrKLYDn+EJg/Q5f3PXLLZDO+KI/bqtqAT3HFwPrd8TirF/lAuuML/ndtiobF8JzfCmwfkcurvpVL5TO+LL5t1WzkJ7jy4H1m7wY6lfbuNA64ysKt5VbBM/xlcD6HVXq+uUWSWd81bxtxYvoOb4aWL+jS1m/kYusM74mv62KIjzH1wLrd0yJ6lfeWJTO+DqDu5boXrMrtn5TSlS/XHFTDLzOFo8H1u9YkvoBrxPFE4D1m0pSP+B1jngSsH7TSOoH5PT4MGD9ppPUD8iZ8RHA+h1HUj8gJ8WTgfU7nqR+wPP8+Ghg/U4gqR/wPDWeAqzfiST1A55nxVOB9ZtBUj/geUI8HVi/mST1A37OxccD6zeLpH7AcTo+EVi/k0jqBxxn4pnA+p1MUj9gP4mBx0yMrJ/c6Gqb++3mYbnmJNfa5NqdXLOUa6By7VeuJcs1dLkmf6mZc3/exWbOfXzy3Zh81ybfMcp3lvJdrXz3K995y3focu+A3Isg92DIPR1yL4vcGyP3BMk9RnJvldyrNcPkT+l7UIs97q5f9LbmuZ+kVK/qvh7XVs7Ve4Mzn/z4o8xZl/Sllh48mdR20nVsbzze6OxrJ93god0bDe7g9+X7Rvw+yhvUfdY0V+TUzMz7PnH8MVueA7Ydp1f40z3nRwXJdJPmm511yS8dykz+G9JlipzaygD1i/P/IidHThu/OP+n0N9E82nH/fVu8v+Td9AbbE1yHgbUnNcBM7njXXbgfWbuHfA3O9swzk5wt13sp+xNBjcA3mz8dEj0Wcothu8s5Rbj5yzlT858OEspss1btKDodm812T5LEd+34veR17OUW43/sxT0wFXEAOvzrGSxnfHcpvl2Z93CnPEMNPPuq/QZz0Dzx2c8hdoJZzzzn34747nNKaYs327mPeNB/eaqUCcq9tP/NqCu242fDogehG4zpRngi9X5Z6DO5ib/rMiktOaKnOZXg1xxU4ysgS+Ndxg/xxP8gLrT4AaOUmHDnbi28rDhL858wIYi27xTC4pu9y6TbWwQ33fh95FXbLgLqJMQG+ICcumw4W7N9zjrAjZg2iwJNtxt8rHhHsOFDXcDdd1j/HRu9CB0tynNAF+sznuBxysrNtxLoPE+4+d4gh9Q9xvcwFEqbLgf11YeNvzVmQ/YUGSb92tB0e0+YLKNDeL7Afw+8ooNDwB1EmJDeQG5dNjwoOaHnHUBGzBtlgQbHjT52PCQ4cKGB4G6HjJ+Ojd6EHrQlGaAL1bnwzid5azY8DCBxkeMn+MJfkA9anADR6mw4VFcW3nY8DdnPmBDkW0+qgVFt/uYyTY2iO/H8PvIKzY8BtRJiA0VBeTSYcPjmp9w1gVswLRZEmx43ORjwxOGCxseB+p6wvjp3OhB6HFTmgG+WJ1P4nRWsGLDkwQanzJ+jif4AfW0wQ0cpcKGp3Ft5WHD3535gA1Ftvm0FhTd7jMm29ggvp/B7yOv2PAMUCchNlQWkEuHDc9qfs5ZF7AB02ZJsOFZk48NzxkubHgWqOs546dzowehZ01pBvhidT6P01nJig3PE2h8wfg5nuAH1IsGN3CUChtexLWVhw3/cOYDNhTZ5otaUHS7L5lsY4P4fgm/j7xiw0tAnYTYUFVALh02vKz5FWddwAZMmyXBhpdNPja8Yriw4WWgrleMn86NHoReNqUZ4IvV+SpOZxUrNrxKoPE14+d4gh9QrxvcwFEqbHgd11YeNvzTmQ/YUGSbr2tB0e2+YbKNDeL7Dfw+8ooNbwB1EmJD/wJy6bDhTc1vOesCNmDaLAk2vGnyseEtw4UNbwJ1vWX8dG70IPSmKc0AX6zOt3E6+7Niw9sEGt8xfo4n+AH1rsENHKXChndxbeVhw3vOfMCGItt8VwuKbvd9k21sEN/v4/eRV2x4H6iTEBuqC8ilw4YPNH/orAvYgGmzJNjwgcnHhg8NFzZ8ANT1ofHTudGD0AemNAN8sTo/wumsZsWGjwg0fmz8HE/wA+oTgxs4SoUNn+DaysOGfznzARuKbPMTLSi63U9NtrFBfH+K30deseFToE5CbKgpIJcOGz7T/LmzLmADps2SYMNnJh8bPjdc2PAZUNfnxk/nRg9Cn5nSDPDF6vwCp7OGFRu+IND4pfFzPMEPqK8MbuAoFTZ8hWsrDxv+7cwHbCiyza+0oOh2vzbZxgbx/TV+H3nFhq+BOgmxobaAXDps+Ebzt866gA2YNkuCDd+YfGz41nBhwzdAXd8aP50bPQh9Y0ozwBer8zuczlpWbPiOQOP3xs/xBD+gfjC4gaNU2PADrq08bPiPMx+wocg2f9CCotv90WQbG8T3j/h95BUbfgTqJMSG4QXk0mHDT5p/dtYFbMC0WRJs+MnkY8PPhgsbfgLq+tn46dzoQegnU5oBvlid/8XpHM6KDf8l0Pg/4+d4gh9Qsw1u4CgVNszGtZWHDb848wEbimxzthYUXqgo29gw2+TvKVC7XrHBrWmuyIkQG+oLyKXDhkgLXOYcewEbMG2WBBtkB7rYUBZxYUMEHJjLIj+dGz0IRVFpBvhidTbD6axnxYZmUfY1Nvd0PMEPqBYRbuAoFTa0ABbX1dvSWQjYUGSbspNaRvh2W2UcG8R3KzJsaNW0sWFEAbl02NBaC9wmYAMnNrROYUMbMmxoDRyY20R+Ojd6EGpNgg1tcTpHsGJD2yj7GtuxYMMShNiwhCdsWDJgA3YnLekBG9pnHBvEd3sybGjftLFhZAG5dNjQQQvcMWADJzZ0SGFDRzJs6AAcmDtGfjo3ehDqQIINS+F0jmTFhqWi7GvsxIINSxNiw9KesGGZgA3YnbSMB2zonHFsEN+dybChc9PGhoYCcumwoYsWuGvABk5s6JLChq5k2NAFODB3jfx0bvQg1IUEG7rhdDawYkO3KPsal2XBhu6E2NDdEzb0CNiA3Uk9PGBDz4xjg/juSYYNPZs2NjQWkEuHDb20wL0DNnBiQ68UNvQmw4ZewIG5d+Snc6MHoV4k2LAcTmcjKzYsF2VfYx8WbFieEBuW94QNKwRswO6kFTxgw4oZxwbxvSIZNqzYpLEhRp7aLzZs6KsFXilgAyc29E1hw0pk2NAXODCvFPnp3OhBqC8JNqwM0xnnWLFh5Sj7GldhwYZVCbFhVU/YsFrABuxOWs0DNqyecWwQ36uTYcPqTRsb4gJy6bChnxZ4jYANnNjQL4UNa5BhQz/gwLxG5KdzowehfiTYsCYOG2JWbFgzyr7GtViwYW1CbFjbEzbkAjZgd1LOAzbEGccG8R2TYUPctLGhvIBcOmwo1wJXBGzgxIbyFDZUkGFDOXBgroj8dG70IFROgg2VOGwoZ8WGyij7GqtYsKE/ITb094QN1QEbsDup2gM21GQcG8R3DRk21DRtbKgoIJcOG2q1wOsEbODEhtoUNqxDhg21wIF5nchP50YPQrUk2LAuDhsqWLFh3Sj7GtdjwYb1CbFhfU/YsEHABuxO2sADNmyYcWwQ3xuSYcOGTRsbKgvIpcOGOi3wgIANnNhQl8KGAWTYUAccmAdEfjo3ehCqI8GGgThsqGTFhoFR9jVuxIINGxNiw8aesGGTgA3YnbSJB2zYNOPYIL43JcOGTZs2NlQVkEuHDYO0wJsFbODEhkEpbNiMDBsGAQfmzSI/nRs9CA0iwYbNcdhQxYoNm0fZ17gFCzZsSYgNW3rChq0CNmB30lYesGHrjGOD+N6aDBu2btrY0L+AXDpsGKwF3iZgAyc2DE5hwzZk2DAYODBvE/np3OhBaDAJNmyLw4b+rNiwbZR9jduxYMP2hNiwvSds2CFgA3Yn7eABG3bMODaI7x3JsGHHpo0N1QXk0mHDEC3wTgEbOLFhSAobdiLDhiHAgXmnyE/nRg9CQ0iwYWccNlSzYsPOUfY17sKCDbsSYsOunrBht4AN2J20mwds2D3j2CC+dyfDht2bNjbUFJBLhw1DtcDDAjZwYsPQFDYMI8OGocCBeVjkp3OjB6GhJNiwBw4balixYY8o+xr3ZMGGvQixYS9P2DA8YAN2Jw33gA31GccG8V1Phg31TRsbagvIpcOGEVrgkQEbOLFhRAobRpJhwwjgwDwy8tO50YPQCBJsaMBhQy0rNjRE2dfYyIINexNiw96esGGfgA3YnbSPB2wYlXFsEN+jyLBhVNPGhuEF5NJhw2gt8L4BGzixYXQKG/Ylw4bRwIF538hP50YPQqNJsGE/HDYMZ8WG/aLsa9yfBRsOIMSGAzxhw4EBG7A76UAP2HBQxrFBfB9Ehg0HNW1sqC8glw4bxmiBDw7YwIkNY1LYcDAZNowBDswHR346N3oQGkOCDWNx2FDPig1jo+xrHMeCDeMJsWG8J2w4JGADdicd4gEbJmQcG8T3BDJsmNC0sWFEAbl02DBRCzwpYAMnNkxMYcMkMmyYCByYJ0V+Ojd6EJpIgg2H4rBhBCs2HBplX+NhLNhwOCE2HO4JG44I2IDdSUd4wIYjM44N4vtIMmw4smljw8gCcumwYbIW+KiADZzYMDmFDUeRYcNk4MB8VOSnc6MHockk2HA0DhtGsmLD0VH2NR7Dgg1TCLFhiidsODZgA3YnHesBG6ZmHBvE91QybJjatLGhoYBcOmyYpgWeHrCBExumpbBhOhk2TAMOzNMjP50bPQhNI8GG43DY0MCKDcdF2dd4PAs2nECIDSd4woYTAzZgd9KJHrBhRsaxQXzPIMOGGU0bGxoLyKXDhpla4FkBGzixYWYKG2aRYcNM4MA8K/LTudGD0EwSbDgJhw2NrNhwUpR9jScjNYq4FjY2tzHbxhaakw1saaO1ja00b615sOZtNG+reTvN22veQfOOmodo3knzzpp30byr5t007655qOZhmvfQvKfmvTQP11yveYTmkZobNDdq3lvzPppHaR6teV/N+2neX/MBmg/UfJDmMZoP1jxW8zjN4zUfonmC5omaJ2k+VPNhmg/XfITmIzVP1nyU5qM1H6N5iuZjNU/VPE3zdM3HaT5e8wma+5g50x26fJ/mRzQ/pfkFza9pfkfzx5q/1Py95v9pbh7Nye00d9K8rOY+mlfRvJbmKs3rad5I8xaat9O8i+Y9NTdq3l/zOM2HaT5G8/GaT9Z8SuqjHd2pTwF+MIo2OcNJTgTSfftEzR1snGr/+LRozhggf58M2sl6dypLeS5WZxmwfqeSfMieDtDZUNN/eH1lo9eTljNI6nkmic6zSHSeTaLzHBKd55LoPI9E5/kkOi8g0Xkhic6LSHReTKLzEhKdl5LovIxE5+UkOq8g0Xklic6rSHReTaLzGhKd15LovI5E5/UkOm8g0Xkjic6bSHTeTKLzFhKdfyLReSuJzttIdN5OovPPJDrvINF5J4nOv5DovItE590kOu8h0Xkvic77SHTeT6LzryQ6HyDR+SCJzodIdD5MovMREp2Pkuj8G4nOx0h0Pk6i8wkSnU+S6HyKROfTJDr/TqLzGRKdz5LofI5E5/MkOl8g0fkiic5/kOh8iUTnyyQ6XyHR+SqJztdIdL5OovOfJDrfINH5JonOt0h0vk2i8x0Sne+S6HyPROf7JDo/INH5IYnOj0h0fkyi8xMSnf8i0fkpic7PSHR+TqLzCxKdX5Lo/IpE579JdH5NovMbEp3fkuj8jkTn9yQ6f/CksyylM1fc9OuDtlCe/0PiuQzo+UcSz82Ann8i8dwc6PlnEs8tgJ7/S+K5JdDz/0g8DwJ6nk3i2X2WULGefyHxfAbQs4hj8Hwm0HNE4vksoOcyEs9nAz03I/F8DtBzcxLP5wI9tyDxfB7Qc0sSz+cDPbci8XwB0HNrEs8XAj23IfF8EdBzWxLPFwM9tyPxfAnQ8xIkni8Fel6SxPNlQM/tSTxfDvTcgcTzFUDPHUk8Xwn0vBSJ56uAnjuReL4a6HlpEs/XAD0vQ+L5WqDnziSerwN67kLi+Xqg564knm8Aeu5G4vlGoOdlSTzfBPTcncTzzUDPPUg83wL03JPE85+AnnuReL4V6Lk3iefbgJ6XI/F8O9BzHxLPfwZ6Xp7E8x1AzyuQeL4T6HlFEs9/AXruS+L5LqDnlUg83w30vDKJ53uAnlch8Xwv0POqJJ7vA3pejcTz/UDPq5N4/ivQcz8Szw8APa9B4vlBoOc1STw/BPS8Fonnh4Ge1ybx/AjQc47E86NAzzGJ578BPZeTeH4M6LmCxPPjQM+VJJ6fAHquIvH8JNBzfxLPTwE9V5N4fhrouYbE89+BnmtJPD8D9LwOiedngZ7XJfH8HNDzeiSenwd6Xp/E8wtAzxuQeH4R6HlDEs//AHquI/H8EtDzABLPLwM9DyTx/ArQ80Yknl8Fet6YxPNrQM+bkHh+Heh5UxLP/wR6HkTi+Q2g581IPL8J9Lw5iee3gJ63IPH8NtDzliSe3wF63orE87tAz1uTeH4P6Hkwief3gZ63IfH8AdDztiSePwR63o7E80dAz9uTeP4Y6HkHEs+fAD3vSOL5X0DPQ0g8fwr0vBOJ58+Anncm8fw50PMuJJ6/AHrelcTzl0DPu5F4/groeXcSz/8Geh5K4vlroOdhJJ6/AXreg8Tzt0DPe5J4/g7oeS8Sz98DPQ8n8fwD0HM9iedWBud5BInn1kDPI0k8twF6biDx3BbouZHEczug571JPC8B9LwPieclgZ5HkXhuD/Q8msRzB6DnfUk8dwR63o/E81JAz/uTeO4E9HwAieelgZ4PJPG8DNDzQSSeOwM9jwF67qLtROpZ3gkp70iUdwbKO/SEB4WPhBfk/FnOJ+X8Ss435PNXPo9kfJbxSvqvHM+yf8VvF6eeh2qW94HK+zHlfZHy/kR5n6C8X0/eN/eLipD3c8n7quT9TfI+I3m/j7zvRt7/Iu9DkfeDyPsy5P0R8j4Feb+APG9fnj8vz2OX55PL87rl+dXyPGd5vrE871eefyvPg5Xno8rzQuX5mfI8SXm+ojxvUJ6/18eGPJ9Nnlcmz++S51nJ853keUfy/B95Ho48H0aelyLPD5HnacjzJeR5C/L8Afk9vvw+XX6vLb9flt/zyu9b5fee8vtH+T2g/D5Ofi8mv5+S3xPJ72vk9ya//v7ChtyfL/ery/3bcj+z3N8r97vK/Z9yP6TcHyj3y8n9Y3I/ldxfJPfbyP0ncj+G3J8g39fL99fyfa58vynf98n3X/J9kHw/It8XyPVzuZ4s11fleqNcf5PrUXJ9Rq5XCL8LzwrfCe/I+b+cD8v5oZwvyfmDfJ7K54uMtzL+SH8cUzZ3v/8fLjTx9DnoAgA=", + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "is_valid_public", + "functionType": "open", + "isInternal": false, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "returnTypes": [ + { + "kind": "struct", + "path": "aztec::abi::PublicCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::abi::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "field" + } + }, + { + "name": "storage_contract_address", + "type": { + "kind": "field" + } + }, + { + "name": "portal_contract_address", + "type": { + "kind": "field" + } + }, + { + "name": "is_delegate_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "is_contract_deployment", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "return_values", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "contract_storage_update_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::abi::ContractStorageUpdateRequest", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "old_value", + "type": { + "kind": "field" + } + }, + { + "name": "new_value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "contract_storage_read", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::abi::ContractStorageRead", + "fields": [ + { + "name": "storage_slot", + "type": { + "kind": "field" + } + }, + { + "name": "value", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "public_call_stack", + "type": { + "kind": "array", + "length": 4, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_commitments", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "field" + } + } + }, + { + "name": "new_l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_logs_hash", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "field" + } + } + }, + { + "name": "unencrypted_log_preimages_length", + "type": { + "kind": "field" + } + }, + { + "name": "block_data", + "type": { + "kind": "struct", + "path": "aztec::abi::HistoricBlockData", + "fields": [ + { + "name": "private_data_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "nullifier_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "contract_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "l1_to_l2_messages_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "blocks_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "public_data_tree_root", + "type": { + "kind": "field" + } + }, + { + "name": "global_variables_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "prover_address", + "type": { + "kind": "field" + } + } + ] + } + ], + "bytecode": "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", + "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" + }, + { + "name": "set_is_valid_storage", + "functionType": "secret", + "isInternal": false, + "parameters": [ + { + "name": "message_hash", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "value", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "returnTypes": [], + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ] diff --git a/yarn-project/aztec.js/src/abis/schnorr_single_key_account_contract.json b/yarn-project/aztec.js/src/abis/schnorr_single_key_account_contract.json index 9dc149b0d57..0c68b9d55c9 100644 --- a/yarn-project/aztec.js/src/abis/schnorr_single_key_account_contract.json +++ b/yarn-project/aztec.js/src/abis/schnorr_single_key_account_contract.json @@ -96,7 +96,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "H4sIAAAAAAAA/+1dB3gU1fedTaGpYKVXKYK0nSSQBESadBQQAZFmCAkiCNKlCUhXepHe7JWqgIoUFVAUFbGLigV774rC/z5z5sfLIyiw961z/8x83/3OvMnm7bll3ntndnZnT27HWUqmthBZDFkc9r12vNHOhf34rH/7+/VqK0hWiKwwWRHt/7y/FyUrRlacrAT+HqP9vSRZKbLSZGW09ytLlkdrlzPa5Y12BaN9kdGuaLQrGe2LjXZlo13FaFc12tWMdnWjHTbartFOMNqJRjvJaNcw2jWNdrLRTjHaqUa7ltGubbQvMdp1jPalRruu0a5ntOsb7QZGu6HRvsxoNzLajY12E6Pd1Gg3M9rNjXYLo93SaF9utK8w2q2Mdmuj3cZoX2m02xrtq4x2O6Pd3mh3MNpXG+2ORvsao93JaHc22l2Mdlej3c1oX2u004x2d7TV+BDrZNWL2tQ4oM59db6rc1yd1xWdrPNXnbPqPFXnpjof1Tmozjt1rqnzS51T6jxS5446X9Q5os4LdS6o+lc1r+pc1baqZ1XDdfHeqj5VTao6VLWn6k3VmKorVUuqflTNqDpRtaHqQdVAK+S6DXLaFrlrhxx1QC46IuadENsuiGE3xCoNMfHik27Eq4fRzjDamUa7p9G+zmj3MtrXG+3eRruP0b7BaPc12v2M9o1Gu7/RHmC0BxrtQUZ7sNEeYrSHGu2bjPYwoz3caI8w2iON9iijfbPRHm20xxjtsUb7FqM9zmiPN9oTjPZEoz3JaE822lOM9q1G+zajPdVoTzPa0432DKM902jPMtqzjfYcoz3XaM8z2rcb7flGe4HRXmi0FxntxUZ7idFearSXGe3lRnuF0V5ptO9wjo6Haq1Uz8na1Digzn11vqtzXJ3X1zlZ5686Z9V5qs5NdT6qc1Cdd+pcU+eXOqfUeaTOHXW+qHNEnRfqXFD1r2pe1bmqbVXPqoZV3Y5xsupT1aSqQ1V7qt5Ujam6UrWk6kfVjKoTVRuqHlQNzECuZyGnc5C7ecjRfORiIWK+GLFdihguR6xWIiYqPmotWhrxUOvPw07WGlRhYWARYFFgMWBxYAlgSWApYGlgGeCFwLLAcsDywArAi4AVgZWAFwMrA6sAqwKrAasDw0AXmABMBCYBa2j93UV2t5NVK9762tGOmzGrif9NBqYAU4G1gLWBlwDrAC8F1gXWA9YHNgA2BF4GbARsDGwCbApsBmwObAFsCbwceAWwFbA1sA3wSmBb4FXAdlrM7iG7F/HKpcXMO27GrD3+twPwamBH4DXATsDOwC7ArsBuwGuBacDuwHRgD2AGMBPYE3gdsBfwemBvYB/gDcC+wH7AG4H9gQOAA4GDgIO1mN1Hdj9illuLmXfcjNkQ/O9Q4E3AYcDhwBHAkcBRwJuBo4FjgGOBtwDHAccDJwAnAicBJwOnAG8F3gacCpwGnA6cAZwJnAWcDZwDnAucp8XsAbIHEbM8Wsy84/oWAtYDJoZrJiVlJCdkuIluWjghtXtKjXBSje41U9wUt0ZKjR4JKYmJGSlJKcmp3VOTw6luUmKGm1kjNTEznLU9pPUVjnCzyfNhITxXCeG5WgjPNUJ4rhXCc50QnuuF8HxECM9HhfDcIITnRiE8Nwnh+ZgQno8L4fmEEJ6bhfB8kpGnqYHUNQ6lBeYDFwAXAhcBFwOXAJcClwGXA1cAVwLvAN4JfAj4MHAVcDVwDXAtcB1wPfAR4KPADcCNwE3Ax4CPA58AbgY+6RzVQFvItjpZGiivc1QDecdt5nabI6MGtwvh+ZQQnk8L4fmMEJ47hPDcKYTnLiE8nxXC8zkhPHc7/GuNs9Gfut6v5tx7gPcBHwBuAW4Dbgc+BXwa+AxwB3AncBfwWeBzwN3O0bn+ebIXnKy5Pp9zdK73jnucz8LxaH1+o3AP2YvgdobGzTse4xzNd065D0e2uXv4+gqXRj8vkb1MtpfsFbJ9ZK+SvUb2OtkbZG+SvUX2Ntk7ZPvJ3iV7j+x9sgNkH5B9SPYR2cdkB8k+IfuU7DOyz8m+IPuS7Cuyr8m+QZC8zywVF/0zzJeN9l6j/YrR3me0XzXarxnt1432G0b7TaP9ltF+22i/Y7T3G+13jfZ7Rvt9o33AaH9gtD802h8Z7Y+N9kGj/YnR/tRof2a0PzfaXxjtL432V0b7a6P9Ddr6FgusBwxHtmU7ZyIde19i7OuRXHbmGzN+p8ozI1NtYfdlpr5ULvYyxu9R38fv767dVyLvKwE+u/sY47fBz/FL+h9P99XI+gprPruvMcZvo1/jl5CNp/v6qfcVNnx232CM3yYfxq9m5jE83TdPra+UHHx232KM32N+i19Kjjzdt0++r+Tj+Oy+wxi/x/0Uv+Tj8nT3n1xfCf/gs/suY/ye8Ev8kv+Rp/veifeV/i8+u+8zxm+zH+KX/K883QMn1lf4BHx2P2CM35P/dfzCJ8TT/fDf+6pxgj67HzHGb8t/Gb+kE+bpfvyPfSVlnoTP7kHG+G39r+KXfFI83U+O31fKSfrsfsoYv23/QfxSM0+ap/tZzn2FT8Fn93PG+G2PdvzCp8TT/eLYvtxT9Nn9kjF+T0Uzfj1Omaf7Vfa+EiPw2f2aMX5PRyl+CZkR8XS/cfiuJerX7CL+3DZK8QtHtrmM19ncDYzx2yEkfozXidxNjPHbKSR+jNc53McZ47dLSPwYdbq7mTF+zwqJH6POdLcwxu85IfFj1EnuNsb47RYSP8Z1vvsUY/yeFxI/xnWq+wxj/F4QEj/GdZa7kzF+e4TEj3Gd4D7LGL8XhcSPcZ5zdzPG7yUh8WMcp90XGOP3spD4MY4z7ouM8dsrJH6M54nLWDMuZ/zU/aBnOke/s6OuOalrberanbpmqa6Bqmu/6lqyuob+iZN1L576bEN9pqM+I1KfjR1wsu4BVJ9Zqs9q1We/6jNv9Rm6undA3Yug7sFQ93Soe1nUvTHqniB1j5G6t0rdq/WSk33jvv/421Pv65j7SWKd7PfLHo9zOLLN/Zavr7DO9ztt3/s9whjtmHcu5bLgk2O8jxnH/DkcY31zG0n6zkK/3zt8xW/L7+/5c/SPX0IIR7Zli2k4wi3WOXqi5LTxvE9CmLFv1zxgj3fY1QeUH4A/asfyAmOco4NPLmBIi60aoI5o/xfSMKT1cUT7n5xeEzpOP3m1Y97/59e4OHwxCVsYUMNWB0zvjneVwC3O0Tvgf9Tew9GSoL93pIPWD4x9/fQPMTnZvqM1+//k2Jn9f9b2g9k/wj5/QkC5+/3F8ffsr/z+hT9HOXKN1P8fwZW73+98KmVNnpy19Ctfrl3O+HkTk+JX38m+RTgxHSP/OCemH9nimWD167u/McYvWhPob46dCfR3bT+YQCPs8zcElLvfPxx/T6DK7z/4c2RVPv/ByPN48tnG5H+KnG3K5f9Mih8C/qkdOxkp3sA5NlemFG/g/LsUz6mfQIoff/ufFD+kBVO1/3SOleJcXwbO6SSKdPY/xMjrT8fOCcg9CB1yojPAR8rzL0aearA40zl2444D9yTHGQNbHA87duqJvaCOOHwDR7RkwxG+vrLJBp18IBsi7PMIOuXuNxTyt2xQfodC7DmyKhv0mIYj3ATKBjcHuuJkQwwCHKvVXiAbePqMimyICWWXDbEhWbIhhnFgjg3ZObm5B6GYUHQG+Eh5xvHxdKXKhriQ/znGW6on9oLKFeIbOKIlG3IxBlfnmzuQDbxJym1BNuTxuWxQfucRJhvynN6yISEHuuJkQ14EOF8gG2TKhryGbMgnTDbkZRyY84XsnNzcg1BeIbLhDD6eCVJlwxkh/3M8U4psOEugbDjLkmzIH8gG3iTltyAbCvhcNii/CwiTDQVOb9mQmANdcbLhbAT4nEA2yJQNZxuy4RxhsuFsxoH5nJCdk5t7EDpbiGw4l49nolTZcG7I/xzPkyIbzhcoG863JBsuCGQDb5IusCAbCvpcNii/CwqTDQVPb9mQlANdcbKhEAJcOJANMmVDIUM2FBYmGwoxDsyFQ3ZObu5BqJAQ2VCEj2eSVNlQJOR/jkWlyIZiAmVDMUuyoXggG3iTVNyCbCjhc9mg/C4hTDaUOL1lQ40c6IqTDSUR4FKBbJApG0oasqGUMNlQknFgLhWyc3JzD0IlhciG0nw8a0iVDaVD/udYRopsuFCgbLjQkmwoG8gG3iSVtSAbyvlcNii/ywmTDeVOb9lQMwe64mRDeQS4QiAbZMqG8oZsqCBMNpRnHJgrhOyc3NyDUHkhsuEiPp41pcqGi0L+51hRimyoJFA2VLIkGy4OZANvki62IBsq+1w2KL8rC5MNlU9v2ZCcA11xsqEKAlw1kA0yZUMVQzZUFSYbqjAOzFVDdk5u7kGoihDZUI2PZ7JU2VAt5H+O1aXIhrBA2RC2JBvcQDbwJsm1IBsSfC4blN8JwmRDwuktG1JyoCtONiQiwEmBbJApGxIN2ZAkTDYkMg7MSSE7Jzf3IJQoRDbU4OOZIlU21Aj5n2NNKbIhWaBsSLYkG1IC2cCbpBQLsiHV57JB+Z0qTDaknt6yITUHuuJkQy0EuHYgG2TKhlqGbKgtTDbUYhyYa4fsnNzcg1AtIbLhEj6eqVJlwyUh/3OsI0U2XCpQNlxqSTbUDWQDb5LqWpAN9XwuG/4uTmGyod7pLRvScqArTjbUR4AbBLJBpmyob8iGBsJkQ33GgblByM7JzT0I1RciGxry8UyTKhsahvzP8TIpsqGRQNnQyJJsaBzIBt4kNbYgG5r4XDYov5sIkw1NTm/Z0D0HuuJkQ1MEuFkgG2TKhqaGbGgmTDY0ZRyYm4XsnNzcg1BTIbKhOR/P7lJlQ/OQ/zm2kCIbWgqUDS0tyYbLA9nAm6TLLciGK3wuG5TfVwiTDVec3rIhPQe64mRDKwS4dSAbZMqGVoZsaC1MNrRiHJhbh+yc3NyDUCshsqENH890qbKhTcj/HK+UIhvaCpQNbS3JhqsC2cCbpKssyIZ2PpcNyu92wmRDu9NbNvTIga442dAeAe4QyAaZsqG9IRs6CJMN7RkH5g4hOyc39yDUXohsuJqPZw+psuHqkP85dpQiG64RKBuusSQbOgWygTdJnSzIhs4+lw3K787CZEPn01s2ZORAV5xs6IIAdw1kg0zZ0MWQDV2FyYYujANz15Cdk5t7EOoiRDZ04+OZIVU2dAv5n+O1UmRDmkDZkGZJNnQPZANvkrpbkA3pPpcNyu90YbIh/fSWDZk50BUnG3ogwBmBbJApG3oYsiFDmGzowTgwZ4TsnNzcg1APIbIhk49nplTZkBnyP8eeUmTDdQJlw3WWZEOvQDbwJqmXBdlwvc9lg/L7emGy4frTWja4nEv7/0w29EaA+wSyQaZs6G3Ihj7CZENvxoG5T8jOyc09CPUWIhtuYOPphqXKhhtC/ufYV4ps6CdQNvSzJBtuDGQDb5JutCAb+vtcNii/+wuTDf1Pb9ng5kBXnGwYgAAPDGSDTNkwwJANA4XJhgGMA/PAkJ2Tm3sQGiBENgzikw2uVNkwKOR/joOlyIYhAmXDEEuyYWggG3iTNNSCbLjJ57JB+X2TMNlw0+ktGxJyoCtONgxDgIcHskGmbBhmyIbhwmTDMMaBeXjIzsnNPQgNEyIbRvDJhgSpsmFEyP8cR0qRDaMEyoZRlmTDzYFs4E3SzRZkw2ifywbl92hhsmH06S0bEnOgK042jEGAxwayQaZsGGPIhrHCZMMYxoF5bMjOyc09CI0RIhtu4ZMNiVJlwy0h/3McJ0U2jBcoG8Zbkg0TAtnAm6QJFmTDRJ/LBuX3RGGyYeLpLRuScqArTjZMQoAnB7JBpmyYZMiGycJkwyTGgXlyyM7JzT0ITRIiG6bwyYYkqbJhSsj/HG+VIhtuEygbbrMkG6YGsoE3SVMtyIZpPpcNyu9pwmTDtNNbNtTIga442TAdAZ4RyAaZsmG6IRtmCJMN0xkH5hkhOyc39yA0XYhsmMknG2pIlQ0zQ/7nOEuKbJgtUDbMtiQb5gSygTdJcyzIhrk+lw3K77nCZMPc01s21MyBrjjZMA8Bvj2QDTJlwzxDNtwuTDbMYxyYbw/ZObm5B6F5QmTDfD7ZUFOqbJgf8j/HBVJkw0KBsmGhJdmwKJANvElaZEE2LPa5bFB+LxYmGxaf3rIhOQe64mTDEgR4aSAbZMqGJYZsWCpMNixhHJiXhuyc3NyD0BIhsmEZn2xIliobloX8z3G5FNmwQqBsWGFJNqwMZANvklZakA13+Fw2KL/vECYb7ji9ZUNKDnTFyYY7EeC7AtkgUzbcaciGu4TJhjsZB+a7QnZObu5B6E4hsuFuPtmQIlU23B3yP8d7pMiGewXKhnstyYb7AtnAm6T7LMiG+30uG5Tf9wuTDfef3rIhNQe64mTDAwjwg4FskCkbHjBkw4PCZMMDjAPzgyE7Jzf3IPSAENnwEJ9sSJUqGx4K+Z/jw1JkwyqBsmGVJdmwOpANvElabUE2rPG5bFB+rxEmG9ac3rIhLQe64mTDWgR4XSAbZMqGtYZsWCdMNqxlHJjXheyc3NyD0FohsmE9n2xIkyob1of8z/ERKbLhUYGy4VFLsmFDIBt4k7TBgmzY6HPZoPzeKEw2bDy9ZUP3HOiKkw2bEODHAtkgUzZsMmTDY8JkwybGgfmxkJ2Tm3sQ2iRENjzOJxu6S5UNj4f8z/EJKbJhs0DZsNmSbHgykA28SXrSgmzY4nPZoPzeIkw2bDm9ZUN6DnTFyYatCPC2QDbIlA1bDdmwTZhs2Mo4MG8L2Tm5uQehrUJkw3Y+2ZAuVTZsD/mf41NSZMPTAmXD05ZkwzOBbOBN0jMWZMMOn8sG5fcOYbJhx+ktG3rkQFecbNiJAO8KZINM2bDTkA27hMmGnYwD866QnZObexDaKUQ2PMsnG3pIlQ3PhvzP8TkpsmG3QNmw25JseD6QDbxJet6CbHjB57JB+f2CMNnwwuktGzJyoCtONuxBgF8MZINM2bDHkA0vCpMNexgH5hdDdk5u7kFojxDZ8BKfbMiQKhteCvmf48tSZMNegbJhryXZ8EogG3iT9IoF2bDP57JB+b1PmGzYd3rLhswc6IqTDa8iwK8FskGmbHjVkA2vCZMNrzIOzK+F7Jzc3IPQq0Jkw+t8siFTqmx4PeR/jm/Ykg3mwHHsPHVyW9nsTkfUWznGQv8hl50AHhO/cGRel3eO4XnKvVVgjN+P0Yxf+NS9vsjJkecp9VaRMX4/RTt+4VPzupJzXJ4n3dvFjPH7+b+IX/jkva7s/CPPk+qtCmP8fvmv4hc+Oa+rOv/K84R7q8YYv1//y/iFT9zr6s4J8Tyx3hjj99t/Hb/wiXntOifM8197S2CM3+9+iF/4371OdE6K5z/2lsQYvz/8Er/wP3tdwzlpnsftrSZj/A75KX7h43ud7JwSzxx7S2GM359+i184Z69TnVPmeUxvtRjj95cf4xc+1uvaTkQ8s/V2CWP8Dvs1fuHsXtdxIub5v94uZYzfET/HL3zU67oOC8+/e6vHGD8nt8/jF87yur7DxtNtwBi/kIT4kc+M19lc/ZpTpPGLERI/xutE7s+M8YsVEj/G6xzur4zxixMSP0ad7v7OGL94IfFj1JnuIcb45RISP0ad5P7FGL/cQuLHuM53jzDGL4+Q+DGuU119zRZp/PIKiR/jOsuNZYxfPiHxY1wnuPGM8TtDSPwY5zk3N2P8zhQSP8Zx2s3LGL+zhMSPcZxxz2CMX34h8WM8T9yzGONXIErxi5Tnm3w3irmMNeNGK36R3r/W0OG7f+0yxrxWi+b5G4HXjRy++9caM8averTHv1P0uonDd/9aU8b4hf+L+eMUvG7m8N2/1pwxfu5/Nf+epNctHL7711oyxi/hv1y/nITXlzv/yvOEe7uCMX6J//X67wS9buWcEM8T6q01Y/yS/LB+PgGv2zgnzPNfe7uSMX41/KI//sXrts5J8fzH3q5ijF9NP+m3f/C6nXPSPI/bW3vG+CX7Tf8ex+sOzinxzLG3qxnjl+LH6wc5eN3ROWWex/R2DWP8Uv16/cXwupMTEc9svXVmjF8tP1+/0rzu4kTM83+9dWWMX22/X/+D190cFp5/93YtY/wuEXL/WprDxvPvp79xxa+OkOvPjNfZ3OqM158vFRI/xutErssYv7pC4sd4ncNNZIxfPSHxY9Tpbg3G+NUXEj9GnekmM8avgZD4MeokN5Uxfg2FxI9xne/WZozfZULix7hOdeswxq+RkPgxrrPcuozxaywkfozrBLc+Y/yaCIkf4zznNmSMX1Mh8WMcp91GjPFrJiR+jOOM24Qxfs2FxI/xPHGbMcavhZD7195ivH+NsWZczvipH4eLJ1P36h0mfAvo9Z9OloesBzADmAnsCbwO2At4PbA3sA/wBmBfYD/gjcD+wAHAgcBBwMHAIcChwJuAw4DDgSOAI4GjgDcDRwPHAMcCbwGOA44HTgBOBE4CTgZOAd4KvA04FTgNOB04AzgTOAs4GzgHOBc4D3g7cD5wAXAhcBFwMXAJcClwGXA5cAVwJfAOYGknazuMdnwoC88EngcsCiwDrAisDqwJrAO8DNgCeCWwI/BaYE9gX+Bg4EjgOOCtwFnABcDlwHuADwMfAT4BfAr4HPBl4BvAt42fVuX+UcW3mX8x2tu4x8R3TvN7eiON3/7TZE7JpcXuHcwp+4F3OllYgOxdOvZeKGsOOss5+gvQ3nF9i2HORYzDF793mX+d/Jhfcnb4x5ySDm/Ove394BEFvEl6P8Tf7wGfP6JA+X3AwiMKTvSn/8ORbawnl02eRYXwLOjwD1YKx2D/A2p8SPYR2cdkB8k+IfuU7DOyz8m+IPuS7Cuyr8m+IfuW7Duy78l+IPuR7Ceyn8l+IfuV7Dey38n+IDtE9ifZX2oyJDuCn9IPkcWQxZLFkcWT5SLLTZaHLC9ZPrIzyM4kO4ssP1kBsrPJziE7l+w8svPJLiArSFaIrDBZEbKiZMXIipOVICtJVoqsNFkZsgvJypKVIytPVoHsIrKKZJXILiarTFaFrCpZNbLqZGomVc95SCBLJEsiq0FWkyyZLIUslawWWW2yS8jqkF1KVpesHll9sgZkDckuI2tE1pisCVlTsmZkzclakLUku5zsCrJWZK3J2pBdSdaW7CqydmTtyTqQXU3Wkewask5kncm6kHUl60Z2bczRui0AVI+DMCevvM6xj5bI62Sf3NQm5ZERatGVR/PDMfz1Hn+Ri/V9U8LqveKd7Js5KdfLIZ5/C07sp6f16dN6QK8haYMyGg/umz6oV7+++mntdT8GGJuDe+bxOC0UubEfrx3z/i+3hiGTfz1gpHPqAUahoJzI7wRjXTDWZR/rbNRtWkzkfWVkZm3REkI653CEm863uxbrQAhF2KdKkgood7/pMXzFb8vv9Bj2HFldrKcznlDREmwfhezEljlvCRb7zvasth5oZGgHT+ZZbUecY3MVcrI/q+2I8+/Pasupn+BZbcff/vesNpXAv5yjz2rLiDn2TWOM9450AOzBOJhman25KYkJCcmJ6nUpPcJuUo/0hJSEhB7dk8Lp4bT0hIzUJDc1MykhKTG9R3p36jPNzQxnpqWnZqZk9RWtlUSmpZVEz2AlwZuknhZWEtf5fCWh/L7O0kqCW0ZkgCt3v72YT1AVTtWnoarY7+X5iOFyvSerOAfpjBjeOvI27rxfL1CWXm9pMukdTCa8SeptYTLp4/PJRPndR5gs7SNQln4cyNJssvQGNPoGslSmLL3BkKV9oyBLb2AcTPsJlKX9LK0kbgxWErxJutHCSqK/z1cSyu/+QmRpX3Dl7neABVk6IAqy9GNGWco5SPcVIksHCpSlAy1NJoOCyYQ3SYMsTCaDfT6ZKL8HC5OlgwXK0oOBLM0mS4egMTSQpTJl6RBDlg6NgiwdwjiY3iRQlt5kaSUxLFhJ8CZpmIWVxHCfrySU38OFyNKh4Mrd7wgLsnREFGTpQUZZyjlIDxUiS0cKlKUjLU0mo4LJhDdJoyxMJjf7fDJRft8sTJbeLFCWfh7I0myydDQaYwJZKlOWjjZk6ZgoyNLRjIPpWIGydKyllcQtwUqCN0m3WFhJjPP5SkL5PU6ILB0Drtz9jrcgS8dHQZZ+zihLOQfpMUJk6QSBsnSCpclkYjCZ8CZpooXJZJLPJxPl9yRhsnSSQFn6RSBLs8nSyWhMCWSpTFk62ZClU6IgSyczDqa3CpSlt1paSdwWrCR4k3SbhZXEVJ+vJJTfU4XI0ingyt3vNAuydFoUZOkXjLKUc5CeIkSWThcoS6dbmkxmBJMJb5JmWJhMZvp8MlF+zxQmS2cKlKVfBrI0myydhcbsQJbKlKWzDFk6OwqydBbjYDpHoCydY2klMTdYSfAmaa6FlcQ8n68klN/zhMjS2eDK3e/tFmTp7VGQpV8yylLOQXq2EFk6X6AsnW9pMlkQTCa8SVpgYTJZ6PPJRPm9UJgsXShQll5raYBlzlvUZOkiNBYHslSmLF1kyNLFUZClixgH0yUCZekSSyuJpcFKgjdJSy2sJJb5fCWh/F4mRJYuBlfufpdbkKXLoyBLr2WUVZyD9GJLqybuielAiK+vFTH+Ht/UQwBXWDh3rs/t7zFDPWDKht+9c0enxsORbS5jftzelnMdjmz7+wGSNnLd1+c1/qGlGu8npMYZ8+P283mNF7RU4wN8XuNfWarxgUJqnDE/7kCf17haP66IORpLP3MdI4jrFEFcZ0eRa6RjiKJpY2wa4vPz9BNLY/JQIWMyY37coT7P9aeWcj08Srn2kc51OX1W+VAXeL0LwEoLHHayHrGnsC9wKDAf2UravyMm64nSBbRYece9Pr1PTj5Bn58CPwOOQZ9TgLOB55DdSft34T3O1t7DO26+x9X4347Aa4CdgJ2BXYBnkt1N+/fgPc7R3sM77r3Hjdp7q//9Cvy/Bn4D/Bb4HfB74A/AH4E/AX8G/gL8Ffgb8HfgH8BDwD+BfwEPA48AHfAMAWOAscA4YDwwFzA3MA8wr5dz4Ble7IBnAfMDCwDP9vIIPBd4HvB84AXAgsBCwMLAIsCiwGLA4sASwJLAUsDSwDLAC4FlgeWA5YEVgBcBKwIrAS8GVgZWAVYFVgNWB4aBLjABmAhMAtYA1gQmA1OAqcBawNrAS4B1gJcC6wLrAesDGwAbAi8DNgI2BjYBNgU2AzYHtgC2BF4OvALYCtga2AZ4JbAt8CpgO2B7YAfg3cCuwG5eHsjupf37cM6e6xw9Z73j3jnrXSv/AOfESvRxr1eTZPfT/gPo6zytL+94tD7gK+Xwjufe9mDM0f3gA74I+yyFgHL3+1AM3yLDlt8PxbDnKGq34HCeXDZ5FhPCs5DDP1gpHIP9h6nWVpGtJltDtpZsHdl6skfIHiXbQLaRbBPZY2SPkz1BtpnsSbItZFvJtpFtJ3uK7GmyZ8h2kO0k20X2LNlzZLvJnid7gWwP2YtkL5G9TLaX7BWyfWSvkr1G9jrZG2Rvkr1F9jbZO2T7yd4le4/sfbIDZB+QfUj2EdnHZAfJPiH7lOwzss/JviD7kuwrsq/JviH7luw7su/JfiD7kewnsp/JfiH7lew3st/J/iA7RPYn2V9qgiM7EpN1goXIYshiyeLI4slykeUmy0OWlywf2RlkZ5KdRZafrADZ2WTnkJ1Ldh7Z+WQXkBUkK0RWmKwIWVGyYmTFyUqQlSQrRVaarAzZhWRlycqRlSerQHYRWUWySmQXk1Umq6INCAWA6rYsc/LK6xx7i1de59gPzKXcuqUWIHk0PxzDX+82tFys75sSVu8V72TfzEm5Xg7xVFzPw356Wp8+rQf0GpI2KKPx4L7pg3r166uf1l73Y4CxObhnHo/TQpEb+/HaMe//cmsYMvnXA0Y6p+rzcziyzVVOnO8EY10w1mUf62zUbdVYvpt7oiWEdM7hCDedbzUt1oEQirBPlSQVUO5+q8fyFb8tv6vHsufI6mK9OuMJFS3BtjrGTmyZ8xa170yEEXRXC37wnQmePqPynQmVQP07E26s/e9MhBkH0wStLynfmUiwtJJIDFYSvElKtLCSSPL5SkL5nWRpJcEtI1xw5e63BvMJqk5C1ad+Mqotljl3+uokUlnFOUi7sbx15G3cea8pUJbWtDSZJAeTCW+Ski1MJik+n0yU3ynCZGmKQFm6JpCl2WRpKoJeK5ClMmVpqiFLa0VBlqYyDqa1BcrS2pZWEpcEKwneJF1iYSVRx+crCeV3HSGytBa4cvd7qQVZemkUZOkaRlnKOUjXEiJL6wqUpXUtTSb1gsmEOUkWJpP6Pp9MlN/1hcnS+gJl6dpAlmaTpQ0Q9IaBLJUpSxsYsrRhFGRpA8bB9DKBsvQySyuJRsFKgjdJjSysJBr7fCWh/G4sRJY2BFfufptYkKVNoiBL1zLKUs5BuqEQWdpUoCxtamkyaRZMJrxJamZhMmnu88lE+d1cmCxtLlCWPhrI0myytAWC3jKQpTJlaQtDlraMgixtwTiYXi5Qll5uaSVxRbCS4E3SFRZWEq18vpJQfrcSIktbgit3v60tyNLWUZCljzLKUs5BuqUQWdpGoCxtY2kyuTKYTHiTdKWFyaStzycT5XdbYbK0rUBZuiGQpdlk6VUIertAlsqUpVcZsrRdFGTpVYyDaXuBsrS9pZVEh2AlwZukDhZWElf7fCWh/L5aiCxtB67c/Xa0IEs7RkGWbmCUpZyDdDshsvQagbL0GkuTSadgMuFNUicLk0lnn08myu/OwmRpZ4GydGMgS7PJ0i4IetdAlsqUpV0MWdo1CrK0C+Ng2k2gLO1maSVxbbCS4E3StRZWEmk+X0kov9OEyNKu4Mrdb3cLsrR7FGTpRkZZyjlIdxUiS9MFytJ0S5NJj2Ay4U1SDwuTSYbPJxPld4YwWZohUJZWsTTAMuctarI0E0HvGchSmbI005ClPaMgSzMZB9PrBMrS6yytJHoFKwneJPWysJK43ucrCeX39UJkaU9w5e63twVZ2jsKsrQKo6ziHKR7Wlo1cU9MnA8e7BPr7/FNPQSwj4VzZ2Ruf48Z6gFTNvweJeQJ64z5cUf5/AnrxSzV+Bif1/gqSzU+VkiNM+bHHevzGi9kqcbH+7zGN1mq8QlCapwxP+4En9e4Wj/2iZImCUe2uS0FcW0niGvXKHKNdAxR57qNsWmyz8/TdZbG5ClCxmTG/LhTfJ7r9ZZyPTVKufaRznU5fVb5UBd4vQvASgscdrIesaewFrAhMB/ZDbTfNzbridIXaLHyjnt9ep+crEOf64GPAFuiz3bArsBzyPrR/o14j4Lae3jHzfcoh/8tD6wAvAhYEVgJeCZZf9ofgPcopL2Hd9x7jxu191b/uwn8HwM+DnwCuBn4JHALcCtwG3A78Cng08BngDuAO4G7gM8CnwPuBj4PfAG4B/gi8CXgy8C9wFeA+4CvAl8Dvg58A/gm8C3g28B3gPuB7wLfA74PPAD8APgh8CPgx8CDwE+AnwI/A34O/AL4JfAr4NfAb4DfAr8Dfg/8Afgj8Cfgz8BfgL8CfwP+DvwDeAj4J/Av4GHgEaCDOgoBY4CxwDhgPDAXMDcwDzCvd04Cz/BqG3gWMD+wAPBs7zwDngs8D3g+8AJgQWAhYGFgEWBRYDFgcWAJYElgKWBpYBnghcCywP7Ai4GVvTbZQNofhHO2sHP0nPWOe+est/R7GDG/AX0M9HwmG0z7Q9BXEa0v77i+cc9bQ0/9ennY6MuN1geRQy19EHlT8EEkb5JusvBB5DCffxCp/B5mSfB5m82YhiPcYp3o3NK0IsZObCPMm2ux72PeSx+chiPoI7TgB7c08fQZlVuaVAK3OEdvaRqhnZSOlgT9vSMdAIczDqYj/2EQOdm+o7WSGGlpJTEqWEnwJmmUhZXEzT5fSSi/bxZy6XgEuHL3O93SZbXYCGNq8uSspdF8g5I7nfkSnRrEFL/6TvYt0niavPXVXaSylHOSGxFrpx7Zb/UQKOvHWJqMxwaTMW+SxlqYjG/x+WSs/L4lSpNxOLLN7WOJa7SkfSSDbGb2LT0HulakvY0cMvUV1ge7cUjg+FO8TNAgB5/NywQNnH+/TJBTP/+vLhP4uSC8ldy42KOJUe3xUVjZcd5gPp5x0pjAN+hkevGcoMXTRj2MsKC4ZvrrBspjVqPK73EW/J7l8xtHld/jLfg926cK25zIOccNvcYjjd8cn8bP2FzG+nYZa8adI+TGqXGMc81ExlpWfdiYWybG2hnDOHNt4zPF+2P4/Z4k5KrRZCE8pwjheSsjT3VzUFHn6BUsVVMqXyoW6n3i8HdzY3p/93gxCke2Wfkcn5vjYEv1xl5wtzEStVxQ1pJ1W6z/OU7l5ihlJpwmZOSezrhCk3oiTRdwIs2QMjLP5COaILWgZgooqFlSCmo2H9FEqQU1W0BBzeHkGK2P4kvz9ZXto/i5wUfxvEmaa+Gj+Hk+/yhe+T1P8MfbpR0nKmvgcGSbW1wIz8IO/2Cl8Ezs305FMZ9sAdlCskVki8mWkC0lW0a2nGwF2UqtgAoA1cfa5mCX1zn2I/K8zrE/tSblo291dSqP5odj+Ot9jJ+L933T1XvFO9k3cxCvl0M8Fdci2M/o239wxuCM1oO79+mV3nhw3/RBvfr1bZjWp49eDN6beEURm4OT5vE4LSC5sR+vHfP+L7eGx71/INKReB6jolVOFHMiP0Ns+HkHw+wV7d9ovyOWfwRT253Bcos3SXdaWG7d5fPllvL7Lkt3PnqbzZiGI9yitSxcYOvKAy/PqP1G+90I+j2neKdi8IXG429R+UKjSqD+G+33xB77ptx3adzNOJjeq/Ul5Tfa77W0krgvWEnwJuk+CyuJ+32+klB+329pJcEtI+4BV+5+H7BwG7fq07xwwH374AJGWcU5SN8j5APlBwXK0gctTSYPBZMJb5IesjCZPOzzyUT5/bAwWfqwQFm6MJCl2WTpKgR9dSBLZcrSVYYsXR0FWbqKcTBdI1CWrrG0klgbrCR4k7TWwkpinc9XEsrvdUJk6Wpw5e53vQVZuj4KsnQho6ziHKRXC5GljwiUpY9YmkweDSYT3iQ9amEy2eDzyUT5vUGYLN0gUJYuCmRpNlm6EUHfFMhSmbJ0oyFLN0VBlm5kHEwfEyhLH7O0kng8WEnwJulxCyuJJ3y+klB+PyFElm4CV+5+N1uQpZujIEsXMcoqzkF6kxBZ+qRAWfqkpclkSzCZ8CZpi4XJZKvPJxPl91ZhsnSrQFm6LJCl2WTpNgR9eyBLZcrSbYYs3R4FWbqNcTB9SqAsfcrSSuLpYCXBm6SnLawknvH5SkL5/YwQWbodXLn73WFBlu6IgixdxiirOAfp7UJk6U6BsnSnpclkVzCZ8CZpl4XJ5FmfTybK72eFydJnBcrS5YEszSZLn0PQdweyVKYsfc6QpbujIEufYxxMnxcoS5+3tJJ4IVhJ8CbpBQsriT0+X0kov/cIkaW7wZW73xctyNIXoyBLlzPKKs5BercQWfqSQFn6kqXJ5OVgMuFN0ssWJpO9Pp9MlN97hcnSvQJl6YpAlmaTpa8g6PsCWSpTlr5iyNJ9UZClrzAOpq8KlKWvWlpJvBasJHiT9JqFlcTrPl9JKL9fFyJL94Erd79vWJClb0RBlq5glFWcg/Q+S6sm7omJ83fk34z19/hWmvp408K5s8DnT6VVv/xsw++FUXoqaDiyzWXMj7vQcq7DkW1/Pw/ARq6X+LzG51uq8aVCapwxP+5Sn9d4YUs1vsLnNb7SUo2vFFLjjPlxV/q8xrcj1w5vv1a47hbEdV8UuUZ6Xqrzx8b5fpfPa3+xpXHubiHjHGN+3Lt9nusllnJ9X5Ry7SPt6HL6rPKhLpp6F1XV+vqwk/V8AIWrgZuA+cjeov23Y7Men1Rci5V33OvT+zRiMf53CXApcDtwN3Af8Byyd2h/P96jhPYe3nF9466pd4XcavCeEJ7vx/LXq1cC76Jm3gO+D1SfkB2g/Q9QQyW1GvKO2/T5QyG5+UgIz48t1tCHqJmPgB9rNXSQ9j9BDZXSasg7btPnT4Xk5jMhPD+3WEOfomY+A36u1dAXtP8laqi0VkPecZs+fyUkN18L4fmNxRr6CjXzNfAbrYa+pf3vUENltBryjtv0+XshuflBCM8fLdbQ96iZH4A/ajX0E+3/jBq6UKsh77hNn38RkptfhfD8zWIN/YKa+RX4m1ZDv9P+H6ihsloNecdt+nxISG7+FMLzL4s1dAg18yfwL62GDtP+EdRQOa2GvOM2fVYXOiTkJiSEZ0ycvRpSuVI1EwLGxB2toVjaj4vLqqHyWg15x236HC8kN7mE8MxtsYbiUTO5gLm1GspD+3lRQxW0GvKO2/Q5n5DcnCGE55kWaygfauYM4JlaDZ1F+/lRQxdpNeQdt+lzASG5OVsIz3Ms1lAB1MzZwHO0GjqX9s9DDVXUasg7btPn84Xk5gIhPAtarKHzUTMXAAtqNVSI9gujhippNeQdt+lzESG5KSqEZzGLNVQENVMUWEyroeK0XwI1dLFWQ95xmz6XFJKbUkJ4lrZYQyVRM6WApbUaKkP7F6KGKms15B236XNZIbkpJ4RneYs1VBY1Uw5YXquhCrR/EWqoilZD3nGbPlcUkptKQnhebLGGKqJmKgEv1mqoMu1XQQ1V1WrIO27T56pCclPNQm68OFdFLqoB85BVp/0wclJNe6133KavrpCcJFjMiYtcJGg5SaT9JOSkuvZa77hNX2sIyUlNizmpgVzU1HKSTPspyElYe6133KavqUJyUstiTlKRi1paTmrT/iXIiau91jtu09c6QnJyqcWc1EEuLtVyUle9H3KSoL3WO27T1/pCctLAYk7qIxcNtJw0pP3LkJNE7bXecZu+NhKSk8YWc9IIuWis5aQJ7TdFTpK013rHbfraTEhOmlvMSTPkormWkxa03xI5qaG91jtu09fLheTkCos5uRy5uELLSSvab42c1NRe6x236WsbITm50mJO2iAXV2o5aUv7VyEnydprveM2fW0nJCftLeakHXLRXstJB9q/GjlJ0V7rHbfpa0chObnGYk46IhfXaDnpRPudkZNU7bXecZu+dhGSk64Wc9IFueiq5aQb7V+LnNTSXusdt+lrmpCcdLeYkzTkoruWk3Ta74Gc1NZe6x236WuGkJxkWsxJBnKRqeWkJ+1fh5xcor3WO27T115CcnK9xZz0Qi6u13LSm/b7ICd1tNd6x236eoOQnPQVwrOfEJ43CuHZXwjPAUJ4DhTCc5AQnoOF8BwihOdQITxvEsJzmBCew4XwHCGE50ghPEcJ4XmzEJ6jhfAcI4TnWCE8bxHCc5wQnuOF8JwghOdEITwnCeE5WQjPKUJ43iqE521CeE4VwnOaEJ7ThfCcIYTnTCE8ZwnhOVsIzzlCeM4VwnOeEJ63C+E5XwjPBUJ4LhTCc5EQnouF8FwihOdSITyXCeG5XAjPFUJ4rrRwL0wH9PcOfqdwJfAG3BPTF9gPeCPwAF53EPgF8FvgT8DfgYeBsd69NsCzgOcCCwGLA8sAKwArA6sDE4HJwNrAusCGwCbAFsBWwLbADsBOwG7AdGBPYG9gf+AA4EDgIOBg4BDgUOBNwGHA4cARwJHAUcCbgaOBY4BjgbcAxwHHAycAJwInAScDpwBvBd4GnAqcBpwOnAGcCZwFnA2cA5wLnAe8HTgfuAC4ELgIuBi4BLgUuAy4HLgCuNKrB7I7aP/OuKx7ti51jt6z5R03vz9/O2rxLeAdXg2S3UX7d6Ovulpf3nHVh3de65t5rocj29wyDu+57m33xB3d93ZjtL97MQoeKH0CfZZBQLn7vTeOb9Kw5fe9cew5+vtp7bHOsZufTy6bPEsI4VnE4R+sFJ6J/fuo1u4ne4DsQbKHyB4mW0W2mmwN2VqydWTrtbosAFQ/jGIOdn//mK4Rj7zOsQ/0zqXt12Py0cLgGlYTVh7ND8fwN7+T/eFUTO+brt4r3sm+mYN4vRziqbgWwX5G3/6DMwZntB7cvU+v9MaD+6YP6tWvb8O0Pn30YvDexCuK2BycNI/HaQHJjf147Zj3f7k1DJle1ANGOhLfy7d8d+PBK9IzxIafjzDMXt4j66O13Hokjn8EU9ujwXKLN0mPWlhubfD5ckv5vcHCcsvRNpsxDUe4RWtZ+ECcndgy5y3BYt+uPjhtRM1t0mrPW1rEOEcHslxaPrw8qX854hybq5C2H4PXxP7Da0LH6Udf4nj/7y1xmGNiZblmdfANIbgqgX/hjVR7U9yxbxpjvHekA+BGxsH0Ma0vNyUxISE5Ub0upUfYTeqRnpCSkNCje1I4PZyWnpCRmuSmZiYlJCWm90jvTn2muZnhzLT01MyUrL6itZJ4zNJK4vFgJcGbpMctrCSe8PlKQvn9hKWVBLeM2ASu3P1uZj5B1Umo+jQvHMQy5+4BRlnFOUhvsrRq4s77kwJl6ZOWJpMtwWTCm6QtFiaTrT6fTJTfW4XJ0q0CZemDgSzNJku3oea2B7JUpizdZsjS7VGQpdsYB9OnBMrSpyytJJ4OVhK8SXrawkriGZ+vJJTfzwiRpdvBlbvfHRZk6Y4oyNIHGWUV5yC9XYgs3SlQlu60NJnsCiYT3iTtsjCZPOvzyUT5/awwWfqsQFn6UCBLs8nS51BzuwNZKlOWPmfI0t1RkKXPMQ6mzwuUpc9bWkm8EKwkeJP0goWVxB6frySU33uEyNLd4Mrd74sWZOmLUZClDzHKKs5BercQWfqSQFn6kqXJ5OVgMuFN0ssWJpO9Pp9MlN97hcnSvQJl6ZpAlmaTpa+g5vYFslSmLH3FkKX7oiBLX2EcTF8VKEtftbSSeC1YSfAm6TULK4nXfb6SUH6/LkSW7gNX7n7fsCBL34iCLF3DKKs4B+l9QmTpmwJl6ZuWJpO3gsmEN0lvWZhM3vb5ZKL8fluYLH1boCxdG8jSbLL0HdTc/kCWypSl7xiydH8UZOk7jIPpuwJl6buWVhLvBSsJ3iS9Z2El8b7PVxLK7/eFyNL94Mrd7wELsvRAFGTpWkZZxTlI7xciSz8QKEs/sDSZfBhMJrxJ+tDCZPKRzycT5fdHwmTpRwJl6bpAlmaTpR+j5g4GslSmLP3YkKUHoyBLP2YcTD8RKEs/sbSS+DRYSfAm6VMLK4nPfL6SUH5/JkSWHgRX7n4/tyBLP4+CLF3HKKs4B+mDllZN3BMT5+/IfxHn7/GtDPXxhYVz54Hc/h4z1C8/2/D7wdzRqfFwZJvLmB/3Qcu5Dke2/f08ABu5XuXzGr/fUo2vFlLjjPlxV/u8xotYqvF1Pq/x9ZZqfL2QGmfMj7ve5zW+D7l2ePu1wnW/IK4Ho8g10vNSnT82zvcNPq/9hy2NcxuFjHOM+XE3+jzXqyzl+vEo5dpH2tHl9FnlQ1009YZKtb5WD0DcBNwO3A3MR/Yl7X8Vl/X4pPparLzjXp/epxEP439XAVcD9wH3Aw8CzyH7mva/wXs00N7DO65v3DX1rZBbDb4TwvP7OP569a4vfoua+Q74PVB9QvYD7f+IGmqo1ZB33KbPPwnJzc9CeP5isYZ+Qs38DPxFq6Ffaf831NBlWg15x236/LuQ3PwhhOchizX0O2rmD+AhrYb+VB9Eo4YaaTXkHbfp82EhuTkihKdKoq0aOoyaOQJU7+XVUIj2Y+KzaqixVkPecZs+x8bLyE2cEJ7xFmsoFjUTB4zXaigX7edGDTXRasg7btPnPEJyk1cIz3wWayiPVzPAfFoNnUH7Z6KGmmo15B236fNZQnKTXwjPAhZr6CzUTH5gAa2Gzqb9c1BDzbQa8o7b9PlcIbk5TwjP8y3W0LmomfOA52s1dAHtF0QNNddqyDtu0+dCQnJTWAjPIhZrqBBqpjCwiFZDRWm/GGqohVZD3nGbPhcXkpsSQniWtFhDxVEzJYAltRoqRfulUUMttRryjtv0uYyQ3FwohGdZizVUBjVzIbCsVkPlaL88auhyrYa84zZ9riAkNxcJ4VnRYg1VQM1cBKyo1VAl2r8YNXSFVkPecZs+VxaSmypCeFa1WEOVUTNVgFW1GqpG+9VRQ620GvKO2/Q5LCQ3rhCeCRZrKIyacYEJWg0l0n4Saqi1VkPecZs+1xCSm5pCeCZbrKEaqJmawGSthlJoPxU11EarIe+4TZ9rCclNbSE8L7FYQ7VQM7WBl2g1VIf2L0UNXanVkHfcps91heSmnoXceHGui1zUA+Yhq0/7DZCTttprveM2fW0oJCeXWcxJQ+TiMi0njWi/MXJylfZa77hNX5sIyUlTizlpglw01XLSjPabIyfttNd6x2362kJITlpazEkL5KKllpPLaf8K5KS99lrvuE1fWwnJSWuLOWmFXLTWctKG9q9ETjpor/WO2/S1rZCcXGUxJ22Ri6u0nLSj/fbIydXaa73jNn3tICQnV1vMSQfk4motJx1p/xrkpKP2Wu+4TV87CclJZ4s56YRcdNZy0oX2uyIn12iv9Y7b9LWbkJxcazEn3ZCLa7WcpNF+d+Skk/Za77hNX9OF5KSHxZykIxc9tJxk0H4mctJZe6133KavPYXk5DqLOemJXFyn5aQX7V+PnHTRXusdt+lrbyE56WMxJ72Riz5aTm6g/b7ISVfttd5xm772E5KTGy3mpB9ycaOWk/60PwA56aa91jtu09eBQnIyyGJOBiIXg7ScDKb9IcjJtdprveM2fR0qJCc3WczJUOTiJi0nw2h/OHKSpr3WO27T1xFCcjLSYk5GIBcjtZyMov2bkZPu2mu94zZ9HS0kJ2OE8BwrhOctQniOE8JzvBCeE4TwnCiE5yQhPCcL4TlFCM9bhfC8TQjPqUJ4ThPCc7oQnjOE8JwphOcsITxnC+E5RwjPuUJ4zhPC83YhPOcL4blACM+FQnguEsJzsRCeS4TwXCqE5zIhPJcL4blCCM+VQnjeIYTnnUJ43iWE591CeN4jhOe9QnjeJ4Tn/UJ4PiCE54NCeD4khOfDQniuEsJztRCea4TwXCuE5zohPNdbuBemA/r7Gr+9ux44GvfEjAGOBd4C/AGv+xX4JzCEv+cCngE8G3gBsCiwFLAcsBKwGjARmAKsA6wPbARsBrwc2AbYDtgR2AWYBswA9gLeAOwPHAwcBhwFHAccD5wAnAicBJwMnAK8FXgbcCpwGnA6cAZwJnAWcDZwDnAucB7wduB84ALgQuAi4GLgEuBS4DLgcuAK4ErgHcA7gXcB7wbeA7wXeB/wfuADwAeBDwEfBq4CrgauAa4FrgOuB1Yme4T2H43Pumcr3Tl6z5Z33Pz+/H2o1S+Bj6Cvc8k20P5G9NVD68s7rm/c5/em+FPuK2z05UbrwdebmMckb3tMi3Xw4OsI+1RJeiyev9/H4/mK35bfj8ez5+gfJ/lwZFu2mIYj3GKdoyeKTc5vxtqJbYR5cy32fcx76YPTE6i5zVrt5QXGONoP0Gv58PKkBrsjzrG5Cmn7MXhN7D+8JnScfvJqx7z/z69xYYxJ2MLgHLY6+IYQXJXALXgj1d6snZSOlgT9vSMdAJ9gHEyf/IdB5GT7jtZK4klLK4ktwUqCN0lbLKwktvp8JaH83mppJcEtIzaDK3u/lh45GRthTE2enLW0jW9QcjczP75SDWKKX30n+xZpPE3e+uouUlnKOcltjrdTj9znzXaBsn67pcn4qWAy5k3SUxYm46d9Phkrv5+O0mQcjmxz1bOfbXCNlrSPZJDNzL6l50DXirS3kUOmvsL6YPcM6mLHKV4maJCDz+ZlggbOv18myKmf/1eXCfxcEN5K7pn4o4lR7R1RWNkx+uHuYJw0dvINOplePHdq8bRRD5stKK4tue1ObpGuRpXfz1jwe6u//D6Gn/J7hwW/t/lUYZsTOee4odd4xErLp/EzNpexvl3GmnFtxY/7UvkzjHPNLsYrPKoPG3PLrng7Yxhnrm18pnhXHL/fzwq5avScEJ67hfB8npGn0msZztErWKqmVL5ULNT7xOHv5sb0/u7xYhSObLPyOT43xw2W6o294F5gJGq5oKwl64V4/3Pcw81Rykz4opCR+yXGFZrUE+klASfSy1JG5r18RBOkFtReAQX1ipSC2sdHNFFqQe0TUFCvSimo14RMza8L4fmGEJ5vCuH5lhCebwvh+Y4QnvuF8HxXCM/3hPB8XwjPA0J4fiCE54dCeH4khOfHQngeFMLzEyE8PxXC8zMhPD8XwvMLITy/FMLzKyE8vxbC8xshPL8VwvM7ITy/F8LzByE8fxTC8ychPH8WwvMXITx/FcLzNyE8fxfC8w8hPA8J4fmnEJ5/CeF5WAjPI0J4qq9nSeAZEsIzRgjPWCE844TwjBfCM5cQnrmF8MwjhGdeITzzCeF5hhCeZwrheZYQnvmF8CwghOfZQnieI4TnuUJ4nieE5/lCeF4ghGdBITwLCeFZWAjPIkJ4FhXCs5gQnsWF8CwhhGdJITxLCeFZWgjPMkJ4XiiEZ1khPMsJ4VleCM8KQnheJIRnRWae3F/geyjGcabF8vu9M7e//e5DPk+14PeuKP1gVqQ8K/HVpcuYa3eXgLqZYaFuLvb5OKH8nmXB78oC/J5jwe8qPvf73jjHedHCj6Tt9vn5rX7EbY8Fv58XMi9UZZwXGHPtPi+gbl62UDfVfD5OKL9fseB3dQF+v2rB77AQXeMK4ZkghGeiEJ5JQnjWEMKzphCeyUJ4pljiGWPwDEe2/f1cRC6fU4X4HMPocy0hPscy+lxbiM9xjD5fIsTneEaf6wjxORejz5cK8fl5Rp/rCvH5NcaHA9QT4vPrjD7XF+LzG4w+NxDi85uMPjcU4vNbjD5fJsTntxl9biTE53cYfW4sxOf9jD43EeLzu4w+NxXi83uMPjcT4vP7jD43F+LzAUafWwjx+QNGn1sK8flDRp8vF+LzR4w+XyHE548ZfW4lxOeDjD63FuLzJ4w+txHi86eMPl8pxOfPGH1uK8Tnzxl9vkqIz18w+txOiM9fMvrcXojPXzH63EGIz18z+ny1EJ+/YfS5oxCfv2X0+RohPn/H6HMnIT5/z+hzZyE+/8DocxchPv/I6HNXIT7/xOhzNyE+/8zo87VCfP6F0ec0IT7/yuhzdyE+/8boc7oQn39n9LmHEJ//YPQ5Q4jPhxh9zhTi85+MPvcU4vNfjD5fJ8Tnw4w+9xLi8xFGn68X4rP++9+R+txbyncTGH3uI+W7CYw+3yDluwmMPveV8t0ERp/7SfluAqPPN0r5bgKjz/2F+Jyb0ecBQnzOw+jzQCE+52X0eZAQn/Mx+jxYiM9nMPo8RIjPZzL6PFSIz2cx+nyTEJ/zM/o8TIjPBRh9Hi7E57MZfR4hxOdzGH0eKcTncxl9HiXE5/MYfb5ZiM/nM/o8WojPFzD6PEaIzwUZfR4rxOdCjD7fIsTnwow+jxPicxFGn8cL8bkoo88ThPhcjNHniUJ8Ls7o8yQhPpdg9HmyEJ9LMvo8RYjPpRh9vlWIz6UZfb5NiM9lGH2eKsTnCxl9nibE57KMPk8X4nM5Rp9nCPG5PKPPM4X4XIHR51lCfL6I0efZQnyuyOjzHCE+V2L0ea4Qny9m9HmeEJ8rM/p8uxCfqzD6PF+Iz1UZfV4gxOdqjD4vFOJzdUafFwnxOczo82IhPruMPi8R4nMCo89LhficyOjzMiE+JzH6vFyIzzUYfV4hxOeajD6vFOJzMqPPdwjxOYXR5zul3Kfv8Pl8l5T79Bl9vlvKffqMPt8j5T59Rp/vlXKfPqPP90m5T5/R5/ul3KfP6PMDUu7TZ/T5QSn36TP6/JCU+/QZfX5Yyn36jD6vknKfPqPPq6Xcp8/o8xop9+kz+rxWyn36jD6vY/T5AvQTgs/qmZDqGYnqmYH0No7Sg0ofKb2g1s9qPanWV2q9oeZfNR+p8VmNV+r8VfWs8qv6nY6+C5IVIitMVoSsKFkxsuJkJchKkpUiK01WhuxCsrJk5cjKk1Ugu4isIlklsovJKpNVIatKVo2suooFmUuWoGJMlkRWg6wmWTJZClkqWS2y2mSXkNUhu5SsLvJTn6wBWUOyy8gakTUma0LWlKwZWXOyFmQtyS4nu4KsFVlrsjZkV5K1JbuKrB1Ze7IOZFeTdSS7hqwTWWeyLmRdybqRXUuWRtadLJ2sB1kGWSZZT7LryHqRXU/Wm6wP2Q1kfcn6kd1I1p9sANlAskFkg8mGkA0lu4lsGNlwshFkI8lGkd1MNppsDNlYslvIxpGNJ5tANpFsEtlksilkt5LdRjaVbJqTlecZZDPJZpHNJptDNpdsHtntZPPJFpAtJFtEtphsCdlSsmVky8lWkK0ku4PsTvBUm3qGrHqmqnrGqHrmpnoGpXom49/PKCRTz7BTz3RTzzhTz/xSz8BSz4RSz0hSzwxSz9BRz5RRz1hRzxxRz+BQz6RQz2hQzyxQv+GvftNe/ca7+s1z9Rvg6jex1W9Eq99MVr8hrH5TV/3GrPrNVfUbpOo3OdVvVKrfbFS/Yah+00/9xp36zTf1G2jqN8HUb2Sp34xSv6GkflNI/caO+s0Z9Rss6jdJ1G90qN+sUL/hoH7TQH3HX33nXX0HXH0nWn1HWH1nVn2HVH2nUn3HUH3nTn0HTX0nS31HSX1nR32HRX2nQ33HQd3zr+6BV/eEq3uk1T3D6h5adU+pusdS3XOo7sFT96Spe7TUPUvqHh51T4u6x0Pd86DuAVCfiavPiNVnpuozRPWZmvqMSX3moj6DUNfk1TVqdc1WXcNU1/TUNS51zUddA1HXBJRGVppRaSilKdQaW6051RpMrUnUHK3mLDWGqzHN2/4PNAIETckXBgA=", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ] diff --git a/yarn-project/aztec.js/src/account/entrypoint/auth_witness_account_entrypoint.ts b/yarn-project/aztec.js/src/account/entrypoint/auth_witness_account_entrypoint.ts index e8067d57585..4ba3dc80993 100644 --- a/yarn-project/aztec.js/src/account/entrypoint/auth_witness_account_entrypoint.ts +++ b/yarn-project/aztec.js/src/account/entrypoint/auth_witness_account_entrypoint.ts @@ -9,13 +9,50 @@ import { DEFAULT_CHAIN_ID, DEFAULT_VERSION } from '../../utils/defaults.js'; import { buildPayload, hashPayload } from './entrypoint_payload.js'; import { Entrypoint } from './index.js'; +/** + * An extended interface for entrypoints that support signing and adding auth witnesses. + */ +export interface IAuthWitnessAccountEntrypoint extends Entrypoint { + /** + * Sign a message hash with the private key. + * @param message - The message hash to sign. + * @returns The signature as a Buffer. + */ + sign(message: Buffer): Buffer; + + /** + * Creates an AuthWitness witness for the given message. In this case, witness is the public key, the signature + * and the partial address, to be used for verification. + * @param message - The message hash to sign. + * @param opts - Options. + * @returns [publicKey, signature, partialAddress] as Fr[]. + */ + createAuthWitness(message: Buffer): Promise; + + /** + * Returns the transaction request and the auth witness for the given function calls. + * Returning the witness here as a nonce is generated in the buildPayload action. + * @param executions - The function calls to execute + * @param opts - The options + * @returns The TxRequest, the auth witness to insert in db and the message signed + */ + createTxExecutionRequestWithWitness(executions: FunctionCall[]): Promise<{ + /** The transaction request */ + txRequest: TxExecutionRequest; + /** The auth witness */ + witness: Fr[]; + /** The message signed */ + message: Buffer; + }>; +} + /** * Account contract implementation that uses a single key for signing and encryption. This public key is not * stored in the contract, but rather verified against the contract address. Note that this approach is not * secure and should not be used in real use cases. * The entrypoint is extended to support signing and creating eip1271-like witnesses. */ -export class AuthWitnessAccountEntrypoint implements Entrypoint { +export class AuthWitnessAccountEntrypoint implements IAuthWitnessAccountEntrypoint { constructor( private address: AztecAddress, private partialAddress: PartialAddress, @@ -25,21 +62,10 @@ export class AuthWitnessAccountEntrypoint implements Entrypoint { private version: number = DEFAULT_VERSION, ) {} - /** - * Sign a message hash with the private key. - * @param message - The message hash to sign. - * @returns The signature as a Buffer. - */ public sign(message: Buffer): Buffer { return this.signer.constructSignature(message, this.privateKey).toBuffer(); } - /** - * Creates an AuthWitness witness for the given message. In this case, witness is the public key, the signature - * and the partial address, to be used for verification. - * @param message - The message hash to sign. - * @returns [publicKey, signature, partialAddress] as Fr[]. - */ async createAuthWitness(message: Buffer): Promise { const signature = this.sign(message); const publicKey = await generatePublicKey(this.privateKey); diff --git a/yarn-project/aztec.js/src/aztec_rpc_client/wallet.ts b/yarn-project/aztec.js/src/aztec_rpc_client/wallet.ts index 83f49162064..40e22a4640b 100644 --- a/yarn-project/aztec.js/src/aztec_rpc_client/wallet.ts +++ b/yarn-project/aztec.js/src/aztec_rpc_client/wallet.ts @@ -16,7 +16,7 @@ import { TxReceipt, } from '@aztec/types'; -import { AuthWitnessAccountEntrypoint, Entrypoint } from '../account/entrypoint/index.js'; +import { Entrypoint, IAuthWitnessAccountEntrypoint } from '../account/entrypoint/index.js'; import { CompleteAddress } from '../index.js'; /** @@ -121,7 +121,7 @@ export class EntrypointWallet extends BaseWallet { * to provide authentication data to the contract during execution. */ export class AuthWitnessEntrypointWallet extends BaseWallet { - constructor(rpc: AztecRPC, protected accountImpl: AuthWitnessAccountEntrypoint) { + constructor(rpc: AztecRPC, protected accountImpl: IAuthWitnessAccountEntrypoint, protected address: CompleteAddress) { super(rpc); } @@ -151,12 +151,33 @@ export class AuthWitnessEntrypointWallet extends BaseWallet { * This is useful for signing messages that are not directly part of the transaction payload, such as * approvals . * @param messageHash - The message hash to sign + * @param opts - The options. */ async signAndAddAuthWitness(messageHash: Buffer): Promise { const witness = await this.accountImpl.createAuthWitness(messageHash); await this.rpc.addAuthWitness(Fr.fromBuffer(messageHash), witness); return Promise.resolve(); } + + /** + * Signs the `messageHash` and adds the witness to the RPC. + * This is useful for signing messages that are not directly part of the transaction payload, such as + * approvals . + * @param messageHash - The message hash to sign + */ + async signAndGetAuthWitness(messageHash: Buffer): Promise { + return await this.accountImpl.createAuthWitness(messageHash); + } + + /** Returns the complete address of the account that implements this wallet. */ + public getCompleteAddress() { + return this.address; + } + + /** Returns the address of the account that implements this wallet. */ + public getAddress() { + return this.address.address; + } } /** diff --git a/yarn-project/circuits.js/src/crs/index.ts b/yarn-project/circuits.js/src/crs/index.ts index 2f1af8aa764..f91cb772686 100644 --- a/yarn-project/circuits.js/src/crs/index.ts +++ b/yarn-project/circuits.js/src/crs/index.ts @@ -145,7 +145,7 @@ export class Crs { */ const SRS_DEV_PATH = dirname(fileURLToPath(import.meta.url)) + - '/../../../../circuits/cpp/barretenberg/cpp/srs_db/ignition/monomial/transcript00.dat'; + '/../../../../barretenberg/cpp/srs_db/ignition/monomial/transcript00.dat'; this.crs = existsSync(SRS_DEV_PATH) ? new FileCrs(numPoints, SRS_DEV_PATH) : new NetCrs(numPoints); } else { this.crs = new NetCrs(numPoints); diff --git a/yarn-project/circuits.js/src/structs/aggregation_object.ts b/yarn-project/circuits.js/src/structs/aggregation_object.ts index e4dd278e344..c00dd2795e0 100644 --- a/yarn-project/circuits.js/src/structs/aggregation_object.ts +++ b/yarn-project/circuits.js/src/structs/aggregation_object.ts @@ -10,7 +10,7 @@ import { G1AffineElement } from './verification_key.js'; /** * Contains the aggregated proof of all the previous kernel iterations. * - * See circuits/cpp/barretenberg/cpp/src/barretenberg/stdlib/recursion/aggregation_state/native_aggregation_state.hpp + * See barretenberg/cpp/src/barretenberg/stdlib/recursion/aggregation_state/native_aggregation_state.hpp * for more context. */ export class AggregationObject { diff --git a/yarn-project/cli/src/index.ts b/yarn-project/cli/src/index.ts index de7f1876c76..b1ac8bb4c7c 100644 --- a/yarn-project/cli/src/index.ts +++ b/yarn-project/cli/src/index.ts @@ -9,7 +9,7 @@ import { getSchnorrAccount, isContractDeployed, } from '@aztec/aztec.js'; -import { StructType } from '@aztec/foundation/abi'; +import { StructType, decodeFunctionSignatureWithParameterNames } from '@aztec/foundation/abi'; import { JsonStringify } from '@aztec/foundation/json-rpc'; import { DebugLogger, LogFn } from '@aztec/foundation/log'; import { fileURLToPath } from '@aztec/foundation/url'; @@ -485,6 +485,27 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command { Object.entries(info).map(([key, value]) => log(`${startCase(key)}: ${value}`)); }); + program + .command('inspect-contract') + .description('Shows list of external callable functions for a contract') + .argument( + '', + `A compiled Noir contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts`, + ) + .action(async (contractAbiFile: string) => { + const contractAbi = await getContractAbi(contractAbiFile, debugLogger); + const contractFns = contractAbi.functions.filter( + f => !f.isInternal && f.name !== 'compute_note_hash_and_nullifier', + ); + if (contractFns.length === 0) { + log(`No external functions found for contract ${contractAbi.name}`); + } + for (const fn of contractFns) { + const signature = decodeFunctionSignatureWithParameterNames(fn.name, fn.parameters); + log(`${fn.functionType} ${signature}`); + } + }); + compileContract(program, 'compile', log); generateTypescriptInterface(program, 'generate-typescript', log); generateNoirInterface(program, 'generate-noir-interface', log); diff --git a/yarn-project/end-to-end/scripts/cond_run_script b/yarn-project/end-to-end/scripts/cond_run_script.delme similarity index 100% rename from yarn-project/end-to-end/scripts/cond_run_script rename to yarn-project/end-to-end/scripts/cond_run_script.delme diff --git a/yarn-project/end-to-end/src/cli_docs_sandbox.test.ts b/yarn-project/end-to-end/src/cli_docs_sandbox.test.ts index c77869a4c5e..204e163fa53 100644 --- a/yarn-project/end-to-end/src/cli_docs_sandbox.test.ts +++ b/yarn-project/end-to-end/src/cli_docs_sandbox.test.ts @@ -104,6 +104,7 @@ SchnorrAuthWitnessAccountContractAbi SchnorrHardcodedAccountContractAbi SchnorrSingleKeyAccountContractAbi TestContractAbi +TokenContractAbi UniswapContractAbi // docs:end:example-contracts `; diff --git a/yarn-project/end-to-end/src/e2e_account_contracts.test.ts b/yarn-project/end-to-end/src/e2e_account_contracts.test.ts index 760afc1637d..43283fc8d2e 100644 --- a/yarn-project/end-to-end/src/e2e_account_contracts.test.ts +++ b/yarn-project/end-to-end/src/e2e_account_contracts.test.ts @@ -128,7 +128,7 @@ describe('e2e_account_contracts', () => { await tx.wait(); } const entryPoint = (await account.getEntrypoint()) as unknown as AuthWitnessAccountEntrypoint; - const wallet = new AuthWitnessEntrypointWallet(rpc, entryPoint); + const wallet = new AuthWitnessEntrypointWallet(rpc, entryPoint, await account.getCompleteAddress()); return { account, wallet }; }, ); diff --git a/yarn-project/end-to-end/src/e2e_lending_contract.test.ts b/yarn-project/end-to-end/src/e2e_lending_contract.test.ts index 0f6d538290b..efc5b8843d4 100644 --- a/yarn-project/end-to-end/src/e2e_lending_contract.test.ts +++ b/yarn-project/end-to-end/src/e2e_lending_contract.test.ts @@ -3,11 +3,11 @@ import { AztecRPCServer } from '@aztec/aztec-rpc'; import { Account, AuthWitnessAccountContract, - AuthWitnessAccountEntrypoint, AuthWitnessEntrypointWallet, AztecAddress, CheatCodes, Fr, + IAuthWitnessAccountEntrypoint, computeMessageSecretHash, } from '@aztec/aztec.js'; import { CircuitsWasm, CompleteAddress, FunctionSelector, GeneratorIndex, GrumpkinScalar } from '@aztec/circuits.js'; @@ -82,15 +82,18 @@ describe('e2e_lending_contract', () => { beforeEach(async () => { ({ aztecNode, aztecRpcServer, logger, cheatCodes: cc } = await setup(0)); - const privateKey = GrumpkinScalar.random(); - const account = new Account(aztecRpcServer, privateKey, new AuthWitnessAccountContract(privateKey)); - const entryPoint = (await account.getEntrypoint()) as unknown as AuthWitnessAccountEntrypoint; - - const deployTx = await account.deploy(); - await deployTx.wait({ interval: 0.1 }); - - wallet = new AuthWitnessEntrypointWallet(aztecRpcServer, entryPoint); - accounts = await wallet.getAccounts(); + { + const privateKey = GrumpkinScalar.random(); + const account = new Account(aztecRpcServer, privateKey, new AuthWitnessAccountContract(privateKey)); + const deployTx = await account.deploy(); + await deployTx.wait({ interval: 0.1 }); + wallet = new AuthWitnessEntrypointWallet( + aztecRpcServer, + (await account.getEntrypoint()) as unknown as IAuthWitnessAccountEntrypoint, + await account.getCompleteAddress(), + ); + accounts = await wallet.getAccounts(); + } }, 100_000); afterEach(async () => { diff --git a/yarn-project/end-to-end/src/e2e_token_contract.test.ts b/yarn-project/end-to-end/src/e2e_token_contract.test.ts new file mode 100644 index 00000000000..649a53cdee6 --- /dev/null +++ b/yarn-project/end-to-end/src/e2e_token_contract.test.ts @@ -0,0 +1,1391 @@ +import { AztecNodeService } from '@aztec/aztec-node'; +import { AztecRPCServer } from '@aztec/aztec-rpc'; +import { + Account, + AuthWitnessAccountContract, + AuthWitnessEntrypointWallet, + AztecAddress, + IAuthWitnessAccountEntrypoint, + computeMessageSecretHash, +} from '@aztec/aztec.js'; +import { + CircuitsWasm, + CompleteAddress, + Fr, + FunctionSelector, + GeneratorIndex, + GrumpkinScalar, +} from '@aztec/circuits.js'; +import { pedersenPlookupCompressWithHashIndex } from '@aztec/circuits.js/barretenberg'; +import { DebugLogger } from '@aztec/foundation/log'; +import { SchnorrAuthWitnessAccountContract, TokenContract } from '@aztec/noir-contracts/types'; +import { AztecRPC, TxStatus } from '@aztec/types'; + +import { jest } from '@jest/globals'; + +import { setup } from './fixtures/utils.js'; + +const hashPayload = async (payload: Fr[]) => { + return pedersenPlookupCompressWithHashIndex( + await CircuitsWasm.get(), + payload.map(fr => fr.toBuffer()), + GeneratorIndex.SIGNATURE_PAYLOAD, + ); +}; + +const TIMEOUT = 60_000; + +class TokenSimulator { + private balancesPrivate: Map = new Map(); + private balancePublic: Map = new Map(); + public totalSupply: bigint = 0n; + + constructor(protected token: TokenContract, protected logger: DebugLogger, protected accounts: CompleteAddress[]) {} + + public mintPrivate(to: AztecAddress, amount: bigint) { + this.totalSupply += amount; + } + + public mintPublic(to: AztecAddress, amount: bigint) { + this.totalSupply += amount; + const value = this.balancePublic.get(to) || 0n; + this.balancePublic.set(to, value + amount); + } + + public transferPublic(from: AztecAddress, to: AztecAddress, amount: bigint) { + const fromBalance = this.balancePublic.get(from) || 0n; + this.balancePublic.set(from, fromBalance - amount); + expect(fromBalance).toBeGreaterThanOrEqual(amount); + + const toBalance = this.balancePublic.get(to) || 0n; + this.balancePublic.set(to, toBalance + amount); + } + + public transferPrivate(from: AztecAddress, to: AztecAddress, amount: bigint) { + const fromBalance = this.balancesPrivate.get(from) || 0n; + expect(fromBalance).toBeGreaterThanOrEqual(amount); + this.balancesPrivate.set(from, fromBalance - amount); + + const toBalance = this.balancesPrivate.get(to) || 0n; + this.balancesPrivate.set(to, toBalance + amount); + } + + public shield(from: AztecAddress, amount: bigint) { + const fromBalance = this.balancePublic.get(from) || 0n; + expect(fromBalance).toBeGreaterThanOrEqual(amount); + this.balancePublic.set(from, fromBalance - amount); + } + + public redeemShield(to: AztecAddress, amount: bigint) { + const toBalance = this.balancesPrivate.get(to) || 0n; + this.balancesPrivate.set(to, toBalance + amount); + } + + public unshield(from: AztecAddress, to: AztecAddress, amount: bigint) { + const fromBalance = this.balancesPrivate.get(from) || 0n; + const toBalance = this.balancePublic.get(to) || 0n; + expect(fromBalance).toBeGreaterThanOrEqual(amount); + this.balancesPrivate.set(from, fromBalance - amount); + this.balancePublic.set(to, toBalance + amount); + } + + public burnPrivate(from: AztecAddress, amount: bigint) { + const fromBalance = this.balancesPrivate.get(from) || 0n; + expect(fromBalance).toBeGreaterThanOrEqual(amount); + this.balancesPrivate.set(from, fromBalance - amount); + + this.totalSupply -= amount; + } + + public burnPublic(from: AztecAddress, amount: bigint) { + const fromBalance = this.balancePublic.get(from) || 0n; + expect(fromBalance).toBeGreaterThanOrEqual(amount); + this.balancePublic.set(from, fromBalance - amount); + + this.totalSupply -= amount; + } + + public balanceOfPublic(address: AztecAddress) { + return this.balancePublic.get(address) || 0n; + } + + public balanceOfPrivate(address: AztecAddress) { + return this.balancesPrivate.get(address) || 0n; + } + + public async check() { + expect(await this.token.methods.total_supply().view()).toEqual(this.totalSupply); + + // Check that all our public matches + for (const { address } of this.accounts) { + expect(await this.token.methods.balance_of_public({ address }).view()).toEqual(this.balanceOfPublic(address)); + expect(await this.token.methods.balance_of_private({ address }).view()).toEqual(this.balanceOfPrivate(address)); + } + } +} + +describe('e2e_token_contract', () => { + jest.setTimeout(TIMEOUT); + + let aztecNode: AztecNodeService | undefined; + let aztecRpcServer: AztecRPC; + let wallets: AuthWitnessEntrypointWallet[]; + let accounts: CompleteAddress[]; + let logger: DebugLogger; + + let asset: TokenContract; + + let tokenSim: TokenSimulator; + + beforeAll(async () => { + ({ aztecNode, aztecRpcServer, logger } = await setup(0)); + + { + const _accounts = []; + for (let i = 0; i < 3; i++) { + const privateKey = GrumpkinScalar.random(); + const account = new Account(aztecRpcServer, privateKey, new AuthWitnessAccountContract(privateKey)); + const deployTx = await account.deploy(); + await deployTx.wait({ interval: 0.1 }); + _accounts.push(account); + } + wallets = await Promise.all( + _accounts.map( + async account => + new AuthWitnessEntrypointWallet( + aztecRpcServer, + (await account.getEntrypoint()) as unknown as IAuthWitnessAccountEntrypoint, + await account.getCompleteAddress(), + ), + ), + ); + //wallet = new AuthWitnessEntrypointWallet(aztecRpcServer, await AuthEntrypointCollection.fromAccounts(_accounts)); + accounts = await wallets[0].getAccounts(); + } + + { + logger(`Deploying token contract`); + const tx = TokenContract.deploy(wallets[0]).send(); + logger(`Tx sent with hash ${await tx.getTxHash()}`); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + logger(`Token deployed to ${receipt.contractAddress}`); + asset = await TokenContract.at(receipt.contractAddress!, wallets[0]); + } + + tokenSim = new TokenSimulator(asset, logger, accounts); + + { + const initializeTx = asset.methods._initialize({ address: accounts[0].address }).send(); + const receipt = await initializeTx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + expect(await asset.methods.admin().view()).toBe(accounts[0].address.toBigInt()); + } + + asset.abi.functions.forEach(fn => { + logger( + `Function ${fn.name} has ${fn.bytecode.length} bytes and the selector: ${FunctionSelector.fromNameAndParameters( + fn.name, + fn.parameters, + )}`, + ); + }); + }, 100_000); + + afterAll(async () => { + await aztecNode?.stop(); + if (aztecRpcServer instanceof AztecRPCServer) { + await aztecRpcServer?.stop(); + } + }); + + afterEach(async () => { + await tokenSim.check(); + }, TIMEOUT); + + describe('Access controlled functions', () => { + it('Set admin', async () => { + const tx = asset.methods.set_admin({ address: accounts[1].address }).send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + expect(await asset.methods.admin().view()).toBe(accounts[1].address.toBigInt()); + }); + + it('Add minter as admin', async () => { + const tx = asset.withWallet(wallets[1]).methods.set_minter({ address: accounts[1].address }, 1).send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + expect(await asset.methods.is_minter({ address: accounts[1].address }).view()).toBe(true); + }); + + it('Revoke minter as admin', async () => { + const tx = asset.withWallet(wallets[1]).methods.set_minter({ address: accounts[1].address }, 0).send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + expect(await asset.methods.is_minter({ address: accounts[1].address }).view()).toBe(false); + }); + + describe('failure cases', () => { + it('Set admin (not admin)', async () => { + await expect(asset.methods.set_admin({ address: accounts[0].address }).simulate()).rejects.toThrowError( + 'Assertion failed: caller is not admin', + ); + }); + it('Revoke minter not as admin', async () => { + await expect(asset.methods.set_minter({ address: accounts[0].address }, 0).simulate()).rejects.toThrowError( + 'Assertion failed: caller is not admin', + ); + }); + }); + }); + + describe('Minting', () => { + describe('Public', () => { + it('as minter', async () => { + const amount = 10000n; + const tx = asset.methods.mint_public({ address: accounts[0].address }, amount).send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + + tokenSim.mintPublic(accounts[0].address, amount); + expect(await asset.methods.balance_of_public({ address: accounts[0].address }).view()).toEqual( + tokenSim.balanceOfPublic(accounts[0].address), + ); + expect(await asset.methods.total_supply().view()).toEqual(tokenSim.totalSupply); + }); + + describe('failure cases', () => { + it('as non-minter', async () => { + const amount = 10000n; + await expect( + asset.withWallet(wallets[1]).methods.mint_public({ address: accounts[0].address }, amount).simulate(), + ).rejects.toThrowError('Assertion failed: caller is not minter'); + }); + + it('mint >u120 tokens to overflow', async () => { + const amount = 2n ** 120n; // SafeU120::max() + 1; + await expect( + asset.methods.mint_public({ address: accounts[0].address }, amount).simulate(), + ).rejects.toThrowError('Assertion failed: Value too large for SafeU120'); + }); + + it('mint u120', async () => { + const amount = 2n ** 120n - tokenSim.balanceOfPublic(accounts[0].address); + await expect( + asset.methods.mint_public({ address: accounts[0].address }, amount).simulate(), + ).rejects.toThrowError('Assertion failed: Overflow'); + }); + + it('mint u120', async () => { + const amount = 2n ** 120n - tokenSim.balanceOfPublic(accounts[0].address); + await expect( + asset.methods.mint_public({ address: accounts[1].address }, amount).simulate(), + ).rejects.toThrowError('Assertion failed: Overflow'); + }); + }); + }); + + describe('Private', () => { + const secret = Fr.random(); + const amount = 10000n; + let secretHash: Fr; + + beforeAll(async () => { + secretHash = await computeMessageSecretHash(secret); + }); + + describe('Mint flow', () => { + it('mint_private as minter', async () => { + const tx = asset.methods.mint_private(amount, secretHash).send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + tokenSim.mintPrivate(accounts[0].address, amount); + }); + + it('redeem as recipient', async () => { + const txClaim = asset.methods.redeem_shield({ address: accounts[0].address }, amount, secret).send(); + const receiptClaim = await txClaim.wait(); + expect(receiptClaim.status).toBe(TxStatus.MINED); + tokenSim.redeemShield(accounts[0].address, amount); + }); + }); + + describe('failure cases', () => { + it('try to redeem as recipient (double-spend) [REVERTS]', async () => { + const txClaim = asset.methods.redeem_shield({ address: accounts[0].address }, amount, secret).send(); + await txClaim.isMined(); + const receipt = await txClaim.getReceipt(); + expect(receipt.status).toBe(TxStatus.DROPPED); + }); + + it('mint_private as non-minter', async () => { + await expect( + asset.withWallet(wallets[1]).methods.mint_private(amount, secretHash).simulate(), + ).rejects.toThrowError('Assertion failed: caller is not minter'); + }); + + it('mint >u120 tokens to overflow', async () => { + const amount = 2n ** 120n; // SafeU120::max() + 1; + await expect(asset.methods.mint_private(amount, secretHash).simulate()).rejects.toThrowError( + 'Assertion failed: Value too large for SafeU120', + ); + }); + + it('mint u120', async () => { + const amount = 2n ** 120n - tokenSim.balanceOfPrivate(accounts[0].address); + expect(amount).toBeLessThan(2n ** 120n); + await expect(asset.methods.mint_private(amount, secretHash).simulate()).rejects.toThrowError( + 'Assertion failed: Overflow', + ); + }); + + it('mint u120', async () => { + const amount = 2n ** 120n - tokenSim.totalSupply; + await expect(asset.methods.mint_private(amount, secretHash).simulate()).rejects.toThrowError( + 'Assertion failed: Overflow', + ); + }); + }); + }); + }); + + describe('Transfer', () => { + describe('public', () => { + const transferMessageHash = async ( + caller: CompleteAddress, + from: CompleteAddress, + to: CompleteAddress, + amount: bigint, + nonce: Fr, + ) => { + return await hashPayload([ + caller.address.toField(), + asset.address.toField(), + FunctionSelector.fromSignature('transfer_public((Field),(Field),Field,Field)').toField(), + from.address.toField(), + to.address.toField(), + new Fr(amount), + nonce, + ]); + }; + + it('transfer less than balance', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + expect(amount).toBeGreaterThan(0n); + const tx = asset.methods + .transfer_public({ address: accounts[0].address }, { address: accounts[1].address }, amount, 0) + .send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + + tokenSim.transferPublic(accounts[0].address, accounts[1].address, amount); + }); + + it('transfer to self', async () => { + const balance = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance / 2n; + expect(amount).toBeGreaterThan(0n); + const tx = asset.methods + .transfer_public({ address: accounts[0].address }, { address: accounts[0].address }, amount, 0) + .send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + + tokenSim.transferPublic(accounts[0].address, accounts[0].address, amount); + }); + + it('transfer on behalf of other', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + expect(amount).toBeGreaterThan(0n); + const nonce = Fr.random(); + + // We need to compute the message we want to sign. + const messageHash = await transferMessageHash(accounts[1], accounts[0], accounts[1], amount, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + // Perform the transfer + const tx = asset + .withWallet(wallets[1]) + .methods.transfer_public({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + + tokenSim.transferPublic(accounts[0].address, accounts[1].address, amount); + + // Check that the message hash is no longer valid. Need to try to send since nullifiers are handled by sequencer. + const txReplay = asset + .withWallet(wallets[1]) + .methods.transfer_public({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .send(); + await txReplay.isMined(); + const receiptReplay = await txReplay.getReceipt(); + expect(receiptReplay.status).toBe(TxStatus.DROPPED); + }); + + describe('failure cases', () => { + it('transfer more than balance', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 + 1n; + const nonce = 0; + await expect( + asset.methods + .transfer_public({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .simulate(), + ).rejects.toThrowError('Assertion failed: Underflow'); + }); + + it('transfer on behalf of self with non-zero nonce', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 - 1n; + const nonce = 1; + await expect( + asset.methods + .transfer_public({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .simulate(), + ).rejects.toThrowError('Assertion failed: invalid nonce'); + }); + + it('transfer on behalf of other without "approval"', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 + 1n; + const nonce = Fr.random(); + await expect( + asset + .withWallet(wallets[1]) + .methods.transfer_public( + { address: accounts[0].address }, + { address: accounts[1].address }, + amount, + nonce, + ) + .simulate(), + ).rejects.toThrowError('Assertion failed: invalid call'); + }); + + it('transfer more than balance on behalf of other', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const balance1 = await asset.methods.balance_of_public({ address: accounts[1].address }).view(); + const amount = balance0 + 1n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await transferMessageHash(accounts[1], accounts[0], accounts[1], amount, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + // Perform the transfer + await expect( + asset + .withWallet(wallets[1]) + .methods.transfer_public( + { address: accounts[0].address }, + { address: accounts[1].address }, + amount, + nonce, + ) + .simulate(), + ).rejects.toThrowError('Assertion failed: Underflow'); + + expect(await asset.methods.balance_of_public({ address: accounts[0].address }).view()).toEqual(balance0); + expect(await asset.methods.balance_of_public({ address: accounts[1].address }).view()).toEqual(balance1); + }); + + it('transfer on behalf of other, wrong designated caller', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const balance1 = await asset.methods.balance_of_public({ address: accounts[1].address }).view(); + const amount = balance0 + 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await transferMessageHash(accounts[0], accounts[0], accounts[1], amount, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + // Perform the transfer + await expect( + asset + .withWallet(wallets[1]) + .methods.transfer_public( + { address: accounts[0].address }, + { address: accounts[1].address }, + amount, + nonce, + ) + .simulate(), + ).rejects.toThrowError('Assertion failed: invalid call'); + + expect(await asset.methods.balance_of_public({ address: accounts[0].address }).view()).toEqual(balance0); + expect(await asset.methods.balance_of_public({ address: accounts[1].address }).view()).toEqual(balance1); + }); + + it('transfer on behalf of other, wrong designated caller', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const balance1 = await asset.methods.balance_of_public({ address: accounts[1].address }).view(); + const amount = balance0 + 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await transferMessageHash(accounts[0], accounts[0], accounts[1], amount, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + // Perform the transfer + await expect( + asset + .withWallet(wallets[1]) + .methods.transfer_public( + { address: accounts[0].address }, + { address: accounts[1].address }, + amount, + nonce, + ) + .simulate(), + ).rejects.toThrowError('Assertion failed: invalid call'); + + expect(await asset.methods.balance_of_public({ address: accounts[0].address }).view()).toEqual(balance0); + expect(await asset.methods.balance_of_public({ address: accounts[1].address }).view()).toEqual(balance1); + }); + + it.skip('transfer into account to overflow', () => { + // This should already be covered by the mint case earlier. e.g., since we cannot mint to overflow, there is not + // a way to get funds enough to overflow. + // Require direct storage manipulation for us to perform a nice explicit case though. + // See https://github.com/AztecProtocol/aztec-packages/issues/1259 + }); + }); + }); + + describe('private', () => { + const transferMessageHash = async ( + caller: CompleteAddress, + from: CompleteAddress, + to: CompleteAddress, + amount: bigint, + nonce: Fr, + ) => { + return await hashPayload([ + caller.address.toField(), + asset.address.toField(), + FunctionSelector.fromSignature('transfer((Field),(Field),Field,Field)').toField(), + from.address.toField(), + to.address.toField(), + new Fr(amount), + nonce, + ]); + }; + + it('transfer less than balance', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + expect(amount).toBeGreaterThan(0n); + const tx = asset.methods + .transfer({ address: accounts[0].address }, { address: accounts[1].address }, amount, 0) + .send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + tokenSim.transferPrivate(accounts[0].address, accounts[1].address, amount); + }); + + it('transfer to self', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + expect(amount).toBeGreaterThan(0n); + const tx = asset.methods + .transfer({ address: accounts[0].address }, { address: accounts[0].address }, amount, 0) + .send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + tokenSim.transferPrivate(accounts[0].address, accounts[0].address, amount); + }); + + it('transfer on behalf of other', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await transferMessageHash(accounts[1], accounts[0], accounts[1], amount, nonce); + + // Both wallets are connected to same node and rpc so we could just insert directly using + // await wallet.signAndAddAuthWitness(messageHash, ); + // But doing it in two actions to show the flow. + const witness = await wallets[0].signAndGetAuthWitness(messageHash); + await wallets[1].addAuthWitness(Fr.fromBuffer(messageHash), witness); + + // Perform the transfer + const tx = asset + .withWallet(wallets[1]) + .methods.transfer({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + tokenSim.transferPrivate(accounts[0].address, accounts[1].address, amount); + + // Perform the transfer again, should fail + const txReplay = asset + .withWallet(wallets[1]) + .methods.transfer({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .send(); + await txReplay.isMined(); + const receiptReplay = await txReplay.getReceipt(); + expect(receiptReplay.status).toBe(TxStatus.DROPPED); + }); + + describe('failure cases', () => { + it('transfer more than balance', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 + 1n; + expect(amount).toBeGreaterThan(0n); + await expect( + asset.methods + .transfer({ address: accounts[0].address }, { address: accounts[1].address }, amount, 0) + .simulate(), + ).rejects.toThrowError('Assertion failed: Balance too low'); + }); + + it('transfer on behalf of self with non-zero nonce', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 - 1n; + expect(amount).toBeGreaterThan(0n); + await expect( + asset.methods + .transfer({ address: accounts[0].address }, { address: accounts[1].address }, amount, 1) + .simulate(), + ).rejects.toThrowError('Assertion failed: invalid nonce'); + }); + + it('transfer more than balance on behalf of other', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const balance1 = await asset.methods.balance_of_private({ address: accounts[1].address }).view(); + const amount = balance0 + 1n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await transferMessageHash(accounts[1], accounts[0], accounts[1], amount, nonce); + + // Both wallets are connected to same node and rpc so we could just insert directly using + // await wallet.signAndAddAuthWitness(messageHash, ); + // But doing it in two actions to show the flow. + const witness = await wallets[0].signAndGetAuthWitness(messageHash); + await wallets[1].addAuthWitness(Fr.fromBuffer(messageHash), witness); + + // Perform the transfer + await expect( + asset + .withWallet(wallets[1]) + .methods.transfer({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .simulate(), + ).rejects.toThrowError('Assertion failed: Balance too low'); + expect(await asset.methods.balance_of_private({ address: accounts[0].address }).view()).toEqual(balance0); + expect(await asset.methods.balance_of_private({ address: accounts[1].address }).view()).toEqual(balance1); + }); + + it.skip('transfer into account to overflow', () => { + // This should already be covered by the mint case earlier. e.g., since we cannot mint to overflow, there is not + // a way to get funds enough to overflow. + // Require direct storage manipulation for us to perform a nice explicit case though. + // See https://github.com/AztecProtocol/aztec-packages/issues/1259 + }); + + it('transfer on behalf of other without approval', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await transferMessageHash(accounts[1], accounts[0], accounts[1], amount, nonce); + + await expect( + asset + .withWallet(wallets[1]) + .methods.transfer({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .simulate(), + ).rejects.toThrowError(`Unknown auth witness for message hash 0x${messageHash.toString('hex')}`); + }); + + it('transfer on behalf of other, wrong designated caller', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await transferMessageHash(accounts[1], accounts[0], accounts[1], amount, nonce); + const expectedMessageHash = await transferMessageHash(accounts[2], accounts[0], accounts[1], amount, nonce); + + const witness = await wallets[0].signAndGetAuthWitness(messageHash); + await wallets[2].addAuthWitness(Fr.fromBuffer(messageHash), witness); + + await expect( + asset + .withWallet(wallets[2]) + .methods.transfer({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .simulate(), + ).rejects.toThrowError(`Unknown auth witness for message hash 0x${expectedMessageHash.toString('hex')}`); + expect(await asset.methods.balance_of_private({ address: accounts[0].address }).view()).toEqual(balance0); + }); + }); + }); + }); + + describe('Shielding (shield + redeem_shield)', () => { + const secret = Fr.random(); + let secretHash: Fr; + + beforeAll(async () => { + secretHash = await computeMessageSecretHash(secret); + }); + + const shieldMessageHash = async ( + caller: CompleteAddress, + from: CompleteAddress, + amount: bigint, + secretHash: Fr, + nonce: Fr, + ) => { + return await hashPayload([ + caller.address.toField(), + asset.address.toField(), + FunctionSelector.fromSignature('shield((Field),Field,Field,Field)').toField(), + from.address.toField(), + new Fr(amount), + secretHash, + nonce, + ]); + }; + + it('on behalf of self', async () => { + const balancePub = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balancePub / 2n; + expect(amount).toBeGreaterThan(0n); + + const tx = asset.methods.shield({ address: accounts[0].address }, amount, secretHash, 0).send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + + tokenSim.shield(accounts[0].address, amount); + await tokenSim.check(); + + // Redeem it + const txClaim = asset.methods.redeem_shield({ address: accounts[0].address }, amount, secret).send(); + const receiptClaim = await txClaim.wait(); + expect(receiptClaim.status).toBe(TxStatus.MINED); + + tokenSim.redeemShield(accounts[0].address, amount); + + // Check that claiming again will hit a double-spend and fail due to pending note already consumed. + const txClaimDoubleSpend = asset.methods.redeem_shield({ address: accounts[0].address }, amount, secret).send(); + await txClaimDoubleSpend.isMined(); + const receiptDoubleSpend = await txClaimDoubleSpend.getReceipt(); + expect(receiptDoubleSpend.status).toBe(TxStatus.DROPPED); + }); + + it('on behalf of other', async () => { + const balancePub = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balancePub / 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await shieldMessageHash(accounts[1], accounts[0], amount, secretHash, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + const tx = asset + .withWallet(wallets[1]) + .methods.shield({ address: accounts[0].address }, amount, secretHash, nonce) + .send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + + tokenSim.shield(accounts[0].address, amount); + await tokenSim.check(); + + // Check that replaying the shield should fail! + const txReplay = asset + .withWallet(wallets[1]) + .methods.shield({ address: accounts[0].address }, amount, secretHash, nonce) + .send(); + await txReplay.isMined(); + const receiptReplay = await txReplay.getReceipt(); + expect(receiptReplay.status).toBe(TxStatus.DROPPED); + + // Redeem it + const txClaim = asset.methods.redeem_shield({ address: accounts[0].address }, amount, secret).send(); + const receiptClaim = await txClaim.wait(); + expect(receiptClaim.status).toBe(TxStatus.MINED); + + tokenSim.redeemShield(accounts[0].address, amount); + + // Check that claiming again will hit a double-spend and fail due to pending note already consumed. + const txClaimDoubleSpend = asset.methods.redeem_shield({ address: accounts[0].address }, amount, secret).send(); + await txClaimDoubleSpend.isMined(); + const receiptDoubleSpend = await txClaimDoubleSpend.getReceipt(); + expect(receiptDoubleSpend.status).toBe(TxStatus.DROPPED); + }); + + describe('failure cases', () => { + it('on behalf of self (more than balance)', async () => { + const balancePub = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balancePub + 1n; + expect(amount).toBeGreaterThan(0n); + + await expect( + asset.methods.shield({ address: accounts[0].address }, amount, secretHash, 0).simulate(), + ).rejects.toThrowError('Assertion failed: Underflow'); + }); + + it('on behalf of self (invalid nonce)', async () => { + const balancePub = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balancePub + 1n; + expect(amount).toBeGreaterThan(0n); + + await expect( + asset.methods.shield({ address: accounts[0].address }, amount, secretHash, 1).simulate(), + ).rejects.toThrowError('Assertion failed: invalid nonce'); + }); + + it('on behalf of other (more than balance)', async () => { + const balancePub = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balancePub + 1n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await shieldMessageHash(accounts[1], accounts[0], amount, secretHash, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + await expect( + asset + .withWallet(wallets[1]) + .methods.shield({ address: accounts[0].address }, amount, secretHash, nonce) + .simulate(), + ).rejects.toThrowError('Assertion failed: Underflow'); + }); + + it('on behalf of other (wrong designated caller)', async () => { + const balancePub = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balancePub + 1n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await shieldMessageHash(accounts[1], accounts[0], amount, secretHash, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + await expect( + asset + .withWallet(wallets[2]) + .methods.shield({ address: accounts[0].address }, amount, secretHash, nonce) + .simulate(), + ).rejects.toThrowError('Assertion failed: invalid call'); + }); + + it('on behalf of other (wrong designated caller)', async () => { + const balancePub = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const balancePriv = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balancePub + 1n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await shieldMessageHash(accounts[1], accounts[0], amount, secretHash, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + await expect( + asset + .withWallet(wallets[2]) + .methods.shield({ address: accounts[0].address }, amount, secretHash, nonce) + .simulate(), + ).rejects.toThrowError('Assertion failed: invalid call'); + + expect(await asset.methods.balance_of_public({ address: accounts[0].address }).view()).toEqual(balancePub); + expect(await asset.methods.balance_of_private({ address: accounts[0].address }).view()).toEqual(balancePriv); + }); + + it('on behalf of other (without approval)', async () => { + const balance = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance / 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + await expect( + asset + .withWallet(wallets[1]) + .methods.shield({ address: accounts[0].address }, amount, secretHash, nonce) + .simulate(), + ).rejects.toThrowError(`Assertion failed: invalid call`); + }); + }); + }); + + describe('Unshielding', () => { + const unshieldMessageHash = async ( + caller: CompleteAddress, + from: CompleteAddress, + to: CompleteAddress, + amount: bigint, + nonce: Fr, + ) => { + return await hashPayload([ + caller.address.toField(), + asset.address.toField(), + FunctionSelector.fromSignature('unshield((Field),(Field),Field,Field)').toField(), + accounts[0].address.toField(), + accounts[1].address.toField(), + new Fr(amount), + nonce, + ]); + }; + + it('on behalf of self', async () => { + const balancePriv = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balancePriv / 2n; + expect(amount).toBeGreaterThan(0n); + + const tx = asset.methods + .unshield({ address: accounts[0].address }, { address: accounts[0].address }, amount, 0) + .send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + + tokenSim.unshield(accounts[0].address, accounts[0].address, amount); + }); + + it('on behalf of other', async () => { + const balancePriv0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balancePriv0 / 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await unshieldMessageHash(accounts[1], accounts[0], accounts[1], amount, nonce); + + // Both wallets are connected to same node and rpc so we could just insert directly using + // await wallet.signAndAddAuthWitness(messageHash, ); + // But doing it in two actions to show the flow. + const witness = await wallets[0].signAndGetAuthWitness(messageHash); + await wallets[1].addAuthWitness(Fr.fromBuffer(messageHash), witness); + + const tx = asset + .withWallet(wallets[1]) + .methods.unshield({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + tokenSim.unshield(accounts[0].address, accounts[1].address, amount); + + // Perform the transfer again, should fail + const txReplay = asset + .withWallet(wallets[1]) + .methods.unshield({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .send(); + await txReplay.isMined(); + const receiptReplay = await txReplay.getReceipt(); + expect(receiptReplay.status).toBe(TxStatus.DROPPED); + }); + + describe('failure cases', () => { + it('on behalf of self (more than balance)', async () => { + const balancePriv = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balancePriv + 1n; + expect(amount).toBeGreaterThan(0n); + + await expect( + asset.methods + .unshield({ address: accounts[0].address }, { address: accounts[0].address }, amount, 0) + .simulate(), + ).rejects.toThrowError('Assertion failed: Balance too low'); + }); + + it('on behalf of self (invalid nonce)', async () => { + const balancePriv = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balancePriv + 1n; + expect(amount).toBeGreaterThan(0n); + + await expect( + asset.methods + .unshield({ address: accounts[0].address }, { address: accounts[0].address }, amount, 1) + .simulate(), + ).rejects.toThrowError('Assertion failed: invalid nonce'); + }); + + it('on behalf of other (more than balance)', async () => { + const balancePriv0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balancePriv0 + 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await unshieldMessageHash(accounts[1], accounts[0], accounts[1], amount, nonce); + + // Both wallets are connected to same node and rpc so we could just insert directly using + // await wallet.signAndAddAuthWitness(messageHash, ); + // But doing it in two actions to show the flow. + const witness = await wallets[0].signAndGetAuthWitness(messageHash); + await wallets[1].addAuthWitness(Fr.fromBuffer(messageHash), witness); + + await expect( + asset + .withWallet(wallets[1]) + .methods.unshield({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .simulate(), + ).rejects.toThrowError('Assertion failed: Balance too low'); + }); + + it('on behalf of other (invalid designated caller)', async () => { + const balancePriv0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balancePriv0 + 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await unshieldMessageHash(accounts[1], accounts[0], accounts[1], amount, nonce); + const expectedMessageHash = await unshieldMessageHash(accounts[2], accounts[0], accounts[1], amount, nonce); + + // Both wallets are connected to same node and rpc so we could just insert directly using + // await wallet.signAndAddAuthWitness(messageHash, ); + // But doing it in two actions to show the flow. + const witness = await wallets[0].signAndGetAuthWitness(messageHash); + await wallets[2].addAuthWitness(Fr.fromBuffer(messageHash), witness); + + await expect( + asset + .withWallet(wallets[2]) + .methods.unshield({ address: accounts[0].address }, { address: accounts[1].address }, amount, nonce) + .simulate(), + ).rejects.toThrowError(`Unknown auth witness for message hash 0x${expectedMessageHash.toString('hex')}`); + }); + }); + }); + + describe('Burn', () => { + describe('public', () => { + const burnMessageHash = async (caller: CompleteAddress, from: CompleteAddress, amount: bigint, nonce: Fr) => { + return await hashPayload([ + caller.address.toField(), + asset.address.toField(), + FunctionSelector.fromSignature('burn_public((Field),Field,Field)').toField(), + from.address.toField(), + new Fr(amount), + nonce, + ]); + }; + + it('burn less than balance', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + expect(amount).toBeGreaterThan(0n); + const tx = asset.methods.burn_public({ address: accounts[0].address }, amount, 0).send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + + tokenSim.burnPublic(accounts[0].address, amount); + }); + + it('burn on behalf of other', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + expect(amount).toBeGreaterThan(0n); + const nonce = Fr.random(); + + // We need to compute the message we want to sign. + const messageHash = await burnMessageHash(accounts[1], accounts[0], amount, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + const tx = asset + .withWallet(wallets[1]) + .methods.burn_public({ address: accounts[0].address }, amount, nonce) + .send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + + tokenSim.burnPublic(accounts[0].address, amount); + + // Check that the message hash is no longer valid. Need to try to send since nullifiers are handled by sequencer. + const txReplay = asset + .withWallet(wallets[1]) + .methods.burn_public({ address: accounts[0].address }, amount, nonce) + .send(); + await txReplay.isMined(); + const receiptReplay = await txReplay.getReceipt(); + expect(receiptReplay.status).toBe(TxStatus.DROPPED); + }); + + describe('failure cases', () => { + it('burn more than balance', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 + 1n; + const nonce = 0; + await expect( + asset.methods.burn_public({ address: accounts[0].address }, amount, nonce).simulate(), + ).rejects.toThrowError('Assertion failed: Underflow'); + }); + + it('burn on behalf of self with non-zero nonce', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 - 1n; + expect(amount).toBeGreaterThan(0n); + const nonce = 1; + await expect( + asset.methods.burn_public({ address: accounts[0].address }, amount, nonce).simulate(), + ).rejects.toThrowError('Assertion failed: invalid nonce'); + }); + + it('burn on behalf of other without "approval"', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 + 1n; + const nonce = Fr.random(); + await expect( + asset + .withWallet(wallets[1]) + .methods.burn_public({ address: accounts[0].address }, amount, nonce) + .simulate(), + ).rejects.toThrowError('Assertion failed: invalid call'); + }); + + it('burn more than balance on behalf of other', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 + 1n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await burnMessageHash(accounts[1], accounts[0], amount, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + await expect( + asset + .withWallet(wallets[1]) + .methods.burn_public({ address: accounts[0].address }, amount, nonce) + .simulate(), + ).rejects.toThrowError('Assertion failed: Underflow'); + }); + + it('burn on behalf of other, wrong designated caller', async () => { + const balance0 = await asset.methods.balance_of_public({ address: accounts[0].address }).view(); + const amount = balance0 + 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await burnMessageHash(accounts[0], accounts[0], amount, nonce); + + // Add it to the wallet as approved + const me = await SchnorrAuthWitnessAccountContract.at(accounts[0].address, wallets[0]); + const setValidTx = me.methods.set_is_valid_storage(messageHash, 1).send(); + const validTxReceipt = await setValidTx.wait(); + expect(validTxReceipt.status).toBe(TxStatus.MINED); + + await expect( + asset + .withWallet(wallets[1]) + .methods.burn_public({ address: accounts[0].address }, amount, nonce) + .simulate(), + ).rejects.toThrowError('Assertion failed: invalid call'); + }); + }); + }); + + describe('private', () => { + const burnMessageHash = async (caller: CompleteAddress, from: CompleteAddress, amount: bigint, nonce: Fr) => { + return await hashPayload([ + caller.address.toField(), + asset.address.toField(), + FunctionSelector.fromSignature('burn((Field),Field,Field)').toField(), + from.address.toField(), + new Fr(amount), + nonce, + ]); + }; + + it('burn less than balance', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + expect(amount).toBeGreaterThan(0n); + const tx = asset.methods.burn({ address: accounts[0].address }, amount, 0).send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + tokenSim.burnPrivate(accounts[0].address, amount); + }); + + it('burn on behalf of other', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await burnMessageHash(accounts[1], accounts[0], amount, nonce); + + // Both wallets are connected to same node and rpc so we could just insert directly using + // await wallet.signAndAddAuthWitness(messageHash, ); + // But doing it in two actions to show the flow. + const witness = await wallets[0].signAndGetAuthWitness(messageHash); + await wallets[1].addAuthWitness(Fr.fromBuffer(messageHash), witness); + + const tx = asset.withWallet(wallets[1]).methods.burn({ address: accounts[0].address }, amount, nonce).send(); + const receipt = await tx.wait(); + expect(receipt.status).toBe(TxStatus.MINED); + tokenSim.burnPrivate(accounts[0].address, amount); + + // Perform the transfer again, should fail + const txReplay = asset + .withWallet(wallets[1]) + .methods.burn({ address: accounts[0].address }, amount, nonce) + .send(); + await txReplay.isMined(); + const receiptReplay = await txReplay.getReceipt(); + expect(receiptReplay.status).toBe(TxStatus.DROPPED); + }); + + describe('failure cases', () => { + it('burn more than balance', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 + 1n; + expect(amount).toBeGreaterThan(0n); + await expect(asset.methods.burn({ address: accounts[0].address }, amount, 0).simulate()).rejects.toThrowError( + 'Assertion failed: Balance too low', + ); + }); + + it('burn on behalf of self with non-zero nonce', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 - 1n; + expect(amount).toBeGreaterThan(0n); + await expect(asset.methods.burn({ address: accounts[0].address }, amount, 1).simulate()).rejects.toThrowError( + 'Assertion failed: invalid nonce', + ); + }); + + it('burn more than balance on behalf of other', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 + 1n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await burnMessageHash(accounts[1], accounts[0], amount, nonce); + + // Both wallets are connected to same node and rpc so we could just insert directly using + // await wallet.signAndAddAuthWitness(messageHash, ); + // But doing it in two actions to show the flow. + const witness = await wallets[0].signAndGetAuthWitness(messageHash); + await wallets[1].addAuthWitness(Fr.fromBuffer(messageHash), witness); + + await expect( + asset.withWallet(wallets[1]).methods.burn({ address: accounts[0].address }, amount, nonce).simulate(), + ).rejects.toThrowError('Assertion failed: Balance too low'); + }); + + it('burn on behalf of other without approval', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await burnMessageHash(accounts[1], accounts[0], amount, nonce); + + await expect( + asset.withWallet(wallets[1]).methods.burn({ address: accounts[0].address }, amount, nonce).simulate(), + ).rejects.toThrowError(`Unknown auth witness for message hash 0x${messageHash.toString('hex')}`); + }); + + it('burn on behalf of other, wrong designated caller', async () => { + const balance0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balance0 / 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await burnMessageHash(accounts[1], accounts[0], amount, nonce); + const expectedMessageHash = await burnMessageHash(accounts[2], accounts[0], amount, nonce); + + const witness = await wallets[0].signAndGetAuthWitness(messageHash); + await wallets[2].addAuthWitness(Fr.fromBuffer(messageHash), witness); + + await expect( + asset.withWallet(wallets[2]).methods.burn({ address: accounts[0].address }, amount, nonce).simulate(), + ).rejects.toThrowError(`Unknown auth witness for message hash 0x${expectedMessageHash.toString('hex')}`); + }); + }); + + it('on behalf of other (invalid designated caller)', async () => { + const balancePriv0 = await asset.methods.balance_of_private({ address: accounts[0].address }).view(); + const amount = balancePriv0 + 2n; + const nonce = Fr.random(); + expect(amount).toBeGreaterThan(0n); + + // We need to compute the message we want to sign. + const messageHash = await burnMessageHash(accounts[1], accounts[0], amount, nonce); + const expectedMessageHash = await burnMessageHash(accounts[2], accounts[0], amount, nonce); + + // Both wallets are connected to same node and rpc so we could just insert directly using + // await wallet.signAndAddAuthWitness(messageHash, { origin: accounts[0].address }); + // But doing it in two actions to show the flow. + const witness = await wallets[0].signAndGetAuthWitness(messageHash); + await wallets[2].addAuthWitness(Fr.fromBuffer(messageHash), witness); + + await expect( + asset.withWallet(wallets[2]).methods.burn({ address: accounts[0].address }, amount, nonce).simulate(), + ).rejects.toThrowError(`Unknown auth witness for message hash 0x${expectedMessageHash.toString('hex')}`); + }); + }); + }); +}); diff --git a/yarn-project/foundation/src/abi/decoder.test.ts b/yarn-project/foundation/src/abi/decoder.test.ts new file mode 100644 index 00000000000..165e4a4a61f --- /dev/null +++ b/yarn-project/foundation/src/abi/decoder.test.ts @@ -0,0 +1,77 @@ +import { FunctionAbi } from './abi.js'; +import { decodeFunctionSignature, decodeFunctionSignatureWithParameterNames } from './decoder.js'; + +describe('abi/decoder', () => { + // Copied from yarn-project/noir-contracts/src/contracts/test_contract/target/Test.json + const abi = { + name: 'testCodeGen', + parameters: [ + { name: 'aField', type: { kind: 'field' }, visibility: 'private' }, + { name: 'aBool', type: { kind: 'boolean' }, visibility: 'private' }, + { name: 'aNumber', type: { kind: 'integer', sign: 'unsigned', width: 32 }, visibility: 'private' }, + { name: 'anArray', type: { kind: 'array', length: 2, type: { kind: 'field' } }, visibility: 'private' }, + { + name: 'aStruct', + type: { + kind: 'struct', + path: 'Test::DummyNote', + fields: [ + { name: 'amount', type: { kind: 'field' } }, + { name: 'secretHash', type: { kind: 'field' } }, + ], + }, + visibility: 'private', + }, + { + name: 'aDeepStruct', + type: { + kind: 'struct', + path: 'Test::DeepStruct', + fields: [ + { name: 'aField', type: { kind: 'field' } }, + { name: 'aBool', type: { kind: 'boolean' } }, + { + name: 'aNote', + type: { + kind: 'struct', + path: 'Test::DummyNote', + fields: [ + { name: 'amount', type: { kind: 'field' } }, + { name: 'secretHash', type: { kind: 'field' } }, + ], + }, + }, + { + name: 'manyNotes', + type: { + kind: 'array', + length: 3, + type: { + kind: 'struct', + path: 'Test::DummyNote', + fields: [ + { name: 'amount', type: { kind: 'field' } }, + { name: 'secretHash', type: { kind: 'field' } }, + ], + }, + }, + }, + ], + }, + visibility: 'private', + }, + ], + } as unknown as Pick; + + it('decodes function signature', () => { + expect(decodeFunctionSignature(abi.name, abi.parameters)).toMatchInlineSnapshot( + `"testCodeGen(Field,bool,u32,[Field;2],(Field,Field),(Field,bool,(Field,Field),[(Field,Field);3]))"`, + ); + }); + + it('decodes function signature with parameter names', () => { + expect(decodeFunctionSignatureWithParameterNames(abi.name, abi.parameters)).toMatchInlineSnapshot( + `"testCodeGen(aField: Field, aBool: bool, aNumber: u32, anArray: [Field;2], aStruct: (amount: Field, secretHash: Field), aDeepStruct: (aField: Field, aBool: bool, aNote: (amount: Field, secretHash: Field), manyNotes: [(amount: Field, secretHash: Field);3]))"`, + ); + }); +}); diff --git a/yarn-project/foundation/src/abi/decoder.ts b/yarn-project/foundation/src/abi/decoder.ts index 5ca889f9d63..0dfbe09708c 100644 --- a/yarn-project/foundation/src/abi/decoder.ts +++ b/yarn-project/foundation/src/abi/decoder.ts @@ -1,4 +1,4 @@ -import { ABIParameter, ABIType, FunctionAbi } from '@aztec/foundation/abi'; +import { ABIParameter, ABIType, ABIVariable, FunctionAbi } from '@aztec/foundation/abi'; import { Fr } from '@aztec/foundation/fields'; /** @@ -91,14 +91,17 @@ export function decodeReturnValues(abi: FunctionAbi, returnValues: Fr[]) { * Decodes the signature of a function from the name and parameters. */ export class FunctionSignatureDecoder { - constructor(private name: string, private parameters: ABIParameter[]) {} + private separator: string; + constructor(private name: string, private parameters: ABIParameter[], private includeNames = false) { + this.separator = includeNames ? ', ' : ','; + } /** - * Decodes a single function parameter for the function signature. - * @param param - The parameter to decode. + * Decodes a single function parameter type for the function signature. + * @param param - The parameter type to decode. * @returns A string representing the parameter type. */ - private decodeParameter(param: ABIType): string { + private getParameterType(param: ABIType): string { switch (param.kind) { case 'field': return 'Field'; @@ -110,29 +113,49 @@ export class FunctionSignatureDecoder { case 'boolean': return 'bool'; case 'array': - return `[${this.decodeParameter(param.type)};${param.length}]`; + return `[${this.getParameterType(param.type)};${param.length}]`; case 'struct': - return `(${param.fields.map(field => `${this.decodeParameter(field.type)}`).join(',')})`; + return `(${param.fields.map(field => `${this.decodeParameter(field)}`).join(this.separator)})`; default: throw new Error(`Unsupported type: ${param.kind}`); } } + /** + * Decodes a single function parameter for the function signature. + * @param param - The parameter to decode. + * @returns A string representing the parameter type and optionally its name. + */ + private decodeParameter(param: ABIVariable): string { + const type = this.getParameterType(param.type); + return this.includeNames ? `${param.name}: ${type}` : type; + } + /** * Decodes all the parameters and build the function signature * @returns The function signature. */ public decode(): string { - return `${this.name}(${this.parameters.map(param => this.decodeParameter(param.type)).join(',')})`; + return `${this.name}(${this.parameters.map(param => this.decodeParameter(param)).join(this.separator)})`; } } /** * Decodes a function signature from the name and parameters. - * @param name - The name of the function- + * @param name - The name of the function. * @param parameters - The parameters of the function. * @returns - The function signature. */ export function decodeFunctionSignature(name: string, parameters: ABIParameter[]) { return new FunctionSignatureDecoder(name, parameters).decode(); } + +/** + * Decodes a function signature from the name and parameters including parameter names. + * @param name - The name of the function. + * @param parameters - The parameters of the function. + * @returns - The user-friendly function signature. + */ +export function decodeFunctionSignatureWithParameterNames(name: string, parameters: ABIParameter[]) { + return new FunctionSignatureDecoder(name, parameters, true).decode(); +} diff --git a/yarn-project/noir-compiler/src/cli/contract.ts b/yarn-project/noir-compiler/src/cli/contract.ts index 1e0de766a4f..020908f0ab0 100644 --- a/yarn-project/noir-compiler/src/cli/contract.ts +++ b/yarn-project/noir-compiler/src/cli/contract.ts @@ -39,7 +39,7 @@ export function compileContract(program: Command, name = 'contract', log: LogFn const compile = compileUsingNargo; log(`Compiling contracts...`); - const result = await compile(projectPath); + const result = await compile(projectPath, { log }); for (const contract of result) { const artifactPath = resolve(projectPath, outdir, `${contract.name}.json`); diff --git a/yarn-project/noir-compiler/src/compile/nargo.ts b/yarn-project/noir-compiler/src/compile/nargo.ts index 74c8fbf3358..790f4462b84 100644 --- a/yarn-project/noir-compiler/src/compile/nargo.ts +++ b/yarn-project/noir-compiler/src/compile/nargo.ts @@ -1,8 +1,11 @@ +import { LogFn, createDebugLogger } from '@aztec/foundation/log'; + import { execSync } from 'child_process'; import { readFileSync, readdirSync, statSync } from 'fs'; import { emptyDirSync } from 'fs-extra'; import path from 'path'; +import { NoirCommit, NoirTag } from '../index.js'; import { NoirCompilationArtifacts, NoirCompiledContract, NoirDebugMetadata } from '../noir_artifact.js'; /** Compilation options */ @@ -11,13 +14,18 @@ export type CompileOpts = { quiet?: boolean; /** Path to the nargo binary. */ nargoBin?: string; + /** Logging function */ + log?: LogFn; }; /** * A class that compiles noir contracts using nargo via the shell. */ export class NargoContractCompiler { - constructor(private projectPath: string, private opts: CompileOpts = {}) {} + private log: LogFn; + constructor(private projectPath: string, private opts: CompileOpts = {}) { + this.log = opts.log ?? createDebugLogger('aztec:noir-compiler'); + } /** * Compiles the contracts in projectPath and returns the Noir artifact. @@ -26,12 +34,23 @@ export class NargoContractCompiler { public compile(): Promise { const stdio = this.opts.quiet ? 'ignore' : 'inherit'; const nargoBin = this.opts.nargoBin ?? 'nargo'; - execSync(`${nargoBin} --version`, { cwd: this.projectPath, stdio }); + const version = execSync(`${nargoBin} --version`, { cwd: this.projectPath, stdio: 'pipe' }).toString(); + this.checkNargoBinVersion(version.replace('\n', '')); emptyDirSync(this.getTargetFolder()); execSync(`${nargoBin} compile --output-debug `, { cwd: this.projectPath, stdio }); return Promise.resolve(this.collectArtifacts()); } + private checkNargoBinVersion(version: string) { + if (!version.includes(NoirCommit)) { + this.log( + `Warning: the nargo version installed locally does not match the expected one. This may cause issues when compiling or deploying contracts. Consider updating your nargo or aztec-cli installation. \n- Expected: ${NoirTag} (git version hash: ${NoirCommit})\n- Found: ${version}`, + ); + } else if (!this.opts.quiet) { + this.log(`Using ${version}`); + } + } + private collectArtifacts(): NoirCompilationArtifacts[] { const contractArtifacts = new Map(); const debugArtifacts = new Map(); diff --git a/yarn-project/noir-compiler/src/index.ts b/yarn-project/noir-compiler/src/index.ts index bade7654a79..b7054d89577 100644 --- a/yarn-project/noir-compiler/src/index.ts +++ b/yarn-project/noir-compiler/src/index.ts @@ -2,6 +2,10 @@ import { ContractAbi } from '@aztec/foundation/abi'; import { CompileOpts, NargoContractCompiler } from './compile/nargo.js'; import { generateAztecAbi } from './contract-interface-gen/abi.js'; +import NoirVersion from './noir-version.json' assert { type: 'json' }; + +const { commit: NoirCommit, tag: NoirTag } = NoirVersion; +export { NoirCommit, NoirTag }; export { generateNoirContractInterface } from './contract-interface-gen/noir.js'; export { generateTypescriptContractInterface } from './contract-interface-gen/typescript.js'; diff --git a/yarn-project/noir-compiler/src/noir-version.json b/yarn-project/noir-compiler/src/noir-version.json new file mode 100644 index 00000000000..211245f347e --- /dev/null +++ b/yarn-project/noir-compiler/src/noir-version.json @@ -0,0 +1,4 @@ +{ + "tag": "aztec", + "commit": "f173c05cbff96dfc48a22cc2f1f76396b968d5a0" +} diff --git a/yarn-project/noir-compiler/tsconfig.json b/yarn-project/noir-compiler/tsconfig.json index 63f8ab3e9f7..a2d81aa678d 100644 --- a/yarn-project/noir-compiler/tsconfig.json +++ b/yarn-project/noir-compiler/tsconfig.json @@ -10,5 +10,5 @@ "path": "../foundation" } ], - "include": ["src"] + "include": ["src", "src/*.json"] } diff --git a/yarn-project/noir-contracts/Dockerfile.build b/yarn-project/noir-contracts/Dockerfile.build index 45a6508f6e2..4a5cda55695 100644 --- a/yarn-project/noir-contracts/Dockerfile.build +++ b/yarn-project/noir-contracts/Dockerfile.build @@ -1,9 +1,10 @@ # Running on ubuntu until noir supports an alpine build # Builder stage to build the noir artifacts -FROM ubuntu:jammy +FROM ubuntu:lunar RUN apt-get update && apt-get install -y \ + jq \ curl \ git \ sed @@ -11,7 +12,7 @@ RUN apt-get update && apt-get install -y \ WORKDIR /usr/src/yarn-project COPY . . -WORKDIR /usr/src/yarn-project/noir-contracts +WORKDIR /usr/src/yarn-project/noir-contracts # Download and extract nargo ENV NARGO_HOME="/usr/src/yarn-project/noir-contracts/.nargo" @@ -19,6 +20,5 @@ RUN ./scripts/install_noirup.sh $(pwd) ENV PATH="/usr/src/yarn-project/noir-contracts/.nargo/bin:${PATH}" RUN ./scripts/install_noir.sh -RUN ./scripts/install_noir_backend.sh -RUN ./scripts/compile_ci.sh +RUN ./scripts/compile_all.sh RUN ./scripts/nargo_test_ci.sh diff --git a/yarn-project/noir-contracts/Nargo.toml b/yarn-project/noir-contracts/Nargo.toml new file mode 100644 index 00000000000..9f6306f3b9a --- /dev/null +++ b/yarn-project/noir-contracts/Nargo.toml @@ -0,0 +1,28 @@ +[workspace] +members = [ + "src/contracts/card_game_contract", + "src/contracts/child_contract", + "src/contracts/docs_example_contract", + "src/contracts/easy_private_token_contract", + "src/contracts/ecdsa_account_contract", + "src/contracts/escrow_contract", + "src/contracts/import_test_contract", + "src/contracts/lending_contract", + "src/contracts/multi_transfer_contract", + "src/contracts/native_token_contract", + "src/contracts/non_native_token_contract", + "src/contracts/parent_contract", + "src/contracts/pending_commitments_contract", + "src/contracts/pokeable_token_contract", + "src/contracts/price_feed_contract", + "src/contracts/private_token_airdrop_contract", + "src/contracts/private_token_contract", + "src/contracts/public_token_contract", + "src/contracts/schnorr_account_contract", + "src/contracts/schnorr_auth_witness_account_contract", + "src/contracts/schnorr_hardcoded_account_contract", + "src/contracts/schnorr_single_key_account_contract", + "src/contracts/test_contract", + "src/contracts/token_contract", + "src/contracts/uniswap_contract", +] diff --git a/yarn-project/noir-contracts/package.json b/yarn-project/noir-contracts/package.json index 35b3dc64ebf..b9d7e5eb3fb 100644 --- a/yarn-project/noir-contracts/package.json +++ b/yarn-project/noir-contracts/package.json @@ -16,10 +16,10 @@ "formatting": "run -T prettier --check ./src && run -T eslint ./src", "formatting:fix": "run -T prettier -w ./src", "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --passWithNoTests", - "noir:clean": "rm -rf ./src/artifacts ./src/types && mkdir -p ../aztec.js/src/abis/ && find ../aztec.js/src/abis/ -mindepth 1 -delete", + "noir:clean": "rm -rf ./src/artifacts ./src/types && mkdir -p ../aztec.js/src/abis/ && find ../aztec.js/src/abis/ -mindepth 1 -delete && rm -rf target/", "noir:build": "./src/scripts/compile.sh", - "noir:build:all": "yarn noir:clean && ./src/scripts/compile.sh $(./scripts/get_all_contracts.sh)", - "noir:types:all": "./scripts/types.sh $(./scripts/get_all_contracts.sh)" + "noir:build:all": "yarn noir:clean && ./scripts/compile_all.sh && ./scripts/types_all.sh", + "noir:types:all": "./scripts/types_all.sh" }, "inherits": [ "../package.common.json" diff --git a/yarn-project/noir-contracts/scripts/catch.sh b/yarn-project/noir-contracts/scripts/catch.sh new file mode 100644 index 00000000000..8a0a894b93f --- /dev/null +++ b/yarn-project/noir-contracts/scripts/catch.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Handler for SIGCHLD, cleanup if child exit with error, used by nargo_test.sh and compile.sh +handle_sigchld() { + for pid in "${pids[@]}"; do + # If process is no longer running + if ! kill -0 "$pid" 2>/dev/null; then + # Wait for the process and get exit status + wait "$pid" + status=$? + + # If exit status is error + if [ $status -ne 0 ]; then + # Create error file + touch "$error_file" + fi + fi + done +} \ No newline at end of file diff --git a/yarn-project/noir-contracts/scripts/compile.sh b/yarn-project/noir-contracts/scripts/compile.sh index c867cc12526..972e9652730 100755 --- a/yarn-project/noir-contracts/scripts/compile.sh +++ b/yarn-project/noir-contracts/scripts/compile.sh @@ -2,6 +2,9 @@ # Compiles noir contracts in parallel, bubbling any compilation errors +source ./scripts/catch.sh +source ./scripts/nargo_check.sh + ROOT=$(pwd) # Error flag file @@ -9,24 +12,6 @@ error_file="/tmp/error.$$" # Array of child PIDs pids=() -# Handler for SIGCHLD, cleanup if child exit with error -handle_sigchld() { - for pid in "${pids[@]}"; do - # If process is no longer running - if ! kill -0 "$pid" 2>/dev/null; then - # Wait for the process and get exit status - wait "$pid" - status=$? - - # If exit status is error - if [ $status -ne 0 ]; then - # Create error file - touch "$error_file" - fi - fi - done -} - # Set SIGCHLD handler trap handle_sigchld SIGCHLD # Trap any ERR signal and call the custom error handler @@ -34,14 +19,15 @@ build() { CONTRACT_NAME=$1 CONTRACT_FOLDER="${CONTRACT_NAME}_contract" echo "Compiling $CONTRACT_NAME..." - cd src/contracts/$CONTRACT_FOLDER - rm -f target/* + rm -f target/${CONTRACT_FOLDER}-* + rm -f target/debug_${CONTRACT_FOLDER}-* # If the compilation fails, rerun the compilation with 'nargo' and show the compiler output. - nargo compile --output-debug; + nargo compile --package $CONTRACT_FOLDER --output-debug; } -echo "Using $(nargo --version)" +# Check nargo version +nargo_check # Build contracts for CONTRACT_NAME in "$@"; do diff --git a/yarn-project/noir-contracts/scripts/compile_all.sh b/yarn-project/noir-contracts/scripts/compile_all.sh new file mode 100755 index 00000000000..5cc04dce318 --- /dev/null +++ b/yarn-project/noir-contracts/scripts/compile_all.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# Compiles all noir contracts + +source ./scripts/nargo_check.sh + +echo "Checking noir version" +nargo_check + +# Runs the compile scripts for all contracts. +echo "Compiling all contracts" + +nargo compile --workspace \ No newline at end of file diff --git a/yarn-project/noir-contracts/scripts/compile_ci.sh b/yarn-project/noir-contracts/scripts/compile_ci.sh deleted file mode 100755 index 56c327d4625..00000000000 --- a/yarn-project/noir-contracts/scripts/compile_ci.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# Runs the compile scripts for all contracts. - -./scripts/compile.sh $(./scripts/get_all_contracts.sh) \ No newline at end of file diff --git a/yarn-project/noir-contracts/scripts/install_noir.sh b/yarn-project/noir-contracts/scripts/install_noir.sh index c0c9d70d729..325e9a56620 100755 --- a/yarn-project/noir-contracts/scripts/install_noir.sh +++ b/yarn-project/noir-contracts/scripts/install_noir.sh @@ -2,7 +2,7 @@ # Script to install noirup and the latest aztec nargo set -eu -VERSION="aztec" +VERSION="${VERSION:-$(jq -r '.tag' ../noir-compiler/src/noir-version.json)}" # Install nargo noirup -v $VERSION diff --git a/yarn-project/noir-contracts/scripts/install_noir_backend.sh b/yarn-project/noir-contracts/scripts/install_noir_backend.sh deleted file mode 100755 index 6cfe1d062ee..00000000000 --- a/yarn-project/noir-contracts/scripts/install_noir_backend.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# Script to install the current barretenberg backend - -set -eu - -BACKEND_NAME="acvm-backend-barretenberg" - -# If the backend is not installed, then install it -if [ -z $(nargo backend ls | grep $BACKEND_NAME) ]; then - echo "Installing $BACKEND_NAME" - nargo backend install $BACKEND_NAME https://github.com/AztecProtocol/barretenberg/releases/download/barretenberg-v0.5.1/barretenberg-x86_64-linux-gnu.tar.gz -fi diff --git a/yarn-project/noir-contracts/scripts/nargo_check.sh b/yarn-project/noir-contracts/scripts/nargo_check.sh new file mode 100644 index 00000000000..7e3e26af8c0 --- /dev/null +++ b/yarn-project/noir-contracts/scripts/nargo_check.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# Check nargo version matches the expected one +nargo_check() { + echo "Using $(nargo --version)" + EXPECTED_VERSION=$(jq -r '.commit' ../noir-compiler/src/noir-version.json) + FOUND_VERSION=$(nargo --version | grep -oP 'git version hash: \K[0-9a-f]+') + if [ "$EXPECTED_VERSION" != "$FOUND_VERSION" ]; then + echo "Expected nargo version $EXPECTED_VERSION but found version $FOUND_VERSION. Aborting." + exit 1 + fi +} diff --git a/yarn-project/noir-contracts/scripts/nargo_test.sh b/yarn-project/noir-contracts/scripts/nargo_test.sh index 5c90fef4d20..5635759ff73 100755 --- a/yarn-project/noir-contracts/scripts/nargo_test.sh +++ b/yarn-project/noir-contracts/scripts/nargo_test.sh @@ -12,6 +12,8 @@ # If testing multiple libraries: # ./scripts/test.sh LIB ... +source ./scripts/catch.sh + ROOT=$(pwd) # Get the project type from the first argument @@ -23,24 +25,6 @@ error_file="/tmp/error.$$" # Array of child PIDs pids=() -# Handler for SIGCHLD, cleanup if child exit with error -handle_sigchld() { - for pid in "${pids[@]}"; do - # If process is no longer running - if ! kill -0 "$pid" 2>/dev/null; then - # Wait for the process and get exit status - wait "$pid" - status=$? - - # If exit status is error - if [ $status -ne 0 ]; then - # Create error file - touch "$error_file" - fi - fi - done -} - # Set SIGCHLD handler trap handle_sigchld SIGCHLD # Trap any ERR signal and call the custom error handler @@ -51,7 +35,7 @@ test() { CONTRACT_FOLDER="${PROJECT_NAME}_contract" echo "Testing contract $PROJECT_NAME..." cd src/contracts/$CONTRACT_FOLDER - nargo test + nargo test --package ${PROJECT_NAME}_contract else echo "Testing library $PROJECT_NAME..." cd ../noir-libs/$PROJECT_NAME diff --git a/yarn-project/noir-contracts/scripts/nargo_test_ci.sh b/yarn-project/noir-contracts/scripts/nargo_test_ci.sh index 103e92c18b8..5a4458d4da5 100755 --- a/yarn-project/noir-contracts/scripts/nargo_test_ci.sh +++ b/yarn-project/noir-contracts/scripts/nargo_test_ci.sh @@ -1,7 +1,5 @@ - #!/bin/bash # Runs tests scripts for all contracts, then for all libraries. - ./scripts/nargo_test.sh CONTRACT $(./scripts/get_all_contracts.sh) ./scripts/nargo_test.sh LIB $(./scripts/get_all_libraries.sh) \ No newline at end of file diff --git a/yarn-project/noir-contracts/scripts/types_ci.sh b/yarn-project/noir-contracts/scripts/types_all.sh similarity index 100% rename from yarn-project/noir-contracts/scripts/types_ci.sh rename to yarn-project/noir-contracts/scripts/types_all.sh diff --git a/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr index 75aca44a9f7..a9fb5b021ba 100644 --- a/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr @@ -91,6 +91,7 @@ contract NonNativeToken { // Mint Private Function // This mint function differs to the typical token mint function as it only allows minting // upon consuming valid messages from a token portal contract + // docs:start:non_native_token_mint #[aztec(private)] fn mint( amount: Field, @@ -110,10 +111,12 @@ contract NonNativeToken { let balance = storage.balances.at(owner); increment(balance, amount, owner); } + // docs:end:non_native_token_mint // Withdraws using user's private balance. // @dev Destroys 2 of user's notes and sends a message to the L1 portal contract. That message can then be consumed // by calling the `withdraw` function on the L1 portal contract (assuming the args are set correctly). + // docs:start:non_native_token_withdraw #[aztec(private)] fn withdraw( amount: Field, @@ -129,6 +132,7 @@ contract NonNativeToken { let content = get_withdraw_content_hash(amount, recipient, callerOnL1); context.message_portal(content); } + // docs:end:non_native_token_withdraw // Mint Public Function // This mint function differs to the typical token mint function as it only allows minting diff --git a/yarn-project/noir-contracts/src/contracts/schnorr_auth_witness_account_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/schnorr_auth_witness_account_contract/src/main.nr index 749c1b04276..335ac5b9e98 100644 --- a/yarn-project/noir-contracts/src/contracts/schnorr_auth_witness_account_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/schnorr_auth_witness_account_contract/src/main.nr @@ -2,12 +2,57 @@ mod util; mod auth_oracle; contract SchnorrAuthWitnessAccount { - use dep::std::hash::pedersen_with_separator; - use dep::aztec::entrypoint::EntrypointPayload; - use dep::aztec::constants_gen::GENERATOR_INDEX__SIGNATURE_PAYLOAD; + use dep::std::{ + hash::pedersen_with_separator, + option::Option, + }; + + use dep::aztec::{ + entrypoint::EntrypointPayload, + constants_gen::GENERATOR_INDEX__SIGNATURE_PAYLOAD, + oracle::compute_selector::compute_selector, + context::{ + PrivateContext, + PublicContext, + Context, + }, + state_vars::{ + map::Map, + public_state::PublicState, + }, + types::type_serialisation::{ + field_serialisation::{ + FieldSerialisationMethods, + FIELD_SERIALISED_LEN, + } + } + }; + use crate::util::recover_address; use crate::auth_oracle::get_auth_witness; + struct Storage { + approved_action: Map>, + } + + impl Storage { + fn init(context: Context) -> pub Self { + Storage { + approved_action: Map::new( + context, + 1, + |context, slot| { + PublicState::new( + context, + slot, + FieldSerialisationMethods, + ) + }, + ), + } + } + } + #[aztec(private)] fn constructor() {} @@ -19,7 +64,7 @@ contract SchnorrAuthWitnessAccount { payload.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD )[0]; - _inner_is_valid(message_hash, context.this_address()); + assert(_inner_is_valid(message_hash, context.this_address())); payload.execute_calls(&mut context); } @@ -27,15 +72,54 @@ contract SchnorrAuthWitnessAccount { fn is_valid( message_hash: Field ) -> Field { - _inner_is_valid(message_hash, context.this_address()); - 0xe86ab4ff + if (_inner_is_valid(message_hash, context.this_address())){ + 0xe86ab4ff + } else { + 0 + } + } + + #[aztec(public)] + fn is_valid_public( + message_hash: Field, + ) -> Field { + let storage = Storage::init(Context::public(&mut context)); + let value = storage.approved_action.at(message_hash).read(); + if (value == 1){ + 0xe86ab4ff + } else { + 0 + } + } + + #[aztec(private)] + fn set_is_valid_storage( + message_hash: Field, + value: Field, + ) { + assert((value == 0) | (value == 1), "value must be a boolean"); + assert(context.msg_sender() == context.this_address(), "only the owner can set the storage"); + // assert(_inner_is_valid(message_hash, context.this_address()), "only the owner can set the storage"); + + let selector = compute_selector("_set_is_valid_storage(Field,Field)"); + let _void = context.call_public_function(context.this_address(), selector, [message_hash, value]); + } + + #[aztec(public)] + internal fn _set_is_valid_storage( + message_hash: Field, + value: Field, + ) { + let storage = Storage::init(Context::public(&mut context)); + storage.approved_action.at(message_hash).write(value); } fn _inner_is_valid( message_hash: Field, address: Field, - ) { + ) -> pub bool{ let witness = get_auth_witness(message_hash); assert(recover_address(message_hash, witness) == address); + true } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/token_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/token_contract/Nargo.toml new file mode 100644 index 00000000000..cece7de949c --- /dev/null +++ b/yarn-project/noir-contracts/src/contracts/token_contract/Nargo.toml @@ -0,0 +1,10 @@ +[package] +name = "token_contract" +authors = [""] +compiler_version = "0.1" +type = "contract" + +[dependencies] +aztec = { path = "../../../../noir-libs/aztec-noir" } +value_note = { path = "../../../../noir-libs/value-note"} +safe_math = { path = "../../../../noir-libs/safe-math" } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/token_contract/src/account_interface.nr b/yarn-project/noir-contracts/src/contracts/token_contract/src/account_interface.nr new file mode 100644 index 00000000000..7ee25a9eaf9 --- /dev/null +++ b/yarn-project/noir-contracts/src/contracts/token_contract/src/account_interface.nr @@ -0,0 +1,52 @@ + +use dep::std::option::Option; + +use dep::aztec::context::{ + PrivateContext, + PublicContext, + Context, +}; + +struct AccountContract { + address: Field, +} + +impl AccountContract { + fn at(address: Field) -> Self { + Self { + address, + } + } + + // Will call is_valid(_public) on the account contract + // Will insert the nullifier into the context + // Will revert if the authorization fails + fn is_valid( + self: Self, + context: Context, + message_hash: Field + ) { + let return_value = if context.private.is_some() { + let context = context.private.unwrap(); + context.push_new_nullifier(message_hash, 0); + // @todo @lherskind Call should be static but unsupported atm + context.call_private_function( + self.address, + 0xe86ab4ff, + [message_hash] + )[0] + } else if context.public.is_some() { + let context = context.public.unwrap(); + context.push_new_nullifier(message_hash, 0); + // @todo @lherskind Call should be static but unsupported atm + (*context).call_public_function( + self.address, + 0xf3661153, + [message_hash] + )[0] + } else { + 0 + }; + assert(return_value == 0xe86ab4ff, "invalid call"); + } +} \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/token_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/token_contract/src/main.nr new file mode 100644 index 00000000000..677998e7d1e --- /dev/null +++ b/yarn-project/noir-contracts/src/contracts/token_contract/src/main.nr @@ -0,0 +1,419 @@ +mod types; +mod account_interface; +mod util; + +// Minimal token implementation that supports `AuthWit` accounts. +// The auth message follows a similar pattern to the cross-chain message and includes a designated caller. +// The designated caller is ALWAYS used here, and not based on a flag as cross-chain. +// message hash = H([caller, contract, selector, ...args]) +// To be read as `caller` calls function at `contract` defined by `selector` with `args` +// Including a nonce in the message hash ensures that the message can only be used once. + +contract Token { + // Libs + use dep::std::option::Option; + + use dep::safe_math::SafeU120; + + use dep::value_note::{ + balance_utils, + utils::{increment, decrement}, + value_note::{VALUE_NOTE_LEN, ValueNoteMethods, ValueNote}, + }; + + use dep::aztec::{ + note::{ + note_header::NoteHeader, + utils as note_utils, + }, + context::{PrivateContext, PublicContext, Context}, + state_vars::{map::Map, public_state::PublicState, set::Set}, + types::type_serialisation::field_serialisation::{ + FieldSerialisationMethods, FIELD_SERIALISED_LEN, + }, + oracle::compute_selector::compute_selector, + }; + + use crate::types::{AztecAddress, TransparentNote, TransparentNoteMethods, TRANSPARENT_NOTE_LEN}; + use crate::account_interface::AccountContract; + use crate::util::{compute_message_hash}; + + struct Storage { + admin: PublicState, + minters: Map>, + balances: Map>, + total_supply: PublicState, + pending_shields: Set, + public_balances: Map>, + } + + impl Storage { + fn init(context: Context) -> pub Self { + Storage { + admin: PublicState::new( + context, + 1, + FieldSerialisationMethods, + ), + minters: Map::new( + context, + 2, + |context, slot| { + PublicState::new( + context, + slot, + FieldSerialisationMethods, + ) + }, + ), + balances: Map::new( + context, + 3, + |context, slot| { + Set::new(context, slot, ValueNoteMethods) + }, + ), + total_supply: PublicState::new( + context, + 4, + FieldSerialisationMethods, + ), + pending_shields: Set::new(context, 5, TransparentNoteMethods), + public_balances: Map::new( + context, + 6, + |context, slot| { + PublicState::new( + context, + slot, + FieldSerialisationMethods, + ) + }, + ), + } + } + } + + #[aztec(private)] + fn constructor() { + // Currently not possible to execute public calls from constructor as code not yet available to sequencer. + // let selector = compute_selector("_initialize((Field))"); + // let _callStackItem = context.call_public_function(context.this_address(), selector, [context.msg_sender()]); + } + + #[aztec(public)] + fn set_admin( + new_admin: AztecAddress, + ) { + let storage = Storage::init(Context::public(&mut context)); + assert(storage.admin.read() == context.msg_sender(), "caller is not admin"); + storage.admin.write(new_admin.address); + } + + #[aztec(public)] + fn set_minter( + minter: AztecAddress, + approve: Field, + ) { + assert((approve == 1) | (approve == 0), "not providing boolean"); + let storage = Storage::init(Context::public(&mut context)); + assert(storage.admin.read() == context.msg_sender(), "caller is not admin"); + storage.minters.at(minter.address).write(approve as Field); + } + + #[aztec(public)] + fn mint_public( + to: AztecAddress, + amount: Field, + ) -> Field { + let storage = Storage::init(Context::public(&mut context)); + assert(storage.minters.at(context.msg_sender()).read() == 1, "caller is not minter"); + let amount = SafeU120::new(amount); + let new_balance = SafeU120::new(storage.public_balances.at(to.address).read()).add(amount); + let supply = SafeU120::new(storage.total_supply.read()).add(amount); + + storage.public_balances.at(to.address).write(new_balance.value as Field); + storage.total_supply.write(supply.value as Field); + 1 + } + + #[aztec(public)] + fn mint_private( + amount: Field, + secret_hash: Field, + ) -> Field { + let storage = Storage::init(Context::public(&mut context)); + assert(storage.minters.at(context.msg_sender()).read() == 1, "caller is not minter"); + let pending_shields = storage.pending_shields; + let mut note = TransparentNote::new(amount, secret_hash); + let supply = SafeU120::new(storage.total_supply.read()).add(SafeU120::new(amount)); + + storage.total_supply.write(supply.value as Field); + pending_shields.insert_from_public(&mut note); + 1 + } + + #[aztec(public)] + fn shield( + from: AztecAddress, + amount: Field, + secret_hash: Field, + nonce: Field, + ) -> Field { + let storage = Storage::init(Context::public(&mut context)); + + if (from.address != context.msg_sender()) { + // The redeem is only spendable once, so we need to ensure that you cannot insert multiple shields from the same message. + let selector = compute_selector("shield((Field),Field,Field,Field)"); + let message_field = compute_message_hash([context.msg_sender(), context.this_address(), selector, from.address, amount, secret_hash, nonce]); + AccountContract::at(from.address).is_valid(Context::public(&mut context), message_field); + } else { + assert(nonce == 0, "invalid nonce"); + } + + let amount = SafeU120::new(amount); + let from_balance = SafeU120::new(storage.public_balances.at(from.address).read()).sub(amount); + + let pending_shields = storage.pending_shields; + let mut note = TransparentNote::new(amount.value as Field, secret_hash); + + storage.public_balances.at(from.address).write(from_balance.value as Field); + pending_shields.insert_from_public(&mut note); + 1 + } + + #[aztec(public)] + fn transfer_public( + from: AztecAddress, + to: AztecAddress, + amount: Field, + nonce: Field, + ) -> Field { + let storage = Storage::init(Context::public(&mut context)); + + if (from.address != context.msg_sender()) { + let selector = compute_selector("transfer_public((Field),(Field),Field,Field)"); + let message_field = compute_message_hash([context.msg_sender(), context.this_address(), selector, from.address, to.address, amount, nonce]); + AccountContract::at(from.address).is_valid(Context::public(&mut context), message_field); + } else { + assert(nonce == 0, "invalid nonce"); + } + + let amount = SafeU120::new(amount); + let from_balance = SafeU120::new(storage.public_balances.at(from.address).read()).sub(amount); + storage.public_balances.at(from.address).write(from_balance.value as Field); + + let to_balance = SafeU120::new(storage.public_balances.at(to.address).read()).add(amount); + storage.public_balances.at(to.address).write(to_balance.value as Field); + + 1 + } + + #[aztec(public)] + fn burn_public( + from: AztecAddress, + amount: Field, + nonce: Field, + ) -> Field { + let storage = Storage::init(Context::public(&mut context)); + + if (from.address != context.msg_sender()) { + let selector = compute_selector("burn_public((Field),Field,Field)"); + let message_field = compute_message_hash([context.msg_sender(), context.this_address(), selector, from.address, amount, nonce]); + AccountContract::at(from.address).is_valid(Context::public(&mut context), message_field); + } else { + assert(nonce == 0, "invalid nonce"); + } + + let amount = SafeU120::new(amount); + let from_balance = SafeU120::new(storage.public_balances.at(from.address).read()).sub(amount); + storage.public_balances.at(from.address).write(from_balance.value as Field); + + let new_supply = SafeU120::new(storage.total_supply.read()).sub(amount); + storage.total_supply.write(new_supply.value as Field); + + 1 + } + + #[aztec(private)] + fn redeem_shield( + to: AztecAddress, + amount: Field, + secret: Field, + ) -> Field { + let storage = Storage::init(Context::private(&mut context)); + let pending_shields = storage.pending_shields; + let balance = storage.balances.at(to.address); + let public_note = TransparentNote::new_from_secret(amount, secret); + + pending_shields.assert_contains_and_remove_publicly_created(public_note); + increment(balance, amount, to.address); + + 1 + } + + #[aztec(private)] + fn unshield( + from: AztecAddress, + to: AztecAddress, + amount: Field, + nonce: Field, + ) -> Field { + let storage = Storage::init(Context::private(&mut context)); + + if (from.address != context.msg_sender()) { + let selector = compute_selector("unshield((Field),(Field),Field,Field)"); + let message_field = compute_message_hash([context.msg_sender(), context.this_address(), selector, from.address, to.address, amount, nonce]); + AccountContract::at(from.address).is_valid(Context::private(&mut context), message_field); + } else { + assert(nonce == 0, "invalid nonce"); + } + + let from_balance = storage.balances.at(from.address); + decrement(from_balance, amount, from.address); + + let selector = compute_selector("_increase_public_balance((Field),Field)"); + let _void = context.call_public_function(context.this_address(), selector, [to.address, amount]); + + 1 + } + + #[aztec(private)] + fn transfer( + from: AztecAddress, + to: AztecAddress, + amount: Field, + nonce: Field, + ) -> Field { + let storage = Storage::init(Context::private(&mut context)); + + if (from.address != context.msg_sender()) { + let selector = compute_selector("transfer((Field),(Field),Field,Field)"); + let message_field = compute_message_hash([context.msg_sender(), context.this_address(), selector, from.address, to.address, amount, nonce]); + AccountContract::at(from.address).is_valid(Context::private(&mut context), message_field); + } else { + assert(nonce == 0, "invalid nonce"); + } + + let from_balance = storage.balances.at(from.address); + let to_balance = storage.balances.at(to.address); + + decrement(from_balance, amount, from.address); + increment(to_balance, amount, to.address); + + 1 + } + + #[aztec(private)] + fn burn( + from: AztecAddress, + amount: Field, + nonce: Field, + ) -> Field { + let storage = Storage::init(Context::private(&mut context)); + + if (from.address != context.msg_sender()) { + let selector = compute_selector("burn((Field),Field,Field)"); + let message_field = compute_message_hash([context.msg_sender(), context.this_address(), selector, from.address, amount, nonce]); + AccountContract::at(from.address).is_valid(Context::private(&mut context), message_field); + } else { + assert(nonce == 0, "invalid nonce"); + } + + let from_balance = storage.balances.at(from.address); + + decrement(from_balance, amount, from.address); + + let selector = compute_selector("_reduce_total_supply(Field)"); + let _void = context.call_public_function(context.this_address(), selector, [amount]); + + 1 + } + + /// SHOULD BE Internal /// + + // We cannot do this from the constructor currently + // Since this should be internal, for now, we ignore the safety checks of it, as they are + // enforced by it being internal and only called from the constructor. + #[aztec(public)] + fn _initialize( + new_admin: AztecAddress, + ) { + let storage = Storage::init(Context::public(&mut context)); + storage.admin.write(new_admin.address); + storage.minters.at(new_admin.address).write(1); + } + + /// Internal /// + + #[aztec(public)] + internal fn _increase_public_balance( + to: AztecAddress, + amount: Field, + ) { + let storage = Storage::init(Context::public(&mut context)); + let new_balance = SafeU120::new(storage.public_balances.at(to.address).read()).add(SafeU120::new(amount)); + storage.public_balances.at(to.address).write(new_balance.value as Field); + } + + #[aztec(public)] + internal fn _reduce_total_supply( + amount: Field, + ) { + // Only to be called from burn. + let storage = Storage::init(Context::public(&mut context)); + let new_supply = SafeU120::new(storage.total_supply.read()).sub(SafeU120::new(amount)); + storage.total_supply.write(new_supply.value as Field); + } + + /// Unconstrained /// + + unconstrained fn admin() -> Field { + let storage = Storage::init(Context::none()); + storage.admin.read() + } + + unconstrained fn is_minter( + minter: AztecAddress, + ) -> bool { + let storage = Storage::init(Context::none()); + storage.minters.at(minter.address).read() as bool + } + + unconstrained fn total_supply() -> Field { + let storage = Storage::init(Context::none()); + storage.total_supply.read() + } + + unconstrained fn balance_of_private( + owner: AztecAddress, + ) -> Field { + let storage = Storage::init(Context::none()); + let owner_balance = storage.balances.at(owner.address); + + balance_utils::get_balance(owner_balance) + } + + unconstrained fn balance_of_public( + owner: AztecAddress, + ) -> Field { + let storage = Storage::init(Context::none()); + storage.public_balances.at(owner.address).read() + } + + // Below this point is the stuff of nightmares. + // This should ideally not be required. What do we do if vastly different types of preimages? + + // Computes note hash and nullifier. + // Note 1: Needs to be defined by every contract producing logs. + // Note 2: Having it in all the contracts gives us the ability to compute the note hash and nullifier differently for different kind of notes. + unconstrained fn compute_note_hash_and_nullifier(contract_address: Field, nonce: Field, storage_slot: Field, preimage: [Field; VALUE_NOTE_LEN]) -> [Field; 4] { + let note_header = NoteHeader { contract_address, nonce, storage_slot }; + if (storage_slot == 5) { + note_utils::compute_note_hash_and_nullifier(TransparentNoteMethods, note_header, preimage) + } else { + note_utils::compute_note_hash_and_nullifier(ValueNoteMethods, note_header, preimage) + } + } + +} diff --git a/yarn-project/noir-contracts/src/contracts/token_contract/src/types.nr b/yarn-project/noir-contracts/src/contracts/token_contract/src/types.nr new file mode 100644 index 00000000000..9161fba1018 --- /dev/null +++ b/yarn-project/noir-contracts/src/contracts/token_contract/src/types.nr @@ -0,0 +1,176 @@ +use dep::std::hash::pedersen; +use dep::std::hash::pedersen_with_separator; +use dep::aztec::note::{ + note_header::NoteHeader, + note_interface::NoteInterface, + utils::compute_siloed_note_hash, +}; +use dep::aztec::constants_gen::GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET; + +global TRANSPARENT_NOTE_LEN: Field = 2; + + + +struct AztecAddress { + address: Field +} + +impl AztecAddress { + fn new(address: Field) -> Self { + Self { + address + } + } + + fn serialize(self: Self) -> [Field; 1] { + [self.address] + } + + fn deserialize(fields: [Field; 1]) -> Self { + Self { + address: fields[0] + } + } +} + +struct EthereumAddress { + address: Field +} + +impl EthereumAddress { + fn new(address: Field) -> Self { + Self { + address + } + } + + + fn serialize(self: Self) -> [Field; 1] { + [self.address] + } + + fn deserialize(fields: [Field; 1]) -> Self { + Self { + address: fields[0] + } + } +} + + + +// Transparent note represents a note that is created in the clear (public execution), +// but can only be spent by those that know the preimage of the "secret_hash" +struct TransparentNote { + amount: Field, + secret_hash: Field, + // the fields below are not serialised/deserialised + secret: Field, + header: NoteHeader, +} + +impl TransparentNote { + + // CONSTRUCTORS + + fn new(amount: Field, secret_hash: Field) -> Self { + TransparentNote { + amount: amount, + secret_hash: secret_hash, + secret: 0, + header: NoteHeader::empty(), + } + } + + // new oracle call primitive + // get me the secret corresponding to this hash + fn new_from_secret(amount: Field, secret: Field) -> Self { + TransparentNote { + amount: amount, + secret_hash: TransparentNote::compute_secret_hash(secret), + secret: secret, + header: NoteHeader::empty(), + } + } + + + // STANDARD NOTE_INTERFACE FUNCTIONS + + fn serialise(self) -> [Field; TRANSPARENT_NOTE_LEN] { + [self.amount, self.secret_hash] + } + + fn deserialise(preimage: [Field; TRANSPARENT_NOTE_LEN]) -> Self { + TransparentNote { + amount: preimage[0], + secret_hash: preimage[1], + secret: 0, + header: NoteHeader::empty(), + } + } + + fn compute_note_hash(self) -> Field { + // TODO(#1205) Should use a non-zero generator index. + dep::std::hash::pedersen([ + self.amount, + self.secret_hash, + ])[0] + } + + fn compute_nullifier(self) -> Field { + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386): should use + // `compute_note_hash_for_read_or_nullify` once public functions inject nonce! + let siloed_note_hash = compute_siloed_note_hash(TransparentNoteMethods, self); + // TODO(#1205) Should use a non-zero generator index. + pedersen([self.secret, siloed_note_hash])[0] + } + + fn set_header(&mut self, header: NoteHeader) { + self.header = header; + } + + + // CUSTOM FUNCTIONS FOR THIS NOTE TYPE + + fn compute_secret_hash(secret: Field) -> Field { + // TODO(#1205) This is probably not the right index to use + pedersen_with_separator([secret], GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET)[0] + } + + fn knows_secret(self, secret: Field) { + let hash = TransparentNote::compute_secret_hash(secret); + assert(self.secret_hash == hash); + } +} + +fn deserialise(preimage: [Field; TRANSPARENT_NOTE_LEN]) -> TransparentNote { + TransparentNote::deserialise(preimage) +} + +fn serialise(note: TransparentNote) -> [Field; TRANSPARENT_NOTE_LEN] { + note.serialise() +} + +fn compute_note_hash(note: TransparentNote) -> Field { + note.compute_note_hash() +} + +fn compute_nullifier(note: TransparentNote) -> Field { + note.compute_nullifier() +} + +fn get_header(note: TransparentNote) -> NoteHeader { + note.header +} + +fn set_header(note: &mut TransparentNote, header: NoteHeader) { + note.set_header(header) +} + +global TransparentNoteMethods = NoteInterface { + deserialise, + serialise, + compute_note_hash, + compute_nullifier, + get_header, + set_header, +}; \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/token_contract/src/util.nr b/yarn-project/noir-contracts/src/contracts/token_contract/src/util.nr new file mode 100644 index 00000000000..09d030e3318 --- /dev/null +++ b/yarn-project/noir-contracts/src/contracts/token_contract/src/util.nr @@ -0,0 +1,8 @@ +use dep::std::hash::{pedersen_with_separator}; +use dep::aztec::constants_gen::GENERATOR_INDEX__SIGNATURE_PAYLOAD; + +fn compute_message_hash(args: [Field; N]) -> Field { + // @todo @lherskind We should probably use a separate generator for this, + // to avoid any potential collisions with payloads. + pedersen_with_separator(args, GENERATOR_INDEX__SIGNATURE_PAYLOAD)[0] +} \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/scripts/compile.sh b/yarn-project/noir-contracts/src/scripts/compile.sh index 3edb7482cad..551f7a74869 100755 --- a/yarn-project/noir-contracts/src/scripts/compile.sh +++ b/yarn-project/noir-contracts/src/scripts/compile.sh @@ -13,4 +13,5 @@ set -euo pipefail; # Run build scripts ./scripts/compile.sh "$@" -./scripts/types.sh "$@" +echo "Generating types" +./scripts/types.sh "$@" \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/scripts/copy_output.ts b/yarn-project/noir-contracts/src/scripts/copy_output.ts index 1b6150fe58b..05da55f50be 100644 --- a/yarn-project/noir-contracts/src/scripts/copy_output.ts +++ b/yarn-project/noir-contracts/src/scripts/copy_output.ts @@ -50,19 +50,18 @@ const main = () => { if (!name) throw new Error(`Missing argument contract name`); const projectName = `${snakeCase(name)}_contract`; - const projectDirPath = `src/contracts/${projectName}`; const contractName = upperFirst(camelCase(name)); const artifactFile = `${projectName}-${contractName}.json`; - const buildJsonFilePath = `${projectDirPath}/target/${artifactFile}`; + const buildJsonFilePath = `./target/${artifactFile}`; const buildJson = JSON.parse(readFileSync(buildJsonFilePath).toString()); const debugArtifactFile = `debug_${artifactFile}`; let debug = undefined; try { - const debugJsonFilePath = `${projectDirPath}/target/${debugArtifactFile}`; + const debugJsonFilePath = `./target/${debugArtifactFile}`; const debugJson = JSON.parse(readFileSync(debugJsonFilePath).toString()); if (debugJson) { debug = debugJson; @@ -91,6 +90,7 @@ const main = () => { // Write a .nr contract interface, for consumption by other Noir Contracts if (INTERFACE_CONTRACTS.includes(name)) { + const projectDirPath = `src/contracts/${projectName}`; const noirInterfaceDestFilePath = `${projectDirPath}/src/interface.nr`; try { writeFileSync(noirInterfaceDestFilePath, generateNoirContractInterface(artifactJson)); diff --git a/yarn-project/noir-libs/aztec-noir/src/context.nr b/yarn-project/noir-libs/aztec-noir/src/context.nr index 7043ec87b76..250853c2eab 100644 --- a/yarn-project/noir-libs/aztec-noir/src/context.nr +++ b/yarn-project/noir-libs/aztec-noir/src/context.nr @@ -162,13 +162,25 @@ impl PrivateContext { self.nullified_commitments.push(nullified_commitment); } - fn message_portal(&mut self, content: Field) { + // docs:start:context_message_portal + fn message_portal(&mut self, content: Field) + // docs:end:context_message_portal + { self.new_l2_to_l1_msgs.push(content); } // PrivateContextInputs must be temporarily passed in to prevent too many unknowns // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned - fn consume_l1_to_l2_message(&mut self, inputs: abi::PrivateContextInputs, msg_key: Field, content: Field, secret: Field) { + // docs:start:context_consume_l1_to_l2_message + fn consume_l1_to_l2_message( + &mut self, + inputs: abi::PrivateContextInputs, + msg_key: Field, + content: Field, + secret: Field + ) + // docs:end:context_consume_l1_to_l2_message + { let nullifier = process_l1_to_l2_message(inputs.block_data.l1_to_l2_messages_tree_root, inputs.call_context.storage_contract_address, msg_key, content, secret); // Push nullifier (and the "commitment" corresponding to this can be "empty") diff --git a/yarn-project/noir-libs/safe-math/src/safe_u120.nr b/yarn-project/noir-libs/safe-math/src/safe_u120.nr index 47f28f72169..ccb6ab906a8 100644 --- a/yarn-project/noir-libs/safe-math/src/safe_u120.nr +++ b/yarn-project/noir-libs/safe-math/src/safe_u120.nr @@ -21,7 +21,7 @@ impl SafeU120 { // Check that it actually will fit. Spending a lot of constraints here :grimacing: let bytes = value.to_be_bytes(32); for i in 0..17 { - assert(bytes[i] == 0); + assert(bytes[i] == 0, "Value too large for SafeU120"); } Self { value: value as u120 @@ -45,7 +45,7 @@ impl SafeU120 { self: Self, b: Self, ) -> Self { - assert(self.value >= b.value); + assert(self.value >= b.value, "Underflow"); Self { value: self.value - b.value } @@ -56,7 +56,7 @@ impl SafeU120 { b: Self, ) -> Self { let c: u120 = self.value + b.value; - assert(c >= self.value); + assert(c >= self.value, "Overflow"); Self { value: c } @@ -68,7 +68,7 @@ impl SafeU120 { ) -> Self { let c: u120 = self.value * b.value; if !b.is_zero() { - assert(c / b.value == self.value); + assert(c / b.value == self.value, "Overflow"); } Self { value: c @@ -79,7 +79,7 @@ impl SafeU120 { self: Self, b: Self, ) -> Self { - assert(!b.is_zero()); + assert(!b.is_zero(), "Divide by zero"); Self { value: self.value / b.value } @@ -99,7 +99,7 @@ impl SafeU120 { divisor: Self ) -> Self { let c = self.mul(b); - assert(!divisor.is_zero()); + assert(!divisor.is_zero(), "Divide by zero"); let adder = ((self.value * b.value % divisor.value) as u120 > 0) as u120; c.div(divisor).add(Self {value: adder}) } diff --git a/yarn-project/package.json b/yarn-project/package.json index 6e84f6160b8..b02bb1c561f 100644 --- a/yarn-project/package.json +++ b/yarn-project/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "prepare": "node ./yarn-project-base/scripts/update_package_jsons.mjs && yarn workspaces foreach run prepare && workspaces-to-typescript-project-references --tsconfigPath tsconfig.json && prettier -w */tsconfig.json", - "prepare:check": "node ./yarn-project-base/scripts/update_package_jsons.mjs --check && yarn workspaces foreach run prepare:check && workspaces-to-typescript-project-references --check --tsconfigPath tsconfig.json", + "prepare:check": "node ./yarn-project-base/scripts/update_package_jsons.mjs --check && workspaces-to-typescript-project-references --check --tsconfigPath tsconfig.json", "docs": "typedoc --out docs/dist && cd docs && yarn serve", "formatting": "yarn workspaces foreach -p -v run formatting", "formatting:fix": "yarn workspaces foreach -p -v run formatting:fix", diff --git a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts index e675e093de9..8f715f94a51 100644 --- a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts +++ b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts @@ -384,7 +384,7 @@ describe('sequencer/solo_block_builder', () => { const [l2Block] = await builder.buildL2Block(globalVariables, txs, l1ToL2Messages); expect(l2Block.number).toEqual(blockNumber); - }, 20_000); + }, 40_000); // This test specifically tests nullifier values which previously caused e2e_private_token test to fail it('e2e_private_token edge case regression test on nullifier values', async () => { diff --git a/yarn-project/sequencer-client/src/publisher/viem-tx-sender.ts b/yarn-project/sequencer-client/src/publisher/viem-tx-sender.ts index f5c1be30b53..d9e112e8d0a 100644 --- a/yarn-project/sequencer-client/src/publisher/viem-tx-sender.ts +++ b/yarn-project/sequencer-client/src/publisher/viem-tx-sender.ts @@ -1,7 +1,7 @@ import { createEthereumChain } from '@aztec/ethereum'; import { createDebugLogger } from '@aztec/foundation/log'; import { ContractDeploymentEmitterAbi, RollupAbi } from '@aztec/l1-artifacts'; -import { ExtendedContractData } from '@aztec/types'; +import { BLOB_SIZE_IN_BYTES, ExtendedContractData } from '@aztec/types'; import { GetContractReturnType, @@ -141,6 +141,9 @@ export class ViemTxSender implements L1PublisherTxSender { `0x${extendedContractData.bytecode.toString('hex')}`, ] as const; + const codeSize = extendedContractData.bytecode.length; + this.log(`Bytecode is ${codeSize} bytes and require ${codeSize / BLOB_SIZE_IN_BYTES} blobs`); + const gas = await this.contractDeploymentEmitterContract.estimateGas.emitContractDeployment(args, { account: this.account, }); diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.ts index 8f4afb9cc23..083df1ac5a2 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.ts @@ -129,10 +129,11 @@ export class Sequencer { return; } - this.log(`Processing ${validTxs.length} txs...`); + const blockNumber = (await this.l2BlockSource.getBlockNumber()) + 1; + + this.log.info(`Building block ${blockNumber} with ${validTxs.length} transactions...`); this.state = SequencerState.CREATING_BLOCK; - const blockNumber = (await this.l2BlockSource.getBlockNumber()) + 1; const newGlobalVariables = await this.globalsBuilder.buildGlobalVariables(new Fr(blockNumber)); const prevGlobalVariables = (await this.l2BlockSource.getL2Block(-1))?.globalVariables ?? GlobalVariables.empty(); @@ -146,7 +147,11 @@ export class Sequencer { await this.p2pClient.deleteTxs(await Tx.getHashes(failedTxData)); } - if (processedTxs.length === 0) { + // Only accept processed transactions that are not double-spends + // public functions emitting nullifiers would pass earlier check but fail here + const processedValidTxs = await this.takeValidProcessedTxs(processedTxs); + + if (processedValidTxs.length === 0) { this.log('No txs processed correctly to build block. Exiting'); return; } @@ -157,16 +162,16 @@ export class Sequencer { this.log('Successfully retrieved L1 to L2 messages from contract'); // Build the new block by running the rollup circuits - this.log(`Assembling block with txs ${processedTxs.map(tx => tx.hash).join(', ')}`); + this.log(`Assembling block with txs ${processedValidTxs.map(tx => tx.hash).join(', ')}`); const emptyTx = await processor.makeEmptyProcessedTx(); - const block = await this.buildBlock(processedTxs, l1ToL2Messages, emptyTx, newGlobalVariables); + const block = await this.buildBlock(processedValidTxs, l1ToL2Messages, emptyTx, newGlobalVariables); this.log(`Assembled block ${block.number}`); await this.publishExtendedContractData(validTxs, block); await this.publishL2Block(block); - this.log.info(`Submitted rollup block ${block.number} with ${processedTxs.length} transactions`); + this.log.info(`Submitted rollup block ${block.number} with ${processedValidTxs.length} transactions`); } catch (err) { this.log.error(err); this.log.error(`Rolling back world state DB`); @@ -248,6 +253,13 @@ export class Sequencer { return validTxs; } + protected async takeValidProcessedTxs(txs: ProcessedTx[]) { + const isDoubleSpends = await Promise.all(txs.map(async tx => await this.isTxDoubleSpend(tx as unknown as Tx))); + const doubleSpends = txs.filter((tx, index) => isDoubleSpends[index]).map(tx => tx.hash); + await this.p2pClient.deleteTxs(doubleSpends); + return txs.filter((tx, index) => !isDoubleSpends[index]); + } + /** * Returns whether the previous block sent has been mined, and all dependencies have caught up with it. * @returns Boolean indicating if our dependencies are synced to the latest block. diff --git a/yarn-project/types/src/constants.ts b/yarn-project/types/src/constants.ts index 941eb52db9c..bd7f22b154c 100644 --- a/yarn-project/types/src/constants.ts +++ b/yarn-project/types/src/constants.ts @@ -1 +1,2 @@ export const INITIAL_L2_BLOCK_NUM = 1; +export const BLOB_SIZE_IN_BYTES = 31 * 4096; diff --git a/yarn-project/yarn-project-base/Dockerfile b/yarn-project/yarn-project-base/Dockerfile index 29f29172995..ffcf3abb8c2 100644 --- a/yarn-project/yarn-project-base/Dockerfile +++ b/yarn-project/yarn-project-base/Dockerfile @@ -8,9 +8,9 @@ RUN apk update && apk add --no-cache build-base git python3 curl bash jq sed COPY --from=contracts /usr/src/l1-contracts/out /usr/src/l1-contracts/out COPY --from=circuits /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm -COPY --from=circuits /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm /usr/src/circuits/cpp/barretenberg/cpp/build-wasm/bin/primitives.wasm -COPY --from=circuits /usr/src/circuits/cpp/barretenberg/cpp/srs_db/download_ignition.sh /usr/src/circuits/cpp/barretenberg/cpp/srs_db/download_ignition.sh -WORKDIR /usr/src/circuits/cpp/barretenberg/cpp/srs_db +COPY --from=circuits /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm /usr/src/barretenberg/cpp/build-wasm/bin/primitives.wasm +COPY --from=circuits /usr/src/barretenberg/cpp/srs_db/download_ignition.sh /usr/src/barretenberg/cpp/srs_db/download_ignition.sh +WORKDIR /usr/src/barretenberg/cpp/srs_db RUN ./download_ignition.sh 1 WORKDIR /usr/src/yarn-project @@ -71,11 +71,6 @@ RUN /bin/bash -c '\ [[ $F =~ (.*-) ]] && ln $F /root/.yarn/berry/cache/${BASH_REMATCH[1]}8.zip; \ done' -# We hack around the build context by copying the build manifest to and from the yarn_project root, -# see the comment in .circleci/config.yml for more info. -COPY build_manifest.json ./ -RUN cp build_manifest.json ../ - # Copy tsconfig to check dependencies COPY acir-simulator/tsconfig.json acir-simulator/tsconfig.json COPY archiver/tsconfig.json archiver/tsconfig.json @@ -117,11 +112,12 @@ WORKDIR /usr/src/yarn-project FROM builder_ as noir_types COPY . . COPY --from=noir /usr/src/yarn-project/noir-contracts/src/contracts /usr/src/yarn-project/noir-contracts/src/contracts +COPY --from=noir /usr/src/yarn-project/noir-contracts/target /usr/src/yarn-project/noir-contracts/target WORKDIR /usr/src/yarn-project/noir-contracts # Run yarn build to have the json ABIs available for the types generator RUN yarn build -RUN ./scripts/types_ci.sh +RUN ./scripts/types_all.sh # Run yarn build again to build the types RUN yarn build diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index a5d244830e3..c634d40c204 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -67,10 +67,10 @@ __metadata: "@aztec/noir-contracts": "workspace:^" "@aztec/types": "workspace:^" "@jest/globals": ^29.5.0 + "@noir-lang/acvm_js": 0.26.1 "@rushstack/eslint-patch": ^1.1.4 "@types/jest": ^29.5.0 "@types/node": ^18.7.23 - acvm_js: "github:noir-lang/acvm-js-wasm#arv/0.25.0" jest: ^29.5.0 jest-mock-extended: ^3.0.4 levelup: ^5.1.1 @@ -2509,6 +2509,13 @@ __metadata: languageName: node linkType: hard +"@noir-lang/acvm_js@npm:0.26.1": + version: 0.26.1 + resolution: "@noir-lang/acvm_js@npm:0.26.1" + checksum: ae8cb6e31610cd8aa392855342d0c953a1bc4cd9e07236340341afa5815696a69a6635c38241f1d6a5dd30c5a8ae49234f2ba8b71d46c5d1a46756ff6f4dde3a + languageName: node + linkType: hard + "@npmcli/fs@npm:^3.1.0": version: 3.1.0 resolution: "@npmcli/fs@npm:3.1.0" @@ -3969,13 +3976,6 @@ __metadata: languageName: node linkType: hard -"acvm_js@github:noir-lang/acvm-js-wasm#arv/0.25.0": - version: 0.0.0-9d02637 - resolution: "acvm_js@https://github.com/noir-lang/acvm-js-wasm.git#commit=73cc4c22f4d443c9b287ebd3824a80b912fd0e58" - checksum: 2a2923073a9835ec0200a7bc7818023e8ab2cc87aef6238c9ee3af2a844d535dfadfd2dbc75ed82593ea4cd26a0288f91989ee7bb3a37481f63be21b76628574 - languageName: node - linkType: hard - "agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2"