Checkpoint module for issuing ERC20 dividends (ERC20DividendCheckpoint.sol)

View Source: contracts/modules/Checkpoint/Dividend/ERC20/ERC20DividendCheckpoint.solโ€‹

โ†— Extends: ERC20DividendCheckpointStorage, DividendCheckpointโ€‹

ERC20DividendCheckpoint

Events

event ERC20DividendDeposited(address indexed _depositor, uint256 _checkpointId, uint256 _maturity, uint256 _expiry, address indexed _token, uint256 _amount, uint256 _totalSupply, uint256 _dividendIndex, bytes32 indexed _name);
event ERC20DividendClaimed(address indexed _payee, uint256 indexed _dividendIndex, address indexed _token, uint256 _amount, uint256 _withheld);
event ERC20DividendReclaimed(address indexed _claimer, uint256 indexed _dividendIndex, address indexed _token, uint256 _claimedAmount);
event ERC20DividendWithholdingWithdrawn(address indexed _claimer, uint256 indexed _dividendIndex, address indexed _token, uint256 _withheldAmount);

Functions

Constructor

function (address _securityToken, address _polyToken) public nonpayable Module

Arguments

Name

Type

Description

_securityToken

address

Address of the security token

_polyToken

address

โ€‹

createDividend

Creates a dividend and checkpoint for the dividend

function createDividend(uint256 _maturity, uint256 _expiry, address _token, uint256 _amount, bytes32 _name) external nonpayable withPerm

Arguments

Name

Type

Description

_maturity

uint256

Time from which dividend can be paid

_expiry

uint256

Time until dividend can no longer be paid, and can be reclaimed by issuer

_token

address

Address of ERC20 token in which dividend is to be denominated

_amount

uint256

Amount of specified token for dividend

_name

bytes32

Name/Title for identification

createDividendWithCheckpoint

Creates a dividend with a provided checkpoint

function createDividendWithCheckpoint(uint256 _maturity, uint256 _expiry, address _token, uint256 _amount, uint256 _checkpointId, bytes32 _name) external nonpayable withPerm

Arguments

Name

Type

Description

_maturity

uint256

Time from which dividend can be paid

_expiry

uint256

Time until dividend can no longer be paid, and can be reclaimed by issuer

_token

address

Address of ERC20 token in which dividend is to be denominated

_amount

uint256

Amount of specified token for dividend

_checkpointId

uint256

Checkpoint id from which to create dividends

_name

bytes32

Name/Title for identification

createDividendWithExclusions

Creates a dividend and checkpoint for the dividend

function createDividendWithExclusions(uint256 _maturity, uint256 _expiry, address _token, uint256 _amount, address[] _excluded, bytes32 _name) public nonpayable withPerm

Arguments

Name

Type

Description

_maturity

uint256

Time from which dividend can be paid

_expiry

uint256

Time until dividend can no longer be paid, and can be reclaimed by issuer

_token

address

Address of ERC20 token in which dividend is to be denominated

_amount

uint256

Amount of specified token for dividend

_excluded

address[]

List of addresses to exclude

_name

bytes32

Name/Title for identification

createDividendWithCheckpointAndExclusions

Creates a dividend with a provided checkpoint

function createDividendWithCheckpointAndExclusions(uint256 _maturity, uint256 _expiry, address _token, uint256 _amount, uint256 _checkpointId, address[] _excluded, bytes32 _name) public nonpayable withPerm

Arguments

Name

Type

Description

_maturity

uint256

Time from which dividend can be paid

_expiry

uint256

Time until dividend can no longer be paid, and can be reclaimed by issuer

_token

address

Address of ERC20 token in which dividend is to be denominated

_amount

uint256

Amount of specified token for dividend

_checkpointId

uint256

Checkpoint id from which to create dividends

_excluded

address[]

List of addresses to exclude

_name

bytes32

Name/Title for identification

_createDividendWithCheckpointAndExclusions

Creates a dividend with a provided checkpoint

function _createDividendWithCheckpointAndExclusions(uint256 _maturity, uint256 _expiry, address _token, uint256 _amount, uint256 _checkpointId, address[] _excluded, bytes32 _name) internal nonpayable

Arguments

Name

Type

Description

_maturity

uint256

Time from which dividend can be paid

_expiry

uint256

Time until dividend can no longer be paid, and can be reclaimed by issuer

_token

address

Address of ERC20 token in which dividend is to be denominated

_amount

uint256

Amount of specified token for dividend

_checkpointId

uint256

Checkpoint id from which to create dividends

_excluded

address[]

List of addresses to exclude

_name

bytes32

Name/Title for identification

_emitERC20DividendDepositedEvent

Emits the ERC20DividendDeposited event. Seperated into a different function as a workaround for stack too deep error

function _emitERC20DividendDepositedEvent(uint256 _checkpointId, uint256 _maturity, uint256 _expiry, address _token, uint256 _amount, uint256 currentSupply, uint256 dividendIndex, bytes32 _name) internal nonpayable

Arguments

Name

Type

Description

_checkpointId

uint256

โ€‹

_maturity

uint256

โ€‹

_expiry

uint256

โ€‹

_token

address

โ€‹

_amount

uint256

โ€‹

currentSupply

uint256

โ€‹

dividendIndex

uint256

โ€‹

_name

bytes32

โ€‹

_payDividend

โคพ overrides DividendCheckpoint._payDividendโ€‹

Internal function for paying dividends

function _payDividend(address payable _payee, struct DividendCheckpointStorage.Dividend _dividend, uint256 _dividendIndex) internal nonpayable

Arguments

Name

Type

Description

_payee

address payable

Address of investor

_dividend

struct DividendCheckpointStorage.Dividend

Storage with previously issued dividends

_dividendIndex

uint256

Dividend to pay

reclaimDividend

โคพ overrides DividendCheckpoint.reclaimDividendโ€‹

Issuer can reclaim remaining unclaimed dividend amounts, for expired dividends

function reclaimDividend(uint256 _dividendIndex) external nonpayable withPerm

Arguments

Name

Type

Description

_dividendIndex

uint256

Dividend to reclaim

withdrawWithholding

โคพ overrides DividendCheckpoint.withdrawWithholdingโ€‹

Allows issuer to withdraw withheld tax

function withdrawWithholding(uint256 _dividendIndex) external nonpayable withPerm

Arguments

Name

Type

Description

_dividendIndex

uint256

Dividend to withdraw from