Consensus and How to Stake

Proofgold uses the litecoin blockchain as an integral part of its consensus algorithm, and so proofgold must be run in conjunction with a litecoin node. A node "mines" a proofgold block by burning some litecoins in a specially formed litecoin burn transaction. This burn transaction records information about the state of the proofgold blockchain. Proofgold blocks may also be staked by combining some proofgold bars in the node's wallet with some burned litecoins. A difficulty adjustment algorithm targets one proofgold block per hour.

There is a hard limit of 21 million on the number of proofgold bars that will be created. This is accomplished by issuing a block reward of 50 bars for the first 210,000 blocks, with the reward halving every 210,000 blocks. Each block has a special coinstake transaction sending half the block reward to the staker of the block and the other half as a bounty to a pseudorandomly determined proposition. This bounty can be claimed by the first person (presumably with an automated theorem prover) to publish a proof of the theorem or a proof of its negation into the proofgold blockchain.

For more details on reward bounty propositions, see here.

For more information on how to publish proofs, see here.

The following steps explain how to set up a node to stake.

  1. Run a litecoin node with txindex=1 and RPC support. The litecoin.conf file should look something like this:
  2. Create a litecoin segwit address, e.g., using an RPC call like this:
    getnewaddress pfg bech32.
    Send some litecoins you intend to burn to this segwit address.
  3. Install proofgold.
    See the proofgold README for more information on this step.
  4. In the proofgold data directory (probably .proofgold in your home directory) put a proofgold.conf file with lines like these:
    If you run proofgold behind tor you may need to tell proofgold to use socks and to use curl with socks. For example you can include these lines in the proofgold.conf file:
  5. Run proofgold.

Some important proofgold commands: