aboutsummaryrefslogtreecommitdiffstats
path: root/packages/migrations/src/migration.ts
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-04-12 07:53:32 +0800
committerGitHub <noreply@github.com>2018-04-12 07:53:32 +0800
commitc47fb8f9a83d409c092dd7449054fa16cf0fa1c9 (patch)
tree3e5e1b9f8e4588f811b203806ffde6864f0e09de /packages/migrations/src/migration.ts
parente8d4f6d5322930cf8618abcb9fea7c773a87ecd7 (diff)
parent27b915789efcacbeb0bfbe943f917c590cfaff4a (diff)
downloaddexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar
dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar.gz
dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar.bz2
dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar.lz
dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar.xz
dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar.zst
dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.zip
Merge pull request #500 from 0xProject/removeMigrateStep
Run all tests against in-process Ganache
Diffstat (limited to 'packages/migrations/src/migration.ts')
-rw-r--r--packages/migrations/src/migration.ts88
1 files changed, 88 insertions, 0 deletions
diff --git a/packages/migrations/src/migration.ts b/packages/migrations/src/migration.ts
new file mode 100644
index 000000000..4827328fc
--- /dev/null
+++ b/packages/migrations/src/migration.ts
@@ -0,0 +1,88 @@
+import { Deployer } from '@0xproject/deployer';
+import { BigNumber, NULL_BYTES } from '@0xproject/utils';
+import { Web3Wrapper } from '@0xproject/web3-wrapper';
+import * as _ from 'lodash';
+
+import { ContractName } from './types';
+import { tokenInfo } from './utils/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.WETH9);
+ 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,
+ NULL_BYTES,
+ NULL_BYTES,
+ {
+ from: owner,
+ gas: addTokenGasEstimate,
+ },
+ );
+ await tokenReg.addToken.sendTransactionAsync(
+ etherToken.address,
+ 'Ether Token',
+ 'WETH',
+ 18,
+ NULL_BYTES,
+ 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,
+ },
+ );
+ }
+};