diff options
Diffstat (limited to 'packages/migrations/src')
-rw-r--r-- | packages/migrations/src/cli.ts | 38 | ||||
-rw-r--r-- | packages/migrations/src/index.ts | 10 | ||||
-rw-r--r-- | packages/migrations/src/migration.ts | 19 |
3 files changed, 61 insertions, 6 deletions
diff --git a/packages/migrations/src/cli.ts b/packages/migrations/src/cli.ts new file mode 100644 index 000000000..2404e7921 --- /dev/null +++ b/packages/migrations/src/cli.ts @@ -0,0 +1,38 @@ +#!/usr/bin/env node +import { RPCSubprovider, Web3ProviderEngine } from '@0x/subproviders'; +import { logUtils } from '@0x/utils'; +import * as yargs from 'yargs'; + +import { runMigrationsAsync } from './migration'; + +const args = yargs + .option('rpc-url', { + describe: 'Endpoint where backing Ethereum JSON RPC interface is available', + type: 'string', + demandOption: false, + default: 'http://localhost:8545', + }) + .option('from', { + describe: 'Ethereum address from which to deploy the contracts', + type: 'string', + demandOption: true, + }) + .example( + '$0 --rpc-url http://localhost:8545 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631', + 'Full usage example', + ).argv; + +(async () => { + const rpcSubprovider = new RPCSubprovider(args['rpc-url']); + const provider = new Web3ProviderEngine(); + provider.addProvider(rpcSubprovider); + provider.start(); + const txDefaults = { + from: args.from, + }; + await runMigrationsAsync(provider, txDefaults); + process.exit(0); +})().catch(err => { + logUtils.log(err); + process.exit(1); +}); diff --git a/packages/migrations/src/index.ts b/packages/migrations/src/index.ts index 8f629a24b..4f22c30b9 100644 --- a/packages/migrations/src/index.ts +++ b/packages/migrations/src/index.ts @@ -1 +1,11 @@ +export { + Provider, + TxData, + JSONRPCRequestPayload, + JSONRPCErrorCallback, + TxDataPayable, + JSONRPCResponsePayload, + JSONRPCResponseError, +} from 'ethereum-types'; +export { ContractAddresses } from '@0x/contract-addresses'; export { runMigrationsAsync, runMigrationsOnceAsync } from './migration'; diff --git a/packages/migrations/src/migration.ts b/packages/migrations/src/migration.ts index 86c76a54b..c684c4970 100644 --- a/packages/migrations/src/migration.ts +++ b/packages/migrations/src/migration.ts @@ -11,10 +11,9 @@ import { erc20TokenInfo, erc721TokenInfo } from './utils/token_info'; /** * Creates and deploys all the contracts that are required for the latest - * version of the 0x protocol. Custom migrations can be defined here. This will - * be called with the CLI 'migrate:v2' command. - * @param provider Web3 provider instance. - * @param txDefaults Default transaction values to use when deploying contracts. + * version of the 0x protocol. + * @param provider Web3 provider instance. Your provider instance should connect to the testnet you want to deploy to. + * @param txDefaults Default transaction values to use when deploying contracts (e.g., specify the desired contract creator with the `from` parameter). * @returns The addresses of the contracts that were deployed. */ export async function runMigrationsAsync(provider: Provider, txDefaults: Partial<TxData>): Promise<ContractAddresses> { @@ -48,6 +47,7 @@ export async function runMigrationsAsync(provider: Provider, txDefaults: Partial artifacts.Exchange, provider, txDefaults, + zrxAssetData, ); // Multisigs @@ -141,6 +141,13 @@ export async function runMigrationsAsync(provider: Provider, txDefaults: Partial zrxAssetData, ); + // Fund the Forwarder with ZRX + const zrxDecimals = await zrxToken.decimals.callAsync(); + const zrxForwarderAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(5000), zrxDecimals); + await web3Wrapper.awaitTransactionSuccessAsync( + await zrxToken.transfer.sendTransactionAsync(forwarder.address, zrxForwarderAmount, txDefaults), + ); + return { erc20Proxy: erc20Proxy.address, erc721Proxy: erc721Proxy.address, @@ -159,8 +166,8 @@ let _cachedContractAddresses: ContractAddresses; * Exactly like runMigrationsAsync but will only run the migrations the first * time it is called. Any subsequent calls will return the cached contract * addresses. - * @param provider Web3 provider instance. - * @param txDefaults Default transaction values to use when deploying contracts. + * @param provider Web3 provider instance. Your provider instance should connect to the testnet you want to deploy to. + * @param txDefaults Default transaction values to use when deploying contracts (e.g., specify the desired contract creator with the `from` parameter). * @returns The addresses of the contracts that were deployed. */ export async function runMigrationsOnceAsync( |