View Source: contracts/tokens/SecurityToken.solโ
โ Extends: ERC20, ReentrancyGuard, SecurityTokenStorage, IERC1594, IERC1643, IERC1644, IERC1410, Proxy โ Derived Contracts: MockSecurityTokenLogic, SecurityTokenMockโ
SecurityToken
SecurityToken is an ERC1400 token with added capabilities:
Events
event ModuleAdded(uint8[] _types, bytes32 indexed _name, address indexed _moduleFactory, address _module, uint256 _moduleCost, uint256 _budget, bytes32 _label, bool _archived);event ModuleUpgraded(uint8[] _types, address _module);event UpdateTokenDetails(string _oldDetails, string _newDetails);event UpdateTokenName(string _oldName, string _newName);event GranularityChanged(uint256 _oldGranularity, uint256 _newGranularity);event FreezeIssuance();event FreezeTransfers(bool _status);event CheckpointCreated(uint256 indexed _checkpointId, uint256 _investorLength);event SetController(address indexed _oldController, address indexed _newController);event TreasuryWalletChanged(address _oldTreasuryWallet, address _newTreasuryWallet);event DisableController();event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);event TokenUpgraded(uint8 _major, uint8 _minor, uint8 _patch);event ModuleArchived(uint8[] _types, address _module);event ModuleUnarchived(uint8[] _types, address _module);event ModuleRemoved(uint8[] _types, address _module);event ModuleBudgetChanged(uint8[] _moduleTypes, address _module, uint256 _oldBudget, uint256 _budget);
โcheckGranularityโ
modifier checkGranularity(uint256 _value) internal
Arguments
Name | Type | Description |
_value | uint256 | โ |
โ()โ
โ_isIssuanceAllowed()โ
โ_onlyController()โ
โ_onlyOwner()โ
โ_onlyModule(uint8 _type)โ
โupgradeToken()โ
โchangeName(string _name)โ
โfreezeTransfers()โ
โunfreezeTransfers()โ
โcreateCheckpoint()โ
โisControllable()โ
โ_implementation()โ
โupdateFromRegistry()โ
โowner()โ
โisOwner()โ
function () public nonpayable
Arguments
Name | Type | Description |
โคฟ Overridden Implementation(s): SecurityTokenMock.initializeโ
Initialization function
function initialize(address _getterDelegate) public nonpayable
Arguments
Name | Type | Description |
_getterDelegate | address | โ |
Checks if an address is a module of certain type
function isModule(address _module, uint8 _type) public viewreturns(bool)
Arguments
Name | Type | Description |
_module | address | Address to check |
_type | uint8 | type to check against |
function _onlyModuleOrOwner(uint8 _type) internal view
Arguments
Name | Type | Description |
_type | uint8 | โ |
function _isValidPartition(bytes32 _partition) internal pure
Arguments
Name | Type | Description |
_partition | bytes32 | โ |
function _isValidOperator(address _from, address _operator, bytes32 _partition) internal view
Arguments
Name | Type | Description |
_from | address | โ |
_operator | address | โ |
_partition | bytes32 | โ |
function _zeroAddressCheck(address _entity) internal pure
Arguments
Name | Type | Description |
_entity | address | โ |
function _isValidTransfer(bool _isTransfer) internal pure
Arguments
Name | Type | Description |
_isTransfer | bool | โ |
function _isValidRedeem(bool _isRedeem) internal pure
Arguments
Name | Type | Description |
_isRedeem | bool | โ |
function _isSignedByOwner(bool _signed) internal pure
Arguments
Name | Type | Description |
_signed | bool | โ |
function _isIssuanceAllowed() internal view
Arguments
Name | Type | Description |
function _onlyController() internal view
Arguments
Name | Type | Description |
function _isAuthorised(bool _authorised) internal pure
Arguments
Name | Type | Description |
_authorised | bool | โ |
Throws if called by any account other than the owner.
function _onlyOwner() internal view
Arguments
Name | Type | Description |
Require msg.sender to be the specified module type
function _onlyModule(uint8 _type) internal view
Arguments
Name | Type | Description |
_type | uint8 | โ |
โคฟ Overridden Implementation(s): MockSecurityTokenLogic.addModuleWithLabelโ
Attachs a module to the SecurityToken
function addModuleWithLabel(address _moduleFactory, bytes _data, uint256 _maxCost, uint256 _budget, bytes32 _label, bool _archived) public nonpayable nonReentrant
Arguments
Name | Type | Description |
_moduleFactory | address | is the address of the module factory to be added |
_data | bytes | is data packed into bytes used to further configure the module (See STO usage) |
_maxCost | uint256 | max amount of POLY willing to pay to the module. |
_budget | uint256 | max amount of ongoing POLY willing to assign to the module. |
_label | bytes32 | custom module label. |
_archived | bool | โ |
function _addModuleData(uint8[] _moduleTypes, address _moduleFactory, address _module, uint256 _moduleCost, uint256 _budget, bytes32 _label, bool _archived) internal nonpayable
Arguments
Name | Type | Description |
_moduleTypes | uint8[] | โ |
_moduleFactory | address | โ |
_module | address | โ |
_moduleCost | uint256 | โ |
_budget | uint256 | โ |
_label | bytes32 | โ |
_archived | bool | โ |
addModule function will call addModuleWithLabel() with an empty label for backward compatible
function addModule(address _moduleFactory, bytes _data, uint256 _maxCost, uint256 _budget, bool _archived) external nonpayable
Arguments
Name | Type | Description |
_moduleFactory | address | โ |
_data | bytes | โ |
_maxCost | uint256 | โ |
_budget | uint256 | โ |
_archived | bool | โ |
Archives a module attached to the SecurityToken
function archiveModule(address _module) external nonpayable
Arguments
Name | Type | Description |
_module | address | address of module to archive |
Upgrades a module attached to the SecurityToken
function upgradeModule(address _module) external nonpayable
Arguments
Name | Type | Description |
_module | address | address of module to archive |
Upgrades security token
function upgradeToken() external nonpayable
Arguments
Name | Type | Description |
Unarchives a module attached to the SecurityToken
function unarchiveModule(address _module) external nonpayable
Arguments
Name | Type | Description |
_module | address | address of module to unarchive |
Removes a module attached to the SecurityToken
function removeModule(address _module) external nonpayable
Arguments
Name | Type | Description |
_module | address | address of module to unarchive |
Allows the owner to withdraw unspent POLY stored by them on the ST or any ERC20 token.
function withdrawERC20(address _tokenContract, uint256 _value) external nonpayable
Arguments
Name | Type | Description |
_tokenContract | address | Address of the ERC20Basic compliance token |
_value | uint256 | amount of POLY to withdraw |
allows owner to increase/decrease POLY approval of one of the modules
function changeModuleBudget(address _module, uint256 _change, bool _increase) external nonpayable
Arguments
Name | Type | Description |
_module | address | module address |
_change | uint256 | change in allowance |
_increase | bool | true if budget has to be increased, false if decrease |
updates the tokenDetails associated with the token
function updateTokenDetails(string _newTokenDetails) external nonpayable
Arguments
Name | Type | Description |
_newTokenDetails | string | New token details |
Allows owner to change token granularity
function changeGranularity(uint256 _granularity) external nonpayable
Arguments
Name | Type | Description |
_granularity | uint256 | granularity level of the token |
Allows owner to change data store
function changeDataStore(address _dataStore) external nonpayable
Arguments
Name | Type | Description |
_dataStore | address | Address of the token data store |
Allows owner to change token name
function changeName(string _name) external nonpayable
Arguments
Name | Type | Description |
_name | string | new name of the token |
Allows to change the treasury wallet address
function changeTreasuryWallet(address _wallet) external nonpayable
Arguments
Name | Type | Description |
_wallet | address | Ethereum address of the treasury wallet |
Keeps track of the number of non-zero token holders
function _adjustInvestorCount(address _from, address _to, uint256 _value) internal nonpayable
Arguments
Name | Type | Description |
_from | address | sender of transfer |
_to | address | receiver of transfer |
_value | uint256 | value of transfer |
freezes transfers
function freezeTransfers() external nonpayable
Arguments
Name | Type | Description |
Unfreeze transfers
function unfreezeTransfers() external nonpayable
Arguments
Name | Type | Description |
Internal - adjusts token holder balance at checkpoint before a token transfer
function _adjustBalanceCheckpoints(address _investor) internal nonpayable
Arguments
Name | Type | Description |
_investor | address | address of the token holder affected |
โคพ overrides ERC20.transferโ
Overloaded version of the transfer function
function transfer(address _to, uint256 _value) public nonpayablereturns(success bool)
Returns
bool success
Arguments
Name | Type | Description |
_to | address | receiver of transfer |
_value | uint256 | value of transfer |
โคพ overrides IERC1594.transferWithDataโ
Transfer restrictions can take many forms and typically involve on-chain rules or whitelists. However for many types of approved transfers, maintaining an on-chain list of approved transfers can be cumbersome and expensive. An alternative is the co-signing approach, where in addition to the token holder approving a token transfer, and authorised entity provides signed data which further validates the transfer.
function transferWithData(address _to, uint256 _value, bytes _data) public nonpayable
Arguments
Name | Type | Description |
_to | address | address The address which you want to transfer to |
_value | uint256 | uint256 the amount of tokens to be transferred |
_data | bytes | The |
for the token contract to interpret or record. This could be signed data authorising the transfer (e.g. a dynamic whitelist) but is flexible enough to accomadate other use-cases. |
function _transferWithData(address _from, address _to, uint256 _value, bytes _data) internal nonpayable
Arguments
Name | Type | Description |
_from | address | โ |
_to | address | โ |
_value | uint256 | โ |
_data | bytes | โ |
โคพ overrides ERC20.transferFromโ
Overloaded version of the transferFrom function
function transferFrom(address _from, address _to, uint256 _value) public nonpayablereturns(bool)
Returns
bool success
Arguments
Name | Type | Description |
_from | address | sender of transfer |
_to | address | receiver of transfer |
_value | uint256 | value of transfer |
โคพ overrides IERC1594.transferFromWithDataโ
Transfer restrictions can take many forms and typically involve on-chain rules or whitelists. However for many types of approved transfers, maintaining an on-chain list of approved transfers can be cumbersome and expensive. An alternative is the co-signing approach, where in addition to the token holder approving a token transfer, and authorised entity provides signed data which further validates the transfer.
function transferFromWithData(address _from, address _to, uint256 _value, bytes _data) public nonpayable
Arguments
Name | Type | Description |
_from | address | address The address which you want to send tokens from |
_to | address | address The address which you want to transfer to |
_value | uint256 | uint256 the amount of tokens to be transferred |
_data | bytes | The |
for the token contract to interpret or record. This could be signed data authorising the transfer (e.g. a dynamic whitelist) but is flexible enough to accomadate other use-cases. |
โคพ overrides IERC1410.balanceOfByPartitionโ
Get the balance according to the provided partitions
function balanceOfByPartition(bytes32 _partition, address _tokenHolder) public viewreturns(uint256)
Returns
Amount of tokens as per the given partitions
Arguments
Name | Type | Description |
_partition | bytes32 | Partition which differentiate the tokens. |
_tokenHolder | address | Whom balance need to queried |
function _balanceOfByPartition(bytes32 _partition, address _tokenHolder, uint256 _additionalBalance) internal viewreturns(partitionBalance uint256)
Arguments
Name | Type | Description |
_partition | bytes32 | โ |
_tokenHolder | address | โ |
_additionalBalance | uint256 | โ |
โคพ overrides IERC1410.transferByPartitionโ
Transfers the ownership of tokens from a specified partition from one address to another address
function transferByPartition(bytes32 _partition, address _to, uint256 _value, bytes _data) public nonpayablereturns(bytes32)
Returns
The partition to which the transferred tokens were allocated for the _to address
Arguments
Name | Type | Description |
_partition | bytes32 | The partition from which to transfer tokens |
_to | address | The address to which to transfer tokens to |
_value | uint256 | The amount of tokens to transfer from |
_data | bytes | Additional data attached to the transfer of tokens |
function _transferByPartition(address _from, address _to, uint256 _value, bytes32 _partition, bytes _data, address _operator, bytes _operatorData) internal nonpayablereturns(toPartition bytes32)
Arguments
Name | Type | Description |
_from | address | โ |
_to | address | โ |
_value | uint256 | โ |
_partition | bytes32 | โ |
_data | bytes | โ |
_operator | address | โ |
_operatorData | bytes | โ |
function _returnPartition(uint256 _beforeBalance, uint256 _afterBalance, uint256 _value) internal purereturns(toPartition bytes32)
Arguments
Name | Type | Description |
_beforeBalance | uint256 | โ |
_afterBalance | uint256 | โ |
_value | uint256 | โ |
โคพ overrides IERC1410.authorizeOperatorโ
Authorises an operator for all partitions of msg.sender
. NB - Allowing investors to authorize an investor to be an operator of all partitions but it doesn't mean we operator is allowed to transfer the LOCKED partition values. Logic for this restriction is written in operatorTransferByPartition()
function.
function authorizeOperator(address _operator) public nonpayable
Arguments
Name | Type | Description |
_operator | address | An address which is being authorised. |
โคพ overrides IERC1410.revokeOperatorโ
Revokes authorisation of an operator previously given for all partitions of msg.sender
. NB - Allowing investors to authorize an investor to be an operator of all partitions but it doesn't mean we operator is allowed to transfer the LOCKED partition values. Logic for this restriction is written in operatorTransferByPartition()
function.
function revokeOperator(address _operator) public nonpayable
Arguments
Name | Type | Description |
_operator | address | An address which is being de-authorised |
โคพ overrides IERC1410.authorizeOperatorByPartitionโ
Authorises an operator for a given partition of msg.sender
function authorizeOperatorByPartition(bytes32 _partition, address _operator) public nonpayable
Arguments
Name | Type | Description |
_partition | bytes32 | The partition to which the operator is authorised |
_operator | address | An address which is being authorised |
โคพ overrides IERC1410.revokeOperatorByPartitionโ
Revokes authorisation of an operator previously given for a specified partition of msg.sender
function revokeOperatorByPartition(bytes32 _partition, address _operator) public nonpayable
Arguments
Name | Type | Description |
_partition | bytes32 | The partition to which the operator is de-authorised |
_operator | address | An address which is being de-authorised |
โคพ overrides IERC1410.operatorTransferByPartitionโ
Transfers the ownership of tokens from a specified partition from one address to another address
function operatorTransferByPartition(bytes32 _partition, address _from, address _to, uint256 _value, bytes _data, bytes _operatorData) external nonpayablereturns(bytes32)
Returns
The partition to which the transferred tokens were allocated for the _to address
Arguments
Name | Type | Description |
_partition | bytes32 | The partition from which to transfer tokens. |
_from | address | The address from which to transfer tokens from |
_to | address | The address to which to transfer tokens to |
_value | uint256 | The amount of tokens to transfer from |
_data | bytes | Additional data attached to the transfer of tokens |
_operatorData | bytes | Additional data attached to the transfer of tokens by the operator |
function _validateOperatorAndPartition(bytes32 _partition, address _from, address _operator) internal view
Arguments
Name | Type | Description |
_partition | bytes32 | โ |
_from | address | โ |
_operator | address | โ |
Updates internal variables when performing a transfer
function _updateTransfer(address _from, address _to, uint256 _value, bytes _data) internal nonpayable nonReentrantreturns(verified bool)
Returns
bool success
Arguments
Name | Type | Description |
_from | address | sender of transfer |
_to | address | receiver of transfer |
_value | uint256 | value of transfer |
_data | bytes | data to indicate validation |
Validate transfer with TransferManager module if it exists
function _executeTransfer(address _from, address _to, uint256 _value, bytes _data) internal nonpayable checkGranularityreturns(bool)
Returns
bool
Arguments
Name | Type | Description |
_from | address | sender of transfer |
_to | address | receiver of transfer |
_value | uint256 | value of transfer |
_data | bytes | data to indicate validation |
Permanently freeze issuance of this security token.
function freezeIssuance(bytes _signature) external nonpayable
Arguments
Name | Type | Description |
_signature | bytes | โ |
โคพ overrides IERC1594.issueโ
This function must be called to increase the total supply (Corresponds to mint function of ERC20).
function issue(address _tokenHolder, uint256 _value, bytes _data) public nonpayable
Arguments
Name | Type | Description |
_tokenHolder | address | The account that will receive the created tokens (account should be whitelisted or KYCed). |
_value | uint256 | The amount of tokens need to be issued |
_data | bytes | The |
function _issue(address _tokenHolder, uint256 _value, bytes _data) internal nonpayable
Arguments
Name | Type | Description |
_tokenHolder | address | โ |
_value | uint256 | โ |
_data | bytes | โ |
issue new tokens and assigns them to the target _tokenHolder.
function issueMulti(address[] _tokenHolders, uint256[] _values) public nonpayable
Returns
success
Arguments
Name | Type | Description |
_tokenHolders | address[] | A list of addresses to whom the minted tokens will be dilivered |
_values | uint256[] | A list of number of tokens get minted and transfer to corresponding address of the investor from _tokenHolders[] list |
โคพ overrides IERC1410.issueByPartitionโ
Increases totalSupply and the corresponding amount of the specified owners partition
function issueByPartition(bytes32 _partition, address _tokenHolder, uint256 _value, bytes _data) external nonpayable
Arguments
Name | Type | Description |
_partition | bytes32 | The partition to allocate the increase in balance |
_tokenHolder | address | The token holder whose balance should be increased |
_value | uint256 | The amount by which to increase the balance |
_data | bytes | Additional data attached to the minting of tokens |
โคพ overrides IERC1594.redeemโ
This function redeem an amount of the token of a msg.sender. For doing so msg.sender may incentivize using different ways that could be implemented with in the redeem
function definition. But those implementations are out of the scope of the ERC1594.
function redeem(uint256 _value, bytes _data) external nonpayable
Arguments
Name | Type | Description |
_value | uint256 | The amount of tokens need to be redeemed |
_data | bytes | The |
function _redeem(address _from, uint256 _value, bytes _data) internal nonpayable
Arguments
Name | Type | Description |
_from | address | โ |
_value | uint256 | โ |
_data | bytes | โ |
โคพ overrides IERC1410.redeemByPartitionโ
Decreases totalSupply and the corresponding amount of the specified partition of msg.sender
function redeemByPartition(bytes32 _partition, uint256 _value, bytes _data) external nonpayable
Arguments
Name | Type | Description |
_partition | bytes32 | The partition to allocate the decrease in balance |
_value | uint256 | The amount by which to decrease the balance |
_data | bytes | Additional data attached to the burning of tokens |
function _redeemByPartition(bytes32 _partition, address _from, uint256 _value, address _operator, bytes _data, bytes _operatorData) internal nonpayable
Arguments
Name | Type | Description |
_partition | bytes32 | โ |
_from | address | โ |
_value | uint256 | โ |
_operator | address | โ |
_data | bytes | โ |
_operatorData | bytes | โ |
โคพ overrides IERC1410.operatorRedeemByPartitionโ
Decreases totalSupply and the corresponding amount of the specified partition of tokenHolder
function operatorRedeemByPartition(bytes32 _partition, address _tokenHolder, uint256 _value, bytes _data, bytes _operatorData) external nonpayable
Arguments
Name | Type | Description |
_partition | bytes32 | The partition to allocate the decrease in balance. |
_tokenHolder | address | The token holder whose balance should be decreased |
_value | uint256 | The amount by which to decrease the balance |
_data | bytes | Additional data attached to the burning of tokens |
_operatorData | bytes | Additional data attached to the transfer of tokens by the operator |
function _checkAndBurn(address _from, uint256 _value, bytes _data) internal nonpayablereturns(verified bool)
Arguments
Name | Type | Description |
_from | address | โ |
_value | uint256 | โ |
_data | bytes | โ |
โคพ overrides IERC1594.redeemFromโ
This function redeem an amount of the token of a msg.sender. For doing so msg.sender may incentivize using different ways that could be implemented with in the redeem
function definition. But those implementations are out of the scope of the ERC1594.
function redeemFrom(address _tokenHolder, uint256 _value, bytes _data) external nonpayable
Arguments
Name | Type | Description |
_tokenHolder | address | The account whose tokens gets redeemed. |
_value | uint256 | The amount of tokens need to be redeemed |
_data | bytes | The |
Creates a checkpoint that can be used to query historical balances / totalSuppy
function createCheckpoint() external nonpayablereturns(uint256)
Returns
uint256
Arguments
Name | Type | Description |
Used by the issuer to set the controller addresses
function setController(address _controller) external nonpayable
Arguments
Name | Type | Description |
_controller | address | address of the controller |
Used by the issuer to permanently disable controller functionality
function disableController(bytes _signature) external nonpayable
Arguments
Name | Type | Description |
_signature | bytes | โ |
โคพ overrides IERC1594.canTransferโ
Transfers of securities may fail for a number of reasons. So this function will used to understand the cause of failure by getting the byte value. Which will be the ESC that follows the EIP 1066. ESC can be mapped with a reson string to understand the failure cause, table of Ethereum status code will always reside off-chain
function canTransfer(address _to, uint256 _value, bytes _data) external viewreturns(bytes1, bytes32)
Returns
byte Ethereum status code (ESC)
Arguments
Name | Type | Description |
_to | address | address The address which you want to transfer to |
_value | uint256 | uint256 the amount of tokens to be transferred |
_data | bytes | The |
โคพ overrides IERC1594.canTransferFromโ
Transfers of securities may fail for a number of reasons. So this function will used to understand the cause of failure by getting the byte value. Which will be the ESC that follows the EIP 1066. ESC can be mapped with a reson string to understand the failure cause, table of Ethereum status code will always reside off-chain
function canTransferFrom(address _from, address _to, uint256 _value, bytes _data) external viewreturns(reasonCode bytes1, appCode bytes32)
Returns
byte Ethereum status code (ESC)
Arguments
Name | Type | Description |
_from | address | address The address which you want to send tokens from |
_to | address | address The address which you want to transfer to |
_value | uint256 | uint256 the amount of tokens to be transferred |
_data | bytes | The |
function _canTransfer(address _from, address _to, uint256 _value, bytes _data) internal viewreturns(bytes1, bytes32)
Arguments
Name | Type | Description |
_from | address | โ |
_to | address | โ |
_value | uint256 | โ |
_data | bytes | โ |
โคพ overrides IERC1410.canTransferByPartitionโ
The standard provides an on-chain function to determine whether a transfer will succeed, and return details indicating the reason if the transfer is not valid.
function canTransferByPartition(address _from, address _to, bytes32 _partition, uint256 _value, bytes _data) external viewreturns(reasonCode bytes1, appStatusCode bytes32, toPartition bytes32)
Returns
ESC (Ethereum Status Code) following the EIP-1066 standard
Arguments
Name | Type | Description |
_from | address | The address from whom the tokens get transferred. |
_to | address | The address to which to transfer tokens to. |
_partition | bytes32 | The partition from which to transfer tokens |
_value | uint256 | The amount of tokens to transfer from |
_data | bytes | Additional data attached to the transfer of tokens |
โคพ overrides IERC1643.setDocumentโ
Used to attach a new document to the contract, or update the URI or hash of an existing attached document
function setDocument(bytes32 _name, string _uri, bytes32 _documentHash) external nonpayable
Arguments
Name | Type | Description |
_name | bytes32 | Name of the document. It should be unique always |
_uri | string | Off-chain uri of the document from where it is accessible to investors/advisors to read. |
_documentHash | bytes32 | hash (of the contents) of the document. |
โคพ overrides IERC1643.removeDocumentโ
Used to remove an existing document from the contract by giving the name of the document.
function removeDocument(bytes32 _name) external nonpayable
Arguments
Name | Type | Description |
_name | bytes32 | Name of the document. It should be unique always |
โคพ overrides IERC1644.isControllableโ
In order to provide transparency over whether controllerTransfer
/ controllerRedeem
are useable or not isControllable
function will be used.
function isControllable() public viewreturns(bool)
Returns
bool true
when controller address is non-zero otherwise return false
.
Arguments
Name | Type | Description |
โคพ overrides IERC1644.controllerTransferโ
This function allows an authorised address to transfer tokens between any two token holders. The transfer must still respect the balances of the token holders (so the transfer must be for at most balanceOf(_from)
tokens) and potentially also need to respect other transfer restrictions.
function controllerTransfer(address _from, address _to, uint256 _value, bytes _data, bytes _operatorData) external nonpayable
Arguments
Name | Type | Description |
_from | address | Address The address which you want to send tokens from |
_to | address | Address The address which you want to transfer to |
_value | uint256 | uint256 the amount of tokens to be transferred |
_data | bytes | data to validate the transfer. (It is not used in this reference implementation |
because use of _data
parameter is implementation specific). | | _operatorData | bytes | data attached to the transfer by controller to emit in event. (It is more like a reason string for calling this function (aka force transfer) which provides the transparency on-chain). |
โคพ overrides IERC1644.controllerRedeemโ
This function allows an authorised address to redeem tokens for any token holder. The redemption must still respect the balances of the token holder (so the redemption must be for at most balanceOf(_tokenHolder)
tokens) and potentially also need to respect other transfer restrictions.
function controllerRedeem(address _tokenHolder, uint256 _value, bytes _data, bytes _operatorData) external nonpayable
Arguments
Name | Type | Description |
_tokenHolder | address | The account whose tokens will be redeemed. |
_value | uint256 | uint256 the amount of tokens need to be redeemed. |
_data | bytes | data to validate the transfer. (It is not used in this reference implementation |
because use of _data
parameter is implementation specific). | | _operatorData | bytes | data attached to the transfer by controller to emit in event. (It is more like a reason string for calling this function (aka force transfer) which provides the transparency on-chain). |
โคพ overrides Proxy._implementationโ
function _implementation() internal viewreturns(address)
Arguments
Name | Type | Description |
function updateFromRegistry() public nonpayable
Arguments
Name | Type | Description |
function owner() public viewreturns(address)
Returns
the address of the owner.
Arguments
Name | Type | Description |
function isOwner() public viewreturns(bool)
Returns
true if msg.sender
is the owner of the contract.
Arguments
Name | Type | Description |
Allows the current owner to transfer control of the contract to a newOwner.
function transferOwnership(address newOwner) external nonpayable
Arguments
Name | Type | Description |
newOwner | address | The address to transfer ownership to. |
Transfers control of the contract to a newOwner.
function _transferOwnership(address newOwner) internal nonpayable
Arguments
Name | Type | Description |
newOwner | address | The address to transfer ownership to. |
Check if a status code represents success (ie: 0x*1)