Avatar
Friedger | Blog
August 30, 2023
·
8 min read

Transparent Reward Distributions

Transparent Reward Distributions

Fast Pool is a non-custodial stacking pool where all participants are pool operators. There is only one privileged reward administrator. The pool operators can lock the delegated STX tokens, extend the locking period and increase the locked amount after a 1-week security window for any pool member. The reward administrator receives the rewards and has the responsibility to distribute the rewards fairly.

Currently, the BTC rewards are wrapped to xBTC and swapped to STX in a more or less transparent way. The transactions can be seen at https://app.sigle.io/fastpool.btc . However, the share that each pool member receives is calculated off-chain and users have to trust the the calculations are correct.

There is now a smart contract fp-payout-v1 that handles the distribution. The reward admin transfers the rewards of a stacking cycle into the contract. Thereafter, anybody can distribute the shares to some or all pool members, no privileges needed.

The contract is deployed on mainnet. It can handle rewards in STX. In the next version members should be able to choose whether to receive the rewards in STX or xBTC. Later the rewards could be distributed in sBTC.

Second distribution for cycle #65

As a first trial, the reward admin has transferred an additional 1/1000th of the rewards of cycle #65, that is 75.51150 STX.

The trial is successful, if the total reward balance of the payout contract is 0 and each pool member of cycle #65 has received two reward transactions: one for the normal distribution of #65 earlier and the second for the trial with an amount of 1/1000th. (This does not apply to the city coin treasury and to members who have received less than 0.001 STX as a reward in #65. There is no second transaction for a 0 STX transfer.)

For the trial, the reward admin has allocated the received funds to cycle #65. These rewards are registered with id 1. Then, user friedgerpool.btc called distribute-rewards-many for all 921 members published on https://pool.friedger.de/cycles/65 in 5 transactions.

Notes

Reward distribution to City Coin contracts are not yet handled. Therefore, the total rewards balance showed 45.362195 STX after the trial. That includes 45.361742 STX for the City Coin contracts and 453uSTX that are probably rounding errors.

Payout lookup that directs rewards to a custom address was ignored. Therefore, some users do not see two transactions in one account, but a transaction at two different accounts.

The transparency comes at the costs of higher transaction fees:

Execution costs for just sending stx to many users (send-many) is a third:

The contract does not emit any print events. Probably, we should do that in the next version, so that we can track distributions off-chain more easily.