From d51df8cf6d756e03ffa577b9e35b92a9b723e6c1 Mon Sep 17 00:00:00 2001 From: Lasse Herskind <16536249+LHerskind@users.noreply.github.com> Date: Mon, 4 Dec 2023 13:20:21 +0000 Subject: [PATCH] feat: yellow paper cross-chain communication (#3477) Fixing #3151. Adding initial text for yellow paper on cross-chain communication --- .../docs/contracts/images/com-abs-6.png | Bin 0 -> 126569 bytes yellow-paper/docs/contracts/index.md | 344 ++++++++++++++++++ 2 files changed, 344 insertions(+) create mode 100644 yellow-paper/docs/contracts/images/com-abs-6.png create mode 100644 yellow-paper/docs/contracts/index.md diff --git a/yellow-paper/docs/contracts/images/com-abs-6.png b/yellow-paper/docs/contracts/images/com-abs-6.png new file mode 100644 index 0000000000000000000000000000000000000000..20ec6779ef0bd6957c8efe168c7a6d4041b73d89 GIT binary patch literal 126569 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%0AY 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

>8P~5;6u5}oY(*|cZBp)3+N7$(# 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

Ft{nT|EO8H-V$l6wm}oa9v;X= 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
0Cj3)hb8!L1(8hXVSz&b%Gw&V?_(w>C%^iz zC+9ju8oUocEL4iVyEW9cXmKh821-DqI^3qQ z@l`PS@E!02A#n?T16MXTH}6UVTMETf2n-$p6b6q1kLuSi7f_Q=wIz#DfG-CcN+`sy ztghx8l>?a$;>w{cX;j_~OMn~}5|S_DWk zz}g`a3pN5OK)DL?xGd>v^#T%Qqg-$&P7_sOj&+|vZWZx|t}VM%W%nxWV3)5=);FlW|)DuWiT&RTRt5odwwH3H~C->5Gu;Ae^C-<85| z@FhXO+;Dw?@4$cPjeg;_z0bf zbgrNL+Bk`aZw5b#XlettM<=@uSy!7sy$3+;*A0LM};9L7xxv^oL<7K2~-agY3cnhh^K>lri zX0H_u?Q`83!VmnAM-T5oj3GddABBv^oV>03%*YY~JbR^IhJ+HHU6=3iK}rC)-IU;< zF(hmUw(SK%l8X?M@gVRnUpSlxKN#6JFoFQZ9mIzjSE9?`&3ppTf$SyT_rK2~p6Y(K zHx*(>hold=k-~+9@2?-F7 zCEgWCXHD*f5P|peS;nI!)x6g#HkFT$9*?B#90_ke_rsGI9EBI8Tjl++Z=ryd87y z;3K(lA1JE9GYbgc>;rm!JrsZ%A@v6--41ph8g1+T4By?Tr|LH)6CewYZ30?rAzIKW zhsjh*LP$hF%w@nmR=PXO-KWcwX3TK~;7*jK1+`L{UL=(Fv7l?oL`R}qt`BK+H!(HH zA8bnke1&d_ac}SxFwWFs#z7SeKKiLr1SkM(9D?5izGhMzdgVfGDEet}lEx@}7J3SR z9cDZDh@e6pWl2i%_5`S5SU0ZfSw3SS9$_bfEtbX*7w4 z*Z`oB9v8^GX`xa;&@u4Qi$8ztd6fHH{1Dnmg8V;r^y zMLxJ4qbcL}e*7TWD=z+3+)zYFXoNQIR$5=(*#;<0m*+X>Ykk-Y27d$tTBhT$lI7zv znFBiI`fwOv8JGRxbHRHXwTNdN0t2Q~N_8oyr3drn4!xVHG%6qCQUtYMxN*MYe|J0-W{E6fp`$5w=ksmXwP5!}f1oMBhyx1<^(gbJhLh zqOq9rxpB3b=9(xGF53O!9P5KxH5jic-$+<`I9_ph`py&0j`I+-AHN^E8uES7n$UW2 zeLkGnW%}l=tKRkYb~zIG07~5HaghHp=VJf;mo(=8(|?`)>Zt8Rd{g|8uT@dhP^gfz G2>*W#X!@`K literal 0 HcmV?d00001 diff --git a/yellow-paper/docs/contracts/index.md b/yellow-paper/docs/contracts/index.md new file mode 100644 index 00000000000..718d0d0f7aa --- /dev/null +++ b/yellow-paper/docs/contracts/index.md @@ -0,0 +1,344 @@ +--- +title: Cross-chain communication +--- + +This section describes what our L1 contracts do, what they are responsible for and how they interact with the circuits. + +Note that the only reason that we even have any contracts is to facilitate cross-chain communication. The contracts are not required for the rollup to function, but required to bridge assets and to reduce the cost of light nodes. + +:::info Purpose of contracts +The purpose of the L1 contracts are simple: +- Facilitate cross-chain communication such that L1 liquidity can be used on L2 +- Act as a validating light node for L2 that every L1 node implicitly run +::: + +## Message Bridges + +To let users communicate between L1 and the L2, we are using message bridges, namely an L1 inbox that is paired to an L2 outbox, and an L2 inbox that is paired to an L1 outbox. + +![Alt text](images/com-abs-6.png) + +:::info Naming is based from the PoV of the state transitioner. +::: + +While we logically have 4 boxes, we practically only require 3 of those. The L2 inbox is not real - but only logical. This is due to the fact that they are always inserted and then consumed in the same block! Insertions require a L2 transaction, and it is then to be consumed and moved to the L1 outbox by the state transitioner in the same block. + +### Portals + +When deploying a contract on L2, it is possible to specify its "portal" address. This is an immutable variable, that can be used to constrain who the L2 contract expect messages from, and who it sends to. + +In the current paradigm, any messages that are sent from the L2 contract to L1 MUST be sent to the portal address. This was to get around the access control issue of private execution and is enforced in the kernel. It practically gives us a 1:M relationship between L1 and L2, where one L1 contract can be specified as the portal for many L2, and communicate with all of them, but each L2 can only communicate with a single L1 contract. + +:::warning Comment for discussion +Plainly speaking, we don't need to restrict the recipient of the message to a single address. We could let the contract itself figure it out. We restricted it for reasons above, but we could lift this requirement. As long as the portal address exists, it CAN be used to constrain it like this. + +Further comment on this later. +::: + +### Messages + +Messages that are communicated between the L1 and L2 need to contain a minimum of information to ensure that they can correctly consumed by users. Specifically the messages should be as described below: + +```solidity +struct L1Actor { + address: actor, + uint256: chainId, +} + +struct L2Actor { + bytes32: actor, + uint256: version, +} + +struct L1ToL2Msg { + L1Actor: sender, + L2Actor: recipient, + bytes32: content, + bytes32: secretHash, + uint32 deadline, + uint64 fee, +} + +struct L2ToL1Msg { + L2Actor: sender, + L1Actor: recipient, + bytes32: content, +} +``` + +Beware, that while we speak of messages, we are practically passing around only their **hashes** to reduce cost. The `version` value of the `L2Actor` is the version of the rollup, intended to be used allow specifying what version of the rollup the message is intended for or sent from. + +:::info Why a single hash? +Persistent storage is expensive so to reduce overhead we only commit to the messages and then "open" these for consumption later. We need a hash function that is relatively cheap on both L1 and L2, we chose a modded SHA256 to fit the output value into a single field element. +::: + +Some additional discussion/comments on the message structure can be found in [The Republic](https://forum.aztec.network/t/the-republic-a-flexible-optional-governance-proposal-with-self-governed-portals/609/2#supporting-pending-messages-5). + +Since any data that is moving from one chain to the other at some point will live on L1, it will be PUBLIC. While this is fine for L1 consumption (which is public in itself), we want to ensure that the L2 consumption can be private. +To support this, we use a nullifier scheme similar to what we are doing for all the other notes (**REFERENCE**). As part of the nullifier computation we then use the `secret` which hashes to the `secretHash`, this ensures that only actors with knowledge of `secret` will be able to see when it is spent on L2. + +Any message that is consumed on one side MUST be moved to the other side. This is to ensure that the messages exist AND are only consumed once. The L1 contracts can handle one side, but the circuits must handle the other. + +:::info Is `secretHash` required? +We are using the `secretHash` to ensure that the user can spend the message privately with a generic nullifier computation. However, as the nullifier computation is almost entirely controlled by the app circuit (except the siloing) applications could be made to simply use a different nullifier computation and have it become part of the content. However, this reduces the developer burden and is quite easy to mess up. For those reasons we have decided to use the `secretHash` as part of the message. +::: + +### Inbox +When we say inbox, we are generally referring to the L1 contract that handles the L1 to L2 messages. + +The inbox is logically a multi-set that builds messages based on the caller and user-provided content (multi-set meaning that repetition are allowed). While anyone can insert messages into the inbox, only the recipient state transitioner can consume messages from it (as specified by the version). When the state transitioner is consuming a message, it MUST insert it into the "L2 outbox" (message tree). + +When a message is inserted into the inbox, the inbox **MUST** fill in the following fields: +- `L1Actor.actor`: The sender of the message (the caller), `msg.sender` +- `L1Actor.chainId`: The chainId of the L1 chain sending the message, `block.chainId` + +We MUST populate these values in the inbox, since we cannot rely on the user providing anything meaningful. From the `L1ToL2Msg` we compute a hash of the message. This hash is what is moved by the state transitioner to the L2 outbox. + +Since message from L1 to L2 can be inserted independently of the L2 block, the message transfer (insert into inbox move to outbox) are not synchronous as it is for L2 to L1. This means that the message can be inserted into the inbox, but not yet moved to the outbox. The message will then be moved to the outbox when the state transitioner is consuming the message as part of a block. Since the sequencers are responsible for the ordering of the messages, there is not a known time for this pickup to happen, it async. + +This is done to ensure that the messages are not used to DOS the state transitioner. If the state transitioner was forced to pick up the messages in a specific order or at a fixed rate, it could be used to DOS the state transitioner by inserting a message just before a rollup goes through. +While this can be addressed by having a queue of messages and let the sequencer specify the order, this require extra logic and might be difficult to price correctly. To keep this out of protocol, we simply allow the user to attach a fee to the message (see `fee` in `L1ToL2Msg` above). This way, the user can incentivize the sequencer to pick up the message faster. + +Since it is possible to land in a case where the sequencer will never pick up the message (e.g., if it is underpriced), the sender must be able to cancel the message. To ensure that this cancellation cannot happen under the feet of the sequencer we use a `deadline`, only after the deadline can it be cancelled. + +The contract that sent the message must decide itself how it is to handle the cancellation. It could be that the contract simply ignores the message, or it could be that it refunds the user. This is up to the contract to decide. + +:::info Error handling +While we have ensured that the message either arrives to the L2 outbox or is cancelled, we have not ensured that the message is consumed by the L2 contract. This is up to the L2 contract to handle. If the L2 contract does not handle the message, it will be stuck in the outbox forever. Similarly, it is up to the L1 contract to handle the cancellation. If the L1 contract does not handle the cancellation, the user might have a message that is pending forever. Error handling is entirely on the contract developer. +::: + +##### L2 Inbox +While the L2 inbox is not a real contract, it is a logical contract that apply mutations to the data similar to the L1 inbox to ensure that the sender cannot fake his position. This logic is handled by the kernel and rollup circuits. + +Just like the L1 variant, we must populate the some fields: +- `L2Actor.actor`: The sender of the message (the caller) [also in L1 inbox] +- `L2Actor.version`: The version of the L2 chain sending the message [also in L1 inbox] +- `L1Actor.actor` The recipient of the message (the portal) +- `L1Actor.chainId` The chainId of the L1 chain receiving the message + +In practice, this is done at the kernel layer of the L2, and the message hash is a public output of the circuit that is inserted into the L1 outbox for later consumption. + +:::warning Comment for discussion +Note that while we are letting the inbox populate more values that what we did for the L1 inbox. This is more an opinionated decision than a purely technical one. + +We could let the contract itself populated the `L1Actor` like we did for L1, but we decided to let the kernel do it instead, since access control can be quite tedious to get right in private execution. By having the `portal` contract that is specified at the time of deployment, we can insert this value and ensure that it is controlled by the contract. +If we have a better alternative for access control this could be changed to be more similar to the L1 inbox, which gives better flexibility. +::: + +### Outbox +The outboxes are the location where a user can consume messages from. An outbox can only contain elements that have previously been removed from an inbox. + +Our L1 outbox is pretty simple, Like the L1 inbox, it is a multi-set. It should allow the state transitioner to insert messages and the recipient of the message can consume it (removing it from the outbox). + +:::info Checking sender +When consuming a message on L1, the portal contract must check that it was sent from the expected contract. Since it is possible for multiple contracts on L2 to send to it, it could go horrible wrong if this is not done. +::: + +#### L2 Outbox +The L2 outbox is quite different. It is a merkle tree that is populated with the messages moved by the state transitioner. As mentioned earlier, the messages are consumed on L2 by emitting a nullifier from the application circuit. + +This means that all validation is done by the application circuit. The application should: +- Ensure that the message exists in the outbox (message tree) +- Ensure that the message sender is the expected contract +- Ensure that the message recipient is itself and that the version matches +- Ensure that the user knows `secret` that hashes to the `secretHash` of the message +- Compute a nullifier that includes the `secret` along with the msg hash and the index of the message in the tree + - The index is included to ensure that the nullifier is unique for each message + +## Registry +The registry is a contract that holds the current and historical addresses of the other contracts. The addresses of a rollup deployment is contained in a snapshot, and the registry is to map a version number to a snapshot. Depending on the upgrade scheme, it might be used to handle upgrades, or it could entirely be removed. It is generally the one address that a node MUST know about, as it can then tell the node where to find the remainder of the contracts, which is used for where to look for block publication etc. + + +## State transitioner +The state transitioner is the heart of the validating light node for the L2. Practically this means that the contract keeps track of the current state of the L2, and is to progress this state as valid L2 blocks are received. Also, it facilitates the communication with the L1 inbox and outbox contracts to support cross-chain communication. + +When new blocks are to be processed, the state transitioner is to receive the `header` of the block, and retrieve commitments to the block content (following the same scheme as the rollup circuits) from the Decoder. The header + + + +### Decoder +The state transitioner should be connected to a decoder which addresses the decode validity condition, and feed the outputs into the State transitioner. The action of preparing outputs for the state transitioner should be independent from the processing of a proof, that way allowing for multi-transaction setups. + +In a solo-DA paradigm there will be just one decoder, which can be integrated into the state transitioner, but for multi-layer DA setups, the decoder MUST be a separate contract. + + +## Validity conditions (constraints) +While there are multiple contracts, they are in unison to ensure that the rollup is valid and that messages are correctly moved between the chains. In practice this means that the contracts are to ensure that the following constraints are met in order for the validating light node to accept a block. + +Note that some conditions are marked as SHOULD, which is not strictly needed for security of the rollup, but the security of the individual applications or for UX. + +- **Decode**: + - A commitment to the block content must be computed following the same scheme as the rollup circuits using only PUBLISHED DATA. See **REFERENCE** for more details on the commitment computation. + - A commitment to the L1 to L2 messages must be computed following the same scheme as the rollup circuits using only PUBLISHED DATA. See **REFERENCE** for more details on the commitment computation. +- **Header Validation**: + - The starting state of the block (derived from the header) MUST match the state stored in the contract + - The global variables defined by the header MUST be valid: + - The block number MUST be the next block number + - The timestamp MUST: + - be newer than the previous block inclusion + - not be in the future + - The version MUST be the same as the current version + - The chainId MUST be the same as the current chainId + - The ending state of the block (derived from the header) MUST *replace* the state stored in the contract + - Requires ALL `MUST` constraints to be met +- **Proof validation**: The proof MUST be valid with the public inputs hash + - A single public input hash MUST be computed from the block header, the commitment to the block content and the commitment to L1 to L2 messages. +- **State update**: The state root MUST be set to the ending state value +- **Inserting messages**: for messages that are inserted into the inboxes: + - The `sender.actor` MUST be the caller + - The `(sender|recipient).chainId` MUST be the chainId of the L1 state transitioner + - The `(sender|recipient).version` MUST be the version of the L1 state transitioner (the version of the L2) + - The `content` MUST fit within a field element + - For L1 to L2 messages: + - The `deadline` MUST be in the future, `> block.timestamp` + - The `secretHash` MUST fit in a field element + - The caller MAY append a `fee` to incentivize the sequencer to pick up the message +- **Message Cancellation**: To remove messages from the L1 inbox: + - The message MUST exist in the inbox + - The caller MUST be `sender.actor` + - The current time (`block.timestamp`) MUST be larger than the `deadline` + - The `fee` SHOULD be refunded to the caller +- **Moving messages**: + - Moves MUST be atomic: + - Any message that is inserted into an outbox MUST be consumed from the matching inbox + - Any message that is consumed from an inbox MUST be inserted into the matching outbox + - Messages MUST be moved by the state transitioner matching the `version` of the message +- **Consuming messages**: for messages that are consumed from the outboxes: + - L2 to L1 messages (on L1): + - The consumer (caller) MUST match the `recipient.actor` + - The consumer chainid MUST match the `recipient.chainId` + - The consumer SHOULD check the `sender` + - L1 to L2 messages (on L2): + - The consumer contract SHOULD check the `sender` details against the `portal` contract + - The consumer contract SHOULD check that the `secret` is known to the caller + - The consumer contract SHOULD check the `recipient` details against its own details + - The consumer contract SHOULD emit a nullifier to ensure not double-spending + - The consumer contract SHOULD check that the message exists in the state + +:::info +- We compute a single hash since each public input increase costs of the proof verification. +- Time constraints might change depending on the exact sequencer selection mechanism. +::: + +## Logical Execution +Below, we will outline the **LOGICAL** execution of a L2 block and how the contracts interact with the circuits. We will be executing cross-chain communication before and after the block itself. Note that in reality, the L2 inbox does not exists, and its functionality is handled by the kernel and the rollup circuits. + + +```mermaid +sequenceDiagram + autonumber + title Logical Interactions of Crosschain Messages + + participant P2 as Portal (L2) + + participant I2 as Inbox (L2) + participant O2 as Outbox (L2) + participant R2 as Rollup (L2) + participant R as Validating Light Node (L1) + participant Reg as Registry + participant I as Inbox + participant O as Outbox + + participant P as Portal + + P->>I: Send msg to L2 + I->>I: Populate msg values + I->>I: Update state (insert) + + loop block in chain + + loop tx in txs + + loop msg in tx.l1ToL2Consume + P2->>O2: Consume msg + O2->>O2: Validate msg + O2->>O2: Update state (nullify) + end + + loop msg in tx.l2ToL1Msgs + P2->>I2: Add msg + I2->>I2: Populate msg values + I2->>I2: Update state (insert) + end + end + + loop msg in L2 inbox + R2->>O2: Consume msg + O2->>O2: Update state (delete) + end + + loop msg in l1ToL2Msgs + R2->>O2: Insert msg + O2->>O2: Update state (insert) + end + + R2->>R: Block (Proof + Data) + + R->>R: Verify proof + R->>R: Update State + + R->>Reg: Where is the Inbox? + Reg->>R: Here is the address + + R->>I: Consume l1ToL2Msgs from L1 + I->>I: Update state (delete) + + R->>Reg: Where is the Outbox? + Reg->>R: Here is the address + + R->>O: Insert Messages from L2 + O->>O: Update state (insert) + + end + + P->>O: Consume a msg + O->>O: Validate msg + O->>O: Update state (delete) +``` +We will walk briefly through the steps of the diagram above. + +1. A portal contracts on L1 want to send a message for L2 +1. The L1 nbox populates the message with `sender` information +1. The L1 inbox contract inserts the message into its storage +1. On the L2, as part of a rollup, a transaction tries to consume a message from the L2 outbox. +1. The L2 outbox ensures that the message is included, and that the caller is the recipient and knows the secret to spend. (This is practically done by the application circuit) +1. The nullifier of the message is emitted to privately spend the message (This is practically done by the application circuit) +1. The L2 contract wishes to send a message to L1 +1. The L2 inbox populates the message with `sender` and `recipient` information +1. The L2 inbox inserts the message into its storage +1. The rollup circuit starts consuming the messages from the inbox +1. The L2 inbox deletes the messages from its storage +1. The rollup include messages from the L1 inbox that are to be inserted into the L2 outbox. +1. The outbox state is updated to include the messages +1. The rollup block is submitted to L1 +1. The state transitioner receives the block and verifies the proof + validate constraints on block. +1. The state transitioner updates it state to the ending state of the block +1. The state transitioner ask the registry for the L1 inbox address +1. The state transitioner retrieves the L1 inbox address +1. The state transitioner consumes the messages from the L1 inbox that was specified in the block. Note that they have logically been inserted into the L2 outbox, ensuring atomicity. +1. The L1 inbox updates it local state by deleting the messages that was consumed +1. The state transitioner ask the registry for the L1 outbox address +1. The state transitioner retrieves the L1 outbox address +1. The state transitioner inserts the messages into the L1 inbox that was specified in the block. Note that they have logically been consumed from the L2 outbox, ensuring atomicity. +1. The L1 outbox updates it local state by inserting the messages +1. The portal later consumes the message from the L1 outbox +1. The L1 outbox validates that the message exists and that the caller is the recipient +1. The L1 outbox updates it local state by deleting the message + +:::info L2 inbox is not real +As should be clear from above, the L1 inbox don't need to exist for itself, it keeps no state between blocks, as every message created in the block will also be consumed in the same block. +::: + + +## Future work +- Sequencer selection contract(s) + - Relies on the sequencer selection scheme being more explicitly defined + - Relies on being able to validate the sequencer selection scheme +- Improve public inputs hash computation + - Currently it is using calldata and blocks to be passed along with the proof, but it should be adapted to better allow other DA layers. + - Modularize the computation such that the state transitioner need not know the exact computation but merely use a separate contract as an oracle. +- Governance/upgrade contract(s) + - Relies on the governance/upgrade scheme being more explicitly defined +- Explore getting rid of the specific 1:M relationship between L1 and L2 +- Forced transaction inclusion + - While we don't have an exact scheme, an outline was made in [hackmd](https://hackmd.io/@aztec-network/S1lRcMkvn?type=view) and the [forum](https://forum.aztec.network/t/forcing-transactions/606) \ No newline at end of file