From e23e17912f34bc37c8c6444a44e4a6b8fe1149c1 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Thu, 8 Aug 2019 01:38:28 -0400 Subject: [PATCH] [Protocol3] Update README.md and package.json (#371) --- packages/loopring_v3/.gitignore | 1 + packages/loopring_v3/README.md | 3 ++- .../loopring_v3/contracts/iface/IDowntimeCostCalculator.sol | 2 +- packages/loopring_v3/contracts/iface/IExchange.sol | 2 +- .../loopring_v3/contracts/impl/DowntimeCostCalculator.sol | 5 +++-- packages/loopring_v3/contracts/impl/Exchange.sol | 2 +- .../contracts/impl/libexchange/ExchangeAdmins.sol | 1 - ...stCalculator.sol => FixedPriceDowntimeCostCalculator.sol} | 3 +-- packages/loopring_v3/install | 2 +- packages/loopring_v3/migrations/4_deploy_protocol.js | 2 +- packages/loopring_v3/package.json | 2 +- packages/loopring_v3/util/Artifacts.ts | 2 +- 12 files changed, 14 insertions(+), 13 deletions(-) rename packages/loopring_v3/contracts/test/{DowntimeCostCalculator.sol => FixedPriceDowntimeCostCalculator.sol} (94%) diff --git a/packages/loopring_v3/.gitignore b/packages/loopring_v3/.gitignore index 2ac126acc..559ebe3f2 100644 --- a/packages/loopring_v3/.gitignore +++ b/packages/loopring_v3/.gitignore @@ -1,6 +1,7 @@ node_modules/ build/ transpiled/ +ABI/ ethsnarks/ keys/ blocks/ diff --git a/packages/loopring_v3/README.md b/packages/loopring_v3/README.md index 88587481b..4de2cae3f 100644 --- a/packages/loopring_v3/README.md +++ b/packages/loopring_v3/README.md @@ -60,7 +60,8 @@ make ``` ## Run Unit Tests - +- please clone the circuits repository `https://github.com/Loopring/protocol3-circuits.git` to the same directory as this project. +- please make sure you run `npm run build` for the first time. - run `npm run ganache` from project's root directory in terminal. - run `npm run test` from project's root directory in another terminal window. - run single test: `npm run test -- transpiled/test/xxx.js` diff --git a/packages/loopring_v3/contracts/iface/IDowntimeCostCalculator.sol b/packages/loopring_v3/contracts/iface/IDowntimeCostCalculator.sol index e1b7ca556..7da9d1214 100644 --- a/packages/loopring_v3/contracts/iface/IDowntimeCostCalculator.sol +++ b/packages/loopring_v3/contracts/iface/IDowntimeCostCalculator.sol @@ -36,6 +36,6 @@ contract IDowntimeCostCalculator uint durationToPurchaseMinutes ) external - view + // view - This function may choose to change internal state. returns (uint cost); } diff --git a/packages/loopring_v3/contracts/iface/IExchange.sol b/packages/loopring_v3/contracts/iface/IExchange.sol index df94f29ca..ec50a6a5d 100644 --- a/packages/loopring_v3/contracts/iface/IExchange.sol +++ b/packages/loopring_v3/contracts/iface/IExchange.sol @@ -1028,7 +1028,7 @@ contract IExchange uint durationMinutes ) external - view + // view - may modify internal state. returns (uint costLRC); /// @dev Gets the total amount of time in seconds the exchange has ever been in maintenance. diff --git a/packages/loopring_v3/contracts/impl/DowntimeCostCalculator.sol b/packages/loopring_v3/contracts/impl/DowntimeCostCalculator.sol index dea50afb4..47fa69ede 100644 --- a/packages/loopring_v3/contracts/impl/DowntimeCostCalculator.sol +++ b/packages/loopring_v3/contracts/impl/DowntimeCostCalculator.sol @@ -18,13 +18,14 @@ pragma solidity 0.5.10; import "../lib/Claimable.sol"; import "../lib/MathUint.sol"; +import "../lib/ReentrancyGuard.sol"; import "../iface/IDowntimeCostCalculator.sol"; /// @title The default IDowntimeCostCalculator implementation. /// @author Daniel Wang - -contract DowntimeCostCalculator is IDowntimeCostCalculator, Claimable +contract DowntimeCostCalculator is Claimable, ReentrancyGuard, IDowntimeCostCalculator { using MathUint for uint; @@ -69,7 +70,7 @@ contract DowntimeCostCalculator is IDowntimeCostCalculator, Claimable uint durationToPurchaseMinutes ) external - view + nonReentrant returns (uint) { uint newCost = getTotalCost( diff --git a/packages/loopring_v3/contracts/impl/Exchange.sol b/packages/loopring_v3/contracts/impl/Exchange.sol index 9f1b47cb9..e9c7b7030 100644 --- a/packages/loopring_v3/contracts/impl/Exchange.sol +++ b/packages/loopring_v3/contracts/impl/Exchange.sol @@ -799,7 +799,7 @@ contract Exchange is IExchange, Claimable, NoDefaultFunc, ReentrancyGuard uint durationMinutes ) external - view + nonReentrant returns (uint costLRC) { costLRC = state.getDowntimeCostLRC(durationMinutes); diff --git a/packages/loopring_v3/contracts/impl/libexchange/ExchangeAdmins.sol b/packages/loopring_v3/contracts/impl/libexchange/ExchangeAdmins.sol index 47d9058d2..797eaea42 100644 --- a/packages/loopring_v3/contracts/impl/libexchange/ExchangeAdmins.sol +++ b/packages/loopring_v3/contracts/impl/libexchange/ExchangeAdmins.sol @@ -203,7 +203,6 @@ library ExchangeAdmins uint durationMinutes ) public - view returns (uint) { require(!S.isInWithdrawalMode(), "INVALID_MODE"); diff --git a/packages/loopring_v3/contracts/test/DowntimeCostCalculator.sol b/packages/loopring_v3/contracts/test/FixedPriceDowntimeCostCalculator.sol similarity index 94% rename from packages/loopring_v3/contracts/test/DowntimeCostCalculator.sol rename to packages/loopring_v3/contracts/test/FixedPriceDowntimeCostCalculator.sol index 949611899..19c1e1f0b 100644 --- a/packages/loopring_v3/contracts/test/DowntimeCostCalculator.sol +++ b/packages/loopring_v3/contracts/test/FixedPriceDowntimeCostCalculator.sol @@ -23,7 +23,7 @@ import "../iface/IDowntimeCostCalculator.sol"; /// @title A fixed price IDowntimeCostCalculator implememntation. /// @author Daniel Wang - -contract DowntimeCostCalculator is IDowntimeCostCalculator +contract FixedPriceDowntimeCostCalculator is IDowntimeCostCalculator { using MathUint for uint; @@ -37,7 +37,6 @@ contract DowntimeCostCalculator is IDowntimeCostCalculator uint durationToPurchaseMinutes ) external - view returns (uint) { return durationToPurchaseMinutes.mul(PRICE_PER_MINUTE); diff --git a/packages/loopring_v3/install b/packages/loopring_v3/install index c15cae08d..c6e5633cf 100755 --- a/packages/loopring_v3/install +++ b/packages/loopring_v3/install @@ -1,6 +1,6 @@ #!/bin/bash -git submodule update --init --remote --merge --recursive +git submodule update --init --recursive case "$OSTYPE" in darwin*) diff --git a/packages/loopring_v3/migrations/4_deploy_protocol.js b/packages/loopring_v3/migrations/4_deploy_protocol.js index d1b732045..36826033b 100644 --- a/packages/loopring_v3/migrations/4_deploy_protocol.js +++ b/packages/loopring_v3/migrations/4_deploy_protocol.js @@ -3,7 +3,7 @@ var WETHToken = artifacts.require("./test/tokens/WETH.sol"); var ExchangeDeployer = artifacts.require("./impl/ExchangeDeployer"); var BlockVerifier = artifacts.require("./impl/BlockVerifier.sol"); var DowntimeCostCalculator = artifacts.require( - "./test/DowntimeCostCalculator.sol" + "./test/FixedPriceDowntimeCostCalculator.sol" ); var LoopringV3 = artifacts.require("./impl/LoopringV3.sol"); var ExchangeAccounts = artifacts.require("./impl/libexchange/ExchangeAccounts"); diff --git a/packages/loopring_v3/package.json b/packages/loopring_v3/package.json index 934e56c7f..45eb50e79 100644 --- a/packages/loopring_v3/package.json +++ b/packages/loopring_v3/package.json @@ -31,7 +31,7 @@ "docker": "docker-compose up --build --abort-on-container-exit; docker-compose logs -f test", "testdocker": "npm run transpile && truffle test --network docker", "compile": "truffle compile", - "build": "./install && yarn run compile", + "build": "rm -rf keys && ./install && make && npm run compile", "genabi": "node_modules/solc/solcjs --abi contracts/iface/*.sol -o ABI/version30/ --overwrite && node_modules/solc/solcjs --abi contracts/lib/*.sol --allow-paths contracts/iface/*.sol -o ABI/version30/ --overwrite", "migrate": "npm run transpile && truffle migrate", "deploy": "npm run migrate --network kovan", diff --git a/packages/loopring_v3/util/Artifacts.ts b/packages/loopring_v3/util/Artifacts.ts index f2fb67209..e3fc57efd 100644 --- a/packages/loopring_v3/util/Artifacts.ts +++ b/packages/loopring_v3/util/Artifacts.ts @@ -26,7 +26,7 @@ export class Artifacts { this.ExchangeDeployer = artifacts.require("impl/ExchangeDeployer"); this.BlockVerifier = artifacts.require("impl/BlockVerifier"); this.DowntimeCostCalculator = artifacts.require( - "test/DowntimeCostCalculator" + "test/FixedPriceDowntimeCostCalculator" ); this.DummyToken = artifacts.require("test/DummyToken"); this.LRCToken = artifacts.require("test/tokens/LRC");