Migrate migrations to v2
This commit is contained in:
parent
62431fee8e
commit
92b0efff5a
3
.gitignore
vendored
3
.gitignore
vendored
@ -86,7 +86,8 @@ packages/contract-wrappers/src/contract_wrappers/generated/
|
||||
packages/metacoin/src/contract_wrappers
|
||||
packages/fill-scenarios/src/generated_contract_wrappers/
|
||||
packages/order-watcher/src/generated_contract_wrappers/
|
||||
packages/migrations/src/contract_wrappers
|
||||
packages/migrations/src/v1/contract_wrappers
|
||||
packages/migrations/src/v2/contract_wrappers
|
||||
|
||||
# solc-bin in sol-compiler
|
||||
packages/sol-compiler/solc_bin/
|
||||
|
@ -104,7 +104,7 @@
|
||||
"@0xproject/order-utils": "^0.0.5",
|
||||
"@0xproject/order-watcher": "^0.0.2",
|
||||
"@0xproject/sol-compiler": "^0.5.0",
|
||||
"@0xproject/types": "^0.7.0",
|
||||
"@0xproject/types": "0.7.0",
|
||||
"@0xproject/typescript-typings": "^0.3.2",
|
||||
"@0xproject/utils": "^0.6.2",
|
||||
"@0xproject/web3-wrapper": "^0.6.4",
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { devConstants } from '@0xproject/dev-utils';
|
||||
import { runMigrationsAsync } from '@0xproject/migrations';
|
||||
import { runV1MigrationsAsync } from '@0xproject/migrations';
|
||||
import * as path from 'path';
|
||||
|
||||
import { constants } from './utils/constants';
|
||||
@ -15,5 +15,5 @@ before('migrate contracts', async function(): Promise<void> {
|
||||
from: devConstants.TESTRPC_FIRST_ADDRESS,
|
||||
};
|
||||
const artifactsDir = `../migrations/artifacts/1.0.0`;
|
||||
await runMigrationsAsync(provider, artifactsDir, txDefaults);
|
||||
await runV1MigrationsAsync(provider, artifactsDir, txDefaults);
|
||||
});
|
||||
|
@ -52,7 +52,7 @@
|
||||
"dependencies": {
|
||||
"@0xproject/assert": "^0.2.10",
|
||||
"@0xproject/json-schemas": "0.7.22",
|
||||
"@0xproject/types": "^0.7.0",
|
||||
"@0xproject/types": "0.7.0",
|
||||
"@0xproject/typescript-typings": "^0.3.2",
|
||||
"@0xproject/utils": "^0.6.2",
|
||||
"isomorphic-fetch": "^2.2.1",
|
||||
|
@ -81,7 +81,7 @@
|
||||
"@0xproject/fill-scenarios": "^0.0.2",
|
||||
"@0xproject/json-schemas": "0.7.22",
|
||||
"@0xproject/order-utils": "^0.0.5",
|
||||
"@0xproject/types": "^0.7.0",
|
||||
"@0xproject/types": "0.7.0",
|
||||
"@0xproject/typescript-typings": "^0.3.2",
|
||||
"@0xproject/utils": "^0.6.2",
|
||||
"@0xproject/web3-wrapper": "^0.6.4",
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { devConstants } from '@0xproject/dev-utils';
|
||||
import { runMigrationsAsync } from '@0xproject/migrations';
|
||||
import { runV1MigrationsAsync } from '@0xproject/migrations';
|
||||
import * as path from 'path';
|
||||
|
||||
import { constants } from './utils/constants';
|
||||
@ -15,5 +15,5 @@ before('migrate contracts', async function(): Promise<void> {
|
||||
from: devConstants.TESTRPC_FIRST_ADDRESS,
|
||||
};
|
||||
const artifactsDir = `../migrations/artifacts/1.0.0`;
|
||||
await runMigrationsAsync(provider, artifactsDir, txDefaults);
|
||||
await runV1MigrationsAsync(provider, artifactsDir, txDefaults);
|
||||
});
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Provider, TransactionReceiptWithDecodedLogs } from '@0xproject/types';
|
||||
import { Provider, SignedOrder, TransactionReceiptWithDecodedLogs } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import { Web3Wrapper } from '@0xproject/web3-wrapper';
|
||||
import * as _ from 'lodash';
|
||||
@ -10,7 +10,7 @@ import { constants } from './constants';
|
||||
import { formatters } from './formatters';
|
||||
import { LogDecoder } from './log_decoder';
|
||||
import { orderUtils } from './order_utils';
|
||||
import { AssetProxyId, OrderInfo, SignedOrder, SignedTransaction } from './types';
|
||||
import { AssetProxyId, OrderInfo, SignedTransaction } from './types';
|
||||
|
||||
export class ExchangeWrapper {
|
||||
private _exchange: ExchangeContract;
|
||||
|
@ -1,8 +1,9 @@
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import { SignedOrder } from '@0xproject/types';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import { orderUtils } from './order_utils';
|
||||
import { BatchCancelOrders, BatchFillOrders, MarketBuyOrders, MarketSellOrders, SignedOrder } from './types';
|
||||
import { BatchCancelOrders, BatchFillOrders, MarketBuyOrders, MarketSellOrders } from './types';
|
||||
|
||||
export const formatters = {
|
||||
createBatchFill(signedOrders: SignedOrder[], takerAssetFillAmounts: BigNumber[] = []): BatchFillOrders {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { BlockchainLifecycle } from '@0xproject/dev-utils';
|
||||
import { LogWithDecodedArgs } from '@0xproject/types';
|
||||
import { LogWithDecodedArgs, SignedOrder } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import * as chai from 'chai';
|
||||
import ethUtil = require('ethereumjs-util');
|
||||
@ -29,7 +29,6 @@ import {
|
||||
ERC20BalancesByOwner,
|
||||
ERC721TokenIdsByOwner,
|
||||
ExchangeStatus,
|
||||
SignedOrder,
|
||||
TransferAmountsByMatchOrders as TransferAmounts,
|
||||
} from '../utils/types';
|
||||
import { provider, web3Wrapper } from '../utils/web3_wrapper';
|
||||
|
@ -1,11 +1,12 @@
|
||||
import { generatePseudoRandomSalt } from '@0xproject/order-utils';
|
||||
import { SignedOrder, UnsignedOrder } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import { constants } from './constants';
|
||||
import { orderUtils } from './order_utils';
|
||||
import { signingUtils } from './signing_utils';
|
||||
import { SignatureType, SignedOrder, UnsignedOrder } from './types';
|
||||
import { SignatureType } from './types';
|
||||
|
||||
export class OrderFactory {
|
||||
private _defaultOrderParams: Partial<UnsignedOrder>;
|
||||
|
@ -1,10 +1,11 @@
|
||||
import { Order, SignedOrder, UnsignedOrder } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import { Web3Wrapper } from '@0xproject/web3-wrapper';
|
||||
import ethUtil = require('ethereumjs-util');
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import { crypto } from './crypto';
|
||||
import { CancelOrder, MatchOrder, OrderStruct, SignatureType, SignedOrder, UnsignedOrder } from './types';
|
||||
import { CancelOrder, MatchOrder, SignatureType } from './types';
|
||||
|
||||
export const orderUtils = {
|
||||
createFill: (signedOrder: SignedOrder, takerAssetFillAmount?: BigNumber) => {
|
||||
@ -22,7 +23,7 @@ export const orderUtils = {
|
||||
};
|
||||
return cancel;
|
||||
},
|
||||
getOrderStruct(signedOrder: SignedOrder): OrderStruct {
|
||||
getOrderStruct(signedOrder: SignedOrder): Order {
|
||||
const orderStruct = {
|
||||
senderAddress: signedOrder.senderAddress,
|
||||
makerAddress: signedOrder.makerAddress,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { AbiDefinition, ContractAbi } from '@0xproject/types';
|
||||
import { AbiDefinition, ContractAbi, Order } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
|
||||
export interface ERC20BalancesByOwner {
|
||||
@ -18,25 +18,25 @@ export interface SubmissionContractEventArgs {
|
||||
}
|
||||
|
||||
export interface BatchFillOrders {
|
||||
orders: OrderStruct[];
|
||||
orders: Order[];
|
||||
signatures: string[];
|
||||
takerAssetFillAmounts: BigNumber[];
|
||||
}
|
||||
|
||||
export interface MarketSellOrders {
|
||||
orders: OrderStruct[];
|
||||
orders: Order[];
|
||||
signatures: string[];
|
||||
takerAssetFillAmount: BigNumber;
|
||||
}
|
||||
|
||||
export interface MarketBuyOrders {
|
||||
orders: OrderStruct[];
|
||||
orders: Order[];
|
||||
signatures: string[];
|
||||
makerAssetFillAmount: BigNumber;
|
||||
}
|
||||
|
||||
export interface BatchCancelOrders {
|
||||
orders: OrderStruct[];
|
||||
orders: Order[];
|
||||
}
|
||||
|
||||
export interface CancelOrdersBefore {
|
||||
@ -113,29 +113,6 @@ export enum ContractName {
|
||||
Authorizable = 'Authorizable',
|
||||
}
|
||||
|
||||
export interface SignedOrder extends UnsignedOrder {
|
||||
signature: string;
|
||||
}
|
||||
|
||||
export interface OrderStruct {
|
||||
senderAddress: string;
|
||||
makerAddress: string;
|
||||
takerAddress: string;
|
||||
feeRecipientAddress: string;
|
||||
makerAssetAmount: BigNumber;
|
||||
takerAssetAmount: BigNumber;
|
||||
makerFee: BigNumber;
|
||||
takerFee: BigNumber;
|
||||
expirationTimeSeconds: BigNumber;
|
||||
salt: BigNumber;
|
||||
makerAssetData: string;
|
||||
takerAssetData: string;
|
||||
}
|
||||
|
||||
export interface UnsignedOrder extends OrderStruct {
|
||||
exchangeAddress: string;
|
||||
}
|
||||
|
||||
export enum SignatureType {
|
||||
Illegal,
|
||||
Invalid,
|
||||
@ -199,13 +176,13 @@ export interface ProxyData {
|
||||
}
|
||||
|
||||
export interface CancelOrder {
|
||||
order: OrderStruct;
|
||||
order: Order;
|
||||
takerAssetCancelAmount: BigNumber;
|
||||
}
|
||||
|
||||
export interface MatchOrder {
|
||||
left: OrderStruct;
|
||||
right: OrderStruct;
|
||||
left: Order;
|
||||
right: Order;
|
||||
leftSignature: string;
|
||||
rightSignature: string;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { BlockchainLifecycle } from '@0xproject/dev-utils';
|
||||
import { LogWithDecodedArgs } from '@0xproject/types';
|
||||
import { LogWithDecodedArgs, SignedOrder } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import { Web3Wrapper } from '@0xproject/web3-wrapper';
|
||||
import * as chai from 'chai';
|
||||
@ -26,7 +26,7 @@ import { ERC721Wrapper } from '../../src/utils/erc721_wrapper';
|
||||
import { ExchangeWrapper } from '../../src/utils/exchange_wrapper';
|
||||
import { OrderFactory } from '../../src/utils/order_factory';
|
||||
import { orderUtils } from '../../src/utils/order_utils';
|
||||
import { AssetProxyId, ContractName, ERC20BalancesByOwner, ExchangeStatus, SignedOrder } from '../../src/utils/types';
|
||||
import { AssetProxyId, ContractName, ERC20BalancesByOwner, ExchangeStatus } from '../../src/utils/types';
|
||||
import { provider, txDefaults, web3Wrapper } from '../../src/utils/web3_wrapper';
|
||||
|
||||
chaiSetup.configure();
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { BlockchainLifecycle } from '@0xproject/dev-utils';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import { SignedOrder } from '@0xproject/types';
|
||||
import * as chai from 'chai';
|
||||
import ethUtil = require('ethereumjs-util');
|
||||
|
||||
@ -11,7 +12,6 @@ import { chaiSetup } from '../../src/utils/chai_setup';
|
||||
import { constants } from '../../src/utils/constants';
|
||||
import { OrderFactory } from '../../src/utils/order_factory';
|
||||
import { orderUtils } from '../../src/utils/order_utils';
|
||||
import { SignedOrder } from '../../src/utils/types';
|
||||
import { provider, txDefaults, web3Wrapper } from '../../src/utils/web3_wrapper';
|
||||
|
||||
chaiSetup.configure();
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { BlockchainLifecycle } from '@0xproject/dev-utils';
|
||||
import { LogWithDecodedArgs } from '@0xproject/types';
|
||||
import { LogWithDecodedArgs, SignedOrder } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import { Web3Wrapper } from '@0xproject/web3-wrapper';
|
||||
import * as chai from 'chai';
|
||||
@ -33,7 +33,6 @@ import {
|
||||
ERC721TokenIdsByOwner,
|
||||
ExchangeStatus,
|
||||
OrderInfo,
|
||||
SignedOrder,
|
||||
} from '../../src/utils/types';
|
||||
import { provider, txDefaults, web3Wrapper } from '../../src/utils/web3_wrapper';
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { BlockchainLifecycle } from '@0xproject/dev-utils';
|
||||
import { SignedOrder } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import * as chai from 'chai';
|
||||
import ethUtil = require('ethereumjs-util');
|
||||
@ -11,7 +12,6 @@ import { chaiSetup } from '../../src/utils/chai_setup';
|
||||
import { constants } from '../../src/utils/constants';
|
||||
import { OrderFactory } from '../../src/utils/order_factory';
|
||||
import { orderUtils } from '../../src/utils/order_utils';
|
||||
import { SignedOrder } from '../../src/utils/types';
|
||||
import { provider, txDefaults, web3Wrapper } from '../../src/utils/web3_wrapper';
|
||||
|
||||
chaiSetup.configure();
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { BlockchainLifecycle } from '@0xproject/dev-utils';
|
||||
import { SignedOrder, Order } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import * as chai from 'chai';
|
||||
import * as ethUtil from 'ethereumjs-util';
|
||||
@ -20,9 +21,7 @@ import {
|
||||
AssetProxyId,
|
||||
ERC20BalancesByOwner,
|
||||
ExchangeStatus,
|
||||
OrderStruct,
|
||||
SignatureType,
|
||||
SignedOrder,
|
||||
SignedTransaction,
|
||||
} from '../../src/utils/types';
|
||||
import { provider, txDefaults, web3Wrapper } from '../../src/utils/web3_wrapper';
|
||||
@ -47,7 +46,7 @@ describe('Exchange transactions', () => {
|
||||
let erc20Balances: ERC20BalancesByOwner;
|
||||
let signedOrder: SignedOrder;
|
||||
let signedTx: SignedTransaction;
|
||||
let order: OrderStruct;
|
||||
let order: Order;
|
||||
let orderFactory: OrderFactory;
|
||||
let makerTransactionFactory: TransactionFactory;
|
||||
let takerTransactionFactory: TransactionFactory;
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { BlockchainLifecycle, devConstants, web3Factory } from '@0xproject/dev-utils';
|
||||
import { SignedOrder } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import { Web3Wrapper } from '@0xproject/web3-wrapper';
|
||||
import * as chai from 'chai';
|
||||
@ -20,7 +21,7 @@ import { ERC20Wrapper } from '../../src/utils/erc20_wrapper';
|
||||
import { ERC721Wrapper } from '../../src/utils/erc721_wrapper';
|
||||
import { ExchangeWrapper } from '../../src/utils/exchange_wrapper';
|
||||
import { OrderFactory } from '../../src/utils/order_factory';
|
||||
import { AssetProxyId, ERC20BalancesByOwner, SignedOrder } from '../../src/utils/types';
|
||||
import { AssetProxyId, ERC20BalancesByOwner } from '../../src/utils/types';
|
||||
import { provider, txDefaults, web3Wrapper } from '../../src/utils/web3_wrapper';
|
||||
|
||||
chaiSetup.configure();
|
||||
|
@ -38,7 +38,7 @@
|
||||
"dependencies": {
|
||||
"@0xproject/base-contract": "^0.3.2",
|
||||
"@0xproject/order-utils": "^0.0.5",
|
||||
"@0xproject/types": "^0.7.0",
|
||||
"@0xproject/types": "0.7.0",
|
||||
"@0xproject/typescript-typings": "^0.3.2",
|
||||
"@0xproject/utils": "^0.6.2",
|
||||
"@0xproject/web3-wrapper": "^0.6.4",
|
||||
|
@ -10,18 +10,28 @@
|
||||
"scripts": {
|
||||
"watch": "tsc -w",
|
||||
"prebuild": "run-s clean copy_artifacts generate_contract_wrappers",
|
||||
"copy_artifacts": "copyfiles 'artifacts/1.0.0/**/*' ./lib",
|
||||
"copy_artifacts": "copyfiles 'artifacts/**/*' ./lib",
|
||||
"build": "tsc",
|
||||
"clean": "shx rm -rf lib src/contract_wrappers",
|
||||
"lint": "tslint --project .",
|
||||
"migrate": "run-s build compile script:migrate",
|
||||
"script:migrate": "node ./lib/migrate.js",
|
||||
"generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers --backend ethers && prettier --write 'src/contract_wrappers/**.ts'",
|
||||
"migrate:v1": "run-s build compile script:migrate:v1",
|
||||
"migrate:v2": "run-s build compile script:migrate:v2",
|
||||
"script:migrate:v1": "node ./lib/migrate.js --contracts-version 1.0.0",
|
||||
"script:migrate:v2": "node ./lib/migrate.js --contracts-version 2.0.0",
|
||||
"generate_contract_wrappers": "run-p generate_contract_wrappers:*",
|
||||
"generate_contract_wrappers:v1":
|
||||
"abi-gen --abis ${npm_package_config_abis_v1} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/v1/contract_wrappers --backend ethers && prettier --write 'src/v1/contract_wrappers/**.ts'",
|
||||
"generate_contract_wrappers:v2":
|
||||
"abi-gen --abis ${npm_package_config_abis_v2} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/v2/contract_wrappers --backend ethers && prettier --write 'src/v2/contract_wrappers/**.ts'",
|
||||
"compile": "sol-compiler"
|
||||
},
|
||||
"config": {
|
||||
"abis":
|
||||
"artifacts/1.0.0/@(DummyERC20Token|TokenTransferProxy_v1|Exchange_v1|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|WETH9).json"
|
||||
"abis": {
|
||||
"v1":
|
||||
"artifacts/1.0.0/@(DummyERC20Token|TokenTransferProxy_v1|Exchange_v1|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|WETH9).json",
|
||||
"v2":
|
||||
"artifacts/2.0.0/@(DummyERC20Token|DummyERC721Token|ERC20Proxy|ERC721Proxy|Exchange|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|ZRXToken|WETH9).json"
|
||||
}
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
@ -29,6 +39,8 @@
|
||||
"@0xproject/dev-utils": "^0.4.2",
|
||||
"@0xproject/tslint-config": "^0.4.18",
|
||||
"@0xproject/types": "^0.7.0",
|
||||
"@types/yargs": "^10.0.0",
|
||||
"yargs": "^10.0.3",
|
||||
"make-promises-safe": "^1.1.0",
|
||||
"npm-run-all": "^4.1.2",
|
||||
"shx": "^0.2.2",
|
||||
|
@ -1 +1,2 @@
|
||||
export { runMigrationsAsync } from './migration';
|
||||
export { runV1MigrationsAsync } from './v1/migration';
|
||||
export { runV2MigrationsAsync } from './v2/migration';
|
||||
|
@ -3,8 +3,16 @@ import { devConstants, web3Factory } from '@0xproject/dev-utils';
|
||||
import { Provider } from '@0xproject/types';
|
||||
import { logUtils } from '@0xproject/utils';
|
||||
import * as path from 'path';
|
||||
import * as yargs from 'yargs';
|
||||
|
||||
import { runMigrationsAsync } from './migration';
|
||||
import { runV1MigrationsAsync } from './v1/migration';
|
||||
import { runV2MigrationsAsync } from './v2/migration';
|
||||
|
||||
enum ContractVersions {
|
||||
V1 = '1.0.0',
|
||||
V2 = '2.0.0',
|
||||
}
|
||||
const args = yargs.argv;
|
||||
|
||||
(async () => {
|
||||
const txDefaults = {
|
||||
@ -12,8 +20,13 @@ import { runMigrationsAsync } from './migration';
|
||||
};
|
||||
const providerConfigs = { shouldUseInProcessGanache: false };
|
||||
const provider: Provider = web3Factory.getRpcProvider(providerConfigs);
|
||||
const artifactsDir = 'artifacts/1.0.0';
|
||||
await runMigrationsAsync(provider, artifactsDir, txDefaults);
|
||||
const contractsVersion = args.contractsVersion;
|
||||
const artifactsDir = `artifacts/${contractsVersion}`;
|
||||
if (contractsVersion === ContractVersions.V1) {
|
||||
await runV1MigrationsAsync(provider, artifactsDir, txDefaults);
|
||||
} else {
|
||||
await runV2MigrationsAsync(provider, artifactsDir, txDefaults);
|
||||
}
|
||||
process.exit(0);
|
||||
})().catch(err => {
|
||||
logUtils.log(err);
|
||||
|
@ -1,16 +1,6 @@
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
|
||||
export interface MultiSigConfig {
|
||||
owners: string[];
|
||||
confirmationsRequired: number;
|
||||
secondsRequired: number;
|
||||
}
|
||||
|
||||
export interface MultiSigConfigByNetwork {
|
||||
[networkName: string]: MultiSigConfig;
|
||||
}
|
||||
|
||||
export interface Token {
|
||||
export interface ERC20Token {
|
||||
address?: string;
|
||||
name: string;
|
||||
symbol: string;
|
||||
@ -19,9 +9,9 @@ export interface Token {
|
||||
swarmHash: string;
|
||||
}
|
||||
|
||||
export interface TokenInfoByNetwork {
|
||||
development: Token[];
|
||||
live: Token[];
|
||||
export interface ERC721Token {
|
||||
name: string;
|
||||
symbol: string;
|
||||
}
|
||||
|
||||
export enum ContractName {
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { BigNumber, NULL_BYTES } from '@0xproject/utils';
|
||||
|
||||
import { Token } from '../types';
|
||||
import { ERC20Token, ERC721Token } from '../types';
|
||||
|
||||
export const tokenInfo: Token[] = [
|
||||
export const erc20TokenInfo: ERC20Token[] = [
|
||||
{
|
||||
name: 'Augur Reputation Token',
|
||||
symbol: 'REP',
|
||||
@ -39,3 +39,10 @@ export const tokenInfo: Token[] = [
|
||||
swarmHash: NULL_BYTES,
|
||||
},
|
||||
];
|
||||
|
||||
export const erc721TokenInfo: ERC721Token[] = [
|
||||
{
|
||||
name: 'CryptoKitties',
|
||||
symbol: 'CK',
|
||||
},
|
||||
];
|
||||
|
@ -1,13 +1,13 @@
|
||||
import { ContractArtifact } from '@0xproject/sol-compiler';
|
||||
|
||||
import * as DummyERC20Token from '../artifacts/1.0.0/DummyERC20Token.json';
|
||||
import * as Exchange from '../artifacts/1.0.0/Exchange_v1.json';
|
||||
import * as MultiSigWalletWithTimeLock from '../artifacts/1.0.0/MultiSigWalletWithTimeLock.json';
|
||||
import * as MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress from '../artifacts/1.0.0/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json';
|
||||
import * as TokenRegistry from '../artifacts/1.0.0/TokenRegistry.json';
|
||||
import * as TokenTransferProxy from '../artifacts/1.0.0/TokenTransferProxy_v1.json';
|
||||
import * as EtherToken from '../artifacts/1.0.0/WETH9.json';
|
||||
import * as ZRX from '../artifacts/1.0.0/ZRXToken.json';
|
||||
import * as DummyERC20Token from '../../artifacts/1.0.0/DummyERC20Token.json';
|
||||
import * as Exchange from '../../artifacts/1.0.0/Exchange_v1.json';
|
||||
import * as MultiSigWalletWithTimeLock from '../../artifacts/1.0.0/MultiSigWalletWithTimeLock.json';
|
||||
import * as MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress from '../../artifacts/1.0.0/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json';
|
||||
import * as TokenRegistry from '../../artifacts/1.0.0/TokenRegistry.json';
|
||||
import * as TokenTransferProxy from '../../artifacts/1.0.0/TokenTransferProxy_v1.json';
|
||||
import * as EtherToken from '../../artifacts/1.0.0/WETH9.json';
|
||||
import * as ZRX from '../../artifacts/1.0.0/ZRXToken.json';
|
||||
|
||||
export const artifacts = {
|
||||
ZRX: (ZRX as any) as ContractArtifact,
|
@ -3,7 +3,10 @@ import { BigNumber, NULL_BYTES } from '@0xproject/utils';
|
||||
import { Web3Wrapper } from '@0xproject/web3-wrapper';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import { ArtifactWriter } from './artifact_writer';
|
||||
import { ArtifactWriter } from '../artifact_writer';
|
||||
import { ContractName } from '../types';
|
||||
import { erc20TokenInfo } from '../utils/token_info';
|
||||
|
||||
import { artifacts } from './artifacts';
|
||||
import { DummyERC20TokenContract } from './contract_wrappers/dummy_e_r_c20_token';
|
||||
import { Exchange_v1Contract } from './contract_wrappers/exchange_v1';
|
||||
@ -12,18 +15,16 @@ import { TokenRegistryContract } from './contract_wrappers/token_registry';
|
||||
import { TokenTransferProxy_v1Contract } from './contract_wrappers/tokentransferproxy_v1';
|
||||
import { WETH9Contract } from './contract_wrappers/weth9';
|
||||
import { ZRXTokenContract } from './contract_wrappers/zrx_token';
|
||||
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.
|
||||
* Custom migrations should be defined in this function. This will be called with the CLI 'migrate:v1' 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 provider Web3 provider instance.
|
||||
* @param artifactsDir The directory with compiler artifact files.
|
||||
* @param txDefaults Default transaction values to use when deploying contracts.
|
||||
*/
|
||||
export const runMigrationsAsync = async (provider: Provider, artifactsDir: string, txDefaults: Partial<TxData>) => {
|
||||
export const runV1MigrationsAsync = async (provider: Provider, artifactsDir: string, txDefaults: Partial<TxData>) => {
|
||||
const web3Wrapper = new Web3Wrapper(provider);
|
||||
const networkId = await web3Wrapper.getNetworkIdAsync();
|
||||
const artifactsWriter = new ArtifactWriter(artifactsDir, networkId);
|
||||
@ -73,11 +74,11 @@ export const runMigrationsAsync = async (provider: Provider, artifactsDir: strin
|
||||
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,
|
||||
erc20TokenInfo[0].name,
|
||||
erc20TokenInfo[0].symbol,
|
||||
erc20TokenInfo[0].decimals,
|
||||
erc20TokenInfo[0].ipfsHash,
|
||||
erc20TokenInfo[0].swarmHash,
|
||||
{ from: owner },
|
||||
);
|
||||
const decimals = 18;
|
||||
@ -105,7 +106,7 @@ export const runMigrationsAsync = async (provider: Provider, artifactsDir: strin
|
||||
gas: addTokenGasEstimate,
|
||||
},
|
||||
);
|
||||
for (const token of tokenInfo) {
|
||||
for (const token of erc20TokenInfo) {
|
||||
const totalSupply = new BigNumber(100000000000000000000);
|
||||
const dummyToken = await DummyERC20TokenContract.deployFrom0xArtifactAsync(
|
||||
artifacts.DummyERC20Token,
|
21
packages/migrations/src/v2/artifacts.ts
Normal file
21
packages/migrations/src/v2/artifacts.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { ContractArtifact } from '@0xproject/sol-compiler';
|
||||
|
||||
import * as DummyERC20Token from '../../artifacts/2.0.0/DummyERC20Token.json';
|
||||
import * as DummyERC721Token from '../../artifacts/2.0.0/DummyERC721Token.json';
|
||||
import * as ERC20Proxy from '../../artifacts/2.0.0/ERC20Proxy.json';
|
||||
import * as ERC721Proxy from '../../artifacts/2.0.0/ERC721Proxy.json';
|
||||
import * as Exchange from '../../artifacts/2.0.0/Exchange.json';
|
||||
import * as MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress from '../../artifacts/2.0.0/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json';
|
||||
import * as WETH9 from '../../artifacts/2.0.0/WETH9.json';
|
||||
import * as ZRX from '../../artifacts/2.0.0/ZRXToken.json';
|
||||
|
||||
export const artifacts = {
|
||||
ZRX: (ZRX as any) as ContractArtifact,
|
||||
DummyERC20Token: (DummyERC20Token as any) as ContractArtifact,
|
||||
DummyERC721Token: (DummyERC721Token as any) as ContractArtifact,
|
||||
MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress: (MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress as any) as ContractArtifact,
|
||||
Exchange: (Exchange as any) as ContractArtifact,
|
||||
WETH9: (WETH9 as any) as ContractArtifact,
|
||||
ERC20Proxy: (ERC20Proxy as any) as ContractArtifact,
|
||||
ERC721Proxy: (ERC721Proxy as any) as ContractArtifact,
|
||||
};
|
118
packages/migrations/src/v2/migration.ts
Normal file
118
packages/migrations/src/v2/migration.ts
Normal file
@ -0,0 +1,118 @@
|
||||
import { Provider, TxData } from '@0xproject/types';
|
||||
import { BigNumber, NULL_BYTES } from '@0xproject/utils';
|
||||
import { Web3Wrapper } from '@0xproject/web3-wrapper';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import { ArtifactWriter } from '../artifact_writer';
|
||||
import { ContractName } from '../types';
|
||||
import { erc20TokenInfo, erc721TokenInfo } from '../utils/token_info';
|
||||
|
||||
import { artifacts } from './artifacts';
|
||||
import { DummyERC20TokenContract } from './contract_wrappers/dummy_e_r_c20_token';
|
||||
import { DummyERC721TokenContract } from './contract_wrappers/dummy_e_r_c721_token';
|
||||
import { ERC20ProxyContract } from './contract_wrappers/e_r_c20_proxy';
|
||||
import { ERC721ProxyContract } from './contract_wrappers/e_r_c721_proxy';
|
||||
import { ExchangeContract } from './contract_wrappers/exchange';
|
||||
import { MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddressContract } from './contract_wrappers/multi_sig_wallet_with_time_lock_except_remove_authorized_address';
|
||||
import { WETH9Contract } from './contract_wrappers/weth9';
|
||||
import { ZRXTokenContract } from './contract_wrappers/zrx_token';
|
||||
|
||||
/**
|
||||
* Custom migrations should be defined in this function. This will be called with the CLI 'migrate:v2' 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 provider Web3 provider instance.
|
||||
* @param artifactsDir The directory with compiler artifact files.
|
||||
* @param txDefaults Default transaction values to use when deploying contracts.
|
||||
*/
|
||||
export const runV2MigrationsAsync = async (provider: Provider, artifactsDir: string, txDefaults: Partial<TxData>) => {
|
||||
const web3Wrapper = new Web3Wrapper(provider);
|
||||
const networkId = await web3Wrapper.getNetworkIdAsync();
|
||||
const artifactsWriter = new ArtifactWriter(artifactsDir, networkId);
|
||||
|
||||
// Proxies
|
||||
const erc20proxy = await ERC20ProxyContract.deployFrom0xArtifactAsync(artifacts.ERC20Proxy, provider, txDefaults);
|
||||
artifactsWriter.saveArtifact(erc20proxy);
|
||||
const erc721proxy = await ERC721ProxyContract.deployFrom0xArtifactAsync(
|
||||
artifacts.ERC721Proxy,
|
||||
provider,
|
||||
txDefaults,
|
||||
);
|
||||
artifactsWriter.saveArtifact(erc721proxy);
|
||||
|
||||
// ZRX
|
||||
const zrxToken = await ZRXTokenContract.deployFrom0xArtifactAsync(artifacts.ZRX, provider, txDefaults);
|
||||
artifactsWriter.saveArtifact(zrxToken);
|
||||
|
||||
// Ether token
|
||||
const etherToken = await WETH9Contract.deployFrom0xArtifactAsync(artifacts.WETH9, provider, txDefaults);
|
||||
artifactsWriter.saveArtifact(etherToken);
|
||||
|
||||
// Exchange
|
||||
const exchange = await ExchangeContract.deployFrom0xArtifactAsync(
|
||||
artifacts.Exchange,
|
||||
provider,
|
||||
txDefaults,
|
||||
zrxToken.address,
|
||||
);
|
||||
artifactsWriter.saveArtifact(exchange);
|
||||
|
||||
// Multisigs
|
||||
const accounts: string[] = await web3Wrapper.getAvailableAddressesAsync();
|
||||
const owners = [accounts[0], accounts[1]];
|
||||
const confirmationsRequired = new BigNumber(2);
|
||||
const secondsRequired = new BigNumber(0);
|
||||
const owner = accounts[0];
|
||||
|
||||
// TODO(leonid) use `AssetProxyOwner` after https://github.com/0xProject/0x-monorepo/pull/571 is merged
|
||||
// ERC20 Multisig
|
||||
const multiSigERC20 = await MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddressContract.deployFrom0xArtifactAsync(
|
||||
artifacts.MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress,
|
||||
provider,
|
||||
txDefaults,
|
||||
owners,
|
||||
confirmationsRequired,
|
||||
secondsRequired,
|
||||
erc20proxy.address,
|
||||
);
|
||||
artifactsWriter.saveArtifact(multiSigERC20);
|
||||
await erc20proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, { from: owner });
|
||||
await erc20proxy.transferOwnership.sendTransactionAsync(multiSigERC20.address, { from: owner });
|
||||
|
||||
// ERC721 Multisig
|
||||
const multiSigERC721 = await MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddressContract.deployFrom0xArtifactAsync(
|
||||
artifacts.MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress,
|
||||
provider,
|
||||
txDefaults,
|
||||
owners,
|
||||
confirmationsRequired,
|
||||
secondsRequired,
|
||||
erc721proxy.address,
|
||||
);
|
||||
artifactsWriter.saveArtifact(multiSigERC721);
|
||||
await erc721proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, { from: owner });
|
||||
await erc721proxy.transferOwnership.sendTransactionAsync(multiSigERC20.address, { from: owner });
|
||||
|
||||
// Dummy ERC20 tokens
|
||||
for (const token of erc20TokenInfo) {
|
||||
const totalSupply = new BigNumber(100000000000000000000);
|
||||
const dummyErc20Token = await DummyERC20TokenContract.deployFrom0xArtifactAsync(
|
||||
artifacts.DummyERC20Token,
|
||||
provider,
|
||||
txDefaults,
|
||||
token.name,
|
||||
token.symbol,
|
||||
token.decimals,
|
||||
totalSupply,
|
||||
);
|
||||
}
|
||||
|
||||
// CK -> Token registry
|
||||
const cryptoKittieToken = await DummyERC721TokenContract.deployFrom0xArtifactAsync(
|
||||
artifacts.DummyERC721Token,
|
||||
provider,
|
||||
txDefaults,
|
||||
erc721TokenInfo[0].name,
|
||||
erc721TokenInfo[0].symbol,
|
||||
);
|
||||
};
|
@ -64,7 +64,7 @@
|
||||
"dependencies": {
|
||||
"@0xproject/assert": "^0.2.10",
|
||||
"@0xproject/json-schemas": "0.7.22",
|
||||
"@0xproject/types": "^0.7.0",
|
||||
"@0xproject/types": "0.7.0",
|
||||
"@0xproject/typescript-typings": "^0.3.2",
|
||||
"@0xproject/utils": "^0.6.2",
|
||||
"@0xproject/web3-wrapper": "^0.6.4",
|
||||
|
@ -82,7 +82,7 @@
|
||||
"@0xproject/fill-scenarios": "^0.0.2",
|
||||
"@0xproject/json-schemas": "0.7.22",
|
||||
"@0xproject/order-utils": "^0.0.5",
|
||||
"@0xproject/types": "^0.7.0",
|
||||
"@0xproject/types": "0.7.0",
|
||||
"@0xproject/typescript-typings": "^0.3.2",
|
||||
"@0xproject/utils": "^0.6.2",
|
||||
"@0xproject/web3-wrapper": "^0.6.4",
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { devConstants } from '@0xproject/dev-utils';
|
||||
import { runMigrationsAsync } from '@0xproject/migrations';
|
||||
import { runV1MigrationsAsync } from '@0xproject/migrations';
|
||||
import 'make-promises-safe';
|
||||
import * as path from 'path';
|
||||
|
||||
@ -16,5 +16,5 @@ before('migrate contracts', async function(): Promise<void> {
|
||||
from: devConstants.TESTRPC_FIRST_ADDRESS,
|
||||
};
|
||||
const artifactsDir = `../migrations/artifacts/1.0.0`;
|
||||
await runMigrationsAsync(provider, artifactsDir, txDefaults);
|
||||
await runV1MigrationsAsync(provider, artifactsDir, txDefaults);
|
||||
});
|
||||
|
@ -282,22 +282,26 @@ export interface RawLogEntry {
|
||||
}
|
||||
|
||||
export interface Order {
|
||||
maker: string;
|
||||
taker: string;
|
||||
senderAddress: string;
|
||||
makerAddress: string;
|
||||
takerAddress: string;
|
||||
makerFee: BigNumber;
|
||||
takerFee: BigNumber;
|
||||
makerTokenAmount: BigNumber;
|
||||
takerTokenAmount: BigNumber;
|
||||
makerTokenAddress: string;
|
||||
takerTokenAddress: string;
|
||||
makerAssetAmount: BigNumber;
|
||||
takerAssetAmount: BigNumber;
|
||||
makerAssetData: string;
|
||||
takerAssetData: string;
|
||||
salt: BigNumber;
|
||||
exchangeContractAddress: string;
|
||||
feeRecipient: string;
|
||||
expirationUnixTimestampSec: BigNumber;
|
||||
feeRecipientAddress: string;
|
||||
expirationTimeSeconds: BigNumber;
|
||||
}
|
||||
|
||||
export interface SignedOrder extends Order {
|
||||
ecSignature: ECSignature;
|
||||
export interface SignedOrder extends UnsignedOrder {
|
||||
signature: string;
|
||||
}
|
||||
|
||||
export interface UnsignedOrder extends Order {
|
||||
exchangeAddress: string;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -349,10 +353,6 @@ export interface Artifact {
|
||||
};
|
||||
}
|
||||
|
||||
export type OrderAddresses = [string, string, string, string, string];
|
||||
|
||||
export type OrderValues = [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber];
|
||||
|
||||
export type DoneCallback = (err?: Error) => void;
|
||||
|
||||
export interface OrderRelevantState {
|
||||
|
@ -15,6 +15,13 @@
|
||||
jsonschema "^1.2.0"
|
||||
lodash.values "^4.3.0"
|
||||
|
||||
"@0xproject/types@0.6.3":
|
||||
version "0.6.3"
|
||||
resolved "https://registry.yarnpkg.com/@0xproject/types/-/types-0.6.3.tgz#0bc066967aad4151011b6e478bb707b1afb8504b"
|
||||
dependencies:
|
||||
"@types/node" "^8.0.53"
|
||||
bignumber.js "~4.1.0"
|
||||
|
||||
"@0xproject/types@^0.5.0":
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@0xproject/types/-/types-0.5.0.tgz#ba3cfbc11a8c6344b57c9680aa7df2ea84b9bf05"
|
||||
|
Loading…
x
Reference in New Issue
Block a user