TradingRewards¶
Description¶
This contract is an implementation of SIP-63. It records exchange fees paid by users into periods, which, when closed with a given amount of SNX rewards, allows participants to claim such rewards pro-rata, according to the amount of fees recorded for them in such period.
The recording of such fees can be enabled by the ProtocolDAO, via SystemSettings.
Source: contracts/TradingRewards.sol
Structs¶
Period
¶
Field | Type | Description |
---|---|---|
isFinalized |
bool |
A period needs to be finalized for participants to be able to claim rewards. |
recordedFees |
uint256 |
Total recorded fees for the period. |
totalRewards |
uint256 |
Total SNX rewards assigned to the period when it's closed. |
availableRewards |
uint256 |
Remaining SNX rewards after totalRewards have been assigned. Diminishes as participants claim their rewards. |
unaccountedFeesForAccount |
mapping(address => uint256) |
Records fees for each participant during the period. Increases when fees are recorded, decreases when rewards are claimed. |
Constructor¶
constructor
¶
Details
Signature
constructor(address owner, address periodController, address resolver)
Visibility
public
State Mutability
``
Requires
Views¶
getAvailableRewards
¶
Details
Signature
getAvailableRewards() view returns (uint256)
Visibility
external
State Mutability
view
getAvailableRewardsForAccountForPeriod
¶
Details
Signature
getAvailableRewardsForAccountForPeriod(address account, uint256 periodID) view returns (uint256)
Visibility
external
State Mutability
view
getAvailableRewardsForAccountForPeriods
¶
Details
Signature
getAvailableRewardsForAccountForPeriods(address account, uint256[] periodIDs) view returns (uint256 totalRewards)
Visibility
external
State Mutability
view
getCurrentPeriod
¶
Details
Signature
getCurrentPeriod() view returns (uint256)
Visibility
external
State Mutability
view
getPeriodAvailableRewards
¶
Details
Signature
getPeriodAvailableRewards(uint256 periodID) view returns (uint256)
Visibility
external
State Mutability
view
getPeriodController
¶
Details
Signature
getPeriodController() view returns (address)
Visibility
external
State Mutability
view
getPeriodIsClaimable
¶
Details
Signature
getPeriodIsClaimable(uint256 periodID) view returns (bool)
Visibility
external
State Mutability
view
getPeriodIsFinalized
¶
Details
Signature
getPeriodIsFinalized(uint256 periodID) view returns (bool)
Visibility
external
State Mutability
view
getPeriodRecordedFees
¶
Details
Signature
getPeriodRecordedFees(uint256 periodID) view returns (uint256)
Visibility
external
State Mutability
view
getPeriodTotalRewards
¶
Details
Signature
getPeriodTotalRewards(uint256 periodID) view returns (uint256)
Visibility
external
State Mutability
view
getRewardsToken
¶
Details
Signature
getRewardsToken() view returns (address)
Visibility
external
State Mutability
view
getUnaccountedFeesForAccountForPeriod
¶
Details
Signature
getUnaccountedFeesForAccountForPeriod(address account, uint256 periodID) view returns (uint256)
Visibility
external
State Mutability
view
getUnassignedRewards
¶
Details
Signature
getUnassignedRewards() view returns (uint256)
Visibility
external
State Mutability
view
resolverAddressesRequired
¶
Details
Signature
resolverAddressesRequired() view returns (bytes32[] addresses)
Visibility
public
State Mutability
view
Restricted Functions¶
closeCurrentPeriodWithRewards
¶
Details
Signature
closeCurrentPeriodWithRewards(uint256 rewards)
Visibility
external
State Mutability
``
Requires
Modifiers
Emits
recordExchangeFeeForAccount
¶
Details
Signature
recordExchangeFeeForAccount(uint256 usdFeeAmount, address account)
Visibility
external
State Mutability
``
Modifiers
Emits
recoverAssignedRewardTokensAndDestroyPeriod
¶
Details
Signature
recoverAssignedRewardTokensAndDestroyPeriod(address recoverAddress, uint256 periodID)
Visibility
external
State Mutability
``
Requires
Modifiers
Emits
recoverTokens
¶
Details
Signature
recoverTokens(address tokenAddress, address recoverAddress)
Visibility
external
State Mutability
``
Requires
Modifiers
Emits
recoverUnassignedRewardTokens
¶
Details
Signature
recoverUnassignedRewardTokens(address recoverAddress)
Visibility
external
State Mutability
``
Requires
Modifiers
Emits
setPeriodController
¶
Details
Signature
setPeriodController(address newPeriodController)
Visibility
external
State Mutability
``
Requires
Modifiers
Emits
Internal Functions¶
_calculateRewards
¶
Details
Signature
_calculateRewards(address account, uint256 periodID) view returns (uint256)
Visibility
internal
State Mutability
view
_claimRewards
¶
Details
Signature
_claimRewards(address account, uint256 periodID)
Visibility
internal
State Mutability
``
Requires
Emits
_validateRecoverAddress
¶
Details
Signature
_validateRecoverAddress(address recoverAddress) view
Visibility
internal
State Mutability
view
exchanger
¶
Details
Signature
exchanger() view returns (contract IExchanger)
Visibility
internal
State Mutability
view
synthetix
¶
Details
Signature
synthetix() view returns (contract IERC20)
Visibility
internal
State Mutability
view
External Functions¶
claimRewardsForPeriod
¶
Details
Signature
claimRewardsForPeriod(uint256 periodID)
Visibility
external
State Mutability
``
Modifiers
claimRewardsForPeriods
¶
Details
Signature
claimRewardsForPeriods(uint256[] periodIDs)
Visibility
external
State Mutability
``
Modifiers
Modifiers¶
onlyExchanger
¶
onlyPeriodController
¶
Events¶
AssignedRewardTokensRecovered
¶
Signature: AssignedRewardTokensRecovered(address recoverAddress, uint256 amount, uint256 periodID)
ExchangeFeeRecorded
¶
Signature: ExchangeFeeRecorded(address account, uint256 amount, uint256 periodID)
NewPeriodStarted
¶
Signature: NewPeriodStarted(uint256 periodID)
PeriodControllerChanged
¶
Signature: PeriodControllerChanged(address newPeriodController)
PeriodFinalizedWithRewards
¶
Signature: PeriodFinalizedWithRewards(uint256 periodID, uint256 rewards)
RewardsClaimed
¶
Signature: RewardsClaimed(address account, uint256 amount, uint256 periodID)
TokensRecovered
¶
Signature: TokensRecovered(address tokenAddress, address recoverAddress, uint256 amount)
UnassignedRewardTokensRecovered
¶
Signature: UnassignedRewardTokensRecovered(address recoverAddress, uint256 amount)