From BiblePay Wiki
Jump to: navigation, search

By: R Andrews

Date: February 5th, 2019

Subject: Proof-of-Giving for Beginners

How do we explain Proof-of-Giving to a new user?

POG is a mining algorithm in BiblePay that rewards those who Tithed to the Orphan foundation from the wallets internal pool reward system.

The sum of tithes sent into the orphan foundation from your home wallet over the last ~24 hours (205 blocks) establishes your tithe_weight in relation to other users.

Once in the pool, you are certain to receive a pool reward in the next pog superblock (if you have tithe_weight greater than zero).
Note that the current POG difficulty determines your eligibility to tithe to the foundation. (When difficulty is high, the total tithe amount is restricted, and POG requires more coin-age).

The block solver (the reaper) receives 20% of the block reward, while the remaining 80% is split by tithe_weight with the pool recipients.

Payment Example:
The POG reward occurs once per day, and all POG POOL recipients are paid at the same time (once every 205 blocks).

Let us assume we have 5 POG pool participants who tithed 10, 20, 30, 40, and 50 bbp respectively over the last 205 blocks (roughly 24 hours).

Let us assume the daily reward is 82K bbp (this is very close to the actual amount BBP will pay daily as of Feb 2019 with PODC + POG enabled):

Daily Block Distribution - Reward:
Sower 1 reward: 4592 bbp
Sower 2 reward: 8528 bbp
Sower 3 reward: 13120 bbp
Sower 4 reward: 17712 bbp
Sower 5 reward: 21648 bbp
Total: 81,648 BBP

In POG phase 1, each heat mined reward is approx. 100~ BBP (this is 20% of the reward, the remaining 80% of the heat mined reward goes into the POG pool).
The financials currently look like this as of February 2019:
Each block gross reward is ~15,400 bbp, with 70% being held back for the monthly budget and the PODC payments (10,800 bbp) leaving 4,800 bbp.
(Note that PODC payments are still 1 million BBP per day in phase 1). Out of the remaining 4,800 bbp, 4,300 is given to the sanctuary, leaving 500 BBP per heat mined block (with 20% given to the reaper - this is approx. 100 bbp, and the remaining 400 bbp of the heat mining rewards going into the POG pool).

The POG pool accumulates a daily reward of approx 82,000 bbp (all values are deflationary (this is 205 * 400bbp) ).
This amount is paid out once per 205 blocks as the POG pool reward.
To limit daily foundation tithes (this is primarily to prevent dilution of our price and to keep monthly charity expenses in-line with our emission schedule), the POG difficulty algorithm governs the amount of tithes accepted per day. The Tithe Cap is currently set at 50,694 per day (see rpc command titheinfo).
This means that the foundation will receive approx. 1.52MM BBP per month in tithes that will be liquidated for orphan expenses.

POG Difficulty Algorithm

The POG difficulty fluctuates between 0-65535, with 65535 being the hardest and 0 being the easiest. The difficulty is based on how many global tithes have been received over the last 24 hours. The pool has a maximum tithe per day cap (of approx. 100,000 - see the PoG wiki for the exact deflation amount). As the pool gets more "full" and approaches its maximum tithe amount allowed per day, difficulty will be increased. On the other hand, if the pool is empty, difficulty will be decreased.

The difficulty determines the minimum age of a BiblePay Coin (in your wallet) will be required to be allowed to Tithe. In this way, tithing is not "easy", you must have a coin meeting the minimum age and amount. You are also limited to how much you are allowed to tithe. These three parameters will be available on the UI for easy decision making.

Explanation of the mechanics of POG Difficulty:
There are 3 components to the POG difficulty algorithm:

  • max tithe amount,
  • min coin amount, and
  • min coin age.

As the difficulty level increases, the max tithe amount decreases, the min coin amount increases and the min coin age increases. This makes it harder for an individual to tithe.

  • min_coin_age: This is the minimum age in days a coin is eligibile for tithing.
  • min_coin_amount: This is the minimum coin amount eligibile for tithing.
  • max_tithe_amount: This is the maximum allowed tithe amount.

The POG pool is always 205 blocks wide (24 hours), meaning the tithe_weight's in the pool span from the current block back 205 blocks before the current block.

As an example, with POG difficulty at 0, you may tithe any amount between .05 and 300 bbp, and any coin in the wallet (of any age) or amount is applicable to be tithed. However, if difficulty is 32,000, your individual coin must have an age of 30 days, you may not tithe more than 150 bbp, and the minimum coin value must be > 12500.

See the difficulty chart below:

.50 .01 1 300
650 6 2500 270
32767 30 12500 150
60000 54 22500 30

POG Usage Manual

To participate, modify the biblepay.conf with the following setting:
nickname=your_nickname (this is used so you can identify yourself easily, others can see your nickname in the pool also) This tells biblepay that you are willing to spend BBP on tithes when tithing is profitable.

Three ways to tithe: GUI, RPC, or Auto.

To tithe from the GUI:
Click Send Money, check the Tithe checkbox. The parameters will light up in red. If your tithability is "Yes", enter an amount less than the maximum tithe amount and click Send.

To tithe from the RPC: Type: tithe amount If you have coins that meet the specifications, your tithe will send and a txid will be presented.
Auto: If your wallet is running, tithe=1 is set, this means your internal miner will be running. When the miner finds coins (once every 4 hours) applicable for tithing, it will send a tithe to the foundation.

Any of these methods will enter you into the POG Pool.


To see the difficulty parameters, type 'getmininginfo'.


From the Gui, click on POG Pool from the toolbar menu. From the RPC, type 'pogpool'.


tithe tithe_amount min_coin_age min_coin_amount:

This command searches the wallet for coins older than min_coin_age and of greater value than min_coin_amount and tithes that single coin in an amount of "tithe_amount".

exec getdimensionalbalance min_coin_age min_coin_amount: This command scans the local wallet for coins older than min_coin_age and min_coin_amount, and creates a report based on age and value. You can use this command for debug purposes in testnet to find coins that may be applicable for manual tithing. (And for debugging current tithe levels).

pogpool: You will see the user nickname, public receive address, tithe amount, tithe_height. You will also see the pool totals, and the highest tithe and the amount of personal tithes you have contributed.

exec bankroll quantity denomination: This command allows you to generate 'quantity' of tithing BBP notes of 'denomination'. Then you can let them age, and use them for tithing later. Example: exec bankroll 50 5000, this command will spend 250,000 bbp (back to yourself), and you will receive 50 quantity of 5000 bbp notes. At this point they will age, and they can be used for tithing. Note: We mark the bank notes with a 1millibbp suffix so that we can modify podc_update to skip spending these in the future.

Happy Giving, Generous BiblePayers!