diff options
author | Fabio Berger <me@fabioberger.com> | 2018-04-12 07:53:32 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-12 07:53:32 +0800 |
commit | c47fb8f9a83d409c092dd7449054fa16cf0fa1c9 (patch) | |
tree | 3e5e1b9f8e4588f811b203806ffde6864f0e09de /packages/migrations/src/migration.ts | |
parent | e8d4f6d5322930cf8618abcb9fea7c773a87ecd7 (diff) | |
parent | 27b915789efcacbeb0bfbe943f917c590cfaff4a (diff) | |
download | dexon-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.ts | 88 |
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, + }, + ); + } +}; |