Prize Sponsor: Aleo
Prize Architect: Aleo
Prize Reward: 3M Aleo Credits
Proof of Succinct Work (PoSW) is a novel work-based consensus algorithm for blockchains where the work that is proven is the generation of a SNARK proof. Miners compete to provide a valid solution to the PoSW puzzle by repeatedly generating SNARK proofs until they satisfy a given difficulty level provided by the protocol.
PoSW_Miner(difficulty, state_root, witness)
proof_preprocess = Marlin_Prover_Preprocess(witness)
while(Hash(coinbase_proof) > difficulty)
seed = Hash(state_root || nonce)
coinbase_proof = Marlin_RandProver(seed, proof_preprocess)
return coinbase_proof
We define each of the above variables and methods below:
difficulty
: updated based on the chain update rule according to the consensus algorithm
state_root
: root of the state tree of the latest block
witness
: user data required by the output predicate in order to credit the current miner
proof_preprocess
: output of the first Marlin round over the output predicate, consisting of:
-
com(w)
: KZG commitment to field elements constituting the witness -
com(z_A), com(z_B)
: KZG commitments to the z_A, z_B polynomials -
MM::ZK flag set to FALSE
seed
: commitment to the current state and nonce
coinbase_proof
: Marlin proof of the output circuit certifying the generation of a new coinbase output crediting the miner address provided in witness
Hash
A cryptographic hash function, herein initialized as SHA256.
Marlin_Prover_Preprocess
This method is defined as the compilation of the first round of Marlin over the output predicate circuit and depends only on the witness elements provided by the miner.
Marlin_RandProver
This method takes the output of Marlin_Prover_Preprocess and computes the rest of the rounds of the Marlin protocol in order to complete the generation of a valid proof for the given output circuit. Before the round computations begin, seed is added to the RNG so that all of the computation performed commits to seed from the beginning.
The objective of this contest is to produce the highest amount of PoSW proofs within a set duration of time. The target block time is 20 seconds, so the objective function will be the total number of proofs that are computed within a fixed number of 20 second time intervals.
For each block interval, the PoSW_Miner
method will be executed with the same difficulty and witness values, while state_root
will be randomly resampled. Thus, optimizations to both Marlin_Prover_Preprocess
and Marlin_RandProver
will contribute to the final objective.
The input variables (difficulty, state_root, witness
) and nonce
will be chosen by the testing method, and cannot be hardcoded or chosen by participating parties.
Although the optimization objective will be based on a fixed set of inputs, all valid solutions should provide correct output proofs for any set of input variables.
June 1 - Final competitor selection
June 10 - Competition begins
July 25 - Mid-competition IPR
September 10 - Deadline for submissions
October 1 - Winners announced
Competitors for the prize will be selected based on their prior documented experience and academic achievement. Submissions will be analyzed for both correctness and performance.
All proofs that are generated must be properly formed and pass verification. Submissions that fail any test cases will be judged as incorrect and lose the opportunity to win the prize.
Scores will be tallied as the total number of PoSW proofs within a twenty-second time period, divided by the total cost of the hardware setup.
Competitors can use any hardware available via HPC cloud-provider CoreWeave.
Prizes will be distributed from the total Prize Reward according to a Rank-Weighted Performance-based scoring system. The baseline score of each competitor's solution will be measured as the total number of proofs generated over a 20-second period, with an additional Rank-Based multiplier applied to each competitor's total to determine their final score and resulting Prize Payout (see below). Additionally, there will be a minimum benchmark of 500 proofs in a twenty-second period that competitors must achieve in order to be eligible for prize rewards. Prizes will be given out in good faith and in the sole discretion of the prize committee.
Total Prize Reward: 3M Aleo Credits
Benchmark Minimum: 500 Proofs/20-seconds
RANK | Proofs | Rank Multiplier | Weighted Score | Prize Share | Prize Payout | |
---|---|---|---|---|---|---|
Alice | 1st | 1500 | 4x | 6000 | .55 | 1,650,000 |
Bob | 2nd | 1450 | 2x | 2900 | .26 | 780,000 |
Carrol | 3rd | 900 | 1.5x | 1350 | .12 | 360,000 |
Dave | 4th | 600 | 1x | 600 | .05 | 150,000 |
Eve | 5th | 450 | 1x | 0 (below min) | 0 | 0 |
SUM | 4900 | 10850 | 1.00 | 3,000,000 |
-
Weighted Score = Total Proofs * Rank Multiplier[1]
-
Prize Share = Weighted Score / SUM of all Weighted Scores
-
Prize Payout = Prize Share * Total Prize Reward
[1] The Rank Multipliers to be used will not be finalized until the number of competitors is finalized, but will be chosen to enable a distribution curve roughly proportional to the example shown given the solutions provided.
All submission code must be open-sourced at the time of submission. Code and documentation must be made available under the GPL 3.0 license.
If there are any questions about this prize, please contact Alex at Aleo: zprize@aleo.org