VeeDo Time-Lock to the Rescue
Yael Doweck
Product & Research at StarkWare
@YaelDoweck
Time-Lock as a Measure to Eliminate MEV
?
Introduction to VeeDo
VeeDo Time-Lock
f(x, T) {
Repeat T times:
x ⇽ (x1/3 + C) mod p
Return (x, T) }
p is a 126-bit prime
1 multiplication ~ 4ns
Sloth [LW 15, BBBF 19]
VeeDo Time-Lock Commitment
VeeDo to the Rescue!
Two approaches:
Two approaches:
Users send commitments to the mempool
Alice commits to value X
Carol commits to value Y
Bob commits to value Z
Mempool
Time-locked X
Time-locked Y
Time-locked Z
Each commitment has an expiration-time (smaller than time-lock delay)
Commitments are included in the blockchain
Miner
Submits a block containing time-locked transactions
Ethereum
Block:
Time-locked X
Time-locked Y
Time-locked Z
MEV is minimized
Miner
Submits a block containing time-locked transactions
Ethereum
Block:
Time-locked X
Time-locked Y
Time-locked Z
Time-locked transaction are ordered on-chain,
MEV is unknown
An operator/s unlocks the time-locks
Miner
Submits a block containing time-locked transactions
Computation Operator
Get time-locked transactions
and reveal them by performing a long serial computation
Ethereum
Block:
Time-locked X
Time-locked Y
Time-locked Z
The operator submits the proof on-chain
Computation Operator
Verifier SC
X is valid=1
Y is valid=1
Z is valid=1
Submits a computation proof
The operator/s submits conditional transactions
Mempool
conditional X
conditional Y
conditional Z
Computation Operator
The miner checks each time-lock computation
Miner
Query condition on X
Query condition on Y
Query condition on Z
Verifier SC
X is valid=1
Y is valid=1
Z is valid=1
Creates a block with the verified values
Mempool
conditional X
conditional Y
conditional Z
Miner
Block:
conditional X
conditional Y
conditional Z
Block is finalized, anyone can verify it
Miner
Ethereum
Block:
conditional X
conditional Y
conditional Z
Verifier SC
X is valid=1
Y is valid=1
Z is valid=1
Block is finalized, anyone can verify it
Miner
Ethereum
Block:
conditional X
conditional Y
conditional Z
Verifier SC
X is valid=1
Y is valid=1
Z is valid=1
Revealed transactions must be in the same order as the time-locked transactions
Two approaches:
The operator/s computes the time-locks
Sequencer
List:
Time-locked X
Time-locked Y
Time-locked Z
Sequencer SC
Send a list commitment (hash)
Commitments as calldata
Computation Operator
Get commitments list
and compute time-locks
The operator submits the proof
Logic SC
Computation Operator
Sequencer SC
Verifier SC
Submits the computation proof
Check that the sequence corresponds to the list commitment
Summary