Interface for all security tokens (ISecurityToken.sol)
Last updated
Was this helpful?
Last updated
Was this helpful?
View Source:
ISecurityToken
Events
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
owner
address
Arguments
Name
Type
Description
owner
address
spender
address
Arguments
Name
Type
Description
to
address
value
uint256
Arguments
Name
Type
Description
from
address
to
address
value
uint256
Arguments
Name
Type
Description
spender
address
value
uint256
Arguments
Name
Type
Description
spender
address
subtractedValue
uint256
Arguments
Name
Type
Description
spender
address
addedValue
uint256
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
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 bytes _data
allows arbitrary data to be submitted alongside the transfer.
Initialization function
Arguments
Name
Type
Description
_getterDelegate
address
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.
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 _partition
_data
bytes
Additional data attached to the transfer of tokens
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
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 bytes _data
allows arbitrary data to be submitted alongside the transfer.
Used to attach a new document to the contract, or update the URI or hash of an existing attached document
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.
Used to remove an existing document from the contract by giving the name of the document.
Arguments
Name
Type
Description
_name
bytes32
Name of the document. It should be unique always
Used to return the details of a document with a known name (bytes32
).
Returns
string The URI associated with the document.
Arguments
Name
Type
Description
_name
bytes32
Name of the document
Used to retrieve a full list of documents attached to the smart contract.
Returns
bytes32 List of all documents names present in the contract.
Arguments
Name
Type
Description
In order to provide transparency over whether controllerTransfer
/ controllerRedeem
are useable or not isControllable
function will be used.
Returns
bool true
when controller address is non-zero otherwise return false
.
Arguments
Name
Type
Description
Checks if an address is a module of certain type
Arguments
Name
Type
Description
_module
address
Address to check
_type
uint8
type to check against
This function must be called to increase the total supply (Corresponds to mint function of ERC20).
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 bytes _data
allows arbitrary data to be submitted alongside the transfer.
issue new tokens and assigns them to the target _tokenHolder.
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
Increases totalSupply and the corresponding amount of the specified owners partition
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
Decreases totalSupply and the corresponding amount of the specified partition of msg.sender
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
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.
Arguments
Name
Type
Description
_value
uint256
The amount of tokens need to be redeemed
_data
bytes
The bytes _data
it can be used in the token contract to authenticate the redemption.
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.
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 bytes _data
it can be used in the token contract to authenticate the redemption.
Decreases totalSupply and the corresponding amount of the specified partition of tokenHolder
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
Validate permissions with PermissionManager if it exists, If no Permission return false
Returns
success
Arguments
Name
Type
Description
_delegate
address
address of delegate
_module
address
address of PermissionManager module
_perm
bytes32
the permissions
Returns module list for a module type
Returns
bytes32 Name
Arguments
Name
Type
Description
_module
address
Address of the module
Returns module list for a module name
Returns
address[] List of modules with this name
Arguments
Name
Type
Description
_name
bytes32
Name of the module
Returns module list for a module type
Returns
address[] List of modules with this type
Arguments
Name
Type
Description
_type
uint8
Type of the module
use to return the global treasury wallet
Arguments
Name
Type
Description
Queries totalSupply at a specified checkpoint
Arguments
Name
Type
Description
_checkpointId
uint256
Checkpoint ID to query as of
Queries balance at a specified checkpoint
Arguments
Name
Type
Description
_investor
address
Investor to query balance for
_checkpointId
uint256
Checkpoint ID to query as of
Creates a checkpoint that can be used to query historical balances / totalSuppy
Arguments
Name
Type
Description
Gets list of times that checkpoints were created
Returns
List of checkpoint times
Arguments
Name
Type
Description
returns an array of investors NB - this length may differ from investorCount as it contains all investors that ever held tokens
Returns
list of addresses
Arguments
Name
Type
Description
returns an array of investors at a given checkpoint NB - this length may differ from investorCount as it contains all investors that ever held tokens
Returns
list of investors
Arguments
Name
Type
Description
_checkpointId
uint256
Checkpoint id at which investor list is to be populated
returns an array of investors with non zero balance at a given checkpoint
Returns
list of investors
Arguments
Name
Type
Description
_checkpointId
uint256
Checkpoint id at which investor list is to be populated
_start
uint256
Position of investor to start iteration from
_end
uint256
Position of investor to stop iteration at
generates subset of investors NB - can be used in batches if investor list is large
Returns
list of investors
Arguments
Name
Type
Description
_start
uint256
Position of investor to start iteration from
_end
uint256
Position of investor to stop iteration at
Gets current checkpoint ID
Returns
Id
Arguments
Name
Type
Description
Determines whether _operator
is an operator for all partitions of _tokenHolder
Returns
Whether the _operator
is an operator for all partitions of _tokenHolder
Arguments
Name
Type
Description
_operator
address
The operator to check
_tokenHolder
address
The token holder to check
Determines whether _operator
is an operator for a specified partition of _tokenHolder
Returns
Whether the _operator
is an operator for a specified partition of _tokenHolder
Arguments
Name
Type
Description
_partition
bytes32
The partition to check
_operator
address
The operator to check
_tokenHolder
address
The token holder to check
Return all partitions
Returns
List of partitions
Arguments
Name
Type
Description
_tokenHolder
address
Whom balance need to queried
Gets data store address
Returns
data store address
Arguments
Name
Type
Description
Allows owner to change data store
Arguments
Name
Type
Description
_dataStore
address
Address of the token data store
Allows to change the treasury wallet address
Arguments
Name
Type
Description
_wallet
address
Ethereum address of the treasury wallet
Allows the owner to withdraw unspent POLY stored by them on the ST or any ERC20 token.
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
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
Changes the tokenDetails
Arguments
Name
Type
Description
_newTokenDetails
string
New token details
Allows owner to change token name
Arguments
Name
Type
Description
_name
string
new name of the token
Allows the owner to change token granularity
Arguments
Name
Type
Description
_granularity
uint256
Granularity level of the token
Freezes all the transfers
Arguments
Name
Type
Description
Un-freezes all the transfers
Arguments
Name
Type
Description
Permanently freeze issuance of this security token.
Arguments
Name
Type
Description
_signature
bytes
Attachs a module to the SecurityToken
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
whether to add the module as an archived module
Function used to attach a module to the security token
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 module. (WIP)
_budget
uint256
max amount of ongoing POLY willing to assign to the module.
_archived
bool
whether to add the module as an archived module
Archives a module attached to the SecurityToken
Arguments
Name
Type
Description
_module
address
address of module to archive
Unarchives a module attached to the SecurityToken
Arguments
Name
Type
Description
_module
address
address of module to unarchive
Removes a module attached to the SecurityToken
Arguments
Name
Type
Description
_module
address
address of module to archive
Used by the issuer to set the controller addresses
Arguments
Name
Type
Description
_controller
address
address of the controller
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.
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). |
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.
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). |
Used by the issuer to permanently disable controller functionality
Arguments
Name
Type
Description
_signature
bytes
Used to get the version of the securityToken
Arguments
Name
Type
Description
Gets the investor count
Arguments
Name
Type
Description
Gets the holder count (investors with non zero balance)
Arguments
Name
Type
Description
Overloaded version of the transfer function
Returns
bool success
Arguments
Name
Type
Description
_to
address
receiver of transfer
_value
uint256
value of transfer
_data
bytes
data to indicate validation
Overloaded version of the transferFrom function
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
Transfers the ownership of tokens from a specified partition from one address to another address
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 _partition
_data
bytes
Additional data attached to the transfer of tokens
Get the balance according to the provided partitions
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
Provides the granularity of the token
Returns
uint256
Arguments
Name
Type
Description
Provides the address of the polymathRegistry
Returns
address
Arguments
Name
Type
Description
Upgrades a module attached to the SecurityToken
Arguments
Name
Type
Description
_module
address
address of module to archive
Upgrades security token
Arguments
Name
Type
Description
A security token issuer can specify that issuance has finished for the token (i.e. no new tokens can be minted or issued).
Returns
bool true
signifies the minting is allowed. While false
denotes the end of minting
Arguments
Name
Type
Description
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.
Arguments
Name
Type
Description
_operator
address
An address which is being authorised.
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.
Arguments
Name
Type
Description
_operator
address
An address which is being de-authorised
Authorises an operator for a given partition of msg.sender
Arguments
Name
Type
Description
_partition
bytes32
The partition to which the operator is authorised
_operator
address
An address which is being authorised
Revokes authorisation of an operator previously given for a specified partition of msg.sender
Arguments
Name
Type
Description
_partition
bytes32
The partition to which the operator is de-authorised
_operator
address
An address which is being de-authorised
Transfers the ownership of tokens from a specified partition from one address to another address
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 _partition
_data
bytes
Additional data attached to the transfer of tokens
_operatorData
bytes
Additional data attached to the transfer of tokens by the operator
Arguments
Name
Type
Description
Allows the current owner to transfer control of the contract to a newOwner.
Arguments
Name
Type
Description
newOwner
address
The address to transfer ownership to.
Returns
true if msg.sender
is the owner of the contract.
Arguments
Name
Type
Description
Returns
the address of the owner.
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description
Arguments
Name
Type
Description