Strawman Network Name: ProofChain Strawman Token Name: ProofBucks A decentralized marketplace to buy proofs and earn tokens by proving (or disproving) theorems, on the ethereum blockchain. Goal: to create a utility token called ProofBucks that anyone can spend on ProofChain to incentivize the entire world to publicly publish a proof of any mathematical theorem. The theorem provers may be humans or machines or any combination. The ProofChain network doesn't care who proved it, only that it can be mechanically checked. The proof requesters may be mathematicians or machines or code IDE's, or compilers, or any other system that can benefit from having a proof solved. Incentivize the world to prove things that no currently known algorithm can quickly find a proof for, and develop new mathematical techniques, thus enhancing human knowledge. The ethereum blockchain is kind of like a public append-only database. The following data structures will be stored on the ethereum blockchain: * AccountBalances: mapping of address to account ProofBucks just like a normal ethereum token. * BaseAxiomSets: a public append-only unique list of sets of axiom. (Each BaseAxiomSet gets an big integer ID. IDs simply count upward like an SQL table) * No particular base assumption are required for any proof request. A proof may be requested using ZFC + first order logic foundational assumptions, or ZF, or anything else. * Each ProofRequest has the following parts stored permanently and must be provided when posted: * Each BaseAxiomSet is a list of axioms. The structure of these is TBD, but probably involves a tree-like data structure representing some kind of statement. * An ethereum transaction posting a new BaseAxiomSet must include a transaction fee proportional to the size of the data to be stored. * Defintions: a public append-only unique list of symbol definitions that proofs and proof requests can reference anywhere in the body. (Each symbol gets an big integer ID. IDs simply count upward like an SQL table) * An ethereum transaction posting a new Defintion must include a transaction fee proportional to the size of the data to be stored. * A definition has these fields: * Definition ID * BaseAxiomSet - each definition is valid within the scope of one BaseAxiomSet * Defintion value: format TBD, likely a syntax tree that references other definitions or axioms. * ProofRequests: a public append-only unique list of theorems who's proof has been requested. * An ethereum transaction posting a new ProofRequest must include a transaction fee proportional to the size of the data to be stored. * Each ProofRequest has the following parts stored permanently and must be provided when posted: * A reference to an existing BaseAxiomSet that the theorem must be proved using. * The statement to be proven. The structure is TBD, likely is a tree or list of syntax trees, referencing symbols from a BaseAxiomSet * ProofBounties: a set of current bounties available to theorem provers. * An ethereum transaction posting a new ProofBounty must include a tx fee, plus deposit all the ProofBucks for the reward. * Anyone can post a new proof bounty in any amount, even to a proof request they didn't create or a theorem that's already been proved before. So the community can effectively crowdfund a proof if there's enough interest. * Each ProofBounty has the following parts and must be provided when posted: * A reference to the ProofRequest ID to be proven. * Reward amount in ProofBucks. (To be deducted from the tx sender's AccountBalance) * A list of ProofConditions included inline to specify requirements for the proof to earn the bounty, or else the bounty will not be given out: * SolveWithinBlocks: number of ethereum blocks from now that the proof must be posted within. If no proof claims the bounty before this number of blocks, the bounty is returned to the requester (minus) fees. * Thus requesters are protected to a degree from losing ProofBucks due to posting a proof that no-one can solve in a reasonable time. * MaximumProofSize: unit TDB, some measure of the size of the proof to allow requesting a size-limited proof, to incentivize short elegant proofs if desired. * Other ProofConditions TBD, there may be other properties about a proof that can be specified. * If the theorem has already been proved before and has met the MaximProofSize and other properties, a ProofRequest with looser ProofConditions will be rejected by the smart transaction and not posted. * Proofs: a public append-only list of proofs that are accepted by the smart contract. * The smart contract rejects the transaction to post the proof if the proof cannot be verified or it claims a bounty that it didn't earn. * Anyone can post a new proof. Even if the theorem has already been proved. Whether they earn any bounty is another matter. * Submitting a new Proof requires attaching a special transaction fee similar to Ethereum gas: * It is the submitters responsibility to provide the ethereum network with enough fee to run computations to fully verify the proof and the transaction. * Thus incentivizing provers to craft easily verifiable proofs, b/c they can keep more of the bounty. * Each Proof has the following parts and must be provided when posted: * ProofRequest that a solution is being posted for. * List of statements. Format TBD. * ProofResult: the logical result that the user has proven. One of the following: *ProvedTrue *ProvedFalse *ProvedIndependentOfAxioms *Possible other types of results TBD. * Any result will earn the same bounty. No bias is allowed towards any sort of result. * Upon submitting a new Proof, after logical validation of the proof, the contract checks what, if any, bounties have been earned. * Upon earning a bounty, the sender's AccountBalance is incremented and the bounty is removed from the current bounty set (or marked completed) * ProofHints: a public free-form hint that references a ProofRequest and includes information supposed to be helpful for theorem provers. * The purpose of providing a hint is to increase the chance that a theorem will be proved. The proof requester wants to have their theorem proved, and this is how they can provide help. * Anyone can post a new hint. But they must include a fee proportional to the size of the data posted. * Data included: ProofRequest referenced. Free form data. Any binary data that is deemed helpful to provers may be included here. No restrictions are imposed, but a link to a discussion of the conjecture in literature would seem appropriate.