aboutsummaryrefslogtreecommitdiffstats
path: root/packages/deployer/src/migrations
diff options
context:
space:
mode:
authorLeonid Logvinov <logvinov.leon@gmail.com>2018-01-17 03:12:42 +0800
committerLeonid Logvinov <logvinov.leon@gmail.com>2018-01-18 21:18:51 +0800
commit4b9501318d8933f949fa0f87956e9cf5298d5726 (patch)
treec1aa7888406746bc3d8caad2eb03ffbd212cb6d4 /packages/deployer/src/migrations
parente5eec04f92b51319dc55c46c9be7b9d6fe5a1e48 (diff)
downloaddexon-sol-tools-4b9501318d8933f949fa0f87956e9cf5298d5726.tar
dexon-sol-tools-4b9501318d8933f949fa0f87956e9cf5298d5726.tar.gz
dexon-sol-tools-4b9501318d8933f949fa0f87956e9cf5298d5726.tar.bz2
dexon-sol-tools-4b9501318d8933f949fa0f87956e9cf5298d5726.tar.lz
dexon-sol-tools-4b9501318d8933f949fa0f87956e9cf5298d5726.tar.xz
dexon-sol-tools-4b9501318d8933f949fa0f87956e9cf5298d5726.tar.zst
dexon-sol-tools-4b9501318d8933f949fa0f87956e9cf5298d5726.zip
Move deployer to a separate package
Diffstat (limited to 'packages/deployer/src/migrations')
-rw-r--r--packages/deployer/src/migrations/config/multisig_sample.ts10
-rw-r--r--packages/deployer/src/migrations/config/token_info.ts40
-rw-r--r--packages/deployer/src/migrations/migrate.ts90
3 files changed, 140 insertions, 0 deletions
diff --git a/packages/deployer/src/migrations/config/multisig_sample.ts b/packages/deployer/src/migrations/config/multisig_sample.ts
new file mode 100644
index 000000000..dabeb7a4f
--- /dev/null
+++ b/packages/deployer/src/migrations/config/multisig_sample.ts
@@ -0,0 +1,10 @@
+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/deployer/src/migrations/config/token_info.ts b/packages/deployer/src/migrations/config/token_info.ts
new file mode 100644
index 000000000..ec0ed3c0e
--- /dev/null
+++ b/packages/deployer/src/migrations/config/token_info.ts
@@ -0,0 +1,40 @@
+import { constants } from '../../src/utils/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/deployer/src/migrations/migrate.ts b/packages/deployer/src/migrations/migrate.ts
new file mode 100644
index 000000000..3efd1f9a6
--- /dev/null
+++ b/packages/deployer/src/migrations/migrate.ts
@@ -0,0 +1,90 @@
+import { BigNumber } from '@0xproject/utils';
+import { Web3Wrapper } from '@0xproject/web3-wrapper';
+import * as _ from 'lodash';
+
+import { Deployer } from './../src/deployer';
+import { constants } from './../src/utils/constants';
+import { tokenInfo } from './config/token_info';
+
+export const migrator = {
+ /**
+ * Custom migrations should be defined in this function. This will be called with the CLI 'migrate' command.
+ * Some operations might be completed in parallel, but we don't do that on purpose.
+ * That way the addresses are deterministic.
+ * @param deployer Deployer instance.
+ */
+ async runMigrationsAsync(deployer: Deployer): Promise<void> {
+ const web3Wrapper: Web3Wrapper = deployer.web3Wrapper;
+ const accounts: string[] = await web3Wrapper.getAvailableAddressesAsync();
+
+ const tokenTransferProxy = await deployer.deployAndSaveAsync('TokenTransferProxy');
+ const zrxToken = await deployer.deployAndSaveAsync('ZRXToken');
+ const etherToken = await deployer.deployAndSaveAsync('WETH9');
+ const tokenReg = await deployer.deployAndSaveAsync('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('Exchange', exchangeArgs);
+ const multiSig = await deployer.deployAndSaveAsync(
+ '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('DummyToken', args);
+ await tokenReg.addToken.sendTransactionAsync(
+ dummyToken.address,
+ token.name,
+ token.symbol,
+ token.decimals,
+ token.ipfsHash,
+ token.swarmHash,
+ {
+ from: owner,
+ gas: addTokenGasEstimate,
+ },
+ );
+ }
+ },
+};