aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/contracts')
-rw-r--r--packages/contracts/README.md11
-rw-r--r--packages/contracts/migrations/config/multisig_sample.ts10
-rw-r--r--packages/contracts/migrations/config/token_info.ts40
-rw-r--r--packages/contracts/migrations/index.ts20
-rw-r--r--packages/contracts/migrations/migrate.ts90
-rw-r--r--packages/contracts/migrations/types.ts23
-rw-r--r--packages/contracts/package.json7
-rw-r--r--packages/contracts/test/multi_sig_with_time_lock.ts4
-rw-r--r--packages/contracts/test/utils/deployer.ts2
-rw-r--r--packages/contracts/test/utils/web3_wrapper.ts7
10 files changed, 10 insertions, 204 deletions
diff --git a/packages/contracts/README.md b/packages/contracts/README.md
index 286ef019c..16e253549 100644
--- a/packages/contracts/README.md
+++ b/packages/contracts/README.md
@@ -72,17 +72,6 @@ yarn lint
### Run Tests
-Before running the tests, you will need to spin up a [TestRPC](https://www.npmjs.com/package/ethereumjs-testrpc) instance.
-
-In a separate terminal, start TestRPC (a convenience command is provided as part of the [0x.js monorepo](https://github.com/0xProject/0x-monorepo))
-
-```bash
-cd ../..
-yarn testrpc
-```
-
-Then in your main terminal run
-
```bash
yarn test
```
diff --git a/packages/contracts/migrations/config/multisig_sample.ts b/packages/contracts/migrations/config/multisig_sample.ts
deleted file mode 100644
index bc2502fca..000000000
--- a/packages/contracts/migrations/config/multisig_sample.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { MultiSigConfigByNetwork } from '../types';
-
-// Make a copy of this file named `multisig.js` and input custom params as needed
-export const multiSig: MultiSigConfigByNetwork = {
- kovan: {
- owners: [],
- confirmationsRequired: 0,
- secondsRequired: 0,
- },
-};
diff --git a/packages/contracts/migrations/config/token_info.ts b/packages/contracts/migrations/config/token_info.ts
deleted file mode 100644
index 5fd3db144..000000000
--- a/packages/contracts/migrations/config/token_info.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { constants } from '../../util/constants';
-import { Token } from '../types';
-
-export const tokenInfo: Token[] = [
- {
- name: 'Augur Reputation Token',
- symbol: 'REP',
- decimals: 18,
- ipfsHash: constants.NULL_BYTES,
- swarmHash: constants.NULL_BYTES,
- },
- {
- name: 'Digix DAO Token',
- symbol: 'DGD',
- decimals: 18,
- ipfsHash: constants.NULL_BYTES,
- swarmHash: constants.NULL_BYTES,
- },
- {
- name: 'Golem Network Token',
- symbol: 'GNT',
- decimals: 18,
- ipfsHash: constants.NULL_BYTES,
- swarmHash: constants.NULL_BYTES,
- },
- {
- name: 'MakerDAO',
- symbol: 'MKR',
- decimals: 18,
- ipfsHash: constants.NULL_BYTES,
- swarmHash: constants.NULL_BYTES,
- },
- {
- name: 'Melon Token',
- symbol: 'MLN',
- decimals: 18,
- ipfsHash: constants.NULL_BYTES,
- swarmHash: constants.NULL_BYTES,
- },
-];
diff --git a/packages/contracts/migrations/index.ts b/packages/contracts/migrations/index.ts
deleted file mode 100644
index 47ae7044d..000000000
--- a/packages/contracts/migrations/index.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Deployer } from '@0xproject/deployer';
-import { devConstants } from '@0xproject/dev-utils';
-import * as path from 'path';
-
-import { constants } from '../util/constants';
-
-import { runMigrationsAsync } from './migrate';
-
-const deployerOpts = {
- artifactsDir: path.resolve('src', 'artifacts'),
- jsonrpcUrl: devConstants.RPC_URL,
- networkId: constants.TESTRPC_NETWORK_ID,
- defaults: {
- gas: devConstants.GAS_ESTIMATE,
- },
-};
-
-export const deployer = new Deployer(deployerOpts);
-
-runMigrationsAsync(deployer).catch(console.log);
diff --git a/packages/contracts/migrations/migrate.ts b/packages/contracts/migrations/migrate.ts
deleted file mode 100644
index cff8af0ab..000000000
--- a/packages/contracts/migrations/migrate.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import { Deployer } from '@0xproject/deployer';
-import { BigNumber } from '@0xproject/utils';
-import { Web3Wrapper } from '@0xproject/web3-wrapper';
-import * as _ from 'lodash';
-
-import { constants } from '../util/constants';
-import { ContractName } from '../util/types';
-
-import { tokenInfo } from './config/token_info';
-
-/**
- * Custom migrations should be defined in this function. This will be called with the CLI 'migrate' command.
- * Migrations could be written to run in parallel, but if you want contract addresses to be created deterministically,
- * the migration should be written to run synchronously.
- * @param deployer Deployer instance.
- */
-export const runMigrationsAsync = async (deployer: Deployer) => {
- const web3Wrapper: Web3Wrapper = deployer.web3Wrapper;
- const accounts: string[] = await web3Wrapper.getAvailableAddressesAsync();
-
- const tokenTransferProxy = await deployer.deployAndSaveAsync(ContractName.TokenTransferProxy);
- const zrxToken = await deployer.deployAndSaveAsync(ContractName.ZRXToken);
- const etherToken = await deployer.deployAndSaveAsync(ContractName.EtherToken);
- const tokenReg = await deployer.deployAndSaveAsync(ContractName.TokenRegistry);
-
- const exchangeArgs = [zrxToken.address, tokenTransferProxy.address];
- const owners = [accounts[0], accounts[1]];
- const confirmationsRequired = new BigNumber(2);
- const secondsRequired = new BigNumber(0);
- const multiSigArgs = [owners, confirmationsRequired, secondsRequired, tokenTransferProxy.address];
- const exchange = await deployer.deployAndSaveAsync(ContractName.Exchange, exchangeArgs);
- const multiSig = await deployer.deployAndSaveAsync(
- ContractName.MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress,
- multiSigArgs,
- );
-
- const owner = accounts[0];
- await tokenTransferProxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, { from: owner });
- await tokenTransferProxy.transferOwnership.sendTransactionAsync(multiSig.address, { from: owner });
- const addTokenGasEstimate = await tokenReg.addToken.estimateGasAsync(
- zrxToken.address,
- tokenInfo[0].name,
- tokenInfo[0].symbol,
- tokenInfo[0].decimals,
- tokenInfo[0].ipfsHash,
- tokenInfo[0].swarmHash,
- { from: owner },
- );
- await tokenReg.addToken.sendTransactionAsync(
- zrxToken.address,
- '0x Protocol Token',
- 'ZRX',
- 18,
- constants.NULL_BYTES,
- constants.NULL_BYTES,
- {
- from: owner,
- gas: addTokenGasEstimate,
- },
- );
- await tokenReg.addToken.sendTransactionAsync(
- etherToken.address,
- 'Ether Token',
- 'WETH',
- 18,
- constants.NULL_BYTES,
- constants.NULL_BYTES,
- {
- from: owner,
- gas: addTokenGasEstimate,
- },
- );
- for (const token of tokenInfo) {
- const totalSupply = new BigNumber(0);
- const args = [token.name, token.symbol, token.decimals, totalSupply];
- const dummyToken = await deployer.deployAsync(ContractName.DummyToken, args);
- await tokenReg.addToken.sendTransactionAsync(
- dummyToken.address,
- token.name,
- token.symbol,
- token.decimals,
- token.ipfsHash,
- token.swarmHash,
- {
- from: owner,
- gas: addTokenGasEstimate,
- },
- );
- }
-};
diff --git a/packages/contracts/migrations/types.ts b/packages/contracts/migrations/types.ts
deleted file mode 100644
index 58d1e5b4f..000000000
--- a/packages/contracts/migrations/types.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-export interface MultiSigConfig {
- owners: string[];
- confirmationsRequired: number;
- secondsRequired: number;
-}
-
-export interface MultiSigConfigByNetwork {
- [networkName: string]: MultiSigConfig;
-}
-
-export interface Token {
- address?: string;
- name: string;
- symbol: string;
- decimals: number;
- ipfsHash: string;
- swarmHash: string;
-}
-
-export interface TokenInfoByNetwork {
- development: Token[];
- live: Token[];
-}
diff --git a/packages/contracts/package.json b/packages/contracts/package.json
index 6b7776422..392ed8a8f 100644
--- a/packages/contracts/package.json
+++ b/packages/contracts/package.json
@@ -10,16 +10,15 @@
"scripts": {
"build:watch": "tsc -w",
"prebuild": "run-s clean compile copy_artifacts generate_contract_wrappers",
- "copy_artifacts": "copyfiles './src/artifacts/**/*' ./lib",
+ "copy_artifacts": "copyfiles -u 4 '../migrations/src/artifacts/**/*' ./lib/src/artifacts;",
"build": "tsc",
"test": "run-s build run_mocha",
"test:coverage": "SOLIDITY_COVERAGE=true run-s build run_mocha coverage:report:text coverage:report:lcov",
"run_mocha": "mocha 'lib/test/**/*.js' --timeout 100000 --bail --exit",
"compile:comment": "Yarn workspaces do not link binaries correctly so we need to reference them directly https://github.com/yarnpkg/yarn/issues/3846",
- "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contract-dirs src/contracts --artifacts-dir src/artifacts",
+ "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contract-dirs src/contracts --artifacts-dir ../migrations/src/artifacts",
"clean": "shx rm -rf ./lib",
"generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'",
- "migrate": "yarn build && yarn compile && node ./lib/migrations/index.js",
"lint": "tslint --project . 'migrations/**/*.ts' 'test/**/*.ts' 'util/**/*.ts' 'deploy/**/*.ts'",
"coverage:report:text": "istanbul report text",
"coverage:report:html": "istanbul report html && open coverage/index.html",
@@ -27,7 +26,7 @@
"test:circleci": "yarn test:coverage"
},
"config": {
- "abis": "src/artifacts/@(DummyToken|TokenTransferProxy|Exchange|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|Arbitrage|EtherDelta|AccountLevels).json",
+ "abis": "../migrations/src/artifacts/@(DummyToken|TokenTransferProxy|Exchange|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|Arbitrage|EtherDelta|AccountLevels).json",
"contracts": "Exchange,DummyToken,ZRXToken,Token,WETH9,TokenTransferProxy,MultiSigWallet,MultiSigWalletWithTimeLock,MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress,MaliciousToken,TokenRegistry,Arbitrage,EtherDelta,AccountLevels"
},
"repository": {
diff --git a/packages/contracts/test/multi_sig_with_time_lock.ts b/packages/contracts/test/multi_sig_with_time_lock.ts
index ea74d4c7f..b7604457f 100644
--- a/packages/contracts/test/multi_sig_with_time_lock.ts
+++ b/packages/contracts/test/multi_sig_with_time_lock.ts
@@ -46,7 +46,7 @@ describe('MultiSigWalletWithTimeLock', () => {
describe('changeTimeLock', () => {
describe('initially non-time-locked', async () => {
- before('deploy a walet', async () => {
+ before('deploy a wallet', async () => {
const multiSigInstance = await deployer.deployAsync(ContractName.MultiSigWalletWithTimeLock, [
owners,
SIGNATURES_REQUIRED,
@@ -143,7 +143,7 @@ describe('MultiSigWalletWithTimeLock', () => {
});
});
describe('initially time-locked', async () => {
- before('deploy a walet', async () => {
+ before('deploy a wallet', async () => {
const multiSigInstance = await deployer.deployAsync(ContractName.MultiSigWalletWithTimeLock, [
owners,
SIGNATURES_REQUIRED,
diff --git a/packages/contracts/test/utils/deployer.ts b/packages/contracts/test/utils/deployer.ts
index 45f79a2a4..2f0951475 100644
--- a/packages/contracts/test/utils/deployer.ts
+++ b/packages/contracts/test/utils/deployer.ts
@@ -8,7 +8,7 @@ import { web3 } from './web3_wrapper';
const deployerOpts = {
provider: web3.currentProvider,
- artifactsDir: path.resolve('src', 'artifacts'),
+ artifactsDir: path.resolve('lib', 'src', 'artifacts'),
networkId: constants.TESTRPC_NETWORK_ID,
defaults: {
gas: devConstants.GAS_ESTIMATE,
diff --git a/packages/contracts/test/utils/web3_wrapper.ts b/packages/contracts/test/utils/web3_wrapper.ts
index 1a711dad2..bc4e1cfd8 100644
--- a/packages/contracts/test/utils/web3_wrapper.ts
+++ b/packages/contracts/test/utils/web3_wrapper.ts
@@ -1,7 +1,8 @@
import { web3Factory } from '@0xproject/dev-utils';
+import { Provider } from '@0xproject/types';
import { Web3Wrapper } from '@0xproject/web3-wrapper';
-const web3ProviderConfig = { shouldUseInProcessGanache: true };
-export const web3 = web3Factory.create(web3ProviderConfig);
-export const provider = web3.currentProvider;
+const providerConfigs = { shouldUseInProcessGanache: true };
+export const web3 = web3Factory.create(providerConfigs);
+export const provider: Provider = web3.currentProvider;
export const web3Wrapper = new Web3Wrapper(provider);