From ba0724b38f188822a2274ba9574ec64f959a71b1 Mon Sep 17 00:00:00 2001 From: ChenHao Nien Date: Fri, 21 Dec 2018 10:38:49 -0800 Subject: [PATCH 1/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f927615..c43e566 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ### Dev: - `$ git clone https://github.com/DOSNetwork/eth-contracts` - `$ npm install` -- `$ npm -g install truffle` +- `$ npm -g install truffle@4.1.14` - `$ npm install -g ganache-cli` or installing its [graphic interface](https://truffleframework.com/ganache) ### Compile: From 6b5af5ffac17e5f9a13b2d07462e965e831d8bec Mon Sep 17 00:00:00 2001 From: RookieLinLucy <44455149+RookieLinLucy@users.noreply.github.com> Date: Fri, 1 Mar 2019 09:11:14 +0800 Subject: [PATCH 2/5] unit_test (#10) * disable whitelist Signed-off-by: ericnien * [Add version field to distinguish same requestId] * test lib * update bn256_test.js&utils_test.js * solve warning(BN256Mock)&try testing DOSOnChainSDK.sol * update proxy_test(unfinished) * tinker * update dosproxy_test (unfinished) * update dosproxy_test(unfinished:events watch) * complete dosproxy_test * clean proxy * remove useless change --- contracts/DOSProxy.sol | 2 +- contracts/lib/utils.sol | 14 +- contracts/mocks/UtilsMock.sol | 73 +++++++++ package-lock.json | 286 +++++++++++++++++++--------------- test/DOSProxy_test.js | 0 test/utils_test.js | 145 +++++++++++++++++ 6 files changed, 392 insertions(+), 128 deletions(-) create mode 100644 contracts/mocks/UtilsMock.sol delete mode 100644 test/DOSProxy_test.js diff --git a/contracts/DOSProxy.sol b/contracts/DOSProxy.sol index f56b404..2f9ddfd 100644 --- a/contracts/DOSProxy.sol +++ b/contracts/DOSProxy.sol @@ -358,4 +358,4 @@ contract DOSProxy { nodeId.length = 0; groupPubKeys.length = 0; } -} +} \ No newline at end of file diff --git a/contracts/lib/utils.sol b/contracts/lib/utils.sol index d976bb2..11521ae 100644 --- a/contracts/lib/utils.sol +++ b/contracts/lib/utils.sol @@ -141,12 +141,18 @@ library utils { } // Example: address(0x0e7ad63d2a305a7b9f46541c386aafbd2af6b263) => '0e7ad63d2a305a7b9f46541c386aafbd2af6b263' - function addr2Str(address x) internal pure returns(string memory) { - bytes memory b = new bytes(20); + function addr2Str(address _addr) internal pure returns(string memory) { + bytes32 value = bytes32(uint256(_addr)); + bytes memory alphabet = "0123456789abcdef"; + + bytes memory str = new bytes(51); + str[0] = '0'; + str[1] = 'x'; for (uint i = 0; i < 20; i++) { - b[i] = byte(uint8(uint(x) / (2**(8*(19 - i))))); + str[2+i*2] = alphabet[uint(value[i + 12] >> 4)]; + str[3+i*2] = alphabet[uint(value[i + 12] & 0x0f)]; } - return string(b); + return string(str); } /// bytes/string helpers. diff --git a/contracts/mocks/UtilsMock.sol b/contracts/mocks/UtilsMock.sol new file mode 100644 index 0000000..c26a79d --- /dev/null +++ b/contracts/mocks/UtilsMock.sol @@ -0,0 +1,73 @@ +pragma solidity >= 0.4.24; +import "../lib/utils.sol"; + +contract UtilsMock { + function returnUINT256MAX() public pure returns(uint) { + return ~uint(0); + } + + function createByte() public pure returns(byte) { + return '6'; + } + + function byte2Uint(byte b) public pure returns(uint8) { + return utils.byte2Uint(b); + } + + function hexByte2Uint(byte b) public pure returns(uint8) { + return utils.hexByte2Uint(b); + } + + function str2Uint(string memory a) public pure returns(uint) { + return utils.str2Uint(a); + } + + function hexStr2Uint(string memory a) public pure returns(uint) { + return utils.hexStr2Uint(a); + } + + function str2Addr(string memory a) public pure returns(address) { + return utils.str2Addr(a); + } + + function uint2HexStr(uint x) public pure returns(string memory) { + return utils.uint2HexStr(x); + } + + function uint2Str(uint x) public pure returns(string memory) { + return utils.uint2Str(x); + } + + function addr2Str(string memory a) public pure returns(string memory) { + address x = utils.str2Addr(a); + return utils.addr2Str(x); + } + + function bytesConcat(bytes memory a, bytes memory b) public pure returns(bytes memory) { + return utils.bytesConcat(a,b); + } + + function strConcat(string memory a, string memory b) public pure returns(string memory) { + return utils.strConcat(a,b); + } + + function strCompare(string memory a, string memory b) public pure returns(int) { + return utils.strCompare(a, b); + } + + function strEqual(string memory a, string memory b) public pure returns(bool) { + return utils.strEqual(a, b); + } + + function indexOf(string memory haystack, string memory needle) public pure returns(int) { + return utils.indexOf(haystack, needle); + } + + function subStr(string memory a, uint start, uint len) public pure returns(string memory) { + return utils.subStr(a, start, len); + } + + function subStr1(string memory a, uint start) public pure returns(string memory) { + return utils.subStr(a, start); + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a719de2..72bd788 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,18 +14,18 @@ }, "aes-js": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-0.2.4.tgz", + "resolved": "http://registry.npmjs.org/aes-js/-/aes-js-0.2.4.tgz", "integrity": "sha1-lLiBq3FyhtAV+iGeCPtmcJ3aWj0=" }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", + "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-regex": { @@ -140,7 +140,7 @@ "dependencies": { "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" } } @@ -691,12 +691,12 @@ }, "bignumber.js": { "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "from": "bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" + "from": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" }, "bindings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", - "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.1.tgz", + "integrity": "sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew==" }, "bip39": { "version": "2.5.0", @@ -751,11 +751,12 @@ } }, "browserify-sha3": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.1.tgz", - "integrity": "sha1-P/NKMAbvFcD7NWflQbkaI0ASPRE=", + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.4.tgz", + "integrity": "sha1-CGxHuMgjFsnUcCLCYYWVRXbdjiY=", "requires": { - "js-sha3": "^0.3.1" + "js-sha3": "^0.6.1", + "safe-buffer": "^5.1.1" } }, "browserslist": { @@ -805,9 +806,15 @@ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" }, "caniuse-lite": { - "version": "1.0.30000904", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000904.tgz", - "integrity": "sha512-M4sXvogCoY5Fp6fuXIaQG/MIexlEFQ3Lgwban+KlqiQUbUIkSmjAB8ZJIP79aj2cdqz2F1Lb+Z+5GwHvCrbLtg==" +<<<<<<< 0e7904660e90ddcf44e1194b7aa8c00703fc95cb + "version": "1.0.30000918", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000918.tgz", + "integrity": "sha512-CAZ9QXGViBvhHnmIHhsTPSWFBujDaelKnUj7wwImbyQRxmXynYqKGi3UaZTSz9MoVh+1EVxOS/DFIkrJYgR3aw==" +======= + "version": "1.0.30000923", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000923.tgz", + "integrity": "sha512-j5ur7eeluOFjjPUkydtXP4KFAsmH3XaQNch5tvWSO+dLHYt5PE+VgJZLWtbVOodfWij6m6zas28T4gB/cLYq1w==" +>>>>>>> complete dosproxy_test }, "caseless": { "version": "0.12.0", @@ -858,11 +865,6 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -917,9 +919,15 @@ } }, "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" +<<<<<<< 0e7904660e90ddcf44e1194b7aa8c00703fc95cb + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz", + "integrity": "sha512-kLRC6ncVpuEW/1kwrOXYX6KQASCVtrh1gQr/UiaVgFlf9WE5Vp+lNe5+h3LuMr5PAucWnnEXwH0nQHRH/gpGtw==" +======= + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.1.tgz", + "integrity": "sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg==" +>>>>>>> complete dosproxy_test }, "core-util-is": { "version": "1.0.2", @@ -1050,9 +1058,15 @@ } }, "electron-to-chromium": { - "version": "1.3.83", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.83.tgz", - "integrity": "sha512-DqJoDarxq50dcHsOOlMLNoy+qQitlMNbYb6wwbE0oUw2veHdRkpNrhmngiUYKMErdJ8SJ48rpJsZTQgy5SoEAA==" +<<<<<<< 0e7904660e90ddcf44e1194b7aa8c00703fc95cb + "version": "1.3.89", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.89.tgz", + "integrity": "sha512-Vb6lmZZdqMX4+v2G5SCTgy/cYtACuG5pAlFrC6AoyOpQaXBft32Vv9ejjPW7+rYWA/ww1iGKMDUCpnmqab6XBg==" +======= + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.95.tgz", + "integrity": "sha512-0JZEDKOQAE05EO/4rk3vLAE+PYFI9OLCVLAS4QAq1y+Bb2y1N6MyQJz62ynzHN/y0Ka/nO5jVJcahbCEdfiXLQ==" +>>>>>>> complete dosproxy_test }, "elliptic": { "version": "6.4.1", @@ -1281,7 +1295,7 @@ "dependencies": { "async-eventemitter": { "version": "github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c", - "from": "async-eventemitter@github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c", + "from": "github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c", "requires": { "async": "^2.4.0" } @@ -1309,7 +1323,7 @@ }, "ethereumjs-vm": { "version": "2.3.4", - "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.3.4.tgz", + "resolved": "http://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.3.4.tgz", "integrity": "sha512-Y4SlzNDqxrCO58jhp98HdnZVdjOqB+HC0hoU+N/DEp1aU+hFkRX/nru5F7/HkQRPIlA6aJlQp/xIA6xZs1kspw==", "requires": { "async": "^2.1.2", @@ -1360,7 +1374,7 @@ }, "ethereumjs-abi": { "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", - "from": "ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", + "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", "requires": { "bn.js": "^4.10.0", "ethereumjs-util": "^5.0.0" @@ -1442,9 +1456,9 @@ } }, "ethereumjs-common": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-0.4.1.tgz", - "integrity": "sha512-ywYGsOeGCsMNWso5Y4GhjWI24FJv9FK7+VyVKiQgXg8ZRDPXJ7F/kJ1CnjtkjTvDF4e0yqU+FWswlqR3bmZQ9Q==" + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-0.6.1.tgz", + "integrity": "sha512-4jOrfDu9qOBTTGGb3zrfT1tE1Hyc6a8LJpEk0Vk9AYlLkBY7crjVICyJpRvjNI+KLDMpMITMw3eWVZOLMtZdhw==" }, "ethereumjs-tx": { "version": "1.3.7", @@ -1484,16 +1498,16 @@ } }, "ethereumjs-vm": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.4.0.tgz", - "integrity": "sha512-MJ4lCWa5c6LhahhhvoDKW+YGjK00ZQn0RHHLh4L+WaH1k6Qv7/q3uTluew6sJGNCZdlO0yYMDXYW9qyxLHKlgQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.5.0.tgz", + "integrity": "sha512-Cp1do4J2FIJFnbofqLsKb/aoZKG+Q8NBIbTa1qwZPQkQxzeR3DZVpFk/VbE1EUO6Ha0kSClJ1jzfj07z3cScSQ==", "requires": { "async": "^2.1.2", "async-eventemitter": "^0.2.2", "ethereumjs-account": "^2.0.3", - "ethereumjs-block": "~1.7.0", - "ethereumjs-common": "~0.4.0", - "ethereumjs-util": "^5.2.0", + "ethereumjs-block": "~2.1.0", + "ethereumjs-common": "^0.6.0", + "ethereumjs-util": "^6.0.0", "fake-merkle-patricia-tree": "^1.0.1", "functional-red-black-tree": "^1.0.1", "merkle-patricia-tree": "^2.1.2", @@ -1501,14 +1515,42 @@ "safe-buffer": "^5.1.1" }, "dependencies": { + "ethereumjs-block": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.1.0.tgz", + "integrity": "sha512-ip+x4/7hUInX+TQfhEKsQh9MJK1Dbjp4AuPjf1UdX3udAV4beYD4EMCNIPzBLCsGS8WQZYXLpo83tVTISYNpow==", + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^0.6.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + } + } + }, "ethereumjs-util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", - "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.0.0.tgz", + "integrity": "sha512-E3yKUyl0Fs95nvTFQZe/ZSNcofhDzUsDlA5y2uoRmf1+Ec7gpGhNCsgKkZBRh7Br5op8mJcYF/jFbmjj909+nQ==", "requires": { "bn.js": "^4.11.0", "create-hash": "^1.1.2", - "ethjs-util": "^0.1.3", + "ethjs-util": "^0.1.6", "keccak": "^1.0.2", "rlp": "^2.0.0", "safe-buffer": "^5.1.1", @@ -1578,9 +1620,9 @@ } }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, "fast-json-stable-stringify": { "version": "2.0.0", @@ -1640,7 +1682,7 @@ }, "fs-extra": { "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "requires": { "graceful-fs": "^4.1.2", @@ -3583,17 +3625,8 @@ "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", "requires": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", "ethereumjs-util": "^5.1.1" - }, - "dependencies": { - "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", - "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", - "requires": { - "bn.js": "^4.10.0", - "ethereumjs-util": "^5.0.0" - } - } } }, "ethereum-common": { @@ -6672,17 +6705,8 @@ "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", "requires": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", "ethereumjs-util": "^5.1.1" - }, - "dependencies": { - "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", - "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git#2863c40e0982acfc0b7163f0285d4c56427c7799", - "requires": { - "bn.js": "^4.10.0", - "ethereumjs-util": "^5.0.0" - } - } } }, "ethereumjs-abi": { @@ -6728,7 +6752,8 @@ "integrity": "sha512-Cx64NgDStynKaUGDIIOfaCd0fZusL8h5avKTkdTjUu2aHhFJhZoVBGVLhoDtUaqZGWIZGcBJOoVf2JkGUOjDRQ==", "requires": { "underscore": "1.8.3", - "web3-core-helpers": "1.0.0-beta.35" + "web3-core-helpers": "1.0.0-beta.35", + "websocket": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2" }, "dependencies": { "debug": { @@ -6741,7 +6766,7 @@ }, "websocket": { "version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2", - "from": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2", + "from": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible", "requires": { "debug": "^2.2.0", "nan": "^2.3.3", @@ -7284,9 +7309,9 @@ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" }, "graceful-fs": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.14.tgz", - "integrity": "sha512-ns/IGcSmmGNPP085JCheg0Nombh1QPvSCnlx+2V+byQWRQEIL4ZB5jXJMNIHOFVS1roi85HIi5Ka0h43iWXfcQ==" + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" }, "har-schema": { "version": "2.0.0", @@ -7294,11 +7319,11 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "ajv": "^5.3.0", + "ajv": "^6.5.5", "har-schema": "^2.0.0" } }, @@ -7333,9 +7358,9 @@ } }, "hash.js": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", - "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -7520,9 +7545,9 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-sha3": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.3.1.tgz", - "integrity": "sha1-hhIoAhQvCChQKg0d7h2V4lO7AkM=" + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.6.1.tgz", + "integrity": "sha1-W4n3enR3Z5h39YxKB1JAk0sflcA=" }, "js-tokens": { "version": "3.0.2", @@ -7536,7 +7561,7 @@ }, "jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" }, "json-rpc-engine": { @@ -7571,9 +7596,9 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify": { "version": "1.0.1", @@ -7629,12 +7654,12 @@ } }, "keccakjs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/keccakjs/-/keccakjs-0.2.1.tgz", - "integrity": "sha1-HWM6+QfvMFu/ny+mFtVsRFYd+k0=", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/keccakjs/-/keccakjs-0.2.3.tgz", + "integrity": "sha512-BjLkNDcfaZ6l8HBG9tH0tpmDv3sS2mA7FNQxFHpCdzP3Gb2MVruXBSuoM66SnVxKJpAr5dKGdkHD+bDokt8fTg==", "requires": { - "browserify-sha3": "^0.0.1", - "sha3": "^1.1.0" + "browserify-sha3": "^0.0.4", + "sha3": "^1.2.2" } }, "klaw": { @@ -7695,7 +7720,7 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" } } @@ -7732,7 +7757,7 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "xtend": { @@ -10684,7 +10709,7 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-locale": { @@ -10697,7 +10722,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "parse-headers": { @@ -10727,7 +10752,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-parse": { @@ -10815,14 +10840,14 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { "version": "6.5.2", @@ -10892,7 +10917,7 @@ }, "regexpu-core": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "requires": { "regenerate": "^1.2.1", @@ -10907,7 +10932,7 @@ }, "regjsparser": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "resolved": "http://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "requires": { "jsesc": "~0.5.0" @@ -10972,7 +10997,7 @@ }, "resolve": { "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "resolved": "http://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "requires": { "path-parse": "^1.0.5" @@ -11004,9 +11029,9 @@ } }, "rlp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.1.0.tgz", - "integrity": "sha512-93U7IKH5j7nmXFVg19MeNBGzQW5uXW1pmCuKY8veeKIhYTE32C2d0mOegfiIAfXcHOKJjjPlJisn8iHDF5AezA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.0.tgz", + "integrity": "sha512-rGDIOeKPYj82rgml9Fpi28dU9n2JYyqTXaBeCLTT9rk9+Ry+/l7oDgVuHcKYDSJ6WZfa2mD16fRWPpNzk0kTHw==", "requires": { "safe-buffer": "^5.1.1" } @@ -11043,9 +11068,9 @@ } }, "scrypt.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.2.0.tgz", - "integrity": "sha1-r40UZbcemZARC+38WTuUeeA6ito=", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.2.1.tgz", + "integrity": "sha512-XMoqxwABdotuW+l+qACmJ/h0kVSCgMPZXpbncA/zyBO90z/NnDISzVw+xJ4tUY+X/Hh0EFT269OYHm26VCPgmA==", "requires": { "scrypt": "^6.0.2", "scryptsy": "^1.2.1" @@ -11142,9 +11167,9 @@ } }, "spdx-correct": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", - "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -11187,7 +11212,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "^1.0.0", @@ -11207,7 +11232,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" @@ -11275,11 +11300,11 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "requires": { - "readable-stream": "^2.1.5", + "readable-stream": "~2.3.6", "xtend": "~4.0.1" } }, @@ -11295,6 +11320,13 @@ "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } } }, "treeify": { @@ -11346,6 +11378,14 @@ "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz", "integrity": "sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA=" }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, "utf8": { "version": "2.1.2", "resolved": "http://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz", diff --git a/test/DOSProxy_test.js b/test/DOSProxy_test.js deleted file mode 100644 index e69de29..0000000 diff --git a/test/utils_test.js b/test/utils_test.js index e69de29..5bf1764 100644 --- a/test/utils_test.js +++ b/test/utils_test.js @@ -0,0 +1,145 @@ +const UtilsMock = artifacts.require("UtilsMock"); + +contract("Utils test", async() => { + let utils; + before(async() => { + utils = await UtilsMock.new(); + }) + + it("Test transfer byte to uint", async() => { + let num = await utils.createByte.call(); + let numOverflow = 'A'; + let result = await utils.byte2Uint.call(num); + let resultOverflow = await utils.byte2Uint.call(numOverflow); + assert.equal(result, 6, "transfer byte to uint"); + assert.equal(resultOverflow, 10, "transfer overflow"); + }) + + it("Test transfer hexByte to uint", async() => { + let num = await utils.createByte.call(); + let char = 'F'; + let charOverflow = 'G'; + let result = await utils.byte2Uint.call(num); + let charResult = await utils.hexByte2Uint.call(char); + let charResultOverflow = await utils.hexByte2Uint.call(charOverflow); + assert.equal(result, 6, "transfer hex byte to uint"); + assert.equal(charResult, 15, "transfer hexByte to uint"); + assert.equal(charResultOverflow, 16, "transfer hexByte to uint"); + }) + + it("Test decimalStr to uint", async() => { + let stringDecimal = "846686978"; + let stringChar = "678Aaaa"; + let stringOverflow ="11579208923731619542357098500868790785326998466564056403945758400791312963993555555"; + let stringDecimalResult = await utils.str2Uint.call(stringDecimal); + let stringCharResult = await utils.str2Uint.call(stringChar); + let stringDecimalOverflow = await utils.str2Uint.call(stringOverflow); + const UINT256MAX = await utils.returnUINT256MAX.call(); + assert.equal(stringDecimalResult, 846686978, "transfer a decimal string to uint" ); + assert.equal(stringCharResult, 678,"transefer a char string to uint"); + assert.equal(stringDecimalOverflow.toString(10), UINT256MAX.toString(10), "Overflow:transfer a decimal string to uint"); + }) + + it("Test hexStr to uint", async() => { + const UINT256MAX = await utils.returnUINT256MAX.call(); + let hexString0 = "d19Ab"; + let hexString1 = "0xd19Ab"; + let hexString2 = "0Xd19Ab"; + let hexStringInvalid = "0x"; + let hexStringOverflow = "0x11579208923A73161b9542357098500d86879078534545455454545454544545554444adadaadadaddad"; + let hexStringResult0 = await utils.hexStr2Uint.call(hexString0); + let hexStringResult1 = await utils.hexStr2Uint.call(hexString1); + let hexStringResult2 = await utils.hexStr2Uint.call(hexString2); + let hexStringInvalidResult = await utils.hexStr2Uint.call(hexStringInvalid); + let hexStringResultOverflow = await utils.hexStr2Uint.call(hexStringOverflow); + assert.equal(hexStringResult0,858539,"transfer a hex string to uint"); + assert.equal(hexStringResult1,858539,"transfer a hex string to uint"); + assert.equal(hexStringResult2,858539,"transfer a hex string to uint"); + assert.equal(hexStringInvalidResult,0,"transfer a hex string to uint"); + assert.equal(hexStringResultOverflow.toString(10), UINT256MAX.toString(10), "transfer a hex string to uint"); + }) + + it("Test 20-byte hex string to address", async() => { + let hexString = "0x0e7ad63d2a305a7b9f46541c386aafbd2af6b263"; + let hexStringResult = await utils.str2Addr.call(hexString); + assert.equal(hexStringResult, 0x0e7ad63d2a305a7b9f46541c386aafbd2af6b263, "transfer 20-byte hex string to uint"); + }) + + it("Test address to string", async() => { + let hexAddr = "0x0e7ad63d2a305a7b9f46541c386aafbd2af6b263"; + let hexAddrResult = await utils.addr2Str.call(hexAddr); + assert.equal(hexAddrResult, "0x0e7ad63d2a305a7b9f46541c386aafbd2af6b263", "transfer address to string"); + }) + + it("Test uint to hex string", async() => { + let uintZero = 0; + let uintValid = 12; + let uintZeroResult = await utils.uint2HexStr.call(uintZero); + let uintValidResult = await utils.uint2HexStr.call(uintValid); + assert.equal(uintZeroResult, 0, "transfer uint to hex string"); + assert.equal(uintValidResult, 'C', "transfer uint to hex string"); + }) + + it("Test uint to string", async() => { + let uintZero = 0; + let uintValid = 12; + let uintZeroResult = await utils.uint2Str.call(uintZero); + let uintValidResult = await utils.uint2Str.call(uintValid); + assert.equal(uintZeroResult, "0", "transfer uint to hex string"); + assert.equal(uintValidResult, "12", "transfer uint to hex string"); + }) + + it("Test strConcat and byteConcat", async() => { + let aa = "Hello "; + let bb = "world!"; + let result = await utils.strConcat.call(aa, bb); + assert.equal(result, "Hello world!", "string concat"); + }) + + it("Test strCompare and byteCompare", async() => { + let aa = "abd"; + let bb = "abcde"; + let result = await utils.strCompare.call(aa,bb); + assert.equal(result,1,"string compare"); + }) + + it("Test strEqual and byteEqual", async() => { + let aa = "dosnetwork"; + let bb = "dosnetwork"; + let result = await utils.strEqual.call(aa,bb); + assert.equal(result,true,"string equal"); + }) + + it("Test indexOf(string) and indexOf(bytes)", async() => { + let haystack0 = "123"; + let needle0 = ""; + let haystack1 = ""; + let needle1 = "45"; + let haystack2 = "123"; + let needle2 = "1234"; + let haystack3 = "123.45"; + let needle3 = "."; + let result0 = await utils.indexOf(haystack0,needle0); + let result1 = await utils.indexOf(haystack1,needle1); + let result2 = await utils.indexOf(haystack2,needle2); + let result3 = await utils.indexOf(haystack3,needle3); + assert.equal(result0,0,"get index"); + assert.equal(result1,-1,"get index"); + assert.equal(result2,-1,"get index"); + assert.equal(result3,3,"get index"); + }) + + it("Test subStr(string,uint,uint) and subStr(bytes,uint,uint)", async() => { + let a = "1234567890"; + let start = 2; + let len = 5; + let result = await utils.subStr.call(a, start, len); + assert.equal(result, "34567", "get substring"); + }) + + it("Test subStr(string,uint) and subStr(bytes,uint)", async() => { + let num = "123.4567"; + let result = await utils.subStr1.call(num, 4); + assert.equal(result, "4567", "get substring"); + }) +}) \ No newline at end of file From 7273ced66bf04e1c26f61d00c8e3d4d6b961ae3e Mon Sep 17 00:00:00 2001 From: jonnyhsy Date: Thu, 28 Feb 2019 18:13:03 -0800 Subject: [PATCH 3/5] fix ^0.5.0 compilation error, support truffle 0.5 --- contracts/lib/utils.sol | 10 +++++----- contracts/mocks/BN256Mock.sol | 12 ++++++------ test/bn256_test.js | 23 +++++++++-------------- test/utils_test.js | 8 ++++---- 4 files changed, 24 insertions(+), 29 deletions(-) diff --git a/contracts/lib/utils.sol b/contracts/lib/utils.sol index 11521ae..42f7b8c 100644 --- a/contracts/lib/utils.sol +++ b/contracts/lib/utils.sol @@ -140,17 +140,17 @@ library utils { return string(b); } - // Example: address(0x0e7ad63d2a305a7b9f46541c386aafbd2af6b263) => '0e7ad63d2a305a7b9f46541c386aafbd2af6b263' + // Example: address(0x0e7ad63d2a305a7b9f46541c386aafbd2af6b263) => '0x0e7ad63d2a305a7b9f46541c386aafbd2af6b263' function addr2Str(address _addr) internal pure returns(string memory) { bytes32 value = bytes32(uint256(_addr)); - bytes memory alphabet = "0123456789abcdef"; + bytes memory charset = "0123456789abcdef"; - bytes memory str = new bytes(51); + bytes memory str = new bytes(42); str[0] = '0'; str[1] = 'x'; for (uint i = 0; i < 20; i++) { - str[2+i*2] = alphabet[uint(value[i + 12] >> 4)]; - str[3+i*2] = alphabet[uint(value[i + 12] & 0x0f)]; + str[2+i*2] = charset[uint8(value[i + 12] >> 4)]; + str[3+i*2] = charset[uint8(value[i + 12] & 0x0f)]; } return string(str); } diff --git a/contracts/mocks/BN256Mock.sol b/contracts/mocks/BN256Mock.sol index 8583793..916458b 100644 --- a/contracts/mocks/BN256Mock.sol +++ b/contracts/mocks/BN256Mock.sol @@ -8,10 +8,10 @@ contract BN256Mock { return [ BN256.P1().x, BN256.P1().y ]; } - function P2() public pure returns (uint[2][2] memory) { + function P2() public pure returns (uint[4] memory) { return [ - [BN256.P2().x[0], BN256.P2().x[1]], - [BN256.P2().y[0], BN256.P2().y[1]] + BN256.P2().x[0], BN256.P2().x[1], + BN256.P2().y[0], BN256.P2().y[1] ]; } @@ -43,7 +43,7 @@ contract BN256Mock { return [p1.x, p1.y]; } - function pairingCheck(uint[2][] memory p1, uint[2][2][] memory p2) + function pairingCheck(uint[2][] memory p1, uint[4][] memory p2) public returns (bool) { @@ -53,8 +53,8 @@ contract BN256Mock { BN256.G2Point[] memory b_p2 = new BN256.G2Point[](p1.length); for (uint i = 0; i < p1.length; i++) { b_p1[i] = BN256.G1Point(p1[i][0], p1[i][1]); - b_p2[i] = BN256.G2Point([p2[i][0][0], p2[i][0][1]], - [p2[i][1][0], p2[i][1][1]]); + b_p2[i] = BN256.G2Point([p2[i][0], p2[i][1]], + [p2[i][2], p2[i][3]]); } return BN256.pairingCheck(b_p1, b_p2); } diff --git a/test/bn256_test.js b/test/bn256_test.js index 829d28b..cf4195a 100644 --- a/test/bn256_test.js +++ b/test/bn256_test.js @@ -1,5 +1,4 @@ const BN256Mock = artifacts.require("BN256Mock"); -const BigNumber = require('bignumber.js'); contract("BN256 Test", async (accounts) => { let bn256; @@ -47,29 +46,25 @@ contract("BN256 Test", async (accounts) => { }) it("Test basic pairing", async () => { - let p1_0 = await bn256.P1.call(); - let p1_1 = await bn256.negate.call(p1_0); + let p1 = await bn256.P1.call(); + let p1_n = await bn256.negate.call(p1); let p2 = await bn256.P2.call(); - let pass = await bn256.pairingCheck.call([p1_0, p1_1], [p2, p2]); + let pass = await bn256.pairingCheck.call([p1, p1_n], [p2, p2]); assert(pass, "Basic pairing check e({p1, p2}, {-p1, p2}) should be true"); }); it("Test complex pairing check", async () => { // Generated secret key / public key pair. - let SK = new BigNumber('0x250ebf796264728de1dc24d208c4cec4f813b1bcc2bb647ac8cf66206568db03'); + let SK = web3.utils.toBN('0x250ebf796264728de1dc24d208c4cec4f813b1bcc2bb647ac8cf66206568db03'); let PK = [ - [ - new BigNumber('0x25d7caf90ac28ba3cd8a96aff5c5bf004fc16d9bdcc2cead069e70f783397e5b'), - new BigNumber('0x04ef63f195409b451179767b06673758e621d9db71a058231623d1cb2e594460') - ], - [ - new BigNumber('0x15729e3589dcb871cd46eb6774388aad867521dc07d1e0c0d9c99f444f93ca53'), - new BigNumber('0x15db87d74b02df70d62f7f8afe5811ade35ca08bdb2308b4153624083fcf580e') - ] + web3.utils.toBN('0x25d7caf90ac28ba3cd8a96aff5c5bf004fc16d9bdcc2cead069e70f783397e5b'), + web3.utils.toBN('0x04ef63f195409b451179767b06673758e621d9db71a058231623d1cb2e594460'), + web3.utils.toBN('0x15729e3589dcb871cd46eb6774388aad867521dc07d1e0c0d9c99f444f93ca53'), + web3.utils.toBN('0x15db87d74b02df70d62f7f8afe5811ade35ca08bdb2308b4153624083fcf580e'), ]; - let msg = "test random bytes"; + let msg = web3.utils.asciiToHex("test random bytes"); let hashed_msg = await bn256.hashToG1.call(msg); let sig = await bn256.scalarMul.call(hashed_msg, SK); let sig_n = await bn256.negate.call(sig); diff --git a/test/utils_test.js b/test/utils_test.js index 5bf1764..0491c8f 100644 --- a/test/utils_test.js +++ b/test/utils_test.js @@ -8,7 +8,7 @@ contract("Utils test", async() => { it("Test transfer byte to uint", async() => { let num = await utils.createByte.call(); - let numOverflow = 'A'; + let numOverflow = web3.utils.toHex('A'); let result = await utils.byte2Uint.call(num); let resultOverflow = await utils.byte2Uint.call(numOverflow); assert.equal(result, 6, "transfer byte to uint"); @@ -17,8 +17,8 @@ contract("Utils test", async() => { it("Test transfer hexByte to uint", async() => { let num = await utils.createByte.call(); - let char = 'F'; - let charOverflow = 'G'; + let char = web3.utils.toHex('F'); + let charOverflow = web3.utils.toHex('G'); let result = await utils.byte2Uint.call(num); let charResult = await utils.hexByte2Uint.call(char); let charResultOverflow = await utils.hexByte2Uint.call(charOverflow); @@ -142,4 +142,4 @@ contract("Utils test", async() => { let result = await utils.subStr1.call(num, 4); assert.equal(result, "4567", "get substring"); }) -}) \ No newline at end of file +}) From 9e45131eca3c2c955d9e0216c156a0d5a137b044 Mon Sep 17 00:00:00 2001 From: jonnyhsy Date: Thu, 28 Feb 2019 18:14:10 -0800 Subject: [PATCH 4/5] update README --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c43e566..8962103 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ ### Dev: - `$ git clone https://github.com/DOSNetwork/eth-contracts` - `$ npm install` -- `$ npm -g install truffle@4.1.14` +- `$ npm -g install truffle` - `$ npm install -g ganache-cli` or installing its [graphic interface](https://truffleframework.com/ganache) +- Required truffle/solcjs version: >= 0.5 ### Compile: - `$ truffle compile` From 88f0df969615ebd783985578bdd82fd79d0fd94d Mon Sep 17 00:00:00 2001 From: Tran Lan Ngoc <32518196+ngoctrantl@users.noreply.github.com> Date: Tue, 21 May 2019 20:54:12 +0700 Subject: [PATCH 5/5] Set theme jekyll-theme-minimal --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..2f7efbe --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-minimal \ No newline at end of file