This thread is to discuss how we can implement proof-of-burn.
the notes below are imported from https://hackmd.io/t-OQFK3mTsGfrpLCqDrdlw
What is Proof-of-Burn
How does proof-of-burn work?
We describe here a basic prototype of proof-of-burn. It requires uploaders to have registered on-chain and it has important privacy concerns that future revisions might seek to address.
Every uploader must register on-chain and deposit a stake that is locked forever / burned. The registration also contains a date range indicating when this stake is set to expire.
When uploading new chunks to the Swarm, each chunk is given a signed receipt indicating which registered deposit this chunk belongs to.
Nodes want to compare the rate of burn (wei / second) for each chunk that they encounter.
Since it is not feasible to burn a deposit for every chunk, we proceed probabilistically. Upon receiving a chunk, a node checks how many other chunks it knows about that have the same signature (Q: and maybe what the radius of that set is?) and thereby estimate the total number of chunks in the Swarm that are signed by that key. This is possible under the assumption that chunks are evenly distributed by hash. (This is not attackable, because generating chunks which cluster in a particular hash range only make the resulting calculation less favourable to the uploader ).
Knowing the approximate total number of chunks signed by a given key and the total deposit and timeframe registered on chain allows the node to calculate the wei/s burned on this chunk.
[Note: there could be multiple signatures for each chunk. In this case we add the wei/s].
What does proof-of-burn achieve?
spam protection: During syncing nodes only accept chunks above some minimum of wei/s, starting at 0, but rising as chunks are encountered…