@@ -108,7 +108,7 @@ contract SecurityTokenRegistry is EternalStorage, Proxy {
108108 // Emit when ownership of the ticker gets changed
109109 event ChangeTickerOwnership (string _ticker , address indexed _oldOwner , address indexed _newOwner );
110110 // Emit at the time of launching a new security token of version 3.0+
111- event NewSecurityTokenCreated (
111+ event NewSecurityToken (
112112 string _ticker ,
113113 string _name ,
114114 address indexed _securityTokenAddress ,
@@ -173,10 +173,14 @@ contract SecurityTokenRegistry is EternalStorage, Proxy {
173173 * @dev Throws if called by any account other than the owner.
174174 */
175175 modifier onlyOwner () {
176- require ( msg . sender == owner (), " Only owner " );
176+ _onlyOwner ( );
177177 _;
178178 }
179179
180+ function _onlyOwner () internal view {
181+ require (msg .sender == owner (), "Only owner " );
182+ }
183+
180184 modifier onlyOwnerOrSelf () {
181185 require (msg .sender == owner () || msg .sender == address (this ), "Only owner or self " );
182186 _;
@@ -639,7 +643,7 @@ contract SecurityTokenRegistry is EternalStorage, Proxy {
639643 _ticker, _name, newSecurityTokenAddress, issuer, now , issuer, false , _polyFee
640644 );
641645 } else {
642- emit NewSecurityTokenCreated (
646+ emit NewSecurityToken (
643647 _ticker, _name, newSecurityTokenAddress, issuer, now , issuer, false , _usdFee, _polyFee, _protocolVersion
644648 );
645649 }
@@ -691,15 +695,24 @@ contract SecurityTokenRegistry is EternalStorage, Proxy {
691695 internal
692696 returns (address newSecurityTokenAddress )
693697 {
698+ // In v2.x of STFactory, the final argument to deployToken is the PolymathRegistry.
699+ // In v3.x of STFactory, the final argument to deployToken is the Treasury wallet.
700+ uint8 [] memory upperLimit = new uint8 [](3 );
701+ upperLimit[0 ] = 2 ;
702+ upperLimit[1 ] = 99 ;
703+ upperLimit[2 ] = 99 ;
704+ if (VersionUtils.lessThanOrEqual (VersionUtils.unpack (uint24 (_protocolVersion)), upperLimit)) {
705+ _wallet = getAddressValue (POLYMATHREGISTRY);
706+ }
707+
694708 newSecurityTokenAddress = ISTFactory (getAddressValue (Encoder.getKey ("protocolVersionST " , _protocolVersion))).deployToken (
695709 _name,
696710 _ticker,
697711 18 ,
698712 _tokenDetails,
699713 _issuer,
700714 _divisible,
701- _wallet,
702- getAddressValue (POLYMATHREGISTRY)
715+ _wallet
703716 );
704717
705718 /*solium-disable-next-line security/no-block-members*/
@@ -739,7 +752,7 @@ contract SecurityTokenRegistry is EternalStorage, Proxy {
739752 set (Encoder.getKey ("tickerToSecurityToken " , ticker), _securityToken);
740753 _modifyTicker (_owner, ticker, registrationTime, expiryTime, true );
741754 _storeSecurityTokenData (_securityToken, ticker, _tokenDetails, _deployedAt);
742- emit NewSecurityTokenCreated (
755+ emit NewSecurityToken (
743756 ticker, ISecurityToken (_securityToken).name (), _securityToken, _owner, _deployedAt, msg .sender , true , uint256 (0 ), uint256 (0 ), 0
744757 );
745758 }
@@ -951,5 +964,4 @@ contract SecurityTokenRegistry is EternalStorage, Proxy {
951964 function owner () public view returns (address ) {
952965 return getAddressValue (OWNER);
953966 }
954-
955967}
0 commit comments