StakeManager
Var | Type |
---|---|
validatorId | uint256 |
validators | mapping(address => struct Validator) |
unstakeId | uint256 |
unstakeQueue | mapping(uint256 => struct Unstake) |
totalLockedAmount | uint256 |
activeValidators | struct ActiveValidator[] |
proposer | address |
No description
Declaration:
modifier onlyRouterOrFeePool
No description
Declaration:
function constructor(
) public Only
Modifiers:
Modifier |
---|
Only |
Get the indexed validators length.
Declaration:
function indexedValidatorsLength(
) external returns (uint256)
Modifiers: No modifiers
Determine whether the index validator exists by id.
Declaration:
function indexedValidatorsExists(
uint256 id
) external returns (bool)
Modifiers: No modifiers
Args:
Arg | Type | Description |
---|---|---|
id | uint256 | The validator id |
Get indexed validator address by index.
Declaration:
function indexedValidatorsByIndex(
uint256 index
) external returns (address validator)
Modifiers: No modifiers
Args:
Arg | Type | Description |
---|---|---|
index | uint256 | The validator index |
Get indexed validator address by id.
Declaration:
function indexedValidatorsById(
uint256 id
) external returns (address)
Modifiers: No modifiers
Args:
Arg | Type | Description |
---|---|---|
id | uint256 | The validator id |
Get the voting power by validator index, if index is out of range or validator doesn't exist, return 0.
Declaration:
function getVotingPowerByIndex(
uint256 index
) external returns (uint256)
Modifiers: No modifiers
Args:
Arg | Type | Description |
---|---|---|
index | uint256 | The validator index |
Get the voting power by validator id, if doesn't exist, return 0.
Declaration:
function getVotingPowerById(
uint256 id
) external returns (uint256)
Modifiers: No modifiers
Args:
Arg | Type | Description |
---|---|---|
id | uint256 | The validator id |
Get the voting power by validator address, if the validator doesn't exist, return 0.
Declaration:
function getVotingPowerByAddress(
address validator
) public returns (uint256)
Modifiers: No modifiers
Args:
Arg | Type | Description |
---|---|---|
validator | address | Validator address |
Get the total locked amount and the validator count, but no including the
excludes
.Declaration:
function getTotalLockedAmountAndValidatorCount(
address[] excludes
) external returns (uint256 _totalLockedAmount, uint256 validatorCount)
Modifiers: No modifiers
Args:
Arg | Type | Description |
---|---|---|
excludes | address[] | Excluded addresses |
Get the active validators list length.
Declaration:
function activeValidatorsLength(
) external returns (uint256)
Modifiers: No modifiers
Estimate how much GXC should be stake, if user wants to get the number of shares, Or estimate how much GXC can be obtained, if user unstake the amount of GXC.
Declaration:
function estimateSharesToAmount(
address validator,
uint256 shares
) public returns (uint256 amount)
Modifiers: No modifiers
Args:
Arg | Type | Description |
---|---|---|
validator | address | Validator address |
shares | uint256 | Number of shares |
Estimate how much shares should be unstake, if user wants to get the amount of GXC. Or estimate how much shares can be obtained, if user stake the amount of GXC. If the validator doesn't exist, return 0.
Declaration:
function estimateAmountToShares(
address validator,
uint256 amount
) public returns (uint256 shares)
Modifiers: No modifiers
Args:
Arg | Type | Description |
---|---|---|
validator | address | Validator address |
amount | uint256 | Number of GXC |
Estimate how much GXC can be claim, if unstake the number of shares(when unstake timeout). If the validator doesn't exist, return 0.
Declaration:
function estimateUnstakeAmount(
address validator,
uint256 shares
) external returns (uint256 amount)
Modifiers: No modifiers
Args:
Arg | Type | Description |
---|---|---|
validator | address | Validator address |
shares | uint256 | Number of shares |
No description
Declaration:
function receive(
) external
Modifiers: No modifiers
Stake for validator and mint share token to
to
address. It will emit Stake
event.Declaration:
function stake(
address validator,
address to
) external nonReentrant returns (uint256 shares)
Modifiers:
Modifier |
---|
nonReentrant |
Args:
Arg | Type | Description |
---|---|---|
validator | address | Validator address |
to | address | Receiver address |
Start unstake shares for validator. Stake manager will burn the shares immediately, but return GXC to
to
address after config.unstakeDelay
. It will emit StartUnstake
event.Declaration:
function startUnstake(
address validator,
address payable to,
uint256 shares
) external nonReentrant returns (uint256)
Modifiers:
Modifier |
---|
nonReentrant |
Args:
Arg | Type | Description |
---|---|---|
validator | address | Validator address |
to | address payable | Receiver address |
shares | uint256 | Number of shares to be burned |
Returns:
Type | Description |
---|---|
Unstake | id(if amount is zero, return MAX_UINT256) |
### startClaim | |
Start claim validator reward. | |
Stake manager will claim GXC from validator reward manager immediately, but return GXC to to address after config.unstakeDelay . | |
It will emit StartUnstake event. | |
Declaration:
function startClaim(
address payable to,
uint256 amount
) external nonReentrant returns (uint256)
Modifiers:
Modifier |
---|
nonReentrant |
Args:
Arg | Type | Description |
---|---|---|
to | address payable | Receiver address |
amount | uint256 | Number of GXC |
Returns:
Type | Description |
---|---|
Unstake | id |
### setCommissionRate | |
Set validator commission rate. | |
Declaration:
function setCommissionRate(
uint256 rate
) external nonReentrant
Modifiers:
Modifier |
---|
nonReentrant |
Args:
Arg | Type | Description |
---|---|---|
rate | uint256 | New commission rate |
Unstake by id, return unstake amount.
Declaration:
function unstake(
uint256 id
) external nonReentrant returns (uint256 amount)
Modifiers:
Modifier |
---|
nonReentrant |
Args:
Arg | Type | Description |
---|---|---|
id | uint256 | Unstake id |
Remove the validator from
indexedValidators
if the voting power is less than minIndexVotingPower
This can be called by anyone.Declaration:
function removeIndexedValidator(
address validator
) external nonReentrant
Modifiers:
Modifier |
---|
nonReentrant |
Args:
Arg | Type | Description |
---|---|---|
validator | address | Validator address |
Add the validator to
indexedValidators
if the voting power is greater than minIndexVotingPower
This can be called by anyone.Declaration:
function addIndexedValidator(
address validator
) external nonReentrant
Modifiers:
Modifier |
---|
nonReentrant |
Args:
Arg | Type | Description |
---|---|---|
validator | address | Validator address |
Reward validator, only can be called by system caller
Declaration:
function reward(
address validator
) external nonReentrant onlyRouterOrFeePool
Modifiers:
Modifier |
---|
nonReentrant |
onlyRouterOrFeePool |
Args:
Arg | Type | Description |
---|---|---|
validator | address | Validator address |
Slash validator, only can be called by system caller
Declaration:
function slash(
address validator,
uint8 reason
) external nonReentrant onlyRouter returns (uint256 amount)
Modifiers:
Modifier |
---|
nonReentrant |
onlyRouter |
Args:
Arg | Type | Description |
---|---|---|
validator | address | Validator address |
reason | uint8 | Slash reason |
After block callback, it will be called by system caller after each block is processed
Declaration:
function onAfterBlock(
address _proposer,
address[] acValidators,
int256[] priorities
) external nonReentrant onlyRouter
Modifiers:
Modifier |
---|
nonReentrant |
onlyRouter |
Args:
Arg | Type | Description |
---|---|---|
_proposer | address | Proposer address |
acValidators | address[] | Active validators list |
priorities | int256[] | Priority list of active validators |
Emitted when a validator gets a reward NOTE: this event is never shown in the block, because the
reward
function is only called by the system callerParam | Type | Indexed | Description |
---|---|---|---|
validator | address | ✅ | Validator address |
value | uint256 | ✅ | Reward amount |
### Slash | | | |
Emitted when a validator is slashed | | | |
NOTE: this event is never shown in the block, | | | |
because the `slash` function is only called by the system caller
Param | Type | Indexed | Description |
---|---|---|---|
validator | address | ✅ | Validator address |
value | uint256 | ✅ | Slashed amount |
### Stake | | | |
Emitted when the user stakes | | | |
Param | Type | Indexed | Description |
---|---|---|---|
validator | address | ✅ | Validator address |
value | uint256 | ✅ | Stake value |
to | address | | Receiver address |
shares | uint256 | | Number of shares minted |
### StartUnstake | | | |
Emitted when the user starts unstake | | | |
Param | Type | Indexed | Description |
---|---|---|---|
id | uint256 | ✅ | Unique unstake id |
validator | address | ✅ | Validator address |
value | uint256 | ✅ | Stake value |
to | address | | Receiver address |
unstakeShares | uint256 | | Number of unstake shares to be burned |
timestamp | uint256 | | Release timestamp |
### DoUnstake | | | |
Emitted when stake manager unstake | | | |
Param | Type | Indexed | Description |
---|---|---|---|
id | uint256 | ✅ | Unique unstake id |
validator | address | ✅ | Validator address |
to | address | | Receiver address |
amount | uint256 | | GXC Released |
### SetCommissionRate | | | |
Emitted when validator set commission rate | | | |
Param | Type | Indexed | Description |
---|---|---|---|
validator | address | ✅ | Validator address |
rate | uint256 | ✅ | New commission rate |
timestamp | uint256 | ✅ | Update timestamp |
### IndexedValidator | | | |
Emitted when a new validator is indexed | | | |
Param | Type | Indexed | Description |
---|---|---|---|
validator | address | ✅ | Validator address |
votingPower | uint256 | ✅ | Validator voting power |
### UnindexedValidator | | | |
Emitted when a new validator is unindexed | | | |
Param | Type | Indexed | Description |
---|---|---|---|
validator | address | ✅ | Validator address |
Last modified 1yr ago