Move migrations over from contracts to 0x.js
This commit is contained in:
		
							
								
								
									
										40
									
								
								packages/0x.js/test/migrations/config/token_info.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								packages/0x.js/test/migrations/config/token_info.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
import { constants } from '../../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,
 | 
			
		||||
    },
 | 
			
		||||
];
 | 
			
		||||
							
								
								
									
										90
									
								
								packages/0x.js/test/migrations/migrate.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								packages/0x.js/test/migrations/migrate.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
			
		||||
import { Deployer } from '@0xproject/deployer';
 | 
			
		||||
import { BigNumber } from '@0xproject/utils';
 | 
			
		||||
import { Web3Wrapper } from '@0xproject/web3-wrapper';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
 | 
			
		||||
import { constants } from '../utils/constants';
 | 
			
		||||
 | 
			
		||||
import { tokenInfo } from './config/token_info';
 | 
			
		||||
import { ContractName } from './types';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 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,
 | 
			
		||||
        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,
 | 
			
		||||
            },
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										38
									
								
								packages/0x.js/test/migrations/types.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								packages/0x.js/test/migrations/types.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
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[];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export enum ContractName {
 | 
			
		||||
    TokenTransferProxy = 'TokenTransferProxy',
 | 
			
		||||
    TokenRegistry = 'TokenRegistry',
 | 
			
		||||
    MultiSigWalletWithTimeLock = 'MultiSigWalletWithTimeLock',
 | 
			
		||||
    Exchange = 'Exchange',
 | 
			
		||||
    ZRXToken = 'ZRXToken',
 | 
			
		||||
    DummyToken = 'DummyToken',
 | 
			
		||||
    WETH9 = 'WETH9',
 | 
			
		||||
    MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress = 'MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress',
 | 
			
		||||
    MaliciousToken = 'MaliciousToken',
 | 
			
		||||
    AccountLevels = 'AccountLevels',
 | 
			
		||||
    EtherDelta = 'EtherDelta',
 | 
			
		||||
    Arbitrage = 'Arbitrage',
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user