Skip to main content

DeveloperPool

DeveloperPool

This contract manages the distribution of Regeneration Credit tokens as rewards to developers for their code development, primarily for the development of the system software. Developers can contribute to the 'core' front-end, to smart-contracts, UX, website, evaluation methods and any other related open-source projects. Each valid published development report is equivalent to one level in the pool.

Inherits core functionalities from Poolable (for pool management), Ownable (for deploy setup only), Blockable (for era/epoch tracking), and Callable (for whitelisted caller control).

regenerationCredit

contract IRegenerationCredit regenerationCredit

Interface to the Regeneration Credit token contract, used to decrease total locked.

developerRulesAddress

address developerRulesAddress

The address of the DeveloperRules contract.

hasProcessedLevel

mapping(uint64 => bool) hasProcessedLevel

Tracks unique resource IDs to ensure levels for a resource are added only once.

constructor

constructor(address regenerationCreditAddress, uint256 _halving, uint256 _blocksPerEra) public

Initializes the DeveloperPool contract. Sets up the Regeneration Credit token interface and initializes inherited base contracts.

Parameters

NameTypeDescription
regenerationCreditAddressaddressThe address of the RegenerationCredit token contract.
_halvinguint256The number of eras that constitute one halving cycle/epoch for reward adjustments. Passed to the Blockable base contract.
_blocksPerErauint256The number of blocks that constitute a single era. Passed to the Blockable base contract.

setContractCall

function setContractCall(address _developerRulesAddress) external

onlyOwner function to set contract call addresses. This function must be called only once after the contract deploy and ownership must be renounced.

Parameters

NameTypeDescription
_developerRulesAddressaddressAddress of DeveloperRules.

withdraw

function withdraw(address delegate, uint256 era) external

This function can only be called by the DeveloperRules contract, whitelisted via the Callable contract's mechanisms. The user must also be eligible for withdrawal based on the Blockable contract's era tracking.

Allows an authorized caller, the Developer contract, to trigger a token withdrawal for a user. This function calculates the eligible tokens for the user's era and transfers them.

Parameters

NameTypeDescription
delegateaddressThe address of the user (developer) for whom the withdrawal is being processed.
erauint256The last recorded era of the delegate user, used for reward calculation and eligibility.

addLevel

function addLevel(address addr, uint256 levels, uint64 eventId) external

Can only be called by the developerRules address.

Allows an authorized caller to increase the user pool level. This function updates the developer level within the system's pooling mechanism.

Parameters

NameTypeDescription
addraddressThe wallet address of the developer.
levelsuint256The number of levels to increase the developer's pool level by.
eventIduint64The ID of the report being processed.

removePoolLevels

function removePoolLevels(address addr, bool denied) external

Can only be called by developerRules address.

Allows an authorized caller to decrease an developer's pool level. This function adjusts the developer's level downwards within the system's pooling mechanism.

Parameters

NameTypeDescription
addraddressThe wallet address of the developer.
deniedboolRemove level user status. If true, user is being denied.

haveTokensToWithdraw

function haveTokensToWithdraw(address delegate, uint256 era) public view returns (bool)

View function to check if a user have tokens to withdraw at an era.

Parameters

NameTypeDescription
delegateaddressUser address.
erauint256User current era.

Return Values

NameTypeDescription
[0]boolbool True if have tokens to withdraw, false if will just update era.