Registry contract for issuers to register their tickers and security tokens (SecurityTokenRegistry.s

View Source: contracts/SecurityTokenRegistry.solโ€‹

โ†— Extends: EternalStorage, Proxy โ†˜ Derived Contracts: SecurityTokenRegistryMockโ€‹

SecurityTokenRegistry

Contract Members

Constants & Variables

bytes32 internal constant INITIALIZE;
bytes32 internal constant POLYTOKEN;
bytes32 internal constant STLAUNCHFEE;
bytes32 internal constant TICKERREGFEE;
bytes32 internal constant EXPIRYLIMIT;
bytes32 internal constant PAUSED;
bytes32 internal constant OWNER;
bytes32 internal constant POLYMATHREGISTRY;
bytes32 internal constant STRGETTER;
bytes32 internal constant IS_FEE_IN_POLY;
bytes32 internal constant ACTIVE_USERS;
bytes32 internal constant LATEST_VERSION;
string internal constant POLY_ORACLE;

Events

event Pause(address account);
event Unpause(address account);
event TickerRemoved(string _ticker, address _removedBy);
event ChangeExpiryLimit(uint256 _oldExpiry, uint256 _newExpiry);
event ChangeSecurityLaunchFee(uint256 _oldFee, uint256 _newFee);
event ChangeTickerRegistrationFee(uint256 _oldFee, uint256 _newFee);
event ChangeFeeCurrency(bool _isFeeInPoly);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
event ChangeTickerOwnership(string _ticker, address indexed _oldOwner, address indexed _newOwner);
event NewSecurityToken(string _ticker, string _name, address indexed _securityTokenAddress, address indexed _owner, uint256 _addedAt, address _registrant, bool _fromAdmin, uint256 _usdFee, uint256 _polyFee, uint256 _protocolVersion);
event NewSecurityToken(string _ticker, string _name, address indexed _securityTokenAddress, address indexed _owner, uint256 _addedAt, address _registrant, bool _fromAdmin, uint256 _registrationFee);
event RegisterTicker(address indexed _owner, string _ticker, uint256 indexed _registrationDate, uint256 indexed _expiryDate, bool _fromAdmin, uint256 _registrationFeePoly, uint256 _registrationFeeUsd);
event RegisterTicker(address indexed _owner, string _ticker, string _name, uint256 indexed _registrationDate, uint256 indexed _expiryDate, bool _fromAdmin, uint256 _registrationFee);
event SecurityTokenRefreshed(string _ticker, string _name, address indexed _securityTokenAddress, address indexed _owner, uint256 _addedAt, address _registrant, uint256 _protocolVersion);
event ProtocolFactorySet(address indexed _STFactory, uint8 _major, uint8 _minor, uint8 _patch);
event LatestVersionSet(uint8 _major, uint8 _minor, uint8 _patch);
event ProtocolFactoryRemoved(address indexed _STFactory, uint8 _major, uint8 _minor, uint8 _patch);

Modifiers

onlyOwner

Throws if called by any account other than the owner.

modifier onlyOwner() internal

Arguments

Name

Type

Description

onlyOwnerOrSelf

modifier onlyOwnerOrSelf() internal

Arguments

Name

Type

Description

whenNotPausedOrOwner

Modifier to make a function callable only when the contract is not paused.

modifier whenNotPausedOrOwner() internal

Arguments

Name

Type

Description

whenNotPaused

Modifier to make a function callable only when the contract is not paused and ignore is msg.sender is owner.

modifier whenNotPaused() internal

Arguments

Name

Type

Description

whenPaused

Modifier to make a function callable only when the contract is paused.

modifier whenPaused() internal

Arguments

Name

Type

Description

Functions

_onlyOwner

function _onlyOwner() internal view

Arguments

Name

Type

Description

_whenNotPausedOrOwner

function _whenNotPausedOrOwner() internal view

Arguments

Name

Type

Description

function () public nonpayable

Arguments

Name

Type

Description

initialize

Initializes instance of STR

function initialize(address _polymathRegistry, uint256 _stLaunchFee, uint256 _tickerRegFee, address _owner, address _getterContract) public nonpayable

Arguments

Name

Type

Description

_polymathRegistry

address

is the address of the Polymath Registry

_stLaunchFee

uint256

is the fee in USD required to launch a token

_tickerRegFee

uint256

is the fee in USD required to register a ticker

_owner

address

is the owner of the STR,

_getterContract

address

Contract address of the contract which consists getter functions.

updateFromRegistry

Used to update the polyToken contract address

function updateFromRegistry() external nonpayable onlyOwner

Arguments

Name

Type

Description

_updateFromRegistry

function _updateFromRegistry() internal nonpayable

Arguments

Name

Type

Description

_takeFee

Converts USD fees into POLY amounts

function _takeFee(bytes32 _feeType) internal nonpayable
returns(uint256, uint256)

Arguments

Name

Type

Description

_feeType

bytes32

โ€‹

getFees

Returns the usd & poly fee for a particular feetype

function getFees(bytes32 _feeType) public nonpayable
returns(usdFee uint256, polyFee uint256)

Arguments

Name

Type

Description

_feeType

bytes32

Key corresponding to fee type

getSecurityTokenLaunchFee

Gets the security token launch fee

function getSecurityTokenLaunchFee() public nonpayable
returns(polyFee uint256)

Returns

Fee amount

Arguments

Name

Type

Description

getTickerRegistrationFee

Gets the ticker registration fee

function getTickerRegistrationFee() public nonpayable
returns(polyFee uint256)

Returns

Fee amount

Arguments

Name

Type

Description

setGetterRegistry

Set the getter contract address

function setGetterRegistry(address _getterContract) public nonpayable onlyOwnerOrSelf

Arguments

Name

Type

Description

_getterContract

address

Address of the contract

_implementation

โคพ overrides Proxy._implementationโ€‹

function _implementation() internal view
returns(address)

Arguments

Name

Type

Description

registerNewTicker

Registers the token ticker to the selected owner

function registerNewTicker(address _owner, string _ticker) public nonpayable whenNotPausedOrOwner

Arguments

Name

Type

Description

_owner

address

is address of the owner of the token

_ticker

string

is unique token ticker

registerTicker

This function is just for backwards compatibility

function registerTicker(address _owner, string _ticker, string _tokenName) external nonpayable

Arguments

Name

Type

Description

_owner

address

โ€‹

_ticker

string

โ€‹

_tokenName

string

โ€‹

_addTicker

Internal - Sets the details of the ticker

function _addTicker(address _owner, string _ticker, uint256 _registrationDate, uint256 _expiryDate, bool _status, bool _fromAdmin, uint256 _polyFee, uint256 _usdFee) internal nonpayable

Arguments

Name

Type

Description

_owner

address

โ€‹

_ticker

string

โ€‹

_registrationDate

uint256

โ€‹

_expiryDate

uint256

โ€‹

_status

bool

โ€‹

_fromAdmin

bool

โ€‹

_polyFee

uint256

โ€‹

_usdFee

uint256

โ€‹

modifyExistingTicker

Modifies the ticker details. Only Polymath has the ability to do so.

function modifyExistingTicker(address _owner, string _ticker, uint256 _registrationDate, uint256 _expiryDate, bool _status) public nonpayable onlyOwner

Arguments

Name

Type

Description

_owner

address

is the owner of the token

_ticker

string

is the token ticker

_registrationDate

uint256

is the date at which ticker is registered

_expiryDate

uint256

is the expiry date for the ticker

_status

bool

is the token deployment status

modifyTicker

This function is just for backwards compatibility

function modifyTicker(address _owner, string _ticker, string _tokenName, uint256 _registrationDate, uint256 _expiryDate, bool _status) external nonpayable

Arguments

Name

Type

Description

_owner

address

โ€‹

_ticker

string

โ€‹

_tokenName

string

โ€‹

_registrationDate

uint256

โ€‹

_expiryDate

uint256

โ€‹

_status

bool

โ€‹

_modifyTicker

Internal -- Modifies the ticker details.

function _modifyTicker(address _owner, string _ticker, uint256 _registrationDate, uint256 _expiryDate, bool _status) internal nonpayable

Arguments

Name

Type

Description

_owner

address

โ€‹

_ticker

string

โ€‹

_registrationDate

uint256

โ€‹

_expiryDate

uint256

โ€‹

_status

bool

โ€‹

_tickerOwner

function _tickerOwner(string _ticker) internal view
returns(address)

Arguments

Name

Type

Description

_ticker

string

โ€‹

removeTicker

Removes the ticker details, associated ownership & security token mapping

function removeTicker(string _ticker) public nonpayable onlyOwner

Arguments

Name

Type

Description

_ticker

string

is the token ticker

tickerAvailable

Checks if the entered ticker is registered and has not expired

function tickerAvailable(string _ticker) public view
returns(bool)

Returns

bool

Arguments

Name

Type

Description

_ticker

string

is the token ticker

_tickerStatus

function _tickerStatus(string _ticker) internal view
returns(bool)

Arguments

Name

Type

Description

_ticker

string

โ€‹

_setTickerOwnership

Internal - Sets the ticker owner

function _setTickerOwnership(address _owner, string _ticker) internal nonpayable

Arguments

Name

Type

Description

_owner

address

is the address of the owner of the ticker

_ticker

string

is the ticker symbol

_storeTickerDetails

Internal - Stores the ticker details

function _storeTickerDetails(string _ticker, address _owner, uint256 _registrationDate, uint256 _expiryDate, bool _status) internal nonpayable

Arguments

Name

Type

Description

_ticker

string

โ€‹

_owner

address

โ€‹

_registrationDate

uint256

โ€‹

_expiryDate

uint256

โ€‹

_status

bool

โ€‹

transferTickerOwnership

Transfers the ownership of the ticker

function transferTickerOwnership(address _newOwner, string _ticker) public nonpayable whenNotPausedOrOwner

Arguments

Name

Type

Description

_newOwner

address

is the address of the new owner of the ticker

_ticker

string

is the ticker symbol

_deleteTickerOwnership

Internal - Removes the owner of a ticker

function _deleteTickerOwnership(address _owner, string _ticker) internal nonpayable

Arguments

Name

Type

Description

_owner

address

โ€‹

_ticker

string

โ€‹

changeExpiryLimit

Changes the expiry time for the token ticker. Only available to Polymath.

function changeExpiryLimit(uint256 _newExpiry) public nonpayable onlyOwner

Arguments

Name

Type

Description

_newExpiry

uint256

is the new expiry for newly generated tickers

generateSecurityToken

Deploys an instance of a new Security Token of version 2.0 and records it to the registry

function generateSecurityToken(string _name, string _ticker, string _tokenDetails, bool _divisible) external nonpayable

Arguments

Name

Type

Description

_name

string

is the name of the token

_ticker

string

is the ticker symbol of the security token

_tokenDetails

string

is the off-chain details of the token

_divisible

bool

is whether or not the token is divisible

generateNewSecurityToken

Deploys an instance of a new Security Token and records it to the registry

function generateNewSecurityToken(string _name, string _ticker, string _tokenDetails, bool _divisible, address _treasuryWallet, uint256 _protocolVersion) public nonpayable whenNotPausedOrOwner

Arguments

Name

Type

Description

_name

string

is the name of the token

_ticker

string

is the ticker symbol of the security token

_tokenDetails

string

is the off-chain details of the token

_divisible

bool

is whether or not the token is divisible

_treasuryWallet

address

Ethereum address which will holds the STs.

_protocolVersion

uint256

Version of securityToken contract

  • _protocolVersion is the packed value of uin8[3] array (it will be calculated offchain)

  • if _protocolVersion == 0 then latest version of securityToken will be generated |

refreshSecurityToken

Deploys an instance of a new Security Token and replaces the old one in the registry This can be used to upgrade from version 2.0 of ST to 3.0 or in case something goes wrong with earlier ST

function refreshSecurityToken(string _name, string _ticker, string _tokenDetails, bool _divisible, address _treasuryWallet) public nonpayable whenNotPausedOrOwner
returns(address)

Arguments

Name

Type

Description

_name

string

is the name of the token

_ticker

string

is the ticker symbol of the security token

_tokenDetails

string

is the off-chain details of the token

_divisible

bool

is whether or not the token is divisible

_treasuryWallet

address

โ€‹

_deployToken

function _deployToken(string _name, string _ticker, string _tokenDetails, address _issuer, bool _divisible, address _wallet, uint256 _protocolVersion) internal nonpayable
returns(newSecurityTokenAddress address)

Arguments

Name

Type

Description

_name

string

โ€‹

_ticker

string

โ€‹

_tokenDetails

string

โ€‹

_issuer

address

โ€‹

_divisible

bool

โ€‹

_wallet

address

โ€‹

_protocolVersion

uint256

โ€‹

modifyExistingSecurityToken

Adds a new custom Security Token and saves it to the registry. (Token should follow the ISecurityToken interface)

function modifyExistingSecurityToken(string _ticker, address _owner, address _securityToken, string _tokenDetails, uint256 _deployedAt) public nonpayable onlyOwner

Arguments

Name

Type

Description

_ticker

string

is the ticker symbol of the security token

_owner

address

is the owner of the token

_securityToken

address

is the address of the securityToken

_tokenDetails

string

is the off-chain details of the token

_deployedAt

uint256

is the timestamp at which the security token is deployed

modifySecurityToken

This function is just for backwards compatibility

function modifySecurityToken(string , string _ticker, address _owner, address _securityToken, string _tokenDetails, uint256 _deployedAt) external nonpayable

Arguments

Name

Type

Description

โ€‹

string

โ€‹

_ticker

string

โ€‹

_owner

address

โ€‹

_securityToken

address

โ€‹

_tokenDetails

string

โ€‹

_deployedAt

uint256

โ€‹

_storeSecurityTokenData

Internal - Stores the security token details

function _storeSecurityTokenData(address _securityToken, string _ticker, string _tokenDetails, uint256 _deployedAt) internal nonpayable

Arguments

Name

Type

Description

_securityToken

address

โ€‹

_ticker

string

โ€‹

_tokenDetails

string

โ€‹

_deployedAt

uint256

โ€‹

isSecurityToken

Checks that Security Token is registered

function isSecurityToken(address _securityToken) external view
returns(bool)

Returns

bool

Arguments

Name

Type

Description

_securityToken

address

is the address of the security token

transferOwnership

Allows the current owner to transfer control of the contract to a newOwner.

function transferOwnership(address _newOwner) public nonpayable onlyOwner

Arguments

Name

Type

Description

_newOwner

address

The address to transfer ownership to.

pause

Called by the owner to pause, triggers stopped state

function pause() external nonpayable whenNotPaused onlyOwner

Arguments

Name

Type

Description

unpause

Called by the owner to unpause, returns to normal state

function unpause() external nonpayable whenPaused onlyOwner

Arguments

Name

Type

Description

changeTickerRegistrationFee

Sets the ticker registration fee in USD tokens. Only Polymath.

function changeTickerRegistrationFee(uint256 _tickerRegFee) public nonpayable onlyOwner

Arguments

Name

Type

Description

_tickerRegFee

uint256

is the registration fee in USD tokens (base 18 decimals)

_changeTickerRegistrationFee

function _changeTickerRegistrationFee(uint256 _oldFee, uint256 _newFee) internal nonpayable

Arguments

Name

Type

Description

_oldFee

uint256

โ€‹

_newFee

uint256

โ€‹

changeSecurityLaunchFee

Sets the ticker registration fee in USD tokens. Only Polymath.

function changeSecurityLaunchFee(uint256 _stLaunchFee) public nonpayable onlyOwner

Arguments

Name

Type

Description

_stLaunchFee

uint256

is the registration fee in USD tokens (base 18 decimals)

_changeSecurityLaunchFee

function _changeSecurityLaunchFee(uint256 _oldFee, uint256 _newFee) internal nonpayable

Arguments

Name

Type

Description

_oldFee

uint256

โ€‹

_newFee

uint256

โ€‹

changeFeesAmountAndCurrency

Sets the ticker registration and ST launch fee amount and currency

function changeFeesAmountAndCurrency(uint256 _tickerRegFee, uint256 _stLaunchFee, bool _isFeeInPoly) public nonpayable onlyOwner

Arguments

Name

Type

Description

_tickerRegFee

uint256

is the ticker registration fee (base 18 decimals)

_stLaunchFee

uint256

is the st generation fee (base 18 decimals)

_isFeeInPoly

bool

defines if the fee is in poly or usd

reclaimERC20

Reclaims all ERC20Basic compatible tokens

function reclaimERC20(address _tokenContract) public nonpayable onlyOwner

Arguments

Name

Type

Description

_tokenContract

address

is the address of the token contract

setProtocolFactory

Changes the SecurityToken contract for a particular factory version

function setProtocolFactory(address _STFactoryAddress, uint8 _major, uint8 _minor, uint8 _patch) public nonpayable onlyOwner

Arguments

Name

Type

Description

_STFactoryAddress

address

is the address of the proxy.

_major

uint8

Major version of the proxy.

_minor

uint8

Minor version of the proxy.

_patch

uint8

Patch version of the proxy

_setProtocolFactory

function _setProtocolFactory(address _STFactoryAddress, uint8 _major, uint8 _minor, uint8 _patch) internal nonpayable

Arguments

Name

Type

Description

_STFactoryAddress

address

โ€‹

_major

uint8

โ€‹

_minor

uint8

โ€‹

_patch

uint8

โ€‹

removeProtocolFactory

Removes a STFactory

function removeProtocolFactory(uint8 _major, uint8 _minor, uint8 _patch) public nonpayable onlyOwner

Arguments

Name

Type

Description

_major

uint8

Major version of the proxy.

_minor

uint8

Minor version of the proxy.

_patch

uint8

Patch version of the proxy

setLatestVersion

Changes the default protocol version

function setLatestVersion(uint8 _major, uint8 _minor, uint8 _patch) public nonpayable onlyOwner

Arguments

Name

Type

Description

_major

uint8

Major version of the proxy.

_minor

uint8

Minor version of the proxy.

_patch

uint8

Patch version of the proxy

_setLatestVersion

function _setLatestVersion(uint8 _major, uint8 _minor, uint8 _patch) internal nonpayable

Arguments

Name

Type

Description

_major

uint8

โ€‹

_minor

uint8

โ€‹

_patch

uint8

โ€‹

updatePolyTokenAddress

Changes the PolyToken address. Only Polymath.

function updatePolyTokenAddress(address _newAddress) public nonpayable onlyOwner

Arguments

Name

Type

Description

_newAddress

address

is the address of the polytoken.

isPaused

Check whether the registry is paused or not

function isPaused() public view
returns(bool)

Returns

bool

Arguments

Name

Type

Description

owner

Gets the owner of the contract

function owner() public view
returns(address)

Returns

address owner

Arguments

Name

Type

Description