Skip to content

Commit 962dc89

Browse files
authored
Merge pull request #513 from PolymathNetwork/getter-voltm
add getRestrictedData() function in VRTM
2 parents 70a460a + 1b126c2 commit 962dc89

15 files changed

+723
-413
lines changed

0

Whitespace-only changes.

CLI/commands/common/common_functions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,8 @@ module.exports = {
158158
},
159159
splitIntoBatches: function (data, batchSize) {
160160
let allBatches = [];
161-
for (let index = 0; index < data.length; index += batchSize) {
162-
allBatches.push(data.slice(index, index + batchSize));
161+
for (let index = 0; index < data.length; index += parseInt(batchSize)) {
162+
allBatches.push(data.slice(index, index + parseInt(batchSize)));
163163
}
164164
return allBatches;
165165
},

CLI/commands/transfer_manager.js

Lines changed: 253 additions & 191 deletions
Large diffs are not rendered by default.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1,1000,8/1/2019,90,10/10/2019,"Fixed"
2+
0x2f0fd672bf222413cc69dc1f4f1d7e93ad1763a1,2000,8/2/2019,30,10/12/2019,"Fixed"
3+
0xac297053173b02b02a737d47f7b4a718e5b170ef,500,8/1/2019,15,10/1/2019,"Fixed"
4+
0x49fc0b78238dab644698a90fa351b4c749e123d2,0.15,8/5/2019,90,10/10/2019,"Percentage"
5+
0x10223927009b8add0960359dd90d1449415b7ca9,0.25,8/3/2019,30,10/15/2019,"Percentage"
6+
0x3c65cfe3de848cf38e9d76e9c3e57a2f1140b399,0.1,8/10/2019,15,10/10/2019,"Percentage"
7+
0xabf60de3265b3017db7a1be66fc8b364ec1dbb98,1234,8/20/2019,10,10/22/2019,"Fixed"
8+
0xb841fe5a89da1bbef2d0805fbd7ffcbbb2fca5e3,5678,8/1/2019,2,10/10/2019,"Fixed"
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1,1000,1/8/2019,10/10/2019,"Fixed"
2-
0x2f0fd672bf222413cc69dc1f4f1d7e93ad1763a1,2000,1/8/2019,10/10/2019,"Fixed"
3-
0xac297053173b02b02a737d47f7b4a718e5b170ef,500,1/8/2019,10/10/2019,"Fixed"
4-
0x49fc0b78238dab644698a90fa351b4c749e123d2,0.15,1/8/2019,10/10/2019,"Percentage"
5-
0x10223927009b8add0960359dd90d1449415b7ca9,0.25,1/8/2019,10/10/2019,"Percentage"
6-
0x3c65cfe3de848cf38e9d76e9c3e57a2f1140b399,0.1,1/8/2019,10/10/2019,"Percentage"
7-
0xabf60de3265b3017db7a1be66fc8b364ec1dbb98,1234,1/8/2019,10/10/2019,"Fixed"
8-
0xb841fe5a89da1bbef2d0805fbd7ffcbbb2fca5e3,5678,1/8/2019,10/10/2019,"Fixed"
1+
0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1,1000,8/1/2019,10/10/2019,"Fixed"
2+
0x2f0fd672bf222413cc69dc1f4f1d7e93ad1763a1,2000,8/2/2019,10/12/2019,"Fixed"
3+
0xac297053173b02b02a737d47f7b4a718e5b170ef,500,8/1/2019,10/10/2019,"Fixed"
4+
0x49fc0b78238dab644698a90fa351b4c749e123d2,0.15,8/3/2019,10/1/2019,"Percentage"
5+
0x10223927009b8add0960359dd90d1449415b7ca9,0.25,8/1/2019,10/10/2019,"Percentage"
6+
0x3c65cfe3de848cf38e9d76e9c3e57a2f1140b399,0.1,8/1/2019,10/5/2019,"Percentage"
7+
0xabf60de3265b3017db7a1be66fc8b364ec1dbb98,1234,8/12/2019,10/10/2019,"Fixed"
8+
0xb841fe5a89da1bbef2d0805fbd7ffcbbb2fca5e3,5678,8/1/2019,10/10/2019,"Fixed"

CLI/data/Transfer/VRTM/add_restriction_data.csv

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1,2000,8/1/2019,90,10/10/2019,"Fixed"
2+
0x2f0fd672bf222413cc69dc1f4f1d7e93ad1763a1,2000,8/2/2019,30,10/10/2019,"Fixed"
3+
0xac297053173b02b02a737d47f7b4a718e5b170ef,500,8/1/2019,20,10/10/2019,"Fixed"
4+
0x49fc0b78238dab644698a90fa351b4c749e123d2,0.15,8/1/2019,90,20/10/2019,"Percentage"
5+
0x10223927009b8add0960359dd90d1449415b7ca9,25,8/1/2019,30,10/10/2019,"Fixed"
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1,2000,1/8/2019,10/10/2019,"Fixed"
2-
0x2f0fd672bf222413cc69dc1f4f1d7e93ad1763a1,2000,2/8/2019,10/10/2019,"Fixed"
3-
0xac297053173b02b02a737d47f7b4a718e5b170ef,500,1/8/2019,10/10/2019,"Fixed"
4-
0x49fc0b78238dab644698a90fa351b4c749e123d2,0.15,1/8/2019,20/10/2019,"Percentage"
5-
0x10223927009b8add0960359dd90d1449415b7ca9,25,1/8/2019,10/10/2019,"Fixed"
1+
0xee7ae74d964f2be7d72c1b187b38e2ed3615d4d1,2000,8/1/2019,10/10/2019,"Fixed"
2+
0x2f0fd672bf222413cc69dc1f4f1d7e93ad1763a1,2000,8/1/2019,10/10/2019,"Fixed"
3+
0xac297053173b02b02a737d47f7b4a718e5b170ef,500,8/1/2019,10/10/2019,"Fixed"
4+
0x49fc0b78238dab644698a90fa351b4c749e123d2,0.15,8/1/2019,20/10/2019,"Percentage"
5+
0x10223927009b8add0960359dd90d1449415b7ca9,25,8/1/2019,10/10/2019,"Fixed"

CLI/data/Transfer/VRTM/modify_restriction_data.csv

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
pragma solidity ^0.4.24;
2+
3+
import "./BokkyPooBahsDateTimeLibrary.sol";
4+
import "openzeppelin-solidity/contracts/math/SafeMath.sol";
5+
import "../interfaces/ISecurityToken.sol";
6+
7+
library VolumeRestrictionLib {
8+
9+
using SafeMath for uint256;
10+
11+
enum TypeOfPeriod { MultipleDays, OneDay, Both }
12+
13+
struct RestrictedHolder {
14+
// 1 represent true & 0 for false
15+
uint8 seen;
16+
// Type of period will be enum index of TypeOfPeriod enum
17+
uint8 typeOfPeriod;
18+
// Index of the array where the holder address lives
19+
uint128 index;
20+
}
21+
22+
struct RestrictedData {
23+
mapping(address => RestrictedHolder) restrictedHolders;
24+
address[] restrictedAddresses;
25+
}
26+
27+
function _checkLengthOfArray(
28+
address[] _holders,
29+
uint256[] _allowedTokens,
30+
uint256[] _startTimes,
31+
uint256[] _rollingPeriodInDays,
32+
uint256[] _endTimes,
33+
uint256[] _restrictionTypes
34+
)
35+
internal
36+
pure
37+
{
38+
require(
39+
_holders.length == _allowedTokens.length &&
40+
_allowedTokens.length == _startTimes.length &&
41+
_startTimes.length == _rollingPeriodInDays.length &&
42+
_rollingPeriodInDays.length == _endTimes.length &&
43+
_endTimes.length == _restrictionTypes.length,
44+
"Length mismatch"
45+
);
46+
}
47+
48+
function _deleteHolderFromList(RestrictedData storage data, address _holder, uint8 _typeOfPeriod) public {
49+
// Deleting the holder if holder's type of Period is `Both` type otherwise
50+
// it will assign the given type `_typeOfPeriod` to the _holder typeOfPeriod
51+
// `_typeOfPeriod` it always be contrary to the removing restriction
52+
// if removing restriction is individual then typeOfPeriod is TypeOfPeriod.OneDay
53+
// in uint8 its value is 1. if removing restriction is daily individual then typeOfPeriod
54+
// is TypeOfPeriod.MultipleDays in uint8 its value is 0.
55+
if (data.restrictedHolders[_holder].typeOfPeriod != uint8(TypeOfPeriod.Both)) {
56+
uint128 index = data.restrictedHolders[_holder].index;
57+
uint256 _len = data.restrictedAddresses.length;
58+
if (index != _len) {
59+
data.restrictedHolders[data.restrictedAddresses[_len - 1]].index = index;
60+
data.restrictedAddresses[index - 1] = data.restrictedAddresses[_len - 1];
61+
}
62+
delete data.restrictedHolders[_holder];
63+
data.restrictedAddresses.length--;
64+
} else {
65+
data.restrictedHolders[_holder].typeOfPeriod = _typeOfPeriod;
66+
}
67+
}
68+
69+
function _addRestrictionData(RestrictedData storage data, address _holder, uint8 _callFrom, uint256 _endTime) public {
70+
uint128 index = data.restrictedHolders[_holder].index;
71+
if (data.restrictedHolders[_holder].seen == 0) {
72+
data.restrictedAddresses.push(_holder);
73+
index = uint128(data.restrictedAddresses.length);
74+
}
75+
uint8 _type = _getTypeOfPeriod(data.restrictedHolders[_holder].typeOfPeriod, _callFrom, _endTime);
76+
data.restrictedHolders[_holder] = RestrictedHolder(uint8(1), _type, index);
77+
}
78+
79+
function _getTypeOfPeriod(uint8 _currentTypeOfPeriod, uint8 _callFrom, uint256 _endTime) internal pure returns(uint8) {
80+
if (_currentTypeOfPeriod != _callFrom && _endTime != uint256(0))
81+
return uint8(TypeOfPeriod.Both);
82+
else
83+
return _callFrom;
84+
}
85+
86+
87+
}

0 commit comments

Comments
 (0)