KIPs 71-87: Spending Pools

This is the first of a series of articles aimed at unpacking the contents of KIRA Improvement Proposals 71-87. The first set of these articles will cover Group 1 of these KIPs, detailing the economic incentive structure for staked consensus nodes on KIRA.

This article is about spending pools. The Spending Pool Module is designed for users to create, govern, and interact with spending pools. Spending pools enable token distribution between many accounts in accordance with simple claiming rules, similar to the service provided by Sablier on EVM networks.

How it Works

Any KIRA account can create a spending pool. The creator of the spending pool is its first owner. The owner can then assign other owners to the pool - these can be governance-defined roles or individual KIRA accounts.

Accounts eligible to claim tokens from the spending pool are referred to as beneficiaries - these can also be governance-defined roles or individual KIRA accounts.

Owners can engage in a simple pool governance process, where they vote YES or NO to proposals. Through governance they can modify a spending pool’s parameters, such as assigning new owners, registering beneficiaries, or otherwise editing any of the spending pool’s parameters. Proposals can additionally force the distribution of pooled funds to beneficiaries, should this be required, e.g. before a pool’s fixed distribution rate is updated.

Token Distribution

At any point tokens may be deposited by any account to a spending pool, however only tokens specified by the pool may be deposited to it. After the spending pool has sufficient funds, and has been unlocked by its owners, beneficiaries may claim their tokens.

Spending pools have two modes of token distribution rate to their beneficiaries: static and dynamic.

Static distribution simply tracks the time elapsed between a beneficiary’s previous and current claims, and distributes tokens to the beneficiary according to a fixed rate.

Dynamic distribution recalibrates the pool’s distribution rate according to the amount of remaining funds at the start of each period, to ensure complete allocation of funds by the period’s conclusion. Beneficiaries who do not claim their funds before the period’s conclusion will forfeit them to the pool; any remaining funds are redistributed in the following period. The Staking Collectives module is an example of where this mechanism is necessary, as it works in conjunction with the Spending Pool module to redistribute staking rewards, which are unpredictable by nature.

In addition to each distribution mode, beneficiaries’ claim rates may be further adjusted through a weight system that functions as a multiplier to the pool’s static or dynamic distribution rate for each individual’s claim rate.

Creating a Spending Pool

Any KIRA account can create a spending pool on KIRA. To do so, the account must execute a transaction where the following parameters must be defined for the spending pool being created:

  • $NAME: Name of the spending pool registry.

  • $CLAIMSTART: The exact start time after which tokens can be claimed from the pool, expressed in seconds (Unix time).

  • $CLAIMEND: The exact end time before which tokens can be claimed from the pool, expressed in seconds (Unix time).

  • $RATES: Decimal rate of distribution in the smallest token denomination per second. Format: ,..., e.g: 0.5ukex.

  • $VOTEQUORUM: Pool specific percentage of owner accounts that must vote YES or NO for a proposal to be valid.

  • $VOTEPERIOD: Time in seconds for which a pool proposal must last before being accepted or rejected.

  • $VOTEENACTMENT: Time in seconds before a passed pool proposal is enacted.

  • $OWNERROLES: List of roles controlling the pool via proposals, e.g: 1,2,...

  • $OWNERACCOUNTS: List of account addresses controlling the pool via proposals. Format: kira1yq8l(...),...

  • $BENEFICIARYROLES: List of roles eligible for funds distribution, e.g: 3,4,...

  • $BENEFICIARYROLEWEIGHTS: Respective token distribution rate multiplier for beneficiary roles, e.g:1,1.2,…

  • $BENEFICIARYACCOUNTS: List of account addresses eligible for funds distribution. Format: kira1mig9(...),...

  • $BENEFICIARYACCOUNTWEIGHTS: Token distribution rate multiplier for specific accounts, e.g:0.5,…

  • $DYNAMICRATE: Boolean flag to enable dynamic rate calculation.

  • $DYNAMICRATEPERIOD: Dynamic period in seconds (Unix time).

How this Benefits KIRA Participants

Spending pools are a necessary mechanism used by the Universal Basic Income Module (KIP 72) and the Fee Reward Distributor (KIP 73) to distribute rewards to honest network participants, including consensus nodes. They are additionally useful for a wide range of other general use cases, such as paying salaries, paying out dividends from Staking Collectives, and distributing funds to ILO (Initial Liquidity Offering) participants.

Stay tuned for the next two articles covering KIP Group 1 - UBI & Fee Rewards, and the Staking Module.

Subscribe to KIRA
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.