StakeManager

Contents

Globals

Var
Type

validatorId

uint256

validators

mapping(address => struct Validator)

unstakeId

uint256

unstakeQueue

mapping(uint256 => struct Unstake)

totalLockedAmount

uint256

activeValidators

struct ActiveValidator[]

proposer

address

Modifiers

onlyRouterOrFeePool

No description

Declaration:

  modifier onlyRouterOrFeePool

Functions

constructor

No description

Declaration:

  function constructor(
  ) public Only

Modifiers:

Modifier

Only

indexedValidatorsLength

Get the indexed validators length.

Declaration:

  function indexedValidatorsLength(
  ) external returns (uint256)

Modifiers: No modifiers

indexedValidatorsExists

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

indexedValidatorsByIndex

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

indexedValidatorsById

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

getVotingPowerByIndex

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

getVotingPowerById

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

getVotingPowerByAddress

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

getTotalLockedAmountAndValidatorCount

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

activeValidatorsLength

Get the active validators list length.

Declaration:

  function activeValidatorsLength(
  ) external returns (uint256)

Modifiers: No modifiers

estimateSharesToAmount

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

estimateAmountToShares

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

estimateUnstakeAmount

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

receive

No description

Declaration:

  function receive(
  ) external

Modifiers: No modifiers

stake

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

startUnstake

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

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

removeIndexedValidator

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

addIndexedValidator

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

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

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

onAfterBlock

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

Events

Reward

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 caller

Params:

Param
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

Params:

Param
Type
Indexed
Description

validator

address

Validator address

value

uint256

Slashed amount

### Stake

Emitted when the user stakes

Params:

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

Params:

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

Params:

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

Params:

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

Params:

Param
Type
Indexed
Description

validator

address

Validator address

votingPower

uint256

Validator voting power

### UnindexedValidator

Emitted when a new validator is unindexed

Params:

Param
Type
Indexed
Description

validator

address

Validator address

Last updated