Terrible Interactive PoSt
Intuition: A miner submits a PoSt proof at every block i
, using the seed at block i-1
.
Problem: The on-chain footprint is 192bytes * number of miners
, this is completely impractical.
Next steps: Can we avoid everyone submitting a proof at every block?
Improvement 1: We can submit a commitment to the proof at every block, and generating a snark that proves that all the commitments open to correct proofs! (The on-chain footprint is still very impractical 32bytes * number of miners at every block
)!
Improvement 2: We can submit commitments to the proof at every block to a special node which collects all the commitments and puts them in a merkle tree. At the end of the proving period a miner generates a snark showing that at every block they had a valid inclusion proof for their proof. (The on-chain footprint will be a minimum of 32 bytes
for the entire network!)
PoSt Stamps
- Stamp: A PoSt stamp
Stamp_t
is a commitment to an online PoRep proof (a single PoSt epoch). - Aggregator: A PoSt Aggregator is a special node that collects
Intuition:
- At every block:
- Each miner runs a single PoSt step (online Proof of Replication) using the seed from the previous block
- Each miner submits a stamp to the Aggregator
- The Aggregator build an accumulator and sends an inclusion proof to each miner
- After the proving period:
- Each miner submit a SNARK that prove that there is a commitment at every block (by proving that it's included in the accumulator block) and that every commitment opens to a correct Proof of Spacetime step
New problems:
- What if the aggregator is offline? Ideally each miner sends their PoSt to multiple aggregators and multiple aggregators submit the proofs on chain.
- What's the incentive for an aggregator to aggregato proofs? Unclear!
- What if an aggregator does not include a proof? A miner should make sure they send it to multiple aggregators :(