1. Purpose

The purpose of this document is to outline the steps required to pay the SONs for their contribution to the Peerplays network.

2. Scope

The functional requirement listed in this document will be limited to the payment portion of the SON. This will outline the required steps to pay the SONs for the functions performed by them on the Peerplays blockchain. Also outlined here will be the sequence in which the required steps will be performed including:
  • any interactions with the user.
  • validations to ensure complete and accurate information gathering.

3. Background

The Bitcoin Sidechain functionality has been implemented in the Peerplays blockchain but it doesn't take into account, the change of SONs. As per the current implementation of Sidechain, a multisig bitcoin wallet will be created on the bitcoin blockchain to hold the bitcoins that have been deposited into the pBTC accounts of the Peerplays users. Every SON will have a bitcoin transaction signing key for this multisig bitcoin wallet and will be required to sign any withdrawal transaction. When a SONs changes, the transaction signing key of the outgoing SON needs to be removed from the multisig bitcoin wallet and the key of the incoming SON needs to be added. The suggested proposal is to make the Sidechain code available as a plugin and assign the responsibility for running the sidechain code to separate nodes called the Sidechain Operating Nodes (SONs).

4. Process Overview

Described here is the process to pay the SONs on the Peerplays Blockchain.

5. Flow Diagram


6. Context

The SON operators will be paid in PPY from the payment pool set up specifically for payments to SONs. This pool will be replenished by depositing a percentage of all the transaction on the Peerplays network. This percentage should be a chain parameter so that it can be changed. The fee will be distributed at the Maintenance intervals based on transactions signed and weight of voting for each SON. Recommended SON payment is 200 PPY daily (this limit is controlled by `SONS_DAILY_MAX_REWARD`).

7. Requirements

7.1 Supported Transaction Types
All operations performed by SONs must be tallied and paid according to budget and defined payout procedure (as described in sections below).
System must include a library (global parameters) of configurable fee amounts fee amounts associated with each operation. Library must track each operation, its type, fee amount and currency in which fee is charged (PPY by default). Fees are set and amendable by committee members in accordance with committee member procedures to update global parameters.
Operations commonly performed by SONs are as follows:
  • asset_issue_operation
  • asset_reserve_operation
  • proposal_create_operation
  • proposal_update_operation
  • proposal_delete_operation
  • son_create_operation
  • son_update_operation
  • son_delete_operation
  • son_heartbeat_operation
  • son_report_down_operation
  • son_maintenance_operation
  • son_wallet_recreate_operation
  • son_wallet_update_operation
  • son_wallet_deposit_create_operation
  • son_wallet_deposit_process_operation
  • son_wallet_withdraw_create_operation
  • son_wallet_withdraw_process_operation
See Risks section for considerations regarding fee amounts and their implications on financial viability of SON.
7.2 Collecting Fees
All operations require a fee to be collected and paid to the network
Fee collection is determined by transaction type:
  1. 1.
    Core asset transaction fees are deducted from payer's account
  2. 2.
    UIA (pBTC) transaction fees are converted to core asset using base exchange rate (note: bBTC to BTC is 1:1)fee mus
In a scenario where user has 0 PPY, fee must be collected from fee_pool.
7.3 Determining payout
Payout must be determined by the number of transactions verified by a node. Higher availability nodes participate in more transactions and therefore receive higher payout.
SONs are paid based on % ratio between total_transactons_per_day and SONS_DAILY_MAX_REWARD, where SON's % share of daily transactions determines what % of SONS_DAILY_MAX_REWARD is paid.
Payout happens only during SON maintenance interval, therefore payout is configurable based on the payment interval and can be configured to happen once every x maintenance intervals.
7.4 Payment Pool
Payments to SONs are stored inside son_budget which functions similarly to witness_budget. Specifically, son_budget accumulates transaction fees collected by peerplays network. As described above, payout happens during the maintenance interval .
SONS_DAILY_MAX_REWARD must initially be set to 200 PPY. We may to have to change this as per market realities etc. Currently BTC is the only supported cryptocurrency.