From 53a38e11fc5b0b419d0796b4fb4974de5c1b1417 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:42:04 +0000 Subject: [PATCH 01/25] feat: document macros --- .../roadmap/cryptography_roadmap.md | 2 +- docs/docs/dev_docs/contracts/functions.md | 82 +++++++++++++++++++ docs/docs/dev_docs/contracts/portals/main.md | 31 +------ docs/docs/dev_docs/contracts/syntax.md | 15 +++- .../core/interfaces/messagebridge/IOutbox.sol | 2 + .../src/core/libraries/DataStructures.sol | 2 + .../docs_example_contract/src/main.nr | 61 ++++++++++++++ .../non_native_token_contract/src/main.nr | 4 + .../noir-libs/noir-aztec/src/context.nr | 2 + .../src/messaging/l1_to_l2_message.nr | 2 + 10 files changed, 173 insertions(+), 30 deletions(-) diff --git a/docs/docs/about_aztec/roadmap/cryptography_roadmap.md b/docs/docs/about_aztec/roadmap/cryptography_roadmap.md index 0d59a4d1503..c7fc793ea0b 100644 --- a/docs/docs/about_aztec/roadmap/cryptography_roadmap.md +++ b/docs/docs/about_aztec/roadmap/cryptography_roadmap.md @@ -10,7 +10,7 @@ title: Cryptography Roadmap ## Honk -- Honk is a sumcheck-based zk-SNARK protocol with blazing-fast zk proof construction. We need to Honk allow users to prove correct execution of complicated, multi-step computations using recursion in a resource constraint environment like a cell phone. This is necessary for our mission, because we need to make sure our users' sensitive information never leaves their devices! +- Honk is a sumcheck-based zk-SNARK protocol with blazing-fast zk proof construction. We need Honk to allow users to prove correct execution of complicated, multi-step computations using recursion in a resource constraint environment like a cell phone. This is necessary for our mission, because we need to make sure our users' sensitive information never leaves their devices! - List of Honk projects - Completed: basic Honk prover and verifier with respectable construction and verification speeds, but no optimization. - Upcoming: diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index ceddbeb1186..96f1cba9131 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -50,9 +50,91 @@ E.g. `get()` ## Recursive function calls ## L1 --> L2 + +The context available within functions includes the ability to send messages to l1. + + + + + +#include_code send_to_l2 /yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr rust + +### What happens behind the scenes? +When a user sends a message from a portal contract (INCLUDE LINK HERE) to the rollup's inbox it gets processed and added to the `l1 to l2 messages tree` (INCLUDE LINK TO WHERE THIS IS DISCUSSED). The l1 to l2 messages tree contains all messages that have been sent from l1 to the l2. The good thing about this tree is that it does not reveal when it's messages have been spent, as consuming a message from the l1 to l2 messages tree is done by nullifing a message, rather than directly marking it as consumed. + +When calling the `consume_l1_to_l2_message` function on a contract; a number of actions are performed. + + +1. As the consume message function is passed a `msgKey` value, we can look up on l1 what the full contents of the message by making an oracle call to get the data. +2. We check that the message recipient is the contract of the current calling context. +3. We check that the message content matches the content reproduced earlier on. +4. We validate that we know the preimage to the message's `secretHash` field. (TODO: SEE MORE ON THIS FOLLOWING A LINK) +5. We compute the nullifier for the message. +#include_code l1_to_l2_message_compute_nullifier /yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr rust +6. Finally we push the nullifier to the context. Allowing it to be checked for validity by the kernel and rollup circuits. + +#include_code consume_l1_to_l2_message /yarn-project/noir-libs/noir-aztec/src/context.nr rust + +The emitted nullifier prevents our message from being consumed again. Users cannot re consume a message as the nullifier would already exist. ## L2 --> L1 ## Delegatecall Talk a about the dangers of delegatecall too! + + +## Deep dive + +### Function type attributes explained. +Aztec.nr uses an attribute system to annotate a function's type. Annotating a function with the `#[aztec(private)]` attribute tells the framework that this will be a private function that will be executed on a users device. Thus the compiler will create a circuit to define this function. + +However; `#aztec(private)` is just syntactic sugar. At compile time, the framework inserts some code that initializes the application context. + +To help illustrate how this interacts with the internals of Aztec and its kernel circuits, we can take an example private function, and explore what it looks like after Aztec.nr's macro expansion. + +#### The before +#include_code simple_macro_example /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + + +#### The expanded +#include_code simple_macro_example_expanded /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + +#### What does the expansion do? +Seeing an expanded noir contract reveals a lot about how noir contracts interact with the kernel. Let's run down the changes and dive into what each part does. + + +`inputs: PrivateContextInputs` +As discussed in (INSeRT SECTION HERE) private function calls are stitched together from within the kernel circuit. The kernel circuit forwards information to each app circuit. This information then becomes the private context. +For example, within each circuit we can access some global variables. To access them we can call `context.chain_id()`. The value of this chain ID comes from the values passed into the circuit from the kernel. + + +The kernel can then check that all of the values passed to each circuit in a function call are the same. + +`-> distinct pub abi::PrivateCircuitPublicInputs` +Just as the kernel passes information into the the app circuits, the application must return information about the executed app back to the kernel. This is done through a rigid structure we call the `PrivateCircuitPublicInputs`. + + +This structure contains a host of information about the executed program. It will contain any newly created nullifiers, any messages to be sent to l2 and most importantly it will contain the actual return values of the function! + +`hasher` +What is the hasher and why is it needed? + +Inside the kernel circuits, the inputs to functions are reduced to a single value; the inputs hash. This prevents there needing to be multiple different kernel circuits which support differing numbers of inputs to each function. The is an abstraction that allows us to create an array of all of the inputs that we can then hash to a single point. + + + +`let mut context = PrivateContext::new(inputs, hasher.hash())` +Creating the function's context. +Within each Aztec function we have access to a context object that feels like a global object. This is in-fact NOT global but rather is initialized from the inputs provided by the kernel, and a hash of the function's inputs. + + + +`context.return_values.push(result)` +As mentioned in the kernel circuit section *(INCLUDE LINK)* we use the kernel to pass information between circuits. This means that the return values of functions must also be passed to the kernel to pass the value on to another function call. +This is done by pushing our return values to the execution context, which can then in turn pass the values to the kernel. + +`context.finish()` +This function takes the application context, and converts it into the `PrivateCircuitPublicInputs` structure. This structure is what is passed to the kernel circuit to enable cross communication between applications. \ No newline at end of file diff --git a/docs/docs/dev_docs/contracts/portals/main.md b/docs/docs/dev_docs/contracts/portals/main.md index 4af8dcdb944..30dd629920e 100644 --- a/docs/docs/dev_docs/contracts/portals/main.md +++ b/docs/docs/dev_docs/contracts/portals/main.md @@ -110,37 +110,14 @@ 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 send_to_portal /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 l1_to_l2_message_struct /l1-contracts/src/core/libraries/DataStructures.sol solidity -function consume(DataStructures.L2ToL1Msg memory _message) - external - returns (bytes32 entryKey); -``` +#include_code consume_interface /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`. diff --git a/docs/docs/dev_docs/contracts/syntax.md b/docs/docs/dev_docs/contracts/syntax.md index a5d5008e78d..556ebebfae4 100644 --- a/docs/docs/dev_docs/contracts/syntax.md +++ b/docs/docs/dev_docs/contracts/syntax.md @@ -1,6 +1,6 @@ # Aztec.nr Syntax -[Noir](https://noir-lang.org/) is a language which is agnostic to proof systems and use cases. Rather than baking Aztec-specific keywords and smart contract types directly into Noir (which would break this agnosticism), we have developed a library -- written in Noir -- whose types and methods provide rich smart contract semantics. +[Noir](https://noir-lang.org/) is a language which is agnostic to proof systems and use cases. Rather than baking Aztec-specific keywords and smart contract types directly into Noir (which would break this agnosticism), we have developed a framework -- written in Noir -- whose types and methods provide rich smart contract semantics. On top of [Noir's stdlib](https://noir-lang.org/standard_library/array_methods), we provide [Aztec.nr](https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/noir-libs) for writing contracts on Aztec. @@ -16,4 +16,15 @@ Aztec.nr contains abstractions which remove the need to understand the low-level To import Aztec.nr into your Aztec contract project, simply include it as a dependency. -#include_code importing-aztec /yarn-project/noir-contracts/src/contracts/private_token_contract/Nargo.toml toml +```toml +[package] +name = "my_noir_contract" +authors = [""] +compiler_version = "0.10.0" +type = "contract" + +[dependencies] +aztec = { git="https://github.com/AztecProtocol/aztec-packages", tag="master", directory="yarn-project/noir-libs/noir-aztec" } +``` + +Note: currently the dependency name ***MUST*** be `aztec`. The framework expects this namespace to be available when compiling into contracts. This limitation may be removed in the future. \ No newline at end of file diff --git a/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol b/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol index 3c822b2823e..0dfed6f9151 100644 --- a/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol +++ b/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol @@ -30,6 +30,7 @@ interface IOutbox { */ function sendL1Messages(bytes32[] memory _entryKeys) external; + /// docs:start:consume_interface /** * @notice Consumes an entry from the Outbox * @dev Only meaningfully callable by portals, otherwise should never hit an entry @@ -38,6 +39,7 @@ interface IOutbox { * @return entryKey - The key of the entry removed */ function consume(DataStructures.L2ToL1Msg memory _message) external returns (bytes32 entryKey); + /// docs:end:consume_interface /** * @notice Fetch an entry diff --git a/l1-contracts/src/core/libraries/DataStructures.sol b/l1-contracts/src/core/libraries/DataStructures.sol index 251a8147643..430f3f1f0f2 100644 --- a/l1-contracts/src/core/libraries/DataStructures.sol +++ b/l1-contracts/src/core/libraries/DataStructures.sol @@ -42,6 +42,7 @@ library DataStructures { uint256 version; } + // docs:start:l1_to_l2_message_struct /** * @notice Struct containing a message from L1 to L2 * @param sender - The sender of the message @@ -59,6 +60,7 @@ library DataStructures { uint32 deadline; uint64 fee; } + // docs:end:l1_to_l2_message_struct /** * @notice Struct containing a message from L2 to L1 diff --git a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr index 6bc752cd975..d2a8b8b37cd 100644 --- a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr @@ -176,4 +176,65 @@ contract DocsExample { actions::get_total_points(storage.cards, account, 0) } // docs:end:functions-UncontrainedFunction + + + /// Macro equivalence section + use dep::aztec::abi; + use dep::aztec::abi::Hasher; + use dep::aztec::context::PrivateContext; + use dep::aztec::abi::PrivateContextInputs; + use dep::aztec::abi::PrivateCircuitPublicInputs; + + // docs:start:simple_macro_example + #[aztec(private)] + fn simple_macro_example(a: Field, b: Field) -> Field { + a + b + } + // docs:end:simple_macro_example + + + // docs:start:simple_macro_example_expanded + fn simple_macro_example_expanded( + // ************************************************************ + // The private context inputs are made available to the circuit by the kernel + inputs: PrivateContextInputs, + // ************************************************************ + + // Our original inputs! + a: Field, + b: Field + + // The actual return type of our circuit is the PrivateCircuitPublicInputs struct, this will be the + // input to our kernel! + ) -> distinct pub abi::PrivateCircuitPublicInputs { + // ************************************************************ + // The hasher is a structure used to generate a hash of the circuits inputs. + let mut hasher = Hasher::new(); + hasher.add(a); + hasher.add(b); + + // The context object is created with the inputs and the hash of the inputs + let mut context = PrivateContext::new(inputs, hasher.hash()); + // ************************************************************ + + // Our actual program + let result = a + b; + + // ************************************************************ + // Return values are pushed into the context + context.return_values.push(result); + + // The context is returned to be consumed by the kernel circuit! + context.finish() + // ************************************************************ + } + // docs:end:simple_macro_example_expanded + + + // Cross chain messaging section + // Demonstrates a cross chain message + // docs:start:l1_to_l2_cross_chain_message + #[aztec(private)] + fn send_to_l1() + // docs:end:l1_to_l2_cross_chain_message } 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 f9878a152d4..7b7e93a493c 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 @@ -58,6 +58,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:send_to_l2 #[aztec(private)] fn mint( amount: Field, @@ -77,10 +78,12 @@ contract NonNativeToken { let balance = storage.balances.at(owner); increment(balance, amount, owner); } + // docs:end:send_to_l2 // 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:send_to_portal #[aztec(private)] fn withdraw( amount: Field, @@ -96,6 +99,7 @@ contract NonNativeToken { let content = get_withdraw_content_hash(amount, recipient, callerOnL1); context.message_portal(content); } + // docs:end:send_to_portal // Mint Public Function // This mint function differs to the typical token mint function as it only allows minting diff --git a/yarn-project/noir-libs/noir-aztec/src/context.nr b/yarn-project/noir-libs/noir-aztec/src/context.nr index 6d6b9647e5c..a7e23da21f4 100644 --- a/yarn-project/noir-libs/noir-aztec/src/context.nr +++ b/yarn-project/noir-libs/noir-aztec/src/context.nr @@ -167,12 +167,14 @@ impl PrivateContext { // 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 + // docs:start:consume_l1_to_l2_message fn consume_l1_to_l2_message(&mut self, inputs: abi::PrivateContextInputs, msg_key: Field, content: Field, secret: Field) { 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") self.push_new_nullifier(nullifier, EMPTY_NULLIFIED_COMMITMENT) } + // docs:end:consume_l1_to_l2_message fn accumulate_encrypted_logs(&mut self, log: [Field; N]) { let _void1 = self.inputs; diff --git a/yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr b/yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr index f4b44f8625f..70e5f6efc23 100644 --- a/yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr +++ b/yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr @@ -82,8 +82,10 @@ impl L1ToL2Message { } // The nullifier of a l1 to l2 message is the hash of the message salted with the secret and tree index + // docs:start:l1_to_l2_message_compute_nullifier fn compute_nullifier(self: Self) -> Field { let message_hash = self.message_hash(); dep::std::hash::pedersen_with_separator([message_hash, self.secret, self.tree_index], GENERATOR_INDEX__NULLIFIER)[0] } + // docs:end:l1_to_l2_message_compute_nullifier } From 4e04bcbdd31fc5ecc914b2f8e8c150f3e1478839 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Tue, 5 Sep 2023 22:13:47 +0000 Subject: [PATCH 02/25] checkpoint --- docs/docs/dev_docs/contracts/context.md | 85 +++++++++++++++++++ docs/docs/dev_docs/contracts/functions.md | 3 + yarn-project/noir-libs/noir-aztec/src/abi.nr | 10 ++- .../noir-libs/noir-aztec/src/context.nr | 2 + 4 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 docs/docs/dev_docs/contracts/context.md diff --git a/docs/docs/dev_docs/contracts/context.md b/docs/docs/dev_docs/contracts/context.md new file mode 100644 index 00000000000..a86266e57c3 --- /dev/null +++ b/docs/docs/dev_docs/contracts/context.md @@ -0,0 +1,85 @@ +# Overview of this page (change this title) + +We want ot include some over arching details on what is included inside the context structure, and give an overview of what it actually is. + +## What is the context. +The context is a variable that is made available within every function in `Aztec.nr`. As mentioned in the KERNEL CIRCUIT SECTION. The application context is a structure that contains all of the infromation a function needs from the kernel circuit, as well as all the information the kernel needs after a function execution completes. + +Behind the scenes, Aztec noir will pass data the kernel needs to and from a circuit, this is completely abstracted away from the developer. In an application developer's eyes; the context is a useful structure that allows access to anything on the aztec blockchain outside of the current circuit (REWORD THIS SECTION). + +## What is contained within the context. + +The code snippet below shows what is currently contained within the private context. +#include_code functions-OpenFunction /yarn-project/noir-libs/noir-aztec/src/context.nr rust + +### Private Context Broken Down +#### Inputs +The context inputs includes all of the information that is passed from the kernel circuit into the application circuit. It contains the following values. + +#include_code private-context-inputs /yarn-project/noir-libs/noir-aztec/src/abi.nr rust + +As shown in the snippet, the application context is made up of 4 main structures. The call context, the block data, the contract deployment data and the private global variables. + +First of all, the call context. + +#include_code call-context /yarn-project/noir-libs/noir-aztec/src/abi.nr rust + +The call context contains information about the current call being made:. +1, Msg Sender + - The message sender is the account (Aztec Contract) that sent the message to the current context. In the first call of the kernel circuit (often the account contract call), this value will be empty. For all subsequent calls the value will be the previous call. + + ( TODO: INCLUDE A DIAGRAM HERE SHOWING HOW IT GETS UPDATED ON CONTRACT CALLS ) +2. Storage contract address + - This value is the address of the current context's contract address. This value will be the value of the current contract that is being executed except for when the current call is a delegate call (TODO: INCLUDE A LINK TO ITS DOCUMENTATION). In this case the value will be that of the sending contract. + + - This value is important as it is the value that is used when siloing the storage values of a contract. ( TODO: DOES THIS NEED TO BE DIVED INTO MORE OR IS IT SOMETHING THTAT THERE IS A LINK TO). +3. Portal Contract Address + - This value stores the current contract's linked portal contract address. ( INCLUDE A LINK TO THE LITERATURE ). As a quick recap, this value is the value of the contracts related ethereum l1 contract address, and will be the recipient of any messages that are created by this contract. +4. Flags + - Furthermore there are a series of flags that are stored within the application context: + - is_delegate_call: Denotes whether the current call is a delegate call. If true, then the storage contract address will NOT be the current contract address. + - is_static_call: (TODO: REFER TO EVM CODES TO FILL IN THIS SECTION) + - is_contract_deployment: This will be set if and only if the current call is the contract's constructor. + +### Historic Block Data +Another structure that is contained within the context is the Historic Block Data object. This object is a special one as it contains all of the roots of Aztec's data trees. + +#include_code historic-block-data /yarn-project/noir-libs/noir-aztec/src/abi.nr rust + +## TODO: gloss this up +Having these tree's on hand allows for a host of interesting use cases. If you can create a merkle proof which matches the root of these trees. Then you can prove that a value exists in the current state of the system. + +### Contract Deployment Data +Just like with the `is_contract_deployment` flag mentioned earlier. This flag will only be set to true when the current transaction is one in which a contract is being deployed. + +#### TODO : WAT CONTAIN AND WAT DO + + +### Private Global Variables +TODO: +- include in this section how the global variabels can be accessed and what they contain + + + + +## Args Hash + + + + --> + +## Public Context Inputs +In the current version of the system, the public context is almost a clone of the private execution context. It contains the same call context data, access to the same historic tree roots, however it does NOT have access to contract deployment data, this is due to traditional contract deployments only currently being possible from private transactions. + +#include_code public-context-inputs /yarn-project/noir-libs/noir-aztec/src/abi.nr rust \ No newline at end of file diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index 96f1cba9131..c4ccc4959e7 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -10,6 +10,7 @@ ## secret functions > a.k.a. "private" functions +To create a private function you can annotate it with the `#[aztec(private)]` attribute. This will make the private context (INCLUDE LINK TO COVERAGE OF PRIVATE CONTEXT) available within your current function's execution scope. #include_code functions-SecretFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust @@ -17,6 +18,8 @@ > a.k.a. "public" functions +To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the public context available within your current function's execution scope. (TODO: INCLUDE LINK) + #include_code functions-OpenFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust ## `unconstrained` functions diff --git a/yarn-project/noir-libs/noir-aztec/src/abi.nr b/yarn-project/noir-libs/noir-aztec/src/abi.nr index 780cd99e4ad..1738df5f466 100644 --- a/yarn-project/noir-libs/noir-aztec/src/abi.nr +++ b/yarn-project/noir-libs/noir-aztec/src/abi.nr @@ -82,23 +82,26 @@ impl ContractDeploymentData { } // PrivateContextInputs are expected to be provided to each private function +// docs:start:private-context-inputs struct PrivateContextInputs { call_context : CallContext, block_data: HistoricBlockData, - contract_deployment_data: ContractDeploymentData, - private_global_variables: PrivateGlobalVariables, } +// docs:end:private-context-inputs // PublicContextInputs are expected to be provided to each public function +// docs:start:public-context-inputs struct PublicContextInputs { call_context: CallContext, block_data: HistoricBlockData, public_global_variables: PublicGlobalVariables, } +// docs:end:public-context-inputs +// docs:start:call-context struct CallContext { msg_sender : Field, storage_contract_address : Field, @@ -108,6 +111,7 @@ struct CallContext { is_static_call : bool, is_contract_deployment: bool, } +// docs:end:call-context impl CallContext { fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] { @@ -126,6 +130,7 @@ impl CallContext { } } +// docs:start:historic-block-data struct HistoricBlockData { private_data_tree_root : Field, nullifier_tree_root : Field, @@ -135,6 +140,7 @@ struct HistoricBlockData { public_data_tree_root: Field, global_variables_hash: Field, } +// docs:end:historic-block-data impl HistoricBlockData { // NOTE: this order must match the order in `private_circuit_public_inputs.hpp` diff --git a/yarn-project/noir-libs/noir-aztec/src/context.nr b/yarn-project/noir-libs/noir-aztec/src/context.nr index a7e23da21f4..968d95705c3 100644 --- a/yarn-project/noir-libs/noir-aztec/src/context.nr +++ b/yarn-project/noir-libs/noir-aztec/src/context.nr @@ -50,6 +50,7 @@ use crate::oracle::{ // When finished, one can call .finish() to convert back to the abi struct PrivateContext { + // docs:start:private-context inputs: abi::PrivateContextInputs, args_hash : Field, @@ -64,6 +65,7 @@ struct PrivateContext { private_call_stack : BoundedVec, public_call_stack : BoundedVec, new_l2_to_l1_msgs : BoundedVec, + // docs:end:private-context block_data: HistoricBlockData, From c1965dcf65499a05032512d8d1d057e8e2d628b3 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Wed, 6 Sep 2023 11:11:14 +0000 Subject: [PATCH 03/25] feat: add context section to the docs --- docs/sidebars.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/sidebars.js b/docs/sidebars.js index eb329ca322f..111820afeeb 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -92,11 +92,11 @@ const sidebars = { "dev_docs/contracts/workflow", "dev_docs/contracts/syntax", "dev_docs/contracts/contract", + "dev_docs/contracts/functions", "dev_docs/contracts/layout", "dev_docs/contracts/types", "dev_docs/contracts/storage", "dev_docs/contracts/state_variables", - "dev_docs/contracts/functions", "dev_docs/contracts/control_structure", "dev_docs/contracts/visibility", "dev_docs/contracts/globals", @@ -105,6 +105,7 @@ const sidebars = { "dev_docs/contracts/compiling", "dev_docs/contracts/deploying", "dev_docs/contracts/abi", + "dev_docs/contracts/context", { label: "Portals", type: "category", From 464b3ae2561b371509ef8ee3f528b29a7a686d93 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Wed, 6 Sep 2023 11:21:07 +0000 Subject: [PATCH 04/25] feat: clean up functions docs --- docs/docs/dev_docs/contracts/context.md | 7 +- docs/docs/dev_docs/contracts/functions.md | 78 +++++++++++-------- .../docs_example_contract/src/main.nr | 17 +++- .../public_token_contract/src/main.nr | 2 + 4 files changed, 71 insertions(+), 33 deletions(-) diff --git a/docs/docs/dev_docs/contracts/context.md b/docs/docs/dev_docs/contracts/context.md index a86266e57c3..9b0a12f1798 100644 --- a/docs/docs/dev_docs/contracts/context.md +++ b/docs/docs/dev_docs/contracts/context.md @@ -1,3 +1,8 @@ +--- +title: Aztec.nr Context +description: Documentation of Aztec's Private and Public execution contexts +hide_table_of_contents: false +--- # Overview of this page (change this title) We want ot include some over arching details on what is included inside the context structure, and give an overview of what it actually is. @@ -10,7 +15,7 @@ Behind the scenes, Aztec noir will pass data the kernel needs to and from a circ ## What is contained within the context. The code snippet below shows what is currently contained within the private context. -#include_code functions-OpenFunction /yarn-project/noir-libs/noir-aztec/src/context.nr rust +#include_code private-context /yarn-project/noir-libs/noir-aztec/src/context.nr rust ### Private Context Broken Down #### Inputs diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index c4ccc4959e7..bfb11ed8f8c 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -3,22 +3,30 @@ ## `constructor` - A special `constructor` function MUST be declared within a contract's scope. -- A constructor doesn't have a name, because its purpose is clear: to initialise state. -- In Aztec terminology, a constructor is always a 'private function' (i.e. it cannot be an `open` function). +- A constructor doesn't have a name, because its purpose is clear: to initialise contract state. +- In Aztec terminology, a constructor is always a '`private` function' (i.e. it cannot be a `public` function). - A constructor behaves almost identically to any other function. It's just important for Aztec to be able to identify this function as special: it may only be called once, and will not be deployed as part of the contract. -## secret functions +An example of a constructor is as follows: +#include_code constructor /yarn-project/noir-contracts/src/contracts/private_token_contract/src/main.nr rust -> a.k.a. "private" functions -To create a private function you can annotate it with the `#[aztec(private)]` attribute. This will make the private context (INCLUDE LINK TO COVERAGE OF PRIVATE CONTEXT) available within your current function's execution scope. +In this example (taken from a token contract), the constructor mints `initial_supply` tokens to the passed in `owner`. + +Although constructors are always needed, they are not required to do anything. A empty constructor can be created as follows: + +#include_code empty-constructor /yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr rust -#include_code functions-SecretFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -## `open` functions +## `Private` Functions + +To create a private function you can annotate it with the `#[aztec(private)]` attribute. This will make the [private context](./context.md#private-context-broken-down) available within your current function's execution scope. + +#include_code functions-SecretFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -> a.k.a. "public" functions +## `Public` Functions -To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the public context available within your current function's execution scope. (TODO: INCLUDE LINK) + +To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the [public context](./context.md#public-context-inputs) available within your current function's execution scope. #include_code functions-OpenFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust @@ -94,50 +102,58 @@ Talk a about the dangers of delegatecall too! ### Function type attributes explained. Aztec.nr uses an attribute system to annotate a function's type. Annotating a function with the `#[aztec(private)]` attribute tells the framework that this will be a private function that will be executed on a users device. Thus the compiler will create a circuit to define this function. -However; `#aztec(private)` is just syntactic sugar. At compile time, the framework inserts some code that initializes the application context. +However; `#aztec(private)` is just syntactic sugar. At compile time, the framework inserts code that allows the function to interact with the [kernel](../../concepts/advanced/circuits/kernels/private_kernel.md). To help illustrate how this interacts with the internals of Aztec and its kernel circuits, we can take an example private function, and explore what it looks like after Aztec.nr's macro expansion. -#### The before +#### Before expansion #include_code simple_macro_example /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -#### The expanded +#### After expansion #include_code simple_macro_example_expanded /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -#### What does the expansion do? -Seeing an expanded noir contract reveals a lot about how noir contracts interact with the kernel. Let's run down the changes and dive into what each part does. +#### The expansion broken down? +Viewing the expanded noir contract uncovers a lot about how noir contracts interact with the [kernel](../../concepts/advanced/circuits/kernels/private_kernel.md). To aid with developing intuition, we will break down each inserted line. -`inputs: PrivateContextInputs` -As discussed in (INSeRT SECTION HERE) private function calls are stitched together from within the kernel circuit. The kernel circuit forwards information to each app circuit. This information then becomes the private context. +**Receiving context from the kernel.** +#include_code context-example-inputs /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + +Private function calls are able to interact with each other through orchestration from within the [kernel circuit](../../concepts/advanced/circuits/kernels/private_kernel.md). The kernel circuit forwards information to each app circuit. This information then becomes part of the private context. For example, within each circuit we can access some global variables. To access them we can call `context.chain_id()`. The value of this chain ID comes from the values passed into the circuit from the kernel. - The kernel can then check that all of the values passed to each circuit in a function call are the same. -`-> distinct pub abi::PrivateCircuitPublicInputs` +**Returning the context to the kernel.** +#include_code context-example-return /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + Just as the kernel passes information into the the app circuits, the application must return information about the executed app back to the kernel. This is done through a rigid structure we call the `PrivateCircuitPublicInputs`. - + +> *Why is it called the `PrivateCircuitPublicInputs`* +> It is commonly asked why the return values of a function in a circuit are labelled as the `Public Inputs`. Common intuition from other programming paradigms suggests that the return values and public inputs should be distinct. +> However; In the eyes of the circuit, anything that is publicly viewable (or checkable) is a public input. Hence in this case, the return values are also public inputs. This structure contains a host of information about the executed program. It will contain any newly created nullifiers, any messages to be sent to l2 and most importantly it will contain the actual return values of the function! -`hasher` +**Hashing the function inputs.** +#include_code context-example-hasher /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + What is the hasher and why is it needed? -Inside the kernel circuits, the inputs to functions are reduced to a single value; the inputs hash. This prevents there needing to be multiple different kernel circuits which support differing numbers of inputs to each function. The is an abstraction that allows us to create an array of all of the inputs that we can then hash to a single point. +Inside the kernel circuits, the inputs to functions are reduced to a single value; the inputs hash. This prevents the need for multiple different kernel circuits; each supporting differing numbers of inputs. The hasher abstraction that allows us to create an array of all of the inputs that can be reduced to a single value. + +**Creating the function's context.** +#include_code context-example-context /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust - +Each Aztec function has access to a [context](./context.md) object. This object although ergonomically a global variable, is local. It is initialized from the inputs provided by the kernel, and a hash of the function's inputs. -`let mut context = PrivateContext::new(inputs, hasher.hash())` -Creating the function's context. -Within each Aztec function we have access to a context object that feels like a global object. This is in-fact NOT global but rather is initialized from the inputs provided by the kernel, and a hash of the function's inputs. +#include_code context-example-context-return /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust - +As previously mentioned we use the kernel to pass information between circuits. This means that the return values of functions must also be passed to the kernel (where they can be later passed on to another function). +We achieve this by pushing return values to the execution context, which we then pass to the kernel. -`context.return_values.push(result)` -As mentioned in the kernel circuit section *(INCLUDE LINK)* we use the kernel to pass information between circuits. This means that the return values of functions must also be passed to the kernel to pass the value on to another function call. -This is done by pushing our return values to the execution context, which can then in turn pass the values to the kernel. +**Returning the function context to the kernel.** +#include_code context-example-finish /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -`context.finish()` -This function takes the application context, and converts it into the `PrivateCircuitPublicInputs` structure. This structure is what is passed to the kernel circuit to enable cross communication between applications. \ No newline at end of file +This function takes the application context, and converts it into the `PrivateCircuitPublicInputs` structure. This structure is then passed to the kernel circuit. \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr index d2a8b8b37cd..9f78b8b76e0 100644 --- a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr @@ -197,7 +197,9 @@ contract DocsExample { fn simple_macro_example_expanded( // ************************************************************ // The private context inputs are made available to the circuit by the kernel + // docs:start:context-example-inputs inputs: PrivateContextInputs, + // docs:end:context-example-inputs // ************************************************************ // Our original inputs! @@ -206,15 +208,21 @@ contract DocsExample { // The actual return type of our circuit is the PrivateCircuitPublicInputs struct, this will be the // input to our kernel! + // docs:start:context-example-return ) -> distinct pub abi::PrivateCircuitPublicInputs { + // docs:end:context-example-return // ************************************************************ // The hasher is a structure used to generate a hash of the circuits inputs. + // docs:start:context-example-hasher let mut hasher = Hasher::new(); hasher.add(a); hasher.add(b); + // docs:end:context-example-hasher // The context object is created with the inputs and the hash of the inputs + // docs:start:context-example-context let mut context = PrivateContext::new(inputs, hasher.hash()); + // docs:end:context-example-context // ************************************************************ // Our actual program @@ -222,10 +230,14 @@ contract DocsExample { // ************************************************************ // Return values are pushed into the context + // docs:start:context-example-context-return context.return_values.push(result); + // docs:end:context-example-context-return // The context is returned to be consumed by the kernel circuit! + // docs:start:context-example-finish context.finish() + // docs:end:context-example-finish // ************************************************************ } // docs:end:simple_macro_example_expanded @@ -235,6 +247,9 @@ contract DocsExample { // Demonstrates a cross chain message // docs:start:l1_to_l2_cross_chain_message #[aztec(private)] - fn send_to_l1() + fn send_to_l1() { + + + } // docs:end:l1_to_l2_cross_chain_message } diff --git a/yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr index 14f58ae5006..b1ac54dbf22 100644 --- a/yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr @@ -10,8 +10,10 @@ contract PublicToken { use crate::storage::Storage; // Constructs the contract. + // docs:start:empty-constructor #[aztec(private)] fn constructor() {} + // docs:end:empty-constructor // Mints `amount` of tokens to a `recipient`. #[aztec(public)] From 2ab0f65a75d84d30d5fac292355947391824d9d1 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Wed, 6 Sep 2023 14:19:35 +0000 Subject: [PATCH 05/25] feat: update context docs --- docs/docs/dev_docs/contracts/context.md | 75 +++++++++++++------- docs/docs/dev_docs/contracts/functions.md | 35 ++++----- yarn-project/noir-libs/noir-aztec/src/abi.nr | 7 ++ 3 files changed, 70 insertions(+), 47 deletions(-) diff --git a/docs/docs/dev_docs/contracts/context.md b/docs/docs/dev_docs/contracts/context.md index 9b0a12f1798..f06380ada8d 100644 --- a/docs/docs/dev_docs/contracts/context.md +++ b/docs/docs/dev_docs/contracts/context.md @@ -3,18 +3,25 @@ title: Aztec.nr Context description: Documentation of Aztec's Private and Public execution contexts hide_table_of_contents: false --- -# Overview of this page (change this title) +# The Function Context -We want ot include some over arching details on what is included inside the context structure, and give an overview of what it actually is. +## What is the context +The context is a variable that is made available within every function in `Aztec.nr`. As mentioned in the [kernel circuit documentation](../../concepts/advanced/circuits/kernels/private_kernel.md). At the beginning of a function's execution, the context contains all of the kernel information that application needs to execute. During the lifecycle of a transaction, the function will update the context with each of it's side effects (created notes, nullifiers etc.). At the end of a function's execution the mutated context is returned to the kernel to be checked for validity. -## What is the context. -The context is a variable that is made available within every function in `Aztec.nr`. As mentioned in the KERNEL CIRCUIT SECTION. The application context is a structure that contains all of the infromation a function needs from the kernel circuit, as well as all the information the kernel needs after a function execution completes. +Behind the scenes, Aztec noir will pass data the kernel needs to and from a circuit, this is abstracted away from the developer. In an developer's eyes; the context is a useful structure that allows access and mutate the state of the `Aztec` blockchain. -Behind the scenes, Aztec noir will pass data the kernel needs to and from a circuit, this is completely abstracted away from the developer. In an application developer's eyes; the context is a useful structure that allows access to anything on the aztec blockchain outside of the current circuit (REWORD THIS SECTION). +## Two context's one API +The `Aztec` blockchain contains two execution environments (ADD REFERENCE). +- Private, for private transactions taking place on user's devices. +- Public, for public transactions taking place on the network's sequencers. -## What is contained within the context. +As there are two distinct execution environments, they both require slightly differing execution contexts. Despite their differences; the API's for interacting with each are unified. Leading to minimal context switch when working between the two environments. -The code snippet below shows what is currently contained within the private context. +The following section will cover both contexts. + +## The Private Context + +The code snippet below shows what is contained within the private context. #include_code private-context /yarn-project/noir-libs/noir-aztec/src/context.nr rust ### Private Context Broken Down @@ -51,40 +58,56 @@ Another structure that is contained within the context is the Historic Block Dat #include_code historic-block-data /yarn-project/noir-libs/noir-aztec/src/abi.nr rust -## TODO: gloss this up -Having these tree's on hand allows for a host of interesting use cases. If you can create a merkle proof which matches the root of these trees. Then you can prove that a value exists in the current state of the system. - ### Contract Deployment Data -Just like with the `is_contract_deployment` flag mentioned earlier. This flag will only be set to true when the current transaction is one in which a contract is being deployed. - -#### TODO : WAT CONTAIN AND WAT DO +Just like with the `is_contract_deployment` flag mentioned earlier. This data will only be set to true when the current transaction is one in which a contract is being deployed. +#include_code contract-deployment-data /yarn-project/noir-libs/noir-aztec/src/abi.nr rust ### Private Global Variables -TODO: -- include in this section how the global variabels can be accessed and what they contain +In the private execution context, we only have access to a subset of the total global variables, we are restricted to those which can be reliably proven by the kernel circuits. +#include_code private-global-variables /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +### Args Hash +To allow for flexibility in the number of arguments supported by Aztec functions, all function inputs are reduced to a singular value which can be proven from within the application. +The `args_hash` is the result of pedersen hashing all of a function's inputs. -## Args Hash +### Return Values +The return values are a set of values that are returned from an applications execution to be passed to other functions through the kernel. Developers do not need to worry about passing their function return values to the `context` directly as `Aztec.nr` takes care of it for you. See the documentation surrounding `Aztec.nr` [macro expansion](../../dev_docs/contracts/functions.md#after-expansion) for more details. + return_values : BoundedVec, +### Read Requests + - --> +### Private Call Stack +The private call stack contains all of the external function calls that have been created within the current context. Any function call objects are hashed and then pushed to the execution stack. +The kernel circuit will orchestrate dispatching the calls and returning the values to the current context. + +### Public Call Stack +The public call stack contains all of the external function calls that are created within the current context. Like the private call stack above, the calls are hashed and pushed to this stack. Unlike the private call stack, these calls are not executed client side. Whenever the function is sent to the network, it will have the public call stack attached to it. At this point the sequencer will take over and execute the transactions. + +### New L2 to L1 msgs +New L2 to L1 messages contains messages that are delivered to the [l1 outbox](../../concepts/foundation/communication/cross_chain_calls.md) on the execution of each rollup. ## Public Context Inputs In the current version of the system, the public context is almost a clone of the private execution context. It contains the same call context data, access to the same historic tree roots, however it does NOT have access to contract deployment data, this is due to traditional contract deployments only currently being possible from private transactions. -#include_code public-context-inputs /yarn-project/noir-libs/noir-aztec/src/abi.nr rust \ No newline at end of file +#include_code public-context-inputs /yarn-project/noir-libs/noir-aztec/src/abi.nr rust + + +### Public Global Variables +The public global variables are provided by the rollup sequencer and consequently contain some more values than the private global variables. + +#include_code public-global-variables /yarn-project/noir-libs/noir-aztec/src/abi.nr rust diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index bfb11ed8f8c..5d8238472f1 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -61,34 +61,28 @@ E.g. `get()` ## Recursive function calls ## L1 --> L2 - -The context available within functions includes the ability to send messages to l1. - - - - +The context available within functions includes the ability to send messages to l1. For more information on how cross chain communication works in Aztec, see the [documentation on communication.](../../concepts/foundation/communication/cross_chain_calls.md) #include_code send_to_l2 /yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr rust ### What happens behind the scenes? -When a user sends a message from a portal contract (INCLUDE LINK HERE) to the rollup's inbox it gets processed and added to the `l1 to l2 messages tree` (INCLUDE LINK TO WHERE THIS IS DISCUSSED). The l1 to l2 messages tree contains all messages that have been sent from l1 to the l2. The good thing about this tree is that it does not reveal when it's messages have been spent, as consuming a message from the l1 to l2 messages tree is done by nullifing a message, rather than directly marking it as consumed. +When a user sends a message from a [portal contract](../../concepts/foundation/communication/cross_chain_calls.md#portal) to the rollup's inbox it gets processed and added to the `l1 to l2 messages tree`. + <-- TODO(Maddiaa): INCLUDE LINK TO WHERE the messages tree is discussed elsewhere in the docs. --> +The l1 to l2 messages tree contains all messages that have been sent from l1 to the l2. The good thing about this tree is that it does not reveal when it's messages have been spent, as consuming a message from the l1 to l2 messages tree is done by nullifing a message, rather than marking it as consumed. -When calling the `consume_l1_to_l2_message` function on a contract; a number of actions are performed. +When calling the `consume_l1_to_l2_message` function on a contract; a number of actions are performed by `Aztec.nr`. - -1. As the consume message function is passed a `msgKey` value, we can look up on l1 what the full contents of the message by making an oracle call to get the data. -2. We check that the message recipient is the contract of the current calling context. -3. We check that the message content matches the content reproduced earlier on. -4. We validate that we know the preimage to the message's `secretHash` field. (TODO: SEE MORE ON THIS FOLLOWING A LINK) -5. We compute the nullifier for the message. +1. The `msgKey` value (passed to the consume message function) is used to look up the contents of the l1 message. +2. Check that the message recipient is the contract of the current calling context. +3. Check that the message content matches the content reproduced earlier on. +4. Validate that caller know's the preimage to the message's `secretHash`. See more information [here](../../concepts/foundation/communication/cross_chain_calls.md#messages). +5. We compute the nullifier for the message. #include_code l1_to_l2_message_compute_nullifier /yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr rust 6. Finally we push the nullifier to the context. Allowing it to be checked for validity by the kernel and rollup circuits. #include_code consume_l1_to_l2_message /yarn-project/noir-libs/noir-aztec/src/context.nr rust -The emitted nullifier prevents our message from being consumed again. Users cannot re consume a message as the nullifier would already exist. +As the same nullifier cannot be created twice. We cannot consume the message again. ## L2 --> L1 @@ -98,7 +92,6 @@ Talk a about the dangers of delegatecall too! ## Deep dive - ### Function type attributes explained. Aztec.nr uses an attribute system to annotate a function's type. Annotating a function with the `#[aztec(private)]` attribute tells the framework that this will be a private function that will be executed on a users device. Thus the compiler will create a circuit to define this function. @@ -130,9 +123,9 @@ The kernel can then check that all of the values passed to each circuit in a fun Just as the kernel passes information into the the app circuits, the application must return information about the executed app back to the kernel. This is done through a rigid structure we call the `PrivateCircuitPublicInputs`. -> *Why is it called the `PrivateCircuitPublicInputs`* -> It is commonly asked why the return values of a function in a circuit are labelled as the `Public Inputs`. Common intuition from other programming paradigms suggests that the return values and public inputs should be distinct. -> However; In the eyes of the circuit, anything that is publicly viewable (or checkable) is a public input. Hence in this case, the return values are also public inputs. +> *Why is it called the `PrivateCircuitPublicInputs`* +> It is commonly asked why the return values of a function in a circuit are labelled as the `Public Inputs`. Common intuition from other programming paradigms suggests that the return values and public inputs should be distinct. +> However; In the eyes of the circuit, anything that is publicly viewable (or checkable) is a public input. Hence in this case, the return values are also public inputs. This structure contains a host of information about the executed program. It will contain any newly created nullifiers, any messages to be sent to l2 and most importantly it will contain the actual return values of the function! diff --git a/yarn-project/noir-libs/noir-aztec/src/abi.nr b/yarn-project/noir-libs/noir-aztec/src/abi.nr index 1738df5f466..656aaf47f79 100644 --- a/yarn-project/noir-libs/noir-aztec/src/abi.nr +++ b/yarn-project/noir-libs/noir-aztec/src/abi.nr @@ -32,10 +32,13 @@ use crate::oracle::debug_log; use crate::types::vec::BoundedVec; use crate::types::point::Point; + +// docs:start:private-global-variables struct PrivateGlobalVariables { chain_id: Field, version: Field, } +// docs:end:private-global-variables impl PrivateGlobalVariables { fn serialize(self) -> [Field; 2] { @@ -43,12 +46,14 @@ impl PrivateGlobalVariables { } } +// docs:start:public-global-variables struct PublicGlobalVariables { chain_id: Field, version: Field, block_number: Field, timestamp: Field, } +// docs:end:public-global-variables impl PublicGlobalVariables { fn serialize(self) -> [Field; 4] { @@ -56,6 +61,7 @@ impl PublicGlobalVariables { } } +// docs:start:contract-deployment-data struct ContractDeploymentData { deployer_public_key: Point, constructor_vk_hash : Field, @@ -63,6 +69,7 @@ struct ContractDeploymentData { contract_address_salt : Field, portal_contract_address : Field, } +// docs:end:contract-deployment-data impl ContractDeploymentData { fn serialize(self) -> [Field; CONTRACT_DEPLOYMENT_DATA_LENGTH] { From 934604b10a05e1196f0d5226ee0113757daec38d Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:42:04 +0000 Subject: [PATCH 06/25] feat: document macros --- .../roadmap/cryptography_roadmap.md | 2 +- docs/docs/dev_docs/contracts/functions.md | 82 +++++++++++++++++++ docs/docs/dev_docs/contracts/portals/main.md | 31 +------ docs/docs/dev_docs/contracts/syntax.md | 15 +++- .../core/interfaces/messagebridge/IOutbox.sol | 2 + .../src/core/libraries/DataStructures.sol | 2 + .../docs_example_contract/src/main.nr | 61 ++++++++++++++ .../non_native_token_contract/src/main.nr | 4 + .../noir-libs/noir-aztec/src/context.nr | 2 + .../src/messaging/l1_to_l2_message.nr | 2 + 10 files changed, 173 insertions(+), 30 deletions(-) diff --git a/docs/docs/about_aztec/roadmap/cryptography_roadmap.md b/docs/docs/about_aztec/roadmap/cryptography_roadmap.md index 0d59a4d1503..c7fc793ea0b 100644 --- a/docs/docs/about_aztec/roadmap/cryptography_roadmap.md +++ b/docs/docs/about_aztec/roadmap/cryptography_roadmap.md @@ -10,7 +10,7 @@ title: Cryptography Roadmap ## Honk -- Honk is a sumcheck-based zk-SNARK protocol with blazing-fast zk proof construction. We need to Honk allow users to prove correct execution of complicated, multi-step computations using recursion in a resource constraint environment like a cell phone. This is necessary for our mission, because we need to make sure our users' sensitive information never leaves their devices! +- Honk is a sumcheck-based zk-SNARK protocol with blazing-fast zk proof construction. We need Honk to allow users to prove correct execution of complicated, multi-step computations using recursion in a resource constraint environment like a cell phone. This is necessary for our mission, because we need to make sure our users' sensitive information never leaves their devices! - List of Honk projects - Completed: basic Honk prover and verifier with respectable construction and verification speeds, but no optimization. - Upcoming: diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index ceddbeb1186..96f1cba9131 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -50,9 +50,91 @@ E.g. `get()` ## Recursive function calls ## L1 --> L2 + +The context available within functions includes the ability to send messages to l1. + + + + + +#include_code send_to_l2 /yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr rust + +### What happens behind the scenes? +When a user sends a message from a portal contract (INCLUDE LINK HERE) to the rollup's inbox it gets processed and added to the `l1 to l2 messages tree` (INCLUDE LINK TO WHERE THIS IS DISCUSSED). The l1 to l2 messages tree contains all messages that have been sent from l1 to the l2. The good thing about this tree is that it does not reveal when it's messages have been spent, as consuming a message from the l1 to l2 messages tree is done by nullifing a message, rather than directly marking it as consumed. + +When calling the `consume_l1_to_l2_message` function on a contract; a number of actions are performed. + + +1. As the consume message function is passed a `msgKey` value, we can look up on l1 what the full contents of the message by making an oracle call to get the data. +2. We check that the message recipient is the contract of the current calling context. +3. We check that the message content matches the content reproduced earlier on. +4. We validate that we know the preimage to the message's `secretHash` field. (TODO: SEE MORE ON THIS FOLLOWING A LINK) +5. We compute the nullifier for the message. +#include_code l1_to_l2_message_compute_nullifier /yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr rust +6. Finally we push the nullifier to the context. Allowing it to be checked for validity by the kernel and rollup circuits. + +#include_code consume_l1_to_l2_message /yarn-project/noir-libs/noir-aztec/src/context.nr rust + +The emitted nullifier prevents our message from being consumed again. Users cannot re consume a message as the nullifier would already exist. ## L2 --> L1 ## Delegatecall Talk a about the dangers of delegatecall too! + + +## Deep dive + +### Function type attributes explained. +Aztec.nr uses an attribute system to annotate a function's type. Annotating a function with the `#[aztec(private)]` attribute tells the framework that this will be a private function that will be executed on a users device. Thus the compiler will create a circuit to define this function. + +However; `#aztec(private)` is just syntactic sugar. At compile time, the framework inserts some code that initializes the application context. + +To help illustrate how this interacts with the internals of Aztec and its kernel circuits, we can take an example private function, and explore what it looks like after Aztec.nr's macro expansion. + +#### The before +#include_code simple_macro_example /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + + +#### The expanded +#include_code simple_macro_example_expanded /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + +#### What does the expansion do? +Seeing an expanded noir contract reveals a lot about how noir contracts interact with the kernel. Let's run down the changes and dive into what each part does. + + +`inputs: PrivateContextInputs` +As discussed in (INSeRT SECTION HERE) private function calls are stitched together from within the kernel circuit. The kernel circuit forwards information to each app circuit. This information then becomes the private context. +For example, within each circuit we can access some global variables. To access them we can call `context.chain_id()`. The value of this chain ID comes from the values passed into the circuit from the kernel. + + +The kernel can then check that all of the values passed to each circuit in a function call are the same. + +`-> distinct pub abi::PrivateCircuitPublicInputs` +Just as the kernel passes information into the the app circuits, the application must return information about the executed app back to the kernel. This is done through a rigid structure we call the `PrivateCircuitPublicInputs`. + + +This structure contains a host of information about the executed program. It will contain any newly created nullifiers, any messages to be sent to l2 and most importantly it will contain the actual return values of the function! + +`hasher` +What is the hasher and why is it needed? + +Inside the kernel circuits, the inputs to functions are reduced to a single value; the inputs hash. This prevents there needing to be multiple different kernel circuits which support differing numbers of inputs to each function. The is an abstraction that allows us to create an array of all of the inputs that we can then hash to a single point. + + + +`let mut context = PrivateContext::new(inputs, hasher.hash())` +Creating the function's context. +Within each Aztec function we have access to a context object that feels like a global object. This is in-fact NOT global but rather is initialized from the inputs provided by the kernel, and a hash of the function's inputs. + + + +`context.return_values.push(result)` +As mentioned in the kernel circuit section *(INCLUDE LINK)* we use the kernel to pass information between circuits. This means that the return values of functions must also be passed to the kernel to pass the value on to another function call. +This is done by pushing our return values to the execution context, which can then in turn pass the values to the kernel. + +`context.finish()` +This function takes the application context, and converts it into the `PrivateCircuitPublicInputs` structure. This structure is what is passed to the kernel circuit to enable cross communication between applications. \ No newline at end of file diff --git a/docs/docs/dev_docs/contracts/portals/main.md b/docs/docs/dev_docs/contracts/portals/main.md index 4af8dcdb944..30dd629920e 100644 --- a/docs/docs/dev_docs/contracts/portals/main.md +++ b/docs/docs/dev_docs/contracts/portals/main.md @@ -110,37 +110,14 @@ 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 send_to_portal /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 l1_to_l2_message_struct /l1-contracts/src/core/libraries/DataStructures.sol solidity -function consume(DataStructures.L2ToL1Msg memory _message) - external - returns (bytes32 entryKey); -``` +#include_code consume_interface /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`. diff --git a/docs/docs/dev_docs/contracts/syntax.md b/docs/docs/dev_docs/contracts/syntax.md index a5d5008e78d..556ebebfae4 100644 --- a/docs/docs/dev_docs/contracts/syntax.md +++ b/docs/docs/dev_docs/contracts/syntax.md @@ -1,6 +1,6 @@ # Aztec.nr Syntax -[Noir](https://noir-lang.org/) is a language which is agnostic to proof systems and use cases. Rather than baking Aztec-specific keywords and smart contract types directly into Noir (which would break this agnosticism), we have developed a library -- written in Noir -- whose types and methods provide rich smart contract semantics. +[Noir](https://noir-lang.org/) is a language which is agnostic to proof systems and use cases. Rather than baking Aztec-specific keywords and smart contract types directly into Noir (which would break this agnosticism), we have developed a framework -- written in Noir -- whose types and methods provide rich smart contract semantics. On top of [Noir's stdlib](https://noir-lang.org/standard_library/array_methods), we provide [Aztec.nr](https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/noir-libs) for writing contracts on Aztec. @@ -16,4 +16,15 @@ Aztec.nr contains abstractions which remove the need to understand the low-level To import Aztec.nr into your Aztec contract project, simply include it as a dependency. -#include_code importing-aztec /yarn-project/noir-contracts/src/contracts/private_token_contract/Nargo.toml toml +```toml +[package] +name = "my_noir_contract" +authors = [""] +compiler_version = "0.10.0" +type = "contract" + +[dependencies] +aztec = { git="https://github.com/AztecProtocol/aztec-packages", tag="master", directory="yarn-project/noir-libs/noir-aztec" } +``` + +Note: currently the dependency name ***MUST*** be `aztec`. The framework expects this namespace to be available when compiling into contracts. This limitation may be removed in the future. \ No newline at end of file diff --git a/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol b/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol index 3c822b2823e..0dfed6f9151 100644 --- a/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol +++ b/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol @@ -30,6 +30,7 @@ interface IOutbox { */ function sendL1Messages(bytes32[] memory _entryKeys) external; + /// docs:start:consume_interface /** * @notice Consumes an entry from the Outbox * @dev Only meaningfully callable by portals, otherwise should never hit an entry @@ -38,6 +39,7 @@ interface IOutbox { * @return entryKey - The key of the entry removed */ function consume(DataStructures.L2ToL1Msg memory _message) external returns (bytes32 entryKey); + /// docs:end:consume_interface /** * @notice Fetch an entry diff --git a/l1-contracts/src/core/libraries/DataStructures.sol b/l1-contracts/src/core/libraries/DataStructures.sol index 251a8147643..430f3f1f0f2 100644 --- a/l1-contracts/src/core/libraries/DataStructures.sol +++ b/l1-contracts/src/core/libraries/DataStructures.sol @@ -42,6 +42,7 @@ library DataStructures { uint256 version; } + // docs:start:l1_to_l2_message_struct /** * @notice Struct containing a message from L1 to L2 * @param sender - The sender of the message @@ -59,6 +60,7 @@ library DataStructures { uint32 deadline; uint64 fee; } + // docs:end:l1_to_l2_message_struct /** * @notice Struct containing a message from L2 to L1 diff --git a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr index 6bc752cd975..d2a8b8b37cd 100644 --- a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr @@ -176,4 +176,65 @@ contract DocsExample { actions::get_total_points(storage.cards, account, 0) } // docs:end:functions-UncontrainedFunction + + + /// Macro equivalence section + use dep::aztec::abi; + use dep::aztec::abi::Hasher; + use dep::aztec::context::PrivateContext; + use dep::aztec::abi::PrivateContextInputs; + use dep::aztec::abi::PrivateCircuitPublicInputs; + + // docs:start:simple_macro_example + #[aztec(private)] + fn simple_macro_example(a: Field, b: Field) -> Field { + a + b + } + // docs:end:simple_macro_example + + + // docs:start:simple_macro_example_expanded + fn simple_macro_example_expanded( + // ************************************************************ + // The private context inputs are made available to the circuit by the kernel + inputs: PrivateContextInputs, + // ************************************************************ + + // Our original inputs! + a: Field, + b: Field + + // The actual return type of our circuit is the PrivateCircuitPublicInputs struct, this will be the + // input to our kernel! + ) -> distinct pub abi::PrivateCircuitPublicInputs { + // ************************************************************ + // The hasher is a structure used to generate a hash of the circuits inputs. + let mut hasher = Hasher::new(); + hasher.add(a); + hasher.add(b); + + // The context object is created with the inputs and the hash of the inputs + let mut context = PrivateContext::new(inputs, hasher.hash()); + // ************************************************************ + + // Our actual program + let result = a + b; + + // ************************************************************ + // Return values are pushed into the context + context.return_values.push(result); + + // The context is returned to be consumed by the kernel circuit! + context.finish() + // ************************************************************ + } + // docs:end:simple_macro_example_expanded + + + // Cross chain messaging section + // Demonstrates a cross chain message + // docs:start:l1_to_l2_cross_chain_message + #[aztec(private)] + fn send_to_l1() + // docs:end:l1_to_l2_cross_chain_message } 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 53d7e84e8e4..8a63884de9b 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 @@ -59,6 +59,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:send_to_l2 #[aztec(private)] fn mint( amount: Field, @@ -78,10 +79,12 @@ contract NonNativeToken { let balance = storage.balances.at(owner); increment(balance, amount, owner); } + // docs:end:send_to_l2 // 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:send_to_portal #[aztec(private)] fn withdraw( amount: Field, @@ -97,6 +100,7 @@ contract NonNativeToken { let content = get_withdraw_content_hash(amount, recipient, callerOnL1); context.message_portal(content); } + // docs:end:send_to_portal // Mint Public Function // This mint function differs to the typical token mint function as it only allows minting diff --git a/yarn-project/noir-libs/noir-aztec/src/context.nr b/yarn-project/noir-libs/noir-aztec/src/context.nr index 6d6b9647e5c..a7e23da21f4 100644 --- a/yarn-project/noir-libs/noir-aztec/src/context.nr +++ b/yarn-project/noir-libs/noir-aztec/src/context.nr @@ -167,12 +167,14 @@ impl PrivateContext { // 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 + // docs:start:consume_l1_to_l2_message fn consume_l1_to_l2_message(&mut self, inputs: abi::PrivateContextInputs, msg_key: Field, content: Field, secret: Field) { 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") self.push_new_nullifier(nullifier, EMPTY_NULLIFIED_COMMITMENT) } + // docs:end:consume_l1_to_l2_message fn accumulate_encrypted_logs(&mut self, log: [Field; N]) { let _void1 = self.inputs; diff --git a/yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr b/yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr index f4b44f8625f..70e5f6efc23 100644 --- a/yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr +++ b/yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr @@ -82,8 +82,10 @@ impl L1ToL2Message { } // The nullifier of a l1 to l2 message is the hash of the message salted with the secret and tree index + // docs:start:l1_to_l2_message_compute_nullifier fn compute_nullifier(self: Self) -> Field { let message_hash = self.message_hash(); dep::std::hash::pedersen_with_separator([message_hash, self.secret, self.tree_index], GENERATOR_INDEX__NULLIFIER)[0] } + // docs:end:l1_to_l2_message_compute_nullifier } From a6851f734cbcc00e107b69675d5232e45c07a8dd Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Tue, 5 Sep 2023 22:13:47 +0000 Subject: [PATCH 07/25] checkpoint --- docs/docs/dev_docs/contracts/context.md | 85 +++++++++++++++++++ docs/docs/dev_docs/contracts/functions.md | 3 + yarn-project/noir-libs/noir-aztec/src/abi.nr | 10 ++- .../noir-libs/noir-aztec/src/context.nr | 2 + 4 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 docs/docs/dev_docs/contracts/context.md diff --git a/docs/docs/dev_docs/contracts/context.md b/docs/docs/dev_docs/contracts/context.md new file mode 100644 index 00000000000..a86266e57c3 --- /dev/null +++ b/docs/docs/dev_docs/contracts/context.md @@ -0,0 +1,85 @@ +# Overview of this page (change this title) + +We want ot include some over arching details on what is included inside the context structure, and give an overview of what it actually is. + +## What is the context. +The context is a variable that is made available within every function in `Aztec.nr`. As mentioned in the KERNEL CIRCUIT SECTION. The application context is a structure that contains all of the infromation a function needs from the kernel circuit, as well as all the information the kernel needs after a function execution completes. + +Behind the scenes, Aztec noir will pass data the kernel needs to and from a circuit, this is completely abstracted away from the developer. In an application developer's eyes; the context is a useful structure that allows access to anything on the aztec blockchain outside of the current circuit (REWORD THIS SECTION). + +## What is contained within the context. + +The code snippet below shows what is currently contained within the private context. +#include_code functions-OpenFunction /yarn-project/noir-libs/noir-aztec/src/context.nr rust + +### Private Context Broken Down +#### Inputs +The context inputs includes all of the information that is passed from the kernel circuit into the application circuit. It contains the following values. + +#include_code private-context-inputs /yarn-project/noir-libs/noir-aztec/src/abi.nr rust + +As shown in the snippet, the application context is made up of 4 main structures. The call context, the block data, the contract deployment data and the private global variables. + +First of all, the call context. + +#include_code call-context /yarn-project/noir-libs/noir-aztec/src/abi.nr rust + +The call context contains information about the current call being made:. +1, Msg Sender + - The message sender is the account (Aztec Contract) that sent the message to the current context. In the first call of the kernel circuit (often the account contract call), this value will be empty. For all subsequent calls the value will be the previous call. + + ( TODO: INCLUDE A DIAGRAM HERE SHOWING HOW IT GETS UPDATED ON CONTRACT CALLS ) +2. Storage contract address + - This value is the address of the current context's contract address. This value will be the value of the current contract that is being executed except for when the current call is a delegate call (TODO: INCLUDE A LINK TO ITS DOCUMENTATION). In this case the value will be that of the sending contract. + + - This value is important as it is the value that is used when siloing the storage values of a contract. ( TODO: DOES THIS NEED TO BE DIVED INTO MORE OR IS IT SOMETHING THTAT THERE IS A LINK TO). +3. Portal Contract Address + - This value stores the current contract's linked portal contract address. ( INCLUDE A LINK TO THE LITERATURE ). As a quick recap, this value is the value of the contracts related ethereum l1 contract address, and will be the recipient of any messages that are created by this contract. +4. Flags + - Furthermore there are a series of flags that are stored within the application context: + - is_delegate_call: Denotes whether the current call is a delegate call. If true, then the storage contract address will NOT be the current contract address. + - is_static_call: (TODO: REFER TO EVM CODES TO FILL IN THIS SECTION) + - is_contract_deployment: This will be set if and only if the current call is the contract's constructor. + +### Historic Block Data +Another structure that is contained within the context is the Historic Block Data object. This object is a special one as it contains all of the roots of Aztec's data trees. + +#include_code historic-block-data /yarn-project/noir-libs/noir-aztec/src/abi.nr rust + +## TODO: gloss this up +Having these tree's on hand allows for a host of interesting use cases. If you can create a merkle proof which matches the root of these trees. Then you can prove that a value exists in the current state of the system. + +### Contract Deployment Data +Just like with the `is_contract_deployment` flag mentioned earlier. This flag will only be set to true when the current transaction is one in which a contract is being deployed. + +#### TODO : WAT CONTAIN AND WAT DO + + +### Private Global Variables +TODO: +- include in this section how the global variabels can be accessed and what they contain + + + + +## Args Hash + + + + --> + +## Public Context Inputs +In the current version of the system, the public context is almost a clone of the private execution context. It contains the same call context data, access to the same historic tree roots, however it does NOT have access to contract deployment data, this is due to traditional contract deployments only currently being possible from private transactions. + +#include_code public-context-inputs /yarn-project/noir-libs/noir-aztec/src/abi.nr rust \ No newline at end of file diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index 96f1cba9131..c4ccc4959e7 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -10,6 +10,7 @@ ## secret functions > a.k.a. "private" functions +To create a private function you can annotate it with the `#[aztec(private)]` attribute. This will make the private context (INCLUDE LINK TO COVERAGE OF PRIVATE CONTEXT) available within your current function's execution scope. #include_code functions-SecretFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust @@ -17,6 +18,8 @@ > a.k.a. "public" functions +To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the public context available within your current function's execution scope. (TODO: INCLUDE LINK) + #include_code functions-OpenFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust ## `unconstrained` functions diff --git a/yarn-project/noir-libs/noir-aztec/src/abi.nr b/yarn-project/noir-libs/noir-aztec/src/abi.nr index 780cd99e4ad..1738df5f466 100644 --- a/yarn-project/noir-libs/noir-aztec/src/abi.nr +++ b/yarn-project/noir-libs/noir-aztec/src/abi.nr @@ -82,23 +82,26 @@ impl ContractDeploymentData { } // PrivateContextInputs are expected to be provided to each private function +// docs:start:private-context-inputs struct PrivateContextInputs { call_context : CallContext, block_data: HistoricBlockData, - contract_deployment_data: ContractDeploymentData, - private_global_variables: PrivateGlobalVariables, } +// docs:end:private-context-inputs // PublicContextInputs are expected to be provided to each public function +// docs:start:public-context-inputs struct PublicContextInputs { call_context: CallContext, block_data: HistoricBlockData, public_global_variables: PublicGlobalVariables, } +// docs:end:public-context-inputs +// docs:start:call-context struct CallContext { msg_sender : Field, storage_contract_address : Field, @@ -108,6 +111,7 @@ struct CallContext { is_static_call : bool, is_contract_deployment: bool, } +// docs:end:call-context impl CallContext { fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] { @@ -126,6 +130,7 @@ impl CallContext { } } +// docs:start:historic-block-data struct HistoricBlockData { private_data_tree_root : Field, nullifier_tree_root : Field, @@ -135,6 +140,7 @@ struct HistoricBlockData { public_data_tree_root: Field, global_variables_hash: Field, } +// docs:end:historic-block-data impl HistoricBlockData { // NOTE: this order must match the order in `private_circuit_public_inputs.hpp` diff --git a/yarn-project/noir-libs/noir-aztec/src/context.nr b/yarn-project/noir-libs/noir-aztec/src/context.nr index a7e23da21f4..968d95705c3 100644 --- a/yarn-project/noir-libs/noir-aztec/src/context.nr +++ b/yarn-project/noir-libs/noir-aztec/src/context.nr @@ -50,6 +50,7 @@ use crate::oracle::{ // When finished, one can call .finish() to convert back to the abi struct PrivateContext { + // docs:start:private-context inputs: abi::PrivateContextInputs, args_hash : Field, @@ -64,6 +65,7 @@ struct PrivateContext { private_call_stack : BoundedVec, public_call_stack : BoundedVec, new_l2_to_l1_msgs : BoundedVec, + // docs:end:private-context block_data: HistoricBlockData, From 5ea83e32284056cb21d06cb2a10dec79f442b41b Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Wed, 6 Sep 2023 11:11:14 +0000 Subject: [PATCH 08/25] feat: add context section to the docs --- docs/sidebars.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/sidebars.js b/docs/sidebars.js index 518d6afe2cc..a1d88785e2a 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -92,11 +92,11 @@ const sidebars = { "dev_docs/contracts/workflow", "dev_docs/contracts/syntax", "dev_docs/contracts/contract", + "dev_docs/contracts/functions", "dev_docs/contracts/layout", "dev_docs/contracts/types", "dev_docs/contracts/storage", "dev_docs/contracts/state_variables", - "dev_docs/contracts/functions", "dev_docs/contracts/control_structure", "dev_docs/contracts/visibility", "dev_docs/contracts/globals", @@ -105,6 +105,7 @@ const sidebars = { "dev_docs/contracts/compiling", "dev_docs/contracts/deploying", "dev_docs/contracts/abi", + "dev_docs/contracts/context", { label: "Portals", type: "category", From 6f324f6d616934cce7174ebdf57e7b71429e503e Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Wed, 6 Sep 2023 11:21:07 +0000 Subject: [PATCH 09/25] feat: clean up functions docs --- docs/docs/dev_docs/contracts/context.md | 7 +- docs/docs/dev_docs/contracts/functions.md | 78 +++++++++++-------- .../docs_example_contract/src/main.nr | 17 +++- .../public_token_contract/src/main.nr | 2 + 4 files changed, 71 insertions(+), 33 deletions(-) diff --git a/docs/docs/dev_docs/contracts/context.md b/docs/docs/dev_docs/contracts/context.md index a86266e57c3..9b0a12f1798 100644 --- a/docs/docs/dev_docs/contracts/context.md +++ b/docs/docs/dev_docs/contracts/context.md @@ -1,3 +1,8 @@ +--- +title: Aztec.nr Context +description: Documentation of Aztec's Private and Public execution contexts +hide_table_of_contents: false +--- # Overview of this page (change this title) We want ot include some over arching details on what is included inside the context structure, and give an overview of what it actually is. @@ -10,7 +15,7 @@ Behind the scenes, Aztec noir will pass data the kernel needs to and from a circ ## What is contained within the context. The code snippet below shows what is currently contained within the private context. -#include_code functions-OpenFunction /yarn-project/noir-libs/noir-aztec/src/context.nr rust +#include_code private-context /yarn-project/noir-libs/noir-aztec/src/context.nr rust ### Private Context Broken Down #### Inputs diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index c4ccc4959e7..bfb11ed8f8c 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -3,22 +3,30 @@ ## `constructor` - A special `constructor` function MUST be declared within a contract's scope. -- A constructor doesn't have a name, because its purpose is clear: to initialise state. -- In Aztec terminology, a constructor is always a 'private function' (i.e. it cannot be an `open` function). +- A constructor doesn't have a name, because its purpose is clear: to initialise contract state. +- In Aztec terminology, a constructor is always a '`private` function' (i.e. it cannot be a `public` function). - A constructor behaves almost identically to any other function. It's just important for Aztec to be able to identify this function as special: it may only be called once, and will not be deployed as part of the contract. -## secret functions +An example of a constructor is as follows: +#include_code constructor /yarn-project/noir-contracts/src/contracts/private_token_contract/src/main.nr rust -> a.k.a. "private" functions -To create a private function you can annotate it with the `#[aztec(private)]` attribute. This will make the private context (INCLUDE LINK TO COVERAGE OF PRIVATE CONTEXT) available within your current function's execution scope. +In this example (taken from a token contract), the constructor mints `initial_supply` tokens to the passed in `owner`. + +Although constructors are always needed, they are not required to do anything. A empty constructor can be created as follows: + +#include_code empty-constructor /yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr rust -#include_code functions-SecretFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -## `open` functions +## `Private` Functions + +To create a private function you can annotate it with the `#[aztec(private)]` attribute. This will make the [private context](./context.md#private-context-broken-down) available within your current function's execution scope. + +#include_code functions-SecretFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -> a.k.a. "public" functions +## `Public` Functions -To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the public context available within your current function's execution scope. (TODO: INCLUDE LINK) + +To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the [public context](./context.md#public-context-inputs) available within your current function's execution scope. #include_code functions-OpenFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust @@ -94,50 +102,58 @@ Talk a about the dangers of delegatecall too! ### Function type attributes explained. Aztec.nr uses an attribute system to annotate a function's type. Annotating a function with the `#[aztec(private)]` attribute tells the framework that this will be a private function that will be executed on a users device. Thus the compiler will create a circuit to define this function. -However; `#aztec(private)` is just syntactic sugar. At compile time, the framework inserts some code that initializes the application context. +However; `#aztec(private)` is just syntactic sugar. At compile time, the framework inserts code that allows the function to interact with the [kernel](../../concepts/advanced/circuits/kernels/private_kernel.md). To help illustrate how this interacts with the internals of Aztec and its kernel circuits, we can take an example private function, and explore what it looks like after Aztec.nr's macro expansion. -#### The before +#### Before expansion #include_code simple_macro_example /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -#### The expanded +#### After expansion #include_code simple_macro_example_expanded /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -#### What does the expansion do? -Seeing an expanded noir contract reveals a lot about how noir contracts interact with the kernel. Let's run down the changes and dive into what each part does. +#### The expansion broken down? +Viewing the expanded noir contract uncovers a lot about how noir contracts interact with the [kernel](../../concepts/advanced/circuits/kernels/private_kernel.md). To aid with developing intuition, we will break down each inserted line. -`inputs: PrivateContextInputs` -As discussed in (INSeRT SECTION HERE) private function calls are stitched together from within the kernel circuit. The kernel circuit forwards information to each app circuit. This information then becomes the private context. +**Receiving context from the kernel.** +#include_code context-example-inputs /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + +Private function calls are able to interact with each other through orchestration from within the [kernel circuit](../../concepts/advanced/circuits/kernels/private_kernel.md). The kernel circuit forwards information to each app circuit. This information then becomes part of the private context. For example, within each circuit we can access some global variables. To access them we can call `context.chain_id()`. The value of this chain ID comes from the values passed into the circuit from the kernel. - The kernel can then check that all of the values passed to each circuit in a function call are the same. -`-> distinct pub abi::PrivateCircuitPublicInputs` +**Returning the context to the kernel.** +#include_code context-example-return /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + Just as the kernel passes information into the the app circuits, the application must return information about the executed app back to the kernel. This is done through a rigid structure we call the `PrivateCircuitPublicInputs`. - + +> *Why is it called the `PrivateCircuitPublicInputs`* +> It is commonly asked why the return values of a function in a circuit are labelled as the `Public Inputs`. Common intuition from other programming paradigms suggests that the return values and public inputs should be distinct. +> However; In the eyes of the circuit, anything that is publicly viewable (or checkable) is a public input. Hence in this case, the return values are also public inputs. This structure contains a host of information about the executed program. It will contain any newly created nullifiers, any messages to be sent to l2 and most importantly it will contain the actual return values of the function! -`hasher` +**Hashing the function inputs.** +#include_code context-example-hasher /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + What is the hasher and why is it needed? -Inside the kernel circuits, the inputs to functions are reduced to a single value; the inputs hash. This prevents there needing to be multiple different kernel circuits which support differing numbers of inputs to each function. The is an abstraction that allows us to create an array of all of the inputs that we can then hash to a single point. +Inside the kernel circuits, the inputs to functions are reduced to a single value; the inputs hash. This prevents the need for multiple different kernel circuits; each supporting differing numbers of inputs. The hasher abstraction that allows us to create an array of all of the inputs that can be reduced to a single value. + +**Creating the function's context.** +#include_code context-example-context /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust - +Each Aztec function has access to a [context](./context.md) object. This object although ergonomically a global variable, is local. It is initialized from the inputs provided by the kernel, and a hash of the function's inputs. -`let mut context = PrivateContext::new(inputs, hasher.hash())` -Creating the function's context. -Within each Aztec function we have access to a context object that feels like a global object. This is in-fact NOT global but rather is initialized from the inputs provided by the kernel, and a hash of the function's inputs. +#include_code context-example-context-return /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust - +As previously mentioned we use the kernel to pass information between circuits. This means that the return values of functions must also be passed to the kernel (where they can be later passed on to another function). +We achieve this by pushing return values to the execution context, which we then pass to the kernel. -`context.return_values.push(result)` -As mentioned in the kernel circuit section *(INCLUDE LINK)* we use the kernel to pass information between circuits. This means that the return values of functions must also be passed to the kernel to pass the value on to another function call. -This is done by pushing our return values to the execution context, which can then in turn pass the values to the kernel. +**Returning the function context to the kernel.** +#include_code context-example-finish /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -`context.finish()` -This function takes the application context, and converts it into the `PrivateCircuitPublicInputs` structure. This structure is what is passed to the kernel circuit to enable cross communication between applications. \ No newline at end of file +This function takes the application context, and converts it into the `PrivateCircuitPublicInputs` structure. This structure is then passed to the kernel circuit. \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr index d2a8b8b37cd..9f78b8b76e0 100644 --- a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr @@ -197,7 +197,9 @@ contract DocsExample { fn simple_macro_example_expanded( // ************************************************************ // The private context inputs are made available to the circuit by the kernel + // docs:start:context-example-inputs inputs: PrivateContextInputs, + // docs:end:context-example-inputs // ************************************************************ // Our original inputs! @@ -206,15 +208,21 @@ contract DocsExample { // The actual return type of our circuit is the PrivateCircuitPublicInputs struct, this will be the // input to our kernel! + // docs:start:context-example-return ) -> distinct pub abi::PrivateCircuitPublicInputs { + // docs:end:context-example-return // ************************************************************ // The hasher is a structure used to generate a hash of the circuits inputs. + // docs:start:context-example-hasher let mut hasher = Hasher::new(); hasher.add(a); hasher.add(b); + // docs:end:context-example-hasher // The context object is created with the inputs and the hash of the inputs + // docs:start:context-example-context let mut context = PrivateContext::new(inputs, hasher.hash()); + // docs:end:context-example-context // ************************************************************ // Our actual program @@ -222,10 +230,14 @@ contract DocsExample { // ************************************************************ // Return values are pushed into the context + // docs:start:context-example-context-return context.return_values.push(result); + // docs:end:context-example-context-return // The context is returned to be consumed by the kernel circuit! + // docs:start:context-example-finish context.finish() + // docs:end:context-example-finish // ************************************************************ } // docs:end:simple_macro_example_expanded @@ -235,6 +247,9 @@ contract DocsExample { // Demonstrates a cross chain message // docs:start:l1_to_l2_cross_chain_message #[aztec(private)] - fn send_to_l1() + fn send_to_l1() { + + + } // docs:end:l1_to_l2_cross_chain_message } diff --git a/yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr index 14f58ae5006..b1ac54dbf22 100644 --- a/yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr @@ -10,8 +10,10 @@ contract PublicToken { use crate::storage::Storage; // Constructs the contract. + // docs:start:empty-constructor #[aztec(private)] fn constructor() {} + // docs:end:empty-constructor // Mints `amount` of tokens to a `recipient`. #[aztec(public)] From 319aada76f4d5e5e3653f0cefa128bf4a08e924d Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Wed, 6 Sep 2023 14:19:35 +0000 Subject: [PATCH 10/25] feat: update context docs --- docs/docs/dev_docs/contracts/context.md | 75 +++++++++++++------- docs/docs/dev_docs/contracts/functions.md | 35 ++++----- yarn-project/noir-libs/noir-aztec/src/abi.nr | 7 ++ 3 files changed, 70 insertions(+), 47 deletions(-) diff --git a/docs/docs/dev_docs/contracts/context.md b/docs/docs/dev_docs/contracts/context.md index 9b0a12f1798..f06380ada8d 100644 --- a/docs/docs/dev_docs/contracts/context.md +++ b/docs/docs/dev_docs/contracts/context.md @@ -3,18 +3,25 @@ title: Aztec.nr Context description: Documentation of Aztec's Private and Public execution contexts hide_table_of_contents: false --- -# Overview of this page (change this title) +# The Function Context -We want ot include some over arching details on what is included inside the context structure, and give an overview of what it actually is. +## What is the context +The context is a variable that is made available within every function in `Aztec.nr`. As mentioned in the [kernel circuit documentation](../../concepts/advanced/circuits/kernels/private_kernel.md). At the beginning of a function's execution, the context contains all of the kernel information that application needs to execute. During the lifecycle of a transaction, the function will update the context with each of it's side effects (created notes, nullifiers etc.). At the end of a function's execution the mutated context is returned to the kernel to be checked for validity. -## What is the context. -The context is a variable that is made available within every function in `Aztec.nr`. As mentioned in the KERNEL CIRCUIT SECTION. The application context is a structure that contains all of the infromation a function needs from the kernel circuit, as well as all the information the kernel needs after a function execution completes. +Behind the scenes, Aztec noir will pass data the kernel needs to and from a circuit, this is abstracted away from the developer. In an developer's eyes; the context is a useful structure that allows access and mutate the state of the `Aztec` blockchain. -Behind the scenes, Aztec noir will pass data the kernel needs to and from a circuit, this is completely abstracted away from the developer. In an application developer's eyes; the context is a useful structure that allows access to anything on the aztec blockchain outside of the current circuit (REWORD THIS SECTION). +## Two context's one API +The `Aztec` blockchain contains two execution environments (ADD REFERENCE). +- Private, for private transactions taking place on user's devices. +- Public, for public transactions taking place on the network's sequencers. -## What is contained within the context. +As there are two distinct execution environments, they both require slightly differing execution contexts. Despite their differences; the API's for interacting with each are unified. Leading to minimal context switch when working between the two environments. -The code snippet below shows what is currently contained within the private context. +The following section will cover both contexts. + +## The Private Context + +The code snippet below shows what is contained within the private context. #include_code private-context /yarn-project/noir-libs/noir-aztec/src/context.nr rust ### Private Context Broken Down @@ -51,40 +58,56 @@ Another structure that is contained within the context is the Historic Block Dat #include_code historic-block-data /yarn-project/noir-libs/noir-aztec/src/abi.nr rust -## TODO: gloss this up -Having these tree's on hand allows for a host of interesting use cases. If you can create a merkle proof which matches the root of these trees. Then you can prove that a value exists in the current state of the system. - ### Contract Deployment Data -Just like with the `is_contract_deployment` flag mentioned earlier. This flag will only be set to true when the current transaction is one in which a contract is being deployed. - -#### TODO : WAT CONTAIN AND WAT DO +Just like with the `is_contract_deployment` flag mentioned earlier. This data will only be set to true when the current transaction is one in which a contract is being deployed. +#include_code contract-deployment-data /yarn-project/noir-libs/noir-aztec/src/abi.nr rust ### Private Global Variables -TODO: -- include in this section how the global variabels can be accessed and what they contain +In the private execution context, we only have access to a subset of the total global variables, we are restricted to those which can be reliably proven by the kernel circuits. +#include_code private-global-variables /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +### Args Hash +To allow for flexibility in the number of arguments supported by Aztec functions, all function inputs are reduced to a singular value which can be proven from within the application. +The `args_hash` is the result of pedersen hashing all of a function's inputs. -## Args Hash +### Return Values +The return values are a set of values that are returned from an applications execution to be passed to other functions through the kernel. Developers do not need to worry about passing their function return values to the `context` directly as `Aztec.nr` takes care of it for you. See the documentation surrounding `Aztec.nr` [macro expansion](../../dev_docs/contracts/functions.md#after-expansion) for more details. + return_values : BoundedVec, +### Read Requests + - --> +### Private Call Stack +The private call stack contains all of the external function calls that have been created within the current context. Any function call objects are hashed and then pushed to the execution stack. +The kernel circuit will orchestrate dispatching the calls and returning the values to the current context. + +### Public Call Stack +The public call stack contains all of the external function calls that are created within the current context. Like the private call stack above, the calls are hashed and pushed to this stack. Unlike the private call stack, these calls are not executed client side. Whenever the function is sent to the network, it will have the public call stack attached to it. At this point the sequencer will take over and execute the transactions. + +### New L2 to L1 msgs +New L2 to L1 messages contains messages that are delivered to the [l1 outbox](../../concepts/foundation/communication/cross_chain_calls.md) on the execution of each rollup. ## Public Context Inputs In the current version of the system, the public context is almost a clone of the private execution context. It contains the same call context data, access to the same historic tree roots, however it does NOT have access to contract deployment data, this is due to traditional contract deployments only currently being possible from private transactions. -#include_code public-context-inputs /yarn-project/noir-libs/noir-aztec/src/abi.nr rust \ No newline at end of file +#include_code public-context-inputs /yarn-project/noir-libs/noir-aztec/src/abi.nr rust + + +### Public Global Variables +The public global variables are provided by the rollup sequencer and consequently contain some more values than the private global variables. + +#include_code public-global-variables /yarn-project/noir-libs/noir-aztec/src/abi.nr rust diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index bfb11ed8f8c..5d8238472f1 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -61,34 +61,28 @@ E.g. `get()` ## Recursive function calls ## L1 --> L2 - -The context available within functions includes the ability to send messages to l1. - - - - +The context available within functions includes the ability to send messages to l1. For more information on how cross chain communication works in Aztec, see the [documentation on communication.](../../concepts/foundation/communication/cross_chain_calls.md) #include_code send_to_l2 /yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr rust ### What happens behind the scenes? -When a user sends a message from a portal contract (INCLUDE LINK HERE) to the rollup's inbox it gets processed and added to the `l1 to l2 messages tree` (INCLUDE LINK TO WHERE THIS IS DISCUSSED). The l1 to l2 messages tree contains all messages that have been sent from l1 to the l2. The good thing about this tree is that it does not reveal when it's messages have been spent, as consuming a message from the l1 to l2 messages tree is done by nullifing a message, rather than directly marking it as consumed. +When a user sends a message from a [portal contract](../../concepts/foundation/communication/cross_chain_calls.md#portal) to the rollup's inbox it gets processed and added to the `l1 to l2 messages tree`. + <-- TODO(Maddiaa): INCLUDE LINK TO WHERE the messages tree is discussed elsewhere in the docs. --> +The l1 to l2 messages tree contains all messages that have been sent from l1 to the l2. The good thing about this tree is that it does not reveal when it's messages have been spent, as consuming a message from the l1 to l2 messages tree is done by nullifing a message, rather than marking it as consumed. -When calling the `consume_l1_to_l2_message` function on a contract; a number of actions are performed. +When calling the `consume_l1_to_l2_message` function on a contract; a number of actions are performed by `Aztec.nr`. - -1. As the consume message function is passed a `msgKey` value, we can look up on l1 what the full contents of the message by making an oracle call to get the data. -2. We check that the message recipient is the contract of the current calling context. -3. We check that the message content matches the content reproduced earlier on. -4. We validate that we know the preimage to the message's `secretHash` field. (TODO: SEE MORE ON THIS FOLLOWING A LINK) -5. We compute the nullifier for the message. +1. The `msgKey` value (passed to the consume message function) is used to look up the contents of the l1 message. +2. Check that the message recipient is the contract of the current calling context. +3. Check that the message content matches the content reproduced earlier on. +4. Validate that caller know's the preimage to the message's `secretHash`. See more information [here](../../concepts/foundation/communication/cross_chain_calls.md#messages). +5. We compute the nullifier for the message. #include_code l1_to_l2_message_compute_nullifier /yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr rust 6. Finally we push the nullifier to the context. Allowing it to be checked for validity by the kernel and rollup circuits. #include_code consume_l1_to_l2_message /yarn-project/noir-libs/noir-aztec/src/context.nr rust -The emitted nullifier prevents our message from being consumed again. Users cannot re consume a message as the nullifier would already exist. +As the same nullifier cannot be created twice. We cannot consume the message again. ## L2 --> L1 @@ -98,7 +92,6 @@ Talk a about the dangers of delegatecall too! ## Deep dive - ### Function type attributes explained. Aztec.nr uses an attribute system to annotate a function's type. Annotating a function with the `#[aztec(private)]` attribute tells the framework that this will be a private function that will be executed on a users device. Thus the compiler will create a circuit to define this function. @@ -130,9 +123,9 @@ The kernel can then check that all of the values passed to each circuit in a fun Just as the kernel passes information into the the app circuits, the application must return information about the executed app back to the kernel. This is done through a rigid structure we call the `PrivateCircuitPublicInputs`. -> *Why is it called the `PrivateCircuitPublicInputs`* -> It is commonly asked why the return values of a function in a circuit are labelled as the `Public Inputs`. Common intuition from other programming paradigms suggests that the return values and public inputs should be distinct. -> However; In the eyes of the circuit, anything that is publicly viewable (or checkable) is a public input. Hence in this case, the return values are also public inputs. +> *Why is it called the `PrivateCircuitPublicInputs`* +> It is commonly asked why the return values of a function in a circuit are labelled as the `Public Inputs`. Common intuition from other programming paradigms suggests that the return values and public inputs should be distinct. +> However; In the eyes of the circuit, anything that is publicly viewable (or checkable) is a public input. Hence in this case, the return values are also public inputs. This structure contains a host of information about the executed program. It will contain any newly created nullifiers, any messages to be sent to l2 and most importantly it will contain the actual return values of the function! diff --git a/yarn-project/noir-libs/noir-aztec/src/abi.nr b/yarn-project/noir-libs/noir-aztec/src/abi.nr index 1738df5f466..656aaf47f79 100644 --- a/yarn-project/noir-libs/noir-aztec/src/abi.nr +++ b/yarn-project/noir-libs/noir-aztec/src/abi.nr @@ -32,10 +32,13 @@ use crate::oracle::debug_log; use crate::types::vec::BoundedVec; use crate::types::point::Point; + +// docs:start:private-global-variables struct PrivateGlobalVariables { chain_id: Field, version: Field, } +// docs:end:private-global-variables impl PrivateGlobalVariables { fn serialize(self) -> [Field; 2] { @@ -43,12 +46,14 @@ impl PrivateGlobalVariables { } } +// docs:start:public-global-variables struct PublicGlobalVariables { chain_id: Field, version: Field, block_number: Field, timestamp: Field, } +// docs:end:public-global-variables impl PublicGlobalVariables { fn serialize(self) -> [Field; 4] { @@ -56,6 +61,7 @@ impl PublicGlobalVariables { } } +// docs:start:contract-deployment-data struct ContractDeploymentData { deployer_public_key: Point, constructor_vk_hash : Field, @@ -63,6 +69,7 @@ struct ContractDeploymentData { contract_address_salt : Field, portal_contract_address : Field, } +// docs:end:contract-deployment-data impl ContractDeploymentData { fn serialize(self) -> [Field; CONTRACT_DEPLOYMENT_DATA_LENGTH] { From 9c20b42216160b88f66db311284b7c98fcfd4948 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Tue, 12 Sep 2023 15:26:51 +0000 Subject: [PATCH 11/25] fix: new aztec-noir path --- docs/docs/dev_docs/contracts/context.md | 16 ++++++++-------- docs/docs/dev_docs/contracts/functions.md | 4 ++-- docs/docs/dev_docs/contracts/syntax.md | 2 +- .../dapps/tutorials/contract_deployment.md | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/docs/dev_docs/contracts/context.md b/docs/docs/dev_docs/contracts/context.md index f06380ada8d..2e6ad8b844f 100644 --- a/docs/docs/dev_docs/contracts/context.md +++ b/docs/docs/dev_docs/contracts/context.md @@ -22,19 +22,19 @@ The following section will cover both contexts. ## The Private Context The code snippet below shows what is contained within the private context. -#include_code private-context /yarn-project/noir-libs/noir-aztec/src/context.nr rust +#include_code private-context /yarn-project/noir-libs/aztec-noir/src/context.nr rust ### Private Context Broken Down #### Inputs The context inputs includes all of the information that is passed from the kernel circuit into the application circuit. It contains the following values. -#include_code private-context-inputs /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +#include_code private-context-inputs /yarn-project/noir-libs/aztec-noir/src/abi.nr rust As shown in the snippet, the application context is made up of 4 main structures. The call context, the block data, the contract deployment data and the private global variables. First of all, the call context. -#include_code call-context /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +#include_code call-context /yarn-project/noir-libs/aztec-noir/src/abi.nr rust The call context contains information about the current call being made:. 1, Msg Sender @@ -56,17 +56,17 @@ The call context contains information about the current call being made:. ### Historic Block Data Another structure that is contained within the context is the Historic Block Data object. This object is a special one as it contains all of the roots of Aztec's data trees. -#include_code historic-block-data /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +#include_code historic-block-data /yarn-project/noir-libs/aztec-noir/src/abi.nr rust ### Contract Deployment Data Just like with the `is_contract_deployment` flag mentioned earlier. This data will only be set to true when the current transaction is one in which a contract is being deployed. -#include_code contract-deployment-data /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +#include_code contract-deployment-data /yarn-project/noir-libs/aztec-noir/src/abi.nr rust ### Private Global Variables In the private execution context, we only have access to a subset of the total global variables, we are restricted to those which can be reliably proven by the kernel circuits. -#include_code private-global-variables /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +#include_code private-global-variables /yarn-project/noir-libs/aztec-noir/src/abi.nr rust ### Args Hash To allow for flexibility in the number of arguments supported by Aztec functions, all function inputs are reduced to a singular value which can be proven from within the application. @@ -104,10 +104,10 @@ New L2 to L1 messages contains messages that are delivered to the [l1 outbox](.. ## Public Context Inputs In the current version of the system, the public context is almost a clone of the private execution context. It contains the same call context data, access to the same historic tree roots, however it does NOT have access to contract deployment data, this is due to traditional contract deployments only currently being possible from private transactions. -#include_code public-context-inputs /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +#include_code public-context-inputs /yarn-project/noir-libs/aztec-noir/src/abi.nr rust ### Public Global Variables The public global variables are provided by the rollup sequencer and consequently contain some more values than the private global variables. -#include_code public-global-variables /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +#include_code public-global-variables /yarn-project/noir-libs/aztec-noir/src/abi.nr rust diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index 5d8238472f1..4f84bf8399c 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -77,10 +77,10 @@ When calling the `consume_l1_to_l2_message` function on a contract; a number of 3. Check that the message content matches the content reproduced earlier on. 4. Validate that caller know's the preimage to the message's `secretHash`. See more information [here](../../concepts/foundation/communication/cross_chain_calls.md#messages). 5. We compute the nullifier for the message. -#include_code l1_to_l2_message_compute_nullifier /yarn-project/noir-libs/noir-aztec/src/messaging/l1_to_l2_message.nr rust +#include_code l1_to_l2_message_compute_nullifier /yarn-project/noir-libs/aztec-noir/src/messaging/l1_to_l2_message.nr rust 6. Finally we push the nullifier to the context. Allowing it to be checked for validity by the kernel and rollup circuits. -#include_code consume_l1_to_l2_message /yarn-project/noir-libs/noir-aztec/src/context.nr rust +#include_code consume_l1_to_l2_message /yarn-project/noir-libs/aztec-noir/src/context.nr rust As the same nullifier cannot be created twice. We cannot consume the message again. diff --git a/docs/docs/dev_docs/contracts/syntax.md b/docs/docs/dev_docs/contracts/syntax.md index 556ebebfae4..2b01aefdee4 100644 --- a/docs/docs/dev_docs/contracts/syntax.md +++ b/docs/docs/dev_docs/contracts/syntax.md @@ -24,7 +24,7 @@ compiler_version = "0.10.0" type = "contract" [dependencies] -aztec = { git="https://github.com/AztecProtocol/aztec-packages", tag="master", directory="yarn-project/noir-libs/noir-aztec" } +aztec = { git="https://github.com/AztecProtocol/aztec-packages", tag="master", directory="yarn-project/noir-libs/aztec-noir" } ``` Note: currently the dependency name ***MUST*** be `aztec`. The framework expects this namespace to be available when compiling into contracts. This limitation may be removed in the future. \ No newline at end of file diff --git a/docs/docs/dev_docs/dapps/tutorials/contract_deployment.md b/docs/docs/dev_docs/dapps/tutorials/contract_deployment.md index 9bbbbdc3669..5f615995956 100644 --- a/docs/docs/dev_docs/dapps/tutorials/contract_deployment.md +++ b/docs/docs/dev_docs/dapps/tutorials/contract_deployment.md @@ -19,7 +19,7 @@ Then, open the `contracts/private_token/Nargo.toml` configuration file, and add ```toml [dependencies] -aztec = { git="https://github.com/AztecProtocol/aztec-packages", tag="master", directory="yarn-project/noir-libs/noir-aztec" } +aztec = { git="https://github.com/AztecProtocol/aztec-packages", tag="master", directory="yarn-project/noir-libs/aztec-noir" } value_note = { git="https://github.com/AztecProtocol/aztec-packages", tag="master", directory="yarn-project/noir-libs/value-note" } ``` From 3b571b7c18576db58805955b3edc779546e0ed80 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Wed, 13 Sep 2023 12:52:15 +0000 Subject: [PATCH 12/25] compliation fix --- docs/docs/dev_docs/contracts/context.md | 12 ++++++------ docs/docs/dev_docs/contracts/portals/main.md | 2 +- docs/static/img/context/message-sender-movement.png | 0 .../aztec.js/src/abis/ecdsa_account_contract.json | 4 ++-- .../aztec.js/src/abis/schnorr_account_contract.json | 4 ++-- .../abis/schnorr_auth_witness_account_contract.json | 6 +++--- .../abis/schnorr_single_key_account_contract.json | 2 +- .../src/contracts/docs_example_contract/src/main.nr | 1 - 8 files changed, 15 insertions(+), 16 deletions(-) create mode 100644 docs/static/img/context/message-sender-movement.png diff --git a/docs/docs/dev_docs/contracts/context.md b/docs/docs/dev_docs/contracts/context.md index 2e6ad8b844f..8e0da6e78b8 100644 --- a/docs/docs/dev_docs/contracts/context.md +++ b/docs/docs/dev_docs/contracts/context.md @@ -6,12 +6,12 @@ hide_table_of_contents: false # The Function Context ## What is the context -The context is a variable that is made available within every function in `Aztec.nr`. As mentioned in the [kernel circuit documentation](../../concepts/advanced/circuits/kernels/private_kernel.md). At the beginning of a function's execution, the context contains all of the kernel information that application needs to execute. During the lifecycle of a transaction, the function will update the context with each of it's side effects (created notes, nullifiers etc.). At the end of a function's execution the mutated context is returned to the kernel to be checked for validity. +The context is an object that is made available within every function in `Aztec.nr`. As mentioned in the [kernel circuit documentation](../../concepts/advanced/circuits/kernels/private_kernel.md). At the beginning of a function's execution, the context contains all of the kernel information that application needs to execute. During the lifecycle of a transaction, the function will update the context with each of it's side effects (created notes, nullifiers etc.). At the end of a function's execution the mutated context is returned to the kernel to be checked for validity. Behind the scenes, Aztec noir will pass data the kernel needs to and from a circuit, this is abstracted away from the developer. In an developer's eyes; the context is a useful structure that allows access and mutate the state of the `Aztec` blockchain. ## Two context's one API -The `Aztec` blockchain contains two execution environments (ADD REFERENCE). +The `Aztec` blockchain contains two environments [public and private](../../concepts/foundation/state_model.md). - Private, for private transactions taking place on user's devices. - Public, for public transactions taking place on the network's sequencers. @@ -37,7 +37,7 @@ First of all, the call context. #include_code call-context /yarn-project/noir-libs/aztec-noir/src/abi.nr rust The call context contains information about the current call being made:. -1, Msg Sender +1. Msg Sender - The message sender is the account (Aztec Contract) that sent the message to the current context. In the first call of the kernel circuit (often the account contract call), this value will be empty. For all subsequent calls the value will be the previous call. ( TODO: INCLUDE A DIAGRAM HERE SHOWING HOW IT GETS UPDATED ON CONTRACT CALLS ) @@ -49,8 +49,8 @@ The call context contains information about the current call being made:. - This value stores the current contract's linked portal contract address. ( INCLUDE A LINK TO THE LITERATURE ). As a quick recap, this value is the value of the contracts related ethereum l1 contract address, and will be the recipient of any messages that are created by this contract. 4. Flags - Furthermore there are a series of flags that are stored within the application context: - - is_delegate_call: Denotes whether the current call is a delegate call. If true, then the storage contract address will NOT be the current contract address. - - is_static_call: (TODO: REFER TO EVM CODES TO FILL IN THIS SECTION) + - is_delegate_call: Denotes whether the current call is a delegate call. If true, then the storage contract address will be the address of the sender. + - is_static_call: This will be set if and only if the current call is a static call. In a static call, state changing altering operations are not allowed. - is_contract_deployment: This will be set if and only if the current call is the contract's constructor. ### Historic Block Data @@ -92,7 +92,7 @@ Nullified commitments is an optimisation for introduced to help reduce state gro In these cases there is no reason that these commitments should take up space on the node's commitment/nullifier trees. Keeping track of nullified commitments allows us to "cancel out" and prove these cases. ### Private Call Stack -The private call stack contains all of the external function calls that have been created within the current context. Any function call objects are hashed and then pushed to the execution stack. +The private call stack contains all of the external private function calls that have been created within the current context. Any function call objects are hashed and then pushed to the execution stack. The kernel circuit will orchestrate dispatching the calls and returning the values to the current context. ### Public Call Stack diff --git a/docs/docs/dev_docs/contracts/portals/main.md b/docs/docs/dev_docs/contracts/portals/main.md index 30dd629920e..80384ea3cf3 100644 --- a/docs/docs/dev_docs/contracts/portals/main.md +++ b/docs/docs/dev_docs/contracts/portals/main.md @@ -110,11 +110,11 @@ 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. + #include_code send_to_portal /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. - #include_code l1_to_l2_message_struct /l1-contracts/src/core/libraries/DataStructures.sol solidity #include_code consume_interface /l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol solidity diff --git a/docs/static/img/context/message-sender-movement.png b/docs/static/img/context/message-sender-movement.png new file mode 100644 index 00000000000..e69de29bb2d 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": "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", "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": "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", "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..1339fd6d3ad 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,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -80,7 +80,7 @@ } ], "returnTypes": [], - "bytecode": "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", + "bytecode": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" }, { @@ -97,7 +97,7 @@ } ], "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" } ] 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": "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", "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f" } ] diff --git a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr index 6b854f59d94..14af9b686e6 100644 --- a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr @@ -242,7 +242,6 @@ contract DocsExample { /// Macro equivalence section use dep::aztec::abi; use dep::aztec::abi::Hasher; - use dep::aztec::context::PrivateContext; use dep::aztec::abi::PrivateContextInputs; use dep::aztec::abi::PrivateCircuitPublicInputs; From 801a7b3b88fcb87ffb2e28331bcb58870c9ca016 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Wed, 13 Sep 2023 20:25:02 +0000 Subject: [PATCH 13/25] Merge branch 'master' into md/document-macros --- .circleci/config.yml | 216 ++- .../workflows/mirror_barretenberg_repo.yml | 35 - .../workflows/mirror_build_system_repo.yml | 35 - .github/workflows/mirror_docs_repo.yml | 35 - .github/workflows/mirror_repos.yml | 79 + .github/workflows/publish-bb.yml | 28 +- .gitignore | 1 + .gitmodules | 14 +- .ignore | 4 +- .release-please-manifest.json | 4 +- README.md | 2 +- .../.circleci/config.yml | 0 .../.dockerignore | 0 .../.github/pull_request_template.md | 0 .../.github/workflows/benchmarks.yml | 0 .../.github/workflows/nix.yml | 0 .../.github/workflows/noir.yml | 0 .../.github/workflows/pull-request.yml | 0 .../barretenberg => barretenberg}/.gitignore | 0 .../barretenberg => barretenberg}/.gitmodules | 0 .../barretenberg => barretenberg}/.gitrepo | 4 +- .../.vscode/c_cpp_properties.json | 0 .../.vscode/settings.json | 0 barretenberg/CHANGELOG.md | 464 +++++- .../cpp/barretenberg => barretenberg}/LICENSE | 0 .../cpp/barretenberg => barretenberg}/PROJECT | 0 .../barretenberg => barretenberg}/README.md | 4 +- .../cpp/barretenberg => barretenberg}/VERSION | 0 .../acir_tests/.dockerignore | 0 .../acir_tests/.gitignore | 0 .../acir_tests/Dockerfile.bb | 0 .../acir_tests/Dockerfile.bb.js | 0 .../acir_tests/README.md | 0 .../acir_tests/browser-test-app/package.json | 0 .../acir_tests/browser-test-app/serve.mt.json | 0 .../browser-test-app/src/index.html | 0 .../acir_tests/browser-test-app/src/index.ts | 0 .../acir_tests/browser-test-app/tsconfig.json | 0 .../browser-test-app/webpack.config.js | 0 .../acir_tests/browser-test-app/yarn.lock | 0 .../acir_tests/flows/all_cmds.sh | 0 .../acir_tests/flows/prove_and_verify.sh | 0 .../acir_tests/headless-test/bb.js.browser | 0 .../acir_tests/headless-test/package.json | 0 .../acir_tests/headless-test/src/index.ts | 0 .../acir_tests/headless-test/tsconfig.json | 0 .../acir_tests/headless-test/yarn.lock | 0 .../acir_tests/run_acir_tests.sh | 0 .../acir_tests/run_acir_tests_browser.sh | 0 .../barretenberg-wasm.nix | 0 .../barretenberg.code-workspace | 0 .../barretenberg.nix | 0 .../bootstrap.sh | 0 .../bootstrap_docker.sh | 0 .../build-system | 0 .../build_manifest.json | 0 .../build_manifest.sh | 0 .../cpp/.aztec-packages-commit | 0 .../cpp/.clang-format | 0 .../barretenberg => barretenberg}/cpp/.clangd | 0 .../cpp/.dockerignore | 2 + .../cpp/.gitignore | 0 barretenberg/cpp/.rebuild_patterns | 3 + .../cpp/CMakeLists.txt | 1 - .../cpp/CMakePresets.json | 9 +- .../cpp/bootstrap.sh | 16 +- .../cpp/cmake/arch.cmake | 0 .../cpp/cmake/barretenberg.pc.in | 0 .../cpp/cmake/benchmark.cmake | 0 .../cpp/cmake/build.cmake | 0 .../cpp/cmake/gtest.cmake | 0 .../cpp/cmake/module.cmake | 0 .../cpp/cmake/threading.cmake | 0 .../cpp/cmake/toolchains/aarch64-darwin.cmake | 0 .../cpp/cmake/toolchains/aarch64-linux.cmake | 0 .../cpp/cmake/toolchains/i386-linux.cmake | 0 .../cpp/cmake/toolchains/wasm32-wasi.cmake | 0 .../cpp/cmake/toolchains/x86_64-darwin.cmake | 0 .../cpp/cmake/toolchains/x86_64-linux.cmake | 0 .../dockerfiles/Dockerfile.wasm-linux-clang | 16 +- .../dockerfiles/Dockerfile.x86_64-linux-clang | 23 + .../Dockerfile.x86_64-linux-clang-assert | 18 +- .../Dockerfile.x86_64-linux-clang-benchmarks | 0 .../Dockerfile.x86_64-linux-clang-fuzzing | 0 .../dockerfiles/Dockerfile.x86_64-linux-gcc | 4 +- .../cpp/docs/Fuzzing.md | 0 .../cpp/format.sh | 10 +- .../cpp/notebook.ipynb | 0 .../cpp/scripts/bb-tests.sh | 0 .../scripts/collect_coverage_information.sh | 0 .../cpp/scripts/install-wasi-sdk.sh | 0 .../cpp/scripts/run_tests | 3 +- .../cpp/scripts/stdlib-tests | 0 .../cpp/scripts/strip-wasm.sh | 0 .../cpp/src/CMakeLists.txt | 41 +- .../cpp/src/barretenberg/barretenberg.hpp | 0 .../cpp/src/barretenberg/bb/CMakeLists.txt | 0 .../cpp/src/barretenberg/bb/exec_pipe.hpp | 0 .../cpp/src/barretenberg/bb/file_io.hpp | 0 .../cpp/src/barretenberg/bb/get_bytecode.hpp | 0 .../cpp/src/barretenberg/bb/get_crs.hpp | 0 .../cpp/src/barretenberg/bb/get_witness.hpp | 0 .../cpp/src/barretenberg/bb/log.hpp | 0 .../cpp/src/barretenberg/bb/main.cpp | 0 .../cpp/src/barretenberg/bb/readme.md | 0 .../src/barretenberg/benchmark/CMakeLists.txt | 0 .../benchmark/compare_branch_vs_baseline.sh | 0 .../benchmark/decrypt_bench/CMakeLists.txt | 0 .../benchmark/decrypt_bench/main.cpp | 0 .../benchmark/honk_bench/CMakeLists.txt | 0 .../honk_bench/benchmark_utilities.hpp | 0 .../compare_honk_to_plonk_standard.sh | 0 .../honk_bench/compare_honk_to_plonk_ultra.sh | 0 .../benchmark/honk_bench/honk.bench.cpp | 0 .../benchmark/honk_bench/main.bench.cpp | 0 .../honk_bench/standard_honk.bench.cpp | 0 .../honk_bench/standard_plonk.bench.cpp | 0 .../benchmark/honk_bench/ultra_honk.bench.cpp | 0 .../honk_bench/ultra_plonk.bench.cpp | 0 .../benchmark/pippenger_bench/CMakeLists.txt | 0 .../benchmark/pippenger_bench/main.cpp | 0 .../benchmark/plonk_bench/CMakeLists.txt | 0 .../benchmark/plonk_bench/plonk.bench.cpp | 0 .../benchmark/relations_bench/CMakeLists.txt | 0 .../relations_bench/barycentric.bench.cpp | 0 .../benchmark/relations_bench/main.bench.cpp | 0 .../relations_bench/relations.bench.cpp | 0 .../src/barretenberg/common/CMakeLists.txt | 0 .../cpp/src/barretenberg/common/assert.hpp | 0 .../cpp/src/barretenberg/common/c_bind.cpp | 0 .../cpp/src/barretenberg/common/c_bind.hpp | 0 .../barretenberg/common/constexpr_utils.hpp | 0 .../cpp/src/barretenberg/common/container.hpp | 0 .../cpp/src/barretenberg/common/fuzzer.hpp | 0 .../barretenberg/common/fuzzer_constants.hpp | 0 .../cpp/src/barretenberg/common/inline.hpp | 0 .../cpp/src/barretenberg/common/log.hpp | 0 .../cpp/src/barretenberg/common/map.hpp | 0 .../cpp/src/barretenberg/common/mem.cpp | 0 .../cpp/src/barretenberg/common/mem.hpp | 0 .../common/moody/blockingconcurrentqueue.h | 0 .../common/moody/concurrentqueue.h | 0 .../common/moody/lightweightsemaphore.h | 0 .../cpp/src/barretenberg/common/net.hpp | 0 .../common/parallel_for_atomic_pool.cpp | 0 .../common/parallel_for_moody.cpp | 0 .../common/parallel_for_mutex_pool.cpp | 0 .../barretenberg/common/parallel_for_omp.cpp | 0 .../common/parallel_for_queued.cpp | 0 .../common/parallel_for_spawning.cpp | 0 .../cpp/src/barretenberg/common/printf.hpp | 0 .../cpp/src/barretenberg/common/serialize.hpp | 0 .../barretenberg/common/slab_allocator.cpp | 0 .../barretenberg/common/slab_allocator.hpp | 0 .../cpp/src/barretenberg/common/streams.hpp | 0 .../cpp/src/barretenberg/common/test.hpp | 0 .../cpp/src/barretenberg/common/thread.cpp | 0 .../cpp/src/barretenberg/common/thread.hpp | 0 .../barretenberg/common/throw_or_abort.hpp | 0 .../cpp/src/barretenberg/common/timer.hpp | 0 .../src/barretenberg/common/wasm_export.hpp | 0 .../src/barretenberg/crypto/CMakeLists.txt | 0 .../barretenberg/crypto/aes128/CMakeLists.txt | 0 .../src/barretenberg/crypto/aes128/aes128.cpp | 0 .../src/barretenberg/crypto/aes128/aes128.hpp | 0 .../crypto/aes128/aes128.test.cpp | 0 .../src/barretenberg/crypto/aes128/c_bind.cpp | 0 .../crypto/blake2s/CMakeLists.txt | 0 .../crypto/blake2s/blake2-impl.hpp | 0 .../barretenberg/crypto/blake2s/blake2s.cpp | 0 .../barretenberg/crypto/blake2s/blake2s.hpp | 0 .../crypto/blake2s/blake2s.test.cpp | 0 .../barretenberg/crypto/blake2s/c_bind.cpp | 0 .../barretenberg/crypto/blake2s/c_bind.hpp | 0 .../crypto/blake3s/CMakeLists.txt | 0 .../crypto/blake3s/blake3-impl.hpp | 0 .../barretenberg/crypto/blake3s/blake3s.cpp | 0 .../barretenberg/crypto/blake3s/blake3s.hpp | 0 .../crypto/blake3s/blake3s.test.cpp | 0 .../barretenberg/crypto/blake3s/c_bind.cpp | 0 .../crypto/blake3s_full/CMakeLists.txt | 0 .../crypto/blake3s_full/blake3-impl.hpp | 0 .../crypto/blake3s_full/blake3s.cpp | 0 .../crypto/blake3s_full/blake3s.hpp | 0 .../crypto/blake3s_full/blake3s.test.cpp | 0 .../barretenberg/crypto/ecdsa/CMakeLists.txt | 0 .../src/barretenberg/crypto/ecdsa/c_bind.cpp | 0 .../src/barretenberg/crypto/ecdsa/c_bind.h | 0 .../src/barretenberg/crypto/ecdsa/ecdsa.hpp | 0 .../barretenberg/crypto/ecdsa/ecdsa.test.cpp | 0 .../barretenberg/crypto/ecdsa/ecdsa_impl.hpp | 0 .../crypto/generators/CMakeLists.txt | 0 .../generators/fixed_base_scalar_mul.hpp | 0 .../crypto/generators/generator_data.cpp | 0 .../crypto/generators/generator_data.hpp | 0 .../crypto/generators/generator_data.test.cpp | 0 .../barretenberg/crypto/hashers/hashers.hpp | 0 .../barretenberg/crypto/hmac/CMakeLists.txt | 0 .../cpp/src/barretenberg/crypto/hmac/hmac.hpp | 0 .../barretenberg/crypto/hmac/hmac.test.cpp | 0 .../barretenberg/crypto/keccak/CMakeLists.txt | 0 .../barretenberg/crypto/keccak/hash_types.hpp | 0 .../src/barretenberg/crypto/keccak/keccak.cpp | 0 .../src/barretenberg/crypto/keccak/keccak.hpp | 0 .../crypto/keccak/keccakf1600.cpp | 0 .../crypto/pedersen_commitment/CMakeLists.txt | 0 .../crypto/pedersen_commitment/c_bind.cpp | 0 .../crypto/pedersen_commitment/c_bind.hpp | 0 .../crypto/pedersen_commitment/c_bind_new.cpp | 0 .../crypto/pedersen_commitment/c_bind_new.hpp | 0 .../convert_buffer_to_field.hpp | 0 .../crypto/pedersen_commitment/pedersen.cpp | 0 .../crypto/pedersen_commitment/pedersen.hpp | 0 .../pedersen_commitment/pedersen_lookup.cpp | 0 .../pedersen_commitment/pedersen_lookup.hpp | 0 .../pedersen_lookup.test.cpp | 0 .../crypto/pedersen_hash/CMakeLists.txt | 0 .../crypto/pedersen_hash/c_bind.cpp | 0 .../crypto/pedersen_hash/c_bind.hpp | 0 .../crypto/pedersen_hash/c_bind_new.cpp | 0 .../crypto/pedersen_hash/pedersen.cpp | 0 .../crypto/pedersen_hash/pedersen.hpp | 0 .../crypto/pedersen_hash/pedersen_lookup.cpp | 0 .../crypto/pedersen_hash/pedersen_lookup.hpp | 0 .../crypto/schnorr/CMakeLists.txt | 0 .../barretenberg/crypto/schnorr/c_bind.cpp | 0 .../barretenberg/crypto/schnorr/c_bind.hpp | 0 .../crypto/schnorr/c_bind_new.cpp | 0 .../barretenberg/crypto/schnorr/multisig.hpp | 0 .../crypto/schnorr/multisig.test.cpp | 0 .../crypto/schnorr/proof_of_possession.hpp | 0 .../schnorr/proof_of_possession.test.cpp | 0 .../barretenberg/crypto/schnorr/schnorr.hpp | 0 .../barretenberg/crypto/schnorr/schnorr.tcc | 0 .../crypto/schnorr/schnorr.test.cpp | 0 .../barretenberg/crypto/sha256/CMakeLists.txt | 0 .../src/barretenberg/crypto/sha256/c_bind.cpp | 0 .../src/barretenberg/crypto/sha256/sha256.cpp | 0 .../src/barretenberg/crypto/sha256/sha256.hpp | 0 .../crypto/sha256/sha256.test.cpp | 0 .../cpp/src/barretenberg/dsl/CMakeLists.txt | 0 .../dsl/acir_format/acir_format.cpp | 0 .../dsl/acir_format/acir_format.hpp | 0 .../dsl/acir_format/acir_format.test.cpp | 0 .../acir_format/acir_to_constraint_buf.hpp | 0 .../dsl/acir_format/blake2s_constraint.cpp | 0 .../dsl/acir_format/blake2s_constraint.hpp | 0 .../dsl/acir_format/block_constraint.cpp | 0 .../dsl/acir_format/block_constraint.hpp | 0 .../dsl/acir_format/block_constraint.test.cpp | 0 .../dsl/acir_format/ecdsa_secp256k1.cpp | 0 .../dsl/acir_format/ecdsa_secp256k1.hpp | 0 .../dsl/acir_format/ecdsa_secp256k1.test.cpp | 0 .../dsl/acir_format/ecdsa_secp256r1.cpp | 0 .../dsl/acir_format/ecdsa_secp256r1.hpp | 0 .../dsl/acir_format/ecdsa_secp256r1.test.cpp | 0 .../dsl/acir_format/fixed_base_scalar_mul.cpp | 0 .../dsl/acir_format/fixed_base_scalar_mul.hpp | 0 .../dsl/acir_format/hash_to_field.cpp | 0 .../dsl/acir_format/hash_to_field.hpp | 0 .../dsl/acir_format/keccak_constraint.cpp | 0 .../dsl/acir_format/keccak_constraint.hpp | 0 .../dsl/acir_format/logic_constraint.cpp | 0 .../dsl/acir_format/logic_constraint.hpp | 0 .../barretenberg/dsl/acir_format/pedersen.cpp | 0 .../barretenberg/dsl/acir_format/pedersen.hpp | 0 .../dsl/acir_format/range_constraint.hpp | 0 .../dsl/acir_format/recursion_constraint.cpp | 0 .../dsl/acir_format/recursion_constraint.hpp | 0 .../acir_format/recursion_constraint.test.cpp | 0 .../barretenberg/dsl/acir_format/round.cpp | 0 .../barretenberg/dsl/acir_format/round.hpp | 0 .../dsl/acir_format/schnorr_verify.cpp | 0 .../dsl/acir_format/schnorr_verify.hpp | 0 .../dsl/acir_format/serde/acir.hpp | 0 .../dsl/acir_format/serde/binary.hpp | 0 .../dsl/acir_format/serde/bincode.hpp | 0 .../dsl/acir_format/serde/index.hpp | 0 .../dsl/acir_format/serde/serde.hpp | 0 .../dsl/acir_format/serde/witness_map.hpp | 0 .../dsl/acir_format/sha256_constraint.cpp | 0 .../dsl/acir_format/sha256_constraint.hpp | 0 .../dsl/acir_proofs/acir_composer.cpp | 0 .../dsl/acir_proofs/acir_composer.hpp | 0 .../barretenberg/dsl/acir_proofs/c_bind.cpp | 0 .../barretenberg/dsl/acir_proofs/c_bind.hpp | 0 .../cpp/src/barretenberg/dsl/types.hpp | 0 .../cpp/src/barretenberg/ecc/CMakeLists.txt | 0 .../barretenberg/ecc/curves/bn254/bn254.hpp | 0 .../src/barretenberg/ecc/curves/bn254/fq.hpp | 0 .../barretenberg/ecc/curves/bn254/fq.test.cpp | 0 .../barretenberg/ecc/curves/bn254/fq12.hpp | 0 .../ecc/curves/bn254/fq12.test.cpp | 0 .../src/barretenberg/ecc/curves/bn254/fq2.hpp | 0 .../ecc/curves/bn254/fq2.test.cpp | 0 .../src/barretenberg/ecc/curves/bn254/fq6.hpp | 0 .../ecc/curves/bn254/fq6.test.cpp | 0 .../ecc/curves/bn254/fr.bench.cpp | 0 .../src/barretenberg/ecc/curves/bn254/fr.hpp | 0 .../barretenberg/ecc/curves/bn254/fr.test.cpp | 0 .../src/barretenberg/ecc/curves/bn254/g1.hpp | 0 .../barretenberg/ecc/curves/bn254/g1.test.cpp | 0 .../src/barretenberg/ecc/curves/bn254/g2.hpp | 0 .../barretenberg/ecc/curves/bn254/g2.test.cpp | 0 .../barretenberg/ecc/curves/bn254/pairing.hpp | 0 .../ecc/curves/bn254/pairing.test.cpp | 0 .../ecc/curves/bn254/pairing_impl.hpp | 0 .../ecc/curves/grumpkin/c_bind.cpp | 0 .../ecc/curves/grumpkin/grumpkin.cpp | 0 .../ecc/curves/grumpkin/grumpkin.hpp | 0 .../ecc/curves/grumpkin/grumpkin.test.cpp | 0 .../ecc/curves/secp256k1/c_bind.cpp | 0 .../ecc/curves/secp256k1/c_bind.hpp | 0 .../ecc/curves/secp256k1/secp256k1.cpp | 0 .../ecc/curves/secp256k1/secp256k1.hpp | 0 .../ecc/curves/secp256k1/secp256k1.test.cpp | 0 .../curves/secp256k1/secp256k1_endo_notes.hpp | 0 .../ecc/curves/secp256r1/secp256r1.cpp | 0 .../ecc/curves/secp256r1/secp256r1.hpp | 0 .../ecc/curves/secp256r1/secp256r1.test.cpp | 0 .../cpp/src/barretenberg/ecc/curves/types.hpp | 0 .../barretenberg/ecc/fields/asm_macros.hpp | 0 .../ecc/fields/extra_flag_solver.py | 0 .../cpp/src/barretenberg/ecc/fields/field.hpp | 0 .../src/barretenberg/ecc/fields/field12.hpp | 0 .../src/barretenberg/ecc/fields/field2.hpp | 0 .../ecc/fields/field2_declarations.hpp | 0 .../src/barretenberg/ecc/fields/field6.hpp | 0 .../ecc/fields/field_declarations.hpp | 0 .../barretenberg/ecc/fields/field_impl.hpp | 0 .../ecc/fields/field_impl_generic.hpp | 0 .../ecc/fields/field_impl_x64.hpp | 0 .../ecc/fields/macro_scrapbook.hpp | 0 .../ecc/groups/affine_element.hpp | 0 .../ecc/groups/affine_element.test.cpp | 0 .../ecc/groups/affine_element_impl.hpp | 0 .../src/barretenberg/ecc/groups/element.hpp | 0 .../barretenberg/ecc/groups/element_impl.hpp | 0 .../cpp/src/barretenberg/ecc/groups/group.hpp | 0 .../ecc/groups/group_impl_asm.tcc | 0 .../ecc/groups/group_impl_int128.tcc | 0 .../cpp/src/barretenberg/ecc/groups/wnaf.hpp | 0 .../src/barretenberg/ecc/groups/wnaf.test.cpp | 0 .../cpp/src/barretenberg/ecc/pippenger.md | 0 .../ecc/scalar_multiplication/point_table.hpp | 0 .../scalar_multiplication/process_buckets.cpp | 0 .../scalar_multiplication/process_buckets.hpp | 0 .../scalar_multiplication/runtime_states.cpp | 0 .../scalar_multiplication/runtime_states.hpp | 0 .../scalar_multiplication.cpp | 0 .../scalar_multiplication.hpp | 0 .../src/barretenberg/ecc/serialize.test.cpp | 0 .../cpp/src/barretenberg/env/CMakeLists.txt | 0 .../cpp/src/barretenberg/env/data_store.cpp | 0 .../cpp/src/barretenberg/env/data_store.hpp | 0 .../barretenberg/env/hardware_concurrency.cpp | 0 .../barretenberg/env/hardware_concurrency.hpp | 0 .../cpp/src/barretenberg/env/logstr.cpp | 0 .../cpp/src/barretenberg/env/logstr.hpp | 0 .../src/barretenberg/examples/CMakeLists.txt | 0 .../cpp/src/barretenberg/examples/c_bind.cpp | 0 .../cpp/src/barretenberg/examples/c_bind.hpp | 0 .../barretenberg/examples/simple/simple.cpp | 0 .../barretenberg/examples/simple/simple.hpp | 0 .../examples/simple/simple.test.cpp | 0 .../grumpkin_srs_gen/CMakeLists.txt | 0 .../grumpkin_srs_gen/grumpkin_srs_gen.cpp | 0 .../cpp/src/barretenberg/honk/CMakeLists.txt | 0 .../composer/goblin_ultra_composer.test.cpp | 0 .../honk/composer/standard_composer.cpp | 0 .../honk/composer/standard_composer.hpp | 0 .../honk/composer/standard_composer.test.cpp | 0 .../honk/composer/ultra_composer.cpp | 0 .../honk/composer/ultra_composer.hpp | 0 .../honk/composer/ultra_composer.test.cpp | 0 .../barretenberg/honk/flavor/flavor.test.cpp | 0 .../barretenberg/honk/flavor/goblin_ultra.hpp | 0 .../src/barretenberg/honk/flavor/standard.hpp | 0 .../honk/flavor/standard_grumpkin.hpp | 0 .../src/barretenberg/honk/flavor/ultra.hpp | 0 .../honk/flavor/ultra_grumpkin.hpp | 0 .../honk/flavor/ultra_recursive.hpp | 0 .../cpp/src/barretenberg/honk/pcs/claim.hpp | 0 .../barretenberg/honk/pcs/commitment_key.hpp | 0 .../honk/pcs/commitment_key.test.hpp | 0 .../barretenberg/honk/pcs/gemini/gemini.cpp | 0 .../barretenberg/honk/pcs/gemini/gemini.hpp | 0 .../honk/pcs/gemini/gemini.test.cpp | 0 .../cpp/src/barretenberg/honk/pcs/ipa/ipa.hpp | 0 .../barretenberg/honk/pcs/ipa/ipa.test.cpp | 0 .../cpp/src/barretenberg/honk/pcs/kzg/kzg.hpp | 0 .../barretenberg/honk/pcs/kzg/kzg.test.cpp | 0 .../barretenberg/honk/pcs/shplonk/shplonk.hpp | 0 .../honk/pcs/shplonk/shplonk.test.cpp | 0 .../honk/pcs/verification_key.hpp | 0 .../cpp/src/barretenberg/honk/pcs/wrapper.hpp | 0 .../honk/proof_system/composer_lib.hpp | 0 .../proof_system/grand_product_library.hpp | 0 .../barretenberg/honk/proof_system/prover.cpp | 0 .../barretenberg/honk/proof_system/prover.hpp | 0 .../honk/proof_system/prover_library.cpp | 0 .../honk/proof_system/prover_library.hpp | 0 .../honk/proof_system/prover_library.test.cpp | 0 .../honk/proof_system/ultra_prover.cpp | 0 .../honk/proof_system/ultra_prover.hpp | 0 .../honk/proof_system/ultra_verifier.cpp | 0 .../honk/proof_system/ultra_verifier.hpp | 0 .../honk/proof_system/verifier.cpp | 0 .../honk/proof_system/verifier.hpp | 0 .../honk/proof_system/work_queue.hpp | 0 .../honk/sumcheck/partial_evaluation.test.cpp | 0 .../sumcheck/relation_correctness.test.cpp | 0 .../barretenberg/honk/sumcheck/sumcheck.hpp | 0 .../honk/sumcheck/sumcheck.test.cpp | 0 .../honk/sumcheck/sumcheck_output.hpp | 0 .../honk/sumcheck/sumcheck_round.hpp | 0 .../honk/sumcheck/sumcheck_round.test.cpp | 0 .../honk/transcript/transcript.hpp | 0 .../honk/transcript/transcript.test.cpp | 0 .../honk/utils/grand_product_delta.hpp | 0 .../honk/utils/power_polynomial.hpp | 0 .../honk/utils/power_polynomial.test.cpp | 0 .../join_split_example/CMakeLists.txt | 0 .../join_split_example/constants.hpp | 0 .../fixtures/user_context.hpp | 0 .../join_split_example/proofs/CMakeLists.txt | 0 .../proofs/compute_circuit_data.hpp | 0 .../proofs/inner_proof_data/CMakeLists.txt | 0 .../inner_proof_data/inner_proof_data.cpp | 0 .../inner_proof_data/inner_proof_data.hpp | 0 .../inner_proof_data.test.cpp | 0 .../proofs/join_split/CMakeLists.txt | 0 .../proofs/join_split/c_bind.cpp | 0 .../proofs/join_split/c_bind.h | 0 .../join_split/compute_circuit_data.cpp | 0 .../join_split/compute_circuit_data.hpp | 0 .../join_split/compute_signing_data.cpp | 0 .../join_split/compute_signing_data.hpp | 0 .../proofs/join_split/create_proof.hpp | 0 .../proofs/join_split/index.hpp | 0 .../proofs/join_split/join_split.cpp | 0 .../proofs/join_split/join_split.hpp | 0 .../proofs/join_split/join_split.test.cpp | 0 .../proofs/join_split/join_split_circuit.cpp | 0 .../proofs/join_split/join_split_circuit.hpp | 0 .../join_split/join_split_js_parity.test.cpp | 0 .../proofs/join_split/join_split_tx.cpp | 0 .../proofs/join_split/join_split_tx.hpp | 0 .../proofs/join_split/join_split_tx.test.cpp | 0 .../proofs/join_split/sign_join_split_tx.cpp | 0 .../proofs/join_split/sign_join_split_tx.hpp | 0 .../proofs/join_split/verify_signature.hpp | 0 .../proofs/mock/CMakeLists.txt | 0 .../proofs/mock/mock_circuit.hpp | 0 .../proofs/mock/mock_circuit.test.cpp | 0 .../proofs/notes/CMakeLists.txt | 0 .../notes/circuit/account/account_note.hpp | 0 .../proofs/notes/circuit/account/commit.hpp | 0 .../proofs/notes/circuit/account/index.hpp | 0 .../proofs/notes/circuit/asset_id.cpp | 0 .../proofs/notes/circuit/asset_id.hpp | 0 .../proofs/notes/circuit/bridge_call_data.hpp | 0 .../proofs/notes/circuit/claim/claim_note.hpp | 0 .../claim/complete_partial_commitment.hpp | 0 .../notes/circuit/claim/compute_nullifier.hpp | 0 .../claim/create_partial_commitment.hpp | 0 .../proofs/notes/circuit/claim/index.hpp | 0 .../notes/circuit/claim/witness_data.hpp | 0 .../proofs/notes/circuit/index.hpp | 0 .../proofs/notes/circuit/value/commit.hpp | 0 .../value/complete_partial_commitment.hpp | 0 .../notes/circuit/value/compute_nullifier.cpp | 0 .../notes/circuit/value/compute_nullifier.hpp | 0 .../circuit/value/compute_nullifier.test.cpp | 0 .../value/create_partial_commitment.hpp | 0 .../proofs/notes/circuit/value/index.hpp | 0 .../proofs/notes/circuit/value/value_note.hpp | 0 .../notes/circuit/value/value_note.test.cpp | 0 .../notes/circuit/value/witness_data.hpp | 0 .../proofs/notes/constants.hpp | 0 .../notes/native/account/account_note.cpp | 0 .../notes/native/account/account_note.hpp | 0 .../compute_account_alias_hash_nullifier.hpp | 0 .../compute_account_public_key_nullifier.hpp | 0 .../proofs/notes/native/account/index.hpp | 0 .../proofs/notes/native/asset_id.cpp | 0 .../proofs/notes/native/asset_id.hpp | 0 .../proofs/notes/native/bridge_call_data.hpp | 0 .../proofs/notes/native/claim/claim_note.hpp | 0 .../notes/native/claim/claim_note_tx_data.hpp | 0 .../claim/complete_partial_commitment.hpp | 0 .../notes/native/claim/compute_nullifier.hpp | 0 .../claim/create_partial_commitment.hpp | 0 .../proofs/notes/native/claim/index.hpp | 0 .../proofs/notes/native/index.hpp | 0 .../value/complete_partial_commitment.hpp | 0 .../notes/native/value/compute_nullifier.cpp | 0 .../notes/native/value/compute_nullifier.hpp | 0 .../value/create_partial_commitment.hpp | 0 .../proofs/notes/native/value/index.hpp | 0 .../proofs/notes/native/value/value_note.hpp | 0 .../join_split_example/proofs/verify.hpp | 0 .../barretenberg/join_split_example/types.hpp | 0 .../src/barretenberg/numeric/CMakeLists.txt | 0 .../numeric/bitop/bitop.bench.cpp | 0 .../numeric/bitop/count_leading_zeros.hpp | 0 .../bitop/count_leading_zeros.test.cpp | 0 .../barretenberg/numeric/bitop/get_msb.hpp | 0 .../numeric/bitop/get_msb.test.cpp | 0 .../barretenberg/numeric/bitop/keep_n_lsb.hpp | 0 .../src/barretenberg/numeric/bitop/pow.hpp | 0 .../src/barretenberg/numeric/bitop/rotate.hpp | 0 .../numeric/bitop/sparse_form.hpp | 0 .../barretenberg/numeric/random/engine.cpp | 0 .../barretenberg/numeric/random/engine.hpp | 0 .../numeric/random/engine.test.cpp | 0 .../barretenberg/numeric/uint128/uint128.hpp | 0 .../numeric/uint128/uint128.test.cpp | 0 .../numeric/uint128/uint128_impl.hpp | 0 .../barretenberg/numeric/uint256/uint256.hpp | 0 .../numeric/uint256/uint256.test.cpp | 0 .../numeric/uint256/uint256_impl.hpp | 0 .../src/barretenberg/numeric/uintx/uintx.hpp | 0 .../barretenberg/numeric/uintx/uintx.test.cpp | 0 .../barretenberg/numeric/uintx/uintx_impl.hpp | 0 .../cpp/src/barretenberg/plonk/CMakeLists.txt | 0 .../plonk/composer/composer_lib.cpp | 0 .../plonk/composer/composer_lib.hpp | 0 .../plonk/composer/standard_composer.cpp | 0 .../plonk/composer/standard_composer.hpp | 0 .../plonk/composer/standard_composer.test.cpp | 0 .../plonk/composer/turbo_composer.cpp | 0 .../plonk/composer/turbo_composer.hpp | 0 .../plonk/composer/turbo_composer.test.cpp | 0 .../plonk/composer/ultra_composer.cpp | 0 .../plonk/composer/ultra_composer.hpp | 0 .../plonk/composer/ultra_composer.test.cpp | 0 .../src/barretenberg/plonk/flavor/flavor.hpp | 0 .../commitment_scheme/commitment_scheme.hpp | 0 .../commitment_scheme.test.cpp | 0 .../kate_commitment_scheme.cpp | 0 .../kate_commitment_scheme.hpp | 0 .../plonk/proof_system/constants.hpp | 0 .../plonk/proof_system/prover/c_bind.cpp | 0 .../plonk/proof_system/prover/prover.cpp | 0 .../plonk/proof_system/prover/prover.hpp | 0 .../plonk/proof_system/prover/prover.test.cpp | 0 .../proof_system/proving_key/proving_key.cpp | 0 .../proof_system/proving_key/proving_key.hpp | 0 .../proving_key/proving_key.test.cpp | 0 .../proof_system/proving_key/serialize.hpp | 0 .../public_inputs/public_inputs.hpp | 0 .../public_inputs/public_inputs.test.cpp | 0 .../public_inputs/public_inputs_impl.hpp | 0 .../types/commitment_open_proof.hpp | 0 .../types/polynomial_manifest.hpp | 0 .../proof_system/types/program_settings.hpp | 0 .../plonk/proof_system/types/proof.hpp | 0 .../proof_system/types/prover_settings.hpp | 0 .../utils/generalized_permutation.hpp | 0 .../proof_system/utils/kate_verification.hpp | 0 .../plonk/proof_system/utils/permutation.hpp | 0 .../proof_system/verification_key/sol_gen.hpp | 0 .../verification_key/verification_key.cpp | 0 .../verification_key/verification_key.hpp | 0 .../verification_key.test.cpp | 0 .../plonk/proof_system/verifier/verifier.cpp | 0 .../plonk/proof_system/verifier/verifier.hpp | 0 .../proof_system/verifier/verifier.test.cpp | 0 .../random_widgets/permutation_widget.hpp | 0 .../permutation_widget_impl.hpp | 0 .../widgets/random_widgets/plookup_widget.hpp | 0 .../random_widgets/plookup_widget_impl.hpp | 0 .../widgets/random_widgets/random_widget.hpp | 0 .../transition_widgets/arithmetic_widget.hpp | 0 .../transition_widgets/elliptic_widget.hpp | 0 .../transition_widgets/fixed_base_widget.hpp | 0 .../genperm_sort_widget.hpp | 0 .../plookup_arithmetic_widget.hpp | 0 .../plookup_auxiliary_widget.hpp | 0 .../transition_widgets/transition_widget.hpp | 0 .../turbo_arithmetic_widget.hpp | 0 .../transition_widgets/turbo_logic_widget.hpp | 0 .../transition_widgets/turbo_range_widget.hpp | 0 .../barretenberg/polynomials/CMakeLists.txt | 0 .../barretenberg/polynomials/barycentric.hpp | 0 .../polynomials/barycentric.test.cpp | 0 .../polynomials/evaluation_domain.cpp | 0 .../polynomials/evaluation_domain.hpp | 0 .../polynomials/iterate_over_domain.hpp | 0 .../barretenberg/polynomials/polynomial.cpp | 0 .../barretenberg/polynomials/polynomial.hpp | 0 .../polynomials/polynomial_arithmetic.cpp | 0 .../polynomials/polynomial_arithmetic.hpp | 0 .../polynomial_arithmetic.test.cpp | 0 .../polynomials/polynomials.bench.cpp | 0 .../cpp/src/barretenberg/polynomials/pow.hpp | 0 .../src/barretenberg/polynomials/pow.test.cpp | 0 .../barretenberg/polynomials/serialize.hpp | 0 .../barretenberg/polynomials/univariate.hpp | 0 .../polynomials/univariate.test.cpp | 0 .../barretenberg/proof_system/CMakeLists.txt | 0 .../arithmetization/arithmetization.hpp | 0 .../arithmetization/gate_data.hpp | 0 .../circuit_builder/circuit_builder_base.cpp | 0 .../circuit_builder/circuit_builder_base.hpp | 0 .../goblin_translator_circuit_builder.cpp | 0 .../goblin_translator_circuit_builder.hpp | 0 ...goblin_translator_circuit_builder.test.cpp | 0 .../goblin_translator_mini.fuzzer.cpp | 0 .../goblin_ultra_circuit_builder.test.cpp | 0 .../standard_circuit_builder.cpp | 0 .../standard_circuit_builder.hpp | 0 .../standard_circuit_builder.test.cpp | 0 .../circuit_builder/turbo_circuit_builder.cpp | 0 .../circuit_builder/turbo_circuit_builder.hpp | 0 .../turbo_circuit_builder.test.cpp | 0 .../circuit_builder/ultra_circuit_builder.cpp | 0 .../circuit_builder/ultra_circuit_builder.hpp | 0 .../ultra_circuit_builder.test.cpp | 0 .../proof_system/composer/composer_lib.hpp | 0 .../composer/composer_lib.test.cpp | 0 .../proof_system/composer/permutation_lib.hpp | 0 .../composer/permutation_lib.test.cpp | 0 .../proof_system/flavor/flavor.hpp | 0 .../proof_system/op_queue/ecc_op_queue.hpp | 0 .../op_queue/ecc_op_queue.test.cpp | 0 .../proof_system/plookup_tables/aes128.hpp | 0 .../proof_system/plookup_tables/blake2s.hpp | 0 .../proof_system/plookup_tables/dummy.hpp | 0 .../plookup_tables/keccak/keccak_chi.hpp | 0 .../plookup_tables/keccak/keccak_input.hpp | 0 .../plookup_tables/keccak/keccak_output.hpp | 0 .../plookup_tables/keccak/keccak_rho.hpp | 0 .../plookup_tables/keccak/keccak_theta.hpp | 0 .../non_native_group_generator.cpp | 0 .../non_native_group_generator.hpp | 0 .../proof_system/plookup_tables/pedersen.hpp | 0 .../plookup_tables/plookup_tables.cpp | 0 .../plookup_tables/plookup_tables.hpp | 0 .../proof_system/plookup_tables/sha256.hpp | 0 .../proof_system/plookup_tables/sparse.hpp | 0 .../proof_system/plookup_tables/types.hpp | 0 .../proof_system/plookup_tables/uint.hpp | 0 .../polynomial_store/polynomial_store.cpp | 0 .../polynomial_store/polynomial_store.hpp | 0 .../polynomial_store.test.cpp | 0 .../polynomial_store_cache.cpp | 0 .../polynomial_store_cache.hpp | 0 .../polynomial_store_wasm.cpp | 0 .../polynomial_store_wasm.hpp | 0 .../relations/arithmetic_relation.hpp | 0 .../relations/auxiliary_relation.hpp | 0 .../relations/ecc_op_queue_relation.hpp | 0 .../relations/elliptic_relation.hpp | 0 .../relations/gen_perm_sort_relation.hpp | 0 .../relations/lookup_relation.hpp | 0 .../relations/permutation_relation.hpp | 0 .../relations/relation_parameters.hpp | 0 .../proof_system/relations/relation_types.hpp | 0 .../standard_relation_consistency.test.cpp | 0 .../relations/ultra_arithmetic_relation.hpp | 0 .../ultra_relation_consistency.test.cpp | 0 .../proof_system/types/circuit_type.hpp | 0 .../proof_system/types/merkle_hash_type.hpp | 0 .../types/pedersen_commitment_type.hpp | 0 .../proof_system/work_queue/work_queue.cpp | 0 .../proof_system/work_queue/work_queue.hpp | 0 .../src/barretenberg/serialize/CMakeLists.txt | 0 .../cpp/src/barretenberg/serialize/cbind.hpp | 0 .../src/barretenberg/serialize/cbind_fwd.hpp | 0 .../src/barretenberg/serialize/msgpack.hpp | 0 .../barretenberg/serialize/msgpack_apply.hpp | 0 .../msgpack_impl/check_memory_span.hpp | 9 +- .../serialize/msgpack_impl/concepts.hpp | 0 .../serialize/msgpack_impl/drop_keys.hpp | 0 .../serialize/msgpack_impl/func_traits.hpp | 0 .../serialize/msgpack_impl/msgpack_impl.hpp | 0 .../msgpack_impl/name_value_pair_macro.hpp | 0 .../serialize/msgpack_impl/schema_impl.hpp | 11 +- .../serialize/msgpack_impl/schema_name.hpp | 0 .../msgpack_impl/struct_map_impl.hpp | 0 .../serialize/msgpack_impl/variant_impl.hpp | 0 .../serialize/msgpack_schema.test.cpp | 0 .../barretenberg/serialize/raw_pointer.hpp | 0 .../barretenberg/serialize/test_helper.hpp | 0 .../smt_verification/CMakeLists.txt | 0 .../barretenberg/smt_verification/README.md | 0 .../smt_verification/circuit/circuit.cpp | 0 .../smt_verification/circuit/circuit.hpp | 0 .../smt_verification/smt_bigfield.test.cpp | 0 .../smt_verification/smt_examples.test.cpp | 0 .../smt_verification/smt_intmod.test.cpp | 0 .../smt_verification/smt_polynomials.test.cpp | 0 .../smt_verification/solver/solver.cpp | 0 .../smt_verification/solver/solver.hpp | 0 .../smt_verification/terms/bool.cpp | 0 .../smt_verification/terms/bool.hpp | 0 .../smt_verification/terms/ffiterm.cpp | 0 .../smt_verification/terms/ffiterm.hpp | 0 .../smt_verification/terms/ffterm.cpp | 0 .../smt_verification/terms/ffterm.hpp | 0 .../solidity_helpers/CMakeLists.txt | 0 .../circuits/add_2_circuit.hpp | 0 .../circuits/blake_circuit.hpp | 0 .../circuits/recursive_circuit.hpp | 0 .../barretenberg/solidity_helpers/key_gen.cpp | 0 .../solidity_helpers/proof_gen.cpp | 0 .../utils/instance_sol_gen.hpp | 0 .../solidity_helpers/utils/utils.hpp | 0 .../cpp/src/barretenberg/srs/CMakeLists.txt | 0 .../cpp/src/barretenberg/srs/c_bind.cpp | 0 .../cpp/src/barretenberg/srs/c_bind.hpp | 0 .../srs/factories/crs_factory.hpp | 0 .../srs/factories/file_crs_factory.cpp | 0 .../srs/factories/file_crs_factory.hpp | 0 .../srs/factories/mem_crs_factory.cpp | 0 .../srs/factories/mem_crs_factory.hpp | 0 .../srs/factories/mem_crs_factory.test.cpp | 0 .../cpp/src/barretenberg/srs/global_crs.cpp | 0 .../cpp/src/barretenberg/srs/global_crs.hpp | 0 .../cpp/src/barretenberg/srs/io.hpp | 0 .../cpp/src/barretenberg/srs/io.test.cpp | 0 .../srs/scalar_multiplication.test.cpp | 0 .../src/barretenberg/stdlib/CMakeLists.txt | 0 .../stdlib/commitment/CMakeLists.txt | 0 .../stdlib/commitment/pedersen/CMakeLists.txt | 0 .../commitment/pedersen/pedersen.bench.cpp | 0 .../stdlib/commitment/pedersen/pedersen.cpp | 0 .../stdlib/commitment/pedersen/pedersen.hpp | 0 .../commitment/pedersen/pedersen.test.cpp | 0 .../commitment/pedersen/pedersen_plookup.cpp | 0 .../commitment/pedersen/pedersen_plookup.hpp | 0 .../pedersen/pedersen_plookup.test.cpp | 0 .../stdlib/encryption/CMakeLists.txt | 0 .../stdlib/encryption/aes128/CMakeLists.txt | 0 .../stdlib/encryption/aes128/aes128.cpp | 0 .../stdlib/encryption/aes128/aes128.hpp | 0 .../stdlib/encryption/aes128/aes128.test.cpp | 0 .../stdlib/encryption/ecdsa/CMakeLists.txt | 0 .../stdlib/encryption/ecdsa/ecdsa.hpp | 0 .../stdlib/encryption/ecdsa/ecdsa.test.cpp | 0 .../stdlib/encryption/ecdsa/ecdsa_impl.hpp | 0 .../stdlib/encryption/schnorr/CMakeLists.txt | 0 .../stdlib/encryption/schnorr/schnorr.cpp | 0 .../stdlib/encryption/schnorr/schnorr.hpp | 0 .../encryption/schnorr/schnorr.test.cpp | 0 .../barretenberg/stdlib/hash/CMakeLists.txt | 0 .../stdlib/hash/benchmarks/CMakeLists.txt | 0 .../hash/benchmarks/celer/CMakeLists.txt | 0 .../hash/benchmarks/celer/sha256.bench.cpp | 0 .../hash/benchmarks/external/CMakeLists.txt | 0 .../benchmarks/external/external.bench.cpp | 0 .../hash/benchmarks/sha256/CMakeLists.txt | 0 .../hash/benchmarks/sha256/sha256.bench.cpp | 0 .../stdlib/hash/blake2s/CMakeLists.txt | 0 .../stdlib/hash/blake2s/blake2s.cpp | 0 .../stdlib/hash/blake2s/blake2s.hpp | 0 .../stdlib/hash/blake2s/blake2s.test.cpp | 0 .../stdlib/hash/blake2s/blake2s_plookup.cpp | 0 .../stdlib/hash/blake2s/blake2s_plookup.hpp | 0 .../stdlib/hash/blake2s/blake_util.hpp | 0 .../stdlib/hash/blake3s/CMakeLists.txt | 0 .../stdlib/hash/blake3s/blake3s.cpp | 0 .../stdlib/hash/blake3s/blake3s.hpp | 0 .../stdlib/hash/blake3s/blake3s.test.cpp | 0 .../stdlib/hash/blake3s/blake3s_plookup.cpp | 0 .../stdlib/hash/blake3s/blake3s_plookup.hpp | 0 .../stdlib/hash/keccak/CMakeLists.txt | 0 .../stdlib/hash/keccak/keccak.cpp | 0 .../stdlib/hash/keccak/keccak.hpp | 0 .../stdlib/hash/keccak/keccak.test.cpp | 0 .../stdlib/hash/pedersen/CMakeLists.txt | 0 .../stdlib/hash/pedersen/pedersen.cpp | 0 .../stdlib/hash/pedersen/pedersen.hpp | 0 .../stdlib/hash/pedersen/pedersen_gates.hpp | 0 .../stdlib/hash/pedersen/pedersen_plookup.cpp | 0 .../stdlib/hash/pedersen/pedersen_plookup.hpp | 0 .../stdlib/hash/sha256/CMakeLists.txt | 0 .../stdlib/hash/sha256/sha256.cpp | 0 .../stdlib/hash/sha256/sha256.hpp | 0 .../stdlib/hash/sha256/sha256.test.cpp | 0 .../stdlib/hash/sha256/sha256_plookup.cpp | 0 .../stdlib/hash/sha256/sha256_plookup.hpp | 0 .../stdlib/merkle_tree/CMakeLists.txt | 0 .../barretenberg/stdlib/merkle_tree/hash.hpp | 0 .../stdlib/merkle_tree/hash.test.cpp | 0 .../stdlib/merkle_tree/hash_path.hpp | 0 .../barretenberg/stdlib/merkle_tree/index.hpp | 0 .../stdlib/merkle_tree/membership.hpp | 0 .../stdlib/merkle_tree/membership.test.cpp | 0 .../stdlib/merkle_tree/memory_store.hpp | 0 .../stdlib/merkle_tree/memory_tree.cpp | 0 .../stdlib/merkle_tree/memory_tree.hpp | 0 .../stdlib/merkle_tree/memory_tree.test.cpp | 0 .../stdlib/merkle_tree/merkle_tree.bench.cpp | 0 .../stdlib/merkle_tree/merkle_tree.cpp | 0 .../stdlib/merkle_tree/merkle_tree.hpp | 0 .../stdlib/merkle_tree/merkle_tree.test.cpp | 0 .../nullifier_tree/nullifier_leaf.hpp | 0 .../nullifier_tree/nullifier_memory_tree.cpp | 0 .../nullifier_tree/nullifier_memory_tree.hpp | 0 .../nullifier_memory_tree.test.cpp | 0 .../nullifier_tree/nullifier_tree.cpp | 0 .../nullifier_tree/nullifier_tree.hpp | 0 .../nullifier_tree/nullifier_tree.test.cpp | 0 .../stdlib/primitives/CMakeLists.txt | 0 .../stdlib/primitives/address/address.hpp | 0 .../primitives/bigfield/bigfield.fuzzer.hpp | 0 .../stdlib/primitives/bigfield/bigfield.hpp | 0 .../primitives/bigfield/bigfield.test.cpp | 0 .../bigfield/bigfield_all.fuzzer.cpp | 0 .../primitives/bigfield/bigfield_impl.hpp | 0 .../bigfield/bigfield_standard.fuzzer.cpp | 0 .../bigfield/bigfield_turbo.fuzzer.cpp | 0 .../stdlib/primitives/biggroup/biggroup.hpp | 0 .../primitives/biggroup/biggroup.test.cpp | 0 .../biggroup/biggroup_batch_mul.hpp | 0 .../primitives/biggroup/biggroup_bn254.hpp | 0 .../primitives/biggroup/biggroup_goblin.hpp | 0 .../biggroup/biggroup_goblin.test.cpp | 0 .../primitives/biggroup/biggroup_impl.hpp | 0 .../primitives/biggroup/biggroup_nafs.hpp | 0 .../biggroup/biggroup_secp256k1.hpp | 0 .../primitives/biggroup/biggroup_tables.hpp | 0 .../stdlib/primitives/bit_array/bit_array.cpp | 0 .../primitives/bit_array/bit_array.fuzzer.hpp | 0 .../stdlib/primitives/bit_array/bit_array.hpp | 0 .../primitives/bit_array/bit_array.test.cpp | 0 .../bit_array/bit_array_all.fuzzer.cpp | 0 .../bit_array/bit_array_standard.fuzzer.cpp | 0 .../bit_array/bit_array_turbo.fuzzer.cpp | 0 .../stdlib/primitives/bool/bool.cpp | 0 .../stdlib/primitives/bool/bool.fuzzer.hpp | 0 .../stdlib/primitives/bool/bool.hpp | 0 .../stdlib/primitives/bool/bool.test.cpp | 0 .../primitives/bool/bool_all.fuzzer.cpp | 0 .../primitives/bool/bool_standard.fuzzer.cpp | 0 .../primitives/bool/bool_turbo.fuzzer.cpp | 0 .../primitives/byte_array/byte_array.cpp | 0 .../byte_array/byte_array.fuzzer.hpp | 0 .../primitives/byte_array/byte_array.hpp | 0 .../primitives/byte_array/byte_array.test.cpp | 0 .../byte_array/byte_array_all.fuzzer.cpp | 0 .../byte_array/byte_array_standard.fuzzer.cpp | 0 .../byte_array/byte_array_turbo.fuzzer.cpp | 0 .../circuit_builders/circuit_builders.hpp | 0 .../circuit_builders/circuit_builders_fwd.hpp | 0 .../stdlib/primitives/curves/bn254.hpp | 0 .../stdlib/primitives/curves/secp256k1.hpp | 0 .../stdlib/primitives/curves/secp256r1.hpp | 0 .../stdlib/primitives/field/array.hpp | 0 .../stdlib/primitives/field/array.test.cpp | 0 .../stdlib/primitives/field/field.cpp | 0 .../stdlib/primitives/field/field.fuzzer.hpp | 0 .../stdlib/primitives/field/field.hpp | 0 .../stdlib/primitives/field/field.test.cpp | 0 .../primitives/field/field_all.fuzzer.cpp | 0 .../field/field_standard.fuzzer.cpp | 0 .../primitives/field/field_turbo.fuzzer.cpp | 0 .../stdlib/primitives/group/group.hpp | 0 .../stdlib/primitives/group/group.test.cpp | 0 .../stdlib/primitives/logic/logic.cpp | 0 .../stdlib/primitives/logic/logic.hpp | 0 .../stdlib/primitives/logic/logic.test.cpp | 0 .../primitives/memory/dynamic_array.cpp | 0 .../primitives/memory/dynamic_array.hpp | 0 .../primitives/memory/dynamic_array.test.cpp | 0 .../stdlib/primitives/memory/ram_table.cpp | 0 .../stdlib/primitives/memory/ram_table.hpp | 0 .../primitives/memory/ram_table.test.cpp | 0 .../stdlib/primitives/memory/rom_table.cpp | 0 .../stdlib/primitives/memory/rom_table.hpp | 0 .../primitives/memory/rom_table.test.cpp | 0 .../primitives/memory/twin_rom_table.cpp | 0 .../primitives/memory/twin_rom_table.hpp | 0 .../packed_byte_array/packed_byte_array.cpp | 0 .../packed_byte_array/packed_byte_array.hpp | 0 .../packed_byte_array.test.cpp | 0 .../stdlib/primitives/plookup/plookup.cpp | 0 .../stdlib/primitives/plookup/plookup.hpp | 0 .../primitives/plookup/plookup.test.cpp | 0 .../stdlib/primitives/point/point.hpp | 0 .../stdlib/primitives/safe_uint/safe_uint.cpp | 0 .../primitives/safe_uint/safe_uint.fuzzer.hpp | 0 .../stdlib/primitives/safe_uint/safe_uint.hpp | 0 .../primitives/safe_uint/safe_uint.test.cpp | 0 .../safe_uint/safe_uint_all.fuzzer.cpp | 0 .../safe_uint/safe_uint_standard.fuzzer.cpp | 0 .../safe_uint/safe_uint_turbo.fuzzer.cpp | 0 .../stdlib/primitives/uint/arithmetic.cpp | 0 .../stdlib/primitives/uint/comparison.cpp | 0 .../stdlib/primitives/uint/logic.cpp | 0 .../primitives/uint/plookup/arithmetic.cpp | 0 .../primitives/uint/plookup/comparison.cpp | 0 .../stdlib/primitives/uint/plookup/logic.cpp | 0 .../stdlib/primitives/uint/plookup/uint.cpp | 0 .../stdlib/primitives/uint/plookup/uint.hpp | 0 .../stdlib/primitives/uint/uint.cpp | 0 .../stdlib/primitives/uint/uint.fuzzer.hpp | 0 .../stdlib/primitives/uint/uint.hpp | 0 .../stdlib/primitives/uint/uint.test.cpp | 0 .../primitives/uint/uint_all.fuzzer.cpp | 0 .../primitives/uint/uint_standard.fuzzer.cpp | 0 .../primitives/uint/uint_turbo.fuzzer.cpp | 0 .../stdlib/primitives/witness/witness.hpp | 0 .../stdlib/recursion/CMakeLists.txt | 0 .../aggregation_state/aggregation_state.hpp | 0 .../native_aggregation_state.hpp | 0 .../recursion/honk/transcript/transcript.hpp | 0 .../honk/transcript/transcript.test.cpp | 0 .../verifier/ultra_recursive_verifier.cpp | 0 .../verifier/ultra_recursive_verifier.hpp | 0 .../recursion/honk/verifier/verifier.test.cpp | 0 .../recursion/transcript/transcript.hpp | 0 .../recursion/transcript/transcript.test.cpp | 0 .../verification_key/verification_key.hpp | 0 .../verification_key.test.cpp | 0 .../recursion/verifier/program_settings.hpp | 0 .../stdlib/recursion/verifier/verifier.hpp | 0 .../recursion/verifier/verifier.test.cpp | 0 .../verifier/verifier_turbo.test.cpp | 0 .../src/barretenberg/stdlib/types/turbo.hpp | 0 .../src/barretenberg/stdlib/types/ultra.hpp | 0 .../barretenberg/stdlib/utility/utility.hpp | 0 .../barretenberg/transcript/CMakeLists.txt | 0 .../src/barretenberg/transcript/manifest.hpp | 0 .../barretenberg/transcript/transcript.cpp | 0 .../barretenberg/transcript/transcript.hpp | 0 .../transcript/transcript.test.cpp | 0 .../transcript/transcript_wrappers.cpp | 0 .../transcript/transcript_wrappers.hpp | 0 .../cpp/src/barretenberg/wasi/CMakeLists.txt | 0 .../cpp/src/barretenberg/wasi/wasi_stubs.cpp | 0 .../cpp/src/barretenberg/wasi/wasm_init.cpp | 0 .../cpp/src/msgpack-c/.clang-format | 0 .../src/msgpack-c/.github/depends/boost.sh | 0 .../cpp/src/msgpack-c/.github/depends/zlib.sh | 0 .../msgpack-c/.github/workflows/coverage.yml | 0 .../src/msgpack-c/.github/workflows/gha.yml | 0 .../cpp/src/msgpack-c/.gitignore | 0 .../cpp/src/msgpack-c/CHANGELOG.md | 0 .../cpp/src/msgpack-c/CMakeLists.txt | 0 .../cpp/src/msgpack-c/COPYING | 0 .../cpp/src/msgpack-c/Doxyfile | 0 .../cpp/src/msgpack-c/Files.cmake | 0 .../cpp/src/msgpack-c/LICENSE_1_0.txt | 0 .../cpp/src/msgpack-c/NOTICE | 0 .../cpp/src/msgpack-c/QUICKSTART-CPP.md | 0 .../cpp/src/msgpack-c/README.md | 0 .../cpp/src/msgpack-c/appveyor.yml | 0 .../cpp/src/msgpack-c/ci/build_cmake.sh | 0 .../cpp/src/msgpack-c/ci/build_regression.sh | 0 .../cpp/src/msgpack-c/ci/set_gcc_10.sh | 0 .../src/msgpack-c/cmake/CodeCoverage.cmake | 0 .../cpp/src/msgpack-c/codecov.yml | 0 .../erb/v1/cpp03_define_array.hpp.erb | 0 .../erb/v1/cpp03_define_array_decl.hpp.erb | 0 .../msgpack-c/erb/v1/cpp03_define_map.hpp.erb | 0 .../erb/v1/cpp03_define_map_decl.hpp.erb | 0 .../erb/v1/cpp03_msgpack_tuple.hpp.erb | 0 .../erb/v1/cpp03_msgpack_tuple_decl.hpp.erb | 0 .../src/msgpack-c/erb/v1/cpp03_zone.hpp.erb | 0 .../msgpack-c/erb/v1/cpp03_zone_decl.hpp.erb | 0 .../cpp/src/msgpack-c/example/CMakeLists.txt | 0 .../msgpack-c/example/boost/CMakeLists.txt | 0 .../example/boost/asio_send_recv.cpp | 0 .../example/boost/asio_send_recv_zlib.cpp | 0 .../boost/msgpack_variant_capitalize.cpp | 0 .../boost/msgpack_variant_mapbased.cpp | 0 .../msgpack-c/example/cpp03/CMakeLists.txt | 0 .../example/cpp03/class_intrusive.cpp | 0 .../example/cpp03/class_intrusive_map.cpp | 0 .../example/cpp03/class_non_intrusive.cpp | 0 .../src/msgpack-c/example/cpp03/custom.cpp | 0 .../cpp/src/msgpack-c/example/cpp03/enum.cpp | 0 .../example/cpp03/map_based_versionup.cpp | 0 .../src/msgpack-c/example/cpp03/protocol.cpp | 0 .../msgpack-c/example/cpp03/protocol_new.cpp | 0 .../msgpack-c/example/cpp03/reuse_zone.cpp | 0 .../src/msgpack-c/example/cpp03/simple.cpp | 0 .../msgpack-c/example/cpp03/speed_test.cpp | 0 .../example/cpp03/speed_test_nested_array.cpp | 0 .../src/msgpack-c/example/cpp03/stream.cpp | 0 .../msgpack-c/example/cpp11/CMakeLists.txt | 0 .../src/msgpack-c/example/cpp11/container.cpp | 0 .../example/cpp11/non_def_con_class.cpp | 0 .../example/cpp11/socket_stream_example.cpp | 0 .../src/msgpack-c/example/x3/CMakeLists.txt | 0 .../cpp/src/msgpack-c/example/x3/parse.cpp | 0 .../msgpack-c/example/x3/stream_unpack.cpp | 0 .../cpp/src/msgpack-c/example/x3/unpack.cpp | 0 .../cpp/src/msgpack-c/fuzz/CMakeLists.txt | 0 .../src/msgpack-c/fuzz/regression_runner.cpp | 0 .../src/msgpack-c/fuzz/unpack_pack_fuzzer.cpp | 0 ...imized-unpack_pack_fuzzer-5656982724804608 | Bin ...imized-unpack_pack_fuzzer-6022481354686464 | Bin .../unpack_pack_fuzzer_seed_corpus/EmptyArray | 0 .../EmptyObject | 0 .../ExcessiveNesting | 0 .../OpenWeatherMap | Bin .../WeatherUnderground | Bin .../cpp/src/msgpack-c/include/msgpack.hpp | 0 .../include/msgpack/adaptor/adaptor_base.hpp | 0 .../msgpack/adaptor/adaptor_base_decl.hpp | 0 .../include/msgpack/adaptor/array_ref.hpp | 0 .../msgpack/adaptor/array_ref_decl.hpp | 0 .../include/msgpack/adaptor/bool.hpp | 0 .../include/msgpack/adaptor/boost/fusion.hpp | 0 .../msgpack/adaptor/boost/msgpack_variant.hpp | 0 .../adaptor/boost/msgpack_variant_decl.hpp | 0 .../msgpack/adaptor/boost/optional.hpp | 0 .../msgpack/adaptor/boost/string_ref.hpp | 0 .../msgpack/adaptor/boost/string_view.hpp | 0 .../include/msgpack/adaptor/carray.hpp | 0 .../include/msgpack/adaptor/char_ptr.hpp | 0 .../msgpack/adaptor/check_container_size.hpp | 0 .../adaptor/check_container_size_decl.hpp | 0 .../include/msgpack/adaptor/complex.hpp | 0 .../include/msgpack/adaptor/cpp11/array.hpp | 0 .../msgpack/adaptor/cpp11/array_char.hpp | 0 .../adaptor/cpp11/array_unsigned_char.hpp | 0 .../include/msgpack/adaptor/cpp11/chrono.hpp | 0 .../msgpack/adaptor/cpp11/forward_list.hpp | 0 .../adaptor/cpp11/reference_wrapper.hpp | 0 .../msgpack/adaptor/cpp11/shared_ptr.hpp | 0 .../msgpack/adaptor/cpp11/timespec.hpp | 0 .../include/msgpack/adaptor/cpp11/tuple.hpp | 0 .../msgpack/adaptor/cpp11/unique_ptr.hpp | 0 .../msgpack/adaptor/cpp11/unordered_map.hpp | 0 .../msgpack/adaptor/cpp11/unordered_set.hpp | 0 .../msgpack/adaptor/cpp17/array_byte.hpp | 0 .../include/msgpack/adaptor/cpp17/byte.hpp | 0 .../msgpack/adaptor/cpp17/carray_byte.hpp | 0 .../msgpack/adaptor/cpp17/optional.hpp | 0 .../msgpack/adaptor/cpp17/string_view.hpp | 0 .../msgpack/adaptor/cpp17/vector_byte.hpp | 0 .../include/msgpack/adaptor/cpp20/span.hpp | 0 .../include/msgpack/adaptor/define.hpp | 0 .../include/msgpack/adaptor/define_decl.hpp | 0 .../include/msgpack/adaptor/deque.hpp | 0 .../msgpack-c/include/msgpack/adaptor/ext.hpp | 0 .../include/msgpack/adaptor/ext_decl.hpp | 0 .../include/msgpack/adaptor/fixint.hpp | 0 .../include/msgpack/adaptor/fixint_decl.hpp | 0 .../include/msgpack/adaptor/float.hpp | 0 .../msgpack-c/include/msgpack/adaptor/int.hpp | 0 .../include/msgpack/adaptor/int_decl.hpp | 0 .../include/msgpack/adaptor/list.hpp | 0 .../msgpack-c/include/msgpack/adaptor/map.hpp | 0 .../include/msgpack/adaptor/map_decl.hpp | 0 .../include/msgpack/adaptor/msgpack_tuple.hpp | 0 .../msgpack/adaptor/msgpack_tuple_decl.hpp | 0 .../msgpack-c/include/msgpack/adaptor/nil.hpp | 0 .../include/msgpack/adaptor/nil_decl.hpp | 0 .../include/msgpack/adaptor/pair.hpp | 0 .../msgpack-c/include/msgpack/adaptor/raw.hpp | 0 .../include/msgpack/adaptor/raw_decl.hpp | 0 .../msgpack-c/include/msgpack/adaptor/set.hpp | 0 .../msgpack/adaptor/size_equal_only.hpp | 0 .../msgpack/adaptor/size_equal_only_decl.hpp | 0 .../include/msgpack/adaptor/string.hpp | 0 .../msgpack/adaptor/tr1/unordered_map.hpp | 0 .../msgpack/adaptor/tr1/unordered_set.hpp | 0 .../include/msgpack/adaptor/v4raw.hpp | 0 .../include/msgpack/adaptor/v4raw_decl.hpp | 0 .../include/msgpack/adaptor/vector.hpp | 0 .../include/msgpack/adaptor/vector_bool.hpp | 0 .../include/msgpack/adaptor/vector_char.hpp | 0 .../msgpack/adaptor/vector_unsigned_char.hpp | 0 .../include/msgpack/adaptor/wstring.hpp | 0 .../src/msgpack-c/include/msgpack/assert.hpp | 0 .../msgpack-c/include/msgpack/cpp_config.hpp | 0 .../include/msgpack/cpp_config_decl.hpp | 0 .../msgpack-c/include/msgpack/cpp_version.hpp | 0 .../include/msgpack/create_object_visitor.hpp | 0 .../msgpack/create_object_visitor_decl.hpp | 0 .../src/msgpack-c/include/msgpack/fbuffer.hpp | 0 .../include/msgpack/fbuffer_decl.hpp | 0 .../msgpack-c/include/msgpack/gcc_atomic.hpp | 0 .../msgpack-c/include/msgpack/iterator.hpp | 0 .../include/msgpack/iterator_decl.hpp | 0 .../src/msgpack-c/include/msgpack/meta.hpp | 0 .../msgpack-c/include/msgpack/meta_decl.hpp | 0 .../include/msgpack/null_visitor.hpp | 0 .../include/msgpack/null_visitor_decl.hpp | 0 .../src/msgpack-c/include/msgpack/object.hpp | 0 .../msgpack-c/include/msgpack/object_decl.hpp | 0 .../msgpack-c/include/msgpack/object_fwd.hpp | 0 .../include/msgpack/object_fwd_decl.hpp | 0 .../src/msgpack-c/include/msgpack/pack.hpp | 0 .../msgpack-c/include/msgpack/pack_decl.hpp | 0 .../src/msgpack-c/include/msgpack/parse.hpp | 0 .../msgpack-c/include/msgpack/parse_decl.hpp | 0 .../include/msgpack/parse_return.hpp | 0 .../src/msgpack-c/include/msgpack/predef.h | 0 .../include/msgpack/predef/architecture.h | 0 .../msgpack/predef/architecture/alpha.h | 0 .../include/msgpack/predef/architecture/arm.h | 0 .../msgpack/predef/architecture/blackfin.h | 0 .../msgpack/predef/architecture/convex.h | 0 .../msgpack/predef/architecture/ia64.h | 0 .../msgpack/predef/architecture/m68k.h | 0 .../msgpack/predef/architecture/mips.h | 0 .../msgpack/predef/architecture/parisc.h | 0 .../include/msgpack/predef/architecture/ppc.h | 0 .../include/msgpack/predef/architecture/ptx.h | 0 .../msgpack/predef/architecture/pyramid.h | 0 .../msgpack/predef/architecture/rs6k.h | 0 .../msgpack/predef/architecture/sparc.h | 0 .../msgpack/predef/architecture/superh.h | 0 .../msgpack/predef/architecture/sys370.h | 0 .../msgpack/predef/architecture/sys390.h | 0 .../include/msgpack/predef/architecture/x86.h | 0 .../msgpack/predef/architecture/x86/32.h | 0 .../msgpack/predef/architecture/x86/64.h | 0 .../include/msgpack/predef/architecture/z.h | 0 .../include/msgpack/predef/compiler.h | 0 .../include/msgpack/predef/compiler/borland.h | 0 .../include/msgpack/predef/compiler/clang.h | 0 .../include/msgpack/predef/compiler/comeau.h | 0 .../include/msgpack/predef/compiler/compaq.h | 0 .../include/msgpack/predef/compiler/diab.h | 0 .../msgpack/predef/compiler/digitalmars.h | 0 .../include/msgpack/predef/compiler/dignus.h | 0 .../include/msgpack/predef/compiler/edg.h | 0 .../include/msgpack/predef/compiler/ekopath.h | 0 .../include/msgpack/predef/compiler/gcc.h | 0 .../include/msgpack/predef/compiler/gcc_xml.h | 0 .../msgpack/predef/compiler/greenhills.h | 0 .../include/msgpack/predef/compiler/hp_acc.h | 0 .../include/msgpack/predef/compiler/iar.h | 0 .../include/msgpack/predef/compiler/ibm.h | 0 .../include/msgpack/predef/compiler/intel.h | 0 .../include/msgpack/predef/compiler/kai.h | 0 .../include/msgpack/predef/compiler/llvm.h | 0 .../msgpack/predef/compiler/metaware.h | 0 .../msgpack/predef/compiler/metrowerks.h | 0 .../msgpack/predef/compiler/microtec.h | 0 .../include/msgpack/predef/compiler/mpw.h | 0 .../include/msgpack/predef/compiler/nvcc.h | 0 .../include/msgpack/predef/compiler/palm.h | 0 .../include/msgpack/predef/compiler/pgi.h | 0 .../msgpack/predef/compiler/sgi_mipspro.h | 0 .../include/msgpack/predef/compiler/sunpro.h | 0 .../include/msgpack/predef/compiler/tendra.h | 0 .../include/msgpack/predef/compiler/visualc.h | 0 .../include/msgpack/predef/compiler/watcom.h | 0 .../include/msgpack/predef/detail/_cassert.h | 0 .../msgpack/predef/detail/_exception.h | 0 .../msgpack/predef/detail/comp_detected.h | 0 .../msgpack/predef/detail/endian_compat.h | 0 .../msgpack/predef/detail/os_detected.h | 0 .../msgpack/predef/detail/platform_detected.h | 0 .../include/msgpack/predef/detail/test.h | 0 .../include/msgpack/predef/detail/test_def.h | 0 .../include/msgpack/predef/hardware.h | 0 .../include/msgpack/predef/hardware/simd.h | 0 .../msgpack/predef/hardware/simd/arm.h | 0 .../predef/hardware/simd/arm/versions.h | 0 .../msgpack/predef/hardware/simd/ppc.h | 0 .../predef/hardware/simd/ppc/versions.h | 0 .../msgpack/predef/hardware/simd/x86.h | 0 .../predef/hardware/simd/x86/versions.h | 0 .../msgpack/predef/hardware/simd/x86_amd.h | 0 .../predef/hardware/simd/x86_amd/versions.h | 0 .../include/msgpack/predef/language.h | 0 .../include/msgpack/predef/language/cuda.h | 0 .../include/msgpack/predef/language/objc.h | 0 .../include/msgpack/predef/language/stdc.h | 0 .../include/msgpack/predef/language/stdcpp.h | 0 .../include/msgpack/predef/library.h | 0 .../include/msgpack/predef/library/c.h | 0 .../msgpack/predef/library/c/_prefix.h | 0 .../msgpack/predef/library/c/cloudabi.h | 0 .../include/msgpack/predef/library/c/gnu.h | 0 .../include/msgpack/predef/library/c/uc.h | 0 .../include/msgpack/predef/library/c/vms.h | 0 .../include/msgpack/predef/library/c/zos.h | 0 .../include/msgpack/predef/library/std.h | 0 .../msgpack/predef/library/std/_prefix.h | 0 .../include/msgpack/predef/library/std/cxx.h | 0 .../msgpack/predef/library/std/dinkumware.h | 0 .../msgpack/predef/library/std/libcomo.h | 0 .../msgpack/predef/library/std/modena.h | 0 .../include/msgpack/predef/library/std/msl.h | 0 .../msgpack/predef/library/std/roguewave.h | 0 .../include/msgpack/predef/library/std/sgi.h | 0 .../msgpack/predef/library/std/stdcpp3.h | 0 .../msgpack/predef/library/std/stlport.h | 0 .../msgpack/predef/library/std/vacpp.h | 0 .../msgpack-c/include/msgpack/predef/make.h | 0 .../src/msgpack-c/include/msgpack/predef/os.h | 0 .../msgpack-c/include/msgpack/predef/os/aix.h | 0 .../include/msgpack/predef/os/amigaos.h | 0 .../include/msgpack/predef/os/android.h | 0 .../include/msgpack/predef/os/beos.h | 0 .../msgpack-c/include/msgpack/predef/os/bsd.h | 0 .../include/msgpack/predef/os/bsd/bsdi.h | 0 .../include/msgpack/predef/os/bsd/dragonfly.h | 0 .../include/msgpack/predef/os/bsd/free.h | 0 .../include/msgpack/predef/os/bsd/net.h | 0 .../include/msgpack/predef/os/bsd/open.h | 0 .../include/msgpack/predef/os/cygwin.h | 0 .../include/msgpack/predef/os/haiku.h | 0 .../include/msgpack/predef/os/hpux.h | 0 .../msgpack-c/include/msgpack/predef/os/ios.h | 0 .../include/msgpack/predef/os/irix.h | 0 .../include/msgpack/predef/os/linux.h | 0 .../include/msgpack/predef/os/macos.h | 0 .../include/msgpack/predef/os/os400.h | 0 .../include/msgpack/predef/os/qnxnto.h | 0 .../include/msgpack/predef/os/solaris.h | 0 .../include/msgpack/predef/os/unix.h | 0 .../msgpack-c/include/msgpack/predef/os/vms.h | 0 .../include/msgpack/predef/os/windows.h | 0 .../msgpack-c/include/msgpack/predef/other.h | 0 .../include/msgpack/predef/other/endian.h | 0 .../include/msgpack/predef/other/workaround.h | 0 .../include/msgpack/predef/platform.h | 0 .../msgpack/predef/platform/cloudabi.h | 0 .../include/msgpack/predef/platform/ios.h | 0 .../include/msgpack/predef/platform/mingw.h | 0 .../include/msgpack/predef/platform/mingw32.h | 0 .../include/msgpack/predef/platform/mingw64.h | 0 .../msgpack/predef/platform/windows_desktop.h | 0 .../msgpack/predef/platform/windows_phone.h | 0 .../msgpack/predef/platform/windows_runtime.h | 0 .../msgpack/predef/platform/windows_server.h | 0 .../msgpack/predef/platform/windows_store.h | 0 .../msgpack/predef/platform/windows_system.h | 0 .../msgpack/predef/platform/windows_uwp.h | 0 .../include/msgpack/predef/version.h | 0 .../include/msgpack/predef/version_number.h | 0 .../include/msgpack/preprocessor.hpp | 0 .../msgpack/preprocessor/arithmetic.hpp | 0 .../msgpack/preprocessor/arithmetic/add.hpp | 0 .../msgpack/preprocessor/arithmetic/dec.hpp | 0 .../arithmetic/detail/div_base.hpp | 0 .../msgpack/preprocessor/arithmetic/div.hpp | 0 .../msgpack/preprocessor/arithmetic/inc.hpp | 0 .../msgpack/preprocessor/arithmetic/mod.hpp | 0 .../msgpack/preprocessor/arithmetic/mul.hpp | 0 .../msgpack/preprocessor/arithmetic/sub.hpp | 0 .../include/msgpack/preprocessor/array.hpp | 0 .../msgpack/preprocessor/array/data.hpp | 0 .../preprocessor/array/detail/get_data.hpp | 0 .../msgpack/preprocessor/array/elem.hpp | 0 .../msgpack/preprocessor/array/enum.hpp | 0 .../msgpack/preprocessor/array/insert.hpp | 0 .../msgpack/preprocessor/array/pop_back.hpp | 0 .../msgpack/preprocessor/array/pop_front.hpp | 0 .../msgpack/preprocessor/array/push_back.hpp | 0 .../msgpack/preprocessor/array/push_front.hpp | 0 .../msgpack/preprocessor/array/remove.hpp | 0 .../msgpack/preprocessor/array/replace.hpp | 0 .../msgpack/preprocessor/array/reverse.hpp | 0 .../msgpack/preprocessor/array/size.hpp | 0 .../msgpack/preprocessor/array/to_list.hpp | 0 .../msgpack/preprocessor/array/to_seq.hpp | 0 .../msgpack/preprocessor/array/to_tuple.hpp | 0 .../msgpack/preprocessor/assert_msg.hpp | 0 .../include/msgpack/preprocessor/cat.hpp | 0 .../include/msgpack/preprocessor/comma.hpp | 0 .../include/msgpack/preprocessor/comma_if.hpp | 0 .../msgpack/preprocessor/comparison.hpp | 0 .../msgpack/preprocessor/comparison/equal.hpp | 0 .../preprocessor/comparison/greater.hpp | 0 .../preprocessor/comparison/greater_equal.hpp | 0 .../msgpack/preprocessor/comparison/less.hpp | 0 .../preprocessor/comparison/less_equal.hpp | 0 .../preprocessor/comparison/not_equal.hpp | 0 .../msgpack/preprocessor/config/config.hpp | 0 .../msgpack/preprocessor/config/limits.hpp | 0 .../include/msgpack/preprocessor/control.hpp | 0 .../msgpack/preprocessor/control/deduce_d.hpp | 0 .../preprocessor/control/detail/dmc/while.hpp | 0 .../preprocessor/control/detail/edg/while.hpp | 0 .../control/detail/msvc/while.hpp | 0 .../preprocessor/control/detail/while.hpp | 0 .../msgpack/preprocessor/control/expr_if.hpp | 0 .../msgpack/preprocessor/control/expr_iif.hpp | 0 .../msgpack/preprocessor/control/if.hpp | 0 .../msgpack/preprocessor/control/iif.hpp | 0 .../msgpack/preprocessor/control/while.hpp | 0 .../include/msgpack/preprocessor/debug.hpp | 0 .../msgpack/preprocessor/debug/assert.hpp | 0 .../msgpack/preprocessor/debug/error.hpp | 0 .../msgpack/preprocessor/debug/line.hpp | 0 .../include/msgpack/preprocessor/dec.hpp | 0 .../msgpack/preprocessor/detail/auto_rec.hpp | 0 .../msgpack/preprocessor/detail/check.hpp | 0 .../preprocessor/detail/dmc/auto_rec.hpp | 0 .../msgpack/preprocessor/detail/is_binary.hpp | 0 .../preprocessor/detail/is_nullary.hpp | 0 .../msgpack/preprocessor/detail/is_unary.hpp | 0 .../msgpack/preprocessor/detail/null.hpp | 0 .../msgpack/preprocessor/detail/split.hpp | 0 .../include/msgpack/preprocessor/empty.hpp | 0 .../include/msgpack/preprocessor/enum.hpp | 0 .../msgpack/preprocessor/enum_params.hpp | 0 .../enum_params_with_a_default.hpp | 0 .../enum_params_with_defaults.hpp | 0 .../msgpack/preprocessor/enum_shifted.hpp | 0 .../preprocessor/enum_shifted_params.hpp | 0 .../include/msgpack/preprocessor/expand.hpp | 0 .../include/msgpack/preprocessor/expr_if.hpp | 0 .../msgpack/preprocessor/facilities.hpp | 0 .../msgpack/preprocessor/facilities/apply.hpp | 0 .../facilities/detail/is_empty.hpp | 0 .../msgpack/preprocessor/facilities/empty.hpp | 0 .../preprocessor/facilities/expand.hpp | 0 .../preprocessor/facilities/identity.hpp | 0 .../preprocessor/facilities/intercept.hpp | 0 .../msgpack/preprocessor/facilities/is_1.hpp | 0 .../preprocessor/facilities/is_empty.hpp | 0 .../preprocessor/facilities/is_empty_or_1.hpp | 0 .../facilities/is_empty_variadic.hpp | 0 .../preprocessor/facilities/overload.hpp | 0 .../include/msgpack/preprocessor/for.hpp | 0 .../include/msgpack/preprocessor/identity.hpp | 0 .../include/msgpack/preprocessor/if.hpp | 0 .../include/msgpack/preprocessor/inc.hpp | 0 .../include/msgpack/preprocessor/iterate.hpp | 0 .../msgpack/preprocessor/iteration.hpp | 0 .../iteration/detail/bounds/lower1.hpp | 0 .../iteration/detail/bounds/lower2.hpp | 0 .../iteration/detail/bounds/lower3.hpp | 0 .../iteration/detail/bounds/lower4.hpp | 0 .../iteration/detail/bounds/lower5.hpp | 0 .../iteration/detail/bounds/upper1.hpp | 0 .../iteration/detail/bounds/upper2.hpp | 0 .../iteration/detail/bounds/upper3.hpp | 0 .../iteration/detail/bounds/upper4.hpp | 0 .../iteration/detail/bounds/upper5.hpp | 0 .../preprocessor/iteration/detail/finish.hpp | 0 .../iteration/detail/iter/forward1.hpp | 0 .../iteration/detail/iter/forward2.hpp | 0 .../iteration/detail/iter/forward3.hpp | 0 .../iteration/detail/iter/forward4.hpp | 0 .../iteration/detail/iter/forward5.hpp | 0 .../iteration/detail/iter/reverse1.hpp | 0 .../iteration/detail/iter/reverse2.hpp | 0 .../iteration/detail/iter/reverse3.hpp | 0 .../iteration/detail/iter/reverse4.hpp | 0 .../iteration/detail/iter/reverse5.hpp | 0 .../preprocessor/iteration/detail/local.hpp | 0 .../preprocessor/iteration/detail/rlocal.hpp | 0 .../preprocessor/iteration/detail/self.hpp | 0 .../preprocessor/iteration/detail/start.hpp | 0 .../preprocessor/iteration/iterate.hpp | 0 .../msgpack/preprocessor/iteration/local.hpp | 0 .../msgpack/preprocessor/iteration/self.hpp | 0 .../include/msgpack/preprocessor/library.hpp | 0 .../include/msgpack/preprocessor/limits.hpp | 0 .../include/msgpack/preprocessor/list.hpp | 0 .../include/msgpack/preprocessor/list/adt.hpp | 0 .../msgpack/preprocessor/list/append.hpp | 0 .../include/msgpack/preprocessor/list/at.hpp | 0 .../include/msgpack/preprocessor/list/cat.hpp | 0 .../list/detail/dmc/fold_left.hpp | 0 .../list/detail/edg/fold_left.hpp | 0 .../list/detail/edg/fold_right.hpp | 0 .../preprocessor/list/detail/fold_left.hpp | 0 .../preprocessor/list/detail/fold_right.hpp | 0 .../msgpack/preprocessor/list/enum.hpp | 0 .../msgpack/preprocessor/list/filter.hpp | 0 .../msgpack/preprocessor/list/first_n.hpp | 0 .../msgpack/preprocessor/list/fold_left.hpp | 0 .../msgpack/preprocessor/list/fold_right.hpp | 0 .../msgpack/preprocessor/list/for_each.hpp | 0 .../msgpack/preprocessor/list/for_each_i.hpp | 0 .../preprocessor/list/for_each_product.hpp | 0 .../msgpack/preprocessor/list/rest_n.hpp | 0 .../msgpack/preprocessor/list/reverse.hpp | 0 .../msgpack/preprocessor/list/size.hpp | 0 .../msgpack/preprocessor/list/to_array.hpp | 0 .../msgpack/preprocessor/list/to_seq.hpp | 0 .../msgpack/preprocessor/list/to_tuple.hpp | 0 .../msgpack/preprocessor/list/transform.hpp | 0 .../include/msgpack/preprocessor/logical.hpp | 0 .../msgpack/preprocessor/logical/and.hpp | 0 .../msgpack/preprocessor/logical/bitand.hpp | 0 .../msgpack/preprocessor/logical/bitnor.hpp | 0 .../msgpack/preprocessor/logical/bitor.hpp | 0 .../msgpack/preprocessor/logical/bitxor.hpp | 0 .../msgpack/preprocessor/logical/bool.hpp | 0 .../msgpack/preprocessor/logical/compl.hpp | 0 .../msgpack/preprocessor/logical/nor.hpp | 0 .../msgpack/preprocessor/logical/not.hpp | 0 .../msgpack/preprocessor/logical/or.hpp | 0 .../msgpack/preprocessor/logical/xor.hpp | 0 .../include/msgpack/preprocessor/max.hpp | 0 .../include/msgpack/preprocessor/min.hpp | 0 .../msgpack/preprocessor/punctuation.hpp | 0 .../preprocessor/punctuation/comma.hpp | 0 .../preprocessor/punctuation/comma_if.hpp | 0 .../punctuation/detail/is_begin_parens.hpp | 0 .../punctuation/is_begin_parens.hpp | 0 .../preprocessor/punctuation/paren.hpp | 0 .../preprocessor/punctuation/paren_if.hpp | 0 .../punctuation/remove_parens.hpp | 0 .../include/msgpack/preprocessor/repeat.hpp | 0 .../msgpack/preprocessor/repeat_2nd.hpp | 0 .../msgpack/preprocessor/repeat_3rd.hpp | 0 .../msgpack/preprocessor/repeat_from_to.hpp | 0 .../preprocessor/repeat_from_to_2nd.hpp | 0 .../preprocessor/repeat_from_to_3rd.hpp | 0 .../msgpack/preprocessor/repetition.hpp | 0 .../preprocessor/repetition/deduce_r.hpp | 0 .../preprocessor/repetition/deduce_z.hpp | 0 .../repetition/detail/dmc/for.hpp | 0 .../repetition/detail/edg/for.hpp | 0 .../preprocessor/repetition/detail/for.hpp | 0 .../repetition/detail/msvc/for.hpp | 0 .../msgpack/preprocessor/repetition/enum.hpp | 0 .../repetition/enum_binary_params.hpp | 0 .../preprocessor/repetition/enum_params.hpp | 0 .../repetition/enum_params_with_a_default.hpp | 0 .../repetition/enum_params_with_defaults.hpp | 0 .../preprocessor/repetition/enum_shifted.hpp | 0 .../repetition/enum_shifted_binary_params.hpp | 0 .../repetition/enum_shifted_params.hpp | 0 .../preprocessor/repetition/enum_trailing.hpp | 0 .../enum_trailing_binary_params.hpp | 0 .../repetition/enum_trailing_params.hpp | 0 .../msgpack/preprocessor/repetition/for.hpp | 0 .../preprocessor/repetition/repeat.hpp | 0 .../repetition/repeat_from_to.hpp | 0 .../msgpack/preprocessor/selection.hpp | 0 .../msgpack/preprocessor/selection/max.hpp | 0 .../msgpack/preprocessor/selection/min.hpp | 0 .../include/msgpack/preprocessor/seq.hpp | 0 .../include/msgpack/preprocessor/seq/cat.hpp | 0 .../seq/detail/binary_transform.hpp | 0 .../preprocessor/seq/detail/is_empty.hpp | 0 .../msgpack/preprocessor/seq/detail/split.hpp | 0 .../preprocessor/seq/detail/to_list_msvc.hpp | 0 .../include/msgpack/preprocessor/seq/elem.hpp | 0 .../include/msgpack/preprocessor/seq/enum.hpp | 0 .../msgpack/preprocessor/seq/filter.hpp | 0 .../msgpack/preprocessor/seq/first_n.hpp | 0 .../msgpack/preprocessor/seq/fold_left.hpp | 0 .../msgpack/preprocessor/seq/fold_right.hpp | 0 .../msgpack/preprocessor/seq/for_each.hpp | 0 .../msgpack/preprocessor/seq/for_each_i.hpp | 0 .../preprocessor/seq/for_each_product.hpp | 0 .../msgpack/preprocessor/seq/insert.hpp | 0 .../msgpack/preprocessor/seq/pop_back.hpp | 0 .../msgpack/preprocessor/seq/pop_front.hpp | 0 .../msgpack/preprocessor/seq/push_back.hpp | 0 .../msgpack/preprocessor/seq/push_front.hpp | 0 .../msgpack/preprocessor/seq/remove.hpp | 0 .../msgpack/preprocessor/seq/replace.hpp | 0 .../msgpack/preprocessor/seq/rest_n.hpp | 0 .../msgpack/preprocessor/seq/reverse.hpp | 0 .../include/msgpack/preprocessor/seq/seq.hpp | 0 .../include/msgpack/preprocessor/seq/size.hpp | 0 .../msgpack/preprocessor/seq/subseq.hpp | 0 .../msgpack/preprocessor/seq/to_array.hpp | 0 .../msgpack/preprocessor/seq/to_list.hpp | 0 .../msgpack/preprocessor/seq/to_tuple.hpp | 0 .../msgpack/preprocessor/seq/transform.hpp | 0 .../preprocessor/seq/variadic_seq_to_seq.hpp | 0 .../include/msgpack/preprocessor/slot.hpp | 0 .../msgpack/preprocessor/slot/counter.hpp | 0 .../preprocessor/slot/detail/counter.hpp | 0 .../msgpack/preprocessor/slot/detail/def.hpp | 0 .../preprocessor/slot/detail/shared.hpp | 0 .../preprocessor/slot/detail/slot1.hpp | 0 .../preprocessor/slot/detail/slot2.hpp | 0 .../preprocessor/slot/detail/slot3.hpp | 0 .../preprocessor/slot/detail/slot4.hpp | 0 .../preprocessor/slot/detail/slot5.hpp | 0 .../msgpack/preprocessor/slot/slot.hpp | 0 .../msgpack/preprocessor/stringize.hpp | 0 .../include/msgpack/preprocessor/tuple.hpp | 0 .../tuple/detail/is_single_return.hpp | 0 .../msgpack/preprocessor/tuple/eat.hpp | 0 .../msgpack/preprocessor/tuple/elem.hpp | 0 .../msgpack/preprocessor/tuple/enum.hpp | 0 .../msgpack/preprocessor/tuple/insert.hpp | 0 .../msgpack/preprocessor/tuple/pop_back.hpp | 0 .../msgpack/preprocessor/tuple/pop_front.hpp | 0 .../msgpack/preprocessor/tuple/push_back.hpp | 0 .../msgpack/preprocessor/tuple/push_front.hpp | 0 .../msgpack/preprocessor/tuple/rem.hpp | 0 .../msgpack/preprocessor/tuple/remove.hpp | 0 .../msgpack/preprocessor/tuple/replace.hpp | 0 .../msgpack/preprocessor/tuple/reverse.hpp | 0 .../msgpack/preprocessor/tuple/size.hpp | 0 .../msgpack/preprocessor/tuple/to_array.hpp | 0 .../msgpack/preprocessor/tuple/to_list.hpp | 0 .../msgpack/preprocessor/tuple/to_seq.hpp | 0 .../include/msgpack/preprocessor/variadic.hpp | 0 .../variadic/detail/is_single_return.hpp | 0 .../msgpack/preprocessor/variadic/elem.hpp | 0 .../msgpack/preprocessor/variadic/size.hpp | 0 .../preprocessor/variadic/to_array.hpp | 0 .../msgpack/preprocessor/variadic/to_list.hpp | 0 .../msgpack/preprocessor/variadic/to_seq.hpp | 0 .../preprocessor/variadic/to_tuple.hpp | 0 .../include/msgpack/preprocessor/while.hpp | 0 .../msgpack/preprocessor/wstringize.hpp | 0 .../src/msgpack-c/include/msgpack/sbuffer.hpp | 0 .../include/msgpack/sbuffer_decl.hpp | 0 .../src/msgpack-c/include/msgpack/sysdep.hpp | 0 .../src/msgpack-c/include/msgpack/type.hpp | 0 .../src/msgpack-c/include/msgpack/unpack.hpp | 0 .../msgpack-c/include/msgpack/unpack_decl.hpp | 0 .../include/msgpack/unpack_define.hpp | 0 .../include/msgpack/unpack_exception.hpp | 0 .../msgpack/v1/adaptor/adaptor_base.hpp | 0 .../msgpack/v1/adaptor/adaptor_base_decl.hpp | 0 .../include/msgpack/v1/adaptor/array_ref.hpp | 0 .../msgpack/v1/adaptor/array_ref_decl.hpp | 0 .../include/msgpack/v1/adaptor/bool.hpp | 0 .../msgpack/v1/adaptor/boost/fusion.hpp | 0 .../v1/adaptor/boost/msgpack_variant.hpp | 0 .../v1/adaptor/boost/msgpack_variant_decl.hpp | 0 .../msgpack/v1/adaptor/boost/optional.hpp | 0 .../msgpack/v1/adaptor/boost/string_ref.hpp | 0 .../msgpack/v1/adaptor/boost/string_view.hpp | 0 .../include/msgpack/v1/adaptor/carray.hpp | 0 .../include/msgpack/v1/adaptor/char_ptr.hpp | 0 .../v1/adaptor/check_container_size.hpp | 0 .../v1/adaptor/check_container_size_decl.hpp | 0 .../include/msgpack/v1/adaptor/complex.hpp | 0 .../msgpack/v1/adaptor/cpp11/array.hpp | 0 .../msgpack/v1/adaptor/cpp11/array_char.hpp | 0 .../v1/adaptor/cpp11/array_unsigned_char.hpp | 0 .../msgpack/v1/adaptor/cpp11/chrono.hpp | 0 .../msgpack/v1/adaptor/cpp11/forward_list.hpp | 0 .../v1/adaptor/cpp11/reference_wrapper.hpp | 0 .../msgpack/v1/adaptor/cpp11/shared_ptr.hpp | 0 .../msgpack/v1/adaptor/cpp11/timespec.hpp | 0 .../msgpack/v1/adaptor/cpp11/tuple.hpp | 0 .../msgpack/v1/adaptor/cpp11/unique_ptr.hpp | 0 .../v1/adaptor/cpp11/unordered_map.hpp | 0 .../v1/adaptor/cpp11/unordered_set.hpp | 0 .../msgpack/v1/adaptor/cpp17/array_byte.hpp | 0 .../include/msgpack/v1/adaptor/cpp17/byte.hpp | 0 .../msgpack/v1/adaptor/cpp17/carray_byte.hpp | 0 .../msgpack/v1/adaptor/cpp17/optional.hpp | 0 .../msgpack/v1/adaptor/cpp17/string_view.hpp | 0 .../msgpack/v1/adaptor/cpp17/vector_byte.hpp | 0 .../include/msgpack/v1/adaptor/cpp20/span.hpp | 0 .../include/msgpack/v1/adaptor/define.hpp | 0 .../msgpack/v1/adaptor/define_decl.hpp | 0 .../include/msgpack/v1/adaptor/deque.hpp | 0 .../v1/adaptor/detail/cpp03_define_array.hpp | 0 .../detail/cpp03_define_array_decl.hpp | 0 .../v1/adaptor/detail/cpp03_define_map.hpp | 0 .../adaptor/detail/cpp03_define_map_decl.hpp | 0 .../v1/adaptor/detail/cpp03_msgpack_tuple.hpp | 0 .../detail/cpp03_msgpack_tuple_decl.hpp | 0 .../adaptor/detail/cpp11_convert_helper.hpp | 0 .../v1/adaptor/detail/cpp11_define_array.hpp | 0 .../detail/cpp11_define_array_decl.hpp | 0 .../v1/adaptor/detail/cpp11_define_map.hpp | 0 .../adaptor/detail/cpp11_define_map_decl.hpp | 0 .../v1/adaptor/detail/cpp11_msgpack_tuple.hpp | 0 .../detail/cpp11_msgpack_tuple_decl.hpp | 0 .../include/msgpack/v1/adaptor/ext.hpp | 0 .../include/msgpack/v1/adaptor/ext_decl.hpp | 0 .../include/msgpack/v1/adaptor/fixint.hpp | 0 .../msgpack/v1/adaptor/fixint_decl.hpp | 0 .../include/msgpack/v1/adaptor/float.hpp | 0 .../include/msgpack/v1/adaptor/int.hpp | 0 .../include/msgpack/v1/adaptor/int_decl.hpp | 0 .../include/msgpack/v1/adaptor/list.hpp | 0 .../include/msgpack/v1/adaptor/map.hpp | 0 .../include/msgpack/v1/adaptor/map_decl.hpp | 0 .../msgpack/v1/adaptor/msgpack_tuple.hpp | 0 .../msgpack/v1/adaptor/msgpack_tuple_decl.hpp | 0 .../include/msgpack/v1/adaptor/nil.hpp | 0 .../include/msgpack/v1/adaptor/nil_decl.hpp | 0 .../include/msgpack/v1/adaptor/pair.hpp | 0 .../include/msgpack/v1/adaptor/raw.hpp | 0 .../include/msgpack/v1/adaptor/raw_decl.hpp | 0 .../include/msgpack/v1/adaptor/set.hpp | 0 .../msgpack/v1/adaptor/size_equal_only.hpp | 0 .../v1/adaptor/size_equal_only_decl.hpp | 0 .../include/msgpack/v1/adaptor/string.hpp | 0 .../msgpack/v1/adaptor/tr1/unordered_map.hpp | 0 .../msgpack/v1/adaptor/tr1/unordered_set.hpp | 0 .../include/msgpack/v1/adaptor/v4raw.hpp | 0 .../include/msgpack/v1/adaptor/v4raw_decl.hpp | 0 .../include/msgpack/v1/adaptor/vector.hpp | 0 .../msgpack/v1/adaptor/vector_bool.hpp | 0 .../msgpack/v1/adaptor/vector_char.hpp | 0 .../v1/adaptor/vector_unsigned_char.hpp | 0 .../include/msgpack/v1/adaptor/wstring.hpp | 0 .../include/msgpack/v1/cpp_config.hpp | 0 .../include/msgpack/v1/cpp_config_decl.hpp | 0 .../include/msgpack/v1/detail/cpp03_zone.hpp | 0 .../msgpack/v1/detail/cpp03_zone_decl.hpp | 0 .../include/msgpack/v1/detail/cpp11_zone.hpp | 0 .../msgpack/v1/detail/cpp11_zone_decl.hpp | 0 .../msgpack-c/include/msgpack/v1/fbuffer.hpp | 0 .../include/msgpack/v1/fbuffer_decl.hpp | 0 .../msgpack-c/include/msgpack/v1/iterator.hpp | 0 .../include/msgpack/v1/iterator_decl.hpp | 0 .../src/msgpack-c/include/msgpack/v1/meta.hpp | 0 .../include/msgpack/v1/meta_decl.hpp | 0 .../msgpack-c/include/msgpack/v1/object.hpp | 0 .../include/msgpack/v1/object_decl.hpp | 0 .../include/msgpack/v1/object_fwd.hpp | 0 .../include/msgpack/v1/object_fwd_decl.hpp | 0 .../src/msgpack-c/include/msgpack/v1/pack.hpp | 0 .../include/msgpack/v1/pack_decl.hpp | 0 .../include/msgpack/v1/parse_return.hpp | 0 .../msgpack-c/include/msgpack/v1/sbuffer.hpp | 0 .../include/msgpack/v1/sbuffer_decl.hpp | 0 .../msgpack-c/include/msgpack/v1/unpack.hpp | 0 .../include/msgpack/v1/unpack_decl.hpp | 0 .../include/msgpack/v1/unpack_exception.hpp | 0 .../msgpack-c/include/msgpack/v1/version.hpp | 0 .../include/msgpack/v1/versioning.hpp | 0 .../include/msgpack/v1/vrefbuffer.hpp | 0 .../include/msgpack/v1/vrefbuffer_decl.hpp | 0 .../msgpack-c/include/msgpack/v1/zbuffer.hpp | 0 .../include/msgpack/v1/zbuffer_decl.hpp | 0 .../src/msgpack-c/include/msgpack/v1/zone.hpp | 0 .../include/msgpack/v1/zone_decl.hpp | 0 .../msgpack/v2/adaptor/adaptor_base.hpp | 0 .../msgpack/v2/adaptor/adaptor_base_decl.hpp | 0 .../msgpack/v2/adaptor/array_ref_decl.hpp | 0 .../v2/adaptor/boost/msgpack_variant_decl.hpp | 0 .../v2/adaptor/check_container_size_decl.hpp | 0 .../msgpack/v2/adaptor/define_decl.hpp | 0 .../detail/cpp03_define_array_decl.hpp | 0 .../adaptor/detail/cpp03_define_map_decl.hpp | 0 .../detail/cpp03_msgpack_tuple_decl.hpp | 0 .../detail/cpp11_define_array_decl.hpp | 0 .../adaptor/detail/cpp11_define_map_decl.hpp | 0 .../detail/cpp11_msgpack_tuple_decl.hpp | 0 .../include/msgpack/v2/adaptor/ext_decl.hpp | 0 .../msgpack/v2/adaptor/fixint_decl.hpp | 0 .../include/msgpack/v2/adaptor/int_decl.hpp | 0 .../include/msgpack/v2/adaptor/map_decl.hpp | 0 .../msgpack/v2/adaptor/msgpack_tuple_decl.hpp | 0 .../include/msgpack/v2/adaptor/nil_decl.hpp | 0 .../include/msgpack/v2/adaptor/raw_decl.hpp | 0 .../v2/adaptor/size_equal_only_decl.hpp | 0 .../include/msgpack/v2/adaptor/v4raw_decl.hpp | 0 .../include/msgpack/v2/cpp_config_decl.hpp | 0 .../msgpack/v2/create_object_visitor.hpp | 0 .../msgpack/v2/create_object_visitor_decl.hpp | 0 .../msgpack/v2/detail/cpp03_zone_decl.hpp | 0 .../msgpack/v2/detail/cpp11_zone_decl.hpp | 0 .../include/msgpack/v2/fbuffer_decl.hpp | 0 .../include/msgpack/v2/iterator_decl.hpp | 0 .../include/msgpack/v2/meta_decl.hpp | 0 .../include/msgpack/v2/null_visitor.hpp | 0 .../include/msgpack/v2/null_visitor_decl.hpp | 0 .../msgpack-c/include/msgpack/v2/object.hpp | 0 .../include/msgpack/v2/object_decl.hpp | 0 .../include/msgpack/v2/object_fwd.hpp | 0 .../include/msgpack/v2/object_fwd_decl.hpp | 0 .../include/msgpack/v2/pack_decl.hpp | 0 .../msgpack-c/include/msgpack/v2/parse.hpp | 0 .../include/msgpack/v2/parse_decl.hpp | 0 .../include/msgpack/v2/parse_return.hpp | 0 .../include/msgpack/v2/sbuffer_decl.hpp | 0 .../msgpack-c/include/msgpack/v2/unpack.hpp | 0 .../include/msgpack/v2/unpack_decl.hpp | 0 .../include/msgpack/v2/vrefbuffer_decl.hpp | 0 .../msgpack-c/include/msgpack/v2/x3_parse.hpp | 0 .../include/msgpack/v2/x3_parse_decl.hpp | 0 .../include/msgpack/v2/x3_unpack.hpp | 0 .../include/msgpack/v2/x3_unpack_decl.hpp | 0 .../include/msgpack/v2/zbuffer_decl.hpp | 0 .../include/msgpack/v2/zone_decl.hpp | 0 .../msgpack/v3/adaptor/adaptor_base.hpp | 0 .../msgpack/v3/adaptor/adaptor_base_decl.hpp | 0 .../msgpack/v3/adaptor/array_ref_decl.hpp | 0 .../v3/adaptor/boost/msgpack_variant_decl.hpp | 0 .../v3/adaptor/check_container_size_decl.hpp | 0 .../msgpack/v3/adaptor/define_decl.hpp | 0 .../detail/cpp03_define_array_decl.hpp | 0 .../adaptor/detail/cpp03_define_map_decl.hpp | 0 .../detail/cpp03_msgpack_tuple_decl.hpp | 0 .../detail/cpp11_define_array_decl.hpp | 0 .../adaptor/detail/cpp11_define_map_decl.hpp | 0 .../detail/cpp11_msgpack_tuple_decl.hpp | 0 .../include/msgpack/v3/adaptor/ext_decl.hpp | 0 .../msgpack/v3/adaptor/fixint_decl.hpp | 0 .../include/msgpack/v3/adaptor/int_decl.hpp | 0 .../include/msgpack/v3/adaptor/map_decl.hpp | 0 .../msgpack/v3/adaptor/msgpack_tuple_decl.hpp | 0 .../include/msgpack/v3/adaptor/nil_decl.hpp | 0 .../include/msgpack/v3/adaptor/raw_decl.hpp | 0 .../v3/adaptor/size_equal_only_decl.hpp | 0 .../include/msgpack/v3/adaptor/v4raw_decl.hpp | 0 .../include/msgpack/v3/cpp_config_decl.hpp | 0 .../msgpack/v3/create_object_visitor_decl.hpp | 0 .../msgpack/v3/detail/cpp03_zone_decl.hpp | 0 .../msgpack/v3/detail/cpp11_zone_decl.hpp | 0 .../include/msgpack/v3/fbuffer_decl.hpp | 0 .../include/msgpack/v3/iterator_decl.hpp | 0 .../include/msgpack/v3/meta_decl.hpp | 0 .../include/msgpack/v3/null_visitor_decl.hpp | 0 .../include/msgpack/v3/object_decl.hpp | 0 .../include/msgpack/v3/object_fwd.hpp | 0 .../include/msgpack/v3/object_fwd_decl.hpp | 0 .../include/msgpack/v3/pack_decl.hpp | 0 .../msgpack-c/include/msgpack/v3/parse.hpp | 0 .../include/msgpack/v3/parse_decl.hpp | 0 .../include/msgpack/v3/parse_return.hpp | 0 .../include/msgpack/v3/sbuffer_decl.hpp | 0 .../msgpack-c/include/msgpack/v3/unpack.hpp | 0 .../include/msgpack/v3/unpack_decl.hpp | 0 .../include/msgpack/v3/vrefbuffer_decl.hpp | 0 .../include/msgpack/v3/x3_parse_decl.hpp | 0 .../include/msgpack/v3/x3_unpack.hpp | 0 .../include/msgpack/v3/x3_unpack_decl.hpp | 0 .../include/msgpack/v3/zbuffer_decl.hpp | 0 .../include/msgpack/v3/zone_decl.hpp | 0 .../src/msgpack-c/include/msgpack/version.hpp | 0 .../include/msgpack/version_master.hpp | 0 .../msgpack-c/include/msgpack/versioning.hpp | 0 .../msgpack-c/include/msgpack/vrefbuffer.hpp | 0 .../include/msgpack/vrefbuffer_decl.hpp | 0 .../msgpack-c/include/msgpack/x3_parse.hpp | 0 .../include/msgpack/x3_parse_decl.hpp | 0 .../msgpack-c/include/msgpack/x3_unpack.hpp | 0 .../include/msgpack/x3_unpack_decl.hpp | 0 .../src/msgpack-c/include/msgpack/zbuffer.hpp | 0 .../include/msgpack/zbuffer_decl.hpp | 0 .../src/msgpack-c/include/msgpack/zone.hpp | 0 .../msgpack-c/include/msgpack/zone_decl.hpp | 0 .../cpp/src/msgpack-c/make_file_list.sh | 0 .../cpp/src/msgpack-c/makedist.sh | 0 .../src/msgpack-c/msgpack-cxx-config.cmake.in | 0 .../cpp/src/msgpack-c/preprocess | 0 .../src/msgpack-c/test-install/CMakeLists.txt | 0 .../cpp/src/msgpack-c/test-install/simple.cpp | 0 .../cpp/src/msgpack-c/test/CMakeLists.txt | 0 .../cpp/src/msgpack-c/test/array_ref.cpp | 0 .../cpp/src/msgpack-c/test/boost_fusion.cpp | 0 .../cpp/src/msgpack-c/test/boost_optional.cpp | 0 .../src/msgpack-c/test/boost_string_ref.cpp | 0 .../src/msgpack-c/test/boost_string_view.cpp | 0 .../cpp/src/msgpack-c/test/boost_variant.cpp | 0 .../cpp/src/msgpack-c/test/buffer.cpp | 0 .../cpp/src/msgpack-c/test/buffer_c.cpp | 0 .../cpp/src/msgpack-c/test/carray.cpp | 0 .../cpp/src/msgpack-c/test/cases.cpp | 0 .../cpp/src/msgpack-c/test/cases.mpac | Bin .../cpp/src/msgpack-c/test/cases_compact.mpac | Bin .../cpp/src/msgpack-c/test/convert.cpp | 0 .../cpp/src/msgpack-c/test/fixint.cpp | 0 .../test/fuzz_unpack_pack_fuzzer_cpp11.cpp | 0 .../src/msgpack-c/test/inc_adaptor_define.cpp | 0 .../cpp/src/msgpack-c/test/iterator_cpp11.cpp | 0 .../cpp/src/msgpack-c/test/json.cpp | 0 .../cpp/src/msgpack-c/test/limit.cpp | 0 .../cpp/src/msgpack-c/test/msgpack_basic.cpp | 0 .../src/msgpack-c/test/msgpack_container.cpp | 0 .../cpp/src/msgpack-c/test/msgpack_cpp11.cpp | 0 .../cpp/src/msgpack-c/test/msgpack_cpp17.cpp | 0 .../cpp/src/msgpack-c/test/msgpack_cpp20.cpp | 0 .../cpp/src/msgpack-c/test/msgpack_stream.cpp | 0 .../cpp/src/msgpack-c/test/msgpack_tuple.cpp | 0 .../cpp/src/msgpack-c/test/msgpack_vref.cpp | 0 .../src/msgpack-c/test/msgpack_x3_parse.cpp | 0 .../cpp/src/msgpack-c/test/multi_file1.cpp | 0 .../cpp/src/msgpack-c/test/multi_file2.cpp | 0 .../cpp/src/msgpack-c/test/object.cpp | 0 .../src/msgpack-c/test/object_with_zone.cpp | 0 .../cpp/src/msgpack-c/test/pack_unpack.cpp | 0 .../cpp/src/msgpack-c/test/raw.cpp | 0 .../cpp/src/msgpack-c/test/reference.cpp | 0 .../src/msgpack-c/test/reference_cpp11.cpp | 0 .../test/reference_wrapper_cpp11.cpp | 0 .../src/msgpack-c/test/shared_ptr_cpp11.cpp | 0 .../src/msgpack-c/test/size_equal_only.cpp | 0 .../cpp/src/msgpack-c/test/streaming.cpp | 0 .../cpp/src/msgpack-c/test/test_allocator.hpp | 0 .../src/msgpack-c/test/unique_ptr_cpp11.cpp | 0 .../cpp/src/msgpack-c/test/user_class.cpp | 0 .../cpp/src/msgpack-c/test/version.cpp | 0 .../cpp/src/msgpack-c/test/visitor.cpp | 0 .../cpp/src/msgpack-c/test/zone.cpp | 0 .../cpp/src/msgpack-c/update_version.sh | 0 .../cpp/srs_db/download_ignition.sh | 0 .../cpp/srs_db/grumpkin/monomial/README.md | 0 .../cpp/srs_db/ignition/monomial/checksums | 0 .../cpp/srs_db/ignition/monomial/g2.dat | 0 .../exports.json | 0 .../barretenberg => barretenberg}/flake.lock | 0 .../barretenberg => barretenberg}/flake.nix | 0 .../scripts/bindgen.sh | 0 .../scripts/c_bind_files.txt | 0 .../scripts/decls_json.py | 0 .../sol/.gitignore | 0 .../sol/Dockerfile | 0 .../sol/README.md | 0 .../sol/bootstrap.sh | 0 .../sol/figures/verifier.png | Bin .../sol/foundry.toml | 0 .../sol/lib/forge-std | 0 .../sol/lib/openzeppelin-contracts | 0 .../sol/lib/solidity-stringutils | 0 .../sol/remappings.txt | 0 .../sol/scripts/init.sh | 0 .../sol/scripts/install_foundry.sh | 0 .../sol/scripts/run_fuzzer.sh | 0 .../sol/src/interfaces/IVerifier.sol | 0 .../sol/src/ultra/BaseUltraVerifier.sol | 0 .../src/ultra/instance/Add2UltraVerifier.sol | 0 .../src/ultra/instance/BlakeUltraVerifier.sol | 0 .../ultra/instance/RecursiveUltraVerifier.sol | 0 .../ultra/keys/Add2UltraVerificationKey.sol | 0 .../ultra/keys/BlakeUltraVerificationKey.sol | 0 .../keys/RecursiveUltraVerificationKey.sol | 0 .../sol/test/base/DifferentialFuzzer.sol | 0 .../sol/test/base/TestBase.sol | 0 .../sol/test/ultra/Add2.t.sol | 0 .../sol/test/ultra/Blake.t.sol | 0 .../sol/test/ultra/Recursive.t.sol | 0 .../sol/test/ultra/TestBaseUltra.sol | 0 .../ts/.dockerignore | 0 .../ts/.eslintrc.cjs | 0 .../ts/.gitignore | 0 .../ts/.prettierrc.json | 0 .../ts/.yarn/releases/yarn-berry.cjs | 0 .../ts/.yarnrc.yml | 0 barretenberg/ts/CHANGELOG.md | 204 ++- .../ts/Dockerfile | 0 .../ts/README.md | 0 .../ts/bb.js-dev | 0 .../ts/cjs-entry/index.cjs | 0 .../ts/cjs-entry/index.d.ts | 0 .../ts/package.json | 2 +- .../ts/scripts/run_tests | 0 .../ts/src/async_map/index.ts | 0 .../ts/src/barretenberg-threads.wasm | 0 .../ts/src/barretenberg.wasm | 0 .../ts/src/barretenberg/index.ts | 0 .../ts/src/barretenberg_api/blake2s.test.ts | 0 .../ts/src/barretenberg_api/common.test.ts | 0 .../ts/src/barretenberg_api/index.ts | 0 .../ts/src/barretenberg_api/pedersen.test.ts | 0 .../ts/src/barretenberg_api/schnorr.test.ts | 0 .../src/barretenberg_binder/heap_allocator.ts | 0 .../ts/src/barretenberg_binder/index.ts | 0 .../barretenberg_wasm_base/index.ts | 0 .../factory/browser/index.ts | 0 .../factory/browser/main.worker.ts | 0 .../factory/node/index.ts | 0 .../factory/node/main.worker.ts | 0 .../barretenberg_wasm_main/index.ts | 0 .../factory/browser/index.ts | 0 .../factory/browser/thread.worker.ts | 0 .../factory/node/index.ts | 0 .../factory/node/thread.worker.ts | 0 .../barretenberg_wasm_thread/index.ts | 0 .../fetch_code/browser/index.ts | 0 .../fetch_code/browser/wasm-module.d.ts | 0 .../src/barretenberg_wasm/fetch_code/index.ts | 0 .../fetch_code/node/index.ts | 0 .../helpers/browser/index.ts | 0 .../ts/src/barretenberg_wasm/helpers/index.ts | 0 .../barretenberg_wasm/helpers/node/index.ts | 0 .../helpers/node/node_endpoint.ts | 0 .../ts/src/barretenberg_wasm/index.test.ts | 0 .../ts/src/barretenberg_wasm/index.ts | 0 .../ts/src/bigint-array/index.ts | 0 .../ts/src/bindgen/function_declaration.ts | 0 .../ts/src/bindgen/index.ts | 0 .../ts/src/bindgen/mappings.ts | 0 .../ts/src/bindgen/rust.ts | 0 .../ts/src/bindgen/to_camel_case.ts | 0 .../ts/src/bindgen/typescript.ts | 0 .../ts/src/crs/browser/cached_net_crs.ts | 0 .../ts/src/crs/browser/index.ts | 0 .../ts/src/crs/index.ts | 0 .../ts/src/crs/net_crs.ts | 0 .../ts/src/crs/node/ignition_files_crs.ts | 0 .../ts/src/crs/node/index.ts | 0 .../ts/src/examples/simple.rawtest.ts | 0 .../ts/src/examples/simple.test.ts | 0 .../ts/src/index.html | 0 .../ts/src/index.ts | 0 .../ts/src/info.json | 0 .../ts/src/main.ts | 0 .../ts/src/random/browser/index.ts | 0 .../ts/src/random/index.ts | 0 .../ts/src/random/node/index.ts | 0 .../ts/src/serialize/buffer_reader.ts | 0 .../ts/src/serialize/index.ts | 0 .../ts/src/serialize/output_type.ts | 0 .../ts/src/serialize/serialize.ts | 0 .../ts/src/types/fields.ts | 0 .../ts/src/types/fixed_size_buffer.ts | 0 .../ts/src/types/index.ts | 0 .../ts/src/types/point.ts | 0 .../ts/src/types/ptr.ts | 0 .../ts/src/types/raw_buffer.ts | 0 .../ts/tsconfig.browser.json | 0 .../ts/tsconfig.json | 0 .../ts/webpack.config.js | 0 .../ts/yarn.lock | 0 .../wasi-sdk.nix | 0 bootstrap.sh | 49 +- bootstrap_docker.sh | 2 +- build-system/scripts/build | 11 +- build-system/scripts/build_local | 24 +- build-system/scripts/check_rebuild | 4 +- build-system/scripts/cond_run_script | 23 + build-system/scripts/cond_spot_run_build | 17 +- build-system/scripts/cond_spot_run_script | 41 +- build-system/scripts/cond_spot_run_test | 15 + .../scripts/cond_spot_run_test_script | 13 - build-system/scripts/cond_spot_run_tests | 4 - build-system/scripts/query_manifest | 79 +- build-system/scripts/remote_run_script | 29 +- .../remote_build => scripts/remote_runner} | 8 +- build-system/scripts/spot_run_script | 13 +- build-system/scripts/spot_run_test_script | 16 - build-system/scripts/spot_run_tests | 4 - build_manifest.json | 235 +-- build_manifest.sh | 19 +- circuits/cpp/.rebuild_patterns | 3 + circuits/cpp/CMakeLists.txt | 4 - circuits/cpp/CMakePresets.json | 23 +- circuits/cpp/barretenberg/CHANGELOG.md | 473 ------ .../barretenberg/cpp/bin-test/target/acir.gz | Bin 1313 -> 0 bytes .../cpp/bin-test/target/witness.gz | Bin 8388 -> 0 bytes .../dockerfiles/Dockerfile.x86_64-linux-clang | 22 - .../cpp/scripts/run_aztec_circuits_tests | 54 - .../fixed_base_scalar_mul.test.cpp | 134 -- circuits/cpp/barretenberg/ts/CHANGELOG.md | 213 --- .../barretenberg/ts/bin-test/target/acir.gz | Bin 1313 -> 0 bytes .../ts/bin-test/target/witness.gz | Bin 8388 -> 0 bytes circuits/cpp/bootstrap.sh | 16 - circuits/cpp/cmake/barretenberg.cmake | 72 - .../dockerfiles/Dockerfile.wasm-linux-clang | 14 +- .../Dockerfile.wasm-linux-clang-assert | 10 +- .../dockerfiles/Dockerfile.x86_64-linux-clang | 9 +- .../Dockerfile.x86_64-linux-clang-assert | 9 +- .../Dockerfile.x86_64-linux-clang-tidy | 6 +- .../dockerfiles/Dockerfile.x86_64-linux-gcc | 18 - circuits/cpp/format.sh | 2 +- .../cpp/scripts/build_run_tests_docker_local | 4 +- circuits/cpp/scripts/run_tests | 3 +- circuits/cpp/src/CMakeLists.txt | 3 +- circuits/cpp/src/aztec3/CMakeLists.txt | 8 +- docs/.dockerignore | 2 +- .../roadmap/features_initial_ldt.md | 14 +- .../circuits/kernels/private_kernel.md | 4 +- docs/docs/concepts/advanced/circuits/main.md | 2 +- .../advanced/data_structures/trees.md | 6 +- .../docs/concepts/foundation/accounts/keys.md | 4 +- docs/docs/concepts/foundation/state_model.md | 6 +- docs/docs/dev_docs/contracts/common_errors.md | 2 +- docs/docs/dev_docs/contracts/compiling.md | 16 +- docs/docs/dev_docs/contracts/contract.md | 2 +- docs/docs/dev_docs/contracts/layout.md | 2 +- docs/docs/dev_docs/contracts/main.md | 11 +- docs/docs/dev_docs/contracts/types.md | 2 +- docs/docs/dev_docs/contracts/workflow.md | 2 +- docs/docs/dev_docs/dapps/main.md | 2 +- docs/docs/dev_docs/getting_started/sandbox.md | 2 +- docs/docs/dev_docs/sandbox/common_errors.md | 14 +- docs/docs/dev_docs/sandbox/components.md | 14 +- docs/docs/dev_docs/sandbox/main.md | 2 +- docs/docs/dev_docs/testing/cheat_codes.md | 4 +- docs/docs/dev_docs/testing/main.md | 4 +- docs/docs/dev_docs/wallets/architecture.md | 2 +- .../wallets/writing_an_account_contract.md | 4 +- l1-contracts/GUIDE_LINES.md | 2 +- l1-contracts/src/core/libraries/Decoder.sol | 2 +- release-please-config.json | 4 +- scripts/migrate_barretenberg_branch.sh | 4 +- scripts/update.sh | 17 - yarn-project/acir-simulator/package.json | 2 +- yarn-project/acir-simulator/src/acvm/acvm.ts | 4 +- .../acir-simulator/src/acvm/deserialize.ts | 2 +- .../acir-simulator/src/acvm/serialize.ts | 23 +- .../src/client/client_execution_context.ts | 67 +- .../acir-simulator/src/client/db_oracle.ts | 18 +- .../acir-simulator/src/client/debug.ts | 4 +- .../src/client/execution_note_cache.ts | 68 +- .../src/client/private_execution.test.ts | 38 +- .../src/client/private_execution.ts | 12 +- .../acir-simulator/src/client/simulator.ts | 2 +- .../src/client/unconstrained_execution.ts | 3 +- yarn-project/acir-simulator/src/public/db.ts | 11 +- .../acir-simulator/src/public/executor.ts | 23 +- yarn-project/acir-simulator/src/utils.ts | 2 +- .../src/contract_data_oracle/index.ts | 2 +- .../aztec-rpc/src/simulator_oracle/index.ts | 32 +- yarn-project/aztec-sandbox/Dockerfile | 2 +- .../examples/uniswap_trade_on_l1_from_l2.ts | 4 +- ...schnorr_auth_witness_account_contract.json | 543 ++++++- .../auth_witness_account_entrypoint.ts | 50 +- .../aztec.js/src/aztec_rpc_client/wallet.ts | 25 +- .../contract_deployer/contract_deployer.ts | 2 +- .../aztec.js/src/utils/cheat_codes.ts | 4 +- yarn-project/bootstrap.sh | 4 +- .../src/uniswap_trade_on_l1_from_l2.test.ts | 4 +- yarn-project/circuits.js/src/crs/index.ts | 2 +- .../src/structs/aggregation_object.ts | 2 +- .../src/structs/verification_key.test.ts | 2 +- yarn-project/cli/README.md | 6 +- yarn-project/cli/src/index.ts | 10 +- ...{cond_run_script => cond_run_script.delme} | 0 .../end-to-end/src/cli_docs_sandbox.test.ts | 1 + .../src/e2e_account_contracts.test.ts | 2 +- .../src/e2e_lending_contract.test.ts | 23 +- .../e2e_pending_commitments_contract.test.ts | 10 +- .../end-to-end/src/e2e_token_contract.test.ts | 1391 +++++++++++++++++ .../src/fixtures/cross_chain_test_harness.ts | 4 +- yarn-project/foundation/src/abi/abi.ts | 2 +- yarn-project/foundation/src/abi/decoder.ts | 2 +- yarn-project/noir-compiler/README.md | 4 +- yarn-project/noir-compiler/package.json | 2 +- .../src/__snapshots__/index.test.ts.snap | 214 ++- .../noir-compiler/src/cli/contract.ts | 10 +- .../noir-compiler/src/compile/nargo.ts | 6 +- .../src/contract-interface-gen/abi.ts | 2 +- .../src/contract-interface-gen/noir.ts | 6 +- yarn-project/noir-compiler/src/index.test.ts | 2 +- yarn-project/noir-compiler/src/index.ts | 2 +- .../noir-compiler/src/noir_artifact.ts | 10 +- yarn-project/noir-contracts/Dockerfile.build | 2 +- yarn-project/noir-contracts/Nargo.toml | 1 + yarn-project/noir-contracts/README.md | 2 +- yarn-project/noir-contracts/bootstrap.sh | 1 - .../noir-contracts/scripts/compile.sh | 2 +- .../docs_example_contract/src/actions.nr | 5 +- .../native_token_contract/src/main.nr | 4 +- .../non_native_token_contract/src/main.nr | 4 +- .../src/interface.nr | 8 +- .../src/main.nr | 7 +- .../src/main.nr | 98 +- .../src/contracts/test_contract/src/main.nr | 2 +- .../src/contracts/token_contract/Nargo.toml | 10 + .../token_contract/src/account_interface.nr | 52 + .../src/contracts/token_contract/src/main.nr | 419 +++++ .../src/contracts/token_contract/src/types.nr | 176 +++ .../src/contracts/token_contract/src/util.nr | 8 + .../noir-contracts/src/scripts/copy_output.ts | 4 +- .../noir-libs/aztec-noir/src/messaging.nr | 1 - .../messaging/get_commitment_getter_data.nr | 15 - .../aztec-noir/src/note/lifecycle.nr | 3 +- .../aztec-noir/src/note/note_getter.nr | 74 +- .../noir-libs/aztec-noir/src/oracle.nr | 1 - .../aztec-noir/src/oracle/get_commitment.nr | 11 - .../noir-libs/aztec-noir/src/oracle/notes.nr | 17 +- .../aztec-noir/src/state_vars/set.nr | 80 +- .../aztec-noir/src/state_vars/singleton.nr | 4 +- .../noir-libs/safe-math/src/safe_u120.nr | 15 +- yarn-project/package.json | 2 +- yarn-project/scripts/get_dependencies.sh | 7 + .../block_builder/solo_block_builder.test.ts | 2 +- .../src/publisher/viem-tx-sender.ts | 5 +- .../src/sequencer/sequencer.ts | 19 +- .../src/simulator/public_executor.ts | 18 +- yarn-project/types/src/constants.ts | 1 + yarn-project/types/src/contract_database.ts | 2 +- yarn-project/yarn-project-base/Dockerfile | 15 +- yarn-project/yarn.lock | 16 +- 2066 files changed, 4662 insertions(+), 2272 deletions(-) delete mode 100644 .github/workflows/mirror_barretenberg_repo.yml delete mode 100644 .github/workflows/mirror_build_system_repo.yml delete mode 100644 .github/workflows/mirror_docs_repo.yml create mode 100644 .github/workflows/mirror_repos.yml rename {circuits/cpp/barretenberg => barretenberg}/.circleci/config.yml (100%) rename {circuits/cpp/barretenberg => barretenberg}/.dockerignore (100%) rename {circuits/cpp/barretenberg => barretenberg}/.github/pull_request_template.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/.github/workflows/benchmarks.yml (100%) rename {circuits/cpp/barretenberg => barretenberg}/.github/workflows/nix.yml (100%) rename {circuits/cpp/barretenberg => barretenberg}/.github/workflows/noir.yml (100%) rename {circuits/cpp/barretenberg => barretenberg}/.github/workflows/pull-request.yml (100%) rename {circuits/cpp/barretenberg => barretenberg}/.gitignore (100%) rename {circuits/cpp/barretenberg => barretenberg}/.gitmodules (100%) rename {circuits/cpp/barretenberg => barretenberg}/.gitrepo (75%) rename {circuits/cpp/barretenberg => barretenberg}/.vscode/c_cpp_properties.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/.vscode/settings.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/LICENSE (100%) rename {circuits/cpp/barretenberg => barretenberg}/PROJECT (100%) rename {circuits/cpp/barretenberg => barretenberg}/README.md (98%) rename {circuits/cpp/barretenberg => barretenberg}/VERSION (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/.dockerignore (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/.gitignore (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/Dockerfile.bb (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/Dockerfile.bb.js (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/README.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/browser-test-app/package.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/browser-test-app/serve.mt.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/browser-test-app/src/index.html (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/browser-test-app/src/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/browser-test-app/tsconfig.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/browser-test-app/webpack.config.js (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/browser-test-app/yarn.lock (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/flows/all_cmds.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/flows/prove_and_verify.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/headless-test/bb.js.browser (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/headless-test/package.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/headless-test/src/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/headless-test/tsconfig.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/headless-test/yarn.lock (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/run_acir_tests.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/acir_tests/run_acir_tests_browser.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/barretenberg-wasm.nix (100%) rename {circuits/cpp/barretenberg => barretenberg}/barretenberg.code-workspace (100%) rename {circuits/cpp/barretenberg => barretenberg}/barretenberg.nix (100%) rename {circuits/cpp/barretenberg => barretenberg}/bootstrap.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/bootstrap_docker.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/build-system (100%) rename {circuits/cpp/barretenberg => barretenberg}/build_manifest.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/build_manifest.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/.aztec-packages-commit (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/.clang-format (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/.clangd (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/.dockerignore (92%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/.gitignore (100%) create mode 100644 barretenberg/cpp/.rebuild_patterns rename {circuits/cpp/barretenberg => barretenberg}/cpp/CMakeLists.txt (96%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/CMakePresets.json (97%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/bootstrap.sh (72%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/arch.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/barretenberg.pc.in (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/benchmark.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/build.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/gtest.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/module.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/threading.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/toolchains/aarch64-darwin.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/toolchains/aarch64-linux.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/toolchains/i386-linux.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/toolchains/wasm32-wasi.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/toolchains/x86_64-darwin.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/cmake/toolchains/x86_64-linux.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/dockerfiles/Dockerfile.wasm-linux-clang (50%) create mode 100644 barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang rename {circuits/cpp/barretenberg => barretenberg}/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert (55%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-benchmarks (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-fuzzing (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc (73%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/docs/Fuzzing.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/format.sh (69%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/notebook.ipynb (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/scripts/bb-tests.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/scripts/collect_coverage_information.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/scripts/install-wasi-sdk.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/scripts/run_tests (85%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/scripts/stdlib-tests (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/scripts/strip-wasm.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/CMakeLists.txt (83%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/barretenberg.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/bb/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/bb/exec_pipe.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/bb/file_io.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/bb/get_bytecode.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/bb/get_crs.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/bb/get_witness.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/bb/log.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/bb/main.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/bb/readme.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/compare_branch_vs_baseline.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/decrypt_bench/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/decrypt_bench/main.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/honk_bench/benchmark_utilities.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_standard.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/honk_bench/compare_honk_to_plonk_ultra.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/honk_bench/honk.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/honk_bench/main.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/honk_bench/standard_honk.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/honk_bench/standard_plonk.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/honk_bench/ultra_plonk.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/pippenger_bench/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/pippenger_bench/main.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/plonk_bench/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/plonk_bench/plonk.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/relations_bench/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/relations_bench/barycentric.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/relations_bench/main.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/benchmark/relations_bench/relations.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/assert.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/c_bind.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/constexpr_utils.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/container.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/fuzzer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/fuzzer_constants.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/inline.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/log.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/map.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/mem.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/mem.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/moody/blockingconcurrentqueue.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/moody/concurrentqueue.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/moody/lightweightsemaphore.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/net.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/parallel_for_atomic_pool.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/parallel_for_moody.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/parallel_for_omp.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/parallel_for_queued.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/parallel_for_spawning.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/printf.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/serialize.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/slab_allocator.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/slab_allocator.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/streams.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/test.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/thread.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/thread.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/throw_or_abort.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/timer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/common/wasm_export.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/aes128/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/aes128/aes128.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/aes128/aes128.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/aes128/aes128.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/aes128/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake2s/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake2s/blake2-impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake2s/blake2s.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake2s/blake2s.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake2s/blake2s.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake2s/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake2s/c_bind.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s/blake3-impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s/blake3s.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s/blake3s.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s/blake3s.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s_full/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s_full/blake3-impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s_full/blake3s.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s_full/blake3s.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/blake3s_full/blake3s.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/ecdsa/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/ecdsa/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/ecdsa/c_bind.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/ecdsa/ecdsa.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/ecdsa/ecdsa.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/ecdsa/ecdsa_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/generators/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/generators/fixed_base_scalar_mul.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/generators/generator_data.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/generators/generator_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/generators/generator_data.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/hashers/hashers.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/hmac/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/hmac/hmac.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/hmac/hmac.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/keccak/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/keccak/hash_types.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/keccak/keccak.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/keccak/keccak.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/keccak/keccakf1600.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind_new.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/c_bind_new.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/convert_buffer_to_field.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_commitment/pedersen_lookup.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_hash/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_hash/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_hash/c_bind.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_hash/c_bind_new.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_hash/pedersen.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_hash/pedersen.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/c_bind.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/c_bind_new.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/multisig.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/multisig.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/proof_of_possession.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/proof_of_possession.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/schnorr.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/schnorr.tcc (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/schnorr/schnorr.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/sha256/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/sha256/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/sha256/sha256.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/sha256/sha256.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/crypto/sha256/sha256.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/acir_format.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/acir_to_constraint_buf.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/block_constraint.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/block_constraint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/hash_to_field.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/hash_to_field.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/pedersen.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/pedersen.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/range_constraint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/round.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/round.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/serde/binary.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/serde/bincode.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/serde/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/serde/serde.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/serde/witness_map.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_proofs/acir_composer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/dsl/types.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/bn254.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fq.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fq.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fq12.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fq12.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fq2.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fq2.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fq6.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fq6.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fr.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fr.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/fr.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/g1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/g1.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/g2.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/g2.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/pairing.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/pairing.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/bn254/pairing_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/grumpkin/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1_endo_notes.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/curves/types.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/asm_macros.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/extra_flag_solver.py (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/field.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/field12.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/field2.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/field2_declarations.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/field6.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/field_declarations.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/field_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/field_impl_generic.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/field_impl_x64.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/fields/macro_scrapbook.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/groups/affine_element.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/groups/affine_element.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/groups/affine_element_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/groups/element.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/groups/element_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/groups/group.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/groups/group_impl_asm.tcc (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/groups/group_impl_int128.tcc (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/groups/wnaf.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/groups/wnaf.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/pippenger.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/scalar_multiplication/point_table.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/scalar_multiplication/process_buckets.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/scalar_multiplication/process_buckets.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/scalar_multiplication/runtime_states.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/scalar_multiplication/runtime_states.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/ecc/serialize.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/env/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/env/data_store.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/env/data_store.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/env/hardware_concurrency.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/env/hardware_concurrency.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/env/logstr.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/env/logstr.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/examples/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/examples/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/examples/c_bind.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/examples/simple/simple.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/examples/simple/simple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/examples/simple/simple.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/grumpkin_srs_gen/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/grumpkin_srs_gen/grumpkin_srs_gen.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/composer/goblin_ultra_composer.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/composer/standard_composer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/composer/standard_composer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/composer/standard_composer.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/composer/ultra_composer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/composer/ultra_composer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/composer/ultra_composer.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/flavor/flavor.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/flavor/goblin_ultra.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/flavor/standard.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/flavor/standard_grumpkin.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/flavor/ultra.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/flavor/ultra_grumpkin.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/flavor/ultra_recursive.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/claim.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/commitment_key.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/commitment_key.test.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/gemini/gemini.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/gemini/gemini.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/gemini/gemini.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/ipa/ipa.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/ipa/ipa.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/kzg/kzg.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/kzg/kzg.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/shplonk/shplonk.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/shplonk/shplonk.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/verification_key.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/pcs/wrapper.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/composer_lib.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/grand_product_library.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/prover.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/prover.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/prover_library.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/prover_library.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/prover_library.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/ultra_prover.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/ultra_prover.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/ultra_verifier.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/ultra_verifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/verifier.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/verifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/proof_system/work_queue.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/sumcheck/partial_evaluation.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/sumcheck/relation_correctness.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/sumcheck/sumcheck.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/sumcheck/sumcheck.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/sumcheck/sumcheck_output.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/sumcheck/sumcheck_round.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/sumcheck/sumcheck_round.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/transcript/transcript.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/transcript/transcript.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/utils/grand_product_delta.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/utils/power_polynomial.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/honk/utils/power_polynomial.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/constants.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/fixtures/user_context.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/compute_circuit_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/inner_proof_data/inner_proof_data.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_circuit_data.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_circuit_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_signing_data.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/compute_signing_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/create_proof.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_circuit.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_circuit.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_js_parity.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split_tx.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/sign_join_split_tx.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/sign_join_split_tx.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/join_split/verify_signature.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/mock/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/mock/mock_circuit.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/mock/mock_circuit.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/account_note.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/commit.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/account/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/asset_id.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/asset_id.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/bridge_call_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/claim_note.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/complete_partial_commitment.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/compute_nullifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/create_partial_commitment.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/claim/witness_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/commit.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/complete_partial_commitment.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/compute_nullifier.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/create_partial_commitment.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/value_note.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/value_note.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/circuit/value/witness_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/constants.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/account_note.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/account_note.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/compute_account_alias_hash_nullifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/compute_account_public_key_nullifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/account/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/asset_id.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/asset_id.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/bridge_call_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/claim_note.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/claim_note_tx_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/complete_partial_commitment.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/compute_nullifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/create_partial_commitment.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/claim/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/complete_partial_commitment.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/compute_nullifier.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/compute_nullifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/create_partial_commitment.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/notes/native/value/value_note.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/proofs/verify.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/join_split_example/types.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/bitop/bitop.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/bitop/count_leading_zeros.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/bitop/count_leading_zeros.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/bitop/get_msb.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/bitop/get_msb.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/bitop/keep_n_lsb.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/bitop/pow.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/bitop/rotate.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/bitop/sparse_form.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/random/engine.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/random/engine.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/random/engine.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/uint128/uint128.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/uint128/uint128.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/uint128/uint128_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/uint256/uint256.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/uint256/uint256.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/uint256/uint256_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/uintx/uintx.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/uintx/uintx.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/numeric/uintx/uintx_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/composer_lib.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/composer_lib.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/standard_composer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/standard_composer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/standard_composer.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/turbo_composer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/turbo_composer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/turbo_composer.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/ultra_composer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/ultra_composer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/composer/ultra_composer.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/flavor/flavor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/commitment_scheme.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/commitment_scheme.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/kate_commitment_scheme.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/commitment_scheme/kate_commitment_scheme.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/constants.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/prover/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/prover/prover.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/prover/prover.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/prover/prover.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/proving_key/serialize.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/public_inputs/public_inputs_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/types/commitment_open_proof.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/types/polynomial_manifest.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/types/program_settings.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/types/proof.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/types/prover_settings.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/utils/generalized_permutation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/utils/kate_verification.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/utils/permutation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/verification_key/sol_gen.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/verification_key/verification_key.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/verifier/verifier.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/permutation_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/permutation_widget_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/plookup_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/plookup_widget_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/random_widgets/random_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/arithmetic_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/elliptic_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/fixed_base_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/genperm_sort_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/plookup_arithmetic_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/plookup_auxiliary_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/transition_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_arithmetic_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_logic_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/plonk/proof_system/widgets/transition_widgets/turbo_range_widget.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/barycentric.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/barycentric.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/evaluation_domain.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/evaluation_domain.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/iterate_over_domain.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/polynomial.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/polynomial.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/polynomial_arithmetic.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/polynomial_arithmetic.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/polynomial_arithmetic.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/polynomials.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/pow.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/pow.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/serialize.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/univariate.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/polynomials/univariate.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/arithmetization/arithmetization.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/arithmetization/gate_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/circuit_builder_base.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_circuit_builder.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/goblin_translator_mini.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/goblin_ultra_circuit_builder.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/standard_circuit_builder.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/composer/composer_lib.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/composer/composer_lib.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/composer/permutation_lib.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/composer/permutation_lib.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/flavor/flavor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/op_queue/ecc_op_queue.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/op_queue/ecc_op_queue.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/aes128.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/blake2s.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/dummy.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_chi.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_input.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_output.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_rho.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/keccak/keccak_theta.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/pedersen.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/sha256.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/sparse.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/types.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/plookup_tables/uint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_cache.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_cache.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_wasm.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store_wasm.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/arithmetic_relation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/auxiliary_relation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/ecc_op_queue_relation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/elliptic_relation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/gen_perm_sort_relation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/lookup_relation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/permutation_relation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/relation_parameters.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/relation_types.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/standard_relation_consistency.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/ultra_arithmetic_relation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/relations/ultra_relation_consistency.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/types/circuit_type.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/types/merkle_hash_type.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/types/pedersen_commitment_type.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/work_queue/work_queue.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/proof_system/work_queue/work_queue.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/cbind.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/cbind_fwd.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_apply.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_impl/check_memory_span.hpp (92%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_impl/concepts.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_impl/drop_keys.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_impl/func_traits.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_impl/msgpack_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_impl/name_value_pair_macro.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_impl/schema_impl.hpp (93%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_impl/schema_name.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_impl/struct_map_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_impl/variant_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/msgpack_schema.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/raw_pointer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/serialize/test_helper.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/README.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/circuit/circuit.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/circuit/circuit.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/smt_bigfield.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/smt_examples.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/smt_intmod.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/smt_polynomials.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/solver/solver.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/solver/solver.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/terms/bool.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/terms/bool.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/terms/ffiterm.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/terms/ffiterm.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/terms/ffterm.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/smt_verification/terms/ffterm.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/solidity_helpers/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/solidity_helpers/circuits/add_2_circuit.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/solidity_helpers/circuits/blake_circuit.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/solidity_helpers/circuits/recursive_circuit.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/solidity_helpers/key_gen.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/solidity_helpers/proof_gen.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/solidity_helpers/utils/instance_sol_gen.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/solidity_helpers/utils/utils.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/c_bind.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/c_bind.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/factories/crs_factory.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/factories/file_crs_factory.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/factories/file_crs_factory.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/factories/mem_crs_factory.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/factories/mem_crs_factory.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/factories/mem_crs_factory.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/global_crs.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/global_crs.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/io.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/io.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/srs/scalar_multiplication.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/commitment/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/commitment/pedersen/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/commitment/pedersen/pedersen_plookup.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/aes128/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/aes128/aes128.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/ecdsa/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/schnorr/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/encryption/schnorr/schnorr.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/benchmarks/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/benchmarks/celer/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/benchmarks/celer/sha256.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/benchmarks/external/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/benchmarks/external/external.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/benchmarks/sha256/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/benchmarks/sha256/sha256.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake2s/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s_plookup.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake2s/blake2s_plookup.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake2s/blake_util.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake3s/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s_plookup.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/blake3s/blake3s_plookup.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/keccak/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/keccak/keccak.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/keccak/keccak.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/pedersen/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_gates.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_plookup.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/pedersen/pedersen_plookup.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/sha256/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/sha256/sha256.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/sha256/sha256.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/sha256/sha256.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/sha256/sha256_plookup.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/hash/sha256/sha256_plookup.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/hash.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/hash.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/hash_path.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/index.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/membership.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/membership.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/memory_store.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/memory_tree.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.bench.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/merkle_tree.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_leaf.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/merkle_tree/nullifier_tree/nullifier_tree.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/address/address.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.fuzzer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_all.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_standard.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bigfield/bigfield_turbo.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_batch_mul.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_bn254.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_goblin.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_impl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_nafs.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_secp256k1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup_tables.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.fuzzer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_all.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_standard.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bit_array/bit_array_turbo.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bool/bool.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bool/bool.fuzzer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bool/bool.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bool/bool_all.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bool/bool_standard.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/bool/bool_turbo.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.fuzzer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_all.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_standard.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array_turbo.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders_fwd.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/curves/bn254.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/curves/secp256k1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/curves/secp256r1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/field/array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/field/array.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/field/field.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/field/field.fuzzer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/field/field.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/field/field_all.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/field/field_standard.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/field/field_turbo.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/group/group.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/group/group.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/logic/logic.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/logic/logic.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/logic/logic.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/dynamic_array.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/ram_table.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/rom_table.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/twin_rom_table.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/memory/twin_rom_table.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/packed_byte_array/packed_byte_array.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/plookup/plookup.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/point/point.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.fuzzer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_all.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_standard.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint_turbo.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/arithmetic.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/comparison.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/logic.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/plookup/arithmetic.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/plookup/comparison.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/plookup/logic.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/plookup/uint.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/plookup/uint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/uint.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/uint.fuzzer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/uint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/uint.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/uint_all.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/uint_standard.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/uint/uint_turbo.fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/primitives/witness/witness.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/aggregation_state/aggregation_state.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/aggregation_state/native_aggregation_state.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/honk/transcript/transcript.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/honk/transcript/transcript.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/honk/verifier/ultra_recursive_verifier.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/honk/verifier/ultra_recursive_verifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/honk/verifier/verifier.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/transcript/transcript.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/transcript/transcript.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/verification_key/verification_key.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/verification_key/verification_key.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/verifier/program_settings.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/recursion/verifier/verifier_turbo.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/types/turbo.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/types/ultra.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/stdlib/utility/utility.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/transcript/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/transcript/manifest.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/transcript/transcript.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/transcript/transcript.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/transcript/transcript.test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/transcript/transcript_wrappers.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/transcript/transcript_wrappers.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/wasi/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/wasi/wasi_stubs.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/barretenberg/wasi/wasm_init.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/.clang-format (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/.github/depends/boost.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/.github/depends/zlib.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/.github/workflows/coverage.yml (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/.github/workflows/gha.yml (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/.gitignore (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/CHANGELOG.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/COPYING (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/Doxyfile (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/Files.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/LICENSE_1_0.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/NOTICE (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/QUICKSTART-CPP.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/README.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/appveyor.yml (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/ci/build_cmake.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/ci/build_regression.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/ci/set_gcc_10.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/cmake/CodeCoverage.cmake (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/codecov.yml (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/erb/v1/cpp03_define_array.hpp.erb (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/erb/v1/cpp03_define_array_decl.hpp.erb (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/erb/v1/cpp03_define_map.hpp.erb (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/erb/v1/cpp03_define_map_decl.hpp.erb (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/erb/v1/cpp03_msgpack_tuple.hpp.erb (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/erb/v1/cpp03_msgpack_tuple_decl.hpp.erb (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/erb/v1/cpp03_zone.hpp.erb (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/erb/v1/cpp03_zone_decl.hpp.erb (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/boost/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/boost/asio_send_recv.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/boost/asio_send_recv_zlib.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/boost/msgpack_variant_capitalize.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/boost/msgpack_variant_mapbased.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/class_intrusive.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/class_intrusive_map.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/class_non_intrusive.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/custom.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/enum.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/map_based_versionup.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/protocol.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/protocol_new.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/reuse_zone.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/simple.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/speed_test.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/speed_test_nested_array.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp03/stream.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp11/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp11/container.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp11/non_def_con_class.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/cpp11/socket_stream_example.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/x3/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/x3/parse.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/x3/stream_unpack.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/example/x3/unpack.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/fuzz/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/fuzz/regression_runner.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-5656982724804608 (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_regressions/clusterfuzz-testcase-minimized-unpack_pack_fuzzer-6022481354686464 (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyArray (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/EmptyObject (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/ExcessiveNesting (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/OpenWeatherMap (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/fuzz/unpack_pack_fuzzer_seed_corpus/WeatherUnderground (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/adaptor_base.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/adaptor_base_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/array_ref.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/array_ref_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/bool.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/boost/fusion.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/boost/msgpack_variant.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/boost/msgpack_variant_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/boost/optional.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/boost/string_ref.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/boost/string_view.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/carray.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/char_ptr.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/check_container_size.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/check_container_size_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/complex.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array_char.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/array_unsigned_char.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/chrono.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/forward_list.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/reference_wrapper.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/shared_ptr.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/timespec.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unique_ptr.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unordered_map.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp11/unordered_set.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/array_byte.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/byte.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/carray_byte.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/optional.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/string_view.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp17/vector_byte.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/cpp20/span.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/define.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/define_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/deque.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/ext.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/ext_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/fixint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/fixint_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/float.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/int.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/int_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/list.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/map.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/map_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/msgpack_tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/msgpack_tuple_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/nil.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/nil_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/pair.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/raw.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/raw_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/set.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/size_equal_only.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/size_equal_only_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/string.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/tr1/unordered_map.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/tr1/unordered_set.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/v4raw.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/v4raw_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/vector.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/vector_bool.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/vector_char.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/vector_unsigned_char.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/adaptor/wstring.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/assert.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/cpp_config.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/cpp_config_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/cpp_version.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/create_object_visitor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/create_object_visitor_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/fbuffer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/fbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/gcc_atomic.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/iterator.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/iterator_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/meta.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/meta_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/null_visitor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/null_visitor_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/object.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/object_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/object_fwd.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/object_fwd_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/pack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/pack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/parse.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/parse_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/parse_return.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/alpha.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/arm.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/blackfin.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/convex.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/ia64.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/m68k.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/mips.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/parisc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/ppc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/ptx.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/pyramid.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/rs6k.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/sparc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/superh.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/sys370.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/sys390.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86/32.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/x86/64.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/architecture/z.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/borland.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/clang.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/comeau.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/compaq.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/diab.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/digitalmars.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/dignus.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/edg.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/ekopath.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/gcc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/gcc_xml.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/greenhills.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/hp_acc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/iar.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/ibm.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/intel.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/kai.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/llvm.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/metaware.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/metrowerks.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/microtec.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/mpw.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/nvcc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/palm.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/pgi.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/sgi_mipspro.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/sunpro.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/tendra.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/visualc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/compiler/watcom.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/detail/_cassert.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/detail/_exception.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/detail/comp_detected.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/detail/endian_compat.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/detail/os_detected.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/detail/platform_detected.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/detail/test.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/detail/test_def.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/hardware.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/arm.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/arm/versions.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/ppc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/ppc/versions.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86/versions.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86_amd.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/hardware/simd/x86_amd/versions.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/language.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/language/cuda.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/language/objc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/language/stdc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/language/stdcpp.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/c.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/c/_prefix.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/c/cloudabi.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/c/gnu.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/c/uc.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/c/vms.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/c/zos.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/_prefix.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/cxx.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/dinkumware.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/libcomo.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/modena.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/msl.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/roguewave.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/sgi.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/stdcpp3.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/stlport.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/library/std/vacpp.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/make.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/aix.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/amigaos.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/android.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/beos.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/bsd.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/bsdi.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/dragonfly.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/free.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/net.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/bsd/open.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/cygwin.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/haiku.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/hpux.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/ios.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/irix.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/linux.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/macos.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/os400.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/qnxnto.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/solaris.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/unix.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/vms.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/os/windows.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/other.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/other/endian.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/other/workaround.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/cloudabi.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/ios.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw32.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/mingw64.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_desktop.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_phone.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_runtime.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_server.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_store.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_system.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/platform/windows_uwp.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/version.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/predef/version_number.h (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/add.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/dec.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/detail/div_base.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/div.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/inc.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/mod.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/mul.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/arithmetic/sub.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/detail/get_data.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/elem.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/enum.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/insert.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/pop_back.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/pop_front.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/push_back.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/push_front.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/remove.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/replace.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/reverse.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/size.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_list.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_seq.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/array/to_tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/assert_msg.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/cat.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/comma.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/comma_if.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/equal.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/greater.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/greater_equal.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/less.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/less_equal.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/comparison/not_equal.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/config/config.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/config/limits.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control/deduce_d.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/dmc/while.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/edg/while.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/msvc/while.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control/detail/while.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control/expr_if.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control/expr_iif.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control/if.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control/iif.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/control/while.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/debug.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/assert.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/error.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/debug/line.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/dec.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/auto_rec.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/check.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/dmc/auto_rec.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_binary.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_nullary.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/is_unary.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/null.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/detail/split.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/empty.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/enum.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params_with_a_default.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_params_with_defaults.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_shifted.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/enum_shifted_params.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/expand.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/expr_if.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/apply.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/detail/is_empty.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/empty.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/expand.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/identity.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/intercept.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty_or_1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/is_empty_variadic.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/facilities/overload.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/for.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/identity.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/if.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/inc.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iterate.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower2.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower3.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower4.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/lower5.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper2.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper3.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper4.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/bounds/upper5.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/finish.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward2.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward3.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward4.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/forward5.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse2.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse3.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse4.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/iter/reverse5.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/local.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/rlocal.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/self.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/detail/start.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/iterate.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/local.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/iteration/self.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/library.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/limits.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/adt.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/append.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/at.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/cat.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/dmc/fold_left.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/edg/fold_left.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/edg/fold_right.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/fold_left.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/detail/fold_right.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/enum.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/filter.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/first_n.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/fold_left.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/fold_right.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each_i.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/for_each_product.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/rest_n.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/reverse.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/size.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_seq.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/to_tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/list/transform.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/and.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitand.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitnor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bitxor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/bool.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/compl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/nor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/not.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/or.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/logical/xor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/max.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/min.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/comma.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/comma_if.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/detail/is_begin_parens.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/is_begin_parens.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/paren.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/paren_if.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/punctuation/remove_parens.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_2nd.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_3rd.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to_2nd.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repeat_from_to_3rd.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/deduce_r.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/deduce_z.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/dmc/for.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/edg/for.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/for.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/detail/msvc/for.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_binary_params.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params_with_a_default.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_params_with_defaults.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted_binary_params.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_shifted_params.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing_binary_params.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/enum_trailing_params.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/for.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/repeat.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/repetition/repeat_from_to.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/selection.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/selection/max.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/selection/min.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/cat.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/binary_transform.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/is_empty.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/split.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/detail/to_list_msvc.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/elem.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/enum.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/filter.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/first_n.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/fold_left.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/fold_right.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each_i.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/for_each_product.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/insert.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/pop_back.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/pop_front.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/push_back.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/push_front.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/remove.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/replace.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/rest_n.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/reverse.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/seq.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/size.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/subseq.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_list.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/to_tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/transform.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/seq/variadic_seq_to_seq.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/counter.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/counter.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/def.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/shared.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot1.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot2.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot3.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot4.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/detail/slot5.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/slot/slot.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/stringize.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/detail/is_single_return.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/eat.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/elem.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/enum.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/insert.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/pop_back.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/pop_front.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/push_back.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/push_front.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/rem.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/remove.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/replace.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/reverse.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/size.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_list.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/tuple/to_seq.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/detail/is_single_return.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/elem.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/size.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_list.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_seq.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/variadic/to_tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/while.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/preprocessor/wstringize.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/sbuffer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/sbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/sysdep.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/type.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/unpack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/unpack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/unpack_define.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/unpack_exception.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/adaptor_base.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/adaptor_base_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/array_ref.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/array_ref_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/bool.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/fusion.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/msgpack_variant_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/optional.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/string_ref.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/boost/string_view.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/carray.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/char_ptr.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/check_container_size.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/check_container_size_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/complex.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array_char.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/array_unsigned_char.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/chrono.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/forward_list.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/reference_wrapper.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/shared_ptr.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/timespec.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unique_ptr.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unordered_map.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp11/unordered_set.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/array_byte.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/byte.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/carray_byte.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/optional.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/string_view.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/cpp20/span.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/define.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/define_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/deque.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_array_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_map.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_define_map_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_convert_helper.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_array.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_array_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_map.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_define_map_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/ext.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/ext_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/fixint.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/fixint_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/float.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/int.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/int_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/list.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/map.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/map_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/msgpack_tuple.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/msgpack_tuple_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/nil.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/nil_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/pair.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/raw.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/raw_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/set.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/size_equal_only.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/size_equal_only_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/string.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/tr1/unordered_map.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/tr1/unordered_set.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/v4raw.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/v4raw_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_bool.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_char.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/vector_unsigned_char.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/adaptor/wstring.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/cpp_config.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/cpp_config_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp03_zone.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp03_zone_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp11_zone.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/detail/cpp11_zone_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/fbuffer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/fbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/iterator.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/iterator_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/meta.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/meta_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/object.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/object_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/object_fwd.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/object_fwd_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/pack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/pack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/parse_return.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/sbuffer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/sbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/unpack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/unpack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/unpack_exception.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/version.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/versioning.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/vrefbuffer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/vrefbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/zbuffer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/zbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/zone.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v1/zone_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/adaptor_base.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/adaptor_base_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/array_ref_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/boost/msgpack_variant_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/check_container_size_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/define_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_define_array_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_define_map_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp03_msgpack_tuple_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_define_array_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_define_map_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/detail/cpp11_msgpack_tuple_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/ext_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/fixint_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/int_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/map_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/msgpack_tuple_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/nil_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/raw_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/size_equal_only_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/adaptor/v4raw_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/cpp_config_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/create_object_visitor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/create_object_visitor_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/detail/cpp03_zone_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/detail/cpp11_zone_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/fbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/iterator_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/meta_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/null_visitor.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/null_visitor_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/object.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/object_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/object_fwd.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/object_fwd_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/pack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/parse.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/parse_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/parse_return.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/sbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/unpack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/unpack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/vrefbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/x3_parse.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/x3_parse_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/x3_unpack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/x3_unpack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/zbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v2/zone_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/adaptor_base.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/adaptor_base_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/array_ref_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/boost/msgpack_variant_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/check_container_size_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/define_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_define_array_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_define_map_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp03_msgpack_tuple_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_define_array_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_define_map_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/detail/cpp11_msgpack_tuple_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/ext_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/fixint_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/int_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/map_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/msgpack_tuple_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/nil_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/raw_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/size_equal_only_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/adaptor/v4raw_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/cpp_config_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/create_object_visitor_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/detail/cpp03_zone_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/detail/cpp11_zone_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/fbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/iterator_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/meta_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/null_visitor_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/object_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/object_fwd.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/object_fwd_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/pack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/parse.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/parse_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/parse_return.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/sbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/unpack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/unpack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/vrefbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/x3_parse_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/x3_unpack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/x3_unpack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/zbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/v3/zone_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/version.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/version_master.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/versioning.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/vrefbuffer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/vrefbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/x3_parse.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/x3_parse_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/x3_unpack.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/x3_unpack_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/zbuffer.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/zbuffer_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/zone.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/include/msgpack/zone_decl.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/make_file_list.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/makedist.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/msgpack-cxx-config.cmake.in (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/preprocess (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test-install/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test-install/simple.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/CMakeLists.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/array_ref.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/boost_fusion.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/boost_optional.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/boost_string_ref.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/boost_string_view.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/boost_variant.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/buffer.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/buffer_c.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/carray.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/cases.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/cases.mpac (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/cases_compact.mpac (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/convert.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/fixint.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/fuzz_unpack_pack_fuzzer_cpp11.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/inc_adaptor_define.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/iterator_cpp11.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/json.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/limit.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/msgpack_basic.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/msgpack_container.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/msgpack_cpp11.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/msgpack_cpp17.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/msgpack_cpp20.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/msgpack_stream.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/msgpack_tuple.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/msgpack_vref.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/msgpack_x3_parse.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/multi_file1.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/multi_file2.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/object.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/object_with_zone.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/pack_unpack.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/raw.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/reference.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/reference_cpp11.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/reference_wrapper_cpp11.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/shared_ptr_cpp11.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/size_equal_only.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/streaming.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/test_allocator.hpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/unique_ptr_cpp11.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/user_class.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/version.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/visitor.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/test/zone.cpp (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/src/msgpack-c/update_version.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/srs_db/download_ignition.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/srs_db/grumpkin/monomial/README.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/srs_db/ignition/monomial/checksums (100%) rename {circuits/cpp/barretenberg => barretenberg}/cpp/srs_db/ignition/monomial/g2.dat (100%) rename {circuits/cpp/barretenberg => barretenberg}/exports.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/flake.lock (100%) rename {circuits/cpp/barretenberg => barretenberg}/flake.nix (100%) rename {circuits/cpp/barretenberg => barretenberg}/scripts/bindgen.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/scripts/c_bind_files.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/scripts/decls_json.py (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/.gitignore (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/Dockerfile (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/README.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/bootstrap.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/figures/verifier.png (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/foundry.toml (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/lib/forge-std (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/lib/openzeppelin-contracts (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/lib/solidity-stringutils (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/remappings.txt (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/scripts/init.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/scripts/install_foundry.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/scripts/run_fuzzer.sh (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/src/interfaces/IVerifier.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/src/ultra/BaseUltraVerifier.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/src/ultra/instance/Add2UltraVerifier.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/src/ultra/instance/BlakeUltraVerifier.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/src/ultra/instance/RecursiveUltraVerifier.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/src/ultra/keys/Add2UltraVerificationKey.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/src/ultra/keys/BlakeUltraVerificationKey.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/src/ultra/keys/RecursiveUltraVerificationKey.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/test/base/DifferentialFuzzer.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/test/base/TestBase.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/test/ultra/Add2.t.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/test/ultra/Blake.t.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/test/ultra/Recursive.t.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/sol/test/ultra/TestBaseUltra.sol (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/.dockerignore (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/.eslintrc.cjs (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/.gitignore (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/.prettierrc.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/.yarn/releases/yarn-berry.cjs (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/.yarnrc.yml (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/Dockerfile (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/README.md (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/bb.js-dev (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/cjs-entry/index.cjs (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/cjs-entry/index.d.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/package.json (98%) rename {circuits/cpp/barretenberg => barretenberg}/ts/scripts/run_tests (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/async_map/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg-threads.wasm (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg.wasm (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_api/blake2s.test.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_api/common.test.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_api/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_api/pedersen.test.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_api/schnorr.test.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_binder/heap_allocator.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_binder/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_base/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_main/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/fetch_code/browser/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/fetch_code/browser/wasm-module.d.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/fetch_code/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/fetch_code/node/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/helpers/browser/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/helpers/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/helpers/node/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/helpers/node/node_endpoint.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/index.test.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/barretenberg_wasm/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/bigint-array/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/bindgen/function_declaration.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/bindgen/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/bindgen/mappings.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/bindgen/rust.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/bindgen/to_camel_case.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/bindgen/typescript.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/crs/browser/cached_net_crs.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/crs/browser/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/crs/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/crs/net_crs.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/crs/node/ignition_files_crs.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/crs/node/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/examples/simple.rawtest.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/examples/simple.test.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/index.html (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/info.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/main.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/random/browser/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/random/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/random/node/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/serialize/buffer_reader.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/serialize/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/serialize/output_type.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/serialize/serialize.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/types/fields.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/types/fixed_size_buffer.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/types/index.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/types/point.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/types/ptr.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/src/types/raw_buffer.ts (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/tsconfig.browser.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/tsconfig.json (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/webpack.config.js (100%) rename {circuits/cpp/barretenberg => barretenberg}/ts/yarn.lock (100%) rename {circuits/cpp/barretenberg => barretenberg}/wasi-sdk.nix (100%) create mode 100755 build-system/scripts/cond_run_script create mode 100755 build-system/scripts/cond_spot_run_test delete mode 100755 build-system/scripts/cond_spot_run_test_script delete mode 100755 build-system/scripts/cond_spot_run_tests rename build-system/{remote_build/remote_build => scripts/remote_runner} (81%) delete mode 100755 build-system/scripts/spot_run_test_script delete mode 100755 build-system/scripts/spot_run_tests create mode 100644 circuits/cpp/.rebuild_patterns delete mode 100644 circuits/cpp/barretenberg/CHANGELOG.md delete mode 100644 circuits/cpp/barretenberg/cpp/bin-test/target/acir.gz delete mode 100644 circuits/cpp/barretenberg/cpp/bin-test/target/witness.gz delete mode 100644 circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang delete mode 100755 circuits/cpp/barretenberg/cpp/scripts/run_aztec_circuits_tests delete mode 100644 circuits/cpp/barretenberg/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.test.cpp delete mode 100644 circuits/cpp/barretenberg/ts/CHANGELOG.md delete mode 100644 circuits/cpp/barretenberg/ts/bin-test/target/acir.gz delete mode 100644 circuits/cpp/barretenberg/ts/bin-test/target/witness.gz delete mode 100644 circuits/cpp/cmake/barretenberg.cmake delete mode 100644 circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-gcc delete mode 100755 scripts/update.sh rename yarn-project/end-to-end/scripts/{cond_run_script => cond_run_script.delme} (100%) create mode 100644 yarn-project/end-to-end/src/e2e_token_contract.test.ts create mode 100644 yarn-project/noir-contracts/src/contracts/token_contract/Nargo.toml create mode 100644 yarn-project/noir-contracts/src/contracts/token_contract/src/account_interface.nr create mode 100644 yarn-project/noir-contracts/src/contracts/token_contract/src/main.nr create mode 100644 yarn-project/noir-contracts/src/contracts/token_contract/src/types.nr create mode 100644 yarn-project/noir-contracts/src/contracts/token_contract/src/util.nr delete mode 100644 yarn-project/noir-libs/aztec-noir/src/messaging/get_commitment_getter_data.nr delete mode 100644 yarn-project/noir-libs/aztec-noir/src/oracle/get_commitment.nr create mode 100755 yarn-project/scripts/get_dependencies.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index e4afb837e09..41e28e5d328 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,9 +968,8 @@ 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: image: ubuntu-2004:202010-01 @@ -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: @@ -1286,14 +1251,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: @@ -1301,6 +1258,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 @@ -1326,6 +1285,10 @@ workflows: # only: # - master # <<: *defaults + - barretenberg-acir-tests-bb: + requires: + - barretenberg-x86_64-linux-clang-assert + <<: *defaults - bb-js: requires: - barretenberg-wasm-linux-clang @@ -1334,38 +1297,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 @@ -1427,6 +1406,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 @@ -1461,6 +1441,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 @@ -1491,6 +1472,7 @@ workflows: - guides-sample-dapp <<: *defaults + # Deployment and Canary tests - deploy-dockerhub: requires: - e2e-end diff --git a/.github/workflows/mirror_barretenberg_repo.yml b/.github/workflows/mirror_barretenberg_repo.yml deleted file mode 100644 index b83c95e0f2a..00000000000 --- a/.github/workflows/mirror_barretenberg_repo.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Mirror to barretenberg repo - -on: - push: - branches: - - master - paths: - - 'circuits/cpp/barretenberg/**' - - '!circuits/cpp/barretenberg/.gitrepo' - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }} - - - name: Push to branch - 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 - # identify ourselves, needed to commit - git config --global user.name AztecBot - git config --global user.email tech@aztecprotocol.com - # push to subrepo, commit to master. The commit is needed - # to continue to replay. If we still hit issues such as this - # action failing due to upstream changes, a manual resolution - # PR with ./scripts/git_subrepo.sh pull will be needed. - ./scripts/git_subrepo.sh push $SUBREPO_PATH --branch=master - git push # update .gitrepo on master diff --git a/.github/workflows/mirror_build_system_repo.yml b/.github/workflows/mirror_build_system_repo.yml deleted file mode 100644 index 9e85d3600f0..00000000000 --- a/.github/workflows/mirror_build_system_repo.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Mirror to build-system repo - -on: - push: - branches: - - master - paths: - - "build-system/**" - - "!build-system/.gitrepo" - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }} - - - name: Push to branch - run: | - # we push using git subrepo (https://github.com/ingydotnet/git-subrepo) - # with some logic to recover from squashed parent commits - SUBREPO_PATH=build-system - # identify ourselves, needed to commit - git config --global user.name AztecBot - git config --global user.email tech@aztecprotocol.com - # push to subrepo, commit to master. The commit is needed - # to continue to replay. If we still hit issues such as this - # action failing due to upstream changes, a manual resolution - # PR with ./scripts/git_subrepo.sh pull will be needed. - ./scripts/git_subrepo.sh push $SUBREPO_PATH --branch=master - git push # update .gitrepo on master diff --git a/.github/workflows/mirror_docs_repo.yml b/.github/workflows/mirror_docs_repo.yml deleted file mode 100644 index 7965b5c867d..00000000000 --- a/.github/workflows/mirror_docs_repo.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Mirror to docs repo - -on: - push: - branches: - - master - paths: - - 'docs/**' - - '!docs/.gitrepo' - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }} - - - name: Push to branch - run: | - # we push using git subrepo (https://github.com/ingydotnet/git-subrepo) - # with some logic to recover from squashed parent commits - SUBREPO_PATH=docs - # identify ourselves, needed to commit - git config --global user.name AztecBot - git config --global user.email tech@aztecprotocol.com - # push to subrepo, commit to master. The commit is needed - # to continue to replay. If we still hit issues such as this - # action failing due to upstream changes, a manual resolution - # PR with ./scripts/git_subrepo.sh pull will be needed. - ./scripts/git_subrepo.sh push $SUBREPO_PATH --branch=main - git push # update .gitrepo on master diff --git a/.github/workflows/mirror_repos.yml b/.github/workflows/mirror_repos.yml new file mode 100644 index 00000000000..c3cec86a551 --- /dev/null +++ b/.github/workflows/mirror_repos.yml @@ -0,0 +1,79 @@ +# We push using git subrepo (https://github.com/ingydotnet/git-subrepo) +# with some logic to recover from squashed parent commits +# We first identify ourselves, needed to commit. +# Then push to subrepo, commit to master. The commit is needed +# to continue to replay. If we still hit issues such as this +# action failing due to upstream changes, a manual resolution +# PR with ./scripts/git_subrepo.sh pull will be needed. +name: Mirror Repositories + +concurrency: + group: mirror-repositories +on: + schedule: + # Run the workflow every night at 2:00 AM UTC. + cron: '0 2 * * *' + +jobs: + mirror-to-docs-repo: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }} + - name: Push to docs repo + run: | + SUBREPO_PATH=docs + git config --global user.name AztecBot + git config --global user.email tech@aztecprotocol.com + + if ./scripts/git_subrepo.sh push $SUBREPO_PATH --branch=main; then + git fetch # in case a commit came after this + git rebase origin/master + git commit --amend -m "$(git log -1 --pretty=%B) [skip ci]" + git push + fi + + mirror-to-build-system-repo: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }} + - name: Push to build-system repo + run: | + SUBREPO_PATH=build-system + git config --global user.name AztecBot + git config --global user.email tech@aztecprotocol.com + + if ./scripts/git_subrepo.sh push $SUBREPO_PATH --branch=main; then + git fetch # in case a commit came after this + git rebase origin/master + git commit --amend -m "$(git log -1 --pretty=%B) [skip ci]" + git push + fi + + mirror-to-barretenberg-repo: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }} + - name: Push to barretenberg repo + run: | + SUBREPO_PATH=barretenberg + git config --global user.name AztecBot + git config --global user.email tech@aztecprotocol.com + + if ./scripts/git_subrepo.sh push $SUBREPO_PATH --branch=main; then + git fetch # in case a commit came after this + git rebase origin/master + git commit --amend -m "$(git log -1 --pretty=%B) [skip ci]" + git push + fi 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 dd67659ac5b..a1a9e85c860 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { ".": "0.7.0", - "circuits/cpp/barretenberg": "0.7.0", - "circuits/cpp/barretenberg/ts": "0.7.0" + "barretenberg": "0.7.0", + "barretenberg/ts": "0.7.0" } 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/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 832537bc12d..c7afea8c09a 100644 --- a/circuits/cpp/barretenberg/.gitrepo +++ b/barretenberg/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/AztecProtocol/barretenberg branch = master - commit = efe36c9635aa334dcd42b851f5e3d1c8e5d21278 - parent = 4642b61a60534daeec8edd9541f283058d0d66bd + 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/circuits/cpp/barretenberg/VERSION b/barretenberg/VERSION similarity index 100% rename from circuits/cpp/barretenberg/VERSION rename to barretenberg/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 100% rename from circuits/cpp/barretenberg/barretenberg-wasm.nix rename to barretenberg/barretenberg-wasm.nix 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 100% rename from circuits/cpp/barretenberg/barretenberg.nix rename to barretenberg/barretenberg.nix 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 96% rename from circuits/cpp/barretenberg/cpp/CMakeLists.txt rename to barretenberg/cpp/CMakeLists.txt index 7df5f20ad7a..515ccee5241 100644 --- a/circuits/cpp/barretenberg/cpp/CMakeLists.txt +++ b/barretenberg/cpp/CMakeLists.txt @@ -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 97% rename from circuits/cpp/barretenberg/cpp/CMakePresets.json rename to barretenberg/cpp/CMakePresets.json index cd785ecf5ed..6ac7fd933f6 100644 --- a/circuits/cpp/barretenberg/cpp/CMakePresets.json +++ b/barretenberg/cpp/CMakePresets.json @@ -215,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", 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/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang similarity index 50% rename from circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang rename to barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang index 48e54f5b97a..c642b4a9a66 100644 --- a/circuits/cpp/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.wasm-linux-clang @@ -5,11 +5,17 @@ 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 +RUN cmake --preset wasm && cmake --build --preset wasm +RUN cmake --preset wasm-threads && cmake --build --preset wasm-threads -FROM alpine:3.18 +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 797035bcfe1..51ecf4fabbd 100644 --- a/circuits/cpp/barretenberg/cpp/src/CMakeLists.txt +++ b/barretenberg/cpp/src/CMakeLists.txt @@ -190,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 100% 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 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 100% 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 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 100% 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 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/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/smt_verification/CMakeLists.txt similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/CMakeLists.txt rename to barretenberg/cpp/src/barretenberg/smt_verification/CMakeLists.txt diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/README.md b/barretenberg/cpp/src/barretenberg/smt_verification/README.md similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/README.md rename to barretenberg/cpp/src/barretenberg/smt_verification/README.md diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.cpp rename to barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.hpp rename to barretenberg/cpp/src/barretenberg/smt_verification/circuit/circuit.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/smt_bigfield.test.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/smt_bigfield.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/smt_bigfield.test.cpp rename to barretenberg/cpp/src/barretenberg/smt_verification/smt_bigfield.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/smt_examples.test.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/smt_examples.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/smt_examples.test.cpp rename to barretenberg/cpp/src/barretenberg/smt_verification/smt_examples.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/smt_intmod.test.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/smt_intmod.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/smt_intmod.test.cpp rename to barretenberg/cpp/src/barretenberg/smt_verification/smt_intmod.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/smt_polynomials.test.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/smt_polynomials.test.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/smt_polynomials.test.cpp rename to barretenberg/cpp/src/barretenberg/smt_verification/smt_polynomials.test.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.cpp rename to barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.hpp rename to barretenberg/cpp/src/barretenberg/smt_verification/solver/solver.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.cpp rename to barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.hpp rename to barretenberg/cpp/src/barretenberg/smt_verification/terms/bool.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.cpp rename to barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.hpp rename to barretenberg/cpp/src/barretenberg/smt_verification/terms/ffiterm.hpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.cpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.cpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.cpp rename to barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.cpp diff --git a/circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.hpp b/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.hpp similarity index 100% rename from circuits/cpp/barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.hpp rename to barretenberg/cpp/src/barretenberg/smt_verification/terms/ffterm.hpp 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 98% rename from circuits/cpp/barretenberg/ts/package.json rename to barretenberg/ts/package.json index cb54961e036..a13125a0191 100644 --- a/circuits/cpp/barretenberg/ts/package.json +++ b/barretenberg/ts/package.json @@ -1,7 +1,7 @@ { "name": "@aztec/bb.js", "version": "0.7.0", - "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/circuits/cpp/barretenberg/ts", + "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..12da08e2b23 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,32 +1,62 @@ #!/bin/bash +# Usage: +# Bootstraps the repo. End to end tests should be runnable after a bootstrap: +# ./bootstrap.sh +# Run a second time to perform a "light bootstrap", rebuilds code that's changed: +# ./bootstrap.sh +# Force a clean of the repo before performing a full bootstrap, erases untracked files, be careful! +# ./bootstrap.sh clean set -eu -export CLEAN=${1:-} +export CMD=${1:-} cd "$(dirname "$0")" +# Bump this number to force a full bootstrap. +VERSION=1 + # 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 -f .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 done - git submodule update --init --recursive - exit 0 else echo "Unknown command: $CLEAN" exit 1 fi fi +# Lightweight bootstrap. Run `./bootstrap.sh clean` to bypass. +if [[ -f .bootstrapped && $(cat .bootstrapped) -eq "$VERSION" ]]; then + echo -e '\033[1mRebuild L1 contracts...\033[0m' + (cd l1-contracts && .foundry/bin/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 default && 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 + git submodule update --init --recursive if [ ! -f ~/.nvm/nvm.sh ]; then @@ -34,5 +64,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 + +echo $VERSION > .bootstrapped \ No newline at end of file diff --git a/bootstrap_docker.sh b/bootstrap_docker.sh index 5870435e443..96777a3c389 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 build_local $PROJECT_NAME $ONLY_TARGET if [ -z "$PROJECT_NAME" ]; then diff --git a/build-system/scripts/build b/build-system/scripts/build index 0dde9ea4945..6b16d320476 100755 --- a/build-system/scripts/build +++ b/build-system/scripts/build @@ -93,6 +93,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 @@ -118,14 +119,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..." @@ -156,16 +157,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 build --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 d80e9493684..cbfba6420cb 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 @@ -14,7 +12,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..51eac1df79d 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,94 @@ if [ $(jq "has(\"$REPO\")" $MANIFEST) == "false" ]; then exit 1 fi +function get_deps { + local TYPE=$(jq -r ".\"$1\".dependencies | type" $MANIFEST) + if [ "$TYPE" == "string" ]; then + # Execute string as command relative to buildDir to retrieve dependencies. + local CMD=$BUILD_DIR/$(jq -r ".\"$1\".dependencies") + if [ ! -f "$CMD" ]; then + >&2 echo "Dependency script not found: $CMD" + exit 1 + fi + local PROJECT_DIR=$($0 projectDir $1) + DEPS=($($CMD $PROJECT_DIR)) + elif [ "$TYPE" == "null" ]; then + # Execute default script relative to buildDir to retrieve dependencies. + local CMD=$BUILD_DIR/scripts/get_dependencies.sh + if [ ! -f "$CMD" ]; then + >&2 echo "Dependency script not found: $CMD" + exit 1 + fi + local PROJECT_DIR=$($0 projectDir $1) + DEPS=($($CMD $PROJECT_DIR)) + elif [ "$TYPE" == "array" ]; then + DEPS=($(jq -r ".\"$1\".dependencies // [] | .[]" $MANIFEST)) + else + >&2 echo "dependencies must be a array, string or null." + exit 1 + fi +} + +function add_rebuild_patterns { + 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=() + BUILD_DIR=$($0 buildDir $REPO) + declare -A ALL_DEPS add_deps() { - DEPS=($(jq -r ".\"$1\".dependencies // [] | .[]" $MANIFEST)) - ALL_DEPS=(${ALL_DEPS[@]} ${DEPS[@]}) + if [[ -v ALL_DEPS[$1] ]]; then + return + fi + ALL_DEPS["$1"]=1 + get_deps $1 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=() + add_rebuild_patterns $REPO for DEP in "${DEPS[@]}"; do - PATTERNS=($(jq -r ".\"$DEP\".rebuildPatterns | .[]" $MANIFEST)) - ALL_PATTERNS=(${ALL_PATTERNS[@]} ${PATTERNS[@]}) + add_rebuild_patterns $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 06f6299b0bb..db71326fe07 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/" - ], + "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/" - ], + "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/" - ], + "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/" - ], + "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/" - ], + "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/" - ], - "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/" - ], - "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/" - ], - "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/" - ], - "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/" - ], - "dependencies": [] - }, - "circuits-x86_64-linux-gcc": { - "buildDir": "circuits/cpp", - "dockerfile": "dockerfiles/Dockerfile.x86_64-linux-gcc", - "rebuildPatterns": [ - "^circuits/" - ], - "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/", "^l1-contracts/", "^yarn-project/l1-artifacts/", "^yarn-project/noir-contracts/", @@ -142,158 +113,85 @@ "buildDir": "yarn-project", "projectDir": "yarn-project/acir-simulator", "dockerfile": "acir-simulator/Dockerfile", - "rebuildPatterns": ["^yarn-project/acir-simulator/"], - "dependencies": [ - "circuits.js", - "foundation", - "types", - "merkle-tree", - "noir-contracts" - ] + "rebuildPatterns": ["^yarn-project/acir-simulator/"] }, "archiver": { "buildDir": "yarn-project", "projectDir": "yarn-project/archiver", "dockerfile": "archiver/Dockerfile", - "rebuildPatterns": ["^yarn-project/archiver/"], - "dependencies": [ - "circuits.js", - "ethereum", - "foundation", - "l1-artifacts", - "types" - ] + "rebuildPatterns": ["^yarn-project/archiver/"] }, "cli": { "buildDir": "yarn-project", "projectDir": "yarn-project/cli", "dockerfile": "cli/Dockerfile", - "rebuildPatterns": ["^yarn-project/cli/"], - "dependencies": [ - "aztec.js", - "ethereum", - "foundation", - "noir-compiler", - "noir-contracts", - "types" - ] + "rebuildPatterns": ["^yarn-project/cli/"] }, "aztec-rpc": { "buildDir": "yarn-project", "projectDir": "yarn-project/aztec-rpc", "dockerfile": "aztec-rpc/Dockerfile", - "rebuildPatterns": ["^yarn-project/aztec-rpc/"], - "dependencies": [ - "acir-simulator", - "circuits.js", - "foundation", - "key-store", - "types" - ] + "rebuildPatterns": ["^yarn-project/aztec-rpc/"] }, "aztec-sandbox": { "buildDir": "yarn-project", "projectDir": "yarn-project/aztec-sandbox", "dockerfile": "aztec-sandbox/Dockerfile", - "rebuildPatterns": ["^yarn-project/aztec-sandbox/"], - "dependencies": [ - "aztec-node", - "aztec-rpc", - "aztec.js", - "circuits.js", - "ethereum", - "foundation", - "l1-artifacts", - "noir-contracts", - "types" - ] + "rebuildPatterns": ["^yarn-project/aztec-sandbox/"] }, "aztec.js": { "buildDir": "yarn-project", "projectDir": "yarn-project/aztec.js", "dockerfile": "aztec.js/Dockerfile", - "rebuildPatterns": ["^yarn-project/aztec.js/"], - "dependencies": ["circuits.js", "foundation", "types"] + "rebuildPatterns": ["^yarn-project/aztec.js/"] }, "canary-build": { "buildDir": "yarn-project", "projectDir": "yarn-project/canary", "dockerfile": "canary/Dockerfile.build", - "rebuildPatterns": ["^yarn-project/canary/"], - "dependencies": [ - "aztec.js", - "l1-artifacts", - "noir-contracts", - "aztec-sandbox" - ] + "rebuildPatterns": ["^yarn-project/canary/"] }, "canary": { "buildDir": "yarn-project", "projectDir": "yarn-project/canary", "dockerfile": "canary/Dockerfile", - "rebuildPatterns": ["^yarn-project/canary/"], - "dependencies": ["aztec.js", "foundation", "l1-artifacts", "noir-contracts"] + "rebuildPatterns": ["^yarn-project/canary/"] }, "circuits.js": { "buildDir": "yarn-project", "projectDir": "yarn-project/circuits.js", "dockerfile": "circuits.js/Dockerfile", - "rebuildPatterns": [ - "^circuits/", - "^yarn-project/circuits.js/" - ], - "dependencies": ["foundation"] + "rebuildPatterns": ["^yarn-project/circuits.js/"] }, "end-to-end": { "buildDir": "yarn-project", "projectDir": "yarn-project/end-to-end", "dockerfile": "end-to-end/Dockerfile", - "rebuildPatterns": ["^yarn-project/end-to-end/"], - "dependencies": [ - "archiver", - "aztec-node", - "aztec-rpc", - "aztec-sandbox", - "aztec.js", - "circuits.js", - "cli", - "ethereum", - "foundation", - "l1-artifacts", - "noir-contracts", - "p2p", - "sequencer-client", - "types", - "world-state" - ] + "rebuildPatterns": ["^yarn-project/end-to-end/"] }, "ethereum": { "buildDir": "yarn-project", "projectDir": "yarn-project/ethereum", "dockerfile": "ethereum/Dockerfile", - "rebuildPatterns": ["^yarn-project/ethereum/"], - "dependencies": ["foundation", "l1-artifacts"] + "rebuildPatterns": ["^yarn-project/ethereum/"] }, "foundation": { "buildDir": "yarn-project", "projectDir": "yarn-project/foundation", "dockerfile": "foundation/Dockerfile", - "rebuildPatterns": ["^yarn-project/foundation/"], - "dependencies": [] + "rebuildPatterns": ["^yarn-project/foundation/"] }, "key-store": { "buildDir": "yarn-project", "projectDir": "yarn-project/key-store", "dockerfile": "key-store/Dockerfile", - "rebuildPatterns": ["^yarn-project/key-store/"], - "dependencies": ["circuits.js", "foundation", "types"] + "rebuildPatterns": ["^yarn-project/key-store/"] }, "merkle-tree": { "buildDir": "yarn-project", "projectDir": "yarn-project/merkle-tree", "dockerfile": "merkle-tree/Dockerfile", - "rebuildPatterns": ["^yarn-project/merkle-tree/"], - "dependencies": ["circuits.js", "foundation", "types"] + "rebuildPatterns": ["^yarn-project/merkle-tree/"] }, "noir-contracts-build": { "buildDir": "yarn-project", @@ -302,8 +200,7 @@ "rebuildPatterns": [ "^yarn-project/noir-contracts/", "^yarn-project/noir-libs/" - ], - "dependencies": ["aztec.js", "foundation", "noir-compiler"] + ] }, "noir-contracts": { "buildDir": "yarn-project", @@ -312,90 +209,60 @@ "rebuildPatterns": [ "^yarn-project/noir-contracts/", "^yarn-project/noir-libs/" - ], - "dependencies": ["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"] + "rebuildPatterns": ["^yarn-project/noir-compiler/"] }, "p2p": { "buildDir": "yarn-project", "projectDir": "yarn-project/p2p", "dockerfile": "p2p/Dockerfile", - "rebuildPatterns": ["^yarn-project/p2p/"], - "dependencies": ["circuits.js", "foundation", "types"] + "rebuildPatterns": ["^yarn-project/p2p/"] }, "p2p-bootstrap": { "buildDir": "yarn-project", "projectDir": "yarn-project/p2p-bootstrap", "dockerfile": "p2p/Dockerfile", - "rebuildPatterns": ["^yarn-project/p2p-bootstrap/"], - "dependencies": ["foundation", "p2p"] + "rebuildPatterns": ["^yarn-project/p2p-bootstrap/"] }, "prover-client": { "buildDir": "yarn-project", "projectDir": "yarn-project/prover-client", "dockerfile": "prover-client/Dockerfile", - "rebuildPatterns": ["^yarn-project/prover-client/"], - "dependencies": ["foundation"] + "rebuildPatterns": ["^yarn-project/prover-client/"] }, "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"] + "rebuildPatterns": ["^yarn-project/rollup-provider/"] }, "aztec-node": { "buildDir": "yarn-project", "projectDir": "yarn-project/aztec-node", "dockerfile": "aztec-node/Dockerfile", - "rebuildPatterns": ["^yarn-project/aztec-node/"], - "dependencies": [ - "archiver", - "circuits.js", - "foundation", - "l1-artifacts", - "merkle-tree", - "p2p", - "sequencer-client", - "types", - "world-state" - ] + "rebuildPatterns": ["^yarn-project/aztec-node/"] }, "sequencer-client": { "buildDir": "yarn-project", "projectDir": "yarn-project/sequencer-client", "dockerfile": "sequencer-client/Dockerfile", - "rebuildPatterns": ["^yarn-project/sequencer-client/"], - "dependencies": [ - "acir-simulator", - "circuits.js", - "ethereum", - "foundation", - "l1-artifacts", - "merkle-tree", - "p2p", - "types", - "world-state" - ] + "rebuildPatterns": ["^yarn-project/sequencer-client/"] }, "types": { "buildDir": "yarn-project", "projectDir": "yarn-project/types", "dockerfile": "types/Dockerfile", - "rebuildPatterns": ["^yarn-project/types/"], - "dependencies": ["circuits.js", "foundation"] + "rebuildPatterns": ["^yarn-project/types/"] }, "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"] + "rebuildPatterns": ["^yarn-project/world-state/"] } } 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 8291740c03b..00000000000 --- a/circuits/cpp/barretenberg/CHANGELOG.md +++ /dev/null @@ -1,473 +0,0 @@ -# Changelog - -## [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 - -* **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/cpp/bin-test/target/acir.gz b/circuits/cpp/barretenberg/cpp/bin-test/target/acir.gz deleted file mode 100644 index d1fe5b039c4050ee4b3e8e427d15665965d95cfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1313 zcmcK1k5f{2003}JP|HM7MEr$IPgiZa^@}tX_G8wyR%4slb(CB0orwCrcw3ucl*>%Q zAJA)C+}T@Nx;V>I;URA*J?ZtIl$Xu*y!^EL%kh1i zN7rPmTq)#x<>D;OM+^q_bNc;3m{OIM#e|Y+&Lp-o**_wQQjM~9p^PCkeia&V6^$)K zna@#n3`(y@V-BEEHZ&m%FyUJG?B^=ui~?^`HX&kdD76CQ<8uZXWDhe(dqPwKHqTucTe$)v-2x>w+6kG#-_+k%^}@Qaox>9$C{## zHHXbNCCr(WP*h2TJs~{AkW_nk!i8WGP*g zz0RL!!~45}>mFQ>_Lf&kUWFX5?wH=t)BBs3Ht7obTi!UmuDrLy8~VHN&63Gcc^6Ny zE~EBH#@P^qe7B+QJwr{gK^bSL78n#%UB4kr2o4U`jDQi zvApwt?8L_N1}k1q+w|-2&4nEq?)#4H`7DuhfhaDN5c13~9LE&5u)m9@Ab~{x+ zgnWzLQg>cOim(B-{yB0C>lJp^BSNfSsJ9`dSf9JI3lU?3Zv7lmF1X3;tU?Y8ZZq}$ z$Txyps?IA&pR|m)q0J%&?YXnULaI$V9MG}G_;k(S!KjIfM8ZN zQ4hodtBN=efWt}<7eNWvs`OBOO(%wWkgv2I_OTaJo=~6q#N8e+seNUC^TOw;EXXVP z`uMZgJ3X+k`mMPXzX+loqoulW5at;1;5R^`W6Yy_OZst5G`x}w=bCA{J~Ej5NQpO- zEUrbVbCDG8!@c-VB!fG;S2sc~=Z*~HIx?O+HmsW^ml#dycr6)WG^gwClFN*b+VNI0 z)@W(hO_71dhhiKfnZ{AE&Oy?QBQJ3y$u^F?)cHt%sfmrBA?Z>xTQ^89l|E{~A1ru+ z5B?xtocI6YTtUvZ{G6@(a<+eO-m=HM4VbqcGH*YzUjEpdw2>EAl)SNLdSQ&yGm_V+ zEg&6yno0n6uN3CWM+8kc!!a z+5>=tjk`6OARTkKwPk>ZO)@o9utH#EYO}!_!DE#s1*{U-RoZ-zDVWIBT&B+^GI$F; zGt?~O3{{+ip9fKb(Olgq2o;Q2a6L#6j9GNAL8UybrlWbqn8L)`V`AJl#iyAf+Dx&) z#3W7Zgj0Q!nnvH95#y!B#pj3qEF7QBYzujxQIYLzY`Bx%aC38Gq(MGY($-3MeP%y6 KBwQQg=l2gwqm()T 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 b250bdfe7bcba64748c742805a950877e2a6b4fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8388 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 aVXU{mFxER<80&Et#`*`PB6RwQXaE4t>{CJj 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 4a19aa6095d..00000000000 --- a/circuits/cpp/barretenberg/ts/CHANGELOG.md +++ /dev/null @@ -1,213 +0,0 @@ -# Changelog - -## [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 - -* **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 d1fe5b039c4050ee4b3e8e427d15665965d95cfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1313 zcmcK1k5f{2003}JP|HM7MEr$IPgiZa^@}tX_G8wyR%4slb(CB0orwCrcw3ucl*>%Q zAJA)C+}T@Nx;V>I;URA*J?ZtIl$Xu*y!^EL%kh1i zN7rPmTq)#x<>D;OM+^q_bNc;3m{OIM#e|Y+&Lp-o**_wQQjM~9p^PCkeia&V6^$)K zna@#n3`(y@V-BEEHZ&m%FyUJG?B^=ui~?^`HX&kdD76CQ<8uZXWDhe(dqPwKHqTucTe$)v-2x>w+6kG#-_+k%^}@Qaox>9$C{## zHHXbNCCr(WP*h2TJs~{AkW_nk!i8WGP*g zz0RL!!~45}>mFQ>_Lf&kUWFX5?wH=t)BBs3Ht7obTi!UmuDrLy8~VHN&63Gcc^6Ny zE~EBH#@P^qe7B+QJwr{gK^bSL78n#%UB4kr2o4U`jDQi zvApwt?8L_N1}k1q+w|-2&4nEq?)#4H`7DuhfhaDN5c13~9LE&5u)m9@Ab~{x+ zgnWzLQg>cOim(B-{yB0C>lJp^BSNfSsJ9`dSf9JI3lU?3Zv7lmF1X3;tU?Y8ZZq}$ z$Txyps?IA&pR|m)q0J%&?YXnULaI$V9MG}G_;k(S!KjIfM8ZN zQ4hodtBN=efWt}<7eNWvs`OBOO(%wWkgv2I_OTaJo=~6q#N8e+seNUC^TOw;EXXVP z`uMZgJ3X+k`mMPXzX+loqoulW5at;1;5R^`W6Yy_OZst5G`x}w=bCA{J~Ej5NQpO- zEUrbVbCDG8!@c-VB!fG;S2sc~=Z*~HIx?O+HmsW^ml#dycr6)WG^gwClFN*b+VNI0 z)@W(hO_71dhhiKfnZ{AE&Oy?QBQJ3y$u^F?)cHt%sfmrBA?Z>xTQ^89l|E{~A1ru+ z5B?xtocI6YTtUvZ{G6@(a<+eO-m=HM4VbqcGH*YzUjEpdw2>EAl)SNLdSQ&yGm_V+ zEg&6yno0n6uN3CWM+8kc!!a z+5>=tjk`6OARTkKwPk>ZO)@o9utH#EYO}!_!DE#s1*{U-RoZ-zDVWIBT&B+^GI$F; zGt?~O3{{+ip9fKb(Olgq2o;Q2a6L#6j9GNAL8UybrlWbqn8L)`V`AJl#iyAf+Dx&) z#3W7Zgj0Q!nnvH95#y!B#pj3qEF7QBYzujxQIYLzY`Bx%aC38Gq(MGY($-3MeP%y6 KBwQQg=l2gwqm()T 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 b250bdfe7bcba64748c742805a950877e2a6b4fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8388 zcmV;#AUoe5iwFP!00002|E-);v@T1Uu4}bz+eR48YTI@Nk8Pi}ZQHhO+qP}@^ZtGF z&%4agSv5xOU3;(j&B%xkFCz1Cj~;XTkN)!5fBf6WIBSX<&Dk`1-(lI2R@fodFlRJn z)SBk*%i0{)?zMDlqpAEMZ&FC6Ki*v|^H2JZHIIK;EEAvL!gW32b?dTEbX_d-#23bT zk_%%!>4mYL?7~=2eqpSqxG>gJUKs1CE{yfm7sh&;3u8U)g|VLQ!dOp#VXSAkFxE3( z80(oXjP=ZiV}-GUv2pkoUClejG7Q0Lz z^H~qastm)teaOrDZT(uK&bqzJZMfKGv-a6et;^QxYe+n-3%RxG+nT-QSR%h=J^SHU zar$6dT%+6O{V+Y77_(=DSL=)!H9yC>b*u5AI|d6kl_-GgRZSr-%~H&b5XTs?X>ZLFL0tR{DpEZwV^T9q;3B@f54 zX;zw_Evb*SbMrK>G*&i#^)Pzu?xjxV7d33w42@H$dksd1_dIpzC61Rqp7)*R7k#N- zHDDJd;O3fhvtM+y#g3iZuQL3~Wz(38@6lz;q$?}55r*6LaI7+OUsUt1)Nw48!zTo2tXRg_u#S?DTQEB`u4sxWY5R)HmZr{5<9*bVX&~Nl*vrI^ZM=Z9*?Mz{`g*d{w zb7X!j9(6&BbLyGiGl*NMqEu%*9E%=k8IQJa=KdUJMRnG?NUTyLi!=OW#9#@&5xJH-WAqWnn zkzEb-IQ}w?UEaYp&k;53HiIz*;4{if;n?7_XHSAO~9=a@oZ-ek)N zn~b)!ILpvl%r1EsMozDAZe7EUkRACkLuj!w%`&BsT}MRSu8@?VVks zk&;$5?o5wJKs-}ZdX2-e=8mQ1-YDh0e2SKamitKHSWp1%(Z1%nb?p{yBdelkF}}e$ z96iy@-rb0=bsR?*Xo80o)fjn5%R@5DX9w;8q=6abwNK)E=7+7N!2V_(J|+6TV|e)7 zR(qWj{BfJ5*0Q$ty`cO0%*3YME=oML`MT%oaR33q0ds5vI?scC=z;sA!EOBO9mmlL zV&-9@tFb!QJ&AQgC$xUZWcKm(&+S)Up}OSy^o4SC(*O`X`v;sT`wfog*UaFgtuq@N z&AgHawZuAhhn7O<#~YsHL&Mi>;G@*hSc%jKuy*w@GXIT^*CSJ!#gOczW`wwGNGV0d z7%I(n6puGPi6?UJKuef`Mv$3?SrlvPv{-N6n@sUJHGWvTu4JrE+q=8XHClPV6R{+k6-fVt-HI^u4lkmykrKk_`E5_~#{__buPoaEbv}C+L9aQX(A4^N$MHQ= zBF>z_%z`y^t#0^l@HN$vU?t`4Pp*rNq6MNWpl{U3MomWraggXS?{ETtA>*Lv%to4$ z26RPqlo+cs8!T(qc-%=mvA2)fHuOdfHl7itjcVj;Z|!ib)r&xdbh$MNQhcEC0~9y2 z0L1TFKZ)<*|Fz^rDZ)95*$F;WoFy(p>UgXg0yPa&7l&;8mGpFpatL!px5Jnx*9A|9 z9Sg*@9@YZD<~A9Va2vNy=uC9NPKU{uwo|w~0nO1(;MxJ@3T$_-Pc#DoA}>*-CyC#s zI`Vvb&NbpcJKn#5fRe1ha>zqKUZ9{yKU|YJ+qZT7pP%esF*DYHnLfD;mSBo>mW1x- zR{j^q@z>hPDg(eGRjnp-sGw@pd{73Pxc}w3{sp^m63zzA2W|#supDG)8-8m3)rnXI z{iT5eVWWl20DmR0J@lyVJh0{e^~t_UeHRb986C|R;bfw_XSl5z>%Td!e^G!7k^ysB zWfd42&}jn8p&zKNP~Lxg?i{CcU-?ueuIywAOy9A9E3F_ zRKX#v<&YHizdyIG1;D)JDUH60#aQOGYX~6Q#Q$)dZ*zQhqCSJ}J!ILT?BT~yh^|Yz z%H=gDv#)4XAw^f5M|+7 zqs9MnvKN94Qy8~=Z@5)4BCo>MbQ5L%*W)?Cq8O>{GPyt}>((N2K-ni*QX!M>zn$zk z70n6&Kn?VQ7BEZAVFe@*;QoI zz|r_0xSHvIpYWQ(1|y*@B^1mGDru+!8*gq%7LBv~pOcsgY=W2BOG+_}R;ceS2?f18 z)&F}u@0mNUAVkkqWlnGK?;st3{4l@8)BeAcnpH3OgRtZvFO9T9lZMkWk=VTdf1Jbc z({*D`P(k21ChxGaeGA?dnS%KEj_39ZIO8VW6w1h4VqGcHs?ihZV&E(8@mbBn z*MW3<=i@@jf7g@e2*^S1sr>~H^Y41WcJFmU6V09K8S;N=?^f=wLym-Ov%J8zz4y6utP4bAW^mnr zAxKwHc}OX*0{GR6 z4TkqSF(2({NX2ao>?&p~wFpK`88=gxMCyG1bL&E5ECGTSoq7aT-^v5YkCBwe{(uwS zT!Ck7@E0}=MCyjg0ZVvwQMyd5A9&I`sU&5`p1|G+gE7SUvop&fA+L?ZCC zGU%zWOswv1KJ+AacLCg-BPvWwrEQ!-YCNEJ_#Qs&1kOolR0Wbegp(?}g;0Uos!JIm z!7D%f+DB z3HPx|$FU}j@VGogJ+jMD@CLHcFf~lL3GRqz9xa-QtGg^Dz1A3Myq|a%iz-Fi$1y`s z?0ujq3V!x+~1HBXNfO*(A z3K5eMst^Op9)5?eg^l(p_v>l^2DS?fq>&y`7z^pV(5^Eq!_&QFnTPKB8X%{#7VJ!O zXf@+w{?z+e(*+t)w3w)&Oqx@2zGS8%`aiyg5oDt2NFawamfOWbG5CRL#SebkeXKD; zV`%jS%p3UMUj7-=9;S~k4rNDQCzka(1O5;i$^d{_Cjo1_Prr-hmVu8-hM^W$Mj^#(i-G%RA1Md+go z1|<(ggn0g0_c=iWZlIWol#y9}SerSTw9h)3Gcy#=Mm2^Hb*5Fyj}ocmawF{(*d@~tcx z^?2b}Wt>vcBa{0m?RuPygl|*(W4y=AHi(8*&HZM84B zkCk-?h}j2T!(gPuEAYLu@lG%J@RXDTte*x%8=Mm3V8;-oj*Qq%_`(Oz2r}@2e#ctAr@_+KEwVu+z(~IM{v4ThDT#(BFDZ#Gp=$$>&sBD!@EY`WR~ayD zgV*Iy7D({m;72ii$%AJ^{06@G=%_{QNOgS+NDREHLa)F)Mg&C#fU$3Y;iREh04xte z#(n97o)aiWb#u?mqDOb{6qHFqia)n{ED5%S3IakftboH8|eHzWlS6sb%oxAa4@Lfn~ejm zN2(H4FcoKwp_}^#34i7NGuB1fU;`HQXhs;(sE!-pq8u6>dppt(EGIG*QHrF{(baLj zVaZ?hphr){0ZjA^S0W*qU#@vhl^>?zAj9pAAcqJB-nC5RAk7>_4%GyJQos7X7t-Yo zh7TM)Kn!MN^`tpkixohn63{eef?$t_!%rBxJ&GAs7{FWj z8vrF@NQeN5RCqe0fcghT0~pv{5EwGN3txKz=U}{(nE-++OB=fh)r7xeCk-M+++X(q zn`~qiQnk@oIe|@Wf_3n*jZ6+2{{(z<%1M;UBG!6c(a1F-_V`x6{y{7p5&rbVnj)72 zXr5DO3kQIjgIwqanr;gf<`t(5mb0-b!$}xA)HmGk7rmI3kpledWtQfW)E4wzVV)_4 z$uWE603)=bN^~ME-HX!eBKaHd_Y1+ORvz01A_LkCPjF?zDQQqwdG^&+qg z0s!s_%T4smZ+eicNKuGd+hkpf&jovgc{vl+*6lK=4RS=ghwr#{2b?us2 z7v(pRD)5i(zy0B?)%!Pe`i*#miM<&=YAx(EGPWt$;~V2rY9Gl7Tcf!7naUr*lMmnV z05c&q(3i)K0AOrq@{%6k{frDwQURnf&gDSXBV zw3c7Q2Ch`-zY;~i>l}BVv@-@IkU#1oCd5M>7{CEOi{E`b7HIi)nVdoAbt#vskcSvL zxr~8j>-U`WMd|SHGY+81+xDmnP#I7P9c_K@aV`ohVtV=QB$(JrR|3F-d%)N>rP0gx zJ?7;798bvrjj^KxxCg{eS^5ovT;cnVpCk3&3#}eR?y20qy)eJq7L5*=U*->-)I?EC zx~{Mka4-rfa4%{5z>a?Z;DtWl4?V!XOs2A{L%cAwJ(xmf^20YUEP1}wF}=WuTQ5eb zIZZk<1Br$XiyQ8TuUnV-kqcw}=!LOgFUKs1AE{yfl7smRT3uFE4 zg|U9_!dO3lVXR-cFxD?#80(iVjP=VG_SIiG?jt*OQg{YjH@3$7wnzhcB2<8uVQTJI zPx_+3MbMzGW$M}lr~-j)Wz?)(=dV5H_?>whZ?Dy+Jkyo}R?(TJGztuTB!>R$CueQU zl6BB)p^d9DJy4h$BqAU-{l?)~J))T*S?I<~fK$TgT>)cy^gw7iO4M(j+b@L8VWj*w z^or#Z+6dEb%Jm-Ww~qTmesmOEz(Z$7cfIV4oCcM4;5&4f+JF1pes#ZOXp$AuJ3)lQ zMXWwj0}=Okj^|gA)eB$-9!=k72PH?uDISlL+p|99IX%~1FXnRVA91ZN3GBSU8 z(zoIWGfGTa5^}9HC+IRpzC%U+tK+daL})L$gb%mSXIeqL;$hJZ3+hPQe|>JhTnt96 zKCg%n8}zjXlzdJUfztiWac-s83dt^v9+wd4EbBtLkLY*Sa~M1S?YVkHOhqKu+wxVD zEW_vZPQ}*6O8@yJu+?a(y1kIll)`%S=-j(Vs1XP;a^CPNEnB9<2*ESd z+~XaNg@B4PisFQYg?NlH&ETjNK^MPop>~+ZKew(migZYtpeLp9*S4;gM}0G6`zJUY z3yliRh$f+Hopw$qHzXkpODElOQ=ahAx%r4W3DhcbF_4I{RS*WHCLtEPCpsJpHN2^f zVj1b$3XOTijNXB$91Zg~$0vSt?w!S?JCs0?zH}1_1(-pkPg-Oq+>;!Rm1X`RfHKGQ z@{vUmsyNv49~@!~df=0u+b_DG?lQHFd25P*oY6bL)HdqdlN~=toE<}7M_)424XfJ# z^yXqp2G~{5-IG5$S&vEur%SqeV_VP_sJT3vh_g>|I98jI#~0FOyN%bd0!FOiG1urw zwrxJ;xpUOlhCmePFq~*c@YUGG^9E7P@Kne9L>|)L=nUw*yUw0a{k&dm(WQpSzAEARttq+F~jNr%j^Ag+?7Nb$sb>>q2;T@36vW*W9kAv36ijJ42l%NsWDYR`Bdi?NK|K=T}W#Ww~PFi{%oP)%co zj)~8Kw>ASUIrhbFx=P1Kw*@}cXS#nzPs*$cT!U)LA4;+fk%?oQtJH-z2*yczN1EMa zQ0j%64pq>5<+#7ke4k$lHkh#BJe*)8JV)F*hwlsZLD4VrsTj8f6&_faQmJx2Zw5rv zjy}tS{6c{Zt%GZ+e9Ti#oQ%`WgECn0yN2E+uMBM(bY#aD`mLGxowpD4JnMZdOdq&S zxP5I&-jvYa4(0n29Ot@!w)>C!S8*x`)9N+$STLe!J7vl=WV_2 zeB%J&_~Ny-thox@#g4Ws=^QYVoTCAmwV(ZdU9$l)u&RrNZHAjcIq90N7rpC{brU89 zU~k5sWn5DoojsvEDgest=XmtclV%`qGM4Aq6ImCkp7DY)N1E&~a1Bm2TeevkJ`)Dd z1YYL?SU2rC@1Ifrid(usq0eYEy&zO6ric><55na&fUU@nPrM(pOG3Hc>CY6Y&+fS% z>=z`J9)b5uO4Fh?rO^v6J}IkLMR#e23Uh(TP1Xm#BOGAgIU4+0)vX}!mqMq7<;@ch#~EQ-=?ekm;=`301CVHR22wAv%SFm-g9P2{xA06 zirQ2xd?$H>T41|$^%ZqUmkYdGpp)2O%j!0C5su;o@7F~)O-#`Urz^K~T`t=QYX{!4 zO1dg$U!mX|Y|Yc@;wFLeDL97zCnVV%JqExL|tG2hSL) z-fN-q3fjTQ0!mHa^#D6Cp-0ad>m2S$FQQn1D`cv%Ky(18883DpD^nnnCHZ-PEvbbHr>gxqK$XM_z)WrV+Bs9Q6KtVEsQ4y-978MD*7ZTAg_vV2 z$Gef|0){z2`z24{oGD;#lN6ZknZF2Ej2QG2atEFiUg|#9vMOuTKcR`ND{+t>MrP`E z4UJyc^!cjB9Bnevb^}T*Ceh*%Q+(xvu26Ey!ZZ(}kKYpB`V_b!{&b?T&#y&?Lrk9Aj8qAO|)X{(8^S4HV@dh@VH?7s#F zd@zS5mL#zbp?Gv zJ_5ChiV28X)ClPqQDwvh>fw5{^cc|a)Q6OKVx%j{$iR})mSnKuU*;qi1#tquwq?XR zq~2u56cPj1x$v^bV=)U>?E09(nhr>)5ye1ACML&FkNf4$X&u&aKvnO4#|{jjc0$t| zH|*~)FMl|eI;|JcT2w<;YU%Yw5EaG@n2gGMg>zigA|SX(4+*+Dh^#4dMv$CDGp~4j zU0L{))CXoz^F=Sj zW4+3Sv0nAUSg&?rtXID<)@xiC>oqTo^;#FkdhH8iz0QTPUiZRSuXkar*S|2<8(bLc z4KIxKMi<6<;|pWG$%V1r^ukzgc44eHzcAKYTo~&uFO2n87sh()3uC>_g|XiD!dP#2 aVXU{mFxER<80&Et#`*`PB6RwQXaE4t>{CJj 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 73600fc890e..1dc91d8ba1a 100644 --- a/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang +++ b/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang @@ -1,16 +1,14 @@ +FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-wasm-linux-clang as bb + 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 - -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 +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 59ce8179f8b..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 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-wasm-linux-clang as bb + 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 - -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 +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: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/docs/about_aztec/roadmap/features_initial_ldt.md b/docs/docs/about_aztec/roadmap/features_initial_ldt.md index f85c0bc28bf..50cf79233f1 100644 --- a/docs/docs/about_aztec/roadmap/features_initial_ldt.md +++ b/docs/docs/about_aztec/roadmap/features_initial_ldt.md @@ -8,7 +8,7 @@ Devs should be able to quickly spin up local, emulated instances of an Ethereum Here's a summary of the features we intend to support with the first release of the Aztec Sandbox. -## Noir Contracts +## Aztec.nr Contracts - Noir `contract` scopes. - Declare a `contract`, containing a collection of state variables and functions. @@ -21,7 +21,7 @@ Here's a summary of the features we intend to support with the first release of - public functions - May read and modify public state. - `constructor` functions, for initialising contract state. -- `import` other Noir contracts, so their functions may be called. +- `import` other Aztec.nr contracts, so their functions may be called. - Nested function calls, for contract composability - private functions can call private functions of other contracts, and receive return values. - private functions can call public functions any contract. @@ -29,14 +29,14 @@ Here's a summary of the features we intend to support with the first release of - public functions can call public functions of other contracts, and receive return values. - private functions can be called recursively. - public functions can be called recursively. -- Send messages from Noir contracts to Ethereum L1, for consumption by L1 smart contracts. +- Send messages from Aztec.nr contracts to Ethereum L1, for consumption by L1 smart contracts. - Useful, for example, if writing an app to withdraw funds from L2 to L1. - Consume messages which have been sent by: - L1 functions. - Useful, for example, if writing an app to deposit funds from L1 to L2. - public L2 functions. -- Emit `event` data from a Noir Contract. - - Allows applications to subscribe to events which have been emitted by a Noir contract's functions, for example. +- Emit `event` data from a Aztec.nr Contract. + - Allows applications to subscribe to events which have been emitted by a Aztec.nr contract's functions, for example. - Write `unconstrained` functions. - These allow developers to write `pure` and `view` functions, which can perform calculations and retrieve state. E.g. for fetching contract-specific information, which may then be consumed by a dapp, without having to generate a zero-knowledge proof or interact with the 'network'. @@ -46,13 +46,13 @@ A typescript wrapper for making RPC calls to an Aztec LDT node. - Similar in purpose to `web3.js`/`ethers.js`/`viem`, but for interacting with Aztec Network nodes. The RPC interface for an Aztec node is necessarily different from that of an Ethereum node, because it deals with encrypted transactions and state variables. - A library for public/private key management. -- Construct `Contract` instances from a Noir contract's JSON ABI. +- Construct `Contract` instances from a Aztec.nr contract's JSON ABI. - Deploy new contracts to the Aztec LDT. - Construct tx requests, passing arguments to a function of a contract. - Sign tx requests. - Send txs to the LDT node, for simulating. - Send txs to the LDT node, to be sent to the LDT network. -- Call `unconstrained` functions of a Noir contract, to perform `pure` calculations or retrieve state. +- Call `unconstrained` functions of a Aztec.nr contract, to perform `pure` calculations or retrieve state. ## Aztec Local Developer Testnet Node diff --git a/docs/docs/concepts/advanced/circuits/kernels/private_kernel.md b/docs/docs/concepts/advanced/circuits/kernels/private_kernel.md index d079a3deaa8..405a6163061 100644 --- a/docs/docs/concepts/advanced/circuits/kernels/private_kernel.md +++ b/docs/docs/concepts/advanced/circuits/kernels/private_kernel.md @@ -6,7 +6,7 @@ This circuit is executed by the user, on their own device. This is to ensure pri - Verifies a user's signature. - Hides the user's address. -- Verifies an app's proof - i.e. a proof which has been output after the execution of some function in a Noir Contract. +- Verifies an app's proof - i.e. a proof which has been output after the execution of some function in an Aztec.nr Contract. - Performs private state reads and writes. - Exposes (forwards) the following data to the next recursive circuit: - new note hashes; @@ -21,5 +21,5 @@ This circuit is executed by the user, on their own device. This is to ensure pri - Verifies a previous 'Private Kernel Proof', recursively, when verifying transactions which are composed of many private function calls. - Optionally can [deploy](../../contract_creation) a new private contract. -> Note: **This is the only core protocol circuit which actually needs to be "zk" (zero knowledge)!!!** That's because this is the only core protocol circuit which handles private data, and hence the only circuit for which proofs must not leak any information about witnesses! (The private data being handled includes: details of the Noir Contract function which has been executed; the address of the user who executed the function; the intelligible inputs and outputs of that function). +> Note: **This is the only core protocol circuit which actually needs to be "zk" (zero knowledge)!!!** That's because this is the only core protocol circuit which handles private data, and hence the only circuit for which proofs must not leak any information about witnesses! (The private data being handled includes: details of the Aztec.nr Contract function which has been executed; the address of the user who executed the function; the intelligible inputs and outputs of that function). > This is a really interesting point. Most so-called "zk-Rollups" do not make use of this "zero knowledge" property. Their snarks are "snarks"; with no need for zero-knowledge, because they don't seek privacy; they only seek the 'succinct' computation-compression properties of snarks. Aztec's "zk-Rollup" actually makes use of "zero knowledge" snarks. That's why we sometimes call it a "zk-zk-Rollup", or "_actual_ zk-Rollup". diff --git a/docs/docs/concepts/advanced/circuits/main.md b/docs/docs/concepts/advanced/circuits/main.md index b959287941a..3f21cb79053 100644 --- a/docs/docs/concepts/advanced/circuits/main.md +++ b/docs/docs/concepts/advanced/circuits/main.md @@ -7,7 +7,7 @@ title: Circuits In Aztec, circuits come from two sources: 1. Core protocol circuits -2. User-written circuits (written as Noir Contracts and deployed to the network) +2. User-written circuits (written as Aztec.nr Contracts and deployed to the network) This page focusses on the core protocol circuits. These circuits check that the rules of the protocol are being adhered to. diff --git a/docs/docs/concepts/advanced/data_structures/trees.md b/docs/docs/concepts/advanced/data_structures/trees.md index 75cbcdddf45..903b80a3de1 100644 --- a/docs/docs/concepts/advanced/data_structures/trees.md +++ b/docs/docs/concepts/advanced/data_structures/trees.md @@ -25,11 +25,11 @@ So, if an app needs to edit a private state variable (which will be represented ### Example Note -An example blob of data might be defined in a Noir Contract as: +An example blob of data might be defined in an Aztec.nr Contract as: ```rust struct MyNote { - storage_slot: Field, // determined by the Noir Contract + storage_slot: Field, // determined by the Aztec.nr Contract value: Field, owner_public_key: Point, // The owner of this private state // (and the person who may edit it). @@ -37,7 +37,7 @@ struct MyNote { } ``` -The note might be committed-to, within a function of the Noir Contract as: +The note might be committed-to, within a function of the Aztec.nr Contract as: ```rust note_hash: Field = pedersen::compress( diff --git a/docs/docs/concepts/foundation/accounts/keys.md b/docs/docs/concepts/foundation/accounts/keys.md index 0e4755c3798..9f7ca23f581 100644 --- a/docs/docs/concepts/foundation/accounts/keys.md +++ b/docs/docs/concepts/foundation/accounts/keys.md @@ -69,7 +69,7 @@ The privacy master key is used to derive encryption keys. Encryption keys, as th In a future version, encryption keys will be differentiated between incoming and outgoing. When sending a note to another user, the sender will use the recipient's incoming encryption key for encrypting the data for them, and will optionally use their own outgoing encryption key for encrypting any data about the destination of that note. This is useful for reconstructing transaction history from on-chain data. For example, during a token transfer, the token contract may dictate that the sender encrypts the note with value with the recipient's incoming key, but also records the transfer with its own outgoing key for bookkeeping purposes. -An application in Noir can access the encryption public key for a given address using the oracle call `get_public_key`, which you can then use for calls such as `emit_encrypted_log`: +An application in Aztec.nr can access the encryption public key for a given address using the oracle call `get_public_key`, which you can then use for calls such as `emit_encrypted_log`: #include_code encrypted /yarn-project/noir-libs/value-note/src/utils.nr rust @@ -81,7 +81,7 @@ In order to be able to provide the public encryption key for a given address, th In addition to deriving encryption keys, the privacy master key is used for deriving nullifier secrets. Whenever a private note is consumed, a nullifier deterministically derived from it is emitted. This mechanisms prevents double-spends, since nullifiers are checked by the protocol to be unique. Now, in order to preserve privacy, a third party should not be able to link a note commitment to its nullifier - this link is enforced by the note implementation. Therefore, calculating the nullifier for a note requires a secret from its owner. -An application in Noir can request a nullifier from the current user for computing the nullifier of a note via the `get_secret_key` oracle call: +An application in Aztec.nr can request a nullifier from the current user for computing the nullifier of a note via the `get_secret_key` oracle call: #include_code nullifier /yarn-project/noir-libs/value-note/src/value_note.nr rust diff --git a/docs/docs/concepts/foundation/state_model.md b/docs/docs/concepts/foundation/state_model.md index e29d1350849..87db190203c 100644 --- a/docs/docs/concepts/foundation/state_model.md +++ b/docs/docs/concepts/foundation/state_model.md @@ -10,7 +10,7 @@ import Disclaimer from '../../misc/common/\_disclaimer.mdx'; ## Private State -Private state must be treated differently from public state and this must be expressed in the semantics of the Noir language. +Private state must be treated differently from public state and this must be expressed in the semantics of Aztec.nr. Private state is encrypted and therefore is "owned" by a user or a set of users (via shared secrets) that are able to decrypt the state. @@ -22,12 +22,12 @@ Modification of state variables can be emulated by nullifying the a state record ### Abstracting UTXO's from App's / Users -The goal of Noir's contract syntax is abstract the UTXO model away from an app user / developer, contract developers are the only actor who should have to think about UTXO's. +The goal of the Aztec.nr smart contract library is to abstract the UTXO model away from an app user / developer, contract developers are the only actor who should have to think about UTXO's. This is achieved with two main features: 1. Users sign over transactions, not over specific UTXO's -2. Noir contracts support developer defined `unconstrained` getter functions to help dApp's make sense of UTXO's. e.g `getBalance()`. These functions can be called outside of a transaction context to read private state. +2. Aztec.nr contracts support developer defined `unconstrained` getter functions to help dApp's make sense of UTXO's. e.g `getBalance()`. These functions can be called outside of a transaction context to read private state. ### The lifecycle of a note diff --git a/docs/docs/dev_docs/contracts/common_errors.md b/docs/docs/dev_docs/contracts/common_errors.md index 75762ef9cd6..ce96e27ed09 100644 --- a/docs/docs/dev_docs/contracts/common_errors.md +++ b/docs/docs/dev_docs/contracts/common_errors.md @@ -2,7 +2,7 @@ List common errors. -There are two kinds of errors: errors in a noir contract, and errors spat out by an Aztec Sandbox node! +There are two kinds of errors: errors in an Aztec.nr contract, and errors spat out by an Aztec Sandbox node! Maybe even auto-generate error docs, based on error codes in our codebase. diff --git a/docs/docs/dev_docs/contracts/compiling.md b/docs/docs/dev_docs/contracts/compiling.md index 109aa96732b..845ffdf645e 100644 --- a/docs/docs/dev_docs/contracts/compiling.md +++ b/docs/docs/dev_docs/contracts/compiling.md @@ -1,10 +1,10 @@ # Compiling contracts -Once you have written a [contract](../contracts/main.md) in Noir, you will need to compile it into an [artifact](./abi.md) in order to use it. +Once you have written a [contract](../contracts/main.md) in Aztec.nr, you will need to compile it into an [artifact](./abi.md) in order to use it. In this guide we will cover how to do so, both using the CLI and programmatically. -We'll also cover how to generate a helper [TypeScript interface](#typescript-interfaces) and a [Noir interface](#noir-interfaces) for easily interacting with your contract from your typescript app and from other noir contracts, respectively. +We'll also cover how to generate a helper [TypeScript interface](#typescript-interfaces) and an [Aztec.nr interface](#noir-interfaces) for easily interacting with your contract from your typescript app and from other Aztec.nr contracts, respectively. ## Prerequisites @@ -76,13 +76,13 @@ export class PrivateTokenContract extends ContractBase { Read more about interacting with contracts using `aztec.js` [here](../dapps/main.md). -### Noir interfaces +### Aztec.nr interfaces -A Noir contract can [call a function](./functions.md) in another contract via `context.call_private_function` or `context.call_public_function`. However, this requires manually assembling the function selector and manually serialising the arguments, which is not type-safe. +An Aztec.nr contract can [call a function](./functions.md) in another contract via `context.call_private_function` or `context.call_public_function`. However, this requires manually assembling the function selector and manually serialising the arguments, which is not type-safe. To make this easier, the compiler can generate contract interface structs that expose a convenience method for each function listed in a given contract ABI. These structs are intended to be used from another contract project that calls into the current one. For each contract, two interface structs are generated: one to be used from private functions with a `PrivateContext`, and one to be used from open functions with a `PublicContext`. -To generate them, include a `--interface` option in the compile command with a path to the target folder for the generated Noir interface files: +To generate them, include a `--interface` option in the compile command with a path to the target folder for the generated Aztec.nr interface files: ``` aztec-cli compile --interface ./path/to/another_aztec_contract_project/src ./path/to/my_aztec_contract_project @@ -128,7 +128,7 @@ impl PrivateTokenPrivateContextInterface { } ``` -Read more about how to use the Noir interfaces [here](./functions.md#contract-interface). +Read more about how to use the Aztec.nr interfaces [here](./functions.md#contract-interface). :::info At the moment, the compiler generates these interfaces from already compiled ABIs, and not from source code. This means that you should not import a generated interface from within the same project as its source contract, or you risk circular references. @@ -143,9 +143,9 @@ npm install @aztec/noir-compiler ` The compiler exposes the following functions: -- `compileUsingNargo`: Compiles a Noir project in the target folder using the `nargo` binary available on the shell `PATH` and returns the generated ABIs. +- `compileUsingNargo`: Compiles an Aztec.nr project in the target folder using the `nargo` binary available on the shell `PATH` and returns the generated ABIs. - `generateTypescriptContractInterface`: Generates a typescript class for the given contract ABI. -- `generateNoirContractInterface`: Generates a Noir interface struct for the given contract ABI. +- `generateNoirContractInterface`: Generates a Aztec.nr interface struct for the given contract ABI. ## Next steps diff --git a/docs/docs/dev_docs/contracts/contract.md b/docs/docs/dev_docs/contracts/contract.md index 9e94abb09ff..211491237ee 100644 --- a/docs/docs/dev_docs/contracts/contract.md +++ b/docs/docs/dev_docs/contracts/contract.md @@ -18,7 +18,7 @@ contract MyContract { ``` -> A note for vanilla Noir devs: There is no [`main()`](https://noir-lang.org/getting_started/breakdown/#mainnr) function within a Noir Contract scope. This is because more than one function of a contract may be called and proven as external (as opposed to inlined by the compiler). +> A note for vanilla Noir devs: There is no [`main()`](https://noir-lang.org/getting_started/breakdown/#mainnr) function within a Noir `contract` scope. This is because more than one function of a contract may be called and proven as external (as opposed to inlined by the compiler). ## Structure of a contract diff --git a/docs/docs/dev_docs/contracts/layout.md b/docs/docs/dev_docs/contracts/layout.md index 2c657d37fc7..a6db7b63a6d 100644 --- a/docs/docs/dev_docs/contracts/layout.md +++ b/docs/docs/dev_docs/contracts/layout.md @@ -2,7 +2,7 @@ ## Directory structure -Here's a common layout for a basic Noir Contract project: +Here's a common layout for a basic Aztec.nr Contract project: ```title="layout of an aztec contract project" ─── my_aztec_contract_project diff --git a/docs/docs/dev_docs/contracts/main.md b/docs/docs/dev_docs/contracts/main.md index 571a4fe3156..b5e5ecc1787 100644 --- a/docs/docs/dev_docs/contracts/main.md +++ b/docs/docs/dev_docs/contracts/main.md @@ -2,7 +2,7 @@ ## What is Aztec.nr? -**Aztec.nr** is a library for writing Aztec smart contracts. +**Aztec.nr** is a framework for writing Aztec smart contracts. ## Nomenclature @@ -12,17 +12,17 @@ A **smart contract** is just a collection of persistent state variables, and a c An **Aztec smart contract** is a smart contract with **private** state variables and **private** functions. -**Aztec.nr** is a library for writing Aztec smart contracts, written in Noir. +**Aztec.nr** is a framework for writing Aztec smart contracts, written in Noir. # Getting started ## Install Noir -To write a Noir Contract, you need to write Noir, and to write Noir, you need to [install Nargo](https://noir-lang.org/getting_started/nargo_installation). +To write an Aztec.nr contract, you need to write Noir, and to write Noir, you need to [install Nargo](https://noir-lang.org/getting_started/nargo_installation). ## Install Noir tooling -There are a number of tools to make writing Noir Contracts more pleasant. See [here](https://github.com/noir-lang/awesome-noir#get-coding). +There are a number of tools to make writing Aztec.nr contracts more pleasant. See [here](https://github.com/noir-lang/awesome-noir#get-coding). ## Quick start @@ -30,7 +30,8 @@ There are a number of tools to make writing Noir Contracts more pleasant. See [h Starter kit ::: -## Example Noir Contract + +## Example Aztec.nr Contract In keeping with the origins of blockchain, here's an example of a simple private token contract. Everyone's balances are private. diff --git a/docs/docs/dev_docs/contracts/types.md b/docs/docs/dev_docs/contracts/types.md index de66faed98b..a7e81ff0027 100644 --- a/docs/docs/dev_docs/contracts/types.md +++ b/docs/docs/dev_docs/contracts/types.md @@ -1,2 +1,2 @@ See Noir docs for Noir types. -See [state_variables](./state_variables.md) for Noir Contract state variable types. \ No newline at end of file +See [state_variables](./state_variables.md) for Aztec.nr state variable types. \ No newline at end of file diff --git a/docs/docs/dev_docs/contracts/workflow.md b/docs/docs/dev_docs/contracts/workflow.md index f208a34e33b..9ebe0ac2431 100644 --- a/docs/docs/dev_docs/contracts/workflow.md +++ b/docs/docs/dev_docs/contracts/workflow.md @@ -1,4 +1,4 @@ -# Noir contract workflow +# Aztec.nr smart contract workflow ## Write diff --git a/docs/docs/dev_docs/dapps/main.md b/docs/docs/dev_docs/dapps/main.md index cf4484cd4eb..d267ad9a162 100644 --- a/docs/docs/dev_docs/dapps/main.md +++ b/docs/docs/dev_docs/dapps/main.md @@ -21,7 +21,7 @@ Explain how to write a dapp using [`aztec.js`](https://github.com/AztecProtocol/ - Use the e2e tests as inspiration. - Instantiate a contract - Deploy a contract - - How to generate a nice typescript interface for a Noir Contract's functions (we have a little `.ts` program in `noir-contracts` to generate a types file at the moment... how would a user do this?) + - How to generate a nice typescript interface for an Aztec.nr contract's functions (we have a little `.ts` program in `noir-contracts` to generate a types file at the moment... how would a user do this?) - Call 'view' functions - Simulate functions (simulate the result, without sending to the 'network') - Execute functions (send them to the 'network') diff --git a/docs/docs/dev_docs/getting_started/sandbox.md b/docs/docs/dev_docs/getting_started/sandbox.md index 8f2dc173a20..fc31b6708da 100644 --- a/docs/docs/dev_docs/getting_started/sandbox.md +++ b/docs/docs/dev_docs/getting_started/sandbox.md @@ -6,7 +6,7 @@ import Image from "@theme/IdealImage"; ## Introduction -The Aztec Sandbox aims to provide a local development system against which you can build and test Noir contracts in a fast, safe, and free environment. +The Aztec Sandbox aims to provide a local development system against which you can build and test Aztec.nr contracts in a fast, safe, and free environment. Here we will walkthrough the process of retrieving the Sandbox, installing the client libraries and using it to deploy and use a fully private token contract on the Aztec network. diff --git a/docs/docs/dev_docs/sandbox/common_errors.md b/docs/docs/dev_docs/sandbox/common_errors.md index 5552601ff65..c13345e00dd 100644 --- a/docs/docs/dev_docs/sandbox/common_errors.md +++ b/docs/docs/dev_docs/sandbox/common_errors.md @@ -26,7 +26,7 @@ For static calls, new commitments aren't allowed For static calls, new nullifiers aren't allowed #### 2009 - PRIVATE_KERNEL__NON_PRIVATE_FUNCTION_EXECUTED_WITH_PRIVATE_KERNEL -You cannot execute a public noir function in the private kernel +You cannot execute a public Aztec.nr function in the private kernel #### 2011 - PRIVATE_KERNEL__UNSUPPORTED_OP You are trying to do something that is currently unsupported in the private kernel. If this is a blocker feel free to open up an issue on our monorepo [aztec3-packages](https://github.com/AztecProtocol/aztec3-packages/tree/master) or reach out to us on discord @@ -34,7 +34,7 @@ You are trying to do something that is currently unsupported in the private kern Note that certain operations are unsupported on certain versions of the private kernel. Eg static calls are allowed for all but the initial iteration of the private kernel (which initialises the kernel for subsequent function calls). #### 2012 - PRIVATE_KERNEL__CONTRACT_ADDRESS_MISMATCH -For the initial iteration of the private kernel, only the expected noir contract should be the entrypoint. Static and delegate calls are not allowed in the initial iteration. +For the initial iteration of the private kernel, only the expected Aztec.nr contract should be the entrypoint. Static and delegate calls are not allowed in the initial iteration. #### 2013 - PRIVATE_KERNEL__NON_PRIVATE_KERNEL_VERIFIED_WITH_PRIVATE_KERNEL The previous kernel iteration within the private kernel must also be private @@ -46,7 +46,7 @@ A constructor must be executed as the first tx in the recursion i.e. a construct Confirms that the TxRequest (user's intent) matches the private call being executed. This error may happen when: * origin address of tx_request doesn't match call_stack_item's contract_address * tx_request.function_data doesn't match call_stack_item.function_data -* noir function args passed to tx_request doesn't match args in the call_stack_item +* Aztec.nr function args passed to tx_request doesn't match args in the call_stack_item #### 2018 - PRIVATE_KERNEL__READ_REQUEST_PRIVATE_DATA_ROOT_MISMATCH Given a read request and provided witness, we check that the merkle root obtained from the witness' sibling path and it's leaf is similar to the historic state root we want to read against. This is a sanity check to ensure we are reading from the right state. @@ -65,7 +65,7 @@ But for non transient reads, we do a merkle membership check. Redas are done at You are trying to do something that is currently unsupported in the public kernel. If this is a blocker feel free to open up an issue on our monorepo [aztec3-packages](https://github.com/AztecProtocol/aztec3-packages/tree/master) or reach out to us on discord #### 3002 - PUBLIC_KERNEL__PRIVATE_FUNCTION_NOT_ALLOWED -Calling a private noir function in a public kernel is not allowed. +Calling a private Aztec.nr function in a public kernel is not allowed. #### 3005 - PUBLIC_KERNEL__NON_EMPTY_PRIVATE_CALL_STACK Public functions are executed after all the private functions are (see [private-public execution](../../concepts/foundation/communication/public_private_calls.md)). As such, private call stack must be empty when executing in the public kernel. @@ -109,7 +109,7 @@ The L1 chain ID you used in your proof generation (for your private transaction) #### 4008 - BASE__INVALID_VERSION Same as [section 4007](#4007---base__invalid_chain_id) except the `version` refers to the version of the Aztec L2 instance. -Some scary bugs like `4003 - BASE__INVALID_NULLIFIER_SUBTREE` and `4004 - BASE__INVALID_NULLIFIER_RANGE` which are to do malformed nullifier trees (see [Indexed Merkle Trees](../../concepts/advanced/data_structures/indexed_merkle_tree.md)) etc may seem unrelated at a glance, but at a closer look may be because of some bug in an application's Noir code. Same is true for certain instances of `7008 - MEMBERSHIP_CHECK_FAILED`. +Some scary bugs like `4003 - BASE__INVALID_NULLIFIER_SUBTREE` and `4004 - BASE__INVALID_NULLIFIER_RANGE` which are to do malformed nullifier trees (see [Indexed Merkle Trees](../../concepts/advanced/data_structures/indexed_merkle_tree.md)) etc may seem unrelated at a glance, but at a closer look may be because of some bug in an application's Aztec.nr code. Same is true for certain instances of `7008 - MEMBERSHIP_CHECK_FAILED`. ### Generic circuit errors @@ -119,7 +119,7 @@ Circuits work by having a fixed size array. As such, we have limits on how many * too many new commitments in one tx * too many new nullifiers in one tx - - Note: Nullifiers may be created even outside the context of your noir code. Eg, when creating a contract, we add a nullifier for its address to prevent same address from ever occurring. Similarly, we add a nullifier for your transaction hash too. + - Note: Nullifiers may be created even outside the context of your Aztec.nr code. Eg, when creating a contract, we add a nullifier for its address to prevent same address from ever occurring. Similarly, we add a nullifier for your transaction hash too. * too many private function calls in one tx (i.e. call stack size exceeded) * too many public function calls in one tx (i.e. call stack size exceeded) * too many new L2 to L1 messages in one tx @@ -159,7 +159,7 @@ Users may create a proof against a historic state in Aztec. The rollup circuits * "Public call stack size exceeded" - In Aztec, the sequencer executes all enqueued public functions in a transaction (to prevent race conditions - see [private-public execution](../../concepts/foundation/communication/public_private_calls.md)). This error says there are too many public functions requested. -* "Array size exceeds target length" - happens if you add more items than allowed by the constants set due to our circuit limitations (eg sending too many L2 to L1 messages or creating a function that exceeds the call stack length or return more values than what Noir functions allows) +* "Array size exceeds target length" - happens if you add more items than allowed by the constants set due to our circuit limitations (eg sending too many L2 to L1 messages or creating a function that exceeds the call stack length or returns more values than what Aztec.nr functions allow) * "Failed to publish block" - Happens when sequencer tries to submit its L2 block + proof to the rollup contract. Use the CLI to find any solidity error and then refer the [Contract errors section](#l1-aztec-contract-errors). diff --git a/docs/docs/dev_docs/sandbox/components.md b/docs/docs/dev_docs/sandbox/components.md index 588aeaa016f..cb07a4b6139 100644 --- a/docs/docs/dev_docs/sandbox/components.md +++ b/docs/docs/dev_docs/sandbox/components.md @@ -2,7 +2,11 @@ title: Components --- - + + +:::TODO Outdated +This page needs to be updated. +::: import Disclaimer from '../../misc/common/\_disclaimer.mdx'; @@ -84,10 +88,10 @@ Responsibilities: These tasks are lower priority than providing a handcrafted ABI. -- The ability for a dev to enclose a collection of Noir functions in a 'contract scope'. -- The ability to create a Noir contract abi from the above. +- The ability for a dev to enclose a collection of Aztec.nr functions in a 'contract scope'. +- The ability to create an Aztec.nr contract abi from the above. -Design a Noir Contract ABI, similar to a Solidity ABI which is output by Solc (see [here](https://docs.soliditylang.org/en/v0.8.13/abi-spec.html#json)). It might include for each function: +Design an Aztec.nr Contract ABI, similar to a Solidity ABI which is output by Solc (see [here](https://docs.soliditylang.org/en/v0.8.13/abi-spec.html#json)). It might include for each function: - ACIR opcodes (akin to Solidity bytecode). - Function name and parameter names & types. @@ -109,7 +113,7 @@ aztec.js should always be stateless. It offers the ability to interact with stat The analogous AC component would be the AztecSdk (wraps the CoreSdk which is more analogous to the private client). - Allows a user to create an Aztec keypair. Call `create_account` on Wallet. -- Create a `Contract` instance (similar to web3.js), given a path to a Noir Contract ABI. +- Create a `Contract` instance (similar to web3.js), given a path to an Aztec.nr Contract ABI. - Construct `tx_request` by calling e.g. `contract.get_deployment_request(constructor_args)`. - Call wallet `sign_tx_request(tx_request)` to get signature. - Call `simulate_tx(signed_tx_request)` on the Private Client. In future this would help compute gas, for now we won't actually return gas (it's hard). Returns success or failure, so client knows if it should proceed, and computed kernel circuit public outputs. diff --git a/docs/docs/dev_docs/sandbox/main.md b/docs/docs/dev_docs/sandbox/main.md index 9ddf0ce78ac..2f33ffa684a 100644 --- a/docs/docs/dev_docs/sandbox/main.md +++ b/docs/docs/dev_docs/sandbox/main.md @@ -2,7 +2,7 @@ ## What is the Aztec Sandbox? -The Aztec Sandbox is local development system against which you can build and test Noir contracts in a fast, safe, and free environment. +The Aztec Sandbox is local development system against which you can build and test Aztec.nr contracts in a fast, safe, and free environment. To learn more and to download to for yourself you can visit the [website](https://sandbox.aztec.network). diff --git a/docs/docs/dev_docs/testing/cheat_codes.md b/docs/docs/dev_docs/testing/cheat_codes.md index 4a09ac7f811..458b5f406db 100644 --- a/docs/docs/dev_docs/testing/cheat_codes.md +++ b/docs/docs/dev_docs/testing/cheat_codes.md @@ -382,7 +382,7 @@ Otherwise, it will throw an error. const timestamp = await cc.eth.timestamp(); const newTimestamp = timestamp + 100_000_000; await cc.aztec.warp(newTimestamp); -// any noir contract calls that make use of current timestamp +// any Aztec.nr contract calls that make use of current timestamp // and is executed in the next rollup block will now read `newTimestamp` ``` @@ -395,7 +395,7 @@ public computeSlotInMap(baseSlot: Fr | bigint, key: Fr | bigint): Fr #### Description Compute storage slot for a map key. -The baseSlot is specified in the noir contract. +The baseSlot is specified in the Aztec.nr contract. #### Example ```rust diff --git a/docs/docs/dev_docs/testing/main.md b/docs/docs/dev_docs/testing/main.md index ca7cd33a835..a6adae5114b 100644 --- a/docs/docs/dev_docs/testing/main.md +++ b/docs/docs/dev_docs/testing/main.md @@ -2,8 +2,8 @@ Please use the [TUTORIAL-TEMPLATE](../../TUTORIAL_TEMPLATE.md) for standalone guides / tutorials. -## Testing in Noir +## Testing in Aztec.nr Individual functions can be tested much like [how 'regular Noir' functions can be tested](https://noir-lang.org/nargo/testing). -But a Noir Contract typically tracks state variables, so you'll likely need to write more complex tests in TypeScript, using Aztec.js \ No newline at end of file +But an Aztec.nr contract typically tracks state variables, so you'll likely need to write more complex tests in TypeScript, using Aztec.js \ No newline at end of file diff --git a/docs/docs/dev_docs/wallets/architecture.md b/docs/docs/dev_docs/wallets/architecture.md index 27818b48b9f..2d81c594655 100644 --- a/docs/docs/dev_docs/wallets/architecture.md +++ b/docs/docs/dev_docs/wallets/architecture.md @@ -8,7 +8,7 @@ Architecture-wise, a wallet is an instance of an **Aztec RPC Server** which mana Additionally, a wallet must be able to handle one or more [account contract implementations](../../concepts/foundation/accounts/main.md#account-contracts-and-wallets). When a user creates a new account, the account is represented on-chain by an account contract. The wallet is responsible for deploying and interacting with this contract. A wallet may support multiple flavours of accounts, such as an account that uses ECDSA signatures, or one that relies on WebAuthn, or one that requires multi-factor authentication. For a user, the choice of what account implementation to use is then determined by the wallet they interact with. -In code, this translates to a wallet implementing an **Entrypoint** interface that defines [how to create an _execution request_ out of an array of _function calls_](./main.md#transaction-lifecycle) for the specific implementation of an account contract. Think of the entrypoint interface as the Javascript counterpart of an account contract, or the piece of code that knows how to format and authenticate a transaction based on the rules defined in Noir by the user's account. +In code, this translates to a wallet implementing an **Entrypoint** interface that defines [how to create an _execution request_ out of an array of _function calls_](./main.md#transaction-lifecycle) for the specific implementation of an account contract. Think of the entrypoint interface as the Javascript counterpart of an account contract, or the piece of code that knows how to format and authenticate a transaction based on the rules defined in Aztec.nr by the user's account. ## Entrypoint interface diff --git a/docs/docs/dev_docs/wallets/writing_an_account_contract.md b/docs/docs/dev_docs/wallets/writing_an_account_contract.md index b6ddc219c5d..b1f02e156f7 100644 --- a/docs/docs/dev_docs/wallets/writing_an_account_contract.md +++ b/docs/docs/dev_docs/wallets/writing_an_account_contract.md @@ -14,7 +14,7 @@ For the sake of simplicity, we will hardcode the signing public key into the con ## The account contract -Let's start with the account contract itself in Noir. Create [a new Noir contract project](../contracts/main.md) that will contain a file with the code for the account contract, with a hardcoded public key: +Let's start with the account contract itself in Aztec.nr. Create [a new Aztec.nr contract project](../contracts/main.md) that will contain a file with the code for the account contract, with a hardcoded public key: #include_code contract yarn-project/noir-contracts/src/contracts/schnorr_hardcoded_account_contract/src/main.nr rust @@ -54,7 +54,7 @@ Note the usage of the `_with_packed_args` variant of [`call_public_function` and ## The typescript side of things -Now that we have a valid Noir account contract, we need to write the typescript glue code that will take care of formatting and authenticating transactions so they can be processed by our contract, as well as deploying the contract during account setup. This takes the form of implementing the `AccountContract` interface: +Now that we have a valid Aztec.nr account contract, we need to write the typescript glue code that will take care of formatting and authenticating transactions so they can be processed by our contract, as well as deploying the contract during account setup. This takes the form of implementing the `AccountContract` interface: #include_code account-contract-interface yarn-project/aztec.js/src/account/contract/index.ts typescript diff --git a/l1-contracts/GUIDE_LINES.md b/l1-contracts/GUIDE_LINES.md index 255f85c52a5..650c09befbf 100644 --- a/l1-contracts/GUIDE_LINES.md +++ b/l1-contracts/GUIDE_LINES.md @@ -5,7 +5,7 @@ In the following, there will be guidelines for the process of writing readable, - when optimizing - when reviewing. -In general the language of choice will be Solidity for our L1 contracts, so most of the specific style rules will be having that in mind, but the process for writing it can be adapted slightly for vyper, and will have an extension when Noir contracts are more mature. +In general the language of choice will be Solidity for our L1 contracts, so most of the specific style rules will be having that in mind, but the process for writing it can be adapted slightly for vyper, and will have an extension when Aztec.nr contracts are more mature. ![](https://media.tenor.com/ry_sCXk6wH0AAAAC/pirates-caribbean-code.gif) diff --git a/l1-contracts/src/core/libraries/Decoder.sol b/l1-contracts/src/core/libraries/Decoder.sol index 2de68f9d980..b5f604437fc 100644 --- a/l1-contracts/src/core/libraries/Decoder.sol +++ b/l1-contracts/src/core/libraries/Decoder.sol @@ -401,7 +401,7 @@ library Decoder { // Iterate until all the logs were processed while (remainingLogsLength > 0) { - // The length of the logs emitted by Noir from the function call corresponding to this kernel iteration + // The length of the logs emitted by Aztec.nr from the function call corresponding to this kernel iteration uint256 privateCircuitPublicInputLogsLength = read4(_l2Block, offset); offset += 0x4; 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..2a9db8fb761 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'; @@ -38,6 +38,7 @@ type ORACLE_NAMES = | 'getSecretKey' | 'getNote' | 'getNotes' + | 'checkNoteHashExists' | 'getRandomField' | 'notifyCreatedNote' | 'notifyNullifiedNote' @@ -46,7 +47,6 @@ type ORACLE_NAMES = | 'enqueuePublicFunctionCall' | 'storageRead' | 'storageWrite' - | 'getCommitment' | 'getL1ToL2Message' | 'getPortalContractAddress' | 'emitEncryptedLog' 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/acvm/serialize.ts b/yarn-project/acir-simulator/src/acvm/serialize.ts index 9b8e2640315..00ca0d9de48 100644 --- a/yarn-project/acir-simulator/src/acvm/serialize.ts +++ b/yarn-project/acir-simulator/src/acvm/serialize.ts @@ -9,7 +9,7 @@ import { } from '@aztec/circuits.js'; import { Fr } from '@aztec/foundation/fields'; -import { CommitmentDataOracleInputs, MessageLoadOracleInputs } from '../client/db_oracle.js'; +import { MessageLoadOracleInputs } from '../client/db_oracle.js'; import { ACVMField, toACVMField } from './acvm.js'; // Utilities to write TS classes to ACVM Field arrays @@ -127,11 +127,11 @@ export function toAcvmCallPrivateStackItem(item: PrivateCallStackItem): ACVMFiel /** * Converts a public call stack item with the request for executing a public function to - * a set of ACVM fields accepted by the enqueue_public_function_call_oracle Noir function. + * a set of ACVM fields accepted by the enqueue_public_function_call_oracle Aztec.nr function. * Note that only the fields related to the request are serialized: those related to the result * are empty since this is just an execution request, so we don't send them to the circuit. * @param item - The public call stack item to serialize to be passed onto Noir. - * @returns The fields expected by the enqueue_public_function_call_oracle Noir function. + * @returns The fields expected by the enqueue_public_function_call_oracle Aztec.nr function. */ export async function toAcvmEnqueuePublicFunctionResult(item: PublicCallRequest): Promise { return [ @@ -160,23 +160,6 @@ export function toAcvmL1ToL2MessageLoadOracleInputs( ]; } -/** - * Converts the result of loading commitments to ACVM fields. - * @param commitmentLoadOracleInputs - The result of loading messages to convert. - * @param l1ToL2MessagesTreeRoot - The L1 to L2 messages tree root - * @returns The Message Oracle Fields. - */ -export function toAcvmCommitmentLoadOracleInputs( - messageLoadOracleInputs: CommitmentDataOracleInputs, - l1ToL2MessagesTreeRoot: Fr, -): ACVMField[] { - return [ - toACVMField(messageLoadOracleInputs.commitment), - toACVMField(messageLoadOracleInputs.index), - toACVMField(l1ToL2MessagesTreeRoot), - ]; -} - /** * Inserts a list of ACVM fields to a witness. * @param witnessStartIndex - The index where to start inserting the fields. diff --git a/yarn-project/acir-simulator/src/client/client_execution_context.ts b/yarn-project/acir-simulator/src/client/client_execution_context.ts index 61d1d09c779..5dc9ff7d549 100644 --- a/yarn-project/acir-simulator/src/client/client_execution_context.ts +++ b/yarn-project/acir-simulator/src/client/client_execution_context.ts @@ -6,9 +6,10 @@ import { createDebugLogger } from '@aztec/foundation/log'; import { ACVMField, + ONE_ACVM_FIELD, + ZERO_ACVM_FIELD, fromACVMField, toACVMField, - toAcvmCommitmentLoadOracleInputs, toAcvmL1ToL2MessageLoadOracleInputs, } from '../acvm/index.js'; import { PackedArgsCache } from '../common/packed_args_cache.js'; @@ -156,7 +157,7 @@ export class ClientTxExecutionContext { // Nullified pending notes are already removed from the list. const pendingNotes = this.noteCache.getNotes(contractAddress, storageSlotField); - const pendingNullifiers = this.noteCache.getNullifiers(contractAddress, storageSlotField); + const pendingNullifiers = this.noteCache.getNullifiers(contractAddress); const dbNotes = await this.db.getNotes(contractAddress, storageSlotField); const dbNotesFiltered = dbNotes.filter(n => !pendingNullifiers.has((n.siloedNullifier as Fr).value)); @@ -185,7 +186,7 @@ export class ClientTxExecutionContext { }); // TODO: notice, that if we don't have a note in our DB, we don't know how big the preimage needs to be, and so we don't actually know how many dummy notes to return, or big to make those dummy notes, or where to position `is_some` booleans to inform the noir program that _all_ the notes should be dummies. - // By a happy coincidence, a `0` field is interpreted as `is_none`, and since in this case (of an empty db) we'll return all zeros (paddedZeros), the noir program will treat the returned data as all dummies, but this is luck. Perhaps a preimage size should be conveyed by the get_notes noir oracle? + // By a happy coincidence, a `0` field is interpreted as `is_none`, and since in this case (of an empty db) we'll return all zeros (paddedZeros), the noir program will treat the returned data as all dummies, but this is luck. Perhaps a preimage size should be conveyed by the get_notes Aztec.nr oracle? const preimageLength = notes?.[0]?.preimage.length ?? 0; if ( !notes.every(({ preimage }) => { @@ -253,23 +254,12 @@ export class ClientTxExecutionContext { * Adding a siloed nullifier into the current set of all pending nullifiers created * within the current transaction/execution. * @param contractAddress - The contract address. - * @param storageSlot - The storage slot. * @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address). * @param innerNoteHash - The inner note hash of the new note. * @param contractAddress - The contract address */ - public async handleNullifiedNote( - contractAddress: AztecAddress, - storageSlot: ACVMField, - innerNullifier: ACVMField, - innerNoteHash: ACVMField, - ) { - await this.noteCache.nullifyNote( - contractAddress, - fromACVMField(storageSlot), - fromACVMField(innerNullifier), - fromACVMField(innerNoteHash), - ); + public async handleNullifiedNote(contractAddress: AztecAddress, innerNullifier: ACVMField, innerNoteHash: ACVMField) { + await this.noteCache.nullifyNote(contractAddress, fromACVMField(innerNullifier), fromACVMField(innerNoteHash)); } /** @@ -285,20 +275,39 @@ export class ClientTxExecutionContext { /** * Fetches a path to prove existence of a commitment in the db, given its contract side commitment (before silo). * @param contractAddress - The contract address. - * @param commitment - The commitment. - * @returns The commitment data. + * @param nonce - The nonce of the note. + * @param innerNoteHash - The inner note hash of the note. + * @returns 1 if (persistent or transient) note hash exists, 0 otherwise. Value is in ACVMField form. */ - public async getCommitment(contractAddress: AztecAddress, commitment: ACVMField) { - const innerNoteHash = fromACVMField(commitment); - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386): only works - // for noteHashes/commitments created by public functions! Once public kernel or - // base rollup circuit injects nonces, this can be used with commitments created by - // private functions as well. - const commitmentInputs = await this.db.getCommitmentOracle(contractAddress, innerNoteHash); - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1029): support pending commitments here + public async checkNoteHashExists( + contractAddress: AztecAddress, + nonce: ACVMField, + innerNoteHash: ACVMField, + ): Promise { + const nonceField = fromACVMField(nonce); + const innerNoteHashField = fromACVMField(innerNoteHash); + if (nonceField.isZero()) { + // If nonce is 0, we are looking for a new note created in this transaction. + const exists = this.noteCache.checkNoteExists(contractAddress, innerNoteHashField); + if (exists) { + return ONE_ACVM_FIELD; + } + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386) + // Currently it can also be a note created from public if nonce is 0. + // If we can't find a matching new note, keep looking for the match from the notes created in previous transactions. + } + + // If nonce is zero, SHOULD only be able to reach this point if note was publicly created const wasm = await CircuitsWasm.get(); - const siloedNoteHash = siloCommitment(wasm, contractAddress, innerNoteHash); - this.gotNotes.set(siloedNoteHash.value, commitmentInputs.index); - return toAcvmCommitmentLoadOracleInputs(commitmentInputs, this.historicBlockData.privateDataTreeRoot); + let noteHashToLookUp = siloCommitment(wasm, contractAddress, innerNoteHashField); + if (!nonceField.isZero()) { + noteHashToLookUp = computeUniqueCommitment(wasm, nonceField, noteHashToLookUp); + } + + const index = await this.db.getCommitmentIndex(noteHashToLookUp); + if (index !== undefined) { + this.gotNotes.set(noteHashToLookUp.value, index); + } + return index !== undefined ? ONE_ACVM_FIELD : ZERO_ACVM_FIELD; } } diff --git a/yarn-project/acir-simulator/src/client/db_oracle.ts b/yarn-project/acir-simulator/src/client/db_oracle.ts index df56338f9fa..cb3c77b113c 100644 --- a/yarn-project/acir-simulator/src/client/db_oracle.ts +++ b/yarn-project/acir-simulator/src/client/db_oracle.ts @@ -27,7 +27,7 @@ export interface NoteData { } /** - * The format that noir uses to get L1 to L2 Messages. + * The format that Aztec.nr uses to get L1 to L2 Messages. */ export interface MessageLoadOracleInputs { /** @@ -45,22 +45,6 @@ export interface MessageLoadOracleInputs { index: bigint; } -/** - * The format noir uses to get commitments. - */ -export interface CommitmentDataOracleInputs { - /** The siloed commitment. */ - commitment: Fr; - /** - * The path in the merkle tree to the commitment. - */ - siblingPath: Fr[]; - /** - * The index of the message commitment in the merkle tree. - */ - index: bigint; -} - /** * A function ABI with optional debug metadata */ diff --git a/yarn-project/acir-simulator/src/client/debug.ts b/yarn-project/acir-simulator/src/client/debug.ts index f03a1f251c8..a6e7d97d075 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'; @@ -24,7 +24,7 @@ export function acvmFieldMessageToString(msg: ACVMField[]): string { } /** - * Format a debug string for Noir filling in `'{0}'` entries with their + * Format a debug string for Aztec.nr filling in `'{0}'` entries with their * corresponding values from the args array. * * @param formatStr - str of form `'this is a string with some entries like {0} and {1}'` diff --git a/yarn-project/acir-simulator/src/client/execution_note_cache.ts b/yarn-project/acir-simulator/src/client/execution_note_cache.ts index 18de0658095..45e883dda6f 100644 --- a/yarn-project/acir-simulator/src/client/execution_note_cache.ts +++ b/yarn-project/acir-simulator/src/client/execution_note_cache.ts @@ -5,41 +5,32 @@ import { Fr } from '@aztec/foundation/fields'; import { NoteData } from './db_oracle.js'; -/** - * Generate a key with the given contract address and storage slot. - * @param contractAddress - Contract address. - * @param storageSlot - Storage slot. - */ -const generateKeyForContractStorageSlot = (contractAddress: AztecAddress, storageSlot: Fr) => - `${contractAddress.toShortString}${storageSlot}`; - /** * Data that's accessible by all the function calls in an execution. */ export class ExecutionNoteCache { /** - * Notes created during execution. - * The key of the mapping is a value representing a contract address and storage slot combination. + * New notes created in this transaction. + * This mapping maps from a contract address to the notes in the contract. */ - private newNotes: Map = new Map(); + private newNotes: Map = new Map(); /** * The list of nullifiers created in this transaction. - * The key of the mapping is a value representing a contract address and storage slot combination. + * This mapping maps from a contract address to the nullifiers emitted from the contract. * The note which is nullified might be new or not (i.e., was generated in a previous transaction). * Note that their value (bigint representation) is used because Frs cannot be looked up in Sets. */ - private nullifiers: Map> = new Map(); + private nullifiers: Map> = new Map(); /** * Add a new note to cache. * @param note - New note created during execution. */ public addNewNote(note: NoteData) { - const key = generateKeyForContractStorageSlot(note.contractAddress, note.storageSlot); - const notes = this.newNotes.get(key) ?? []; + const notes = this.newNotes.get(note.contractAddress.toBigInt()) ?? []; notes.push(note); - this.newNotes.set(key, notes); + this.newNotes.set(note.contractAddress.toBigInt(), notes); } /** @@ -50,32 +41,22 @@ export class ExecutionNoteCache { * @param innerNoteHash - Inner note hash of the note. If this value equals EMPTY_NULLIFIED_COMMITMENT, it means the * note being nullified is from a previous transaction (and thus not a new note). */ - public async nullifyNote(contractAddress: AztecAddress, storageSlot: Fr, innerNullifier: Fr, innerNoteHash: Fr) { + public async nullifyNote(contractAddress: AztecAddress, innerNullifier: Fr, innerNoteHash: Fr) { const wasm = await CircuitsWasm.get(); const siloedNullifier = siloNullifier(wasm, contractAddress, innerNullifier); - const nullifiers = this.getNullifiers(contractAddress, storageSlot); - if (nullifiers.has(siloedNullifier.value)) { - throw new Error('Attemp to nullify the same note twice.'); - } - + const nullifiers = this.getNullifiers(contractAddress); nullifiers.add(siloedNullifier.value); - const key = generateKeyForContractStorageSlot(contractAddress, storageSlot); - this.nullifiers.set(key, nullifiers); + this.nullifiers.set(contractAddress.toBigInt(), nullifiers); // Find and remove the matching new note if the emitted innerNoteHash is not empty. if (!innerNoteHash.equals(new Fr(EMPTY_NULLIFIED_COMMITMENT))) { - const notes = this.newNotes.get(key) ?? []; - /** - * The identifier used to determine matching is the inner note hash value. - * However, we adopt a defensive approach and ensure that the contract address - * and storage slot do match. - */ + const notes = this.newNotes.get(contractAddress.toBigInt()) ?? []; const noteIndexToRemove = notes.findIndex(n => n.innerNoteHash.equals(innerNoteHash)); if (noteIndexToRemove === -1) { throw new Error('Attemp to remove a pending note that does not exist.'); } notes.splice(noteIndexToRemove, 1); - this.newNotes.set(key, notes); + this.newNotes.set(contractAddress.toBigInt(), notes); } } @@ -86,17 +67,26 @@ export class ExecutionNoteCache { * @param storageSlot - Storage slot of the notes. **/ public getNotes(contractAddress: AztecAddress, storageSlot: Fr) { - const key = generateKeyForContractStorageSlot(contractAddress, storageSlot); - return this.newNotes.get(key) ?? []; + const notes = this.newNotes.get(contractAddress.toBigInt()) ?? []; + return notes.filter(n => n.storageSlot.equals(storageSlot)); } /** - * Return all nullifiers of a storage slot. - * @param contractAddress - Contract address of the notes. - * @param storageSlot - Storage slot of the notes. + * Check if a note exists in the newNotes array. + * @param contractAddress - Contract address of the note. + * @param storageSlot - Storage slot of the note. + * @param innerNoteHash - Inner note hash of the note. + **/ + public checkNoteExists(contractAddress: AztecAddress, innerNoteHash: Fr) { + const notes = this.newNotes.get(contractAddress.toBigInt()) ?? []; + return notes.some(n => n.innerNoteHash.equals(innerNoteHash)); + } + + /** + * Return all nullifiers emitted from a contract. + * @param contractAddress - Address of the contract. */ - public getNullifiers(contractAddress: AztecAddress, storageSlot: Fr): Set { - const key = generateKeyForContractStorageSlot(contractAddress, storageSlot); - return this.nullifiers.get(key) || new Set(); + public getNullifiers(contractAddress: AztecAddress): Set { + return this.nullifiers.get(contractAddress.toBigInt()) ?? new Set(); } } diff --git a/yarn-project/acir-simulator/src/client/private_execution.test.ts b/yarn-project/acir-simulator/src/client/private_execution.test.ts index e7d769cd235..3ba37e9f200 100644 --- a/yarn-project/acir-simulator/src/client/private_execution.test.ts +++ b/yarn-project/acir-simulator/src/client/private_execution.test.ts @@ -223,7 +223,7 @@ describe('Private Execution test suite', () => { const storageSlot = Fr.random(); const note = buildNote(60n, owner, storageSlot); - // Should be the same as how we compute the values for the ValueNote in the noir library. + // Should be the same as how we compute the values for the ValueNote in the Aztec.nr library. const valueNoteHash = pedersenPlookupCommitInputs( circuitsWasm, note.preimage.map(f => f.toBuffer()), @@ -365,7 +365,7 @@ describe('Private Execution test suite', () => { expect(changeNote.preimage[0]).toEqual(new Fr(balance - amountToTransfer)); }); - it('Should be able to claim a note by providing the correct secret', async () => { + it('Should be able to claim a note by providing the correct secret and nonce', async () => { const amount = 100n; const secret = Fr.random(); const abi = getFunctionAbi(PrivateTokenAirdropContractAbi, 'claim'); @@ -374,22 +374,11 @@ describe('Private Execution test suite', () => { const nonce = new Fr(1n); const customNoteHash = hash([toBufferBE(amount, 32), secret.toBuffer()]); const innerNoteHash = Fr.fromBuffer(hash([storageSlot.toBuffer(), customNoteHash])); - - oracle.getNotes.mockResolvedValue([ - { - contractAddress, - storageSlot, - nonce, - preimage: [new Fr(amount), secret], - innerNoteHash, - siloedNullifier: new Fr(0), - index: 1n, - }, - ]); + oracle.getCommitmentIndex.mockResolvedValue(2n); const result = await runSimulator({ abi, - args: [amount, secret, recipient], + args: [amount, secret, recipient, nonce], }); // Check a nullifier has been inserted. @@ -462,7 +451,7 @@ describe('Private Execution test suite', () => { const storageSlot = Fr.random(); const note = buildNote(60n, owner, storageSlot); - // Should be the same as how we compute the values for the ValueNote in the noir library. + // Should be the same as how we compute the values for the ValueNote in the Aztec.nr library. const valueNoteHash = pedersenPlookupCommitInputs( circuitsWasm, note.preimage.map(f => f.toBuffer()), @@ -638,7 +627,7 @@ describe('Private Execution test suite', () => { expect(result.nestedExecutions).toHaveLength(1); expect(result.nestedExecutions[0].callStackItem.publicInputs.returnValues[0]).toEqual(new Fr(privateIncrement)); - // check that Noir calculated the call stack item hash like cpp does + // check that Aztec.nr calculated the call stack item hash like cpp does const wasm = await CircuitsWasm.get(); const expectedCallStackItemHash = computeCallStackItemHash(wasm, result.nestedExecutions[0].callStackItem); expect(result.callStackItem.publicInputs.privateCallStack[0]).toEqual(expectedCallStackItemHash); @@ -751,20 +740,7 @@ describe('Private Execution test suite', () => { const storageSlot = new Fr(2); const innerNoteHash = hash([storageSlot.toBuffer(), noteHash.toBuffer()]); const siloedNoteHash = siloCommitment(wasm, contractAddress, Fr.fromBuffer(innerNoteHash)); - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386): should insert - // uniqueSiloedNoteHash in tree and that should be what is expected in Noir - //const uniqueSiloedNoteHash = computeUniqueCommitment(wasm, nonce, Fr.fromBuffer(innerNoteHash)); - - const tree = await insertLeaves([siloedNoteHash]); - - oracle.getCommitmentOracle.mockImplementation(async () => { - // Check the calculated commitment is correct - return Promise.resolve({ - commitment: siloedNoteHash, - siblingPath: (await tree.getSiblingPath(0n, false)).toFieldArray(), - index: 0n, - }); - }); + oracle.getCommitmentIndex.mockResolvedValue(0n); const result = await runSimulator({ abi, diff --git a/yarn-project/acir-simulator/src/client/private_execution.ts b/yarn-project/acir-simulator/src/client/private_execution.ts index 79b5afc1f19..1ee35591083 100644 --- a/yarn-project/acir-simulator/src/client/private_execution.ts +++ b/yarn-project/acir-simulator/src/client/private_execution.ts @@ -99,10 +99,12 @@ export class PrivateFunctionExecution { this.context.handleNewNote(this.contractAddress, storageSlot, preimage, innerNoteHash); return Promise.resolve(ZERO_ACVM_FIELD); }, - notifyNullifiedNote: async ([slot], [innerNullifier], [innerNoteHash]) => { - await this.context.handleNullifiedNote(this.contractAddress, slot, innerNullifier, innerNoteHash); + notifyNullifiedNote: async ([innerNullifier], [innerNoteHash]) => { + await this.context.handleNullifiedNote(this.contractAddress, innerNullifier, innerNoteHash); return Promise.resolve(ZERO_ACVM_FIELD); }, + checkNoteHashExists: ([nonce], [innerNoteHash]) => + this.context.checkNoteHashExists(this.contractAddress, nonce, innerNoteHash), callPrivateFunction: async ([acvmContractAddress], [acvmFunctionSelector], [acvmArgsHash]) => { const contractAddress = fromACVMField(acvmContractAddress); const functionSelector = fromACVMField(acvmFunctionSelector); @@ -125,7 +127,6 @@ export class PrivateFunctionExecution { getL1ToL2Message: ([msgKey]) => { return this.context.getL1ToL2Message(fromACVMField(msgKey)); }, - getCommitment: ([commitment]) => this.context.getCommitment(this.contractAddress, commitment), debugLog: (...args) => { this.log(oracleDebugCallToFormattedStr(args)); return Promise.resolve(ZERO_ACVM_FIELD); @@ -135,15 +136,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 b07b156319f..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'; diff --git a/yarn-project/acir-simulator/src/client/unconstrained_execution.ts b/yarn-project/acir-simulator/src/client/unconstrained_execution.ts index f11c95d4c70..4a1d8fc89c3 100644 --- a/yarn-project/acir-simulator/src/client/unconstrained_execution.ts +++ b/yarn-project/acir-simulator/src/client/unconstrained_execution.ts @@ -72,13 +72,14 @@ export class UnconstrainedFunctionExecution { +offset, +returnSize, ), + checkNoteHashExists: ([nonce], [innerNoteHash]) => + this.context.checkNoteHashExists(this.contractAddress, nonce, innerNoteHash), getRandomField: () => Promise.resolve(toACVMField(Fr.random())), debugLog: (...params) => { this.log(oracleDebugCallToFormattedStr(params)); return Promise.resolve(ZERO_ACVM_FIELD); }, getL1ToL2Message: ([msgKey]) => this.context.getL1ToL2Message(fromACVMField(msgKey)), - getCommitment: ([commitment]) => this.context.getCommitment(this.contractAddress, commitment), storageRead: async ([slot], [numberOfElements]) => { if (!aztecNode) { const errMsg = `Aztec node is undefined, cannot read storage`; diff --git a/yarn-project/acir-simulator/src/public/db.ts b/yarn-project/acir-simulator/src/public/db.ts index bc79cb17b76..245c3f103c7 100644 --- a/yarn-project/acir-simulator/src/public/db.ts +++ b/yarn-project/acir-simulator/src/public/db.ts @@ -2,7 +2,7 @@ import { EthAddress, FunctionSelector } from '@aztec/circuits.js'; import { AztecAddress } from '@aztec/foundation/aztec-address'; import { Fr } from '@aztec/foundation/fields'; -import { CommitmentDataOracleInputs, MessageLoadOracleInputs } from '../index.js'; +import { MessageLoadOracleInputs } from '../index.js'; /** * Database interface for providing access to public state. @@ -65,10 +65,9 @@ export interface CommitmentsDB { getL1ToL2Message(msgKey: Fr): Promise; /** - * Gets a message index and sibling path to some commitment in the private data tree. - * @param address - The contract address owning storage. - * @param commitment - The preimage of the siloed data. - * @returns - The Commitment data oracle object + * Gets the index of a commitment in the private data tree. + * @param commitment - The commitment. + * @returns - The index of the commitment. Undefined if it does not exist in the tree. */ - getCommitmentOracle(address: AztecAddress, commitment: Fr): Promise; + getCommitmentIndex(commitment: Fr): Promise; } diff --git a/yarn-project/acir-simulator/src/public/executor.ts b/yarn-project/acir-simulator/src/public/executor.ts index 7c7ce906dd3..ca1451771dd 100644 --- a/yarn-project/acir-simulator/src/public/executor.ts +++ b/yarn-project/acir-simulator/src/public/executor.ts @@ -1,6 +1,7 @@ import { AztecAddress, CallContext, + CircuitsWasm, EthAddress, Fr, FunctionData, @@ -9,11 +10,13 @@ import { HistoricBlockData, RETURN_VALUES_LENGTH, } from '@aztec/circuits.js'; +import { siloCommitment } from '@aztec/circuits.js/abis'; import { padArrayEnd } from '@aztec/foundation/collection'; import { createDebugLogger } from '@aztec/foundation/log'; import { FunctionL2Logs } from '@aztec/types'; import { + ONE_ACVM_FIELD, ZERO_ACVM_FIELD, acvm, convertACVMFieldToBuffer, @@ -23,7 +26,6 @@ import { fromACVMField, toACVMField, toACVMWitness, - toAcvmCommitmentLoadOracleInputs, toAcvmL1ToL2MessageLoadOracleInputs, } from '../acvm/index.js'; import { oracleDebugCallToFormattedStr } from '../client/debug.js'; @@ -91,12 +93,14 @@ export class PublicExecutor { const messageInputs = await this.commitmentsDb.getL1ToL2Message(fromACVMField(msgKey)); return toAcvmL1ToL2MessageLoadOracleInputs(messageInputs, this.blockData.l1ToL2MessagesTreeRoot); }, // l1 to l2 messages in public contexts TODO: https://github.com/AztecProtocol/aztec-packages/issues/616 - getCommitment: async ([commitment]) => { - const commitmentInputs = await this.commitmentsDb.getCommitmentOracle( - execution.contractAddress, - fromACVMField(commitment), - ); - return toAcvmCommitmentLoadOracleInputs(commitmentInputs, this.blockData.privateDataTreeRoot); + checkNoteHashExists: async ([_nonce], [innerNoteHash]) => { + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386) + // Once public kernel or base rollup circuit injects nonces, this can be updated to use uniqueSiloedCommitment. + const wasm = await CircuitsWasm.get(); + const siloedNoteHash = siloCommitment(wasm, execution.contractAddress, fromACVMField(innerNoteHash)); + const index = await this.commitmentsDb.getCommitmentIndex(siloedNoteHash); + // return 0 or 1 for whether note hash exists + return index === undefined ? ZERO_ACVM_FIELD : ONE_ACVM_FIELD; }, storageRead: async ([slot], [numberOfElements]) => { const startStorageSlot = fromACVMField(slot); @@ -124,10 +128,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/acir-simulator/src/utils.ts b/yarn-project/acir-simulator/src/utils.ts index fa30e578657..a15b8f74b0f 100644 --- a/yarn-project/acir-simulator/src/utils.ts +++ b/yarn-project/acir-simulator/src/utils.ts @@ -3,7 +3,7 @@ import { Grumpkin, pedersenPlookupCommitInputs } from '@aztec/circuits.js/barret import { Fr } from '@aztec/foundation/fields'; /** - * A point in the format that noir uses. + * A point in the format that Aztec.nr uses. */ export type NoirPoint = { /** The x coordinate. */ diff --git a/yarn-project/aztec-rpc/src/contract_data_oracle/index.ts b/yarn-project/aztec-rpc/src/contract_data_oracle/index.ts index f398edfe86b..0984e3dcc70 100644 --- a/yarn-project/aztec-rpc/src/contract_data_oracle/index.ts +++ b/yarn-project/aztec-rpc/src/contract_data_oracle/index.ts @@ -5,7 +5,7 @@ import { ContractCommitmentProvider, ContractDatabase } from '@aztec/types'; import { ContractTree } from '../contract_tree/index.js'; /** - * ContractDataOracle serves as a data manager and retriever for noir contracts. + * ContractDataOracle serves as a data manager and retriever for Aztec.nr contracts. * It provides methods to obtain contract addresses, function ABI, bytecode, and membership witnesses * from a given contract address and function selector. The class maintains a cache of ContractTree instances * to efficiently serve the requested data. It interacts with the ContractDatabase and AztecNode to fetch diff --git a/yarn-project/aztec-rpc/src/simulator_oracle/index.ts b/yarn-project/aztec-rpc/src/simulator_oracle/index.ts index cfdeccff424..68309243747 100644 --- a/yarn-project/aztec-rpc/src/simulator_oracle/index.ts +++ b/yarn-project/aztec-rpc/src/simulator_oracle/index.ts @@ -1,12 +1,6 @@ -import { - CommitmentDataOracleInputs, - DBOracle, - FunctionAbiWithDebugMetadata, - MessageLoadOracleInputs, -} from '@aztec/acir-simulator'; +import { DBOracle, FunctionAbiWithDebugMetadata, MessageLoadOracleInputs } from '@aztec/acir-simulator'; import { AztecAddress, - CircuitsWasm, CompleteAddress, EthAddress, Fr, @@ -15,7 +9,6 @@ import { HistoricBlockData, PublicKey, } from '@aztec/circuits.js'; -import { siloCommitment } from '@aztec/circuits.js/abis'; import { DataCommitmentProvider, KeyStore, L1ToL2MessageProvider } from '@aztec/types'; import { ContractDataOracle } from '../contract_data_oracle/index.js'; @@ -48,7 +41,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; } @@ -105,23 +98,12 @@ export class SimulatorOracle implements DBOracle { } /** - * Retrieves the noir oracle data required to prove existence of a given commitment. - * @param contractAddress - The contract Address. - * @param innerCommitment - The key of the message being fetched. - * @returns - A promise that resolves to the commitment data, a sibling path and the - * index of the message in the private data tree. + * Gets the index of a commitment in the private data tree. + * @param commitment - The commitment. + * @returns - The index of the commitment. Undefined if it does not exist in the tree. */ - async getCommitmentOracle(contractAddress: AztecAddress, innerCommitment: Fr): Promise { - const siloedCommitment = siloCommitment(await CircuitsWasm.get(), contractAddress, innerCommitment); - const index = await this.dataTreeProvider.findCommitmentIndex(siloedCommitment.toBuffer()); - if (!index) throw new Error(`Commitment not found ${siloedCommitment.toString()}`); - - const siblingPath = await this.dataTreeProvider.getDataTreePath(index); - return await Promise.resolve({ - commitment: siloedCommitment, - siblingPath: siblingPath.toFieldArray(), - index, - }); + async getCommitmentIndex(commitment: Fr) { + return await this.dataTreeProvider.findCommitmentIndex(commitment.toBuffer()); } /** 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/src/examples/uniswap_trade_on_l1_from_l2.ts b/yarn-project/aztec-sandbox/src/examples/uniswap_trade_on_l1_from_l2.ts index 72fd032da4a..9feaa2d9b89 100644 --- a/yarn-project/aztec-sandbox/src/examples/uniswap_trade_on_l1_from_l2.ts +++ b/yarn-project/aztec-sandbox/src/examples/uniswap_trade_on_l1_from_l2.ts @@ -217,7 +217,7 @@ async function main() { // 3. Claim WETH on L2 logger('Minting weth on L2'); - // Call the mint tokens function on the noir contract + // Call the mint tokens function on the Aztec.nr contract const consumptionTx = wethL2Contract.methods .mint(wethAmountToBridge, owner.address, messageKey, secret, ethAccount.toField()) .send(); @@ -298,7 +298,7 @@ async function main() { // 6. claim dai on L2 logger('Consuming messages to mint dai on L2'); - // Call the mint tokens function on the noir contract + // Call the mint tokens function on the Aztec.nr contract const daiMintTx = daiL2Contract.methods .mint(daiAmountToBridge, owner.address, depositDaiMessageKey, secret, ethAccount.toField()) .send(); 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 1339fd6d3ad..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": "H4sIAAAAAAAA/+2dCZgV1ZXHTwHd0DT7IkuzuwAu8Or16+7XCtjs+yIqIALSq4hbFHXUxEGjoyaOGB01MWriqImjJo6aOGriqImjJo6aOGpi1MRRJ446cdSJoyZGyL30KblVXSDd9b9Fna9vfd/5Tt2i+9T/nHvvee/33uvH5R7Rb5Tpo6syPg0dwbU69rlkh+/hYuW6GTq7su/GmoN7lCgrVdZdWQ9lZcp6KitX1ktZb2V9lPVV1k9Zf2UDlA1UNkjZYGV7KRuibKiyYcqGK6tQNkLZSGWjlI1WNkbZWGXjlO2tbB9l+yrbT9l4ZROUTVS2v7IDlB2o7CBlk5RN1vVQ5ivLK6tUVlBWpaxaWY2yorJaZQcrO0TZFGVTlU1TdijnPF3ZDGUzlc3iGsw26vRNnlBdhy4UPkqN8zr2uYRHKcHXUK6E9ZPhycinzLhnV2qbbzfjWvDvJez7cB26QTUXKs17BUd0v9UZ58H9e7AmfRzbfNr000/bsPK4005q3rTJM6IEkWfGRA6yLqUdM1wHySqXLzMqtztZlRq+B1RLIae1dG+Hlh6GljKoltZV3xMcU8coN/QHuQbay41/72nkVo7Vsb2Dl0VqamoI7uvyh97X5U8uf5e/y9/l7/J3+bv8Xf4uf5e/y9/l7/J3+bv8Xf4uf5e/y9/l7/J3+bv8Xf4uf5e/y9/l7/J3+bv861z+Ln+Xv8vf5e/yd/m7/F3+Ln+Xv8vf5e/yd/m7/F3+Ln+Xv8vf5e/yd/m7/F3+Ln+Xv8vf5d/u/MuMayV7WEu5oaG7NS2FXDnFrwNwzrmymPvob8tY6+24Z29wbjpmP3AeWm7wzR762Gzk1c+on4379o3ct3fkvvpnehkaNhtag9/tavzMmd6OeWg25gE99zpGf0N78L0n5r4Pcuhv6B+A1aG/pGf7NwRFdQwwdAT3H2hcC87NnjAYqq2gvzxo+zcWRbUNNnQM4vPg58qM837GtSGRWuprQyN56WvD+HyQca1LzD0CLUOMa8E33Qw1rgX1CeJ2Z93B2KxfEKuOfS7ZkTe1BHpMzfoYbpx3jejvaeQ83NBZgdW5fR+bOnoY960w7jsCet/W79mpoPDhRcZ1xvkIQ8soqJbWGow24tcZ9zDvOwZ7X9+8r8cW3CO43tU432IUaMyO08/Wc6BZr52RMT9nnldEfqfc+PeRlnMeZeioM8bBvfRePt/IdWSMbvOxO/h3c5/Y6NUjDB3B/QcY40CH2VfAa3V7/UZG6heMzbksidQLr6X1uVr03ubzqqBe5vOq6B6HFaYkEq+zf2Vfl0ixs/wVjGM4zhxlc5XNUzZf2QJlC5UtUrZY2RJlS5UtU3aYsuXKDld2hLIjla1QtlLZKmVHKVut7Ghla5StVbZO2THK1iurV9agrFFZk7JmLpLHtdNaetCO8dzIeF5kPD8yXhAZL4yMF0XGiyPjJZHx0sh4WWR8WGS8PDI+PDI+IjI+MjJeERmvjIxXRcZHRcarI+OjI+M1kfHayHhdZHxMZLw+Mq6PjBsi48bIuCkybqYdX+YXHMGTsjr2uWRHaM9U5qoLheaafLNf6dfn8rUNxapcoaqhuugX/apiVVO+WFnZXCwUa2obamtytX6hstlvqaqtbOFgc4CxjvCwcLWz+nVUZ3OLPnL+XFAsPRfzgPU7MvP12x7an588Vp5z9hcA67ciy/UrfKbTX5gsVs7I2V8ErN/KrNYvH9LpL+54rFwkZ38JsH6rMli/6pY2Ov2lHYtVjMnZXwas31FZq18xVqd/WPtj1ewkZ385sH6rs1S/mp3q9A9vX6z8LnL2jwDW7+is1K9mlzr9I3c/VuPn5OyvANZvTRbqV/O5Ov2Vuxcrtxs5+6uA9Vu7p+uX2y2d/lGfH6tqN3P2VwPrt25P1q+w2zr9o3cZq9DSjpz9NcD6HbOn6lfTLp3+2p3HKrYzZ38dsH7r90D9alvardM/Jj5WrgM5++uB9atPu365Dun069vG8juYs98ArF9DmvVr6rBOvzEcqzJBzn4TsH6NKdUv35JIp99MuNcSzdfsktavKaX65ZIdPvB1Nn8FsH7NQuoHfJ3IXwWsX4uQ+gFf5/BXA+t3rJD6ATndXwOs3wYh9QNypr8OWL/jhNQPyEn+emD9NgqpH/B5vt8ArN/xQuoHfJ7qNwHrd4KQ+gGfZ/ktwPqdKKR+wOcJ/gZg/U4SUj/g45y/EVi/k4XUD9in/ROA9fuCkPoB+4x/ErB+pwipH3Cf+MA14yPrpz/3an6QXL/mpF9r06/d6dcs66n1s3P6tWT9Grp+TV6/F6Hf29Dv6ej3iPR7Y/q9Nv0eo37PUr9Xq9/71e956/fQ9WcH9GcR9Gcw9Gc69GdZ9Gdj9GeC9GeM9Ger9Ge15lD4iH4GNfHrBh2P1ebzJGn91+UtuFg5U++xxnnwxzBdjGvBXiq1kBNF7hOtYx+y+MFvW5N0rIW4Gwi3+G3lvQE/R6GmbrOmuYRHV2r7/6vj12w+B4ztRy/Y053zzYZyHPuNxrXgLz+6UPh/jNeHZ9RWN6htxu95hveMGNuM34n7GW8nccy/Zg5+v4+hhXA1yVloqDmrDTP4xLuewAdpxyfgNxr3IGMSzHsnfqUQGOv4XdSkvbHTevQ/nuw8+p9gnLtH/4Qxj+eCouOeSNl+9Nd5n4ifo1itiV8yZ63ouF/LKMq2eckRmPNJuLn2kfULHpi0vukUPhI+MLXBP+QD00ZYPfO7fOac+GVDYP3SegA9mew8gH7BOHcPoAljnswFRcc9hbL9AKrzPgU/R1bx+RSgzp3hs40H/w5qtonLewzFT2W/ybjWHhSfQW3nKoriM+jzUTwujkPxnR+fofipRjH1eBO1RXHUHwPHbaKkj/6nAnVtIjsbEN2ETqV0GnxSnacBdXaj+Gd56DqgH+SQNbCl8XSys57gC+oMwjWOtLDhDFysEDb8jXHusCFhzDO4oOi4Z1K2sUHnfSZ+jqxiw5lAnQKxwY+RKw4bzmJ/tnHNYQMmZirYcBaFseFskoUNZwF1nU12Nje6CZ1F6TT4pDq/CFyvUrHhiwI0fonsrCf4gjqHcI0jLWw4BxcrhA1/a5w7bEgY8xwuKDruZso2Nui8N+PnyCo2bAbqFIgN+Ri54rDhXPbnGdccNmBipoIN51IYG84jWdhwLlDXeWRnc6Ob0LmUToNPqvPLOJ15qdjwZQEazyc76wm+oC4gXONICxsuwMUKYcPfGecOGxLGvIALio57IWUbG3TeF+LnyCo2XAjUKRAbKmPkisOGi9hfbFxz2ICJmQo2XERhbLiYZGHDRUBdF5OdzY1uQhdROg0+qc6v4HRWSsWGrwjQ+FWys57gC+oSwjWOtLDhElysEDb8vXHusCFhzEu4oOi4l1K2sUHnfSl+jqxiw6VAnQKxoRAjVxw2bGF/mXHNYQMmZirYsIXC2HAZycKGLUBdl5GdzY1uQlsonQaf+K+1cToLUrHhawI0Xk521hN8QV1BuMaRFjZcgYsVwoZ/MM4dNiSMeQUXFB33Sso2Nui8r8TPkVVsuBKoUyA2VMXIFYcNV7G/2rjmsAETMxVsuIrC2HA1ycKGq4C6riY7mxvdhK6idBp8Up1fx+mskooNXxeg8RtkZz3BF9Q1hGscaWHDNbhYIWz4pnHusCFhzGu4oOi411K2sUHnfS1+jqxiw7VAnQKxoTpGrjhsuI799cY1hw2YmKlgw3UUxobrSRY2XAfUdT3Z2dzoJnQdpdPgk+r8Fk5ntVRs+JYAjd8mO+sJvqBuIFzjSAsbbsDFCmHDPxrnDhsSxryBC4qOeyNlGxt03jfi58gqNtwI1CkQG2pi5IrDhpvY32xcc9iAiZkKNtxEYWy4mWRhw01AXTeTnc2NbkI3UToNPqnO7+B01kjFhu8I0PhdsrOe4AvqFsI1jrSw4RZcrBA2/JNx7rAhYcxbuKDouLdStrFB530rfo6sYsOtQJ0CsaEYI1ccNtzG/nbjmsMGTMxUsOE2CmPD7SQLG24D6rqd7GxudBO6jdJp8El1fg+nsygVG74nQOP3yc56gi+oOwjXONLChjtwsULY8M/GucOGhDHv4IKi495J2cYGnfed+Dmyig13AnUKxIbaGLnisOEu9ncb1xw2YGKmgg13URgb7iZZ2HAXUNfdZGdzo5vQXZROg0+q8wc4nbVSseEHAjT+kOysJ/iCuodwjSMtbLgHFyuEDf9inDtsSBjzHi4oOu69lG1s0Hnfi58jq9hwL1CnQGyoj5ErDhvuY3+/cc1hAyZmKthwH4Wx4X6ShQ33AXXdT3Y2N7oJ3UfpNPikOn+E01kvFRt+JEDjj8nOeoIvqAcI1zjSwoYHcLFC2PCvxrnDhoQxH+CCouM+SNnGBp33g/g5sooNDwJ1CsSGhhi54rDhIfYPG9ccNmBipoIND1EYGx4mWdjwEFDXw2Rnc6Ob0EOUToNPqvMnOJ0NUrHhJwI0/pTsrCf4gnqEcI0jLWx4BBcrhA3/Zpw7bEgY8xEuKDruo5RtbNB5P4qfI6vY8ChQp0BsaIyRKw4bHmP/uHHNYQMmZirY8BiFseFxkoUNjwF1PU52Nje6CT1G6TT4pDp/htPZKBUbfiZA48/JznqCL6gnCNc40sKGJ3CxQtjw78a5w4aEMZ/ggqLjPknZxgad95P4ObKKDU8CdQrEhqYYueKw4Sn2TxvXHDZgYqaCDU9RGBueJlnY8BRQ19NkZ3Ojm9BTlE6DT6rzFzidTVKx4RcCNP6S7Kwn+IJ6hnCNIy1seAYXK4QN/2GcO2xIGPMZLig67rOUbWzQeT+LnyOr2PAsUKdAbGiOkSsOG55j/7xxzWEDJmYq2PAchbHheZKFDc8BdT1PdjY3ugk9R+k0+KQ6f4XT2SwVG34lQOOvyc56gi+oFwjXONLChhdwsULY8Bvj3GFDwpgvcEHRcV+kbGODzvtF/BxZxYYXgToFYkNLjFxx2PAS+5eNaw4bMDFTwYaXKIwNL5MsbHgJqOtlsrO50U3oJUqnwSfV+Vuczhap2PBbARp/R3bWE3xBvUK4xpEWNryCixXChv80zh02JIz5ChcUHfdVyjY26Lxfxc+RVWx4FahTHjb4yKf2ewwbXmP/unHNYQMmZirY8BqFseF1koUNrwF1vU52Nje6Cb1G6TT4pDr/C6bTz0nFBlwN7Gn8PdlZT/AF9QbhGkda2PAGLlYIG/7bOHfYkDDmG1xQdNw3KdvYoPN+Ez9HVrHhTaBOgdjgx8gVhw1vsX/buOawARMzFWx4i8LY8DbJwoa3gLreJjubG92E3qJ0GnxSnf8D0+n7UrEBVwN7Gv9AdtYTfEG9Q7jGkRY2vIOLFcKG/zXOHTYkjPkOFxQd913KNjbovN/Fz5FVbHgXqFMgNuRj5IrDhvfYv29cc9iAiZkKNrxHYWx4n2Rhw3tAXe+Tnc2NbkLvUToNPqnO/4Pp9PNSsQFXA3sa/0h21hN8QX1AuMaRFjZ8gIsVwob/N84dNiSM+QEXFB33Q8o2Nui8P8TPkVVs+BCoUyA2VMbIFYcNH7H/2LjmsAETMxVs+IjC2PAxycKGj4C6PiY7mxvdhD6idBp8Up1/gun0K6ViA64G9jT+meysJ/iC+oRwjSMtbPgEFyuEDX8xzh02JIz5CRcUHfdTyjY26Lw/xc+RVWz4FKhTIDYUYuSKw4at7LcZ1xw2YGKmgg1bKYwN20gWNmwF6tpGdjY3ugltpXQafOIHOg+GDQWp2ICrgT2NnmdnPcEXVBdPHjZ0ARbX1NvVGDhsSBhTT5IuKDpuNw/YTS3l3c2Dz5FVbOgG3FACsaEqRq44bCjhApcaa89hAyZmKthQ4oWxodSThQ0lwMZc6tnZ3OgmVOKl0+CT6uyOw4YqqdjQ3cu+xh5SsKFMIDaUWcKGng4bsJPU0wI2lGccG3Te5cKwobxzY0N1jFxx2NCLC9zbYYNMbOgVwYbewrChF7Ax9/bsbG50E+olBBv64LChWio29PGyr7GvFGzoJxAb+lnChv4OG7CT1N8CNgzIODbovAcIw4YBnRsbamLkisOGgVzgQQ4bZGLDwAg2DBKGDQOBjXmQZ2dzo5vQQCHYMBiHDTVSsWGwl32Ne0nBhiECsWGIJWwY6rABO0lDLWDDsIxjg857mDBsGNa5saEYI1ccNgznAlc4bJCJDcMj2FAhDBuGAxtzhWdnc6Ob0HAh2DAChw1Fqdgwwsu+xpFSsGGUQGwYZQkbRjtswE7SaAvYMCbj2KDzHiMMG8Z0bmyojZErDhvGcoHHOWyQiQ1jI9gwThg2jAU25nGenc2NbkJjhWDD3jhsqJWKDXt72de4jxRs2FcgNuxrCRv2c9iAnaT9LGDD+Ixjg857vDBsGN+5saE+Rq44bJjABZ7osEEmNkyIYMNEYdgwAdiYJ3p2Nje6CU0Qgg3747ChXio27O9lX+MBUrDhQIHYcKAlbDjIYQN2kg6ygA2TMo4NOu9JwrBhUufGhoYYueKwYTIXOOewQSY2TI5gQ04YNkwGNuacZ2dzo5vQZCHY4OOwoUEqNvhe9jXmpWBDpUBsqLSEDQWHDdhJKljAhqqMY4POu0oYNlR1bmxojJErDhuqucA1DhtkYkN1BBtqhGFDNbAx13h2Nje6CVULwYYiDhsapWJD0cu+xlop2HCwQGw42BI2HOKwATtJh1jAhikZxwad9xRh2DClc2NDU4xccdgwlQs8zWGDTGyYGsGGacKwYSqwMU/z7GxudBOaKgQbDsVhQ5NUbDjUy77GOinYMF0gNky3hA0zHDZgJ2mGBWyYmXFs0HnPFIYNMzs3NjTHyBWHDbO4wLMdNsjEhlkRbJgtDBtmARvzbM/O5kY3oVlCsGEODhuapWLDHC/7GudKwYZ5ArFhniVsmO+wATtJ8y1gw4KMY4POe4EwbFjQubGhJUauOGxYyAVe5LBBJjYsjGDDImHYsBDYmBd5djY3ugktFIINi3HY0CIVGxZ72de4BKlRiyuh1qaxlVq7/FZDrP63HtTahbXvzj6wMvY92Zez78W+N/s+7Puy78e+P/sB7AeyH8R+MPu92A9hP5T9MPbD2VewH8F+JPtR7EezH8N+LPtx7Pdmvw/7fdnvx348+wnsJ7Lfn/0B7A9kfxD7Sewns8+x99nn2VeyL7CvYl/NvoZ9kX0t+4PZH8J+Cvup7KexP5R9Hfvp7Gewn8l+llEnfZzO4y+xP5/9V9lfzv4b7L/N/rvsv8/+h+x/zP6n7H/O/pfsf83+d+x/z/4P7P/I/s/sPY/XJPu+7PdiP5L9PuwPYJ9nX8u+jv1c9kvYL410M/SmXgp8YNTa9H4NnghE9/Zs9novLlM/fJjXus/NZ4DBdfPoEsk5qc4uwPotE/Iguxyn87Nn9h6FX4IINC835u+vGjuiOiYYAgA=", + "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" }, { @@ -97,7 +358,285 @@ } ], "returnTypes": [], - "bytecode": "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", + "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/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/aztec.js/src/contract_deployer/contract_deployer.ts b/yarn-project/aztec.js/src/contract_deployer/contract_deployer.ts index fb9a9b14ea7..c01f4490025 100644 --- a/yarn-project/aztec.js/src/contract_deployer/contract_deployer.ts +++ b/yarn-project/aztec.js/src/contract_deployer/contract_deployer.ts @@ -6,7 +6,7 @@ import { DeployMethod } from './deploy_method.js'; /** * A class for deploying contract. - * @remarks Keeping this around even though we have noir contract types because it can be useful for non-TS users. + * @remarks Keeping this around even though we have Aztec.nr contract types because it can be useful for non-TS users. */ export class ContractDeployer { constructor(private abi: ContractAbi, private arc: AztecRPC, private publicKey?: PublicKey) {} diff --git a/yarn-project/aztec.js/src/utils/cheat_codes.ts b/yarn-project/aztec.js/src/utils/cheat_codes.ts index 1dc12106108..d5e644e6ff4 100644 --- a/yarn-project/aztec.js/src/utils/cheat_codes.ts +++ b/yarn-project/aztec.js/src/utils/cheat_codes.ts @@ -151,7 +151,7 @@ export class EthCheatCodes { /** * Computes the slot value for a given map and key. - * @param baseSlot - The base slot of the map (specified in noir contract) + * @param baseSlot - The base slot of the map (specified in Aztec.nr contract) * @param key - The key to lookup in the map * @returns The storage slot of the value in the map */ @@ -228,7 +228,7 @@ export class AztecCheatCodes { /** * Computes the slot value for a given map and key. - * @param baseSlot - The base slot of the map (specified in noir contract) + * @param baseSlot - The base slot of the map (specified in Aztec.nr contract) * @param key - The key to lookup in the map * @returns The storage slot of the value in the map */ diff --git a/yarn-project/bootstrap.sh b/yarn-project/bootstrap.sh index f3ad539416e..78be8c3e692 100755 --- a/yarn-project/bootstrap.sh +++ b/yarn-project/bootstrap.sh @@ -16,7 +16,7 @@ set -eu yarn install --immutable -# Build the necessary dependencies for noir contracts typegen. +# Build the necessary dependencies for Aztec.nr contracts typegen. for DIR in foundation noir-compiler circuits.js; do echo "Building $DIR..." cd $DIR @@ -24,7 +24,7 @@ for DIR in foundation noir-compiler circuits.js; do cd .. done -# Run remake bindings before building noir contracts or l1 contracts as they depend on files created by it. +# Run remake bindings before building Aztec.nr contracts or l1 contracts as they depend on files created by it. yarn --cwd circuits.js remake-bindings yarn --cwd circuits.js remake-constants diff --git a/yarn-project/canary/src/uniswap_trade_on_l1_from_l2.test.ts b/yarn-project/canary/src/uniswap_trade_on_l1_from_l2.test.ts index f79632c5f83..7a142332a03 100644 --- a/yarn-project/canary/src/uniswap_trade_on_l1_from_l2.test.ts +++ b/yarn-project/canary/src/uniswap_trade_on_l1_from_l2.test.ts @@ -243,7 +243,7 @@ describe('uniswap_trade_on_l1_from_l2', () => { // 3. Claim WETH on L2 logger('Minting weth on L2'); - // Call the mint tokens function on the noir contract + // Call the mint tokens function on the Aztec.nr contract const consumptionTx = wethL2Contract.methods .mint(wethAmountToBridge, owner, messageKey, secret, ethAccount.toField()) .send(); @@ -324,7 +324,7 @@ describe('uniswap_trade_on_l1_from_l2', () => { // 6. claim dai on L2 logger('Consuming messages to mint dai on L2'); - // Call the mint tokens function on the noir contract + // Call the mint tokens function on the Aztec.nr contract const daiMintTx = daiL2Contract.methods .mint(daiAmountToBridge, owner, depositDaiMessageKey, secret, ethAccount.toField()) .send(); 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/circuits.js/src/structs/verification_key.test.ts b/yarn-project/circuits.js/src/structs/verification_key.test.ts index 40256ed8613..7dd17b375dc 100644 --- a/yarn-project/circuits.js/src/structs/verification_key.test.ts +++ b/yarn-project/circuits.js/src/structs/verification_key.test.ts @@ -1,7 +1,7 @@ import { VerificationKey } from './verification_key.js'; describe('structs/verification_key', () => { - // The VK below was grabbed from the noir contract artifact child_contract.json + // The VK below was grabbed from the Aztec.nr contract artifact child_contract.json it(`can deserialize vk built by noir`, () => { const serialized = `0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f`; const vk = VerificationKey.fromBuffer(Buffer.from(serialized, 'hex')); diff --git a/yarn-project/cli/README.md b/yarn-project/cli/README.md index e2ec0163948..87f643a669f 100644 --- a/yarn-project/cli/README.md +++ b/yarn-project/cli/README.md @@ -135,7 +135,7 @@ aztec-cli create-account ### deploy -Deploys a compiled Noir contract to Aztec. +Deploys a compiled Aztec.nr contract to Aztec. Syntax: @@ -145,12 +145,12 @@ aztec-cli deploy [options] Options: -- `-c, --contract-abi `: Path to the compiled Noir contract's ABI file in JSON format. You can also use one of Aztec's example contracts found in [@aztec/noir-contracts](https://www.npmjs.com/package/@aztec/noir-contracts), e.g. PrivateTokenContractAbi. You can get a full ist of the available contracts with `aztec-cli example-contracts` +- `-c, --contract-abi `: Path to the compiled Aztec.nr contract's ABI file in JSON format. You can also use one of Aztec's example contracts found in [@aztec/noir-contracts](https://www.npmjs.com/package/@aztec/noir-contracts), e.g. PrivateTokenContractAbi. You can get a full ist of the available contracts with `aztec-cli example-contracts` - `-a, --args ` (optional): Contract constructor arguments Default: []. - `-u, --rpc-url `: URL of the Aztec RPC. Default: `http://localhost:8080`. - `-k, --public-key `: Public key of the deployer. If not provided, it will check the RPC for existing ones. -This command deploys a compiled Noir contract to Aztec. It requires the path to the contract's ABI file in JSON format. Optionally, you can specify the public key of the deployer and provide constructor arguments for the contract. The command displays the address of the deployed contract. +This command deploys a compiled Aztec.nr contract to Aztec. It requires the path to the contract's ABI file in JSON format. Optionally, you can specify the public key of the deployer and provide constructor arguments for the contract. The command displays the address of the deployed contract. Example usage: diff --git a/yarn-project/cli/src/index.ts b/yarn-project/cli/src/index.ts index b1ac8bb4c7c..a597a07e21f 100644 --- a/yarn-project/cli/src/index.ts +++ b/yarn-project/cli/src/index.ts @@ -148,10 +148,10 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command { program .command('deploy') - .description('Deploys a compiled Noir contract to Aztec.') + .description('Deploys a compiled Aztec.nr contract to Aztec.') .argument( '', - "A compiled Noir contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts", + "A compiled Aztec.nr contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts", ) .option('-a, --args ', 'Contract constructor arguments', []) .option('-u, --rpc-url ', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080') @@ -360,7 +360,7 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command { .option('-a, --args [functionArgs...]', 'Function arguments', []) .requiredOption( '-c, --contract-abi ', - "A compiled Noir contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts", + "A compiled Aztec.nr contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts", ) .requiredOption('-ca, --contract-address
', 'Aztec address of the contract.') .option('-k, --private-key ', "The sender's private key.", PRIVATE_KEY) @@ -406,7 +406,7 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command { .option('-a, --args [functionArgs...]', 'Function arguments', []) .requiredOption( '-c, --contract-abi ', - "A compiled Noir contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts", + "A compiled Aztec.nr contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts", ) .requiredOption('-ca, --contract-address
', 'Aztec address of the contract.') .option('-f, --from ', 'Public key of the TX viewer. If empty, will try to find account in RPC.') @@ -438,7 +438,7 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command { .argument('', 'The encoded hex string') .requiredOption( '-c, --contract-abi ', - "A compiled Noir contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts", + "A compiled Aztec.nr contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts", ) .requiredOption('-p, --parameter ', 'The name of the struct parameter to decode into') .action(async (encodedString, options) => { 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_pending_commitments_contract.test.ts b/yarn-project/end-to-end/src/e2e_pending_commitments_contract.test.ts index 24edd48610b..2c8d21403ee 100644 --- a/yarn-project/end-to-end/src/e2e_pending_commitments_contract.test.ts +++ b/yarn-project/end-to-end/src/e2e_pending_commitments_contract.test.ts @@ -64,7 +64,7 @@ describe('e2e_pending_commitments_contract', () => { return contract; }; - it('Noir function can "get" notes it just "inserted"', async () => { + it('Aztec.nr function can "get" notes it just "inserted"', async () => { const mintAmount = 65n; const deployedContract = await deployContract(); @@ -76,7 +76,7 @@ describe('e2e_pending_commitments_contract', () => { expect(receipt.status).toBe(TxStatus.MINED); }, 60_000); - it('Squash! Noir function can "create" and "nullify" note in the same TX', async () => { + it('Squash! Aztec.nr function can "create" and "nullify" note in the same TX', async () => { // Kernel will squash the noteHash and its nullifier. // Realistic way to describe this test is "Mint note A, then burn note A in the same transaction" const mintAmount = 65n; @@ -101,7 +101,7 @@ describe('e2e_pending_commitments_contract', () => { await expectNullifiersSquashedExcept(0); }, 60_000); - it('Squash! Noir function can "create" 2 notes and "nullify" both in the same TX', async () => { + it('Squash! Aztec.nr function can "create" 2 notes and "nullify" both in the same TX', async () => { // Kernel will squash both noteHashes and their nullifier. // Realistic way to describe this test is "Mint notes A and B, then burn both in the same transaction" const mintAmount = 65n; @@ -125,7 +125,7 @@ describe('e2e_pending_commitments_contract', () => { await expectNullifiersSquashedExcept(0); }, 60_000); - it('Squash! Noir function can "create" 2 notes and "nullify" 1 in the same TX (kernel will squash one note + nullifier)', async () => { + it('Squash! Aztec.nr function can "create" 2 notes and "nullify" 1 in the same TX (kernel will squash one note + nullifier)', async () => { // Kernel will squash one noteHash and its nullifier. // The other note will become persistent! // Realistic way to describe this test is "Mint notes A and B, then burn note A in the same transaction" @@ -150,7 +150,7 @@ describe('e2e_pending_commitments_contract', () => { await expectNullifiersSquashedExcept(0); }, 60_000); - it('Squash! Noir function can nullify a pending note and a persistent in the same TX', async () => { + it('Squash! Aztec.nr function can nullify a pending note and a persistent in the same TX', async () => { // Create 1 note in isolated TX. // Then, in a separate TX, create 1 new note and nullify BOTH notes. // In this second TX, the kernel will squash one note + nullifier, 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/end-to-end/src/fixtures/cross_chain_test_harness.ts b/yarn-project/end-to-end/src/fixtures/cross_chain_test_harness.ts index ad71a3f1733..9084a112687 100644 --- a/yarn-project/end-to-end/src/fixtures/cross_chain_test_harness.ts +++ b/yarn-project/end-to-end/src/fixtures/cross_chain_test_harness.ts @@ -166,7 +166,7 @@ export class CrossChainTestHarness { async consumeMessageOnAztecAndMintSecretly(bridgeAmount: bigint, messageKey: Fr, secret: Fr) { this.logger('Consuming messages on L2 secretively'); - // Call the mint tokens function on the noir contract + // Call the mint tokens function on the Aztec.nr contract const consumptionTx = this.l2Contract.methods .mint(bridgeAmount, this.ownerAddress, messageKey, secret, this.ethAccount.toField()) .send(); @@ -178,7 +178,7 @@ export class CrossChainTestHarness { async consumeMessageOnAztecAndMintPublicly(bridgeAmount: bigint, messageKey: Fr, secret: Fr) { this.logger('Consuming messages on L2 Publicly'); - // Call the mint tokens function on the noir contract + // Call the mint tokens function on the Aztec.nr contract const consumptionTx = this.l2Contract.methods .mintPublic(bridgeAmount, this.ownerAddress, messageKey, secret, this.ethAccount.toField()) .send(); diff --git a/yarn-project/foundation/src/abi/abi.ts b/yarn-project/foundation/src/abi/abi.ts index 0fecd88c5cd..18dd0dd2793 100644 --- a/yarn-project/foundation/src/abi/abi.ts +++ b/yarn-project/foundation/src/abi/abi.ts @@ -96,7 +96,7 @@ export interface StructType extends BasicType<'struct'> { } /** - * Noir function types. + * Aztec.nr function types. */ export enum FunctionType { SECRET = 'secret', diff --git a/yarn-project/foundation/src/abi/decoder.ts b/yarn-project/foundation/src/abi/decoder.ts index 0dfbe09708c..cece6e9d949 100644 --- a/yarn-project/foundation/src/abi/decoder.ts +++ b/yarn-project/foundation/src/abi/decoder.ts @@ -62,7 +62,7 @@ class ReturnValuesDecoder { /** * Decodes all the return values for the given function ABI. - * Noir support only single return value + * Aztec.nr support only single return value * The return value can however be simple types, structs or arrays * @returns The decoded return values. */ diff --git a/yarn-project/noir-compiler/README.md b/yarn-project/noir-compiler/README.md index 92558025bbb..ade6f9bfa0c 100644 --- a/yarn-project/noir-compiler/README.md +++ b/yarn-project/noir-compiler/README.md @@ -1,6 +1,6 @@ -# Aztec Noir compiler +# Aztec.nr compiler -The Aztec noir compiler compiles noir contracts using nargo and outputs Aztec formatted contract ABIs. The compiler can also generate typescript classes for each contract, as well as Noir interfaces for calling external functions. +The Aztec.nr compiler compiles Aztec.nr contracts using nargo and outputs Aztec formatted contract ABIs. The compiler can also generate typescript classes for each contract, as well as Aztec.nr interfaces for calling external functions. ## Installation diff --git a/yarn-project/noir-compiler/package.json b/yarn-project/noir-compiler/package.json index 067b9a5c6d9..7ef409d0bb4 100644 --- a/yarn-project/noir-compiler/package.json +++ b/yarn-project/noir-compiler/package.json @@ -10,7 +10,7 @@ "entryPoints": [ "./src/index.ts" ], - "name": "Aztec noir compiler", + "name": "Aztec.nr compiler", "tsconfig": "./tsconfig.json" }, "bin": { diff --git a/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap b/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap index 4a4607ed288..5defbe9affe 100644 --- a/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap +++ b/yarn-project/noir-compiler/src/__snapshots__/index.test.ts.snap @@ -3,9 +3,167 @@ exports[`noir-compiler using nargo binary compiles the test contract 1`] = ` [ { + "debug": { + "debugSymbols": [ + "eJyrVsrJT04syczPK1ayqlYyULKKrlYqLkjMA/GKSxKLSpSsDE0MdZRS81KALFOzWh2ltMycVCC7VgdDpbEJVKGZOVydsQkWhUYGMJVGxkhKa2N1lAwH2gm1tQDKLFO0", + "eJyrVsrJT04syczPK1ayqq6tBQAz9wY7", + ], + "fileMap": { + "3": { + "path": "std/hash", + "source": "mod poseidon; + +#[foreign(sha256)] +fn sha256(_input : [u8; N]) -> [u8; 32] {} + +#[foreign(blake2s)] +fn blake2s(_input : [u8; N]) -> [u8; 32] {} + +fn pedersen(input : [Field; N]) -> [Field; 2] { + pedersen_with_separator(input, 0) +} + +#[foreign(pedersen)] +fn pedersen_with_separator(_input : [Field; N], _separator : u32) -> [Field; 2] {} + +#[foreign(hash_to_field_128_security)] +fn hash_to_field(_input : [Field; N]) -> Field {} + +#[foreign(keccak256)] +fn keccak256(_input : [u8; N], _message_size: u32) -> [u8; 32] {} + +// mimc-p/p implementation +// constants are (publicly generated) random numbers, for instance using keccak as a ROM. +// You must use constants generated for the native field +// Rounds number should be ~ log(p)/log(exp) +// For 254 bit primes, exponent 7 and 91 rounds seems to be recommended +fn mimc(x: Field, k: Field, constants: [Field; N], exp : Field) -> Field { + //round 0 + let mut t = x + k; + let mut h = t.pow_32(exp); + //next rounds + for i in 1 .. constants.len() { + t = h + k + constants[i]; + h = t.pow_32(exp); + }; + h + k +} + +global MIMC_BN254_ROUNDS = 91; + +//mimc implementation with hardcoded parameters for BN254 curve. +fn mimc_bn254(array: [Field; N]) -> Field { + //mimc parameters + let exponent = 7; + //generated from seed "mimc" using keccak256 + let constants: [Field; MIMC_BN254_ROUNDS] = [ + 0, + 20888961410941983456478427210666206549300505294776164667214940546594746570981, + 15265126113435022738560151911929040668591755459209400716467504685752745317193, + 8334177627492981984476504167502758309043212251641796197711684499645635709656, + 1374324219480165500871639364801692115397519265181803854177629327624133579404, + 11442588683664344394633565859260176446561886575962616332903193988751292992472, + 2558901189096558760448896669327086721003508630712968559048179091037845349145, + 11189978595292752354820141775598510151189959177917284797737745690127318076389, + 3262966573163560839685415914157855077211340576201936620532175028036746741754, + 17029914891543225301403832095880481731551830725367286980611178737703889171730, + 4614037031668406927330683909387957156531244689520944789503628527855167665518, + 19647356996769918391113967168615123299113119185942498194367262335168397100658, + 5040699236106090655289931820723926657076483236860546282406111821875672148900, + 2632385916954580941368956176626336146806721642583847728103570779270161510514, + 17691411851977575435597871505860208507285462834710151833948561098560743654671, + 11482807709115676646560379017491661435505951727793345550942389701970904563183, + 8360838254132998143349158726141014535383109403565779450210746881879715734773, + 12663821244032248511491386323242575231591777785787269938928497649288048289525, + 3067001377342968891237590775929219083706800062321980129409398033259904188058, + 8536471869378957766675292398190944925664113548202769136103887479787957959589, + 19825444354178182240559170937204690272111734703605805530888940813160705385792, + 16703465144013840124940690347975638755097486902749048533167980887413919317592, + 13061236261277650370863439564453267964462486225679643020432589226741411380501, + 10864774797625152707517901967943775867717907803542223029967000416969007792571, + 10035653564014594269791753415727486340557376923045841607746250017541686319774, + 3446968588058668564420958894889124905706353937375068998436129414772610003289, + 4653317306466493184743870159523234588955994456998076243468148492375236846006, + 8486711143589723036499933521576871883500223198263343024003617825616410932026, + 250710584458582618659378487568129931785810765264752039738223488321597070280, + 2104159799604932521291371026105311735948154964200596636974609406977292675173, + 16313562605837709339799839901240652934758303521543693857533755376563489378839, + 6032365105133504724925793806318578936233045029919447519826248813478479197288, + 14025118133847866722315446277964222215118620050302054655768867040006542798474, + 7400123822125662712777833064081316757896757785777291653271747396958201309118, + 1744432620323851751204287974553233986555641872755053103823939564833813704825, + 8316378125659383262515151597439205374263247719876250938893842106722210729522, + 6739722627047123650704294650168547689199576889424317598327664349670094847386, + 21211457866117465531949733809706514799713333930924902519246949506964470524162, + 13718112532745211817410303291774369209520657938741992779396229864894885156527, + 5264534817993325015357427094323255342713527811596856940387954546330728068658, + 18884137497114307927425084003812022333609937761793387700010402412840002189451, + 5148596049900083984813839872929010525572543381981952060869301611018636120248, + 19799686398774806587970184652860783461860993790013219899147141137827718662674, + 19240878651604412704364448729659032944342952609050243268894572835672205984837, + 10546185249390392695582524554167530669949955276893453512788278945742408153192, + 5507959600969845538113649209272736011390582494851145043668969080335346810411, + 18177751737739153338153217698774510185696788019377850245260475034576050820091, + 19603444733183990109492724100282114612026332366576932662794133334264283907557, + 10548274686824425401349248282213580046351514091431715597441736281987273193140, + 1823201861560942974198127384034483127920205835821334101215923769688644479957, + 11867589662193422187545516240823411225342068709600734253659804646934346124945, + 18718569356736340558616379408444812528964066420519677106145092918482774343613, + 10530777752259630125564678480897857853807637120039176813174150229243735996839, + 20486583726592018813337145844457018474256372770211860618687961310422228379031, + 12690713110714036569415168795200156516217175005650145422920562694422306200486, + 17386427286863519095301372413760745749282643730629659997153085139065756667205, + 2216432659854733047132347621569505613620980842043977268828076165669557467682, + 6309765381643925252238633914530877025934201680691496500372265330505506717193, + 20806323192073945401862788605803131761175139076694468214027227878952047793390, + 4037040458505567977365391535756875199663510397600316887746139396052445718861, + 19948974083684238245321361840704327952464170097132407924861169241740046562673, + 845322671528508199439318170916419179535949348988022948153107378280175750024, + 16222384601744433420585982239113457177459602187868460608565289920306145389382, + 10232118865851112229330353999139005145127746617219324244541194256766741433339, + 6699067738555349409504843460654299019000594109597429103342076743347235369120, + 6220784880752427143725783746407285094967584864656399181815603544365010379208, + 6129250029437675212264306655559561251995722990149771051304736001195288083309, + 10773245783118750721454994239248013870822765715268323522295722350908043393604, + 4490242021765793917495398271905043433053432245571325177153467194570741607167, + 19596995117319480189066041930051006586888908165330319666010398892494684778526, + 837850695495734270707668553360118467905109360511302468085569220634750561083, + 11803922811376367215191737026157445294481406304781326649717082177394185903907, + 10201298324909697255105265958780781450978049256931478989759448189112393506592, + 13564695482314888817576351063608519127702411536552857463682060761575100923924, + 9262808208636973454201420823766139682381973240743541030659775288508921362724, + 173271062536305557219323722062711383294158572562695717740068656098441040230, + 18120430890549410286417591505529104700901943324772175772035648111937818237369, + 20484495168135072493552514219686101965206843697794133766912991150184337935627, + 19155651295705203459475805213866664350848604323501251939850063308319753686505, + 11971299749478202793661982361798418342615500543489781306376058267926437157297, + 18285310723116790056148596536349375622245669010373674803854111592441823052978, + 7069216248902547653615508023941692395371990416048967468982099270925308100727, + 6465151453746412132599596984628739550147379072443683076388208843341824127379, + 16143532858389170960690347742477978826830511669766530042104134302796355145785, + 19362583304414853660976404410208489566967618125972377176980367224623492419647, + 1702213613534733786921602839210290505213503664731919006932367875629005980493, + 10781825404476535814285389902565833897646945212027592373510689209734812292327, + 4212716923652881254737947578600828255798948993302968210248673545442808456151, + 7594017890037021425366623750593200398174488805473151513558919864633711506220, + 18979889247746272055963929241596362599320706910852082477600815822482192194401, + 13602139229813231349386885113156901793661719180900395818909719758150455500533, + ]; + + let mut r = 0; + for elem in array { + let h = mimc(elem, r, constants, exponent); + r = r + elem + h; + } + r +} +", + }, + }, + }, "functions": [ { - "bytecode": "H4sIAAAAAAAA/61RQQ6DQAjEtfU9sIALt36lm67/f0GjRkzWs04ymeEykGECgAQHho1T6Dn/w48bX3DFGPoJxXug4cGs1GUxziKt5EZMX8xeTVG0zkZGavrLxtxMrHj1gk7CjRZ1XiLs/dxd2Hd7+tT9YO9037cCCmnZhZgBAAA=", + "bytecode": "H4sIAAAAAAAA/61Q0QrDMAhMuqXfo1EbfduvLCz9/y8Y66gF6Wt7cJwncsjNKaVH2pE3zq6H//r8v3luLO6n0z7iyHu5wjVgvjFrClkEC/NodSDhG6p1FWDpi6KiqHyqEg1lbdatgSHTwFWMVg8r9/0FsfMcOo49l9DxD+/NSgK4AQAA", "functionType": "secret", "isInternal": false, "name": "constructor", @@ -22,7 +180,7 @@ exports[`noir-compiler using nargo binary compiles the test contract 1`] = ` "verificationKey": "0000000200000800000000740000000f00000003515f3109623eb3c25aa5b16a1a79fd558bac7a7ce62c4560a8c537c77ce80dd339128d1d37b6582ee9e6df9567efb64313471dfa18f520f9ce53161b50dbf7731bc5f900000003515f322bc4cce83a486a92c92fd59bd84e0f92595baa639fc2ed86b00ffa0dfded2a092a669a3bdb7a273a015eda494457cc7ed5236f26cee330c290d45a33b9daa94800000003515f332729426c008c085a81bd34d8ef12dd31e80130339ef99d50013a89e4558eee6d0fa4ffe2ee7b7b62eb92608b2251ac31396a718f9b34978888789042b790a30100000003515f342be6b6824a913eb7a57b03cb1ee7bfb4de02f2f65fe8a4e97baa7766ddb353a82a8a25c49dc63778cd9fe96173f12a2bc77f3682f4c4448f98f1df82c75234a100000003515f351f85760d6ab567465aadc2f180af9eae3800e6958fec96aef53fd8a7b195d7c000c6267a0dd5cfc22b3fe804f53e266069c0e36f51885baec1e7e67650c62e170000000c515f41524954484d455449430d9d0f8ece2aa12012fa21e6e5c859e97bd5704e5c122064a66051294bc5e04213f61f54a0ebdf6fee4d4a6ecf693478191de0c2899bcd8e86a636c8d3eff43400000003515f43224a99d02c86336737c8dd5b746c40d2be6aead8393889a76a18d664029096e90f7fe81adcc92a74350eada9622ac453f49ebac24a066a1f83b394df54dfa0130000000c515f46495845445f42415345060e8a013ed289c2f9fd7473b04f6594b138ddb4b4cf6b901622a14088f04b8d2c83ff74fce56e3d5573b99c7b26d85d5046ce0c6559506acb7a675e7713eb3a00000007515f4c4f4749430721a91cb8da4b917e054f72147e1760cfe0ef3d45090ac0f4961d84ec1996961a25e787b26bd8b50b1a99450f77a424a83513c2b33af268cd253b0587ff50c700000003515f4d05dbd8623b8652511e1eb38d38887a69eceb082f807514f09e127237c5213b401b9325b48c6c225968002318095f89d0ef9cf629b2b7f0172e03bc39aacf6ed800000007515f52414e474504b57a3805e41df328f5ca9aefa40fad5917391543b7b65c6476e60b8f72e9ad07c92f3b3e11c8feae96dedc4b14a6226ef3201244f37cfc1ee5b96781f48d2b000000075349474d415f3125001d1954a18571eaa007144c5a567bb0d2be4def08a8be918b8c05e3b27d312c59ed41e09e144eab5de77ca89a2fd783be702a47c951d3112e3de02ce6e47c000000075349474d415f3223994e6a23618e60fa01c449a7ab88378709197e186d48d604bfb6931ffb15ad11c5ec7a0700570f80088fd5198ab5d5c227f2ad2a455a6edeec024156bb7beb000000075349474d415f3300cda5845f23468a13275d18bddae27c6bb189cf9aa95b6a03a0cb6688c7e8d829639b45cf8607c525cc400b55ebf90205f2f378626dc3406cc59b2d1b474fba000000075349474d415f342d299e7928496ea2d37f10b43afd6a80c90a33b483090d18069ffa275eedb2fc2f82121e8de43dc036d99b478b6227ceef34248939987a19011f065d8b5cef5c0000000010000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f", }, { - "bytecode": "H4sIAAAAAAAA/6WOSwqAMAwFU0+Ub5vsvEqL6f2PIKKCIK6czcBbPGYBgAJv7m29LFhVs3GSUEeO4YZqozo5mdvGLpKu3mJEwyCVpGkhE0/K4wt/wf2r9fAOFP9TANAAAAA=", + "bytecode": "H4sIAAAAAAAA/6WPuw2AMAxEHSbyN7E7VkmEs/8IFIAUCVHxmpOuON3bAKDAm6fb7xSsqtk4Sagjx3BDtVGdnMztYBdJV28xomGQStK0kIkXZdnCX3D/+rp6nNHQ/4XYAAAA", "functionType": "open", "isInternal": false, "name": "openFunction", @@ -40,19 +198,21 @@ exports[`noir-compiler using nargo binary compiles the test contract 1`] = ` ] `; -exports[`noir-compiler using nargo binary generates noir external interface 1`] = ` +exports[`noir-compiler using nargo binary generates Aztec.nr external interface 1`] = ` "/* Autogenerated file, do not edit! */ use dep::std; -use dep::aztec::context::PrivateContext; +use dep::aztec::context::{ PrivateContext, PublicContext }; use dep::aztec::constants_gen::RETURN_VALUES_LENGTH; -struct TestContractContractInterface { + +// Interface for calling TestContract functions from a private context +struct TestContractPrivateContextInterface { address: Field, } -impl TestContractContractInterface { +impl TestContractPrivateContextInterface { fn at(address: Field) -> Self { Self { address, @@ -69,7 +229,34 @@ impl TestContractContractInterface { } } + + + + +// Interface for calling TestContract functions from a public context +struct TestContractPublicContextInterface { + address: Field, +} + +impl TestContractPublicContextInterface { + fn at(address: Field) -> Self { + Self { + address, + } + } + + fn openFunction( + self, + context: PublicContext + ) -> [Field; RETURN_VALUES_LENGTH] { + let mut serialised_args = [0; 0]; + context.call_public_function(self.address, 0x46be982e, serialised_args) + } + +} + + " `; @@ -78,12 +265,12 @@ exports[`noir-compiler using nargo binary generates typescript interface 1`] = ` /* Autogenerated file, do not edit! */ /* eslint-disable */ -import { AztecAddress, ContractBase, ContractFunctionInteraction, ContractMethod, DeployMethod, FieldLike, Wallet } from '@aztec/aztec.js'; +import { AztecAddress, CompleteAddress, ContractBase, ContractFunctionInteraction, ContractMethod, DeployMethod, FieldLike, Wallet } from '@aztec/aztec.js'; import { Fr, Point } from '@aztec/foundation/fields'; import { AztecRPC, PublicKey } from '@aztec/types'; import { ContractAbi } from '@aztec/foundation/abi'; import TestContractContractAbiJson from '../target/test.json' assert { type: 'json' }; -export const TestContractContractAbi = TestContractContractAbiJson as ContractAbi; +export const TestContractContractAbi = TestContractContractAbiJson as unknown as ContractAbi; /** * Type-safe interface for contract TestContract; @@ -91,12 +278,12 @@ export const TestContractContractAbi = TestContractContractAbiJson as ContractAb export class TestContractContract extends ContractBase { private constructor( - /** The deployed contract's address. */ - address: AztecAddress, + /** The deployed contract's complete address. */ + completeAddress: CompleteAddress, /** The wallet. */ wallet: Wallet, ) { - super(address, TestContractContractAbi, wallet); + super(completeAddress, TestContractContractAbi, wallet); } @@ -113,10 +300,11 @@ export class TestContractContract extends ContractBase { /** The wallet. */ wallet: Wallet, ) { - if ((await wallet.getContractData(address)) === undefined) { + const extendedContractData = await wallet.getExtendedContractData(address); + if (extendedContractData === undefined) { throw new Error('Contract ' + address.toString() + ' is not deployed'); } - return new TestContractContract(address, wallet); + return new TestContractContract(extendedContractData.getCompleteAddress(), wallet); } diff --git a/yarn-project/noir-compiler/src/cli/contract.ts b/yarn-project/noir-compiler/src/cli/contract.ts index 020908f0ab0..92243a5a368 100644 --- a/yarn-project/noir-compiler/src/cli/contract.ts +++ b/yarn-project/noir-compiler/src/cli/contract.ts @@ -8,7 +8,7 @@ import path, { resolve } from 'path'; import { compileUsingNargo, generateNoirContractInterface, generateTypescriptContractInterface } from '../index.js'; /** - * Registers a 'contract' command on the given commander program that compiles a Noir contract project. + * Registers a 'contract' command on the given commander program that compiles an Aztec.nr contract project. * @param program - Commander program. * @param log - Optional logging function. * @returns The program with the command registered. @@ -16,10 +16,10 @@ import { compileUsingNargo, generateNoirContractInterface, generateTypescriptCon export function compileContract(program: Command, name = 'contract', log: LogFn = () => {}): Command { return program .command(name) - .argument('', 'Path to the noir project to compile') + .argument('', 'Path to the Aztec.nr project to compile') .option('-o, --outdir ', 'Output folder for the binary artifacts, relative to the project path', 'target') .option('-ts, --typescript ', 'Optional output folder for generating typescript wrappers', undefined) - .option('-i, --interface ', 'Optional output folder for generating noir contract interface', undefined) + .option('-i, --interface ', 'Optional output folder for generating an Aztec.nr contract interface', undefined) .description('Compiles the contracts in the target project') .action( @@ -48,7 +48,9 @@ export function compileContract(program: Command, name = 'contract', log: LogFn if (noirInterface) { const noirInterfacePath = resolve(projectPath, noirInterface, `${contract.name}_interface.nr`); - log(`Writing ${contract.name} Noir external interface to ${path.relative(currentDir, noirInterfacePath)}`); + log( + `Writing ${contract.name} Aztec.nr external interface to ${path.relative(currentDir, noirInterfacePath)}`, + ); const noirWrapper = generateNoirContractInterface(contract); mkdirpSync(path.dirname(noirInterfacePath)); writeFileSync(noirInterfacePath, noirWrapper); diff --git a/yarn-project/noir-compiler/src/compile/nargo.ts b/yarn-project/noir-compiler/src/compile/nargo.ts index 790f4462b84..bba92a98617 100644 --- a/yarn-project/noir-compiler/src/compile/nargo.ts +++ b/yarn-project/noir-compiler/src/compile/nargo.ts @@ -19,7 +19,7 @@ export type CompileOpts = { }; /** - * A class that compiles noir contracts using nargo via the shell. + * A class that compiles Aztec.nr contracts using nargo via the shell. */ export class NargoContractCompiler { private log: LogFn; @@ -28,8 +28,8 @@ export class NargoContractCompiler { } /** - * Compiles the contracts in projectPath and returns the Noir artifact. - * @returns Noir artifact of the compiled contracts. + * Compiles the contracts in projectPath and returns the Aztec.nr artifact. + * @returns Aztec.nr artifact of the compiled contracts. */ public compile(): Promise { const stdio = this.opts.quiet ? 'ignore' : 'inherit'; diff --git a/yarn-project/noir-compiler/src/contract-interface-gen/abi.ts b/yarn-project/noir-compiler/src/contract-interface-gen/abi.ts index a6d32037717..ba3f02d48d3 100644 --- a/yarn-project/noir-compiler/src/contract-interface-gen/abi.ts +++ b/yarn-project/noir-compiler/src/contract-interface-gen/abi.ts @@ -6,7 +6,7 @@ import { mockVerificationKey } from '../mocked_keys.js'; import { NoirCompilationArtifacts, NoirFunctionEntry } from '../noir_artifact.js'; /** - * Generates an Aztec ABI for a Noir function build artifact. Replaces verification key with a mock value. + * Generates an Aztec ABI for a Aztec.nr function build artifact. Replaces verification key with a mock value. * @param fn - Noir function entry. * @returns Aztec ABI function entry. */ diff --git a/yarn-project/noir-compiler/src/contract-interface-gen/noir.ts b/yarn-project/noir-compiler/src/contract-interface-gen/noir.ts index cbd9cea1532..8f81f7697ba 100644 --- a/yarn-project/noir-compiler/src/contract-interface-gen/noir.ts +++ b/yarn-project/noir-compiler/src/contract-interface-gen/noir.ts @@ -134,8 +134,8 @@ function generateSerialisation(parameters: ABIParameter[]) { } /** - * Generate a function interface for a particular function of the Noir Contract being processed. This function will be a method of the ContractInterface struct being created here. - * @param functionData - Data relating to the function, which can be used to generate a callable Noir Function. + * Generate a function interface for a particular function of the Aztec.nr Contract being processed. This function will be a method of the ContractInterface struct being created here. + * @param functionData - Data relating to the function, which can be used to generate a callable Aztec.nr Function. * @param kind - Whether this interface will be used from private or public functions. * @returns A code string. */ @@ -272,7 +272,7 @@ ${contractImpl} /** * Generates the Noir code to represent an interface for calling a contract. - * @param abi - The compiled Noir artifact. + * @param abi - The compiled Aztec.nr artifact. * @returns The corresponding ts code. */ export function generateNoirContractInterface(abi: ContractAbi) { diff --git a/yarn-project/noir-compiler/src/index.test.ts b/yarn-project/noir-compiler/src/index.test.ts index 9a09d1fe8f8..804dc88da31 100644 --- a/yarn-project/noir-compiler/src/index.test.ts +++ b/yarn-project/noir-compiler/src/index.test.ts @@ -39,7 +39,7 @@ describe('noir-compiler', () => { expect(result).toMatchSnapshot(); }); - it('generates noir external interface', () => { + it('generates Aztec.nr external interface', () => { const result = generateNoirContractInterface(compiled[0]); expect(result).toMatchSnapshot(); }); diff --git a/yarn-project/noir-compiler/src/index.ts b/yarn-project/noir-compiler/src/index.ts index b7054d89577..85b52ffe7bd 100644 --- a/yarn-project/noir-compiler/src/index.ts +++ b/yarn-project/noir-compiler/src/index.ts @@ -12,7 +12,7 @@ export { generateTypescriptContractInterface } from './contract-interface-gen/ty export { generateAztecAbi }; /** - * Compile Noir contracts in project path using a nargo binary available in the shell. + * Compile Aztec.nr contracts in project path using a nargo binary available in the shell. * @param projectPath - Path to project. * @param opts - Compiler options. * @returns Compiled artifacts. diff --git a/yarn-project/noir-compiler/src/noir_artifact.ts b/yarn-project/noir-compiler/src/noir_artifact.ts index 40eed69101f..f1fab9562a7 100644 --- a/yarn-project/noir-compiler/src/noir_artifact.ts +++ b/yarn-project/noir-compiler/src/noir_artifact.ts @@ -1,9 +1,9 @@ import { ABIParameter, ABIType, DebugFileMap, DebugInfo } from '@aztec/foundation/abi'; -/** The noir function types. */ +/** The Aztec.nr function types. */ type NoirFunctionType = 'Open' | 'Secret' | 'Unconstrained'; -/** The ABI of a noir function. */ +/** The ABI of an Aztec.nr function. */ interface NoirFunctionAbi { /** The parameters of the function. */ parameters: ABIParameter[]; @@ -16,7 +16,7 @@ interface NoirFunctionAbi { } /** - * The compilation result of a noir function. + * The compilation result of an Aztec.nr function. */ export interface NoirFunctionEntry { /** The name of the function. */ @@ -36,7 +36,7 @@ export interface NoirFunctionEntry { } /** - * The compilation result of a noir contract. + * The compilation result of an Aztec.nr contract. */ export interface NoirCompiledContract { /** The name of the contract. */ @@ -48,7 +48,7 @@ export interface NoirCompiledContract { } /** - * The debug metadata of a noir contract. + * The debug metadata of an Aztec.nr contract. */ export interface NoirDebugMetadata { /** diff --git a/yarn-project/noir-contracts/Dockerfile.build b/yarn-project/noir-contracts/Dockerfile.build index 9479e8d0658..4a5cda55695 100644 --- a/yarn-project/noir-contracts/Dockerfile.build +++ b/yarn-project/noir-contracts/Dockerfile.build @@ -12,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" diff --git a/yarn-project/noir-contracts/Nargo.toml b/yarn-project/noir-contracts/Nargo.toml index d3300102923..9f6306f3b9a 100644 --- a/yarn-project/noir-contracts/Nargo.toml +++ b/yarn-project/noir-contracts/Nargo.toml @@ -23,5 +23,6 @@ members = [ "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/README.md b/yarn-project/noir-contracts/README.md index b4631099f63..33d3ea1518b 100644 --- a/yarn-project/noir-contracts/README.md +++ b/yarn-project/noir-contracts/README.md @@ -1,4 +1,4 @@ -# Noir contracts +# Aztec.nr contracts This package contains the source code and the Aztec ABIs for the example contracts used in tests. diff --git a/yarn-project/noir-contracts/bootstrap.sh b/yarn-project/noir-contracts/bootstrap.sh index 85414de80c6..1077490d138 100755 --- a/yarn-project/noir-contracts/bootstrap.sh +++ b/yarn-project/noir-contracts/bootstrap.sh @@ -9,7 +9,6 @@ fi # Update noir ./scripts/install_noir.sh -./scripts/install_noir_backend.sh # Use yarn script to compile and create types yarn diff --git a/yarn-project/noir-contracts/scripts/compile.sh b/yarn-project/noir-contracts/scripts/compile.sh index 972e9652730..09c1d896f6c 100755 --- a/yarn-project/noir-contracts/scripts/compile.sh +++ b/yarn-project/noir-contracts/scripts/compile.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Compiles noir contracts in parallel, bubbling any compilation errors +# Compiles Aztec.nr contracts in parallel, bubbling any compilation errors source ./scripts/catch.sh source ./scripts/nargo_check.sh diff --git a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/actions.nr b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/actions.nr index ff8e77a10b6..94b5981e1f3 100644 --- a/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/actions.nr +++ b/yarn-project/noir-contracts/src/contracts/docs_example_contract/src/actions.nr @@ -148,9 +148,10 @@ unconstrained fn get_total_points( // docs:start:state_vars-SetContains fn assert_contains_card( state_var: Set, - card: CardNote, + card: &mut CardNote, + nonce: Field, ) { - state_var.assert_contains_and_remove(card); + state_var.assert_contains_and_remove(card, nonce); } // docs:end:state_vars-SetContains diff --git a/yarn-project/noir-contracts/src/contracts/native_token_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/native_token_contract/src/main.nr index ba2bc64737a..31dc5e610e5 100644 --- a/yarn-project/noir-contracts/src/contracts/native_token_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/native_token_contract/src/main.nr @@ -348,10 +348,10 @@ contract NativeToken { let storage = Storage::init(Context::private(&mut context)); let pending_shields = storage.pending_shields; - let public_note = TransparentNote::new_from_secret(amount, secret); + let mut public_note = TransparentNote::new_from_secret(amount, secret); // Ensure that the note exists in the tree and remove it. - pending_shields.assert_contains_and_remove_publicly_created(public_note); + pending_shields.assert_contains_and_remove_publicly_created(&mut public_note); // Mint the tokens let balance = storage.balances.at(owner); 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 a9fb5b021ba..719f262b505 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 @@ -248,10 +248,10 @@ contract NonNativeToken { let storage = Storage::init(Context::private(&mut context)); let pending_shields = storage.pending_shields; - let public_note = TransparentNote::new_from_secret(amount, secret); + let mut public_note = TransparentNote::new_from_secret(amount, secret); // Ensure that the note exists in the tree and remove it. - pending_shields.assert_contains_and_remove_publicly_created(public_note); + pending_shields.assert_contains_and_remove_publicly_created(&mut public_note); // Mint the tokens let balance = storage.balances.at(owner); diff --git a/yarn-project/noir-contracts/src/contracts/private_token_airdrop_contract/src/interface.nr b/yarn-project/noir-contracts/src/contracts/private_token_airdrop_contract/src/interface.nr index 6c8a95fb33a..ff54645fa31 100644 --- a/yarn-project/noir-contracts/src/contracts/private_token_airdrop_contract/src/interface.nr +++ b/yarn-project/noir-contracts/src/contracts/private_token_airdrop_contract/src/interface.nr @@ -59,14 +59,16 @@ impl PrivateTokenAirdropPrivateContextInterface { context: &mut PrivateContext, amount: Field, secret: Field, - owner: Field + owner: Field, + nonce: Field ) -> [Field; RETURN_VALUES_LENGTH] { - let mut serialised_args = [0; 3]; + let mut serialised_args = [0; 4]; serialised_args[0] = amount; serialised_args[1] = secret; serialised_args[2] = owner; + serialised_args[3] = nonce; - context.call_private_function(self.address, 0xd68b55c1, serialised_args) + context.call_private_function(self.address, 0xa9220f0f, serialised_args) } diff --git a/yarn-project/noir-contracts/src/contracts/private_token_airdrop_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/private_token_airdrop_contract/src/main.nr index 2216e36ecba..c7eac5d9d4b 100644 --- a/yarn-project/noir-contracts/src/contracts/private_token_airdrop_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/private_token_airdrop_contract/src/main.nr @@ -160,13 +160,14 @@ contract PrivateTokenAirdrop { fn claim( amount: Field, secret: Field, - owner: Field + owner: Field, + nonce: Field, ) { let storage = Storage::init(Context::private(&mut context)); // Remove the claim note if it exists in the set. - let note = ClaimNote::new(amount, secret); - storage.claims.assert_contains_and_remove(note); + let mut note = ClaimNote::new(amount, secret); + storage.claims.assert_contains_and_remove(&mut note, nonce); // Send the value note. let balance = storage.balances.at(owner); 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/test_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/test_contract/src/main.nr index fe9fa044e5e..d2c29d6c6e8 100644 --- a/yarn-project/noir-contracts/src/contracts/test_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/test_contract/src/main.nr @@ -44,7 +44,7 @@ contract Test { context.this_address() } - // Test codegen for noir interfaces + // Test codegen for Aztec.nr interfaces // See yarn-project/acir-simulator/src/client/private_execution.test.ts 'nested calls through autogenerated interface' // Note; this function is deliberately NOT annotated with #[aztec(private)] due to its use in tests fn testCodeGen( 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..b676bea7962 --- /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 mut public_note = TransparentNote::new_from_secret(amount, secret); + + pending_shields.assert_contains_and_remove_publicly_created(&mut 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/copy_output.ts b/yarn-project/noir-contracts/src/scripts/copy_output.ts index 05da55f50be..68ec5ca5204 100644 --- a/yarn-project/noir-contracts/src/scripts/copy_output.ts +++ b/yarn-project/noir-contracts/src/scripts/copy_output.ts @@ -88,7 +88,7 @@ const main = () => { writeFileSync(tsInterfaceDestFilePath, generateTypescriptContractInterface(artifactJson, tsAbiImportPath)); log(`Written ${tsInterfaceDestFilePath}`); - // Write a .nr contract interface, for consumption by other Noir Contracts + // Write a .nr contract interface, for consumption by other Aztec.nr contracts if (INTERFACE_CONTRACTS.includes(name)) { const projectDirPath = `src/contracts/${projectName}`; const noirInterfaceDestFilePath = `${projectDirPath}/src/interface.nr`; @@ -96,7 +96,7 @@ const main = () => { writeFileSync(noirInterfaceDestFilePath, generateNoirContractInterface(artifactJson)); log(`Written ${noirInterfaceDestFilePath}`); } catch (err) { - log(`Error generating noir interface for ${name}: ${err}`); + log(`Error generating Aztec.nr interface for ${name}: ${err}`); } } }; diff --git a/yarn-project/noir-libs/aztec-noir/src/messaging.nr b/yarn-project/noir-libs/aztec-noir/src/messaging.nr index c9ee3be0a3e..8f41c29c943 100644 --- a/yarn-project/noir-libs/aztec-noir/src/messaging.nr +++ b/yarn-project/noir-libs/aztec-noir/src/messaging.nr @@ -1,4 +1,3 @@ -mod get_commitment_getter_data; mod l1_to_l2_message; mod l1_to_l2_message_getter_data; diff --git a/yarn-project/noir-libs/aztec-noir/src/messaging/get_commitment_getter_data.nr b/yarn-project/noir-libs/aztec-noir/src/messaging/get_commitment_getter_data.nr deleted file mode 100644 index 07d826d41d7..00000000000 --- a/yarn-project/noir-libs/aztec-noir/src/messaging/get_commitment_getter_data.nr +++ /dev/null @@ -1,15 +0,0 @@ -use crate::oracle::get_commitment::COMMITMENT_GETTER_LENGTH; - -struct CommitmentGetterData { - message: Field, - leaf_index: Field, - root: Field, -} - -fn make_commitment_getter_data(fields: [Field; COMMITMENT_GETTER_LENGTH], start: Field) -> CommitmentGetterData { - CommitmentGetterData { - message: fields[start], - leaf_index: fields[start + 1], - root: fields[start + 2], - } -} \ No newline at end of file diff --git a/yarn-project/noir-libs/aztec-noir/src/note/lifecycle.nr b/yarn-project/noir-libs/aztec-noir/src/note/lifecycle.nr index b6e530ed94f..43ccdfad556 100644 --- a/yarn-project/noir-libs/aztec-noir/src/note/lifecycle.nr +++ b/yarn-project/noir-libs/aztec-noir/src/note/lifecycle.nr @@ -50,7 +50,6 @@ fn create_note_hash_from_public( fn destroy_note( context: &mut PrivateContext, - storage_slot: Field, note: Note, note_interface: NoteInterface, ) { @@ -72,7 +71,7 @@ fn destroy_note( // TODO(1718): Can we reuse the note commitment computed in `compute_nullifier`? nullified_commitment = compute_inner_note_hash(note_interface, note); } - assert(notify_nullified_note(storage_slot, nullifier, nullified_commitment) == 0); + assert(notify_nullified_note(nullifier, nullified_commitment) == 0); context.push_new_nullifier(nullifier, nullified_commitment) } \ No newline at end of file diff --git a/yarn-project/noir-libs/aztec-noir/src/note/note_getter.nr b/yarn-project/noir-libs/aztec-noir/src/note/note_getter.nr index ee407657547..808f9389b3a 100644 --- a/yarn-project/noir-libs/aztec-noir/src/note/note_getter.nr +++ b/yarn-project/noir-libs/aztec-noir/src/note/note_getter.nr @@ -13,11 +13,9 @@ use crate::note::{ note_header::NoteHeader, note_viewer_options::NoteViewerOptions, utils::compute_note_hash_for_read_or_nullify, - utils::compute_unique_siloed_note_hash, utils::compute_inner_note_hash, utils::compute_siloed_note_hash, }; -use crate::messaging::get_commitment_getter_data::make_commitment_getter_data; use crate::oracle; use crate::types::vec::BoundedVec; @@ -34,69 +32,29 @@ fn check_note_header( assert(header.storage_slot == storage_slot); } -fn ensure_note_exists( - context: &mut PrivateContext, - storage_slot: Field, - note_interface: NoteInterface, - note: &mut Note, -) { - let saved_note = get_note_internal(storage_slot, note_interface); - - // Only copy over the header to the original note to make sure the preimage is the same. - let get_header = note_interface.get_header; - let set_header = note_interface.set_header; - let note_header = get_header(saved_note); - set_header(note, note_header); - - check_note_header(*context, storage_slot, note_interface, *note); - - let note_hash_for_read_request = compute_note_hash_for_read_or_nullify(note_interface, *note); - context.push_read_request(note_hash_for_read_request); -} - // Ensure a note's hash exists in the tree without retrieving the entire // notes via the oracle. -// Modifies the note by populating it with header info. fn ensure_note_hash_exists( context: &mut PrivateContext, - storage_slot: Field, note_interface: NoteInterface, - note: &mut Note, + note: Note, + from_public: bool, ) { - // Initialize header of note. Must be done before computing note hashes as it initializes the: - // - storage slot (used in inner note hash) - // - the contract address (used in siloed note hash) - // - and the nonce (used in the unique siloed note hash) - let set_header = note_interface.set_header; - let note_header = NoteHeader { - contract_address: (*context).this_address(), - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386): should be - // real nonce (once public kernel applies nonces). - nonce: 0, - storage_slot - }; - set_header(note, note_header); - - // Get a note from oracle and early out if it doesn't exist. - let inner_note_hash = compute_inner_note_hash(note_interface, *note); - - let raw_oracle_ret = oracle::get_commitment::get_commitment(inner_note_hash); - let deserialized_oracle_ret = make_commitment_getter_data(raw_oracle_ret, 0); - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386): should be - // unique_siloed_note_hash once public kernel applies nonces - let saved_siloed_note_hash = deserialized_oracle_ret.message; - - assert(saved_siloed_note_hash != 0); // TODO(dbanks12): necessary? - - check_note_header(*context, storage_slot, note_interface, *note); - - // Ensure that the note hash retrieved from oracle matches the one computed from note. - let computed_siloed_note_hash = compute_siloed_note_hash(note_interface, *note); - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386): should be - // compute_note_hash_for_read_or_nullify once public kernel applies nonces - assert(computed_siloed_note_hash == saved_siloed_note_hash); + let get_header = note_interface.get_header; + let header = get_header(note); - context.push_read_request(computed_siloed_note_hash); + // Check the note hash via oracle and early out if it doesn't exist. + let inner_note_hash = compute_inner_note_hash(note_interface, note); + let exists = oracle::notes::check_note_hash_exists(header.nonce, inner_note_hash); + assert(exists, "Note hash does not exist."); + + let mut note_hash_for_read_request = compute_note_hash_for_read_or_nullify(note_interface, note); + if from_public { + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386) + // Should remove this once public kernel applies nonces. + note_hash_for_read_request = compute_siloed_note_hash(note_interface, note); + } + context.push_read_request(note_hash_for_read_request); } fn get_note( diff --git a/yarn-project/noir-libs/aztec-noir/src/oracle.nr b/yarn-project/noir-libs/aztec-noir/src/oracle.nr index 056617ed42f..da760abf487 100644 --- a/yarn-project/noir-libs/aztec-noir/src/oracle.nr +++ b/yarn-project/noir-libs/aztec-noir/src/oracle.nr @@ -6,7 +6,6 @@ mod arguments; mod call_private_function; mod context; mod debug_log; -mod get_commitment; mod get_l1_to_l2_message; mod get_public_key; mod get_secret_key; diff --git a/yarn-project/noir-libs/aztec-noir/src/oracle/get_commitment.nr b/yarn-project/noir-libs/aztec-noir/src/oracle/get_commitment.nr deleted file mode 100644 index 2793c003bf6..00000000000 --- a/yarn-project/noir-libs/aztec-noir/src/oracle/get_commitment.nr +++ /dev/null @@ -1,11 +0,0 @@ -// Oracle function to get a commitment, its sibling path and index, without getting its preimage. - -// commitment + index + root; -global COMMITMENT_GETTER_LENGTH = 3; - -#[oracle(getCommitment)] -fn get_commitment_oracle(_commitment: Field) -> [Field; COMMITMENT_GETTER_LENGTH] {} - -unconstrained fn get_commitment(commitment: Field) -> [Field; COMMITMENT_GETTER_LENGTH] { - get_commitment_oracle(commitment) -} diff --git a/yarn-project/noir-libs/aztec-noir/src/oracle/notes.nr b/yarn-project/noir-libs/aztec-noir/src/oracle/notes.nr index 52d4a445389..356cf5de4aa 100644 --- a/yarn-project/noir-libs/aztec-noir/src/oracle/notes.nr +++ b/yarn-project/noir-libs/aztec-noir/src/oracle/notes.nr @@ -22,17 +22,28 @@ unconstrained fn notify_created_note( #[oracle(notifyNullifiedNote)] fn notify_nullified_note_oracle( - _storage_slot: Field, _nullifier: Field, _inner_note_hash: Field, ) -> Field {} unconstrained fn notify_nullified_note( - storage_slot: Field, nullifier: Field, inner_note_hash: Field, ) -> Field { - notify_nullified_note_oracle(storage_slot, nullifier, inner_note_hash) + notify_nullified_note_oracle(nullifier, inner_note_hash) +} + +#[oracle(checkNoteHashExists)] +fn check_note_hash_exists_oracle( + _nonce: Field, + _inner_note_hash: Field, +) -> Field {} + +unconstrained fn check_note_hash_exists( + nonce: Field, + inner_note_hash: Field, +) -> bool { + check_note_hash_exists_oracle(nonce, inner_note_hash) == 1 } #[oracle(getNotes)] diff --git a/yarn-project/noir-libs/aztec-noir/src/state_vars/set.nr b/yarn-project/noir-libs/aztec-noir/src/state_vars/set.nr index c14eebb770d..698af2ef11c 100644 --- a/yarn-project/noir-libs/aztec-noir/src/state_vars/set.nr +++ b/yarn-project/noir-libs/aztec-noir/src/state_vars/set.nr @@ -4,8 +4,9 @@ use crate::constants_gen::{MAX_NOTES_PER_PAGE, MAX_READ_REQUESTS_PER_CALL}; use crate::context::{PrivateContext, PublicContext, Context}; use crate::note::{ lifecycle::{create_note, create_note_hash_from_public, destroy_note}, - note_getter::{ensure_note_exists, ensure_note_hash_exists, get_notes, view_notes}, + note_getter::{ensure_note_hash_exists, get_notes, view_notes}, note_getter_options::NoteGetterOptions, + note_header::NoteHeader, note_interface::NoteInterface, note_viewer_options::NoteViewerOptions, utils::compute_note_hash_for_read_or_nullify, @@ -49,64 +50,79 @@ impl Set { ); } - fn assert_contains_and_remove(self, note: Note) { - let mut note_with_header = note; - // TODO(1386): replace with `ensure_note_hash_exists` - // once `get_commitment` works for privately created note hashes - ensure_note_exists( - self.context.private.unwrap(), - self.storage_slot, + fn assert_contains_and_remove(self, note: &mut Note, nonce: Field) { + // Initialize header of note. Must be done before computing note hashes as it initializes the: + // - storage slot (used in inner note hash) + // - the contract address (used in siloed note hash) + // - and the nonce (used in the unique siloed note hash) + let context = self.context.private.unwrap(); + let set_header = self.note_interface.set_header; + let note_header = NoteHeader{ + contract_address: context.this_address(), + storage_slot: self.storage_slot, + nonce + }; + set_header(note, note_header); + + ensure_note_hash_exists( + context, self.note_interface, - &mut note_with_header, + *note, + false, ); + destroy_note( - self.context.private.unwrap(), - self.storage_slot, - note_with_header, + context, + *note, self.note_interface, ); } // NOTE: this function should ONLY be used for PUBLICLY-CREATED note hashes! - // WARNING: function will be deprecated/removed eventually once `assert_contains_and_remove` - // works for publicly-created note hashes as well. - fn assert_contains_and_remove_publicly_created(self, note: Note) { - let mut note_with_header = note; - // Modifies note with the header which is necessary for the next step (remove). + // WARNING: function will be deprecated/removed eventually once public kernel applies nonces. + fn assert_contains_and_remove_publicly_created(self, note: &mut Note) { + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386) + // Should be real nonce (once public kernel applies nonces). + let nonce = 0; + let context = self.context.private.unwrap(); + let set_header = self.note_interface.set_header; + let mut note_header = NoteHeader{ + contract_address: context.this_address(), + storage_slot: self.storage_slot, + nonce + }; + set_header(note, note_header); + ensure_note_hash_exists( - self.context.private.unwrap(), - self.storage_slot, + context, self.note_interface, - &mut note_with_header, + *note, + true, ); - let get_header = self.note_interface.get_header; - let set_header = self.note_interface.set_header; - let mut header = get_header(note); // Set the nonce to nonzero so that the nullifier is treated as persistable // (non-transient) and so the private kernel does not attempt to match it to // a pending noteHash/commitment and squash them. // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386): remove // this hack once public kernel injects nonces. - header.nonce = 1; - set_header(&mut note_with_header, header); + note_header.nonce = 1; + set_header(note, note_header); + destroy_note( - self.context.private.unwrap(), - self.storage_slot, - note_with_header, + context, + *note, self.note_interface, ); } fn remove(self, note: Note) { + let context = self.context.private.unwrap(); let note_hash = compute_note_hash_for_read_or_nullify(self.note_interface, note); - let read_requests = self.context.private.unwrap_unchecked().read_requests; - let has_been_read = read_requests.any(|r| r == note_hash); + let has_been_read = context.read_requests.any(|r| r == note_hash); assert(has_been_read, "Can only remove a note that has been read from the set."); destroy_note( - self.context.private.unwrap(), - self.storage_slot, + context, note, self.note_interface, ); diff --git a/yarn-project/noir-libs/aztec-noir/src/state_vars/singleton.nr b/yarn-project/noir-libs/aztec-noir/src/state_vars/singleton.nr index e1033604995..6b7afcba2ce 100644 --- a/yarn-project/noir-libs/aztec-noir/src/state_vars/singleton.nr +++ b/yarn-project/noir-libs/aztec-noir/src/state_vars/singleton.nr @@ -56,7 +56,7 @@ impl Singleton { let prev_note = get_note(context, self.storage_slot, self.note_interface); // Nullify previous note. - destroy_note(context, self.storage_slot, prev_note, self.note_interface); + destroy_note(context, prev_note, self.note_interface); // Add replacement note. create_note(context, self.storage_slot, new_note, self.note_interface); @@ -67,7 +67,7 @@ impl Singleton { let mut note = get_note(context, self.storage_slot, self.note_interface); // Nullify current note to make sure it's reading the latest note. - destroy_note(context, self.storage_slot, note, self.note_interface); + destroy_note(context, note, self.note_interface); // Add the same note again. // Because a nonce is added to every note in the kernel, its nullifier will be different. 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..5feeb3cca23 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}) } @@ -259,11 +259,10 @@ fn test_mul_div_up_ghost_overflow() { // It should not be possible for us to overflow `mul_div_up` through the adder, since that require the divisor to be 1 // since we otherwise would not be at the max value. If divisor is 1, adder is 0. - #[test(should_fail)] fn test_mul_div_up_zero_divisor() { let a = SafeU120::new(6); let b = SafeU120::new(3); let c = SafeU120::new(0); let _d = SafeU120::mul_div_up(a, b, c); -} \ No newline at end of file +} 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/scripts/get_dependencies.sh b/yarn-project/scripts/get_dependencies.sh new file mode 100755 index 00000000000..60b61bbc985 --- /dev/null +++ b/yarn-project/scripts/get_dependencies.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -eu + +PROJECT_DIR=$1 + +echo yarn-project-base +jq -r ".dependencies + .devDependencies | keys | .[] | select(startswith(\"@aztec/\")) | ltrimstr(\"@aztec/\")" $PROJECT_DIR/package.json \ No newline at end of file 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 319c58b1fa5..083df1ac5a2 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.ts @@ -147,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; } @@ -158,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`); @@ -249,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/sequencer-client/src/simulator/public_executor.ts b/yarn-project/sequencer-client/src/simulator/public_executor.ts index bef534b6228..1296dcae50a 100644 --- a/yarn-project/sequencer-client/src/simulator/public_executor.ts +++ b/yarn-project/sequencer-client/src/simulator/public_executor.ts @@ -1,5 +1,4 @@ import { - CommitmentDataOracleInputs, CommitmentsDB, MessageLoadOracleInputs, PublicContractsDB, @@ -7,7 +6,6 @@ import { PublicStateDB, } from '@aztec/acir-simulator'; import { AztecAddress, CircuitsWasm, EthAddress, Fr, FunctionSelector, HistoricBlockData } from '@aztec/circuits.js'; -import { siloCommitment } from '@aztec/circuits.js/abis'; import { ContractDataSource, L1ToL2MessageSource, MerkleTreeId } from '@aztec/types'; import { MerkleTreeOperations, computePublicDataTreeLeafIndex } from '@aztec/world-state'; @@ -100,19 +98,7 @@ export class WorldStateDB implements CommitmentsDB { }; } - public async getCommitmentOracle(address: AztecAddress, innerCommitment: Fr): Promise { - const siloedCommitment = siloCommitment(await CircuitsWasm.get(), address, innerCommitment); - // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386): shoild be - // unique commitment that exists in tree (should be siloed and then made unique via - // nonce). Once public kernel or base rollup circuit injects nonces, this can be updated - // to use uniqueSiloedCommitment. - const index = (await this.db.findLeafIndex(MerkleTreeId.PRIVATE_DATA_TREE, siloedCommitment.toBuffer()))!; - const siblingPath = await this.db.getSiblingPath(MerkleTreeId.PRIVATE_DATA_TREE, index); - - return { - commitment: siloedCommitment, - siblingPath: siblingPath.toFieldArray(), - index, - }; + public async getCommitmentIndex(commitment: Fr): Promise { + return await this.db.findLeafIndex(MerkleTreeId.PRIVATE_DATA_TREE, commitment.toBuffer()); } } 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/types/src/contract_database.ts b/yarn-project/types/src/contract_database.ts index 7eb2333ed88..f9b8581febb 100644 --- a/yarn-project/types/src/contract_database.ts +++ b/yarn-project/types/src/contract_database.ts @@ -3,7 +3,7 @@ import { AztecAddress } from '@aztec/foundation/aztec-address'; import { ContractDao } from './contract_dao.js'; /** - * Represents a ContractDatabase interface for managing noir contracts. + * Represents a ContractDatabase interface for managing Aztec.nr contracts. * Provides methods for adding and retrieving ContractDao objects by their associated addresses. */ export interface ContractDatabase { diff --git a/yarn-project/yarn-project-base/Dockerfile b/yarn-project/yarn-project-base/Dockerfile index ae0e91ea864..dca9635efdc 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 @@ -113,7 +108,7 @@ RUN ./scripts/generate-artifacts.sh WORKDIR /usr/src/yarn-project -# Generate noir contract artifacts +# Generate Aztec.nr contract artifacts 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 @@ -126,7 +121,7 @@ RUN ./scripts/types_all.sh # Run yarn build again to build the types RUN yarn build -# Take noir contract artifacts into the final build image +# Take Aztec.nr contract artifacts into the final build image FROM builder_ as final COPY . . COPY --from=noir_types /usr/src/yarn-project/noir-contracts/src/artifacts /usr/src/yarn-project/noir-contracts/src/artifacts 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" From b16f617f1ef8b4f4808f7366f3b187e061321210 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Wed, 13 Sep 2023 20:30:32 +0000 Subject: [PATCH 14/25] fix: restore --- circuits/cpp/barretenberg | 1 + 1 file changed, 1 insertion(+) create mode 120000 circuits/cpp/barretenberg diff --git a/circuits/cpp/barretenberg b/circuits/cpp/barretenberg new file mode 120000 index 00000000000..e9b54f1df3e --- /dev/null +++ b/circuits/cpp/barretenberg @@ -0,0 +1 @@ +../../barretenberg \ No newline at end of file From 381c59094f3d8a849d0dd1cec105bb4a3edf7937 Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Mon, 18 Sep 2023 17:48:20 +0100 Subject: [PATCH 15/25] fix: review notes --- docs/docs/dev_docs/contracts/context.md | 37 +++++++++++------- docs/docs/dev_docs/contracts/functions.md | 20 +++++----- docs/docs/dev_docs/contracts/syntax.md | 6 ++- docs/package.json | 2 +- .../img/context/sender_context_change.png | Bin 0 -> 120724 bytes .../{message-sender-movement.png => this.png} | 0 .../src/contracts/escrow_contract/src/main.nr | 12 ++++-- .../private_token_contract/src/main.nr | 2 - 8 files changed, 46 insertions(+), 33 deletions(-) create mode 100644 docs/static/img/context/sender_context_change.png rename docs/static/img/context/{message-sender-movement.png => this.png} (100%) diff --git a/docs/docs/dev_docs/contracts/context.md b/docs/docs/dev_docs/contracts/context.md index 8e0da6e78b8..53615094e97 100644 --- a/docs/docs/dev_docs/contracts/context.md +++ b/docs/docs/dev_docs/contracts/context.md @@ -3,6 +3,9 @@ title: Aztec.nr Context description: Documentation of Aztec's Private and Public execution contexts hide_table_of_contents: false --- + +import Image from "@theme/IdealImage"; + # The Function Context ## What is the context @@ -22,31 +25,34 @@ The following section will cover both contexts. ## The Private Context The code snippet below shows what is contained within the private context. -#include_code private-context /yarn-project/noir-libs/aztec-noir/src/context.nr rust +#include_code private-context /yarn-project/aztec-nr/aztec/src/context.nr rust ### Private Context Broken Down #### Inputs The context inputs includes all of the information that is passed from the kernel circuit into the application circuit. It contains the following values. -#include_code private-context-inputs /yarn-project/noir-libs/aztec-noir/src/abi.nr rust +#include_code private-context-inputs /yarn-project/aztec-nr/aztec/src/abi.nr rust As shown in the snippet, the application context is made up of 4 main structures. The call context, the block data, the contract deployment data and the private global variables. First of all, the call context. -#include_code call-context /yarn-project/noir-libs/aztec-noir/src/abi.nr rust +#include_code call-context /yarn-project/aztec-nr/aztec/src/abi.nr rust + +The call context contains information about the current call being made: + -The call context contains information about the current call being made:. 1. Msg Sender - The message sender is the account (Aztec Contract) that sent the message to the current context. In the first call of the kernel circuit (often the account contract call), this value will be empty. For all subsequent calls the value will be the previous call. - ( TODO: INCLUDE A DIAGRAM HERE SHOWING HOW IT GETS UPDATED ON CONTRACT CALLS ) +> The graphic below illustrates how the message sender changes throughout the kernel circuit iterations. + + 2. Storage contract address - - This value is the address of the current context's contract address. This value will be the value of the current contract that is being executed except for when the current call is a delegate call (TODO: INCLUDE A LINK TO ITS DOCUMENTATION). In this case the value will be that of the sending contract. + - This value is the address of the current context's contract address. This value will be the value of the current contract that is being executed except for when the current call is a delegate call (Warning: This is yet to be implemented). In this case the value will be that of the sending contract. - - This value is important as it is the value that is used when siloing the storage values of a contract. ( TODO: DOES THIS NEED TO BE DIVED INTO MORE OR IS IT SOMETHING THTAT THERE IS A LINK TO). 3. Portal Contract Address - - This value stores the current contract's linked portal contract address. ( INCLUDE A LINK TO THE LITERATURE ). As a quick recap, this value is the value of the contracts related ethereum l1 contract address, and will be the recipient of any messages that are created by this contract. + - This value stores the current contract's linked [portal contract](./portals/main.md) address. As a quick recap, this value is the value of the contracts related ethereum l1 contract address, and will be the recipient of any messages that are created by this contract. 4. Flags - Furthermore there are a series of flags that are stored within the application context: - is_delegate_call: Denotes whether the current call is a delegate call. If true, then the storage contract address will be the address of the sender. @@ -56,17 +62,17 @@ The call context contains information about the current call being made:. ### Historic Block Data Another structure that is contained within the context is the Historic Block Data object. This object is a special one as it contains all of the roots of Aztec's data trees. -#include_code historic-block-data /yarn-project/noir-libs/aztec-noir/src/abi.nr rust +#include_code historic-block-data /yarn-project/aztec-nr/aztec/src/abi.nr rust ### Contract Deployment Data Just like with the `is_contract_deployment` flag mentioned earlier. This data will only be set to true when the current transaction is one in which a contract is being deployed. -#include_code contract-deployment-data /yarn-project/noir-libs/aztec-noir/src/abi.nr rust +#include_code contract-deployment-data /yarn-project/aztec-nr/aztec/src/abi.nr rust ### Private Global Variables In the private execution context, we only have access to a subset of the total global variables, we are restricted to those which can be reliably proven by the kernel circuits. -#include_code private-global-variables /yarn-project/noir-libs/aztec-noir/src/abi.nr rust +#include_code private-global-variables /yarn-project/aztec-nr/aztec/src/abi.nr rust ### Args Hash To allow for flexibility in the number of arguments supported by Aztec functions, all function inputs are reduced to a singular value which can be proven from within the application. @@ -101,13 +107,16 @@ The public call stack contains all of the external function calls that are creat ### New L2 to L1 msgs New L2 to L1 messages contains messages that are delivered to the [l1 outbox](../../concepts/foundation/communication/cross_chain_calls.md) on the execution of each rollup. -## Public Context Inputs +## Public Context +The Public Context includes all of the information passed from the `Public VM` into the execution environment. It is very similar to the [Private Context](#the-private-context), however it has some minor differences (detailed below). + +### Public Context Inputs In the current version of the system, the public context is almost a clone of the private execution context. It contains the same call context data, access to the same historic tree roots, however it does NOT have access to contract deployment data, this is due to traditional contract deployments only currently being possible from private transactions. -#include_code public-context-inputs /yarn-project/noir-libs/aztec-noir/src/abi.nr rust +#include_code public-context-inputs /yarn-project/aztec-nr/aztec/src/abi.nr rust ### Public Global Variables The public global variables are provided by the rollup sequencer and consequently contain some more values than the private global variables. -#include_code public-global-variables /yarn-project/noir-libs/aztec-noir/src/abi.nr rust +#include_code public-global-variables /yarn-project/aztec-nr/aztec/src/abi.nr rust diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index 61eadc503e1..0760d5194f5 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -8,9 +8,9 @@ - A constructor behaves almost identically to any other function. It's just important for Aztec to be able to identify this function as special: it may only be called once, and will not be deployed as part of the contract. An example of a constructor is as follows: -#include_code constructor /yarn-project/noir-contracts/src/contracts/private_token_contract/src/main.nr rust +#include_code constructor /yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr rust -In this example (taken from a token contract), the constructor mints `initial_supply` tokens to the passed in `owner`. +In this example (taken from an escrow contract), the constructor sets the deployer as an `owner`. Although constructors are always needed, they are not required to do anything. A empty constructor can be created as follows: @@ -25,8 +25,7 @@ To create a private function you can annotate it with the `#[aztec(private)]` at ## `Public` Functions - -To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the [public context](./context.md#public-context-inputs) available within your current function's execution scope. +To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the [public context](./context.md#public-context) available within your current function's execution scope. #include_code functions-OpenFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust @@ -67,8 +66,10 @@ The context available within functions includes the ability to send messages to ### What happens behind the scenes? When a user sends a message from a [portal contract](../../concepts/foundation/communication/cross_chain_calls.md#portal) to the rollup's inbox it gets processed and added to the `l1 to l2 messages tree`. + <-- TODO(Maddiaa): INCLUDE LINK TO WHERE the messages tree is discussed elsewhere in the docs. --> -The l1 to l2 messages tree contains all messages that have been sent from l1 to the l2. The good thing about this tree is that it does not reveal when it's messages have been spent, as consuming a message from the l1 to l2 messages tree is done by nullifing a message, rather than marking it as consumed. + +The l1 to l2 messages tree contains all messages that have been sent from l1 to the l2. The good thing about this tree is that it does not reveal when it's messages have been spent, as consuming a message from the l1 to l2 messages tree is done by nullifing a message. When calling the `consume_l1_to_l2_message` function on a contract; a number of actions are performed by `Aztec.nr`. @@ -77,10 +78,10 @@ When calling the `consume_l1_to_l2_message` function on a contract; a number of 3. Check that the message content matches the content reproduced earlier on. 4. Validate that caller know's the preimage to the message's `secretHash`. See more information [here](../../concepts/foundation/communication/cross_chain_calls.md#messages). 5. We compute the nullifier for the message. -#include_code l1_to_l2_message_compute_nullifier /yarn-project/noir-libs/aztec-noir/src/messaging/l1_to_l2_message.nr rust +#include_code l1_to_l2_message_compute_nullifier /yarn-project/aztec-nr/aztec/src/messaging/l1_to_l2_message.nr rust 6. Finally we push the nullifier to the context. Allowing it to be checked for validity by the kernel and rollup circuits. -#include_code consume_l1_to_l2_message /yarn-project/noir-libs/aztec-noir/src/context.nr rust +#include_code consume_l1_to_l2_message /yarn-project/aztec-nr/aztec/src/context.nr rust As the same nullifier cannot be created twice. We cannot consume the message again. @@ -97,7 +98,7 @@ Aztec.nr uses an attribute system to annotate a function's type. Annotating a fu However; `#aztec(private)` is just syntactic sugar. At compile time, the framework inserts code that allows the function to interact with the [kernel](../../concepts/advanced/circuits/kernels/private_kernel.md). -To help illustrate how this interacts with the internals of Aztec and its kernel circuits, we can take an example private function, and explore what it looks like after Aztec.nr's macro expansion. +To help illustrate how this interacts with the internals of #public-contextAztec and its kernel circuits, we can take an example private function, and explore what it looks like after Aztec.nr's macro expansion. #### Before expansion #include_code simple_macro_example /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust @@ -109,7 +110,6 @@ To help illustrate how this interacts with the internals of Aztec and its kernel #### The expansion broken down? Viewing the expanded noir contract uncovers a lot about how noir contracts interact with the [kernel](../../concepts/advanced/circuits/kernels/private_kernel.md). To aid with developing intuition, we will break down each inserted line. - **Receiving context from the kernel.** #include_code context-example-inputs /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust @@ -132,7 +132,7 @@ This structure contains a host of information about the executed program. It wil **Hashing the function inputs.** #include_code context-example-hasher /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -What is the hasher and why is it needed? +*What is the hasher and why is it needed?* Inside the kernel circuits, the inputs to functions are reduced to a single value; the inputs hash. This prevents the need for multiple different kernel circuits; each supporting differing numbers of inputs. The hasher abstraction that allows us to create an array of all of the inputs that can be reduced to a single value. diff --git a/docs/docs/dev_docs/contracts/syntax.md b/docs/docs/dev_docs/contracts/syntax.md index 04ac4c3eda9..86aefd8c151 100644 --- a/docs/docs/dev_docs/contracts/syntax.md +++ b/docs/docs/dev_docs/contracts/syntax.md @@ -24,7 +24,9 @@ compiler_version = "0.10.0" type = "contract" [dependencies] -aztec = { git="https://github.com/AztecProtocol/aztec-packages", tag="master", directory="yarn-project/noir-libs/aztec-noir" } +aztec = { git="https://github.com/AztecProtocol/aztec-packages", tag="master", directory="yarn-project/aztec-nr/aztec" } ``` -Note: currently the dependency name ***MUST*** be `aztec`. The framework expects this namespace to be available when compiling into contracts. This limitation may be removed in the future. \ No newline at end of file +:::info +Note: currently the dependency name ***MUST*** be `aztec`. The framework expects this namespace to be available when compiling into contracts. This limitation may be removed in the future. +::: \ No newline at end of file diff --git a/docs/package.json b/docs/package.json index b3017e9b2b2..da3cec4b9c4 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,7 +5,7 @@ "scripts": { "docusaurus": "docusaurus", "start": "docusaurus start", - "start:dev": "concurrently \"yarn preprocess:dev\" \"docusaurus start --host 0.0.0.0\"", + "start:dev": "concurrently \"yarn preprocess:dev\" \"docusaurus start --host 0.0.0.0 --port 3001\"", "start:dev:local": "concurrently \"yarn preprocess:dev\" \"docusaurus start\"", "build": "yarn preprocess && docusaurus build", "swizzle": "docusaurus swizzle", diff --git a/docs/static/img/context/sender_context_change.png b/docs/static/img/context/sender_context_change.png new file mode 100644 index 0000000000000000000000000000000000000000..5f36f91c488315792f22c5814ea6beabf15d4ccb GIT binary patch literal 120724 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%0D6NJsx-R<8=Qvi4{cY8lch507J3Vc;e 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%0A*g`WYj{tT?~!m)y;5sIgA)hcXBEs9N4rTS?|`Oj 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%0DGZpd)6D?L8R?EHtyYB{V!Xc)KpY##0Y;K*J3kw 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 literal 0 HcmV?d00001 diff --git a/docs/static/img/context/message-sender-movement.png b/docs/static/img/context/this.png similarity index 100% rename from docs/static/img/context/message-sender-movement.png rename to docs/static/img/context/this.png diff --git a/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr index b287671792b..0623d3c3880 100644 --- a/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr @@ -36,23 +36,27 @@ contract Escrow { } // Creates a new instance + // docs:start:constructor #[aztec(private)] fn constructor( owner: pub Field ) { - let this = context.this_address(); - let storage = Storage::init(Context::private(&mut context)); - let mut note = AddressNote::new(owner, this); + + // Create a new note and add it to the owners set. + let mut note = AddressNote::new(owner, context.this_address()); + + // Insert the owner into storage storage.owners.insert(&mut note); emit_encrypted_log( &mut context, - this, + context.this_address(), storage.owners.storage_slot, get_public_key(this), note.serialise(), ); } + // docs:end:constructor // Withdraws balance. Requires that msg.sender is registered as an owner. #[aztec(private)] diff --git a/yarn-project/noir-contracts/src/contracts/private_token_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/private_token_contract/src/main.nr index e03c3fa613c..1d0afbdc6ae 100644 --- a/yarn-project/noir-contracts/src/contracts/private_token_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/private_token_contract/src/main.nr @@ -34,7 +34,6 @@ contract PrivateToken { } } - // docs:start:constructor // Constructs the contract and sets `initial_supply` which is fully owned by `owner`. #[aztec(private)] fn constructor( @@ -48,7 +47,6 @@ contract PrivateToken { increment(owner_balance, initial_supply, owner); } } - // docs:end:constructor // docs:start:mint // Mints `amount` of tokens to `owner`. From 8e8b214c30d794eb003aabde0159fd29573aa699 Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Mon, 18 Sep 2023 17:51:22 +0100 Subject: [PATCH 16/25] fix: remove this.png --- docs/static/img/context/this.png | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/static/img/context/this.png diff --git a/docs/static/img/context/this.png b/docs/static/img/context/this.png deleted file mode 100644 index e69de29bb2d..00000000000 From 398e70f5fc734ea854daec3d2e0a5ac073f88999 Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Mon, 18 Sep 2023 17:56:45 +0100 Subject: [PATCH 17/25] fix --- .../src/contracts/escrow_contract/src/main.nr | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr index 0623d3c3880..6d70728eac4 100644 --- a/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr @@ -43,14 +43,16 @@ contract Escrow { ) { let storage = Storage::init(Context::private(&mut context)); + let this = context.this_address(); + // Create a new note and add it to the owners set. - let mut note = AddressNote::new(owner, context.this_address()); + let mut note = AddressNote::new(owner, this); // Insert the owner into storage storage.owners.insert(&mut note); emit_encrypted_log( &mut context, - context.this_address(), + this, storage.owners.storage_slot, get_public_key(this), note.serialise(), From 3ec0b0f85e56229aac39b15b9f1e3648deb84f99 Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Mon, 18 Sep 2023 17:57:33 +0100 Subject: [PATCH 18/25] fix: alter context to mdx for images --- docs/docs/dev_docs/contracts/{context.md => context.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/docs/dev_docs/contracts/{context.md => context.mdx} (100%) diff --git a/docs/docs/dev_docs/contracts/context.md b/docs/docs/dev_docs/contracts/context.mdx similarity index 100% rename from docs/docs/dev_docs/contracts/context.md rename to docs/docs/dev_docs/contracts/context.mdx From b2033ddfbfa511650469c044e99532c2c085a74b Mon Sep 17 00:00:00 2001 From: Maddiaa <47148561+Maddiaa0@users.noreply.github.com> Date: Mon, 18 Sep 2023 19:02:05 +0200 Subject: [PATCH 19/25] feat(docs): globals documentation (#2067) Documents the global variables --- docs/docs/dev_docs/contracts/globals.md | 39 +++++++++++++++++++++---- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/docs/docs/dev_docs/contracts/globals.md b/docs/docs/dev_docs/contracts/globals.md index 91b8c72fb6a..36d781f91a6 100644 --- a/docs/docs/dev_docs/contracts/globals.md +++ b/docs/docs/dev_docs/contracts/globals.md @@ -1,6 +1,35 @@ -# Globals +--- +title: Global Variables +description: Documentation of Aztec's Global Variables in the Public and Private Contexts +hide_table_of_contents: false +--- +# Global Variables +For developers coming from solidity, this concept will be similar to how the global `block` variable exposes a series of block values. The idea is the same in Aztec. Developers can access a namespace of values made available in each function. -- timestamp -- block number -- chain id -- version \ No newline at end of file +`Aztec` has two execution environments, Private and Public. Each execution environment contains a different global variables object. + +## Private Global Variables +#include_code private-global-variables /yarn-project/noir-libs/noir-aztec/src/abi.nr rust + +The private global variables contain: +### Chain Id +The chain id differs depending on which Aztec instance you are on ( NOT the Ethereum hardfork that the rollup is settling to ). On original deployment of the network, this value will be 1. + +### Version +The version number indicates which Aztec hardfork you are on. The Genesis block of the network will have the version number 1. + +## Public Global Variables +#include_code public-global-variables /yarn-project/noir-libs/noir-aztec/src/abi.nr rust + +The public global variables contain the values present in the `private global variables` described above, with the addition of: + +### Timestamp +The timestamp is the unix timestamp in which the block has been executed. The value is provided by the block's proposer (therefore can have variance). This value will always increase. + +### Block Number +The block number is an sequential identifier that labels each individual block of the network. This value will be the block number of the block the accessing transaction is included in. +The block number of the genesis block will be 1, with the number increasing by 1 for every block after. + +> *Why do the available global variables differ per execution environment?* +> The global variables are constrained by the proving environment. In the case of public functions, they are executed on a sequencer that will know the timestamp and number of the next block ( as they are the block producer ). +> In the case of private functions, we cannot be sure which block our transaction will be included in, hence we can not guarantee values for the timestamp or block number. \ No newline at end of file From 1d6561ac7eb246fc016fb8fec02ab9301887876e Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Mon, 18 Sep 2023 18:05:57 +0100 Subject: [PATCH 20/25] fix: aztec-nr ref post merge --- docs/docs/dev_docs/contracts/globals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/dev_docs/contracts/globals.md b/docs/docs/dev_docs/contracts/globals.md index 36d781f91a6..c116781e9a9 100644 --- a/docs/docs/dev_docs/contracts/globals.md +++ b/docs/docs/dev_docs/contracts/globals.md @@ -9,7 +9,7 @@ For developers coming from solidity, this concept will be similar to how the glo `Aztec` has two execution environments, Private and Public. Each execution environment contains a different global variables object. ## Private Global Variables -#include_code private-global-variables /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +#include_code private-global-variables /yarn-project/aztec-nr/aztec/src/abi.nr rust The private global variables contain: ### Chain Id @@ -19,7 +19,7 @@ The chain id differs depending on which Aztec instance you are on ( NOT the Ethe The version number indicates which Aztec hardfork you are on. The Genesis block of the network will have the version number 1. ## Public Global Variables -#include_code public-global-variables /yarn-project/noir-libs/noir-aztec/src/abi.nr rust +#include_code public-global-variables /yarn-project/aztec-nr/aztec/src/abi.nr rust The public global variables contain the values present in the `private global variables` described above, with the addition of: From 27dcb8b5af5b00a3163264cbffa9101ef7c740fd Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Mon, 18 Sep 2023 18:27:16 +0100 Subject: [PATCH 21/25] fix: package.json --- docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index da3cec4b9c4..b3017e9b2b2 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,7 +5,7 @@ "scripts": { "docusaurus": "docusaurus", "start": "docusaurus start", - "start:dev": "concurrently \"yarn preprocess:dev\" \"docusaurus start --host 0.0.0.0 --port 3001\"", + "start:dev": "concurrently \"yarn preprocess:dev\" \"docusaurus start --host 0.0.0.0\"", "start:dev:local": "concurrently \"yarn preprocess:dev\" \"docusaurus start\"", "build": "yarn preprocess && docusaurus build", "swizzle": "docusaurus swizzle", From 2b02a1439af24179eb68e621c4b4e180bf6bbdb9 Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Mon, 18 Sep 2023 18:28:34 +0100 Subject: [PATCH 22/25] fix: update context.md refs to mdx --- docs/docs/dev_docs/contracts/functions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index 0760d5194f5..d92bf943122 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -19,13 +19,13 @@ Although constructors are always needed, they are not required to do anything. A ## `Private` Functions -To create a private function you can annotate it with the `#[aztec(private)]` attribute. This will make the [private context](./context.md#private-context-broken-down) available within your current function's execution scope. +To create a private function you can annotate it with the `#[aztec(private)]` attribute. This will make the [private context](./context.mdx#private-context-broken-down) available within your current function's execution scope. #include_code functions-SecretFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust ## `Public` Functions -To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the [public context](./context.md#public-context) available within your current function's execution scope. +To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the [public context](./context.mdx#public-context) available within your current function's execution scope. #include_code functions-OpenFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust @@ -139,7 +139,7 @@ Inside the kernel circuits, the inputs to functions are reduced to a single valu **Creating the function's context.** #include_code context-example-context /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -Each Aztec function has access to a [context](./context.md) object. This object although ergonomically a global variable, is local. It is initialized from the inputs provided by the kernel, and a hash of the function's inputs. +Each Aztec function has access to a [context](./context.mdx) object. This object although ergonomically a global variable, is local. It is initialized from the inputs provided by the kernel, and a hash of the function's inputs. #include_code context-example-context-return /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust From 57f42b4b6a65457d6af4dec4552055c682f4a87e Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Tue, 19 Sep 2023 10:58:45 +0100 Subject: [PATCH 23/25] nits --- docs/docs/dev_docs/contracts/functions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/dev_docs/contracts/functions.md b/docs/docs/dev_docs/contracts/functions.md index d92bf943122..e9235d7badf 100644 --- a/docs/docs/dev_docs/contracts/functions.md +++ b/docs/docs/dev_docs/contracts/functions.md @@ -4,7 +4,7 @@ - A special `constructor` function MUST be declared within a contract's scope. - A constructor doesn't have a name, because its purpose is clear: to initialise contract state. -- In Aztec terminology, a constructor is always a '`private` function' (i.e. it cannot be a `public` function). +- In Aztec terminology, a constructor is always a '`private` function' (i.e. it cannot be a `public` function, in the current version of the sandbox it cannot call public functions either). - A constructor behaves almost identically to any other function. It's just important for Aztec to be able to identify this function as special: it may only be called once, and will not be deployed as part of the contract. An example of a constructor is as follows: @@ -98,7 +98,7 @@ Aztec.nr uses an attribute system to annotate a function's type. Annotating a fu However; `#aztec(private)` is just syntactic sugar. At compile time, the framework inserts code that allows the function to interact with the [kernel](../../concepts/advanced/circuits/kernels/private_kernel.md). -To help illustrate how this interacts with the internals of #public-contextAztec and its kernel circuits, we can take an example private function, and explore what it looks like after Aztec.nr's macro expansion. +To help illustrate how this interacts with the internals of Aztec and its kernel circuits, we can take an example private function, and explore what it looks like after Aztec.nr's macro expansion. #### Before expansion #include_code simple_macro_example /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust From 8e04c5b3e81961155cffd177dc7d3fc140d81f7f Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Tue, 19 Sep 2023 13:52:08 +0000 Subject: [PATCH 24/25] fix: merge fix --- .../dev_docs/contracts/syntax/functions.md | 12 +++--- .../docs/dev_docs/contracts/syntax/globals.md | 37 ++++++++++++++++--- .../dev_docs/contracts/syntax/messaging.md | 34 +++++++++++++++++ docs/sidebars.js | 8 +++- 4 files changed, 78 insertions(+), 13 deletions(-) create mode 100644 docs/docs/dev_docs/contracts/syntax/messaging.md diff --git a/docs/docs/dev_docs/contracts/syntax/functions.md b/docs/docs/dev_docs/contracts/syntax/functions.md index edb6854324f..942b88023f5 100644 --- a/docs/docs/dev_docs/contracts/syntax/functions.md +++ b/docs/docs/dev_docs/contracts/syntax/functions.md @@ -21,13 +21,13 @@ Although constructors are always needed, they are not required to do anything. A ## `Private` Functions -To create a private function you can annotate it with the `#[aztec(private)]` attribute. This will make the [private context](./context.mdx#private-context-broken-down) available within your current function's execution scope. +To create a private function you can annotate it with the `#[aztec(private)]` attribute. This will make the [private context](../context.mdx#private-context-broken-down) available within your current function's execution scope. #include_code functions-SecretFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust ## `Public` Functions -To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the [public context](./context.mdx#public-context) available within your current function's execution scope. +To create a public function you can annotate it with the `#[aztec(public)]` attribute. This will make the [public context](../context.mdx#public-context) available within your current function's execution scope. #include_code functions-OpenFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust @@ -52,7 +52,7 @@ These are used to annotate functions so that they are compliant with Aztec ABIs. ### Function type attributes explained. Aztec.nr uses an attribute system to annotate a function's type. Annotating a function with the `#[aztec(private)]` attribute tells the framework that this will be a private function that will be executed on a users device. Thus the compiler will create a circuit to define this function. -However; `#aztec(private)` is just syntactic sugar. At compile time, the framework inserts code that allows the function to interact with the [kernel](../../concepts/advanced/circuits/kernels/private_kernel.md). +However; `#aztec(private)` is just syntactic sugar. At compile time, the framework inserts code that allows the function to interact with the [kernel](../../../concepts/advanced/circuits/kernels/private_kernel.md). To help illustrate how this interacts with the internals of #public-contextAztec and its kernel circuits, we can take an example private function, and explore what it looks like after Aztec.nr's macro expansion. @@ -64,12 +64,12 @@ To help illustrate how this interacts with the internals of #public-contextAztec #include_code simple_macro_example_expanded /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust #### The expansion broken down? -Viewing the expanded noir contract uncovers a lot about how noir contracts interact with the [kernel](../../concepts/advanced/circuits/kernels/private_kernel.md). To aid with developing intuition, we will break down each inserted line. +Viewing the expanded noir contract uncovers a lot about how noir contracts interact with the [kernel](../../../concepts/advanced/circuits/kernels/private_kernel.md). To aid with developing intuition, we will break down each inserted line. **Receiving context from the kernel.** #include_code context-example-inputs /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -Private function calls are able to interact with each other through orchestration from within the [kernel circuit](../../concepts/advanced/circuits/kernels/private_kernel.md). The kernel circuit forwards information to each app circuit. This information then becomes part of the private context. +Private function calls are able to interact with each other through orchestration from within the [kernel circuit](../../../concepts/advanced/circuits/kernels/private_kernel.md). The kernel circuit forwards information to each app circuit. This information then becomes part of the private context. For example, within each circuit we can access some global variables. To access them we can call `context.chain_id()`. The value of this chain ID comes from the values passed into the circuit from the kernel. The kernel can then check that all of the values passed to each circuit in a function call are the same. @@ -95,7 +95,7 @@ Inside the kernel circuits, the inputs to functions are reduced to a single valu **Creating the function's context.** #include_code context-example-context /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -Each Aztec function has access to a [context](./context.mdx) object. This object although ergonomically a global variable, is local. It is initialized from the inputs provided by the kernel, and a hash of the function's inputs. +Each Aztec function has access to a [context](../context.mdx) object. This object although ergonomically a global variable, is local. It is initialized from the inputs provided by the kernel, and a hash of the function's inputs. #include_code context-example-context-return /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust diff --git a/docs/docs/dev_docs/contracts/syntax/globals.md b/docs/docs/dev_docs/contracts/syntax/globals.md index 604883293b9..30b6a0fae9c 100644 --- a/docs/docs/dev_docs/contracts/syntax/globals.md +++ b/docs/docs/dev_docs/contracts/syntax/globals.md @@ -1,10 +1,35 @@ --- -title: Globals +title: Global Variables +description: Documentation of Aztec's Global Variables in the Public and Private Contexts --- -# Globals +# Global Variables +For developers coming from solidity, this concept will be similar to how the global `block` variable exposes a series of block values. The idea is the same in Aztec. Developers can access a namespace of values made available in each function. -- `timestamp` -- `block_number` -- `chain_id` -- `version` +`Aztec` has two execution environments, Private and Public. Each execution environment contains a different global variables object. + +## Private Global Variables +#include_code private-global-variables /yarn-project/aztec-nr/aztec/src/abi.nr rust + +The private global variables contain: +### Chain Id +The chain id differs depending on which Aztec instance you are on ( NOT the Ethereum hardfork that the rollup is settling to ). On original deployment of the network, this value will be 1. + +### Version +The version number indicates which Aztec hardfork you are on. The Genesis block of the network will have the version number 1. + +## Public Global Variables +#include_code public-global-variables /yarn-project/aztec-nr/aztec/src/abi.nr rust + +The public global variables contain the values present in the `private global variables` described above, with the addition of: + +### Timestamp +The timestamp is the unix timestamp in which the block has been executed. The value is provided by the block's proposer (therefore can have variance). This value will always increase. + +### Block Number +The block number is an sequential identifier that labels each individual block of the network. This value will be the block number of the block the accessing transaction is included in. +The block number of the genesis block will be 1, with the number increasing by 1 for every block after. + +> *Why do the available global variables differ per execution environment?* +> The global variables are constrained by the proving environment. In the case of public functions, they are executed on a sequencer that will know the timestamp and number of the next block ( as they are the block producer ). +> In the case of private functions, we cannot be sure which block our transaction will be included in, hence we can not guarantee values for the timestamp or block number. diff --git a/docs/docs/dev_docs/contracts/syntax/messaging.md b/docs/docs/dev_docs/contracts/syntax/messaging.md new file mode 100644 index 00000000000..f83fc725c10 --- /dev/null +++ b/docs/docs/dev_docs/contracts/syntax/messaging.md @@ -0,0 +1,34 @@ +--- +title: Messaging +description: Documentation of Aztec's Messaging system +--- + +# Messaging + +## L1 --> L2 +The context available within functions includes the ability to send messages to l1. For more information on how cross chain communication works in Aztec, see the [documentation on communication.](../../../concepts/foundation/communication/cross_chain_calls.md) + +#include_code non_native_token_withdraw /yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr rust + +### What happens behind the scenes? +When a user sends a message from a [portal contract](../../../concepts/foundation/communication/cross_chain_calls.md#portal) to the rollup's inbox it gets processed and added to the `l1 to l2 messages tree`. + + <-- TODO(Maddiaa): INCLUDE LINK TO WHERE the messages tree is discussed elsewhere in the docs. --> + +The l1 to l2 messages tree contains all messages that have been sent from l1 to the l2. The good thing about this tree is that it does not reveal when it's messages have been spent, as consuming a message from the l1 to l2 messages tree is done by nullifing a message. + +When calling the `consume_l1_to_l2_message` function on a contract; a number of actions are performed by `Aztec.nr`. + +1. The `msgKey` value (passed to the consume message function) is used to look up the contents of the l1 message. +2. Check that the message recipient is the contract of the current calling context. +3. Check that the message content matches the content reproduced earlier on. +4. Validate that caller know's the preimage to the message's `secretHash`. See more information [here](../../../concepts/foundation/communication/cross_chain_calls.md#messages). +5. We compute the nullifier for the message. +#include_code l1_to_l2_message_compute_nullifier /yarn-project/aztec-nr/aztec/src/messaging/l1_to_l2_message.nr rust +6. Finally we push the nullifier to the context. Allowing it to be checked for validity by the kernel and rollup circuits. + +#include_code consume_l1_to_l2_message /yarn-project/aztec-nr/aztec/src/context.nr rust + +As the same nullifier cannot be created twice. We cannot consume the message again. + +## L2 ->> L1 diff --git a/docs/sidebars.js b/docs/sidebars.js index 5e92ba23b16..585b1d947e3 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -105,6 +105,11 @@ const sidebars = { }, items: [ "dev_docs/contracts/syntax/contract", + "dev_docs/contracts/syntax/functions", + "dev_docs/contracts/syntax/storage", + "dev_docs/contracts/syntax/state_variables", + "dev_docs/contracts/syntax/globals", + "dev_docs/contracts/syntax/messaging", ], }, { @@ -119,7 +124,8 @@ const sidebars = { "dev_docs/contracts/portals/registry", "dev_docs/contracts/portals/inbox", "dev_docs/contracts/portals/outbox", - }, + ] + } // { // label: "Resources", // type: "category", From c76ab7efbc38e14ef9ca49a0e662daec0d5fe363 Mon Sep 17 00:00:00 2001 From: Maddiaa0 <47148561+Maddiaa0@users.noreply.github.com> Date: Tue, 19 Sep 2023 14:05:45 +0000 Subject: [PATCH 25/25] skibbidy --- docs/docs/dev_docs/contracts/context.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/dev_docs/contracts/context.mdx b/docs/docs/dev_docs/contracts/context.mdx index 53615094e97..8bf17d3c6d3 100644 --- a/docs/docs/dev_docs/contracts/context.mdx +++ b/docs/docs/dev_docs/contracts/context.mdx @@ -80,7 +80,7 @@ To allow for flexibility in the number of arguments supported by Aztec functions The `args_hash` is the result of pedersen hashing all of a function's inputs. ### Return Values -The return values are a set of values that are returned from an applications execution to be passed to other functions through the kernel. Developers do not need to worry about passing their function return values to the `context` directly as `Aztec.nr` takes care of it for you. See the documentation surrounding `Aztec.nr` [macro expansion](../../dev_docs/contracts/functions.md#after-expansion) for more details. +The return values are a set of values that are returned from an applications execution to be passed to other functions through the kernel. Developers do not need to worry about passing their function return values to the `context` directly as `Aztec.nr` takes care of it for you. See the documentation surrounding `Aztec.nr` [macro expansion](./syntax/functions.md#after-expansion) for more details. return_values : BoundedVec,