From 1f1a17fe056d8898c4c065fb6244e53da04800cb Mon Sep 17 00:00:00 2001 From: Maddiaa <47148561+Maddiaa0@users.noreply.github.com> Date: Tue, 19 Sep 2023 16:22:39 +0200 Subject: [PATCH] feat(docs): document noir macros (#2016) Documents how the macros work and what they do. Also adds some information about the context objects, they are required to understand the macros abstraction. closes: https://github.com/AztecProtocol/aztec-packages/issues/2063 --- .../roadmap/cryptography_roadmap.md | 2 +- docs/docs/dev_docs/contracts/context.mdx | 122 ++++++++++++++++++ docs/docs/dev_docs/contracts/portals/main.md | 1 + .../dev_docs/contracts/syntax/functions.md | 82 +++++++++++- .../docs/dev_docs/contracts/syntax/globals.md | 37 +++++- docs/docs/dev_docs/contracts/syntax/main.md | 9 +- .../dev_docs/contracts/syntax/messaging.md | 34 +++++ .../dapps/tutorials/contract_deployment.md | 4 +- docs/sidebars.js | 5 +- .../img/context/sender_context_change.png | Bin 0 -> 120724 bytes yarn-project/aztec-nr/aztec/src/abi.nr | 17 ++- yarn-project/aztec-nr/aztec/src/context.nr | 4 + .../aztec/src/messaging/l1_to_l2_message.nr | 2 + .../docs_example_contract/src/main.nr | 75 +++++++++++ .../src/contracts/escrow_contract/src/main.nr | 10 +- .../private_token_contract/src/main.nr | 2 - .../public_token_contract/src/main.nr | 2 + 17 files changed, 383 insertions(+), 25 deletions(-) create mode 100644 docs/docs/dev_docs/contracts/context.mdx create mode 100644 docs/docs/dev_docs/contracts/syntax/messaging.md create mode 100644 docs/static/img/context/sender_context_change.png diff --git a/docs/docs/about_aztec/roadmap/cryptography_roadmap.md b/docs/docs/about_aztec/roadmap/cryptography_roadmap.md index 4c8f8facf4a..0cef1ff7e37 100644 --- a/docs/docs/about_aztec/roadmap/cryptography_roadmap.md +++ b/docs/docs/about_aztec/roadmap/cryptography_roadmap.md @@ -10,7 +10,7 @@ The cryptography team is currently working on [Barretenberg here](https://github ## 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/context.mdx b/docs/docs/dev_docs/contracts/context.mdx new file mode 100644 index 00000000000..8bf17d3c6d3 --- /dev/null +++ b/docs/docs/dev_docs/contracts/context.mdx @@ -0,0 +1,122 @@ +--- +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 +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 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. + +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 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/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/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/aztec-nr/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. + +> 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 (Warning: This is yet to be implemented). In this case the value will be that of the sending contract. + +3. Portal Contract Address + - 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. + - 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 +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/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/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/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. + +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](./syntax/functions.md#after-expansion) for more details. + + return_values : BoundedVec, + +### Read Requests + + +### New Commitments +New commitments contains an array of all of the commitments created in the current execution context. + +### New Nullifiers +New nullifiers contains an array of the new nullifiers emitted from the current execution context. + +### Nullified Commitments +Nullified commitments is an optimisation for introduced to help reduce state growth. There are often cases where commitments are created and nullified within the same transaction. +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 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 +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 +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/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/aztec-nr/aztec/src/abi.nr rust diff --git a/docs/docs/dev_docs/contracts/portals/main.md b/docs/docs/dev_docs/contracts/portals/main.md index 67074e53aab..c94d4950a1f 100644 --- a/docs/docs/dev_docs/contracts/portals/main.md +++ b/docs/docs/dev_docs/contracts/portals/main.md @@ -73,6 +73,7 @@ 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 non_native_token_withdraw yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr rust When the transaction is included in a rollup block the message will be inserted into the `Outbox`, where the recipient portal can consume it from. When consuming, the `msg.sender` must match the `recipient` meaning that only portal can actually consume the message. diff --git a/docs/docs/dev_docs/contracts/syntax/functions.md b/docs/docs/dev_docs/contracts/syntax/functions.md index 0277e315815..caabcb298e6 100644 --- a/docs/docs/dev_docs/contracts/syntax/functions.md +++ b/docs/docs/dev_docs/contracts/syntax/functions.md @@ -5,19 +5,29 @@ title: Functions ## `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, 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. -## secret functions +An example of a constructor is as follows: +#include_code constructor /yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr rust -> a.k.a. "private" functions +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: + +#include_code empty-constructor /yarn-project/noir-contracts/src/contracts/public_token_contract/src/main.nr rust + + +## `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. #include_code functions-SecretFunction /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust -## `open` functions +## `Public` Functions -> 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](../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 @@ -36,5 +46,63 @@ Similar to Solidity, internal functions and vars can be accessed within the cont External is not used explicitly as it is in Solidity, but things not marked as `internal` will be external. ### `#[aztec(public)]` and `#[aztec(private)]` - These are used to annotate functions so that they are compliant with Aztec ABIs. They inject `PublicContext` and `PrivateContext` for use in contracts. + +## 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 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. + +#### Before expansion +#include_code simple_macro_example /yarn-project/noir-contracts/src/contracts/docs_example_contract/src/main.nr rust + + +#### After expansion +#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. + +**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. + +**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! + +**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 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.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 + +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. + +**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 + +This function takes the application context, and converts it into the `PrivateCircuitPublicInputs` structure. This structure is then passed to the kernel circuit. 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/main.md b/docs/docs/dev_docs/contracts/syntax/main.md index 6452298329a..870466e98de 100644 --- a/docs/docs/dev_docs/contracts/syntax/main.md +++ b/docs/docs/dev_docs/contracts/syntax/main.md @@ -2,7 +2,7 @@ import DocCardList from '@theme/DocCardList'; # 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/aztec-nr) for writing contracts on Aztec. @@ -26,9 +26,16 @@ compiler_version = "0.1" type = "contract" [dependencies] +# Framework import aztec = { git="https://github.com/AztecProtocol/aztec-packages/", tag="master", directory="yarn-project/aztec-nr/aztec" } + +# Utility dependencies value_note = { git="https://github.com/AztecProtocol/aztec-packages/", tag="master", directory="yarn-project/aztec-nr/value-note"} safe_math = { git="https://github.com/AztecProtocol/aztec-packages/", tag="master", directory="yarn-project/aztec-nr/safe-math"} ``` +:::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. +::: + 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/docs/dev_docs/dapps/tutorials/contract_deployment.md b/docs/docs/dev_docs/dapps/tutorials/contract_deployment.md index 74c6561e8c6..6bcd4062724 100644 --- a/docs/docs/dev_docs/dapps/tutorials/contract_deployment.md +++ b/docs/docs/dev_docs/dapps/tutorials/contract_deployment.md @@ -19,8 +19,8 @@ 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/aztec-nr/aztec" } -value_note = { git="https://github.com/AztecProtocol/aztec-packages", tag="master", directory="yarn-project/aztec-nr/value-note" } +aztec = { git="https://github.com/AztecProtocol/aztec-nr", tag="master", directory="aztec" } +value_note = { git="https://github.com/AztecProtocol/aztec-nr", tag="master", directory="value-note" } ``` Last, copy-paste the code from the `PrivateToken` contract into `contracts/private_token/main.nr`: diff --git a/docs/sidebars.js b/docs/sidebars.js index ae69f0ada65..585b1d947e3 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -109,6 +109,7 @@ const sidebars = { "dev_docs/contracts/syntax/storage", "dev_docs/contracts/syntax/state_variables", "dev_docs/contracts/syntax/globals", + "dev_docs/contracts/syntax/messaging", ], }, { @@ -123,8 +124,8 @@ const sidebars = { "dev_docs/contracts/portals/registry", "dev_docs/contracts/portals/inbox", "dev_docs/contracts/portals/outbox", - ], - }, + ] + } // { // label: "Resources", // type: "category", 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/yarn-project/aztec-nr/aztec/src/abi.nr b/yarn-project/aztec-nr/aztec/src/abi.nr index 780cd99e4ad..656aaf47f79 100644 --- a/yarn-project/aztec-nr/aztec/src/abi.nr +++ b/yarn-project/aztec-nr/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] { @@ -82,23 +89,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 +118,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 +137,7 @@ impl CallContext { } } +// docs:start:historic-block-data struct HistoricBlockData { private_data_tree_root : Field, nullifier_tree_root : Field, @@ -135,6 +147,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/aztec-nr/aztec/src/context.nr b/yarn-project/aztec-nr/aztec/src/context.nr index d6de841fe0b..022319561cb 100644 --- a/yarn-project/aztec-nr/aztec/src/context.nr +++ b/yarn-project/aztec-nr/aztec/src/context.nr @@ -51,6 +51,7 @@ use dep::std::option::Option; // When finished, one can call .finish() to convert back to the abi struct PrivateContext { + // docs:start:private-context inputs: abi::PrivateContextInputs, args_hash : Field, @@ -65,6 +66,7 @@ struct PrivateContext { private_call_stack : BoundedVec, public_call_stack : BoundedVec, new_l2_to_l1_msgs : BoundedVec, + // docs:end:private-context block_data: HistoricBlockData, @@ -172,6 +174,7 @@ 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:context_consume_l1_to_l2_message + // docs:start:consume_l1_to_l2_message fn consume_l1_to_l2_message( &mut self, msg_key: Field, @@ -185,6 +188,7 @@ impl PrivateContext { // 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/aztec-nr/aztec/src/messaging/l1_to_l2_message.nr b/yarn-project/aztec-nr/aztec/src/messaging/l1_to_l2_message.nr index f4b44f8625f..70e5f6efc23 100644 --- a/yarn-project/aztec-nr/aztec/src/messaging/l1_to_l2_message.nr +++ b/yarn-project/aztec-nr/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 } 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 cd6dc5f9b29..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 @@ -237,4 +237,79 @@ 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::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 + // docs:start:context-example-inputs + inputs: PrivateContextInputs, + // docs:end:context-example-inputs + // ************************************************************ + + // 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! + // 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 + let result = a + b; + + // ************************************************************ + // 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 + + + // 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/escrow_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr index b287671792b..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 @@ -36,14 +36,19 @@ 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 this = context.this_address(); + + // Create a new note and add it to the owners set. let mut note = AddressNote::new(owner, this); + + // Insert the owner into storage storage.owners.insert(&mut note); emit_encrypted_log( &mut context, @@ -53,6 +58,7 @@ contract Escrow { 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 5bf49580ed8..ba7c63a4b91 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`. 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 2dafe1baff9..37ef09b7cb1 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 @@ -36,8 +36,10 @@ contract PublicToken { } // Constructs the contract. + // docs:start:empty-constructor #[aztec(private)] fn constructor() {} + // docs:end:empty-constructor // Mints `amount` of tokens to a `recipient`. #[aztec(public)]