The idea is that participants submit action UTXOs and then single "batcher" (as referred in some DEXes) runs those "actions" by submitting transactions that can spend state UTXO. The difference form existing batchers is that batcher - is leader picked among participants in trustless manner.
Each participant builds and submits "action" transaction that creates UTXO at custodial script
address.
flowchart LR
subgraph blockchain
PS["protocol script\n--state UTXO--"]
CS["Custodial script"]
end
subgraph clients
a -- action UTXO a--> CS
b -- action UTXO b --> CS
c -- action UTXO c--> CS
end
Custodial script
holds action UTXOs.
flowchart LR
subgraph blockchain
PS["protocol script\n--state UTXO--"]
CS["Custodial script\n--action UTXO a--\n--action UTXO b--\n--action UTXO c--"]
end
Clients run leader selection.
flowchart LR
subgraph clients
A["a"]
B["b"]
C["c"]
A <--> B
C <--> B
A <--> C
end
Assuming a
was selected as leader, leader pulls action UTXOs from custodial script
.
flowchart LR
subgraph blockchain
PS["protocol script\n--state UTXO--"]
CS["Custodial script"]
end
subgraph clients
CS -- --action UTXO a--\n--action UTXO b--\n--action UTXO c-- --> A["a"]
B["b"]
C["c"]
end
a
builds chain of transactions against state UTXO
flowchart LR
subgraph a
CHAIN["Chain of Transactions"]
UTXOS["--state UTXO a--\n--state UTXO b--\n--action UTXO c--"]
UTXOS --> CHAIN
end
Leader submits chain of transactions to apply changes to protocol state UTXO.
flowchart LR
subgraph blockchain
PS["protocol script\n--state UTXO--"]
CS["Custodial script"]
end
subgraph clients
a -- "Chain of Transactions" --> PS
b
c
end
Chain of Transactions
sequenteually updates state at protocol script
address.
- How participants can be sure that leader performs honest actions, as leader builds transaction on his own?