Owner: @David Rusu

Teleporting Notes Between Zones

For teleportation specification, see:

Private Atomic Cross-zone Transactions (PACTs)

Setting up a teleportation between zone $Z_a$ and zone $Z_b$.

From the sending side:

  1. Executer runs a withdraw tx against $Z_a$ state: $Z_a\text{-STF}(\text{withdraw}(N_a \rarr N_b))$
  2. This produces a cross ledger statement that is included in the zone ptx: $N_a \rarr N_b$
  3. The executor than produces the local ledger proof for $Z_a$’s side of the transfer, namely:
    1. nullifier of $N_a$ has been added to the ledger of the zone $L_a$
    2. $N_b = N_a$ modulo nonce (only one of the executors needs to provide this proof, by convention we can say the sending executor produces this proof)

From the receiving side:

  1. Executor runs a deposit tx against $Z_b$ state: $Z_a\text{-STF}(\text{deposit}(N_a \rarr N_b))$
  2. This produces a cross ledger statement that is included in the zone ptx: $N_a \rarr N_b$
  3. The executor than produces the local ledger proof for $Z_b$’s side of the transfer, namely:
    1. commitment of $N_b$ has been added to the ledger of the zone $L_b$

Screenshot 2024-11-18 at 1.35.02 PM.png

Verifying the Teleportation

For each cross ledger statement $N_x \rarr N_y$ appearing in the bundle, verify that

  1. there exists a ledger proof from zone $Z_x$ that adds $nf(N_x)$ to $L_x$
  2. there exists a valid proof that $covenant(N_x)$ is satisfed