Owner: @Álvaro Castro-Castilla

This document outlines the details of atomic sovereign inter-zone operations.

Problem to Solve

The most important objective is to enable synchronous composability of operations across multiple zones. In addition to this, we want to model the system in a general way to support privacy-preserving payments and general Zk verification.

Protocol Overview

For this purpose, we will combine 3 components: partial transactions, matching and proof aggregation.

In this protocol we assume the following:

In this document, we will start with a direct “naive” implementation, and then we will proceed to simplify it. Then we will generalize it.

A Synchronous Transfer Between Zones

Transfers between zones are comprised of two parts: a withdrawal and a deposit. The objective is to do them atomically. However, note that these operations are not necessarily atomic either, so we will start by making them atomic, and then composing them together.

Note that commitments and nullifiers are just a privacy-preserving encoding of UTXO, so we will refer to them in this manner for simplicity.

Withdrawing

This is the base protocol of a withdrawal:

  1. $z_A$ has minted asset $X_A$ to Bob. In other words, Bob owns certain amount of $X_A$. Bob creates a transfer transaction to the bridge contract (not a partial transaction).
  2. This transaction is sent to the bridge $B_A$, which is a native program (in $z_A$'s VM) set up by $z_A$ to bridge in/out of Nomos CL.
  3. After the tx is consumed at the Zone-side of the bridge, the CL-side of the bridge $B_{CL}$ reads the operation on the other side.