ERC20 fixed reward module

ERC20FixedRewardModule

this reward module distributes a fixed amount of a single ERC20 token.

the fixed reward module provides a guarantee that some amount of tokens will be earned over a specified time period. This can be used to create incentive mechanisms such as bond sales, fixed duration payroll, and more.



constructor(address token_, uint256 period_, uint256 rate_, address config_, address factory_) (public)

Parameters

  • token_: the token that will be rewarded

  • period_: time period (seconds)

  • rate_: constant reward rate (shares / share second)

  • config_: address for configuration contract

  • factory_: address of module factory



tokens() → address[] tokens_ (external)

Returns

  • array of reward tokens


balances() → uint256[] balances_ (external)

Returns

  • array of reward token balances


usage() → uint256 (external)

Returns

  • GYSR usage ratio for reward module


factory() → address (external)

Returns

  • address of module factory


stake(bytes32 account, address, uint256 shares, bytes) → uint256, uint256 (external)

perform any necessary accounting for new stake

additional stake will bookmark earnings and rollover remainder to new unvested position

Parameters

  • account: bytes32 id of staking account

  • sender: address of sender

  • shares: number of new shares minted

  • data: addtional data

Returns

  • amount of gysr spent

  • amount of gysr vested



unstake(bytes32 account, address, address receiver, uint256 shares, bytes) → uint256, uint256 (external)

reward user and perform any necessary accounting for unstake

Parameters

  • account: bytes32 id of staking account

  • sender: address of sender

  • receiver: address of reward receiver

  • shares: number of shares burned

  • data: additional data

Returns

  • amount of gysr spent

  • amount of gysr vested



claim(bytes32 account, address, address receiver, uint256, bytes) → uint256, uint256 (external)

reward user and perform and necessary accounting for existing stake

Parameters

  • account: bytes32 id of staking account

  • sender: address of sender

  • receiver: address of reward receiver

  • shares: number of shares being claimed against

  • data: additional data

Returns

  • amount of gysr spent

  • amount of gysr vested



update(bytes32, address, bytes) (external)

method called by anyone to update accounting

will only be called ad hoc and should not contain essential logic

Parameters

  • account: bytes32 id of staking account for update

  • sender: address of sender

  • data: additional data



clean(bytes) (external)

method called by owner to clean up and perform additional accounting

will only be called ad hoc and should not contain any essential logic

Parameters

  • data: additional data


fund(uint256 amount) (external)

fund module by depositing reward tokens

this is a public method callable by any account or contract

Parameters

  • amount: number of reward tokens to deposit


withdraw(uint256 amount) (external)

withdraw uncommitted reward tokens from module

Parameters

  • amount: number of reward tokens to withdraw