Bonus Design

Bonus Design

Bonus have been added with the release of everiToken 3.0 in February 2019. It's a powerful, flexible, and convenient element to combine with existing features. It’s mainly designed for the purpose of distributing profits to its stakeholders or shareholders according to a set of rules. There are two types of Bonuses supported now according to the different ways of collecting profits: passive bonus and active bonus.

Passive Bonus

For the passive bonus, the profit is collected during every transaction within one fungible token. So, if the managers of one fungible token decide to set a passive bonus to it, then in every transaction not only EVT will be charged as a fuel, but also an additional fee for the fungible token will be charged as well.

There are several options that control the actual rate of fees in one transaction. Here's a table summarizing the options:

Option Name Description
rate Rate of fees according to the amount of transaction.
base_charge The optional addition fees outside the rate for every transaction.
charge_threshold (optional) The maximum of the total fees.
minimum_charge (optional) The minimum of the total fees.
methods Charge method for different actions, transferft and everipay are supported currently. And within_amount and outside_amount are the possible values for each action. If not specified, within_amount will be used as default value.
dist_threshold Only the profit collected is large than this value, can the managers start one round of distribution.

Here's pseudo-code showing the charge calculation.

charge = base_charge
charge += amount * rate
if charge_threshold:
    charge = max(charge, charge_threshold)
if minimum_charge:
    charge = min(charge, minimum_charge)
return charge

For the methods, with_amount means that the charge will be included in the amount, so the payee will receive (amount - fees). outside_amount is the opposite; A payee will receive the amount, but payer will pay (amount + fees).

Active Bonus

Active bonus is much simpler than passive bonus. The person who wants to distribute profit is required to put that profit into the bonus pool within a period of time.

Distribute Rules

Multiple levels of distribution rules are supported on everiToken. Three types of distribution rules are supported now:

Name Amount Received
fixed Fixed amount of tokens
percent Specific percent of amount of tokens
remaining_percent Specific percent of the remaining amount of tokens (Amount minus fixed and percent rules used)

For example, if the total amount of profit is 10,000.00 S#123, and if it's defined by 5-levels of rules, then:

  1. fixed rule with 500.00000 S#123: Receiver #1 will get 500.00000 S#123.
  2. percent rule with 10%: Receiver #2 will get 1000.00000 S#123.
  3. percent rule with 5%: Receiver #3 will get 500.00000 S#123.
  4. remainning rule with 20%: Receiver #4 will get 1600.00000 S#123.
  5. remainning rule with 80%: Receiver #4 will get 6400.00000 S#123.

There are two types of rules that currently apply to receivers:

Name Description
address The receiver represents one valid address and will receive all the amount.
ftholders All of the stakeholders of one specific fungible token will receive the profit. The amount is according to each stake of that fungible's total supply. And threshold can also be used here to filter the holders with the minimum stake required.

For the ftholders, the stake of fungible tokens here is not limited to the fungible tokens used for profit, but every fungible token registered on everiToken is acceptable. It's possible to issue one bonus token for profit distribution, and it will benefit from the transparency, reliance, and liquidity provided by everiToken.

Examples

Please refer to the ABI Document for more details. Below is one example json defines passive bonus for an FT with a symbol ID of 5.

Click to see full code example
{
    "sym": "5,S#5",
    "rate": "0.01",
    "base_charge": "0.00000 S#5",
    "charge_threshold": "1.00000 S#5",
    "minimum_charge": "0.01000 S#5",
    "dist_threshold": "50.00000 S#5",
    "rules": [
        {
            "type": "fixed",
            "data": {
                "receiver": {
                    "type": "address",
                    "data": "EVT6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV"
                },
                "amount": "10.00000 S#5"
            }
        },
        {
            "type": "percent",
            "data": {
                "receiver": {
                    "type": "ftholders",
                    "data": {
                        "threshold": "1.00000 S#1"
                    }
                },
                "percent": "0.3"
            }
        },
        {
            "type": "remaining_percent",
            "data": {
                "receiver": {
                    "type": "address",
                    "data": "EVT6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV"
                },
                "percent": "1"
            }
        }
    ],
    "methods": [
        {
            "action": "transferft",
            "method": "outside_amount"
        },
        {
            "action": "everipay",
            "method": "within_amount"
        }
    ]
}