Skip to content
This repository has been archived by the owner on Jul 6, 2022. It is now read-only.

Latest commit

 

History

History
6175 lines (5610 loc) · 309 KB

File metadata and controls

6175 lines (5610 loc) · 309 KB
### Output ```console > polymath-core@3.0.0 test ./code > scripts/test.sh 2> /dev/null Starting our own testrpc instance Using network 'development'. Compiling your contracts... =========================== > Everything is up to date, there is nothing to compile. ----------------------- Polymath Network Smart Contracts: ----------------------- PolymathRegistry: 0x9c47796Bc1e469a60dCBF680273ff011e45a1327 SecurityTokenRegistry (Proxy): 0x593B03dbA3521f3A2406Bc626a4f1ECA2b6EE41c ModuleRegistry (Proxy): 0xC61431eb6c69189F844A595234Ce331B7C8A7A77 FeatureRegistry: 0x0E3c11dc1CfE82F8748363De7C58Bdd4eBA39A42 STRGetter: 0x05EBcDfaA3537C9B6b6c1eF501eE609601A98574 ETHOracle: 0xc4c7497fBe1A886841a195a5d622Cd60053c1376 POLYOracle: 0x85a84691547b7ccF19D7c31977A7F8c0aF1FB25A POLYStableOracle: 0x7cC4B1851c35959D34e635A470F6b5C43bA3C9c9 STFactory: 0x35623bbcb020F57f0465cce7d7ba1e8C87CAEE5f GeneralTransferManagerLogic: 0x8fd73071ae9e224cfE711a7186E19D1f02FEdEd5 GeneralTransferManagerFactory: 0xDA1Ea1362475997419D2055dD43390AEE34c6c37 GeneralPermissionManagerLogic: 0x5baB00b1582B170DBAE7557586A29BA9EeA6f55b GeneralPermissionManagerFactory: 0x5E506e2E0EaD3Ff9d93859A5879cAA02582f77c3 CappedSTOLogic: 0x28B291E74bcE603004B52921Ec9Ad3DDb6F85e44 CappedSTOFactory: 0xDC3B181D9644Cd486B2B0c44bE14D55e17061136 USDTieredSTOLogic: 0x52FF2aA36438a796dba3029150802f4CC5FED96C USDTieredSTOFactory: 0x091Fdf2B7Ef4cec6684Ce730ca8332AaF5308178 CountTransferManagerLogic: 0x320051BbD4eeE344Bb86F0A858d03595837463eF CountTransferManagerFactory: 0x254C1eAE847823B664D1Acb1BdfE5e19172D8336 PercentageTransferManagerLogic: 0xa7dF1d30f6456Dc72cE18fE011896105651a1f86 PercentageTransferManagerFactory: 0x403cc7802725928652a3d116Bb1781005e2e76d3 ManualApprovalTransferManagerLogic: 0xa6421A7f48498cee3aEb6428a8A2DD5fAA3AcE2f ManualApprovalTransferManagerFactory: 0x40023EAc4d2fCf91ce93B68C789aE14Aaa120d0E EtherDividendCheckpointLogic: 0x232e1128a21BBfFbC8d6BefaCb10137F37A653a0 ERC20DividendCheckpointLogic: 0x9b557777Be33A8A2fE6aF93E017A0d139B439E5D EtherDividendCheckpointFactory: 0x7DCC8D20Ff08A8cd50464544139aF34abC1384fB ERC20DividendCheckpointFactory: 0x162A36c9821eadeCFF9669A3940b7f72d055Cd1c VolumeRestrictionTMFactory: 0x5d093A0e0328Ad17469b948De7f2DfD4b5eE5544 VolumeRestrictionTMLogic: 0x3d627fE11843eF6b3D5EC6683D53BD9822696Ef6 --------------------------------------------------------------------------------- Contract: CappedSTO STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 CappedSTOFactory: 0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (88ms) 0xa13BeaC90A97420310c3430c2A921786eA12D214 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a ✓ Should generate the new security token with the same symbol as registered above (456ms) ✓ Should initialize the auto attached modules ✓ Should mint the tokens before attaching the STO (92ms) ✓ Should fail to launch the STO due to security token doesn't have the sufficient POLY (239ms) ✓ Should fail to launch the STO due to rate is 0 (257ms) ✓ Should fail to launch the STO due funds reciever account 0x (230ms) ✓ Should fail to launch the STO due to raise type of 0 length (226ms) ✓ Should fail to launch the STO due to startTime > endTime (220ms) ✓ Should fail to launch the STO due to cap is of 0 securityToken (251ms) ✓ Should fail to launch the STO due to different value incompare to getInitFunction (270ms) ✓ Should successfully attach the STO module to the security token (203ms) ✓ Should call the configure function -- fail because of the bad owner verify the data of STO ✓ Should verify the configuration of the STO (55ms) Buy tokens ✓ Should buy the tokens -- failed due to startTime is greater than Current time (55ms) ✓ Should buy the tokens -- Failed due to investor is not in the whitelist (233ms) ✓ Should buy the tokens -- failed due to invested amount is zero ✓ Should Buy the tokens (147ms) ✓ Verification of the event Token Purchase ✓ Should fail to buy the tokens -- Because fundRaiseType is ETH not POLY (66ms) ✓ Should pause the STO -- Failed due to wrong msg.sender ✓ Should pause the STO (43ms) ✓ Should fail to buy the tokens after pausing the STO ✓ Should unpause the STO -- Failed due to wrong msg.sender ✓ Should unpause the STO ✓ Should buy the granular unit tokens and refund pending amount (224ms) ✓ Should restrict to buy tokens after hiting the cap in second tx first tx pass (146ms) ✓ Should fundRaised value equal to the raised value in the funds receiver wallet ✓ Should get the raised amount of ether ✓ Should get the raised amount of poly Reclaim poly sent to STO by mistake ✓ Should fail to reclaim POLY because token contract address is 0 address (72ms) ✓ Should successfully reclaim POLY (136ms) Attach second ETH STO module ✓ Should successfully attach the second STO module to the security token (230ms) ✓ Should verify the configuration of the STO (56ms) ✓ Should successfully whitelist investor 3 (80ms) ✓ Should invest in second STO - fails due to incorrect beneficiary ✓ Should allow non-matching beneficiary ✓ Should allow non-matching beneficiary -- failed because it is already active ✓ Should invest in second STO (119ms) Test cases for reaching limit number of STO modules ✓ Should successfully attach 10 STO modules (1720ms) ✓ Should successfully invest in all STO modules attached (835ms) Test Cases for an STO of fundraise type POLY Launch a new SecurityToken ✓ POLY: Should register the ticker before the generation of the security token (83ms) ✓ Failed to generate the ST - Treasury wallet 0x0 is not allowed (48ms) ✓ POLY: Should generate the new security token with the same symbol as registered above (300ms) ✓ POLY: Should initialize the auto attached modules ✓ POLY: Should successfully attach the STO module to the security token (230ms) verify the data of STO ✓ Should verify the configuration of the STO (50ms) Buy tokens ✓ Should Buy the tokens (244ms) ✓ Verification of the event Token Purchase ✓ Should failed to buy tokens -- because fundraisetype is POLY not ETH ✓ Should fail in buying tokens because buying is paused (87ms) 0 ✓ Should buy the granular unit tokens and charge only required POLY (288ms) ✓ Should restrict to buy tokens after hiting the cap in second tx first tx pass (176ms) ✓ Should failed at the time of buying the tokens -- Because STO get expired (65ms) ✓ Should fundRaised value equal to the raised value in the funds receiver wallet Pricing Test cases for Module Factory ✓ Should return correct price when price is in poly (107ms) Check that we can reclaim ETH and ERC20 tokens from an STO { logIndex: 5, transactionIndex: 0, transactionHash: '0xa0deab2d86b15eaebce39c2ad1e8a543e09d92b278ca4a62d90617c03a991cf3', blockHash: '0xfa803174dd20f5b6568acda7ff1bf5554967976f76f8f4f14a4666c7e27cfe15', blockNumber: 229, address: '0xBD031BCc6d4c151DC43F717e0Dd2aB9238eE0C42', type: 'mined', id: 'log_eb7ab44c', event: 'ModuleAdded', args: Result { '0': [ [BN] ], '1': '0x44756d6d7953544f000000000000000000000000000000000000000000000000', '2': '0xfD2BeB038bFca21Dc4A8199f13C35cd8816035d9', '3': '0x0589ea49bF09C7004F2A1515994B432903802b83', '4': BN { negative: 0, words: [Array], length: 1, red: null }, '5': BN { negative: 0, words: [Array], length: 1, red: null }, '6': '0x0000000000000000000000000000000000000000000000000000000000000000', '7': false, __length__: 8, _types: [ [BN] ], _name: '0x44756d6d7953544f000000000000000000000000000000000000000000000000', _moduleFactory: '0xfD2BeB038bFca21Dc4A8199f13C35cd8816035d9', _module: '0x0589ea49bF09C7004F2A1515994B432903802b83', _moduleCost: BN { negative: 0, words: [Array], length: 1, red: null }, _budget: BN { negative: 0, words: [Array], length: 1, red: null }, _label: '0x0000000000000000000000000000000000000000000000000000000000000000', _archived: false } } 0x0589ea49bF09C7004F2A1515994B432903802b83 ✓ should attach a dummy STO (326ms) ✓ should send some funds and ERC20 to the DummySTO (48ms) ✓ should reclaim ETH and ERC20 from STO (166ms) Test cases for the CappedSTOFactory ✓ should get the exact details of the factory (111ms) ✓ Should fail to change the title -- bad owner ✓ Should fail to change the title -- zero length ✓ Should successfully change the title ✓ Should fail to change the description -- bad owner ✓ Should fail to change the description -- zero length ✓ Should successfully change the description (40ms) ✓ Should fail to change the name -- bad owner ✓ Should fail to change the name -- zero length ✓ Should successfully change the name ✓ Should successfully change the name Test cases for the get functions of the capped sto ✓ Should verify the cap reached or not ✓ Should get the raised amount of ether ✓ Should get the raised amount of poly ✓ Should get the investors ✓ Should get the listed permissions ✓ Should get the metrics of the STO Attach second POLY STO module ✓ Should successfully attach a second STO to the security token (229ms) ✓ Should verify the configuration of the STO (50ms) ✓ Should successfully invest in second STO (238ms) Contract: Checkpoints STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (80ms) ✓ Should generate the new security token with the same symbol as registered above (283ms) ✓ Should set the controller ✓ Should initialize the auto attached modules Buy tokens using on-chain whitelist ✓ Should Buy the tokens (130ms) ✓ Should Buy some more tokens (127ms) ✓ Add a new token holder (132ms) Checkpoint: 1 Balances: ["8ac7230489e80000","8ac7230489e80000","8ac7230489e80000"] TotalSupply: "1a055690d9db80000" Checkpoint Times: 1555527373 Sender: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Receiver: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Amount: "6f05b59d3b200000" Sender: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Receiver: 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Amount: "3782dace9d900000" Minting: 1298072504761752766539881003352064 to: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Checking Interim... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checkpoint: 2 Balances: ["3ffffa79a0882cae8297a2a80000","c249fdd327780000","53444835ec580000"] TotalSupply: "3ffffa79a089423cc8a0b6780000" Checkpoint Times: 1555527373,1555527373 Sender: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Receiver: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Amount: "66665d8f6740477d9dbf6aa6666" Minting: 1298072298559545866539881003352064 to: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Checking Interim... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checking TotalSupply: 1298072504761782766539881003352064 is 1298072504761782766539881003352064 at checkpoint: 2 Checking Balances: 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 is 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 at checkpoint: 2 Checkpoint: 3 Balances: ["7ffff448b00bc5b9670586d60000","c249fdd327780000","53444835ec580000"] TotalSupply: "7ffff448b00cdb47ad0e9aa60000" Checkpoint Times: 1555527373,1555527373,1555527374 Sender: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Receiver: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Amount: "31f5c4ed27680000" Checking Interim... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checking TotalSupply: 1298072504761782766539881003352064 is 1298072504761782766539881003352064 at checkpoint: 2 Checking Balances: 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 is 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 at checkpoint: 2 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 3 Checking Balances: 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 is 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 at checkpoint: 3 Checkpoint: 4 Balances: ["7ffff448b00bf7af2bf2ae3e0000","c249fdd327780000","214e8348c4f00000"] TotalSupply: "7ffff448b00cdb47ad0e9aa60000" Checkpoint Times: 1555527373,1555527373,1555527374,1555527374 Burning: 7000000000000000000 from: 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Checking Interim... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checking TotalSupply: 1298072504761782766539881003352064 is 1298072504761782766539881003352064 at checkpoint: 2 Checking Balances: 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 is 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 at checkpoint: 2 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 3 Checking Balances: 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 is 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 at checkpoint: 3 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 4 Checking Balances: 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 at checkpoint: 4 Checkpoint: 5 Balances: ["7ffff448b00bf7af2bf2ae3e0000","6124fee993bc0000","214e8348c4f00000"] TotalSupply: "7ffff448b00c7a22ae2506ea0000" Checkpoint Times: 1555527373,1555527373,1555527374,1555527374,1555527374 Checking Interim... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checking TotalSupply: 1298072504761782766539881003352064 is 1298072504761782766539881003352064 at checkpoint: 2 Checking Balances: 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 is 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 at checkpoint: 2 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 3 Checking Balances: 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 is 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 at checkpoint: 3 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 4 Checking Balances: 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 at checkpoint: 4 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 5 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 5 Checkpoint: 6 Balances: ["7ffff448b00bf7af2bf2ae3e0000","6124fee993bc0000","214e8348c4f00000"] TotalSupply: "7ffff448b00c7a22ae2506ea0000" Checkpoint Times: 1555527373,1555527373,1555527374,1555527374,1555527374,1555527375 Sender: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Receiver: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Amount: "266662e29b36ca4e26c8cddf6666" Sender: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Receiver: 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Amount: "133331714d9b75ce5508c967b333" Minting: 1298072726986453466539881003352064 to: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Checking Interim... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checking TotalSupply: 1298072504761782766539881003352064 is 1298072504761782766539881003352064 at checkpoint: 2 Checking Balances: 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 is 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 at checkpoint: 2 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 3 Checking Balances: 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 is 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 at checkpoint: 3 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 4 Checking Balances: 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 at checkpoint: 4 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 5 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 5 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 6 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 6 Checkpoint: 7 Balances: ["99998c978745f940a179a754999a","133331714d9bd6f353f25d23b333","133331714d9b75ce5508c967b333"] TotalSupply: "bfffef7a227d46024a74cde00000" Checkpoint Times: 1555527373,1555527373,1555527374,1555527374,1555527374,1555527375,1555527376 Sender: 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Receiver: 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Amount: "5c28ed530e1f3af65fbe8bde8f5" Minting: 1298072318697198866539881003352064 to: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Checking Interim... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checking TotalSupply: 1298072504761782766539881003352064 is 1298072504761782766539881003352064 at checkpoint: 2 Checking Balances: 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 is 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 at checkpoint: 2 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 3 Checking Balances: 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 is 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 at checkpoint: 3 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 4 Checking Balances: 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 at checkpoint: 4 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 5 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 5 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 6 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 6 Checking TotalSupply: 3894217530307775099619643010056192 is 3894217530307775099619643010056192 at checkpoint: 7 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,389421720498198034961964301005619 is 3115374089311372029695714408044954,389421720498205034961964301005619,389421720498198034961964301005619 at checkpoint: 7 Checkpoint: 8 Balances: ["99998c978745f940a179a754999a","133331714d9bd6f353f25d23b333","53332b51056f6a21432d5f49b333"] TotalSupply: "ffffe959da513a55389963c20000" Checkpoint Times: 1555527373,1555527373,1555527374,1555527374,1555527374,1555527375,1555527376,1555527376 Minting: 1298072716397401466539881003352064 to: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Burning: 1298072550771943366539881003352064 from: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Checking Interim... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checking TotalSupply: 1298072504761782766539881003352064 is 1298072504761782766539881003352064 at checkpoint: 2 Checking Balances: 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 is 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 at checkpoint: 2 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 3 Checking Balances: 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 is 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 at checkpoint: 3 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 4 Checking Balances: 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 at checkpoint: 4 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 5 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 5 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 6 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 6 Checking TotalSupply: 3894217530307775099619643010056192 is 3894217530307775099619643010056192 at checkpoint: 7 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,389421720498198034961964301005619 is 3115374089311372029695714408044954,389421720498205034961964301005619,389421720498198034961964301005619 at checkpoint: 7 Checking TotalSupply: 5192289849004973966159524013408256 is 5192289849004973966159524013408256 at checkpoint: 8 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,1687494039195396901501845304357683 is 3115374089311372029695714408044954,389421720498205034961964301005619,1687494039195396901501845304357683 at checkpoint: 8 Checkpoint: 9 Balances: ["99998c978745f940a179a754999a","133331714d9bd6f353f25d23b333","53332bda05fd7d36bb4c7f5bb333"] TotalSupply: "ffffe9e2dadf4d6ab0b883d40000" Checkpoint Times: 1555527373,1555527373,1555527374,1555527374,1555527374,1555527375,1555527376,1555527376,1555527377 Sender: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Receiver: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Amount: "299995ed02febe9b5da63fadd999" Sender: 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Receiver: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Amount: "b851daa61c3e75ecbf7d17bd1eb" Burning: 77884344099641006992392860201124 from: 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Checking Interim... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checking TotalSupply: 1298072504761782766539881003352064 is 1298072504761782766539881003352064 at checkpoint: 2 Checking Balances: 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 is 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 at checkpoint: 2 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 3 Checking Balances: 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 is 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 at checkpoint: 3 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 4 Checking Balances: 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 at checkpoint: 4 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 5 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 5 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 6 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 6 Checking TotalSupply: 3894217530307775099619643010056192 is 3894217530307775099619643010056192 at checkpoint: 7 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,389421720498198034961964301005619 is 3115374089311372029695714408044954,389421720498205034961964301005619,389421720498198034961964301005619 at checkpoint: 7 Checking TotalSupply: 5192289849004973966159524013408256 is 5192289849004973966159524013408256 at checkpoint: 8 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,1687494039195396901501845304357683 is 3115374089311372029695714408044954,389421720498205034961964301005619,1687494039195396901501845304357683 at checkpoint: 8 Checking TotalSupply: 5192290014630432066159524013408256 is 5192290014630432066159524013408256 at checkpoint: 9 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,1687494204820855001501845304357683 is 3115374089311372029695714408044954,389421720498205034961964301005619,1687494204820855001501845304357683 at checkpoint: 9 Checkpoint: 10 Balances: ["a51eaa41e909e09f6d7178d06b85","3d709e375ebf7ca43fd45d3f0a4","53332bda05fd7d36bb4c7f5bb333"] TotalSupply: "fc28dfff64f355a06cbb3e000f5c" Checkpoint Times: 1555527373,1555527373,1555527374,1555527374,1555527374,1555527375,1555527376,1555527376,1555527377,1555527378 Sending full balance Sender: 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Receiver: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Amount: "3d709e375ebf7ca43fd45d3f0a4" Sender: 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Receiver: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Amount: "0" Checking Interim... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checking TotalSupply: 1298072504761782766539881003352064 is 1298072504761782766539881003352064 at checkpoint: 2 Checking Balances: 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 is 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 at checkpoint: 2 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 3 Checking Balances: 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 is 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 at checkpoint: 3 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 4 Checking Balances: 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 at checkpoint: 4 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 5 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 5 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 6 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 6 Checking TotalSupply: 3894217530307775099619643010056192 is 3894217530307775099619643010056192 at checkpoint: 7 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,389421720498198034961964301005619 is 3115374089311372029695714408044954,389421720498205034961964301005619,389421720498198034961964301005619 at checkpoint: 7 Checking TotalSupply: 5192289849004973966159524013408256 is 5192289849004973966159524013408256 at checkpoint: 8 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,1687494039195396901501845304357683 is 3115374089311372029695714408044954,389421720498205034961964301005619,1687494039195396901501845304357683 at checkpoint: 8 Checking TotalSupply: 5192290014630432066159524013408256 is 5192290014630432066159524013408256 at checkpoint: 9 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,1687494204820855001501845304357683 is 3115374089311372029695714408044954,389421720498205034961964301005619,1687494204820855001501845304357683 at checkpoint: 9 Checking TotalSupply: 5114405670530791059167131153207132 is 5114405670530791059167131153207132 at checkpoint: 10 Checking Balances: 3349027121610295050672892988648325,77884344099641006992392860201124,1687494204820855001501845304357683 is 3349027121610295050672892988648325,77884344099641006992392860201124,1687494204820855001501845304357683 at checkpoint: 10 Checking... Checking TotalSupply: 30000000000000000000 is 30000000000000000000 at checkpoint: 1 Checking Balances: 10000000000000000000,10000000000000000000,10000000000000000000 is 10000000000000000000,10000000000000000000,10000000000000000000 at checkpoint: 1 Checking TotalSupply: 1298072504761782766539881003352064 is 1298072504761782766539881003352064 at checkpoint: 2 Checking Balances: 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 is 1298072504761762766539881003352064,14000000000000000000,6000000000000000000 at checkpoint: 2 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 3 Checking Balances: 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 is 2596144803321308633079762006704128,14000000000000000000,6000000000000000000 at checkpoint: 3 Checking TotalSupply: 2596144803321328633079762006704128 is 2596144803321328633079762006704128 at checkpoint: 4 Checking Balances: 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,14000000000000000000,2400000000000000000 at checkpoint: 4 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 5 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 5 Checking TotalSupply: 2596144803321321633079762006704128 is 2596144803321321633079762006704128 at checkpoint: 6 Checking Balances: 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 is 2596144803321312233079762006704128,7000000000000000000,2400000000000000000 at checkpoint: 6 Checking TotalSupply: 3894217530307775099619643010056192 is 3894217530307775099619643010056192 at checkpoint: 7 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,389421720498198034961964301005619 is 3115374089311372029695714408044954,389421720498205034961964301005619,389421720498198034961964301005619 at checkpoint: 7 Checking TotalSupply: 5192289849004973966159524013408256 is 5192289849004973966159524013408256 at checkpoint: 8 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,1687494039195396901501845304357683 is 3115374089311372029695714408044954,389421720498205034961964301005619,1687494039195396901501845304357683 at checkpoint: 8 Checking TotalSupply: 5192290014630432066159524013408256 is 5192290014630432066159524013408256 at checkpoint: 9 Checking Balances: 3115374089311372029695714408044954,389421720498205034961964301005619,1687494204820855001501845304357683 is 3115374089311372029695714408044954,389421720498205034961964301005619,1687494204820855001501845304357683 at checkpoint: 9 Checking TotalSupply: 5114405670530791059167131153207132 is 5114405670530791059167131153207132 at checkpoint: 10 Checking Balances: 3349027121610295050672892988648325,77884344099641006992392860201124,1687494204820855001501845304357683 is 3349027121610295050672892988648325,77884344099641006992392860201124,1687494204820855001501845304357683 at checkpoint: 10 ✓ Fuzz test balance checkpoints (6855ms) Contract: CountTransferManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 CountTransferManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (80ms) ✓ Should generate the new security token with the same symbol as registered above (307ms) ✓ Should initialize the auto attached modules ✓ Should successfully attach the CountTransferManager factory with the security token (196ms) ✓ Should successfully attach the CountTransferManager factory with the security token (203ms) ✓ Should successfully attach the CountTransferManager with the security token (159ms) Buy tokens using on-chain whitelist ✓ Should Buy the tokens (196ms) ✓ Should Buy some more tokens (141ms) ✓ Should able to buy some more tokens (more than 2 hoders) -- because CountTransferManager is paused (163ms) ✓ Should fail to buy some more tokens (more than 2 holders) (208ms) ✓ Should still be able to add to original token holders (92ms) ✓ Should still be able to transfer between existing token holders before count change (71ms) ✓ Should fail in modifying the holder count (43ms) ✓ Modify holder count to 1 ✓ Should still be able to transfer between existing token holders after count change (74ms) ✓ Should not be able to transfer to a new token holder (110ms) ✓ Should be able to consolidate balances (53ms) ✓ Should get the permission list Test cases for adding and removing acc holder at the same time ✓ deploy a new token & auto attach modules (413ms) ✓ add 3 holders to the token (418ms) ✓ Should initialize the auto attached modules ✓ Should successfully attach the CountTransferManager factory with the security token (196ms) current max holder number is 2 ✓ Should successfully attach the CountTransferManager with the security token and set max holder to 2 (193ms) ✓ Should upgrade the CTM (392ms) ✓ Should upgrade the CTM again (445ms) current investor count is 3 ✓ Should allow add a new token holder while transfer all the tokens at one go (189ms) Test cases for the factory ✓ should get the exact details of the factory (60ms) ✓ Should get the tags of the factory Test cases for the ModuleFactory ✓ Should successfully change the SetupCost -- fail beacuse of bad owner ✓ Should successfully change the setupCost ✓ Should successfully change the cost type -- fail beacuse of bad owner ✓ Should successfully change the cost type (98ms) ✓ Should successfully change the usage fee -- fail beacuse of bad owner ✓ Should successfully change the usage fee Test case for the changeSTVersionBounds ✓ Should successfully change the version bounds -- failed because of the non permitted bound type ✓ Should successfully change the version bound --failed because the new version length < 3 ✓ Should successfully change the version bound (79ms) Contract: ERC20DividendCheckpoint STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 ERC20DividendCheckpointFactory: 0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (77ms) ✓ Should generate the new security token with the same symbol as registered above (290ms) ✓ Should initialize the auto attached modules ✓ Should successfully attach the ERC20DividendCheckpoint with the security token - fail insufficient payment (188ms) ✓ Should successfully attach the ERC20DividendCheckpoint with the security token with budget (227ms) Result { '0': [ BN { negative: 0, words: [Array], length: 1, red: null } ], '1': '0x45524332304469766964656e64436865636b706f696e74000000000000000000', '2': '0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6', '3': '0x095d48901E91cE3146F7E0E514b514673DD980F1', '4': BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null }, '5': BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null }, '6': '0x0000000000000000000000000000000000000000000000000000000000000000', '7': false, __length__: 8, _types: [ BN { negative: 0, words: [Array], length: 1, red: null } ], _name: '0x45524332304469766964656e64436865636b706f696e74000000000000000000', _moduleFactory: '0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6', _module: '0x095d48901E91cE3146F7E0E514b514673DD980F1', _moduleCost: BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null }, _budget: BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null }, _label: '0x0000000000000000000000000000000000000000000000000000000000000000', _archived: false } ✓ Should successfully attach the ERC20DividendCheckpoint with the security token (174ms) Check Dividend payouts ✓ Buy some tokens for account_investor1 (1 ETH) (141ms) ✓ Buy some tokens for account_investor2 (2 ETH) (175ms) ✓ Should fail in creating the dividend - incorrect allowance (101ms) ✓ Should fail in creating the dividend - maturity > expiry (88ms) ✓ Should fail in creating the dividend - now > expiry (71ms) ✓ Should fail in creating the dividend - bad token (78ms) ✓ Should fail in creating the dividend - amount is 0 (73ms) ✓ Create new dividend of POLY tokens (89ms) ✓ Investor 1 transfers his token balance to investor 2 (86ms) ✓ Issuer pushes dividends iterating over account holders - dividends proportional to checkpoint - fails maturity in the future (39ms) ✓ Issuer pushes dividends iterating over account holders - dividends proportional to checkpoint - fails not owner (50ms) ✓ Issuer pushes dividends iterating over account holders - dividends proportional to checkpoint - fails wrong index ✓ Issuer pushes dividends iterating over account holders - dividends proportional to checkpoint (134ms) ✓ Buy some tokens for account_temp (1 ETH) (136ms) ✓ Should not allow to create dividend without name (128ms) Gas used w/ no exclusions: 324644 ✓ Create new dividend (92ms) ✓ Issuer pushes dividends iterating over account holders - dividends proportional to checkpoint - fails past expiry (44ms) ✓ Issuer pushes dividends iterating over account holders - dividends proportional to checkpoint - fails already reclaimed (83ms) ✓ Buy some tokens for account_investor3 (7 ETH) (135ms) ✓ Should allow to exclude same number of address as EXCLUDED_ADDRESS_LIMIT (3840ms) ✓ Should not allow to exclude duplicate address ✓ Should not allow to exclude 0x0 address ✓ Exclude account_temp using global exclusion list (198ms) 151 ✓ Should not allow to exclude more address than EXCLUDED_ADDRESS_LIMIT (53ms) Gas used w/ max exclusions - default: 371275 ✓ Create another new dividend (130ms) ✓ should investor 3 claims dividend - fail bad index 0 Result { '0': [ '0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776', '0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560', '0xCc036143C68A7A9a41558Eae739B428eCDe5EF66' ], '1': [ false, false, true ], '2': [ false, true, false ], '3': [ BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ], '4': [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 3, red: null } ], '5': [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null } ], investors: [ '0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776', '0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560', '0xCc036143C68A7A9a41558Eae739B428eCDe5EF66' ], resultClaimed: [ false, false, true ], resultExcluded: [ false, true, false ], resultWithheld: [ BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ], resultAmount: [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 3, red: null } ], resultBalance: [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null } ] } ✓ should investor 3 claims dividend (194ms) ✓ should investor 3 claims dividend - fails already claimed ✓ should issuer pushes remain (171ms) ✓ Delete global exclusion list ✓ Investor 2 transfers 1 ETH of his token balance to investor 1 (107ms) {"0":"4","1":"4","__length__":2,"_checkpointId":"4","_investorLength":"4"} 4 ✓ Create another new dividend with explicit checkpoint - fails bad allowance (104ms) 4 ✓ Create another new dividend with explicit - fails maturity > expiry (68ms) 4 ✓ Create another new dividend with explicit - fails now > expiry (54ms) ✓ Create another new dividend with explicit - fails bad checkpoint (44ms) ✓ Set withholding tax of 20% on account_temp and 100% on investor2 ✓ Should not allow mismatching input lengths ✓ Should not allow withholding greater than limit (70ms) ✓ Should not create dividend with more exclusions than limit (91ms) ✓ Create another new dividend with explicit checkpoint and exclusion (80ms) ✓ Should not create new dividend with duplicate exclusion (66ms) ✓ Should not create new dividend with 0x0 address in exclusion (67ms) ✓ Should not allow excluded to pull Dividend Payment ✓ Investor 2 claims dividend, issuer pushes investor 1 - fails not owner (42ms) ✓ Investor 2 claims dividend, issuer pushes investor 1 - fails bad index ✓ should not calculate dividend for invalid index ✓ should calculate dividend before the push dividend payment (79ms) ✓ Pause and unpause the dividend contract (131ms) ✓ Investor 2 claims dividend (111ms) ✓ Should issuer pushes temp investor - investor1 excluded (184ms) ✓ should calculate dividend after the push dividend payment ✓ Should not allow reclaiming withholding tax with incorrect index Address: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Claimed: false true true false Excluded: true false false false Withheld: 0 2000000000000000000 200000000000000000 0 Claimed: 0 0 800000000000000000 7000000000000000000 Balance: 1000000000000000000 2000000000000000000 1000000000000000000 7000000000000000000 totalWithheld: 2200000000000000000 totalWithheldWithdrawn: 0 totalWithheld: 2200000000000000000 totalWithheldWithdrawn: 2200000000000000000 ✓ Issuer reclaims withholding tax (239ms) ✓ Issuer changes wallet address (98ms) ✓ Issuer unable to reclaim dividend (expiry not passed) ✓ Issuer is unable to reclaim invalid dividend (40ms) ✓ Investor 3 unable to pull dividend after expiry ✓ Issuer is able to reclaim dividend after expiry (49ms) ✓ Issuer is unable to reclaim already reclaimed dividend (67ms) ✓ Investor 3 unable to pull dividend after reclaiming ✓ Should give the right dividend index ✓ Should give the right dividend index ✓ Should get the listed permissions ✓ should register a delegate (325ms) ✓ should not allow manager without permission to set default excluded (51ms) ✓ should not allow manager without permission to set withholding (49ms) ✓ should not allow manager without permission to set withholding fixed (50ms) ✓ should not allow manager without permission to create dividend (93ms) ✓ should not allow manager without permission to create dividend with checkpoint (105ms) ✓ should not allow manager without permission to create dividend with exclusion (60ms) ✓ should not allow manager without permission to create checkpoint (46ms) ✓ should not allow manager without permission to create dividend with checkpoint and exclusion (104ms) ✓ should give permission to manager (47ms) ✓ should allow manager with permission to set default excluded ✓ should allow manager with permission to set withholding ✓ should allow manager withpermission to set withholding fixed ✓ should allow manager with permission to create dividend (96ms) ✓ should allow manager with permission to create dividend with checkpoint (261ms) Gas used w/ max exclusions - non-default: 364301 ✓ should allow manager with permission to create dividend with exclusion (193ms) BN { negative: 0, words: [ 7, <1 empty item> ], length: 1, red: null } ✓ should allow manager with permission to create dividend with checkpoint and exclusion (121ms) ✓ Should fail to update the dividend dates because msg.sender is not authorised (49ms) ✓ Should fail to update the dates when the dividend get expired (51ms) ✓ Should update the dividend dates (72ms) Reclaimed: 4500000000000000000 ✓ Reclaim ERC20 tokens from the dividend contract (99ms) ✓ should allow manager with permission to create checkpoint (86ms) Test cases for the ERC20DividendCheckpointFactory ✓ should get the exact details of the factory (79ms) Contract: EtherDividendCheckpoint STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 EtherDividendCheckpointFactory: 0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (82ms) ✓ Should generate the new security token with the same symbol as registered above (309ms) ✓ Should initialize the auto attached modules ✓ Should successfully attach the ERC20DividendCheckpoint with the security token (202ms) ✓ Should successfully attach the EtherDividendCheckpoint with the security token (269ms) ✓ Should successfully attach the EtherDividendCheckpoint with the security token (167ms) Check Dividend payouts ✓ Buy some tokens for account_investor1 (1 ETH) (142ms) ✓ Buy some tokens for account_investor2 (2 ETH) (125ms) ✓ Should fail in creating the dividend (68ms) ✓ Should fail in creating the dividend (65ms) ✓ Should fail in creating the dividend (69ms) ✓ Set withholding tax of 20% on investor 2 ✓ Should fail in creating the dividend (69ms) Dividend first :0 ✓ Create new dividend (64ms) ✓ Investor 1 transfers his token balance to investor 2 (80ms) ✓ Issuer pushes dividends iterating over account holders - dividends proportional to checkpoint ✓ Issuer pushes dividends iterating over account holders - dividends proportional to checkpoint (51ms) ✓ Issuer pushes dividends iterating over account holders - dividends proportional to checkpoint ✓ Issuer pushes dividends iterating over account holders - dividends proportional to checkpoint (147ms) ✓ Should not allow reclaiming withholding tax with incorrect index ✓ Issuer reclaims withholding tax (41ms) ✓ No more withholding tax to withdraw ✓ Set withholding tax of 100% on investor 2 ✓ Buy some tokens for account_temp (1 ETH) (141ms) Dividend second :1 ✓ Create new dividend (66ms) ✓ Issuer pushes dividends fails due to passed expiry (50ms) ✓ Issuer reclaims dividend (73ms) ✓ Still no more withholding tax to withdraw (39ms) ✓ Buy some tokens for account_investor3 (7 ETH) (138ms) Dividend third :2 ✓ Create another new dividend (65ms) ✓ should investor 3 claims dividend - fails bad index (60ms) ✓ Should investor 3 claims dividend (55ms) ✓ Still no more withholding tax to withdraw (39ms) ✓ should investor 3 claims dividend ✓ Issuer pushes remainder (123ms) ✓ Issuer withdraws new withholding tax (38ms) ✓ Investor 2 transfers 1 ETH of his token balance to investor 1 (102ms) ✓ Create another new dividend with no value - fails (71ms) ✓ Create another new dividend with explicit (42ms) ✓ Create another new dividend with bad expiry - fails (38ms) ✓ Create another new dividend with bad checkpoint in the future - fails (44ms) ✓ Should not create dividend with more exclusions than limit (86ms) Dividend Fourth :3 ✓ Create another new dividend with explicit checkpoint and excluding account_investor1 (59ms) ✓ Should not create new dividend with duplicate exclusion (93ms) ✓ Should not create new dividend with 0x0 address in exclusion (66ms) ✓ Non-owner pushes investor 1 - fails (66ms) ✓ issuer pushes investor 1 with bad dividend index - fails (61ms) ✓ should calculate dividend before the push dividend payment (81ms) ✓ Investor 2 claims dividend (58ms) ✓ Should issuer pushes investor 1 and temp investor (79ms) ✓ should calculate dividend after the push dividend payment ✓ Issuer unable to reclaim dividend (expiry not passed) ✓ Issuer is able to reclaim dividend after expiry (39ms) ✓ Issuer is able to reclaim dividend after expiry (42ms) ✓ Issuer is able to reclaim dividend after expiry ✓ Investor 3 unable to pull dividend after expiry ✓ Assign token balance to an address that can't receive funds (193ms) Dividend Fifth :4 ✓ Create another new dividend (61ms) ✓ Should issuer pushes all dividends (178ms) ✓ Should give the right dividend index ✓ Should give the right dividend index ✓ Should get the listed permissions ✓ should registr a delegate (320ms) ✓ should not allow manager without permission to create dividend (128ms) ✓ should not allow manager without permission to create dividend with checkpoint (103ms) ✓ should not allow manager without permission to create dividend with exclusion (55ms) ✓ should not allow manager without permission to create dividend with checkpoint and exclusion (106ms) ✓ should not allow manager without permission to create checkpoint (47ms) ✓ should give permission to manager (46ms) Dividend sixth :5 ✓ should allow manager with permission to create dividend (79ms) Dividend seventh :6 ✓ should allow manager with permission to create dividend with checkpoint (108ms) Dividend Eighth :7 7 ✓ should allow manager with permission to create dividend with exclusion (84ms) ✓ Should fail to update the dividend dates because msg.sender is not authorised (50ms) ✓ Should fail to update the dates when the dividend get expired (47ms) ✓ Should update the dividend dates (77ms) Reclaimed: 29000000000000000000 ✓ Reclaim ETH from the dividend contract (61ms) ✓ should allow manager with permission to create dividend with checkpoint and exclusion (156ms) ✓ should allow manager with permission to create checkpoint (89ms) Test cases for the EtherDividendCheckpointFactory ✓ should get the exact details of the factory (87ms) Contract: GeneralPermissionManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistryProxy 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (80ms) ✓ Should generate the new security token with the same symbol as registered above (262ms) ✓ Should initialize the auto attached modules ✓ Should successfully attach the General permission manager factory with the security token -- failed because Token is not paid (199ms) ✓ Should successfully attach the General permission manager factory with the security token (204ms) ✓ Should successfully attach the General permission manager factory with the security token (149ms) General Permission Manager test cases ✓ Get the init data ✓ Should fail in adding the delegate -- msg.sender doesn't have permission (47ms) ✓ Should fail in adding the delegate -- no delegate details provided ✓ Should fail in adding the delegate -- no delegate address provided ✓ Should fail to remove the delegate -- failed because delegate does not exisit ✓ Should successfully add the delegate ✓ Should successfully add the delegate -- failed because trying to add the already present delegate ✓ Should fail to provide the permission -- because msg.sender doesn't have permission (47ms) ✓ Should check the permission ✓ Should provide the permission ✓ Should check the permission ✓ Security token should deny all permission if all permission managers are disabled (108ms) ✓ Should fail to remove the delegate -- failed because unauthorized msg.sender (46ms) ✓ Should remove the delegate ✓ Should check the permission ✓ Should successfully add the delegate ✓ Should check the delegate details ✓ Should get the permission of the general permission manager contract ✓ Should return all delegates (485ms) ✓ Should create a new token and add some more delegates, then get them (2040ms) ✓ Should check is delegate for 0x address - failed 0x address is not allowed ✓ Should return false when check is delegate - because user is not a delegate ✓ Should return true when check is delegate - because user is a delegate ✓ Should successfully provide the permissions in batch -- failed because of array length is 0 (61ms) ✓ Should successfully provide the permissions in batch -- failed because of perm array length is 0 ✓ Should successfully provide the permissions in batch -- failed because mismatch in arrays length ✓ Should successfully provide the permissions in batch -- failed because mismatch in arrays length ✓ Should successfully provide the permissions in batch (51ms) ✓ Should provide all delegates with specified permission (44ms) ✓ Should get all delegates for the permission manager ✓ Should return all modules and all permission (55ms) General Permission Manager Factory test cases ✓ should get the exact details of the factory (71ms) ✓ Should get the tags of the factory Contract: GeneralTransferManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 DummySTOFactory: 0xAEadfb0Fc437d3f2e8bD828523177F78D7152170 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (83ms) ✓ Should generate the new security token with the same symbol as registered above (285ms) ✓ Should initialize the auto attached modules ✓ Should attach the paid GTM -- failed because of no tokens (191ms) ✓ Should attach the paid GTM (198ms) ✓ Should add investor flags (248ms) Estimate gas of one Whitelist: 141899 Result { '0': [ '0xce42bdB34189a93c55De250E011c68FaeE374Dd3', '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC' ], '1': [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 2, red: null } ], '2': [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 2, red: null } ], '3': [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 2, red: null } ], investors: [ '0xce42bdB34189a93c55De250E011c68FaeE374Dd3', '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC' ], canSendAfters: [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 2, red: null } ], canReceiveAfters: [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 2, red: null } ], expiryTimes: [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 2, red: null } ] } ✓ Should whitelist the affiliates before the STO attached (327ms) Multi Whitelist x 50: 4888141 ✓ Should whitelist lots of addresses and check gas (1996ms) Estimate gas cost for minting the tokens: 208130 ✓ Should mint the tokens to the affiliates (185ms) ✓ Should successfully attach the STO factory with the security token -- failed because of no tokens (193ms) ✓ Should successfully attach the STO factory with the security token (213ms) ✓ Should successfully attach the STO factory with the security token - invalid data (128ms) ✓ Should successfully attach the STO factory with the security token (166ms) ✓ Should successfully attach the permission manager factory with the security token (165ms) ✓ should have transfer requirements initialized ✓ should not allow unauthorized people to change transfer requirements (110ms) Buy tokens using on-chain whitelist ✓ Should buy the tokens -- Failed due to investor is not in the whitelist (139ms) Gas usage of minting of tokens: 159722 ✓ Should Buy the tokens (223ms) ✓ Should fail in buying the token from the STO (44ms) ✓ Should fail in buying the tokens from the STO -- because amount is 0 ✓ Should fail in buying the tokens from the STO -- because STO is paused (84ms) ✓ Should buy more tokens from the STO to investor1 (79ms) ✓ Should fail in investing the money in STO -- expiry limit reached (112ms) Buy tokens using on-chain whitelist and defaults ✓ Should Buy the tokens (201ms) ✓ Add a from default and check transfers are disabled then enabled in the future (205ms) ✓ Add a to default and check transfers are disabled then enabled in the future (272ms) Buy tokens using off-chain whitelist ✓ Should buy the tokens -- Failed due to investor is not in the whitelist (111ms) ✓ Should provide the permission and change the signing address (58ms) ✓ Should buy the tokens -- Failed due to incorrect signature input (126ms) ✓ Should buy the tokens -- Failed due to incorrect signature timing (49ms) ✓ Should buy the tokens -- Failed due to incorrect signature signer (151ms) ✓ Should Not Transfer with expired Signed KYC data (183ms) ✓ Should Transfer with Signed KYC data (291ms) ✓ Should not do multiple signed whitelist if sig has expired (180ms) ✓ Should not do multiple signed whitelist if array length mismatch (79ms) ✓ Should do multiple signed whitelist in a signle transaction (165ms) ✓ Should Buy the tokens with signers signature (212ms) ✓ Should fail if the txn is generated with same nonce (51ms) ✓ Should sign with token owner key (76ms) ✓ Should get the permission ✓ Should set a usage fee for the GTM (43ms) ✓ Should fail to pull fees as no budget set (51ms) ✓ Should set a budget for the GeneralTransferManager (112ms) ✓ Factory owner should pull fees - fails as not permissioned by issuer (50ms) ✓ Factory owner should pull fees (117ms) ✓ should allow authorized people to modify transfer requirements ✓ should failed in trasfering the tokens (117ms) ✓ Should change the Issuance address ✓ Should unpause the transfers ✓ Should get the init function WhiteList that addresses ✓ Should fail in adding the investors in whitelist (56ms) ✓ Should fail in adding the investors in whitelist -- array length mismatch (56ms) ✓ Should fail in adding the investors in whitelist -- array length mismatch (60ms) ✓ Should fail in adding the investors in whitelist -- array length mismatch (59ms) ✓ Should successfully add the investors in whitelist (130ms) Test cases for the getTokensByPartition ✓ Should change the transfer requirements ✓ Should check the partition balance before changing the canSendAfter & canReceiveAfter (54ms) ✓ Should change the canSendAfter and canRecieveAfter of the investor2 (104ms) ✓ Should check the values of partition balance after the GTM pause (92ms) General Transfer Manager Factory test cases ✓ Should get the exact details of the factory (71ms) ✓ Should get the tags of the factory Dummy STO Factory test cases ✓ should get the exact details of the factory (71ms) ✓ Should get the tags of the factory Test cases for the get functions of the dummy sto ✓ Should get the raised amount of ether ✓ Should get the raised amount of poly ✓ Should get the investors ✓ Should get the listed permissions ✓ Should get the amount of tokens sold Contract: Issuance STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 CappedSTOFactory: 0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6 ----------------------------------------------------------------------------- Launch SecurityToken & STO on the behalf of the issuer Create securityToken for the issuer by the polymath ✓ POLYMATH: Should register the ticker before the generation of the security token (97ms) ✓ POLYMATH: Should generate the new security token with the same symbol as registered above (289ms) ✓ POLYMATH: Should initialize the auto attached modules ✓ POLYMATH: Should successfully attach the STO factory with the security token (370ms) Transfer Manager operations by the polymath_account ✓ Should modify the whitelist (69ms) ✓ Should add the delegate with permission (257ms) ✓ POLYMATH: Should change the ownership of the SecurityToken Operations on the STO ✓ Should Buy the tokens (134ms) ✓ Verification of the event Token Purchase ✓ should add the investor into the whitelist by the delegate (80ms) ✓ Should buy the token (114ms) Contract: ManualApprovalTransferManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ManualApprovalTransferManagerFactory: 0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6 CountTransferManagerFactory: 0xD90d13ad9D5AB251D11dCC96Ac6fBd1302070eA5 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (116ms) ✓ Should generate the new security token with the same symbol as registered above (314ms) ✓ Should initialize the auto attached modules Buy tokens using whitelist & manual approvals ✓ Should Buy the tokens (139ms) ✓ Should Buy some more tokens (129ms) ✓ Should successfully attach the ManualApprovalTransferManager with the security token (210ms) ✓ Should successfully attach the General permission manager factory with the security token (205ms) ✓ Should successfully attach the ManualApprovalTransferManager with the security token (170ms) ✓ Cannot call executeTransfer on the TM directly ✓ Can call verifyTransfer on the TM directly if _isTransfer == false ✓ Add a new token holder (182ms) ✓ Should still be able to transfer between existing token holders (68ms) ✓ Should fail to add a manual approval because invalid expiry time ✓ Add a manual approval for a 4th investor & return correct length (38ms) current approval length is 1 1 2 3 4 ✓ Should return all approvals correctly ✓ Should try to add the same manual approval for the same `_from` & `_to` address true ✓ Check verifyTransfer without actually transferring (127ms) ✓ Should fail to sell the tokens more than the allowance (113ms) ✓ Approval fails with wrong from to address (104ms) ✓ Should sell the tokens to investor 4 (GTM will give INVALID as investor 4 not in the whitelist) (91ms) ✓ Should sell more tokens to investor 4 with in the same day(GTM will give INVALID as investor 4 not in the whitelist) (115ms) ✓ Should fail to transact after the approval get expired (94ms) ✓ Should fail to modify the manual approval when the approval get expired ✓ Should attach the manual approval for the investor4 again (77ms) ✓ Should modify the manual approval expiry time for 4th investor ✓ Should transact after two days (95ms) ✓ Should modify the allowance of the manual approval (increase) ✓ Should transact according to new allowance (86ms) ✓ Should decrease the allowance ✓ Should fail to transfer the tokens because allowance get changed (89ms) ✓ Should successfully transfer the tokens within the allowance limit (82ms) ✓ Should fail to modify because allowance is zero ✓ Should fail to revoke the manual Approval -- bad owner (39ms) ✓ Should revoke the manual Approval b/w investor4 and 1 (57ms) ✓ Should fail to revoke the same manual approval again ✓ Should fail to add multiple manual approvals -- failed because of bad owner (48ms) ✓ Should fail to add multiple manual approvals -- failed because of length mismatch ✓ Should fail to add multiple manual approvals -- failed because of length mismatch ✓ Should fail to add multiple manual approvals -- failed because of length mismatch ✓ Should fail to add multiple manual approvals -- failed because of length mismatch ✓ Add multiple manual approvals (132ms) ✓ Should fail to revoke the multiple manual approvals -- because of bad owner (41ms) ✓ Should fail to revoke the multiple manual approvals -- because of input length mismatch ✓ Revoke multiple manual approvals (89ms) ✓ Add a manual approval for a 5th investor from issuance ✓ Should successfully attach the CountTransferManager with the security token (count of 1) (160ms) ✓ Should get the permission list ✓ Should get the init function ManualApproval Transfer Manager Factory test cases ✓ Should get the exact details of the factory (65ms) ✓ Should get the tags of the factory Contract: ModuleRegistry STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0xBC57310D2E0543AeFe7F990948232Ae97934bFE9 FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 ----------------------------------------------------------------------------- Test the initialize the function ✓ Should successfully update the implementation address -- fail because polymathRegistry address is 0x ✓ Should successfully update the implementation address -- fail because owner address is 0x ✓ Should successfully update the implementation address -- fail because all params are 0x ✓ Should successfully update the implementation address (92ms) Test cases for the ModuleRegistry Test case for the upgradeFromregistry ✓ Should successfully update the registry contract address -- failed because of bad owner ✓ Should successfully update the registry contract addresses (53ms) Test the state variables ✓ Should be the right owner ✓ Should be the expected value of the paused and intialised variable ✓ Should be the expected value of the polymath registry Test cases for the registering the module ✓ Should fail to register the module -- when registerModule is paused (62ms) ✓ Should register the module with the Module Registry (61ms) ✓ Should fail the register the module -- Already registered module ✓ Should fail in registering the module-- type = 0 (47ms) ✓ Should fail to register the new module because msg.sender is not the owner of the module (109ms) ✓ Should successfully register the module -- fail because no module type uniqueness (43ms) Test case for verifyModule ✓ Should fail in calling the verify module. Because msg.sender should be account_polymath (51ms) ✓ Should successfully verify the module -- true ✓ Should successfully verify the module -- false (131ms) ✓ Should fail in verifying the module. Because the module is not registered Test cases for the useModule function of the module registry ✓ Deploy the securityToken (403ms) ✓ Should fail in adding module. Because module is un-verified (45ms) ✓ Should fail to register module because custom modules not allowed (99ms) ✓ Should switch customModulesAllowed to true (38ms) ✓ Should successfully add module because custom modules switched on (210ms) ✓ Should successfully add module when custom modules switched on -- fail because factory owner is different (44ms) ✓ Should successfully add verified module (316ms) I_TestSTOFactory:0xE6e7EE2e6AE93358A1d81481b7547FCBa21b2F94 ✓ Should failed in adding the TestSTOFactory module because not compatible with the current protocol version --lower (320ms) ✓ Should failed in adding the TestSTOFactory module because not compatible with the current protocol version --upper (524ms) Test case for the getModulesByTypeAndToken() [ '0xc731c7cA8F7d08eDDb1d5B33ecdcfac47bAa841d' ] ✓ Should get the list of available modules when the customModulesAllowed (119ms) [] ✓ Should get the list of available modules when the customModulesAllowed is not allowed (72ms) Test cases for getters getModulesByType: Type: 0: Type: 1:0x9c6f076855d3643AB52772F2108D4046a10049EC Type: 2:0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 Type: 3:0x2f81cc8f6af30BcA58CbFAe4E6EeaA0D56AAD018,0xc731c7cA8F7d08eDDb1d5B33ecdcfac47bAa841d,0x688828B4032E708324ff253eF3A9640bAc371E23,0xE6e7EE2e6AE93358A1d81481b7547FCBa21b2F94 Type: 4: getModulesByTypeAndToken: Type: 0: Type: 1:0x9c6f076855d3643AB52772F2108D4046a10049EC Type: 2:0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 Type: 3: Type: 4: getTagsByType: Type: 0: Type: 0: Type: 1:0x9c6f076855d3643AB52772F2108D4046a10049EC Type: 1:Permission Management Type: 2:0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7,0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 Type: 2:General,Transfer Restriction Type: 3:0x2f81cc8f6af30BcA58CbFAe4E6EeaA0D56AAD018,0x2f81cc8f6af30BcA58CbFAe4E6EeaA0D56AAD018,0x2f81cc8f6af30BcA58CbFAe4E6EeaA0D56AAD018,0x2f81cc8f6af30BcA58CbFAe4E6EeaA0D56AAD018,0xc731c7cA8F7d08eDDb1d5B33ecdcfac47bAa841d,0xc731c7cA8F7d08eDDb1d5B33ecdcfac47bAa841d,0xc731c7cA8F7d08eDDb1d5B33ecdcfac47bAa841d,0xc731c7cA8F7d08eDDb1d5B33ecdcfac47bAa841d,0x688828B4032E708324ff253eF3A9640bAc371E23,0x688828B4032E708324ff253eF3A9640bAc371E23,0x688828B4032E708324ff253eF3A9640bAc371E23,0x688828B4032E708324ff253eF3A9640bAc371E23,0xE6e7EE2e6AE93358A1d81481b7547FCBa21b2F94,0xE6e7EE2e6AE93358A1d81481b7547FCBa21b2F94,0xE6e7EE2e6AE93358A1d81481b7547FCBa21b2F94,0xE6e7EE2e6AE93358A1d81481b7547FCBa21b2F94 Type: 3:Capped,ETH,POLY,STO,Capped,ETH,POLY,STO,Capped,ETH,POLY,STO,Test,Non-refundable,ETH, Type: 4: Type: 4: getTagsByTypeAndToken: Type: 0: Type: 0: Type: 1:0x9c6f076855d3643AB52772F2108D4046a10049EC Type: 1:Permission Management Type: 2:0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7,0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 Type: 2:General,Transfer Restriction Type: 3: Type: 3: Type: 4: Type: 4: ✓ Check getter - (583ms) Test cases for removeModule() ✓ Should fail if msg.sender not curator or owner ✓ Should successfully remove module and delete data if msg.sender is curator (177ms) ✓ Should successfully remove module and delete data if msg.sender is owner (143ms) ✓ Should fail if module already removed (59ms) Test cases for IRegistry functionality Test cases for reclaiming funds ✓ Should successfully reclaim POLY tokens -- fail because token address will be 0x ✓ Should successfully reclaim POLY tokens -- not authorised ✓ Should successfully reclaim POLY tokens (100ms) Test cases for pausing the contract ✓ Should fail to pause if msg.sender is not owner ✓ Should successfully pause the contract ✓ Should fail to unpause if msg.sender is not owner ✓ Should successfully unpause the contract Test cases for the ReclaimTokens contract ✓ Should successfully reclaim POLY tokens -- fail because token address will be 0x ✓ Should successfully reclaim POLY tokens -- not authorised ✓ Should successfully reclaim POLY tokens (87ms) Test case for the PolymathRegistry ✓ Should successfully get the address -- fail because key is not exist ✓ Should successfully get the address Test cases for the transferOwnership ✓ Should fail to transfer the ownership -- not authorised ✓ Should fail to transfer the ownership -- 0x address is not allowed ✓ Should successfully transfer the ownership of the STR (54ms) ✓ New owner has authorisation Contract: PercentageTransferManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 PercentageTransferManagerFactory: 0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (78ms) ✓ Should generate the new security token with the same symbol as registered above (346ms) ✓ Should initialize the auto attached modules ✓ Should successfully attach the General permission manager factory with the security token (164ms) Buy tokens using on-chain whitelist ✓ Should Buy the tokens (152ms) ✓ Should Buy some more tokens (140ms) ✓ Should successfully attach the PercentageTransferManager factory with the security token - failed payment (209ms) ✓ Should successfully attach the PercentageTransferManager factory with the security token (203ms) ✓ Should successfully attach the PercentageTransferManager with the security token (161ms) ✓ Add a new token holder (153ms) ✓ Should pause the tranfers at transferManager level ✓ Should still be able to transfer between existing token holders up to limit (68ms) ✓ Should unpause the tranfers at transferManager level ✓ Should not be able to transfer between existing token holders over limit (101ms) ✓ Should not be able to issue token amount over limit (96ms) ✓ Allow unlimited primary issuance and remint (115ms) ✓ Should not be able to transfer between existing token holders over limit (102ms) ✓ Should not be able to modify holder percentage to 100 - Unauthorized msg.sender (48ms) ✓ Should successfully add the delegate ✓ Should provide the permission ✓ Modify holder percentage to 100 ✓ Should be able to transfer between existing token holders up to limit (85ms) ✓ Should whitelist in batch --failed because of mismatch in array lengths ✓ Should whitelist in batch (40ms) ✓ Should be able to whitelist address and then transfer regardless of holders (107ms) ✓ Should get the permission Percentage Transfer Manager Factory test cases ✓ Should get the exact details of the factory (64ms) ✓ Should get the tags of the factory Contract: PreSaleSTO STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 PreSaleSTOFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (80ms) ✓ Should generate the new security token with the same symbol as registered above (290ms) ✓ Should initialize the auto attached modules ✓ Should fail to launch the STO due to endTime is 0 (236ms) ✓ Should successfully attach the Paid STO factory (archived) with the security token (213ms) ✓ Should successfully attach the STO factory with the security token -- fail because signature is different (197ms) ✓ Should successfully attach the STO factory (archived) with the security token (186ms) ✓ Should successfully attach the STO factory with the security token (197ms) verify the data of STO ✓ Should verify the configuration of the STO ✓ Should get the permissions Buy tokens BN { negative: 0, words: [ 1, <1 empty item> ], length: 1, red: null } ✓ Should Buy the tokens (367ms) ✓ Should allocate the tokens --failed because of amount is 0 ✓ Should allocate the tokens -- failed due to msg.sender is not pre sale admin (46ms) ✓ Should allocate tokens to multiple investors (291ms) ✓ Should successfully mint multiple tokens -- failed because array mismatch ✓ Should successfully mint multiple tokens -- failed because array mismatch (40ms) ✓ Should successfully mint multiple tokens -- failed because array mismatch (39ms) ✓ Should successfully mint multiple tokens -- failed because array mismatch (38ms) ✓ Should buy some more tokens to previous investor (86ms) ✓ Should failed at the time of buying the tokens -- Because STO has ended (42ms) Reclaim poly sent to STO by mistake ✓ Should fail to reclaim POLY because token contract address is 0 address (68ms) ✓ Should successfully reclaim POLY (125ms) BN { negative: 0, words: [ 13369344, 49575989, 222710, <1 empty item> ], length: 3, red: null } ✓ Should get the the tokens sold Test cases for the PresaleSTOFactory ✓ should get the exact details of the factory (80ms) Contract: SecurityTokenRegistry STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d 0x795d0789A203626d05FbA5419F298Ed6e641aF48 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6 SecurityTokenRegistry: 0x795d0789A203626d05FbA5419F298Ed6e641aF48 ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 DummySTOFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Test the initialize the function ✓ Should successfully update the implementation address -- fail because polymathRegistry address is 0x (40ms) ✓ Should successfully update the implementation address -- fail because owner address is 0x (42ms) ✓ Should successfully update the implementation address -- fail because all params get 0 (39ms) 0xa13BeaC90A97420310c3430c2A921786eA12D214 3 0 0 [ BN { negative: 0, words: [ 3, <1 empty item> ], length: 1, red: null }, BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null }, BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null } ] ✓ Should successfully update the implementation address (158ms) Test cases of the registerTicker ✓ verify the intial parameters (82ms) ✓ Can't call the initialize function again ✓ Should fail to register ticker if tickerRegFee not approved (47ms) ✓ Should fail to register ticker if owner is 0x (64ms) ✓ Should fail to register ticker due to the symbol length is 0 ✓ Should fail to register ticker due to the symbol length is greater than 10 ✓ Should register the ticker before the generation of the security token (101ms) Current Rate: 250000000000000000 ✓ Should change ticker price based on oracle (415ms) ✓ Should register the ticker when the tickerRegFee is 0 (94ms) ✓ Should fail to register same symbol again (110ms) ✓ Should successfully register pre registerd ticker if expiry is reached (130ms) ✓ Should fail to register ticker if registration is paused (76ms) ✓ Should fail to pause if already paused ✓ Should successfully register ticker if registration is unpaused (100ms) ✓ Should fail to unpause if already unpaused Test cases for the expiry limit ✓ Should fail to set the expiry limit because msg.sender is not owner ✓ Should successfully set the expiry limit ✓ Should fail to set the expiry limit because new expiry limit is lesser than one day Test cases for the getTickerDetails ✓ Should get the details of the symbol ✓ Should get the details of unregistered token Generate SecurityToken This is the data from the original securityTokenRegistry contract ✓ Should get the ticker details successfully and prove the data is not storing in to the logic contract ✓ Should fail to generate new security token if fee not provided (81ms) ✓ Should fail to generate token if registration is paused (68ms) ✓ Should fail to generate the securityToken -- Because ticker length is 0 (62ms) ✓ Should fail to generate the securityToken -- Because name length is 0 ✓ Should fail to generate the securityToken -- Because version is not valid ✓ Should fail to generate the securityToken -- Because treasury wallet is 0x0 ✓ Should fail to generate the securityToken -- Because msg.sender is not the rightful owner of the ticker (40ms) 0x0000000000000000000000000000000000000000 0 0 0 [ BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null }, BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null }, BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null } ] ✓ Should generate the new security token with the same symbol as registered above (322ms) ✓ Should fail to generate the SecurityToken when token is already deployed with the same symbol ✓ Should fail to generate the SecurityToken because ticker gets expired (135ms) ✓ Should generate the SecurityToken when launch fee is 0 (330ms) ✓ Should get all created security tokens (480ms) Generate SecurityToken v2 STF deployed ✓ Should deploy the new ST factory version 2 (271ms) ✓ Should register the ticker before the generation of the security token (83ms) ✓ Should change the protocol version (124ms) ✓ Should fail to generate the securityToken because of invalid version (99ms) Protocol version: 131584 [ BN { negative: 0, words: [ 2, <1 empty item> ], length: 1, red: null }, BN { negative: 0, words: [ 2, <1 empty item> ], length: 1, red: null }, BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null } ] ✓ Should generate the new security token with version 2 (264ms) Deploy the new SecurityTokenRegistry ✓ Should deploy the new SecurityTokenRegistry contract logic ✓ Should fail to upgrade the logic contract of the STRProxy -- bad owner (48ms) ✓ Should upgrade the logic contract into the STRProxy (43ms) ✓ Should check the old data persist or not ✓ Should unpause the logic contract Generate custom tokens ✓ Should fail if msg.sender is not polymath ✓ Should fail to genrate the custom security token -- ticker length is greater than 10 chars ✓ Should fail to generate the custom security token -- name should not be 0 length ✓ Should fail if ST address is 0 address ✓ Should fail if symbol length is 0 ✓ Should fail to generate the custom ST -- deployedAt param is 0 [] [ '0x4c4f470000000000000000000000000000000000000000000000000000000000' ] [ '0x4c4f470000000000000000000000000000000000000000000000000000000000' ] ✓ Should successfully generate custom token (268ms) ✓ Should successfully generate the custom token (78ms) ✓ Should successfully modify the ticker (63ms) Test case for modifyTicker ✓ Should add the custom ticker --failed because of bad owner ✓ Should add the custom ticker --fail ticker length should not be 0 ✓ Should add the custom ticker --failed because time should not be 0 ✓ Should add the custom ticker --failed because registeration date is greater than the expiryDate ✓ Should add the custom ticker --failed because owner should not be 0x ✓ Should add the new custom ticker (46ms) ✓ Should change the details of the existing ticker (97ms) Test cases for the transferTickerOwnership() ✓ Should be able to transfer the ticker ownership -- failed because token is not deployed having the same ticker ✓ Should be able to transfer the ticker ownership -- failed because new owner is 0x ✓ Should be able to transfer the ticker ownership -- failed because ticker is of zero length ✓ Should be able to transfer the ticker ownership (78ms) Test case for the changeSecurityLaunchFee() ✓ Should be able to change the STLaunchFee-- failed because of bad owner ✓ Should be able to change the STLaunchFee-- failed because of putting the same fee ✓ Should be able to change the STLaunchFee Test cases for the changeExpiryLimit() ✓ Should be able to change the ExpiryLimit-- failed because of bad owner ✓ Should be able to change the ExpiryLimit-- failed because expirylimit is less than 1 day ✓ Should be able to change the ExpiryLimit Test cases for the changeTickerRegistrationFee() ✓ Should be able to change the fee currency-- failed because of bad owner ✓ Should be able to change the fee currency-- failed because of putting the same currency ✓ Should be able to change the fee currency (107ms) Test cases for the changeTickerRegistrationFee() ✓ Should be able to change the TickerRegFee-- failed because of bad owner ✓ Should be able to change the TickerRegFee-- failed because of putting the same fee ✓ Should be able to change the TickerRegFee ✓ Should fail to register the ticker with the old fee (66ms) ✓ Should register the ticker with the new fee (101ms) ✓ Should fail to launch the securityToken with the old launch fee (126ms) ✓ Should launch the the securityToken (252ms) Test case for the update poly token ✓ Should change the polytoken address -- failed because of bad owner ✓ Should change the polytoken address -- failed because of 0x address ✓ Should successfully change the polytoken address (67ms) Test case for refreshing a security token ✓ Should fail if msg.sender is not ST owner (44ms) ✓ Should fail if ticker is not deployed (41ms) ✓ Should fail if name is 0 length ✓ Should fail if null treasurey wallet ✓ Should fail if transfers not frozen (48ms) ✓ Should refresh security token (318ms) Test cases for getters ✓ Should get the security token address ✓ Should get the security token data [ '0x4445540000000000000000000000000000000000000000000000000000000000', '0x4141410000000000000000000000000000000000000000000000000000000000', '0x4554480000000000000000000000000000000000000000000000000000000000', '0x504f4c5900000000000000000000000000000000000000000000000000000000' ] [ '0x4c4f470000000000000000000000000000000000000000000000000000000000', '0x4c4f473200000000000000000000000000000000000000000000000000000000', '0x4445543200000000000000000000000000000000000000000000000000000000' ] ✓ Should get the tickers by owner (141ms) Test case for the Removing the ticker ✓ Should remove the ticker from the polymath ecosystem -- bad owner ✓ Should remove the ticker from the polymath ecosystem -- fail because ticker doesn't exist in the ecosystem ✓ Should successfully remove the ticker from the polymath ecosystem (44ms) Test cases of the registerTicker [ 'LOG', 'LOG2', 'TOK1' ] ✓ Should register the ticker 1 (165ms) [ 'LOG', 'LOG2', 'TOK1', 'TOK2' ] ✓ Should register the ticker 2 (181ms) [ 'LOG', 'LOG2', 'TOK1', 'TOK2', 'TOK3' ] ✓ Should register the ticker 3 (199ms) [ 'LOG', 'LOG2', 'TOK1', 'TOK3' ] ✓ Should successfully remove the ticker 2 (132ms) [ 'LOG', 'LOG2', 'TOK3', 'TOK1' ] ✓ Should modify ticker 1 (147ms) [ 'LOG', 'LOG2', 'TOK1', 'TOK3' ] ✓ Should modify ticker 3 (145ms) Test cases for IRegistry functionality Test cases for reclaiming funds ✓ Should successfully reclaim POLY tokens -- fail because token address will be 0x (38ms) ✓ Should successfully reclaim POLY tokens -- not authorised ✓ Should successfully reclaim POLY tokens (44ms) Test cases for pausing the contract ✓ Should fail to pause if msg.sender is not owner ✓ Should successfully pause the contract ✓ Should fail to unpause if msg.sender is not owner ✓ Should successfully unpause the contract Test cases for the setProtocolVersion ✓ Should successfully change the protocolVersion -- failed because of bad owner ✓ Should successfully change the protocolVersion -- failed because factory address is 0x ✓ Should successfully change the protocolVersion -- not a valid version ✓ Should successfully change the protocolVersion -- fail in second attempt because of invalid version (59ms) Test cases for the transferOwnership ✓ Should fail to transfer the ownership -- not authorised ✓ Should fail to transfer the ownership -- 0x address is not allowed ✓ Should successfully transfer the ownership of the STR Contract: SecurityToken STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 CappedSTOFactory: 0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (84ms) LOGS: 0 { logIndex: 8, transactionIndex: 0, transactionHash: '0x3f012492229a817a2e231d74c437ced7c2f341576e27b10fe465e17341738df1', blockHash: '0x1031b9d5a5ade3de84dffaaf4abaaf5f705a2cb6e9476725ab25f20cc0281ec5', blockNumber: 117, address: '0xBD031BCc6d4c151DC43F717e0Dd2aB9238eE0C42', type: 'mined', id: 'log_80aaa2ac', event: 'OwnershipTransferred', args: Result { '0': '0xa13BeaC90A97420310c3430c2A921786eA12D214', '1': '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6', __length__: 2, previousOwner: '0xa13BeaC90A97420310c3430c2A921786eA12D214', newOwner: '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6' } } LOGS: 1 { logIndex: 9, transactionIndex: 0, transactionHash: '0x3f012492229a817a2e231d74c437ced7c2f341576e27b10fe465e17341738df1', blockHash: '0x1031b9d5a5ade3de84dffaaf4abaaf5f705a2cb6e9476725ab25f20cc0281ec5', blockNumber: 117, address: '0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f', type: 'mined', id: 'log_ac232569', event: 'NewSecurityTokenCreated', args: Result { '0': 'DET', '1': 'Demo Token', '2': '0xBD031BCc6d4c151DC43F717e0Dd2aB9238eE0C42', '3': '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6', '4': BN { negative: 0, words: [Array], length: 2, red: null }, '5': '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6', '6': false, '7': BN { negative: 0, words: [Array], length: 3, red: null }, '8': BN { negative: 0, words: [Array], length: 3, red: null }, '9': BN { negative: 0, words: [Array], length: 1, red: null }, __length__: 10, _ticker: 'DET', _name: 'Demo Token', _securityTokenAddress: '0xBD031BCc6d4c151DC43F717e0Dd2aB9238eE0C42', _owner: '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6', _addedAt: BN { negative: 0, words: [Array], length: 2, red: null }, _registrant: '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6', _fromAdmin: false, _usdFee: BN { negative: 0, words: [Array], length: 3, red: null }, _polyFee: BN { negative: 0, words: [Array], length: 3, red: null }, _protocolVersion: BN { negative: 0, words: [Array], length: 1, red: null } } } ✓ Should generate the new security token with the same symbol as registered above (313ms) ✓ Should not allow unauthorized address to change name ✓ Should allow authorized address to change name (38ms) ✓ Should initialize the auto attached modules ✓ Should failed to change the treasury wallet address -- because of wrong owner ✓ Should successfully change the treasury wallet address ✓ Should mint the tokens before attaching the STO -- fail only be called by the owner (90ms) ✓ Should issue the tokens before attaching the STO (67ms) ✓ Should issue the multi tokens before attaching the STO -- fail only be called by the owner (92ms) Total balance: 100 Locked balance: 0 Unlocked balance: 100 Wrong partition: 0 ✓ Should check the balance of the locked tokens (169ms) ✓ Should fail due to array length mismatch Cost for issuing to 40 addresses without checkpoint: 5187193 Cost for issuing to 40 addresses with checkpoint: 7087762 ✓ Should mint to lots of addresses and check gas (3468ms) ✓ Should issue the tokens for multiple afiliated investors before attaching the STO (106ms) ✓ Should ST be issuable ✓ Should finish the minting -- fail because owner didn't sign correct acknowledegement ✓ Should finish the minting -- fail because msg.sender is not the owner ✓ Should finish minting & restrict the further minting (81ms) ✓ Should fail to attach the STO factory because not enough poly in contract (192ms) ✓ Should fail to attach the STO factory because max cost too small (163ms) 0 module label is .. stofactory ✓ Should successfully add module with label (239ms) ✓ Should successfully attach the STO factory with the security token (218ms) ✓ Should successfully issue tokens while STO attached (67ms) ✓ Should fail to issue tokens while STO attached after freezeMinting called (65ms) Module related functions ✓ Should get the modules of the securityToken by name ✓ Should get the modules of the securityToken by index (not added into the security token yet) ✓ Should get the modules of the securityToken by name ✓ Should get the modules of the securityToken by name (not added into the security token yet) ✓ Should get the modules of the securityToken by name (not added into the security token yet) ✓ Should fail in updating the token details ✓ Should update the token details ✓ Should successfully remove the general transfer manager module from the securityToken -- fails msg.sender should be Owner ✓ Should fail to remove the module - module not archived ✓ Should fail to remove the module - incorrect address ✓ Should successfully remove the general transfer manager module from the securityToken (194ms) ✓ Should successfully remove the module from the middle of the names mapping (1026ms) ✓ Should successfully archive the module first and fail during achiving the module again (60ms) ✓ Should verify the revertion of snapshot works properly ✓ Should successfully archive the general transfer manager module from the securityToken (40ms) ✓ Should successfully issue tokens while GTM archived (66ms) ✓ Should successfully unarchive the general transfer manager module from the securityToken (67ms) ✓ Should successfully unarchive the general transfer manager module from the securityToken -- fail because module is already unarchived ✓ Should successfully archive the module -- fail because module is not existed ✓ Should fail to issue tokens while GTM unarchived (97ms) ✓ Should change the budget of the module - fail incorrect address ✓ Should change the budget of the module (38ms) ✓ Should change the budget of the module (decrease it) ✓ Should fail to get the total supply -- because checkpoint id is greater than present General Transfer manager Related test cases BEFORE AFTER ✓ Should Buy the tokens (190ms) ✓ Should Fail in transferring the token from one whitelist investor 1 to non whitelist investor 2 (227ms) ✓ Should fail to provide the permission to the delegate to change the transfer bools -- Bad owner (216ms) ✓ Should provide the permission to the delegate to change the transfer bools (57ms) ✓ Should activate allow All Transfer (74ms) ✓ Should fail to send tokens with the wrong granularity (61ms) ✓ Should not allow 0 granularity ✓ Should adjust granularity (125ms) ✓ Should not allow unauthorized address to change data store ✓ Should not allow 0x0 address as data store ✓ Should change data store (58ms) ✓ Should transfer from whitelist investor to non-whitelist investor in first tx and in 2nd tx non-whitelist to non-whitelist transfer (154ms) ✓ Should activate allow All Whitelist Transfers (59ms) ✓ Should upgrade token logic and getter (339ms) ✓ Should transfer from whitelist investor1 to whitelist investor 2 (132ms) ✓ Should transfer from whitelist investor1 to whitelist investor 2 -- value = 0 (47ms) ✓ Should transferFrom from one investor to other (140ms) ✓ Should Fail in trasferring from whitelist investor1 to non-whitelist investor (123ms) ✓ Should successfully issue tokens while STO attached (64ms) ✓ Should issue the tokens for multiple afiliated investors while STO attached (98ms) ✓ Should provide more permissions to the delegate (38ms) ✓ Should add the investor in the whitelist by the delegate (80ms) ✓ should account_temp successfully buy the token (111ms) ✓ STO should fail to issue tokens after minting is frozen (73ms) ✓ Should remove investor from the whitelist by the delegate (60ms) ✓ should account_temp fail in buying the token (61ms) ✓ Should freeze the transfers ✓ Should fail to freeze the transfers ✓ Should fail in buying to tokens (106ms) ✓ Should fail in trasfering the tokens from one user to another (44ms) ✓ Should unfreeze all the transfers (61ms) ✓ Should freeze the transfers ✓ Should able to transfers the tokens from one user to another (54ms) Total Seen Investors: 4 ✓ Should check that the list of investors is correct ✓ Should fail to set controller status because msg.sender not owner ✓ Should successfully set controller (82ms) ✓ Should ST be the controllable ✓ Should force burn the tokens - value too high (145ms) 0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560 500 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 220 0xE2b3204F29Ab45d5fd074Ff02aDE098FbC381D42 1001 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 999 ✓ Should force burn the tokens - wrong caller (110ms) ✓ Should burn the tokens (102ms) Filtered investors:0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560,0xce42bdB34189a93c55De250E011c68FaeE374Dd3,0xE2b3204F29Ab45d5fd074Ff02aDE098FbC381D42 ✓ Should use getInvestorsAt to determine balances now (62ms) All investors:0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560,0xce42bdB34189a93c55De250E011c68FaeE374Dd3,0xE2b3204F29Ab45d5fd074Ff02aDE098FbC381D42,0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Filtered investors:0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560 ✓ Should prune investor length test #2 (343ms) All Investors: 0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560,0xce42bdB34189a93c55De250E011c68FaeE374Dd3,0xE2b3204F29Ab45d5fd074Ff02aDE098FbC381D42,0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Filtered Investors (0, 0): 0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560 Filtered Investors (2, 3): 0xE2b3204F29Ab45d5fd074Ff02aDE098FbC381D42,0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Filtered Investors (0, 3): 0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560,0xce42bdB34189a93c55De250E011c68FaeE374Dd3,0xE2b3204F29Ab45d5fd074Ff02aDE098FbC381D42,0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 ✓ Should get filtered investors (78ms) ✓ Should check the balance of investor at checkpoint ✓ Should check the balance of investor at checkpoint Test cases for the Mock TrackedRedeemption ✓ Should add the tracked redeemption module successfully (369ms) ✓ Should successfully burn tokens (203ms) Result { '0': '0x547261636b6564526564656d7074696f6e000000000000000000000000000000', '1': '0xec7b1121cff1cb7fD3B7203f6BB28eC9e31457e6', '2': '0xb52A9952aaea7189e0A4f2d872DF0993555aF57B', '3': true, '4': [ BN { negative: 0, words: [Array], length: 1, red: null } ], '5': '0x0000000000000000000000000000000000000000000000000000000000000000' } ✓ Should fail to burn the tokens because module get archived (75ms) ✓ Should successfully fail in calling the burn functions (472ms) Withdraw Poly ✓ Should successfully withdraw the poly -- failed because of zero address of token ✓ Should successfully withdraw the poly ✓ Should successfully withdraw the poly (52ms) ✓ Should successfully withdraw the poly Force Transfer ✓ Should fail to controllerTransfer because not approved controller ✓ Should fail to controllerTransfer because insufficient balance (86ms) ✓ Should fail to controllerTransfer because recipient is zero address (76ms) ✓ Should successfully controllerTransfer (126ms) ✓ Should fail to freeze controller functionality because proper acknowledgement not signed by owner ✓ Should fail to freeze controller functionality because not owner ✓ Should successfully freeze controller functionality (60ms) ✓ Should fail to freeze controller functionality because already frozen (45ms) ✓ Should fail to set controller because controller functionality frozen ✓ Should fail to controllerTransfer because controller functionality frozen Test cases for the partition functions -- ERC1410 ✓ Set the transfer requirements (44ms) 0xE2b3204F29Ab45d5fd074Ff02aDE098FbC381D42 total balance: 991 0xE2b3204F29Ab45d5fd074Ff02aDE098FbC381D42 Locked balance: 0 0xE2b3204F29Ab45d5fd074Ff02aDE098FbC381D42 Unlocked balance: 991 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD total balance: 10 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Locked balance: 0 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Unlocked balance: 10 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 total balance: 0 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Locked balance: 0 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 Unlocked balance: 0 0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560 total balance: 500 0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560 Locked balance: 0 0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560 Unlocked balance: 500 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 total balance: 220 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Locked balance: 0 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Unlocked balance: 220 ✓ Should Successfully transfer tokens by the partition (646ms) ✓ Should authorize the operator ✓ Should fail to call operatorTransferByPartition-- not a valid partition ✓ Should fail to call operatorTransferByPartition-- not a valid operator ✓ Should fail to call operatorTransferByPartition-- not a valid operatorData ✓ Should successfully execute operatorTransferByPartition (133ms) ✓ Should revoke operator ✓ Should fail to transfer by operator -- not a valid operator ✓ Should fail to execute authorizeOperatorByPartition successfully for invalid partition ✓ Should execute authorizeOperatorByPartition successfully ✓ Should successfully transfer the tokens by operator (130ms) ✓ Should successfully execute revokeOperatorByPartition successfully ✓ Should fail to issue to tokens according to partition -- invalid partition ✓ Should fail to issue to tokens according to partition -- invalid token owner ✓ Should successfullly issue the tokens according to partition (154ms) ✓ Should execute authorizeOperatorByPartition successfully (65ms) ✓ Should fail to redeem tokens as per partition -- incorrect msg.sender ✓ Should failed to redeem tokens by partition -- because not sufficient allowance (101ms) ✓ should failed to redeem tokens by partition -- because invalid partition (117ms) ✓ Should successfully redeem tokens by partition (88ms) ✓ Should failed to call operatorRedeemByPartition -- msg.sender is not authorised ✓ Should fail when partition is not valid (147ms) ✓ Should successfully redeem tokens by operator (93ms) Test cases for the storage Verifying the balances of the Addresses Balances from the contract: 500 Balances from the storage: 500 Balances from the contract: 220 Balances from the storage: 220 Balances from the contract: 977 Balances from the storage: 977 Balances from the contract: 0 Balances from the storage: 0 TotalSupply from contract: 2551 TotalSupply from the storage: 2551 Name of the ST: Demo Token Name of the ST from the storage: Demo Token� Symbol of the ST: DET Symbol of the ST from the storage: DET� Address of the owner: 0x6704Fbfcd5Ef766B287262fA2281C105d57246a6 Address of the owner from the storage: 0x6704fbfcd5ef766b287262fa2281c105d57246a6 ✓ Test the storage values of the ERC20 vairables (263ms) Controller address from the contract: 0x0000000000000000000000000000000000000000 decimals from the contract: 18 controller address from the storage + uint8 decimals: 0x12 PolymathRegistry address from the contract: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a PolymathRegistry address from the storage: 0xac772223d1fb1e8881e29a4f55d815c8c4bbc43a ModuleRegistry address from the contract: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry address from the storage: 0x24d718f7d8af7d7a4abaa2b1cb7abbb36a23a00d SecurityTokenRegistry address from the contract: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry address from the storage: 0xed0e0bdbdb1a09f77b53f0c8345eafa77951108f PolyToken address from the contract: 0x8215f88E6D8a1b8aF05b8aC5036Ca12e1aa8701b PolyToken address from the storage: 0x8215f88e6d8a1b8af05b8ac5036ca12e1aa8701b Delegate address from the contract: 0x8F873E9c628d763BD7D4Fddab8e071E31cF5Af0F Delegate address from the storage: 0x8f873e9c628d763bd7d4fddab8e071e31cf5af0f Datastore address from the contract: 0xf19BC6F2425ab439e80CCE51d95CAAc1B3E347d0 Datastore address from the storage: 0xf19bc6f2425ab439e80cce51d95caac1b3e347d0 Granularity value from the contract: 1000000000000000000 Granularity value from the storage: 1000000000000000000 Current checkpoint ID from the contract: 2 Current checkpoint ID from the storage: 2 TokenDetails from the contract: new token details TokenDetails from the storage: new token details ✓ Verify the storage of the STStorage (277ms) Test cases for the ERC1643 contract Test cases for the setDocument() function of the ERC1643 ✓ Should failed in executing the setDocument() function because msg.sender is not authorised ✓ Should failed to set a document details as name is empty ✓ Should failed to set a document details as URI is empty ✓ Should sucessfully add the document details in the `_documents` mapping and change the length of the `_docsNames` (40ms) ✓ Should successfully add the new document and allow the empty docHash to be added in the `Document` structure (40ms) ✓ Should successfully update the existing document and length of `_docsNames` should remain unaffected Test cases for the getters functions ✓ Should get the details of existed document ✓ Should get the details of the non-existed document it means every value should be zero ✓ Should get all the documents present in the contract Test cases for the removeDocument() ✓ Should failed to remove document because msg.sender is not authorised ✓ Should failed to remove the document that is not existed in the contract ✓ Should succssfully remove the document from the contract which is present in the last index of the `_docsName` and check the params of the `DocumentRemoved` event (107ms) ✓ Should delete the doc to validate the #17 issue problem (39ms) Test cases for the getters functions ✓ Should get the details of the non-existed (earlier was present but get removed ) document it means every value should be zero ✓ Should get all the documents present in the contract which should be 1 (42ms) Contract: USDTieredSTO STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 USDOracle: 0xD90d13ad9D5AB251D11dCC96Ac6fBd1302070eA5 POLYOracle: 0x4fE2f42c29EC6DbCfF88835Bb7F8268E5bDC8392 USDTieredSTOFactory: 0x1865bB3405Fb32FaC2d838eCeE497A8a86693775 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (98ms) ✓ Should generate the new security token with the same symbol as registered above (294ms) ✓ Should initialize the auto attached modules Test sto deployment Gas addModule: 2287327 ✓ Should successfully attach the first STO module to the security token (385ms) ✓ Should attach the paid STO factory -- failed because of no tokens (229ms) ✓ Should attach the paid STO factory (240ms) ✓ Should allow non-matching beneficiary ✓ Should allow non-matching beneficiary -- failed because it is already active ✓ Should successfully call the modifyTimes before starting the STO -- fail because of bad owner ✓ Should successfully call the modifyTimes before starting the STO (53ms) Gas addModule: 2596854 ✓ Should successfully attach the second STO module to the security token (613ms) Gas addModule: 2302711 ✓ Should successfully attach the third STO module to the security token (214ms) Gas addModule: 2272263 ✓ Should successfully attach the fourth STO module to the security token (205ms) Gas addModule: 2302711 ✓ Should successfully attach the fifth STO module to the security token (221ms) Gas addModule: 2271815 ✓ Should successfully attach the sixth STO module to the security token (226ms) ✓ Should fail because rates and tier array of different length (894ms) ✓ Should fail because rate of token should be greater than 0 (336ms) ✓ Should fail because Zero address is not permitted for wallet (263ms) ✓ Should fail because end time before start time (228ms) ✓ Should fail because start time is in the past (221ms) Test modifying configuration ✓ Should successfully change config before startTime - funding (136ms) HERE ✓ Should successfully change config before startTime - limits and tiers, times, addresses (249ms) ✓ Should fail to change config after endTime (223ms) Test buying failure conditions ✓ should fail if before STO start time (676ms) ✓ should fail if not whitelisted (1277ms) ✓ should fail if minimumInvestmentUSD not met (746ms) ✓ should successfully pause the STO and make investments fail, then unpause and succeed (1329ms) ✓ should allow changing stable coin address in middle of STO (665ms) ✓ should fail if after STO end time (703ms) ✓ should fail if finalized (950ms) Prep STO ✓ should jump forward to after STO start ✓ should whitelist ACCREDITED1 and NONACCREDITED1 (171ms) Result { '0': [ '0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7', '0xce42bdB34189a93c55De250E011c68FaeE374Dd3' ], '1': [ false, true ], '2': [ BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ], investors: [ '0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7', '0xce42bdB34189a93c55De250E011c68FaeE374Dd3' ], accredited: [ false, true ], overrides: [ BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ] } ✓ should successfully modify accredited addresses for the STOs Buy Tokens with no discount Gas fallback purchase: 339099 ✓ should successfully buy using fallback at tier 0 for NONACCREDITED1 (492ms) Gas buyWithETH: 181986 ✓ should successfully buy using buyWithETH at tier 0 for NONACCREDITED1 (389ms) Gas buyWithPOLY: 227635 ✓ should successfully buy using buyWithPOLY at tier 0 for NONACCREDITED1 (426ms) Gas buyWithUSD: 233863 ✓ should successfully buy using buyWithUSD at tier 0 for NONACCREDITED1 (466ms) Gas fallback purchase: 232675 ✓ should successfully buy using fallback at tier 0 for ACCREDITED1 (368ms) Gas buyWithETH: 180562 ✓ should successfully buy using buyWithETH at tier 0 for ACCREDITED1 (358ms) Gas buyWithPOLY: 181211 ✓ should successfully buy using buyWithPOLY at tier 0 for ACCREDITED1 (639ms) Current investment: 20000000000000000000 Current limit: 5000000000000000000000 ✓ should successfully modify NONACCREDITED cap for NONACCREDITED1 (73ms) Expected refund in tokens: 200000000000000000000 Gas buyWithETH: 189274 Gas buyWithPOLY: 198287 ✓ should successfully buy a partial amount and refund balance when reaching NONACCREDITED cap (805ms) ✓ should fail and revert when NONACCREDITED cap reached (257ms) ✓ should fail and revert despite oracle price change when NONACCREDITED cap reached (407ms) Gas buyWithETH: 434998 ✓ should successfully buy across tiers for NONACCREDITED ETH (436ms) Gas buyWithPOLY: 356217 ✓ should successfully buy across tiers for NONACCREDITED POLY (485ms) Gas buyWithETH: 358574 ✓ should successfully buy across tiers for ACCREDITED ETH (425ms) Gas buyWithUSD: 345236 ✓ should successfully buy across tiers for ACCREDITED DAI (492ms) Gas buyWithPOLY: 324793 ✓ should successfully buy across tiers for ACCREDITED POLY (524ms) 5000000000000000000:50000000000000000000 45000000000000000000 Gas buyWithETH: 205762 ✓ should buy out the rest of the sto (233ms) ✓ should fail and revert when all tiers sold out (540ms) ✓ should fail and revert when all tiers sold out despite oracle price change (716ms) Buy Tokens with POLY discount Gas fallback purchase: 289837 ✓ should successfully buy using fallback at tier 0 for NONACCREDITED1 (477ms) Gas buyWithETH: 181986 ✓ should successfully buy using buyWithETH at tier 0 for NONACCREDITED1 (365ms) Gas buyWithPOLY: 247441 ✓ should successfully buy using buyWithPOLY at tier 0 for NONACCREDITED1 (411ms) Gas fallback purchase: 213413 ✓ should successfully buy using fallback at tier 0 for ACCREDITED1 (360ms) Gas buyWithETH: 180562 ✓ should successfully buy using buyWithETH at tier 0 for ACCREDITED1 (416ms) Gas buyWithPOLY: 201017 ✓ should successfully buy using buyWithPOLY at tier 0 for ACCREDITED1 (606ms) Gas buyWithPOLY: 202936 ✓ should successfully buy a partial amount and refund balance when reaching NONACCREDITED cap (516ms) Gas buyWithPOLY: 327273 ✓ should successfully buy a granular amount and refund balance when buying indivisible token with POLY (554ms) Gas buyWithPOLY: 424872 ✓ should successfully buy a granular amount when buying indivisible token with illegal tier limits (630ms) Gas buyWithETH: 232262 ✓ should successfully buy a granular amount and refund balance when buying indivisible token with ETH (347ms) ✓ should fail and revert when NONACCREDITED cap reached (260ms) ✓ should fail when rate set my contract is too low (469ms) ✓ should fail and revert despite oracle price change when NONACCREDITED cap reached (460ms) Gas buyWithPOLY: 186081 Gas buyWithPOLY: 339892 ✓ should successfully buy across tiers for POLY (702ms) Gas buyWithPOLY: 266835 ✓ should successfully buy across the discount cap (448ms) Gas buyWithPOLY: 181147 ✓ should buy out the rest of the sto (261ms) ✓ should fail and revert when all tiers sold out (365ms) ✓ should fail and revert when all tiers sold out despite oracle price change (670ms) Test getter functions Generic ✓ should get the right number of investors (54ms) ✓ should get the right amounts invested (61ms) ✓ should return minted tokens in a tier ✓ should return correct tokens sold in token details convertToUSD ✓ should reset exchange rates ✓ should get the right conversion for ETH to USD ✓ should get the right conversion for POLY to USD convertFromUSD ✓ should get the right conversion for USD to ETH ✓ should get the right conversion for USD to POLY Test cases for the USDTieredSTOFactory ✓ should get the exact details of the factory (91ms) Contract: USDTieredSTO Sim STL - 0x8574eCc76e61744EB1b7C15Ff88218348b56F923 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0x8215f88E6D8a1b8aF05b8aC5036Ca12e1aa8701b SecurityTokenRegistryProxy: 0x3b49a36dB70229C30BA36162d4e8049264F37D98 SecurityTokenRegistry: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f ModuleRegistryProxy: 0xAd89528FFE22AA057CfbEC6c9CcF2367A638Eb79 ModuleRegistry: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc STFactory: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d GeneralTransferManagerFactory: 0x8F873E9c628d763BD7D4Fddab8e071E31cF5Af0F USDOracle: 0x1865bB3405Fb32FaC2d838eCeE497A8a86693775 POLYOracle: 0xc8a365621305768D430fa09006D60CB6493192a4 USDTieredSTOFactory: 0xa993Cc35b7b480d9C2945fF0504684f061A5cc97 ----------------------------------------------------------------------------- Deploy the STO ✓ Should register the ticker before the generation of the security token (94ms) ✓ Should generate the new security token with the same symbol as registered above (308ms) ✓ Should initialize the auto attached modules Gas addModule: 2387544 ✓ Should successfully attach the first STO module to the security token (429ms) ✓ Should successfully prepare the STO (536ms) Simulate purchasing ------------------- Investor Addresses ------------------- ACCREDITED1: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 ACCREDITED2: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC NONACCREDITED1: 0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7 NONACCREDITED2: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD NOTWHITELISTED: 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 NOTAPPROVED: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 ---------------------------------------------------------- ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 172728480850300000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 0 Token Investment: 27271519149700000000 USD Investment: 13635759574850000000 POLY Investment: 0 DAI Investment: 13635759574850000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 27 tokens for 13 DAI by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 27 Next round Tokens Sold: 27 ------------------- New Investment ------------------- Investor: 0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7 N-A USD Remaining: 10000000000000000000 Total Cap Remaining: 155334332700600000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 27271519149700000000 Token Investment: 17394148149700000000 USD Investment: 8697074074850000000 POLY Investment: 0 DAI Investment: 8697074074850000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 17 tokens for 8 DAI by 0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7 Next round Tokens Sold: 44 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 148957842763300000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 44665667299400000000 Token Investment: 6376489937300000000 USD Investment: 3188244968650000000 POLY Investment: 12752979874600000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 6 tokens for 12 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 51 ------------------- New Investment ------------------- Investor: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD N-A USD Remaining: 10000000000000000000 Total Cap Remaining: 148072309402700000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 51042157236700000000 Token Investment: 885533360600000000 USD Investment: 442766680300000000 POLY Investment: 0 DAI Investment: 442766680300000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 0 tokens for 0 DAI by 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Next round Tokens Sold: 51 ------------------- New Investment ------------------- Investor: 0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7 N-A USD Remaining: 1302925925150000000 Total Cap Remaining: 145466457552400000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 51927690597300000000 Token Investment: 2605851850300000000 USD Investment: 1302925925150000000 POLY Investment: 5211703700600000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 2 tokens for 5 POLY by 0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7 Next round Tokens Sold: 54 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 122926962399400000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 54533542447600000000 Token Investment: 22539495153000000000 USD Investment: 11269747576500000000 POLY Investment: 0 DAI Investment: 11269747576500000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 22 tokens for 11 DAI by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 77 Next round Tokens Sold: 77 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 98984131849300000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 77073037600600000000 Token Investment: 23942830550100000000 USD Investment: 11971415275050000000 POLY Investment: 47885661100200000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 23 tokens for 47 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 101 Next round Tokens Sold: 101 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 79161097319400000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 101015868150700000000 Token Investment: 19823034529900000000 USD Investment: 9911517264950000000 POLY Investment: 39646069059800000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 19 tokens for 39 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 120 Next round Tokens Sold: 120 Next round Tokens Sold: 120 Next round Tokens Sold: 120 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 42028058204200000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 120838902680600000000 Token Investment: 37133039115200000000 USD Investment: 18566519557600000000 POLY Investment: 74266078230400000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 37 tokens for 74 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 157 ------------------- New Investment ------------------- Investor: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD N-A USD Remaining: 9557233319700000000 Total Cap Remaining: 22913591564800000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 157971941795800000000 Token Investment: 19114466639400000000 USD Investment: 9557233319700000000 POLY Investment: 38228933278800000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 19 tokens for 38 POLY by 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Next round Tokens Sold: 177 Next round Tokens Sold: 177 Next round Tokens Sold: 177 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 5767286850800000000,500000000000000000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 177086408435200000000 Token Investment: 17146304714000000000 USD Investment: 8573152357000000000 POLY Investment: 34292609428000000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 17 tokens for 34 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 194 Next round Tokens Sold: 194 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,497938385777100000000,300000000000000000000 Discount Cap Remaining: 0,50000000000000000000,300000000000000000000 Total Tokens Sold: 194232713149200000000 Token Investment: 7828901073700000000 USD Investment: 5563741915170000000 POLY Investment: 0 DAI Investment: 0 ETH Investment: 11127483830340000 ------------------------------------------------------ buyWithETH: 7 tokens for 0 ETH by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 202 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,477176436536900000000,300000000000000000000 Discount Cap Remaining: 0,29238050759800000000,300000000000000000000 Total Tokens Sold: 202061614222900000000 Token Investment: 20761949240200000000 USD Investment: 16609559392160000000 POLY Investment: 66438237568640000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 20 tokens for 66 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 222 Next round Tokens Sold: 222 Next round Tokens Sold: 222 Next round Tokens Sold: 222 Next round Tokens Sold: 222 Next round Tokens Sold: 222 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,463078790900700000000,300000000000000000000 Discount Cap Remaining: 0,15140405123600000000,300000000000000000000 Total Tokens Sold: 222823563463100000000 Token Investment: 14097645636200000000 USD Investment: 11278116508960000000 POLY Investment: 45112466035840000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 14 tokens for 45 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 236 Next round Tokens Sold: 236 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,452426390374800000000,300000000000000000000 Discount Cap Remaining: 0,15140405123600000000,300000000000000000000 Total Tokens Sold: 236921209099300000000 Token Investment: 10652400525900000000 USD Investment: 13848120683670000000 POLY Investment: 0 DAI Investment: 0 ETH Investment: 27696241367340000 ------------------------------------------------------ buyWithETH: 10 tokens for 0 ETH by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 247 Next round Tokens Sold: 247 Next round Tokens Sold: 247 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,411469040135400000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 247573609625200000000 Token Investment: 40957350239400000000 USD Investment: 45674352749420000000 POLY Investment: 182697410997680000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 40 tokens for 182 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 288 Next round Tokens Sold: 288 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,395993506159400000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 288530959864600000000 Token Investment: 15475533976000000000 USD Investment: 20118194168800000000 POLY Investment: 0 DAI Investment: 20118194168800000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 15 tokens for 20 DAI by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 304 Next round Tokens Sold: 304 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,370775813224000000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 304006493840600000000 Token Investment: 25217692935400000000 USD Investment: 32783000816020000000 POLY Investment: 0 DAI Investment: 32783000816020000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 25 tokens for 32 DAI by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 329 Next round Tokens Sold: 329 Next round Tokens Sold: 329 Next round Tokens Sold: 329 Next round Tokens Sold: 329 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,353987087190900000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 329224186776000000000 Token Investment: 16788726033100000000 USD Investment: 21825343843030000000 POLY Investment: 0 DAI Investment: 21825343843030000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 16 tokens for 21 DAI by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 346 Next round Tokens Sold: 346 Next round Tokens Sold: 346 Next round Tokens Sold: 346 Next round Tokens Sold: 346 Next round Tokens Sold: 346 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,344418213659200000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 346012912809100000000 Token Investment: 9568873531700000000 USD Investment: 12439535591210000000 POLY Investment: 49758142364840000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 9 tokens for 49 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 355 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,343251164332400000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 355581786340800000000 Token Investment: 1167049326800000000 USD Investment: 1517164124840000000 POLY Investment: 6068656499360000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 1 tokens for 6 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 356 Next round Tokens Sold: 356 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,294385253048000000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 356748835667600000000 Token Investment: 48865911284400000000 USD Investment: 63525684669720000000 POLY Investment: 254102738678880000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 48 tokens for 254 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 405 Next round Tokens Sold: 405 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,282616495493600000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 405614746952000000000 Token Investment: 11768757554400000000 USD Investment: 15299384820720000000 POLY Investment: 61197539282880000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 11 tokens for 61 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 417 Next round Tokens Sold: 417 Next round Tokens Sold: 417 Next round Tokens Sold: 417 Next round Tokens Sold: 417 Next round Tokens Sold: 417 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,261445790512300000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 417383504506400000000 Token Investment: 21170704981300000000 USD Investment: 27521916475690000000 POLY Investment: 110087665902760000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 21 tokens for 110 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 438 Next round Tokens Sold: 438 Next round Tokens Sold: 438 Next round Tokens Sold: 438 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,258872191016000000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 438554209487700000000 Token Investment: 2573599496300000000 USD Investment: 3345679345190000000 POLY Investment: 13382717380760000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 2 tokens for 13 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 441 Next round Tokens Sold: 441 Next round Tokens Sold: 441 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,242190288667700000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 441127808984000000000 Token Investment: 16681902348300000000 USD Investment: 21686473052790000000 POLY Investment: 0 DAI Investment: 21686473052790000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 16 tokens for 21 DAI by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 457 Next round Tokens Sold: 457 Next round Tokens Sold: 457 Next round Tokens Sold: 457 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,222047871005900000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 457809711332300000000 Token Investment: 20142417661800000000 USD Investment: 26185142960340000000 POLY Investment: 104740571841360000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 20 tokens for 104 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 477 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,198456694605500000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 477952128994100000000 Token Investment: 23591176400400000000 USD Investment: 30668529320520000000 POLY Investment: 0 DAI Investment: 30668529320520000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 23 tokens for 30 DAI by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 501 Next round Tokens Sold: 501 Next round Tokens Sold: 501 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,157500559644500000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 501543305394500000000 Token Investment: 40956134961000000000 USD Investment: 53242975449300000000 POLY Investment: 212971901797200000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 40 tokens for 212 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 542 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,156467534867800000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 542499440355500000000 Token Investment: 1033024776700000000 USD Investment: 1342932209710000000 POLY Investment: 5371728838840000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 1 tokens for 5 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 543 Next round Tokens Sold: 543 Next round Tokens Sold: 543 Next round Tokens Sold: 543 Next round Tokens Sold: 543 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,155559986821500000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 543532465132200000000 Token Investment: 907548046300000000 USD Investment: 1179812460190000000 POLY Investment: 4719249840760000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 0 tokens for 4 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 544 Next round Tokens Sold: 544 Next round Tokens Sold: 544 Next round Tokens Sold: 544 Next round Tokens Sold: 544 Next round Tokens Sold: 544 Next round Tokens Sold: 544 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,121337015634900000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 544440013178500000000 Token Investment: 34222971186600000000 USD Investment: 44489862542580000000 POLY Investment: 0 DAI Investment: 0 ETH Investment: 88979725085160000 ------------------------------------------------------ buyWithETH: 34 tokens for 0 ETH by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 578 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,77562341952300000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 578662984365100000000 Token Investment: 43774673682600000000 USD Investment: 56907075787380000000 POLY Investment: 0 DAI Investment: 56907075787380000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 43 tokens for 56 DAI by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 622 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,58042726829600000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 622437658047700000000 Token Investment: 19519615122700000000 USD Investment: 25375499659510000000 POLY Investment: 101501998638040000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 19 tokens for 101 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 641 Next round Tokens Sold: 641 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,13855782155700000000,300000000000000000000 Discount Cap Remaining: 0,0,300000000000000000000 Total Tokens Sold: 641957273170400000000 Token Investment: 44186944673900000000 USD Investment: 57443028076070000000 POLY Investment: 229772112304280000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 44 tokens for 229 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 686 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,298252569198200000000 Discount Cap Remaining: 0,0,298252569198200000000 Total Tokens Sold: 686144217844300000000 Token Investment: 15603212957500000000 USD Investment: 20284176844750000000 POLY Investment: 81136707379000000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 15 tokens for 81 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 701 Next round Tokens Sold: 701 Next round Tokens Sold: 701 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,262476992885500000000 Discount Cap Remaining: 0,0,262476992885500000000 Total Tokens Sold: 701747430801800000000 Token Investment: 35775576312700000000 USD Investment: 46508249206510000000 POLY Investment: 186032996826040000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 35 tokens for 186 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 737 Next round Tokens Sold: 737 Next round Tokens Sold: 737 Next round Tokens Sold: 737 Next round Tokens Sold: 737 Next round Tokens Sold: 737 Next round Tokens Sold: 737 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,250827680793600000000 Discount Cap Remaining: 0,0,250827680793600000000 Total Tokens Sold: 737523007114500000000 Token Investment: 11649312091900000000 USD Investment: 15144105719470000000 POLY Investment: 60576422877880000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 11 tokens for 60 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 749 Next round Tokens Sold: 749 Next round Tokens Sold: 749 Next round Tokens Sold: 749 Next round Tokens Sold: 749 Next round Tokens Sold: 749 Next round Tokens Sold: 749 Next round Tokens Sold: 749 Next round Tokens Sold: 749 Next round Tokens Sold: 749 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,236947748566600000000 Discount Cap Remaining: 0,0,236947748566600000000 Total Tokens Sold: 749172319206400000000 Token Investment: 13879932227000000000 USD Investment: 18043911895100000000 POLY Investment: 72175647580400000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 13 tokens for 72 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 763 Next round Tokens Sold: 763 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,231806384268600000000 Discount Cap Remaining: 0,0,231806384268600000000 Total Tokens Sold: 763052251433400000000 Token Investment: 5141364298000000000 USD Investment: 6683773587400000000 POLY Investment: 26735094349600000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 5 tokens for 26 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 768 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,203460432441400000000 Discount Cap Remaining: 0,0,231806384268600000000 Total Tokens Sold: 768193615731400000000 Token Investment: 28345951827200000000 USD Investment: 48188118106240000000 POLY Investment: 0 DAI Investment: 48188118106240000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 28 tokens for 48 DAI by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 796 Next round Tokens Sold: 796 Next round Tokens Sold: 796 Next round Tokens Sold: 796 Next round Tokens Sold: 796 Next round Tokens Sold: 796 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,161852196763300000000 Discount Cap Remaining: 0,0,190198148590500000000 Total Tokens Sold: 796539567558600000000 Token Investment: 41608235678100000000 USD Investment: 54090706381530000000 POLY Investment: 216362825526120000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 41 tokens for 216 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 838 Next round Tokens Sold: 838 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,120249408944400000000 Discount Cap Remaining: 0,0,148595360771600000000 Total Tokens Sold: 838147803236700000000 Token Investment: 41602787818900000000 USD Investment: 54083624164570000000 POLY Investment: 216334496658280000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 41 tokens for 216 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 879 Next round Tokens Sold: 879 Next round Tokens Sold: 879 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,77634314925700000000 Discount Cap Remaining: 0,0,148595360771600000000 Total Tokens Sold: 879750591055600000000 Token Investment: 42615094018700000000 USD Investment: 72445659831790000000 POLY Investment: 0 DAI Investment: 72445659831790000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 42 tokens for 72 DAI by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 922 Next round Tokens Sold: 922 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,40538653809200000000 Discount Cap Remaining: 0,0,148595360771600000000 Total Tokens Sold: 922365685074300000000 Token Investment: 37095661116500000000 USD Investment: 63062623898050000000 POLY Investment: 0 DAI Investment: 0 ETH Investment: 126125247796100000 ------------------------------------------------------ buyWithETH: 37 tokens for 0 ETH by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 959 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,40504250742600000000 Discount Cap Remaining: 0,0,148560957705000000000 Total Tokens Sold: 959461346190800000000 Token Investment: 34403066600000000 USD Investment: 44723986580000000 POLY Investment: 178895946320000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 0 tokens for 0 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 959 Next round Tokens Sold: 959 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,31713004731500000000 Discount Cap Remaining: 0,0,139769711693900000000 Total Tokens Sold: 959495749257400000000 Token Investment: 8791246011100000000 USD Investment: 11428619814430000000 POLY Investment: 45714479257720000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 8 tokens for 45 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 968 ------------------- New Investment ------------------- Investor: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,31109245439700000000 Discount Cap Remaining: 0,0,139165952402100000000 Total Tokens Sold: 968286995268500000000 Token Investment: 603759291800000000 USD Investment: 784887079340000000 POLY Investment: 3139548317360000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 0 tokens for 3 POLY by 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Next round Tokens Sold: 968 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,17616131996800000000 Discount Cap Remaining: 0,0,139165952402100000000 Total Tokens Sold: 968890754560300000000 Token Investment: 13493113442900000000 USD Investment: 22938292852930000000 POLY Investment: 0 DAI Investment: 22938292852930000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 13 tokens for 22 DAI by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 982 Next round Tokens Sold: 982 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,7036985035200000000 Discount Cap Remaining: 0,0,139165952402100000000 Total Tokens Sold: 982383868003200000000 Token Investment: 10579146961600000000 USD Investment: 17984549834720000000 POLY Investment: 0 DAI Investment: 17984549834720000000 ETH Investment: 0 ------------------------------------------------------ buyWithUSD: 10 tokens for 17 DAI by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 992 Next round Tokens Sold: 992 Next round Tokens Sold: 992 Next round Tokens Sold: 992 ------------------- New Investment ------------------- Investor: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC N-A USD Remaining: 2000000000000000000000 Total Cap Remaining: 0,0,0 Discount Cap Remaining: 0,0,132128967366900000000 Total Tokens Sold: 992963014964800000000 Token Investment: 7036985035200000000 USD Investment: 9148080545760000000 POLY Investment: 36592322183040000000 DAI Investment: 0 ETH Investment: 0 ------------------------------------------------------ buyWithPOLY: 7 tokens for 36 POLY by 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Next round Tokens Sold: 1000 1000000000000000000000 tokens sold, simulation completed successfully! ✓ Should successfully complete simulation (38550ms) Contract: Concurrent STO STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 CappedSTOFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Generate Security Token ✓ Should register the ticker before the generation of the security token (97ms) ✓ Should generate the new security token with the same symbol as registered above (304ms) ✓ Should initialize the auto attached modules ✓ Should whitelist account_investor1 (64ms) Add STO and verify transfer ✓ Should attach STO modules up to the max number, then fail (2348ms) ✓ Should successfully invest in all modules attached (1061ms) Contract: SecurityTokenRegistryProxy STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xBC57310D2E0543AeFe7F990948232Ae97934bFE9 SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 ----------------------------------------------------------------------------- Attach the implementation address ✓ Should attach the implementation and version (166ms) ✓ Verify the initialize data Feed some data in storage ✓ Register the ticker (103ms) ✓ Should generate the new security token with the same symbol as registered above (363ms) Upgrade the imlplementation address ✓ Should upgrade the version and implementation address -- fail bad owner (65ms) ✓ Should upgrade the version and implementation address -- Implementaion address should be a contract address ✓ Should upgrade the version and implementation address -- Implemenation address should not be 0x ✓ Should upgrade the version and implementation address -- Implemenation address should not be the same address ✓ Should upgrade the version and implementation address -- same version as previous is not allowed ✓ Should upgrade the version and implementation address -- empty version string is not allowed ✓ Should upgrade the version and the implementation address successfully (95ms) Execute functionality of the implementation contract on the earlier storage ✓ Should get the previous data (45ms) ✓ Should alter the old storage Transfer the ownership of the proxy contract ✓ Should change the ownership of the contract -- because of bad owner ✓ Should change the ownership of the contract -- new address should not be 0x ✓ Should change the ownership of the contract ✓ Should change the implementation contract and version by the new owner (107ms) ✓ Should get the version ✓ Should get the implementation address Contract: ModuleRegistryProxy STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ModuleRegistryProxy: 0xBC57310D2E0543AeFe7F990948232Ae97934bFE9 STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 ----------------------------------------------------------------------------- Attach the implementation address ✓ Should attach the MR implementation and version (67ms) ✓ Deploy the essential smart contracts (317ms) ✓ Verify the initialize data Feed some data in storage ✓ Register and verify the new module (133ms) Upgrade the imlplementation address ✓ Should upgrade the version and implementation address -- fail bad owner (60ms) ✓ Should upgrade the version and implementation address -- Implementaion address should be a contract address ✓ Should upgrade the version and implementation address -- Implemenation address should not be 0x ✓ Should upgrade the version and implementation address -- Implemenation address should not be the same address ✓ Should upgrade the version and implementation address -- same version as previous is not allowed ✓ Should upgrade the version and implementation address -- empty version string is not allowed ✓ Should upgrade the version and the implementation address successfully (65ms) Execute functionality of the implementation contract on the earlier storage ✓ Should get the previous data ✓ Should alter the old storage (46ms) Transfer the ownership of the proxy contract ✓ Should change the ownership of the contract -- because of bad owner ✓ Should change the ownership of the contract -- new address should not be 0x ✓ Should change the ownership of the contract ✓ Should change the implementation contract and version by the new owner (87ms) Contract: TrackedRedemption STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 TrackedRedemptionFactory: 0xBC57310D2E0543AeFe7F990948232Ae97934bFE9 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (83ms) ✓ Should generate the new security token with the same symbol as registered above (370ms) ✓ Should initialize the auto attached modules (40ms) ✓ Should successfully attach the paid TrackedRedemption with the security token (305ms) ✓ Should successfully attach the TrackedRedemption with the security token (171ms) Make Redemptions ✓ Buy some tokens for account_investor1 (1 ETH) (139ms) ✓ Buy some tokens for account_investor2 (2 ETH) (131ms) ✓ Redeem some tokens - fail insufficient allowance (128ms) [{"logIndex":3,"transactionIndex":0,"transactionHash":"0x9088884fa484593dd16be33cb7326e9d709d59683f25a33af9269da8898ed9b8","blockHash":"0x23328b74362d626289efacdd20166ecb5f03cc4691b58ec014f7ba95b319f000","blockNumber":125,"address":"0xB5E76490B21a80ddca96404c7A701050eB8b1204","type":"mined","id":"log_49bed151","event":"Redeemed","args":{"0":"0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD","1":"de0b6b3a7640000","__length__":2,"_investor":"0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD","_value":"de0b6b3a7640000"}}] ✓ Redeem some tokens (80ms) ✓ Get the init data ✓ Should get the listed permissions Test cases for the TrackedRedemptionFactory ✓ should get the exact details of the factory (97ms) Contract: LockUpTransferManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 LockupVolumeRestrictionTransferManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (86ms) ✓ Should generate the new security token with the same symbol as registered above (313ms) ✓ Should initialize the auto attached modules ✓ Should register another ticker before the generation of new security token (83ms) ✓ Should generate the new security token with the same symbol as registered above (296ms) ✓ Should initialize the auto attached modules Buy tokens using on-chain whitelist and test locking them up and attempting to transfer 0xe84Da28128a48Dd5585d1aBB1ba67276FdD70776 ✓ Should Buy the tokens from non-divisible (136ms) ✓ Should Buy some more tokens from non-divisible tokens (123ms) ✓ Should unsuccessfully attach the LockUpTransferManager factory with the security token -- failed because Token is not paid (206ms) 500000000000000000000 ✓ Should successfully attach the LockUpTransferManager factory with the security token (274ms) ✓ Should successfully attach the LockUpVolumeRestrictionTMFactory with the non-divisible security token (271ms) ✓ Should successfully attach the LockUpVolumeRestrictionTMFactory with the divisible security token (163ms) ✓ Add a new token holder (143ms) ✓ Should pause the tranfers at transferManager level ✓ Should still be able to transfer between existing token holders up to limit (67ms) ✓ Should unpause the tranfers at transferManager level (45ms) ✓ Should prevent the creation of a lockup with bad parameters where the lockupAmount is zero (41ms) ✓ Should prevent the creation of a lockup with bad parameters where the releaseFrequencySeconds is zero (40ms) ✓ Should prevent the creation of a lockup with bad parameters where the lockUpPeriodSeconds is zero (103ms) ✓ Should add the lockup type -- fail because of bad owner (43ms) ✓ Should add the new lockup type ✓ Should fail to add the creation of the lockup where lockupName is already exists ✓ Should allow the creation of a lockup where the lockup amount is divisible (42ms) ✓ Should allow the creation of a lockup where the lockup amount is prime no balance 9 Amount get unlocked: 0 ✓ Should prevent the transfer of tokens in a lockup (174ms) Amount get unlocked: 3000000000000000000 ✓ Should prevent the transfer of tokens if the amount is larger than the amount allowed by lockups (120ms) Amount get unlocked: 3000000000000000000 ✓ Should allow the transfer of tokens in a lockup if a period has passed (78ms) Amount get unlocked: 3000000000000000000 ✓ Should again transfer of tokens in a lockup if a period has passed (79ms) Amount get unlocked: 6000000000000000000 ✓ Should allow the transfer of more tokens in a lockup if another period has passed (85ms) ✓ Buy more tokens from secondary market to investor2 (65ms) ✓ Should allow transfer for the tokens that comes from secondary market + unlocked tokens (76ms) 0 ✓ Should allow the transfer of all tokens in a lockup if the entire lockup has passed (111ms) ✓ Should fail to add the multiple lockups -- because array length mismatch (40ms) ✓ Should fail to add the multiple lockups -- because array length mismatch (45ms) ✓ Should fail to add the multiple lockups -- because array length mismatch (42ms) ✓ Should fail to add the multiple lockups -- because array length mismatch (40ms) ✓ Should fail to add the multiple lockups -- because array length mismatch (41ms) Total Amount get unlocked: 00 ✓ Should add the multiple lockup to a address (211ms) Total balance: 10 Locked balance: 7 Unlocked balance: 10 ✓ Should transfer the tokens after period get passed (164ms) Total balance: 7 Locked balance: 7 Unlocked balance: 7 Wrong partition: 0 ✓ Should check the balance of the locked tokens (215ms) Total balance: 7 Locked balance of the investor by the lockup: 6 Paused status: false Locked balance: 6 Unlocked Balance: 1 ✓ Should transfer the tokens after passing another period of the lockup (284ms) Total balance: 6 Locked balance: 3 Unlocked Amount for lockup 1: 4 Unlocked Amount for lockup 2: 2 Unlocked Balance: 6 After transaction Total balance: 3 Locked balance: 3 Unlocked Amount for lockup 1: 4 Unlocked Amount for lockup 2: 2 Unlocked Balance: 3 ✓ Should transfer the tokens from both the lockup simultaneously (335ms) ✓ Should remove multiple lockup --failed because of bad owner (43ms) ✓ Should remove the multiple lockup -- failed because of invalid lockupname (43ms) ✓ Should remove the multiple lockup (105ms) ✓ Should fail to modify the lockup -- because of bad owner (132ms) ✓ Modify the lockup when startTime is in past -- failed because startTime is in the past ✓ Modify the lockup when startTime is in past -- failed because of invalid index ✓ should successfully modify the lockup balance 27 Result { '0': BN { negative: 0, words: [ 59506688, 13712553, 5995, <1 empty item> ], length: 3, red: null }, '1': BN { negative: 0, words: [ 12029138, 23, <1 empty item> ], length: 2, red: null }, '2': BN { negative: 0, words: [ 60, <1 empty item> ], length: 1, red: null }, '3': BN { negative: 0, words: [ 20, <1 empty item> ], length: 1, red: null }, '4': BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null }, lockupAmount: BN { negative: 0, words: [ 59506688, 13712553, 5995, <1 empty item> ], length: 3, red: null }, startTime: BN { negative: 0, words: [ 12029138, 23, <1 empty item> ], length: 2, red: null }, lockUpPeriodSeconds: BN { negative: 0, words: [ 60, <1 empty item> ], length: 1, red: null }, releaseFrequencySeconds: BN { negative: 0, words: [ 20, <1 empty item> ], length: 1, red: null }, unlockedAmount: BN { negative: 0, words: [ 0, <1 empty item> ], length: 1, red: null } } ✓ Should prevent the transfer of tokens in an edited lockup (404ms) 9 ✓ Modify the lockup during the lockup periods (62ms) ✓ Should remove the lockup multi (175ms) Result { '0': [ '0x615f6c6f636b7570000000000000000000000000000000000000000000000000', '0x625f6c6f636b7570000000000000000000000000000000000000000000000000', '0x635f6c6f636b7570000000000000000000000000000000000000000000000000', '0x645f6c6f636b7570000000000000000000000000000000000000000000000000', '0x7a5f6c6f636b7570000000000000000000000000000000000000000000000000', '0x665f6c6f636b7570000000000000000000000000000000000000000000000000', '0x6c5f6c6f636b7570000000000000000000000000000000000000000000000000' ], '1': [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null } ], '2': [ BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null } ], '3': [ BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ], '4': [ BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ], '5': [ BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ], lockupNames: [ '0x615f6c6f636b7570000000000000000000000000000000000000000000000000', '0x625f6c6f636b7570000000000000000000000000000000000000000000000000', '0x635f6c6f636b7570000000000000000000000000000000000000000000000000', '0x645f6c6f636b7570000000000000000000000000000000000000000000000000', '0x7a5f6c6f636b7570000000000000000000000000000000000000000000000000', '0x665f6c6f636b7570000000000000000000000000000000000000000000000000', '0x6c5f6c6f636b7570000000000000000000000000000000000000000000000000' ], lockupAmounts: [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null } ], startTimes: [ BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null }, BN { negative: 0, words: [Array], length: 2, red: null } ], lockUpPeriodSeconds: [ BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ], releaseFrequencySeconds: [ BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ], unlockedAmounts: [ BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ] } ✓ Should get the data of all lockups (88ms) ✓ Should succesfully get the non existed lockup value, it will give everything 0 ✓ Should get configuration function signature a_lockup b_lockup c_lockup d_lockup z_lockup f_lockup l_lockup ✓ Should get the all lockups added by the issuer till now ✓ Should get the permission LockUpTransferManager Transfer Manager Factory test cases ✓ Should get the exact details of the factory (83ms) ✓ Should get the tags of the factory Contract: ScheduledCheckpoint STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (82ms) ✓ Should generate the new security token with the same symbol as registered above (301ms) ✓ Should initialize the auto attached modules Buy tokens using on-chain whitelist ✓ Should successfully attach the ScheduledCheckpoint with the security token (192ms) Creating scheduled CP: 1553040102 86400 2: 1553040002 ✓ Should create a daily checkpoint ✓ Remove (temp) daily checkpoint (38ms) 3: 1553040002 4: 1553040002 5: 1553045002 6: 1553045002 ✓ Should Buy the tokens for account_investor1 (186ms) ✓ Should have checkpoint created with correct balances (49ms) ✓ Should Buy some more tokens for account_investor2 (146ms) ✓ No additional checkpoints created (48ms) ✓ Add a new token holder - account_investor3 (184ms) ✓ Should have new checkpoint created with correct balances (165ms) ✓ Should have correct balances for investor 3 after new checkpoint (310ms) ✓ Manually update checkpoints (323ms) ✓ Should get the permission ✓ Remove daily checkpoint (45ms) Tests for monthly scheduled checkpoints ✓ Should create a monthly checkpoint (57ms) ✓ Check one monthly checkpoint (88ms) ✓ Check two monthly checkpoints (84ms) ✓ Check three monthly checkpoints (82ms) ✓ Check four monthly checkpoints (87ms) ✓ Check five monthly checkpoints (87ms) ✓ Remove monthly checkpoint (46ms) Tests for yearly scheduled checkpoints ✓ Should create a yearly checkpoint ✓ Check one yearly checkpoint (77ms) ✓ Check two yearly checkpoints (78ms) ✓ Check three yearly checkpoints (81ms) ✓ Check four yearly checkpoints (81ms) ✓ Check five yearly checkpoints (81ms) ✓ Remove monthly checkpoint (46ms) Tests for monthly scheduled checkpoints -- end of month previousTime:2311205204 startTime:2335138004 startDate:Thu, 31 Dec 2043 01:26:44 GMT ✓ Should create a monthly checkpoint -- December 31 ✓ Check monthly checkpoint -- January 31 (80ms) ✓ Check monthly checkpoints -- February 28/29 (77ms) Thu, 31 Dec 2043 01:26:44 GMT Sun, 31 Jan 2044 01:26:44 GMT Mon, 29 Feb 2044 01:26:44 GMT expected:Thu, 31 Mar 2044 01:26:44 GMT actual:Thu, 31 Mar 2044 01:26:44 GMT ✓ Check monthly checkpoints -- March 31 (82ms) ✓ Remove monthly checkpoint (38ms) Tests for daily scheduled checkpoints ✓ Should create a daily checkpoint ✓ Check one daily checkpoint (72ms) ✓ Check two daily checkpoints (72ms) ✓ Check three daily checkpoints (73ms) ✓ Check four daily checkpoints (78ms) ✓ Check five daily checkpoints (79ms) ✓ Remove daily checkpoint (44ms) Tests for weekly scheduled checkpoints ✓ Should create a weekly checkpoint ✓ Check one weekly checkpoint (70ms) ✓ Check two weekly checkpoints (73ms) ✓ Check three weekly checkpoints (74ms) ✓ Check four weekly checkpoints (83ms) ✓ Check five weekly checkpoints (79ms) ✓ Remove weekly checkpoint (43ms) Contract: VolumeRestrictionTransferManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistryProxy 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 VolumeRestrictionTMFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (78ms) ✓ Should generate the new security token with the same symbol as registered above (287ms) ✓ Should initialize the auto attached modules Attach the VRTM ✓ Deploy the VRTM and attach with the ST (162ms) ✓ Transfer some tokens to different account (407ms) Result { '0': true, '1': '0x51', '2': '0x0000000000000000000000000000000000000000000000000000000000000000' } 40 ✓ Should transfer the tokens freely without any restriction (160ms) Test for the addIndividualRestriction ✓ Should add the restriction -- failed because of bad owner (44ms) ✓ Should add the restriction -- failed because of bad parameters i.e invalid restriction type ✓ Should add the restriction -- failed because of bad parameters i.e Invalid value of allowed tokens (39ms) ✓ Should add the restriction -- failed because of bad parameters i.e Percentage of tokens not within (0,100] (59ms) ✓ Should add the restriction -- failed because of bad parameters i.e Percentage of tokens not within (0,100] ✓ Should add the restriction -- failed because of bad parameters i.e invalid dates (38ms) ✓ Should add the restriction -- failed because of bad parameters i.e invalid dates ✓ Should add the restriction -- failed because of bad parameters i.e invalid rolling period (45ms) ✓ Should add the restriction -- failed because of bad parameters i.e invalid rolling period (40ms) ✓ Should add the restriction -- failed because of bad parameters i.e invalid rolling period Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1555527602 Rolling Period In Days: 3 End Time : 1555959600 Allowed Tokens: 12 Type of Restriction: 0 ✓ Should add the restriction succesfully (115ms) ✓ Should add the restriction for multiple investor -- failed because of bad owner (54ms) ✓ Should add the restriction for multiple investor -- failed because of bad parameters i.e length mismatch ✓ Should add the restriction for multiple investor -- failed because of bad parameters i.e length mismatch ✓ Should add the restriction for multiple investor -- failed because of bad parameters i.e length mismatch ✓ Should add the restriction for multiple investor -- failed because of bad parameters i.e length mismatch ✓ Should add the restriction for multiple investor -- failed because of bad parameters i.e length mismatch ✓ Should add the restriction for multiple investor -- failed because of bad parameters i.e length mismatch Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1555527602 Rolling Period In Days: 3 End Time : 1555959600 Allowed Tokens: 12 Type of Restriction: 0 Token holder: 0xE2b3204F29Ab45d5fd074Ff02aDE098FbC381D42 Start Time: 1555527601 Rolling Period In Days: 3 End Time : 1555959600 Allowed Tokens: 12 Type of Restriction: 0 Token holder: 0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7 Start Time: 1555527601 Rolling Period In Days: 4 End Time : 1556046000 Allowed Tokens: 10 Type of Restriction: 0 Token holder: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Start Time: 1555527601 Rolling Period In Days: 5 End Time : 1556132400 Allowed Tokens: 15 Type of Restriction: 0 ✓ Should add the restriction for multiple investor successfully (322ms) ✓ Should remove the restriction multi -- failed because of address is 0 Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1555527602 Rolling Period In Days: 3 End Time : 1555959600 Allowed Tokens: 12 Type of Restriction: 0 Token holder: 0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7 Start Time: 1555527601 Rolling Period In Days: 4 End Time : 1556046000 Allowed Tokens: 10 Type of Restriction: 0 Token holder: 0xce42bdB34189a93c55De250E011c68FaeE374Dd3 Start Time: 1555527601 Rolling Period In Days: 5 End Time : 1556132400 Allowed Tokens: 15 Type of Restriction: 0 ✓ Should successfully remove the restriction (136ms) ✓ Should remove the restriction -- failed because restriction not present anymore Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1555527602 Rolling Period In Days: 3 End Time : 1555959600 Allowed Tokens: 12 Type of Restriction: 0 ✓ Should remove the restriction multi (137ms) Estimated gas for addIndividualRestriction: 262285 Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1555968243 Rolling Period In Days: 3 End Time : 1556486641 Allowed Tokens: 12 Type of Restriction: 0 ✓ Should add the restriction succesfully after the expiry of previous one for investor 1 (233ms) ✓ Should not successfully transact the tokens -- failed because volume is above the limit (125ms) Gas estimation (Individual): 176787 Latest timestamp: 1555968243 SumOfLastPeriod: 0.3 Days Covered: 0 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 0.3 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Mon, 22 Apr 2019 21:24:11 GMT ✓ Should succesfully transact the tokens by investor 1 just after the startTime (400ms) ✓ Should fail to add the individual daily restriction -- Bad msg.sender (42ms) ✓ Should fail to add the individual daily restriction -- Bad params value ✓ Should fail to add the individual daily restriction -- Bad params value ✓ Should fail to add the individual daily restriction -- Bad params value Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1555968243 Rolling Period In Days: 3 End Time : 1556486641 Allowed Tokens: 12 Type of Restriction: 0 Token holder: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Start Time: 1555968262 Rolling Period In Days: 1 End Time : 1556313852 Allowed Tokens: 6 Type of Restriction: 0 *** Individual Daily restriction data *** Allowed Tokens: 6 StartTime : 1555968262 Rolling Period in days : 1 EndTime : 1556313852 Type of Restriction: 0 ✓ Should add the individual daily restriction for investor 3 (135ms) 35.3 Gas Estimation for the Individual daily tx - 157407 Latest timestamp: 0 SumOfLastPeriod: 0 Days Covered: 0 Latest timestamp daily: 1555968262 Individual Total Trade on latestTimestamp : 0 Individual Total Trade on daily latestTimestamp : 2 Last Transaction time in UTC: Mon, 22 Apr 2019 21:24:24 GMT Gas Estimation for the Individual daily tx - 107215 Latest timestamp: 0 SumOfLastPeriod: 0 Days Covered: 0 Latest timestamp daily: 1555968262 Individual Total Trade on latestTimestamp : 0 Individual Total Trade on daily latestTimestamp : 6 Last Transaction time in UTC: Mon, 22 Apr 2019 21:39:24 GMT ✓ Should transfer the tokens within the individual daily restriction limits (525ms) ✓ Should fail to transfer more tokens --because of the above limit (106ms) Gas Estimation for the Individual daily tx - 127548 Latest timestamp: 0 SumOfLastPeriod: 0 Days Covered: 0 Latest timestamp daily: 1556054662 Individual Total Trade on latestTimestamp : 0 Individual Total Trade on daily latestTimestamp : 2 Last Transaction time in UTC: Tue, 23 Apr 2019 21:39:24 GMT ✓ Should try to send after the one day completion (308ms) Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1555968243 Rolling Period In Days: 3 End Time : 1556486641 Allowed Tokens: 12 Type of Restriction: 0 Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1556055566 Rolling Period In Days: 1 End Time : 1556401164 Allowed Tokens: 0.05 Type of Restriction: 1 Token holder: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Start Time: 1555968262 Rolling Period In Days: 1 End Time : 1556313852 Allowed Tokens: 6 Type of Restriction: 0 *** Individual Daily restriction data *** Allowed Tokens: 5 % of TotalSupply StartTime : 1556055566 Rolling Period in days : 1 EndTime : 1556401164 Type of Restriction: 1 ✓ Should add the daily restriction on the investor 1 (212ms) Gas estimation (Individual + Individual daily): 201405 Latest timestamp: 1556054643 SumOfLastPeriod: 2.3 Days Covered: 1 Latest timestamp daily: 1556055566 Individual Total Trade on latestTimestamp : 2 Individual Total Trade on daily latestTimestamp : 2 Last Transaction time in UTC: Tue, 23 Apr 2019 21:39:29 GMT ✓ Should transfer tokens on the 2nd day by investor1 (Individual + Individual daily) (328ms) ✓ Should fail to transfer by investor 1 -- because voilating the individual daily (130ms) Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1555968243 Rolling Period In Days: 3 End Time : 1556486641 Allowed Tokens: 12 Type of Restriction: 0 Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1556055566 Rolling Period In Days: 1 End Time : 1556401164 Allowed Tokens: 0.05 Type of Restriction: 1 Token holder: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Start Time: 1556055571 Rolling Period In Days: 6 End Time : 1557351569 Allowed Tokens: 0.1536 Type of Restriction: 1 Token holder: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Start Time: 1555968262 Rolling Period In Days: 1 End Time : 1556313852 Allowed Tokens: 6 Type of Restriction: 0 ✓ Should add the individual restriction to investor 3 (121ms) Balance of investor 327.3 Gas estimation (Individual + Individual daily): 176078 Latest timestamp: 1556055571 SumOfLastPeriod: 4 Days Covered: 0 Latest timestamp daily: 1556054662 Individual Total Trade on latestTimestamp : 4 Individual Total Trade on daily latestTimestamp : 6 Last Transaction time in UTC: Tue, 23 Apr 2019 21:39:34 GMT ✓ Should transfer the token by the investor 3 with in the (Individual + Individual daily limit) (446ms) ✓ Should fail during transferring more tokens by investor3 -- Voilating the daily Limit (135ms) ✓ Should remove the daily individual limit and transfer more tokens on a same day -- failed because of bad owner (41ms) Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1555968243 Rolling Period In Days: 3 End Time : 1556486641 Allowed Tokens: 12 Type of Restriction: 0 Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1556055566 Rolling Period In Days: 1 End Time : 1556401164 Allowed Tokens: 0.05 Type of Restriction: 1 Token holder: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Start Time: 1556055571 Rolling Period In Days: 6 End Time : 1557351569 Allowed Tokens: 0.1536 Type of Restriction: 1 Latest timestamp: 1556055571 SumOfLastPeriod: 8 Days Covered: 0 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 8 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Tue, 23 Apr 2019 21:39:34 GMT ✓ Should remove the daily individual limit and transfer more tokens on a same day (297ms) *** Individual Daily restriction data *** Allowed Tokens: 2 StartTime : 1556141974 Rolling Period in days : 1 EndTime : 1556401174 Type of Restriction: 0 Latest timestamp: 1556141971 SumOfLastPeriod: 10 Days Covered: 1 Latest timestamp daily: 1556141974 Individual Total Trade on latestTimestamp : 2 Individual Total Trade on daily latestTimestamp : 2 Last Transaction time in UTC: Thu, 25 Apr 2019 00:03:34 GMT ✓ Should add the new Individual daily restriction and transact the tokens (369ms) ✓ Should fail to modify the individual daily restriction -- bad owner (44ms) *** Modify Individual Daily restriction data *** Allowed Tokens: 3 StartTime : 1556150625 Rolling Period in days : 1 EndTime : 1556582615 Type of Restriction: 0 ✓ Should modify the individual daily restriction (44ms) Latest timestamp: 1556141971 SumOfLastPeriod: 13 Days Covered: 1 Latest timestamp daily: 1556150625 Individual Total Trade on latestTimestamp : 5 Individual Total Trade on daily latestTimestamp : 3 Last Transaction time in UTC: Thu, 25 Apr 2019 00:03:50 GMT ✓ Should allow to sell to transfer more tokens by investor3 (183ms) Latest timestamp: 1556228371 SumOfLastPeriod: 15.36 Days Covered: 2 Latest timestamp daily: 1556237025 Individual Total Trade on latestTimestamp : 2.36 Individual Total Trade on daily latestTimestamp : 2.36 Last Transaction time in UTC: Fri, 26 Apr 2019 02:27:50 GMT ✓ Should allow to transact the tokens on the other day (182ms) ✓ Should fail to transfer the tokens after completion of the total amount (138ms) Latest timestamp: 1556228371 SumOfLastPeriod: 15.86 Days Covered: 2 Latest timestamp daily: 1556237025 Individual Total Trade on latestTimestamp : 2.86 Individual Total Trade on daily latestTimestamp : 2.86 Last Transaction time in UTC: Fri, 26 Apr 2019 02:27:50 GMT ✓ Should sell more tokens on the same day after changing the total supply (229ms) Diff Days: 0.20021990740740742 ✓ Should fail to transact tokens more than the allowed in the second rolling period (156ms) Latest timestamp: 1556573971 SumOfLastPeriod: 16.86 Days Covered: 6 Latest timestamp daily: 1556237025 Individual Total Trade on latestTimestamp : 9 Individual Total Trade on daily latestTimestamp : 2.86 Last Transaction time in UTC: Tue, 30 Apr 2019 02:27:51 GMT ✓ Should successfully to transact tokens in the second rolling period (165ms) *** Individual Daily restriction data *** Allowed Tokens: 0 StartTime : 1556055571 Rolling Period in days : 6 EndTime : 1557351569 Type of Restriction: 1 Balance of Investor3 :12.44 4.544 7.896 Latest timestamp: 1556833171 SumOfLastPeriod: 16 Days Covered: 9 Latest timestamp daily: 1556237025 Individual Total Trade on latestTimestamp : 7 Individual Total Trade on daily latestTimestamp : 2.86 Last Transaction time in UTC: Fri, 03 May 2019 02:27:51 GMT ✓ Should sell more tokens on the next day of rolling period (262ms) Latest timestamp: 1557178771 SumOfLastPeriod: 15 Days Covered: 13 Latest timestamp daily: 1556237025 Individual Total Trade on latestTimestamp : 8 Individual Total Trade on daily latestTimestamp : 2.86 Last Transaction time in UTC: Tue, 07 May 2019 14:27:51 GMT ✓ Should transfer after the 5 days (235ms) ✓ Should freely transfer the tokens after one day (completion of individual restriction) (66ms) Test cases for the Default restrictions ✓ Should add the investor 4 in the whitelist (48ms) ✓ Should issue some tokens to investor 4 (60ms) *** Add Individual Daily restriction data *** Allowed Tokens: 2 % of TotalSupply StartTime : 1557412073 Rolling Period in days : 1 EndTime : 1557671272 Type of Restriction: 1 ✓ Should add the default daily restriction successfully (46ms) ✓ Should fail to transfer above the daily limit (134ms) Latest timestamp: 0 SumOfLastPeriod: 0 Days Covered: 0 Latest timestamp daily: 1557412073 Individual Total Trade on latestTimestamp : 0 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Thu, 09 May 2019 14:27:54 GMT ✓ Should transfer the token by investor 4 (129ms) ✓ Should transfer the tokens freely after ending the default daily restriction (127ms) *** Add Individual restriction data *** Allowed Tokens: 10 StartTime : 1557671285 Rolling Period in days : 5 EndTime : 1558535284 Type of Restriction: 0 ✓ Should successfully add the default restriction (55ms) Latest timestamp: 1557671285 SumOfLastPeriod: 5 Days Covered: 0 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 5 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Sun, 12 May 2019 14:28:14 GMT Latest timestamp: 1557757685 SumOfLastPeriod: 8 Days Covered: 1 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 3 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Mon, 13 May 2019 14:28:14 GMT ✓ Should transfer tokens on by investor 3 (comes under the Default restriction) (302ms) ✓ Should fail to transfer more tokens than the available default limit (118ms) *** Diff days: 0.00010416666666666667 Latest timestamp: 1558103285 SumOfLastPeriod: 10 Days Covered: 5 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 7 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Fri, 17 May 2019 16:52:15 GMT ✓ Should able to transfer tokens in the next rolling period (305ms) *** Add Individual Daily restriction data *** Allowed Tokens: 200 StartTime : 1558111945 Rolling Period in days : 1 EndTime : 1558371135 Type of Restriction: 0 ✓ Should add the daily default restriction again (42ms) ✓ Should not able to transfer tokens more than the default daily restriction (132ms) Latest timestamp: 1558189685 SumOfLastPeriod: 9 Days Covered: 6 Latest timestamp daily: 1558198345 Individual Total Trade on latestTimestamp : 2 Individual Total Trade on daily latestTimestamp : 2 Last Transaction time in UTC: Sat, 18 May 2019 16:52:30 GMT ✓ Should able to transfer tokens within the limit of (daily default + default) restriction (181ms) Test for the exemptlist ✓ Should add the token holder in the exemption list -- failed because of bad owner (43ms) [ '0xce42bdB34189a93c55De250E011c68FaeE374Dd3' ] ✓ Should add the token holder in the exemption list (168ms) ✓ Should add multiple token holders to exemption list and check the getter value (122ms) ✓ Should unexempt a particular address (44ms) ✓ Should fail to unexempt the same address again ✓ Should delete the last element of the exemption list (48ms) ✓ Should delete multiple investor from the exemption list (104ms) Test for modify functions ✓ Should add the individual restriction for multiple investor (140ms) ✓ Should modify the details before the starttime passed (76ms) Test the major issue from the audit ( Possible accounting corruption between individualRestriction​ and ​defaultRestriction) Earlier time Sat, 18 May 2019 16:52:31 GMT Current time Sun, 19 May 2019 00:52:31 GMT Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1555968243 Rolling Period In Days: 3 End Time : 1556486641 Allowed Tokens: 12 Type of Restriction: 0 Token holder: 0xCc036143C68A7A9a41558Eae739B428eCDe5EF66 Start Time: 1556055566 Rolling Period In Days: 1 End Time : 1556401164 Allowed Tokens: 0.05 Type of Restriction: 1 Token holder: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Start Time: 1558284751 Rolling Period In Days: 20 End Time : 1561654351 Allowed Tokens: 0.1278 Type of Restriction: 1 Token holder: 0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC Start Time: 1556150625 Rolling Period In Days: 1 End Time : 1556582615 Allowed Tokens: 3 Type of Restriction: 0 Token holder: 0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7 Start Time: 1558371151 Rolling Period In Days: 15 End Time : 1563382351 Allowed Tokens: 15 Type of Restriction: 0 Token holder: 0x26064a2E2b568D9A6D01B93D039D1da9Cf2A58CD Start Time: 1558227211 Rolling Period In Days: 2 End Time : 1558702351 Allowed Tokens: 12 Type of Restriction: 0 *** Add Default restriction data *** Allowed Tokens: 5 StartTime : 1558227211 Rolling Period in days : 5 EndTime : 1559955151 Type of Restriction: 0 ✓ Should add the individual restriction for the delegate 2 address (414ms) Print the default bucket details Latest timestamp: 0 SumOfLastPeriod: 0 Days Covered: 0 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 0 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Thu, 01 Jan 1970 00:00:00 GMT Print the individual bucket details Latest timestamp: 1558227211 SumOfLastPeriod: 6 Days Covered: 0 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 6 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Sun, 19 May 2019 00:54:31 GMT Print the default bucket details Latest timestamp: 0 SumOfLastPeriod: 0 Days Covered: 0 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 0 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Thu, 01 Jan 1970 00:00:00 GMT Print the individual bucket details Latest timestamp: 1558659211 SumOfLastPeriod: 9 Days Covered: 5 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 9 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Fri, 24 May 2019 03:18:32 GMT ✓ Should transact with delegate address 2 (362ms) ✓ Should fail to transact -- edge case when user restriction changes and do the transfer on the same day (143ms) Print the individual bucket details Latest timestamp: 1558659211 SumOfLastPeriod: 9 Days Covered: 5 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 9 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Fri, 24 May 2019 03:18:32 GMT 1558667912 Print the default bucket details Latest timestamp: 1558745611 SumOfLastPeriod: 4 Days Covered: 6 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 4 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Sat, 25 May 2019 05:42:32 GMT 1558762952 ✓ Should transact under the default restriction unaffected from the edge case (206ms) Print the individual bucket details Latest timestamp: 1558763012 SumOfLastPeriod: 1 Days Covered: 0 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 1 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Sat, 25 May 2019 05:44:32 GMT Print the default bucket details Latest timestamp: 1558745611 SumOfLastPeriod: 4 Days Covered: 6 Latest timestamp daily: 0 Individual Total Trade on latestTimestamp : 4 Individual Total Trade on daily latestTimestamp : 0 Last Transaction time in UTC: Sat, 25 May 2019 05:42:32 GMT ✓ Should check whether user is able to transfer when amount is less than the restriction limit (when restriction change) (442ms) VolumeRestriction Transfer Manager Factory test cases ✓ Should get the exact details of the factory (70ms) ✓ Should get the tags of the factory Contract: BlacklistTransferManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 BlacklistTransferManagerFactory: 0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (78ms) ✓ Should generate the new security token with the same symbol as registered above (299ms) ✓ Should initialize the auto attached modules ✓ Should successfully attach the BlacklistTransferManager factory with the security token (245ms) ✓ Should successfully attach the BlacklistTransferManager factory with the security token (206ms) { tx: '0xc8350d9bd1383ce0929640eb28bad8ececf245c8a874818baa4349d19da16d94', receipt: { transactionHash: '0xc8350d9bd1383ce0929640eb28bad8ececf245c8a874818baa4349d19da16d94', transactionIndex: 0, blockHash: '0x83a7384bd6a2aec31d9d8d47f82fa748109f477bc2e4c3bf88d33e58cc6d5307', blockNumber: 124, gasUsed: 1503562, cumulativeGasUsed: 1503562, contractAddress: null, logs: [ [Object], [Object], [Object] ], status: true, logsBloom: '0x00000400010080000040000000000800800000010000000000000010002000000004000000000000040000000000000400000000000000000080000000a0000000800000000000000800020000000000000000000040000000000000000000000000000000000000000000000000000000008000000001008008000000000400000000000000000000040000000200100000000000000048000000000000000002000080000000100000000000000000000000000000000000000000000000000000000000000000000000200000000000002000000000000c0000000080000000100000000000000000000010000000000000000000011000000004000c0200', rawLogs: [ [Object], [Object], [Object], [Object], [Object], [Object] ] }, logs: [ { logIndex: 1, transactionIndex: 0, transactionHash: '0xc8350d9bd1383ce0929640eb28bad8ececf245c8a874818baa4349d19da16d94', blockHash: '0x83a7384bd6a2aec31d9d8d47f82fa748109f477bc2e4c3bf88d33e58cc6d5307', blockNumber: 124, address: '0x8215f88E6D8a1b8aF05b8aC5036Ca12e1aa8701b', type: 'mined', id: 'log_b99d5d26', event: 'Approval', args: [Result] }, { logIndex: 4, transactionIndex: 0, transactionHash: '0xc8350d9bd1383ce0929640eb28bad8ececf245c8a874818baa4349d19da16d94', blockHash: '0x83a7384bd6a2aec31d9d8d47f82fa748109f477bc2e4c3bf88d33e58cc6d5307', blockNumber: 124, address: '0x8215f88E6D8a1b8aF05b8aC5036Ca12e1aa8701b', type: 'mined', id: 'log_cc8de813', event: 'Approval', args: [Result] }, { logIndex: 5, transactionIndex: 0, transactionHash: '0xc8350d9bd1383ce0929640eb28bad8ececf245c8a874818baa4349d19da16d94', blockHash: '0x83a7384bd6a2aec31d9d8d47f82fa748109f477bc2e4c3bf88d33e58cc6d5307', blockNumber: 124, address: '0xBD031BCc6d4c151DC43F717e0Dd2aB9238eE0C42', type: 'mined', id: 'log_da2af4e0', event: 'ModuleAdded', args: [Result] } ] } ✓ Should successfully attach the BlacklistTransferManager with the security token (171ms) Buy tokens using on-chain whitelist ✓ Should Buy the tokens (150ms) ✓ Should Buy some more tokens (135ms) ✓ Should Buy some more tokens (139ms) ✓ Should Buy some more tokens (200ms) ✓ Should Buy some more tokens (153ms) ✓ Should add the blacklist (105ms) ✓ Should fail in adding the blacklist as blacklist type already exist ✓ Should fail in adding the blacklist as the blacklist name is invalid ✓ Should fail in adding the blacklist as the start date is invalid ✓ Should fail in adding the blacklist as the dates are invalid ✓ Should fail in adding the blacklist because only owner can add the blacklist (44ms) ✓ Should fail in adding the blacklist because repeat period is less than the difference of start time and end time ✓ Should add the mutiple blacklist (45ms) ✓ Should fail in adding the mutiple blacklist because only owner can add it (49ms) ✓ Should fail in adding the mutiple blacklist because array lenth are different (44ms) ✓ Should modify the blacklist ✓ Should fail in modifying the blacklist as the name is invalid ✓ Should fail in modifying the blacklist as the dates are invalid ✓ Should fail in modifying the blacklist as the repeat in days is invalid ✓ Should fail in modifying the blacklist as only owner can modify the blacklist (41ms) ✓ Should fail in modifying the blacklist as blacklist type doesnot exist ✓ Should modify the mutiple blacklist ✓ Should fail in modifying the mutiple blacklist because only owner can add it (44ms) ✓ Should fail in modifying the mutiple blacklist because array length are different (38ms) ✓ Should add investor to the blacklist ✓ Should fail in adding the investor to the blacklist because only owner can add the investor (38ms) ✓ Should fail in adding the investor to the blacklist as investor address is invalid ✓ Should fail in adding the investor to the non existing blacklist ✓ Should get the list of investors associated to blacklist ✓ Should fail in getting the list of investors from the non existing blacklist ✓ Should investor be able to transfer token because current time is less than the blacklist start time (109ms) ✓ Should investor be able to transfer token as it is not in blacklist time period (118ms) ✓ Should fail in transfer the tokens as the investor in blacklist (138ms) ✓ Should investor is able transfer the tokens- because BlacklistTransferManager is paused (163ms) ✓ Should investor fail in transfer token as it is in blacklist time period (228ms) ✓ Should investor be able to transfer token as it is not in blacklist time period (74ms) ✓ Should investor fail in transfer token as it is in blacklist time period (104ms) ✓ Should investor fail in transfer token as it is in blacklist time period (162ms) ✓ Should investor be able to transfer token as it is not in blacklist time period (79ms) ✓ Should investor fail in transfer token as it is in blacklist time period (96ms) ✓ Should delete the blacklist type (62ms) ✓ Only owner have the permission to delete the blacklist type (76ms) ✓ Should fail in deleting the blacklist type as the blacklist has associated addresses ✓ Should fail in deleting the blacklist type as the blacklist doesnot exist ✓ Should delete the mutiple blacklist type (41ms) ✓ Should fail in deleting multiple blacklist type because only owner can do it. (43ms) ✓ Should delete the investor from all the associated blacklist (117ms) ✓ Only owner has the permission to delete the investor from all the blacklist type (70ms) ✓ Should fail in deleting the investor from all the associated blacklist as th address is invalid ✓ Should fail in deleting the investor because investor is not associated to any blacklist ✓ Should delete the mutiple investor from all the associated blacklist (135ms) ✓ Should fail in deleting the mutiple investor from all the associated blacklist because only owner can do it. (115ms) ✓ Should delete the mutiple investor from particular associated blacklists (99ms) ✓ Should fail in deleting the mutiple investor from particular associated blacklist because only owner can do it. (105ms) ✓ Should fail in deleting the mutiple investor from particular associated blacklist because array length is incorrect. (39ms) ✓ Should delete the investor from the blacklist type (185ms) ✓ Only owner can delete the investor from the blacklist type (72ms) ✓ Should fail in deleting the investor because the investor address is invalid ✓ Should fail in deleting the investor because the investor is not associated to blacklist (69ms) ✓ Should fail in deleting the investor because the blacklist name is invalid ✓ Should add investor and new blacklist type ✓ Should fail in adding the investor and new blacklist type (45ms) ✓ Should add mutiple investor to blacklist (66ms) ✓ Should fail in adding the mutiple investor to the blacklist (50ms) ✓ Should add mutiple investor to the mutiple blacklist (103ms) ✓ Should fail in adding the mutiple investor to the mutiple blacklist because only owner can do it. (84ms) ✓ Should fail in adding mutiple investor to the mutiple blacklist because array length is not same (39ms) ✓ Should get the init function ✓ Should get the permission Test cases for blacklist with repeat period 0 (Never repeat) ✓ Should add a new blacklist with no repeat time (176ms) ✓ Should allow transfer after blacklist end time (71ms) Test cases for the factory ✓ Should get the exact details of the factory (85ms) ✓ Should get the tags of the factory Contract: GeneralPermissionManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistryProxy 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (81ms) ✓ Should generate the new security token with the same symbol as registered above (321ms) ✓ Should initialize the auto attached modules (40ms) ✓ Should successfully attach the General permission manager factory with the security token -- failed because Token is not paid (209ms) ✓ Should successfully attach the General permission manager factory with the security token (213ms) ✓ Should successfully attach the General permission manager factory with the security token (162ms) adding and removing different modules 1 1.2 choosen factory I_PercentageTransferManagerFactory choosen module PercentageTransferManager PTM 01 encoded. 1.3 successfully attached module 0x230891ddB95Ea38DeFbC9b06e5ec53E4dD4Fb210 1.4 successfully removed module 0x230891ddB95Ea38DeFbC9b06e5ec53E4dD4Fb210 1.2 choosen factory I_CountTransferManagerFactory choosen module CountTransferManager 1.3 successfully attached module 0xfFf6eCE56888755009b8f067a12F24E01858a9bf 1.4 successfully removed module 0xfFf6eCE56888755009b8f067a12F24E01858a9bf 1.2 choosen factory I_ManualApprovalTransferManagerFactory choosen module ManualApprovalTransferManager 1.3 successfully attached module 0x16f89f2F2Df12289138c41087E66Ae907cB7cC81 1.4 successfully removed module 0x16f89f2F2Df12289138c41087E66Ae907cB7cC81 1.2 choosen factory I_PercentageTransferManagerFactory choosen module PercentageTransferManager PTM 01 encoded. 1.3 successfully attached module 0x8D60296D3A66d05078Be784aceA1652f772f6E0D 1.4 successfully removed module 0x8D60296D3A66d05078Be784aceA1652f772f6E0D 1.2 choosen factory I_PercentageTransferManagerFactory choosen module PercentageTransferManager PTM 01 encoded. 1.3 successfully attached module 0x486CC55c4C92Baf5A378bd2C0807FEE1f8D44818 1.4 successfully removed module 0x486CC55c4C92Baf5A378bd2C0807FEE1f8D44818 1.2 choosen factory I_VolumeRestrictionTransferManagerFactory choosen module VolumeRestrictionTransferManager 1.3 successfully attached module 0x522b0D497368B3E1011f18e0525ec01D75f65F21 1.4 successfully removed module 0x522b0D497368B3E1011f18e0525ec01D75f65F21 1.2 choosen factory I_CountTransferManagerFactory choosen module CountTransferManager 1.3 successfully attached module 0x76587E4DA75B081162F68846aC1260c07957AcBe 1.4 successfully removed module 0x76587E4DA75B081162F68846aC1260c07957AcBe 1.2 choosen factory I_CountTransferManagerFactory choosen module CountTransferManager 1.3 successfully attached module 0x8B9cf6E0b01eDcFA509142135F5d5dB725427c29 1.4 successfully removed module 0x8B9cf6E0b01eDcFA509142135F5d5dB725427c29 1.2 choosen factory I_ManualApprovalTransferManagerFactory choosen module ManualApprovalTransferManager 1.3 successfully attached module 0xb4ADb7733E7b126D45ddDA2619F52a4F1F3D98fC 1.4 successfully removed module 0xb4ADb7733E7b126D45ddDA2619F52a4F1F3D98fC 1.2 choosen factory I_ManualApprovalTransferManagerFactory choosen module ManualApprovalTransferManager 1.3 successfully attached module 0x16c64870fECd232010280b70079a811Baa371F12 1.4 successfully removed module 0x16c64870fECd232010280b70079a811Baa371F12 1.2 choosen factory I_VolumeRestrictionTransferManagerFactory choosen module VolumeRestrictionTransferManager 1.3 successfully attached module 0xABC4c35fDc7F9FEeaacFDEADcC0F28D9A3B52757 1.4 successfully removed module 0xABC4c35fDc7F9FEeaacFDEADcC0F28D9A3B52757 1.2 choosen factory I_PercentageTransferManagerFactory choosen module PercentageTransferManager PTM 01 encoded. 1.3 successfully attached module 0xe3b6Dd97Ed81448b4e2bB18F8698869550D09066 1.4 successfully removed module 0xe3b6Dd97Ed81448b4e2bB18F8698869550D09066 1.2 choosen factory I_ManualApprovalTransferManagerFactory choosen module ManualApprovalTransferManager 1.3 successfully attached module 0x39D9ecc06b5F93ddC128360d1d6D08FACB8f7183 1.4 successfully removed module 0x39D9ecc06b5F93ddC128360d1d6D08FACB8f7183 1.2 choosen factory I_ManualApprovalTransferManagerFactory choosen module ManualApprovalTransferManager 1.3 successfully attached module 0x94350b934dE43828A7207c7bD364A5c6d8591C04 1.4 successfully removed module 0x94350b934dE43828A7207c7bD364A5c6d8591C04 1.2 choosen factory I_VolumeRestrictionTransferManagerFactory choosen module VolumeRestrictionTransferManager 1.3 successfully attached module 0xD8267B5192471aaAC959a91BadC4b19818A169C1 1.4 successfully removed module 0xD8267B5192471aaAC959a91BadC4b19818A169C1 1.2 choosen factory I_ManualApprovalTransferManagerFactory choosen module ManualApprovalTransferManager 1.3 successfully attached module 0x84eA92cC6B6b0289b4178362043D5BFaBD67796c 1.4 successfully removed module 0x84eA92cC6B6b0289b4178362043D5BFaBD67796c 1.2 choosen factory I_ManualApprovalTransferManagerFactory choosen module ManualApprovalTransferManager 1.3 successfully attached module 0xC304504A8E44f979Ba0627a092EfcEeb2E925850 1.4 successfully removed module 0xC304504A8E44f979Ba0627a092EfcEeb2E925850 1.2 choosen factory I_CountTransferManagerFactory choosen module CountTransferManager 1.3 successfully attached module 0x1233B0308d0F8f075Bb16eEc36AaFD0E918D9D71 1.4 successfully removed module 0x1233B0308d0F8f075Bb16eEc36AaFD0E918D9D71 1.2 choosen factory I_PercentageTransferManagerFactory choosen module PercentageTransferManager PTM 01 encoded. 1.3 successfully attached module 0x3DF0B4FFCF290F52115999908B79d4C61fe7BD54 1.4 successfully removed module 0x3DF0B4FFCF290F52115999908B79d4C61fe7BD54 1.2 choosen factory I_ManualApprovalTransferManagerFactory choosen module ManualApprovalTransferManager 1.3 successfully attached module 0x3fd48a75921264C6367D5f5bFF06Ef9C9106E86E 1.4 successfully removed module 0x3fd48a75921264C6367D5f5bFF06Ef9C9106E86E ✓ should pass test for randomly adding and removing modules (4501ms) Contract: VolumeRestrictionTransferManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistryProxy 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 VolumeRestrictionTMFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (82ms) [ { logIndex: 8, transactionIndex: 0, transactionHash: '0xc52b49fd496e8285f96f7734083646b277f629556b64d9d0ac08b24a88037172', blockHash: '0x76ae68be85cf75c8b4c7c2b61977514e1e26a9f64f55c97be41ac3161a7fe99a', blockNumber: 117, address: '0xBD031BCc6d4c151DC43F717e0Dd2aB9238eE0C42', type: 'mined', id: 'log_db5407f1', event: 'OwnershipTransferred', args: Result { '0': '0xa13BeaC90A97420310c3430c2A921786eA12D214', '1': '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6', __length__: 2, previousOwner: '0xa13BeaC90A97420310c3430c2A921786eA12D214', newOwner: '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6' } }, { logIndex: 9, transactionIndex: 0, transactionHash: '0xc52b49fd496e8285f96f7734083646b277f629556b64d9d0ac08b24a88037172', blockHash: '0x76ae68be85cf75c8b4c7c2b61977514e1e26a9f64f55c97be41ac3161a7fe99a', blockNumber: 117, address: '0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f', type: 'mined', id: 'log_e9cd97e7', event: 'NewSecurityTokenCreated', args: Result { '0': 'SAP', '1': 'Team', '2': '0xBD031BCc6d4c151DC43F717e0Dd2aB9238eE0C42', '3': '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6', '4': [BN], '5': '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6', '6': false, '7': [BN], '8': [BN], '9': [BN], __length__: 10, _ticker: 'SAP', _name: 'Team', _securityTokenAddress: '0xBD031BCc6d4c151DC43F717e0Dd2aB9238eE0C42', _owner: '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6', _addedAt: [BN], _registrant: '0x6704Fbfcd5Ef766B287262fA2281C105d57246a6', _fromAdmin: false, _usdFee: [BN], _polyFee: [BN], _protocolVersion: [BN] } } ] ✓ Should generate the new security token with the same symbol as registered above (283ms) ✓ Should initialize the auto attached modules Attach the VRTM ✓ Deploy the VRTM and attach with the ST (160ms) ✓ Transfer some tokens to different account (320ms) Fuzz test ✓ Should work with multiple transaction within 1 day with Individual and daily Restrictions ✓ Should work with fuzz test for individual restriction and general restriction ✓ Should work with fuzz test for randomly adding / removing individual daily restriction and perform multipel transactions ✓ should work in all cases if a sender is added in the exception list Starting of the IR modification test case fuzzer number 0 Add individual restriction with TotalAmount: 5.04 Restriction successfully added Test number: 0 Original Restriction Allowed Tokens : 5.04 StartTime : 1555700431 Rolling Period : 2 EndTime : 1555959631 Restriction Type: Fixed Modification of the IR with new startTime: 155552763286400 and new total amount: 8.3 Modified Restriction Allowed Tokens : 8.3 StartTime : 1555614032 Rolling Period : 2 EndTime : 1555959632 Restriction Type: Fixed Successfully IR modified Transaction Amount: 1.78 newIR Amount: 8.3 currentTime: 1555700432 Tx should succeed Tx succeeded Finished test number 0 Test number: 1 Original Restriction Allowed Tokens : 8.3 StartTime : 1555614032 Rolling Period : 2 EndTime : 1555959632 Restriction Type: Fixed Modification of the IR with new startTime: 1555527632172800 and new total amount: 4.63 Modified Restriction Allowed Tokens : 4.63 StartTime : 1555700432 Rolling Period : 2 EndTime : 1556046032 Restriction Type: Fixed Successfully IR modified Transaction Amount: 6.62 newIR Amount: 4.63 currentTime: 1555786832 Tx should fail Tx failed as expected Finished test number 1 Test number: 2 Original Restriction Allowed Tokens : 4.63 StartTime : 1555700432 Rolling Period : 2 EndTime : 1556046032 Restriction Type: Fixed Modification of the IR with new startTime: 1555527632259200 and new total amount: 2.43 Modified Restriction Allowed Tokens : 2.43 StartTime : 1555786832 Rolling Period : 2 EndTime : 1556132432 Restriction Type: Fixed Successfully IR modified Transaction Amount: 3.59 newIR Amount: 2.43 currentTime: 1555873232 Tx should fail Tx failed as expected Finished test number 2 Test number: 3 Original Restriction Allowed Tokens : 2.43 StartTime : 1555786832 Rolling Period : 2 EndTime : 1556132432 Restriction Type: Fixed Modification of the IR with new startTime: 1555527632345600 and new total amount: 2.76 Modified Restriction Allowed Tokens : 2.76 StartTime : 1555873232 Rolling Period : 2 EndTime : 1556218832 Restriction Type: Fixed Successfully IR modified Transaction Amount: 1.02 newIR Amount: 2.76 currentTime: 1555959633 Tx should succeed Tx succeeded Finished test number 3 Test number: 4 Original Restriction Allowed Tokens : 2.76 StartTime : 1555873232 Rolling Period : 2 EndTime : 1556218832 Restriction Type: Fixed Modification of the IR with new startTime: 1555527633432000 and new total amount: 8.6 Modified Restriction Allowed Tokens : 8.6 StartTime : 1555959633 Rolling Period : 2 EndTime : 1556305233 Restriction Type: Fixed Successfully IR modified Transaction Amount: 2.97 newIR Amount: 8.6 currentTime: 1556046033 Tx should succeed Tx succeeded Finished test number 4 Test number: 5 Original Restriction Allowed Tokens : 8.6 StartTime : 1555959633 Rolling Period : 2 EndTime : 1556305233 Restriction Type: Fixed Modification of the IR with new startTime: 1555527633518400 and new total amount: 8.47 Modified Restriction Allowed Tokens : 8.47 StartTime : 1556046033 Rolling Period : 2 EndTime : 1556391633 Restriction Type: Fixed Successfully IR modified Transaction Amount: 6.28 newIR Amount: 8.47 currentTime: 1556132433 Tx should succeed Tx succeeded Finished test number 5 Test number: 6 Original Restriction Allowed Tokens : 8.47 StartTime : 1556046033 Rolling Period : 2 EndTime : 1556391633 Restriction Type: Fixed Modification of the IR with new startTime: 1555527633604800 and new total amount: 5.72 Modified Restriction Allowed Tokens : 5.72 StartTime : 1556132433 Rolling Period : 2 EndTime : 1556478033 Restriction Type: Fixed Successfully IR modified Transaction Amount: 7.32 newIR Amount: 5.72 currentTime: 1556218833 Tx should fail Tx failed as expected Finished test number 6 Test number: 7 Original Restriction Allowed Tokens : 5.72 StartTime : 1556132433 Rolling Period : 2 EndTime : 1556478033 Restriction Type: Fixed Modification of the IR with new startTime: 1555527633691200 and new total amount: 6.86 Modified Restriction Allowed Tokens : 6.86 StartTime : 1556218833 Rolling Period : 2 EndTime : 1556564433 Restriction Type: Fixed Successfully IR modified Transaction Amount: 5.8 newIR Amount: 6.86 currentTime: 1556305233 Tx should succeed Tx succeeded Finished test number 7 Test number: 8 Original Restriction Allowed Tokens : 6.86 StartTime : 1556218833 Rolling Period : 2 EndTime : 1556564433 Restriction Type: Fixed Modification of the IR with new startTime: 1555527633777600 and new total amount: 8.81 Modified Restriction Allowed Tokens : 8.81 StartTime : 1556305233 Rolling Period : 2 EndTime : 1556650833 Restriction Type: Fixed Successfully IR modified Transaction Amount: 9.22 newIR Amount: 8.81 currentTime: 1556391633 Tx should fail Tx failed as expected Finished test number 8 Test number: 9 Original Restriction Allowed Tokens : 8.81 StartTime : 1556305233 Rolling Period : 2 EndTime : 1556650833 Restriction Type: Fixed Modification of the IR with new startTime: 1555527633864000 and new total amount: 5.51 Modified Restriction Allowed Tokens : 5.51 StartTime : 1556391633 Rolling Period : 2 EndTime : 1556737233 Restriction Type: Fixed Successfully IR modified Transaction Amount: 5.98 newIR Amount: 5.51 currentTime: 1556478034 Tx should fail Tx failed as expected Finished test number 9 Removed daily restriction ✓ Should work if IR is modified (1854ms) Contract: GeneralPermissionManager Fuzz STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistryProxy 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (79ms) ✓ Should generate the new security token with the same symbol as registered above (279ms) ✓ Should initialize the auto attached modules ✓ Should successfully attach the General permission manager factory with the security token -- failed because Token is not paid (204ms) ✓ Should successfully attach the General permission manager factory with the security token - paid module (244ms) ✓ Should successfully attach the General permission manager factory with the security token - free module (163ms) fuzz test for general transfer manager 1 2 Test number 2 with account 3 and perm TRANSFER_APPROVAL for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 3 with account 8 and perm TRANSFER_APPROVAL for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 4 with account 5 and perm WHITELIST for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 5 with account 8 and perm WHITELIST for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 6 with account 7 and perm TRANSFER_APPROVAL for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 7 with account 6 and perm TRANSFER_APPROVAL for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 8 with account 7 and perm FLAGS for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 9 with account 2 and perm WHITELIST for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 10 with account 2 and perm ADMIN about to start Test number 10 with account 2 and perm ADMIN for functions with require perm FLAGS passed 3 3.1 Result { '0': '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC', '1': '0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560', '2': BN { negative: 0, words: [ 12023767, 23, <1 empty item> ], length: 2, red: null }, '3': BN { negative: 0, words: [ 13751767, 23, <1 empty item> ], length: 2, red: null }, '4': BN { negative: 0, words: [ 14615767, 23, <1 empty item> ], length: 2, red: null }, __length__: 5, _investor: '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC', _addedBy: '0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560', _canSendAfter: BN { negative: 0, words: [ 12023767, 23, <1 empty item> ], length: 2, red: null }, _canReceiveAfter: BN { negative: 0, words: [ 13751767, 23, <1 empty item> ], length: 2, red: null }, _expiryTime: BN { negative: 0, words: [ 14615767, 23, <1 empty item> ], length: 2, red: null } } 3.2 2 Test number 11 with account 5 and perm ADMIN about to start Test number 11 with account 5 and perm ADMIN for functions with require perm FLAGS passed 3 3.1 Result { '0': '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC', '1': '0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7', '2': BN { negative: 0, words: [ 12023768, 23, <1 empty item> ], length: 2, red: null }, '3': BN { negative: 0, words: [ 13751768, 23, <1 empty item> ], length: 2, red: null }, '4': BN { negative: 0, words: [ 14615768, 23, <1 empty item> ], length: 2, red: null }, __length__: 5, _investor: '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC', _addedBy: '0xB9dcBf8A52Edc0C8DD9983fCc1d97b1F5d975Ed7', _canSendAfter: BN { negative: 0, words: [ 12023768, 23, <1 empty item> ], length: 2, red: null }, _canReceiveAfter: BN { negative: 0, words: [ 13751768, 23, <1 empty item> ], length: 2, red: null }, _expiryTime: BN { negative: 0, words: [ 14615768, 23, <1 empty item> ], length: 2, red: null } } 3.2 2 Test number 12 with account 3 and perm WHITELIST for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 13 with account 2 and perm TRANSFER_APPROVAL for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 14 with account 6 and perm TRANSFER_APPROVAL for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 15 with account 3 and perm ADMIN about to start Test number 15 with account 3 and perm ADMIN for functions with require perm FLAGS passed 3 3.1 Result { '0': '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC', '1': '0xce42bdB34189a93c55De250E011c68FaeE374Dd3', '2': BN { negative: 0, words: [ 12023769, 23, <1 empty item> ], length: 2, red: null }, '3': BN { negative: 0, words: [ 13751769, 23, <1 empty item> ], length: 2, red: null }, '4': BN { negative: 0, words: [ 14615769, 23, <1 empty item> ], length: 2, red: null }, __length__: 5, _investor: '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC', _addedBy: '0xce42bdB34189a93c55De250E011c68FaeE374Dd3', _canSendAfter: BN { negative: 0, words: [ 12023769, 23, <1 empty item> ], length: 2, red: null }, _canReceiveAfter: BN { negative: 0, words: [ 13751769, 23, <1 empty item> ], length: 2, red: null }, _expiryTime: BN { negative: 0, words: [ 14615769, 23, <1 empty item> ], length: 2, red: null } } 3.2 2 Test number 16 with account 2 and perm ADMIN about to start Test number 16 with account 2 and perm ADMIN for functions with require perm FLAGS passed 3 3.1 Result { '0': '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC', '1': '0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560', '2': BN { negative: 0, words: [ 12023769, 23, <1 empty item> ], length: 2, red: null }, '3': BN { negative: 0, words: [ 13751769, 23, <1 empty item> ], length: 2, red: null }, '4': BN { negative: 0, words: [ 14615769, 23, <1 empty item> ], length: 2, red: null }, __length__: 5, _investor: '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC', _addedBy: '0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560', _canSendAfter: BN { negative: 0, words: [ 12023769, 23, <1 empty item> ], length: 2, red: null }, _canReceiveAfter: BN { negative: 0, words: [ 13751769, 23, <1 empty item> ], length: 2, red: null }, _expiryTime: BN { negative: 0, words: [ 14615769, 23, <1 empty item> ], length: 2, red: null } } 3.2 2 Test number 17 with account 2 and perm ADMIN about to start Test number 17 with account 2 and perm ADMIN for functions with require perm FLAGS passed 3 3.1 Result { '0': '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC', '1': '0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560', '2': BN { negative: 0, words: [ 12023769, 23, <1 empty item> ], length: 2, red: null }, '3': BN { negative: 0, words: [ 13751769, 23, <1 empty item> ], length: 2, red: null }, '4': BN { negative: 0, words: [ 14615769, 23, <1 empty item> ], length: 2, red: null }, __length__: 5, _investor: '0x97A3FC5Ee46852C1Cf92A97B7BaD42F2622267cC', _addedBy: '0x9E1Ef1eC212F5DFfB41d35d9E5c14054F26c6560', _canSendAfter: BN { negative: 0, words: [ 12023769, 23, <1 empty item> ], length: 2, red: null }, _canReceiveAfter: BN { negative: 0, words: [ 13751769, 23, <1 empty item> ], length: 2, red: null }, _expiryTime: BN { negative: 0, words: [ 14615769, 23, <1 empty item> ], length: 2, red: null } } 3.2 2 Test number 18 with account 2 and perm FLAGS for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 2 Test number 19 with account 4 and perm FLAGS for functions require perm FLAGS failed as expected 3 3.3 3.4 3.5 4 ✓ should pass fuzz test for changeIssuanceAddress() (4583ms) fuzz test for count transfer manager ✓ Should successfully attach the CountTransferManager with the security token (158ms) Test number 2 with account 9 and perm ADMIN passed Test number 3 with account 2 and perm TRANSFER_APPROVAL failed as expected Test number 4 with account 5 and perm FLAGS failed as expected Test number 5 with account 2 and perm WHITELIST failed as expected Test number 6 with account 3 and perm FLAGS failed as expected Test number 7 with account 2 and perm FLAGS failed as expected Test number 8 with account 7 and perm TRANSFER_APPROVAL failed as expected Test number 9 with account 2 and perm WHITELIST failed as expected Test number 10 with account 3 and perm TRANSFER_APPROVAL failed as expected Test number 11 with account 2 and perm WHITELIST failed as expected Test number 12 with account 6 and perm ADMIN passed Test number 13 with account 4 and perm FLAGS failed as expected Test number 14 with account 3 and perm ADMIN passed Test number 15 with account 2 and perm ADMIN passed Test number 16 with account 2 and perm ADMIN passed Test number 17 with account 2 and perm WHITELIST failed as expected Test number 18 with account 7 and perm TRANSFER_APPROVAL failed as expected Test number 19 with account 6 and perm WHITELIST failed as expected ✓ should pass fuzz test for changeHolderCount() (1800ms) fuzz test for percentage transfer manager 1 ✓ Should successfully attach the percentage transfer manager with the security token (171ms) Test number 2 with account 3 and perm WHITELIST failed as expected Test number 3 with account 7 and perm TRANSFER_APPROVAL failed as expected Test number 4 with account 6 and perm WHITELIST failed as expected Test number 5 with account 5 and perm TRANSFER_APPROVAL failed as expected Test number 6 with account 2 and perm TRANSFER_APPROVAL failed as expected Test number 7 with account 8 and perm ADMIN passed as expected Test number 8 with account 9 and perm ADMIN passed as expected Test number 9 with account 2 and perm WHITELIST failed as expected Test number 10 with account 9 and perm WHITELIST failed as expected Test number 11 with account 6 and perm ADMIN passed as expected Test number 12 with account 9 and perm ADMIN passed as expected Test number 13 with account 2 and perm FLAGS failed as expected Test number 14 with account 7 and perm ADMIN passed as expected Test number 15 with account 5 and perm ADMIN passed as expected Test number 16 with account 6 and perm ADMIN passed as expected Test number 17 with account 2 and perm FLAGS failed as expected Test number 18 with account 3 and perm ADMIN passed as expected Test number 19 with account 7 and perm TRANSFER_APPROVAL failed as expected ✓ should pass fuzz test for modifyWhitelist with perm ADMIN (1622ms) Test number 2 with account 5 and perm WHITELIST failed as expected Test number 3 with account 7 and perm FLAGS failed as expected Test number 4 with account 2 and perm WHITELIST failed as expected Test number 5 with account 7 and perm ADMIN passed as expected Test number 6 with account 5 and perm FLAGS failed as expected Test number 7 with account 2 and perm ADMIN passed as expected Test number 8 with account 2 and perm FLAGS failed as expected Test number 9 with account 2 and perm ADMIN passed as expected Test number 10 with account 2 and perm TRANSFER_APPROVAL failed as expected Test number 11 with account 2 and perm TRANSFER_APPROVAL failed as expected Test number 12 with account 8 and perm WHITELIST failed as expected Test number 13 with account 7 and perm WHITELIST failed as expected Test number 14 with account 2 and perm WHITELIST failed as expected Test number 15 with account 6 and perm WHITELIST failed as expected Test number 16 with account 2 and perm ADMIN passed as expected Test number 17 with account 8 and perm TRANSFER_APPROVAL failed as expected Test number 18 with account 2 and perm TRANSFER_APPROVAL failed as expected Test number 19 with account 3 and perm FLAGS failed as expected ✓ should pass fuzz test for modifyWhitelistMulti with perm ADMIN (1971ms) Test number 2 with account 4 and perm WHITELIST should failed Test number 2 with account 4 and perm WHITELIST failed as expected Test number 3 with account 2 and perm WHITELIST should failed Test number 3 with account 2 and perm WHITELIST failed as expected Test number 4 with account 5 and perm FLAGS should failed Test number 4 with account 5 and perm FLAGS failed as expected Test number 5 with account 5 and perm FLAGS should failed Test number 5 with account 5 and perm FLAGS failed as expected Test number 6 with account 2 and perm WHITELIST should failed Test number 6 with account 2 and perm WHITELIST failed as expected Test number 7 with account 5 and perm ADMIN should pass Test number 7 with account 5 and perm ADMIN passed as expected Test number 8 with account 4 and perm TRANSFER_APPROVAL should failed Test number 8 with account 4 and perm TRANSFER_APPROVAL failed as expected Test number 9 with account 5 and perm WHITELIST should failed Test number 9 with account 5 and perm WHITELIST failed as expected Test number 10 with account 6 and perm FLAGS should failed Test number 10 with account 6 and perm FLAGS failed as expected Test number 11 with account 6 and perm FLAGS should failed Test number 11 with account 6 and perm FLAGS failed as expected Test number 12 with account 3 and perm WHITELIST should failed Test number 12 with account 3 and perm WHITELIST failed as expected Test number 13 with account 2 and perm WHITELIST should failed Test number 13 with account 2 and perm WHITELIST failed as expected Test number 14 with account 6 and perm TRANSFER_APPROVAL should failed Test number 14 with account 6 and perm TRANSFER_APPROVAL failed as expected Test number 15 with account 2 and perm ADMIN should pass Test number 15 with account 2 and perm ADMIN passed as expected Test number 16 with account 6 and perm WHITELIST should failed Test number 16 with account 6 and perm WHITELIST failed as expected Test number 17 with account 8 and perm WHITELIST should failed Test number 17 with account 8 and perm WHITELIST failed as expected Test number 18 with account 2 and perm WHITELIST should failed Test number 18 with account 2 and perm WHITELIST failed as expected Test number 19 with account 5 and perm WHITELIST should failed Test number 19 with account 5 and perm WHITELIST failed as expected ✓ should pass fuzz test for setAllowPrimaryIssuance with perm ADMIN (1962ms) fuzz test for manual approval transfer manager ✓ Should successfully attach the ManualApprovalTransferManager with the security token (152ms) Test number 2 with account 2 and perm ADMIN should pass 2 3 Test number 2 with account 2 and perm ADMIN passed as expected Test number 3 with account 2 and perm TRANSFER_APPROVAL should failed Test number 3 with account 2 and perm TRANSFER_APPROVAL failed as expected Test number 4 with account 6 and perm WHITELIST should failed Test number 4 with account 6 and perm WHITELIST failed as expected Test number 5 with account 4 and perm ADMIN should pass 2 3 Test number 5 with account 4 and perm ADMIN passed as expected Test number 6 with account 2 and perm ADMIN should pass 2 3 Test number 6 with account 2 and perm ADMIN passed as expected Test number 7 with account 8 and perm TRANSFER_APPROVAL should failed Test number 7 with account 8 and perm TRANSFER_APPROVAL failed as expected Test number 8 with account 8 and perm FLAGS should failed Test number 8 with account 8 and perm FLAGS failed as expected Test number 9 with account 5 and perm FLAGS should failed Test number 9 with account 5 and perm FLAGS failed as expected Test number 10 with account 4 and perm TRANSFER_APPROVAL should failed Test number 10 with account 4 and perm TRANSFER_APPROVAL failed as expected Test number 11 with account 2 and perm TRANSFER_APPROVAL should failed Test number 11 with account 2 and perm TRANSFER_APPROVAL failed as expected Test number 12 with account 9 and perm ADMIN should pass 2 3 Test number 12 with account 9 and perm ADMIN passed as expected Test number 13 with account 6 and perm ADMIN should pass 2 3 Test number 13 with account 6 and perm ADMIN passed as expected Test number 14 with account 3 and perm WHITELIST should failed Test number 14 with account 3 and perm WHITELIST failed as expected Test number 15 with account 6 and perm FLAGS should failed Test number 15 with account 6 and perm FLAGS failed as expected Test number 16 with account 9 and perm ADMIN should pass 2 3 Test number 16 with account 9 and perm ADMIN passed as expected Test number 17 with account 9 and perm TRANSFER_APPROVAL should failed Test number 17 with account 9 and perm TRANSFER_APPROVAL failed as expected Test number 18 with account 2 and perm WHITELIST should failed Test number 18 with account 2 and perm WHITELIST failed as expected Test number 19 with account 2 and perm FLAGS should failed Test number 19 with account 2 and perm FLAGS failed as expected ✓ should pass fuzz test for addManualApproval & revokeManualApproval with perm ADMIN (3130ms) Contract: VestingEscrowWallet STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 GeneralPermissionManagerFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 I_VestingEscrowWalletFactory: 0xEb5785C94A8b2B6302764a4d6DB8463337FD7bc6 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (83ms) ✓ Should generate the new security token with the same symbol as registered above (302ms) ✓ Should initialize the auto attached modules ✓ Should successfully attach the General permission manager factory with the security token (156ms) ✓ Should successfully attach the VestingEscrowWallet with the security token (196ms) ✓ Should fail to change the treasury wallet ✓ Should change the treasury wallet ✓ Should Buy the tokens for token_owner (138ms) ✓ Should whitelist investors (208ms) ✓ Should successfully add the delegate (wallet_admin) ✓ Should successfully add the delegate (wallet_operator) ✓ Should provide the permission ✓ Should provide the permission ✓ Should get the permission ✓ Should get the tags of the factory Depositing and withdrawing tokens ✓ Should not be able to deposit -- fail because of permissions check ✓ Should change treasury wallet (63ms) ✓ Should fail to deposit zero amount of tokens ✓ Should not be able to deposit -- fail because of permissions check (71ms) ✓ Should deposit tokens for new vesting schedules (111ms) ✓ Should not be able to withdraw tokens to a treasury -- fail because of permissions check (54ms) ✓ Should not be able to withdraw tokens to a treasury -- fail because of zero amount (50ms) ✓ Should not be able to withdraw tokens to a treasury -- fail because amount is greater than unassigned tokens (51ms) ✓ Should withdraw partial tokens to a treasury (96ms) ✓ Should withdraw all tokens to a treasury (95ms) ✓ Should not be able to push available tokens -- fail because of permissions check (193ms) ✓ Should not be able to remove template -- fail because template is used (50ms) ✓ Should push available tokens to the beneficiary address (139ms) ✓ Should fail to modify vesting schedule -- fail because schedule already started (227ms) ✓ Should fail to modify vesting schedule -- fail because date in the past (53ms) ✓ Should withdraw available tokens to the beneficiary address (464ms) ✓ Should fetch the unused tokens from the wallet (144ms) ✓ Should fail to transfer the tokens to wallet ✓ Should withdraw available tokens 2 times by 3 schedules to the beneficiary address (769ms) Adding, modifying and revoking vesting schedule ✓ Should fail to add vesting schedule to the beneficiary address -- fail because address in invalid (64ms) ✓ Should fail to add vesting schedule to the beneficiary address -- fail because start date in the past (134ms) ✓ Should fail to add vesting schedule to the beneficiary address -- fail because number of tokens is 0 (51ms) ✓ Should fail to add vesting schedule to the beneficiary address -- fail because duration can't be divided entirely by frequency (51ms) ✓ Should fail to add vesting schedule to the beneficiary address -- fail because number of tokens can't be divided entirely by period count (48ms) ✓ Should fail to get vesting schedule -- fail because address is invalid ✓ Should fail to get vesting schedule -- fail because schedule not found ✓ Should fail to get count of vesting schedule -- fail because address is invalidm ✓ Should not be able to add schedule -- fail because of permissions check (221ms) ✓ Should add vesting schedule to the beneficiary address (203ms) ✓ Should add vesting schedule without depositing to the beneficiary address (314ms) ✓ Should fail to modify vesting schedule -- fail because schedule not found (58ms) ✓ Should not be able to modify schedule -- fail because of permissions check (47ms) ✓ Should modify vesting schedule for the beneficiary's address (72ms) ✓ Should not be able to revoke schedule -- fail because of permissions check (51ms) ✓ Should revoke vesting schedule from the beneficiary address (182ms) ✓ Should fail to revoke vesting schedule -- fail because address is invalid (48ms) ✓ Should fail to revoke vesting schedule -- fail because schedule not found (50ms) ✓ Should fail to revoke vesting schedules -- fail because address is invalid (52ms) ✓ Should add 3 vesting schedules to the beneficiary address (351ms) ✓ Should not be able to revoke schedules -- fail because of permissions check (53ms) ✓ Should revoke 1 of 3 vesting schedule from the beneficiary address (158ms) ✓ Should revoke 2 vesting schedules from the beneficiary address (170ms) ✓ Should push available tokens during revoking vesting schedule (861ms) Adding, using and removing templates ✓ Should not be able to add template -- fail because of permissions check (52ms) ✓ Should not be able to add template -- fail because of invalid name (52ms) ✓ Should add 3 Templates (168ms) ✓ Should not be able to add template -- fail because template already exists (53ms) ✓ Should not be able to remove template -- fail because of permissions check (54ms) ✓ Should not be able to remove template -- fail because template not found (53ms) ✓ Should remove template (44ms) ✓ Should fail to add vesting schedule from template -- fail because template not found (51ms) ✓ Should not be able to add schedule from template -- fail because of permissions check (53ms) ✓ Should not be able to add vesting schedule from template -- fail because template not found (51ms) ✓ Should add vesting schedule from template (304ms) ✓ Should not be able to add vesting schedule from template -- fail because template already added (124ms) ✓ Should fail to remove template (52ms) ✓ Should remove 2 Templates (117ms) Tests for multi operations ✓ Should not be able to add schedules to the beneficiaries -- fail because of permissions check (56ms) ✓ Should not be able to add schedules to the beneficiaries -- fail because of arrays sizes mismatch (231ms) ✓ Should add schedules for 3 beneficiaries (289ms) ✓ Should not be able modify vesting schedule for 3 beneficiary's addresses -- fail because of arrays sizes mismatch (57ms) ✓ Should not be able to modify schedules for the beneficiaries -- fail because of permissions check (53ms) ✓ Should modify vesting schedule for 3 beneficiary's addresses (153ms) ✓ Should not be able to send available tokens to the beneficiaries addresses -- fail because of array size (52ms) ✓ Should not be able to send available tokens to the beneficiaries -- fail because of permissions check (50ms) ✓ Should send available tokens to the beneficiaries addresses (961ms) ✓ Should not be able to add schedules from template to the beneficiaries -- fail because of permissions check (189ms) ✓ Should add schedules from template for 3 beneficiaries (137ms) ✓ Should not be able to revoke schedules of the beneficiaries -- fail because of permissions check (58ms) ✓ Should revoke vesting schedule from the 3 beneficiary's addresses (235ms) Contract: Data store STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (78ms) ✓ Should generate the new security token with the same symbol as registered above (290ms) ✓ Should fetch data store address Should attach to security token securely ✓ Should be attached to a security token upon deployment ✓ Should not allow non-issuer to change security token address ✓ Should allow issuer to change security token address (47ms) Should set data correctly ✓ Should set and fetch uint256 correctly (61ms) ✓ Should set and fetch bytes32 correctly ✓ Should set and fetch address correctly ✓ Should set and fetch string correctly ✓ Should set and fetch bytes correctly (41ms) ✓ Should set and fetch bool correctly ✓ Should set and fetch uint256 array correctly (54ms) ✓ Should set and fetch bytes32 array correctly (57ms) ✓ Should set and fetch address array correctly (55ms) ✓ Should set and fetch bool array correctly (85ms) ✓ Should insert uint256 into Array (70ms) ✓ Should insert bytes32 into Array (72ms) ✓ Should insert address into Array (73ms) ✓ Should insert bool into Array (70ms) ✓ Should delete uint256 from Array (72ms) ✓ Should delete bytes32 from Array (69ms) ✓ Should delete address from Array (68ms) ✓ Should delete bool from Array (70ms) ✓ Should set and fetch multiple uint256 correctly (71ms) ✓ Should set and fetch multiple bytes32 correctly (48ms) ✓ Should set and fetch multiple address correctly (48ms) ✓ Should set and fetch multiple bool correctly (44ms) ✓ Should insert multiple uint256 into multiple Array (99ms) ✓ Should insert multiple bytes32 into multiple Array (99ms) ✓ Should insert multiple address into multiple Array (94ms) ✓ Should insert multiple bool into multiple Array (95ms) Should not allow unautohrized modification to data ✓ Should not allow unauthorized addresses to modify uint256 (46ms) ✓ Should not allow unauthorized addresses to modify bytes32 (44ms) ✓ Should not allow unauthorized addresses to modify address (42ms) ✓ Should not allow unauthorized addresses to modify string (89ms) ✓ Should not allow unauthorized addresses to modify bytes (48ms) ✓ Should not allow unauthorized addresses to modify bool (42ms) ✓ Should not allow unauthorized addresses to modify uint256 array (46ms) ✓ Should not allow unauthorized addresses to modify bytes32 array (46ms) ✓ Should not allow unauthorized addresses to modify address array (46ms) ✓ Should not allow unauthorized addresses to modify bool array (45ms) ✓ Should not allow unauthorized addresses to insert uint256 into Array (45ms) ✓ Should not allow unauthorized addresses to insert bytes32 into Array (45ms) ✓ Should not allow unauthorized addresses to insert address into Array (45ms) ✓ Should not allow unauthorized addresses to insert bool into Array (45ms) ✓ Should not allow unauthorized addresses to delete uint256 from Array (45ms) ✓ Should not allow unauthorized addresses to delete bytes32 from Array (45ms) ✓ Should not allow unauthorized addresses to delete address from Array (44ms) ✓ Should not allow unauthorized addresses to delete bool from Array (44ms) ✓ Should not allow unauthorized addresses to modify multiple uint256 (46ms) ✓ Should not allow unauthorized addresses to modify multiple bytes32 (47ms) ✓ Should not allow unauthorized addresses to modify multiple address (47ms) ✓ Should not allow unauthorized addresses to modify multiple bool (47ms) ✓ Should not allow unauthorized addresses to insert multiple uint256 into multiple Array (47ms) ✓ Should not allow unauthorized addresses to insert multiple bytes32 into multiple Array (45ms) ✓ Should not allow unauthorized addresses to insert multiple address into multiple Array (44ms) ✓ Should not allow unauthorized addresses to insert multiple bool into multiple Array (47ms) Contract: SignedTransferManager STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F ManualApprovalTransferManagerFactory: 0x795d0789A203626d05FbA5419F298Ed6e641aF48 ----------------------------------------------------------------------------- Generate the SecurityToken ✓ Should register the ticker before the generation of the security token (78ms) ✓ Should generate the new security token with the same symbol as registered above (303ms) ✓ Should initialize the auto attached modules (38ms) signed transfer manager tests ✓ Should Buy the tokens (129ms) ✓ Should successfully attach the SignedTransferManager with the security token (174ms) ✓ should fail to transfer because transaction is not verified yet. (109ms) 0 ✓ Should successfully attach the permission manager factory with the security token (222ms) ✓ should allow to invalidate siganture if sender is the signer and is in the signer list (204ms) ✓ should allow transfer with valid sig (389ms) ✓ should not allow transfer if the signer is not on the signer list (153ms) Contract: PLCRVotingCheckpoint STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 PLCRVotingCheckpointFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Test case for PLCR Vote Checkpoint module Attaching the PLCR vote checkpoint module ✓ Should register the ticker before the generation of the security token (81ms) ✓ Should generate the new security token with the same symbol as registered above (276ms) ✓ Should initialize the auto attached modules ✓ Should attach the voting module with the ST (153ms) ✓ Should fail to attach the voting module because allowance is unsufficent (119ms) ✓ Should attach the voting module with the ST (189ms) ✓ Should attach the general permission manager (151ms) Test for createBallot ✓ Should fail to create ballot -- bad owner (49ms) ✓ Should fail to create ballot -- bad commit duration (56ms) ✓ Should fail to create ballot -- bad reveal duration (57ms) ✓ Should fail to create ballot -- bad proposed quorum (54ms) ✓ Should fail to create ballot -- bad proposed quorum more than 100 % (53ms) ✓ Should fail to create ballot -- bad no of proposals (53ms) ✓ Should fail to create ballot -- bad no of proposals (56ms) ✓ Mint some tokens and transfer to whitelisted investors (362ms) ✓ Should fail to create ballot -- Invalid checkpoint Id (44ms) ✓ Should fail to create ballot -- Invalid start time (41ms) ✓ SHould give admin permission to the delegate (47ms) ✓ Should create the ballot successfully (94ms) Test case for commitVote ✓ Should fail to commitVote -- bad ballot id ✓ Should fail to commitVote -- not in the commit stage ✓ Should fail to commitVote -- secret vote is 0 (39ms) ✓ Should change some ballot status (51ms) ✓ Should fail to commitVote because ballot is not active ✓ Should change some ballot status (85ms) ✓ Should fail to add voter in ballot exemption list -- address is zero (41ms) ✓ Should fail to add voter in ballot exemption list -- invalid ballot id ✓ Should add the voter in to the ballot exemption list ✓ Should fail to add voter in ballot exemption list -- doing the same change again ✓ Should fail to vote -- voter is present in the exemption list ✓ Should add the multiple voter in to the ballot exemption list -- failed (38ms) ✓ Should add the multiple voter in to the ballot exemption list --failed because of bad msg.sender (60ms) ✓ Should add the multiple voter in to the ballot exemption list (41ms) ✓ Should successfully vote by account investor1 (57ms) ✓ Should failed to vote again ✓ Should fail to add voter in default exemption list -- address is zero ✓ Should add the voter in to the default exemption list ✓ Should fail to add voter in default exemption list -- doing the same change again ✓ Should fail to vote -- voter is present in the exemption list ✓ Should change the deafult exemption list using Multi function -- failed because of mismatch array length (38ms) ✓ Should change the default exemption list by allowing investor 1 to vote (42ms) ✓ Should change the default exemption list using Multi function (106ms) ✓ Should change the default exemption list by allowing investor 1 to vote again (45ms) ✓ Should change the default exemption list using Multi function (70ms) ✓ Should successfully vote by account investor3 (81ms) ✓ Should successfully vote by account investor2 (68ms) ✓ Mint some more tokens and transferred to the tokens holders (231ms) ✓ Should fail to vote with a zero weight (52ms) ✓ Should create a new ballot (67ms) ✓ Should reveal the vote -- failed because not a valid stage ✓ Should try to commit vote but failed because commit periods end (38ms) ✓ Should fail to reveal vote -- not a valid ballot Id ✓ Should fali to reveal the vote -- not have the secret vote ✓ Should fail to reveal vote -- not a valid choice of proposal ✓ Should fail to reveal vote -- Invalid salt ✓ Should successfully reveal the vote by investor 3 (59ms) ✓ Should fail to change the ballot status-- bad owner (50ms) ✓ Should fail to change the ballot status-- no change in the state ✓ Should change the status of the ballot with the help of changeBallotStatus ✓ Should fail to reveal vote as ballot status is false ✓ Should successfully reveal the vote by investor 1 (81ms) ✓ Should fail to reveal vote again ✓ Should ge the ballot stage ✓ Should fail to reveal vote when reveal period is over (39ms) ✓ Should check who votes whom (53ms) ✓ Should give the result to 0 because ballot id is not valid ✓ Should get the result of the ballot ✓ Should fail to change the ballot status after the ballot ends (48ms) General function test ✓ Should check the permission ✓ Should check the init function Factory test cases ✓ Should get the exact details of the factory (103ms) Contract: WeightedVoteCheckpoint STL - 0x5D3BeF47d7Be68C97b69Fa9B1DB1Ed3a5ADad5d2 --------------------- Polymath Network Smart Contracts: --------------------- PolymathRegistry: 0xaC772223D1fb1e8881E29A4F55D815c8c4bBc43a SecurityTokenRegistryProxy: 0xeD0e0bDbdB1A09f77B53F0c8345EAfA77951108f SecurityTokenRegistry: 0x6347CecB93D8f1E6cFa30d62AAB5509DC276f53d ModuleRegistry: 0x7EF88a3901494435700cCC4C7615903b43ec2Dbc ModuleRegistryProxy: 0x24D718f7d8af7D7a4AbaA2B1Cb7AbbB36a23a00d FeatureRegistry: 0x5cDc96cE31bdF08EF39D5f65A9Fd5E236CE2245F STFactory: 0xa13BeaC90A97420310c3430c2A921786eA12D214 GeneralTransferManagerFactory: 0xf1a762a9a2e7f1Cb3D9e20c505d17Ef892E305e7 WeightedVoteCheckpointFactory: 0x146EEb2719451a7bcd57E755987224eFe6c9f7f6 ----------------------------------------------------------------------------- Test case for Weighted Vote Checkpoint module Attaching the Weighted vote checkpoint module ✓ Should register the ticker before the generation of the security token (81ms) ✓ Should generate the new security token with the same symbol as registered above (260ms) ✓ Should initialize the auto attached modules ✓ Should attach the voting module with the ST (155ms) ✓ Should fail to attach the voting module because allowance is unsufficent (123ms) ✓ Should attach the voting module with the ST (181ms) Test for createBallot ✓ Should fail to create ballot -- bad owner (41ms) ✓ Should fail to create ballot -- bad duration (40ms) ✓ Should fail to create ballot -- bad no of proposals (55ms) ✓ Should fail to create ballot -- zero value of quorum (56ms) ✓ Should fail to create ballot -- value of quorum is more than the limit (55ms) ✓ Mint some tokens and transfer to whitelisted investors (331ms) ✓ Should fail to create ballot -- Invalid checkpoint Id (44ms) ✓ Should fail to create ballot -- Invalid startTime (78ms) ✓ Should fail to create ballot -- Invalid endTimes (41ms) ✓ Should create the ballot successfully (42ms) Test case for castVote ✓ Should fail to caste vote -- bad ballot id ✓ Should fail to caste vote -- bad proposal id (77ms) ✓ Should fail to caste vote -- weight is 0 (43ms) ✓ Should fail to add voter in ballot exemption list -- address is zero ✓ Should fail to add voter in ballot exemption list -- invalid ballot id ✓ Should add the voter in to the ballot exemption list ✓ Should fail to add voter in ballot exemption list -- doing the same change again ✓ Should fail to vote -- voter is present in the exemption list ✓ Should add the multiple voter in to the ballot exemption list -- failed ✓ Should add the multiple voter in to the ballot exemption list (41ms) ✓ Should successfully vote by account investor2 (55ms) ✓ Should fail to add voter in default exemption list -- address is zero ✓ Should add the voter in to the default exemption list ✓ Should fail to add voter in default exemption list -- doing the same change again ✓ Should fail to vote -- voter is present in the exemption list ✓ Should change the default exemption list by allowing investor 1 to vote (41ms) ✓ Should successfully vote by account investor1 (54ms) ✓ Should fail to vote again (44ms) ✓ Should fail to change the ballot status-- bad owner (42ms) ✓ Should fail to change the ballot status-- no change in the state (43ms) ✓ Should change the status of the ballot with the help of changeBallotStatus ✓ Should fail to vote because ballot is disabled (44ms) ✓ Should turn on the ballot Result { '0': BN { negative: 0, words: [ 57868288, 16290576, 113, <1 empty item> ], length: 3, red: null }, '1': BN { negative: 0, words: [ 51380224, 62546313, 1443289, <1 empty item> ], length: 3, red: null }, '2': BN { negative: 0, words: [ 2, <1 empty item> ], length: 1, red: null }, '3': BN { negative: 0, words: [ 12023816, 23, <1 empty item> ], length: 2, red: null }, '4': BN { negative: 0, words: [ 12455816, 23, <1 empty item> ], length: 2, red: null }, '5': BN { negative: 0, words: [ 3, <1 empty item> ], length: 1, red: null }, '6': BN { negative: 0, words: [ 3, <1 empty item> ], length: 1, red: null }, '7': true } ✓ Should successfully vote (53ms) ✓ Should fail to vote when the duration of vote is complete (111ms) ✓ Should fail to change the status of the ballot -- already ended ✓ Should check who votes whom (64ms) ✓ Should get the result of the ballot Result { '0': [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ], '1': [], '2': BN { negative: 0, words: [ 1, <1 empty item> ], length: 1, red: null }, '3': true, '4': BN { negative: 0, words: [ 3, <1 empty item> ], length: 1, red: null }, voteWeighting: [ BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 3, red: null }, BN { negative: 0, words: [Array], length: 1, red: null } ], tieWith: [], winningProposal: BN { negative: 0, words: [ 1, <1 empty item> ], length: 1, red: null }, isVotingSucceed: true, totalVotes: BN { negative: 0, words: [ 3, <1 empty item> ], length: 1, red: null } } ✓ Should get the result of the ballot General function test ✓ Should check the permission ✓ Should check the init function Factory test cases ✓ Should get the exact details of the factory (100ms) 1556 passing (6m) ```