More small artifacts updates/changes
This commit is contained in:
@@ -358,7 +358,7 @@ describe('ExchangeWrapper', () => {
|
||||
describe('#getVersionAsync', () => {
|
||||
it('should return version the hash', async () => {
|
||||
const version = await contractWrappers.exchange.getVersionAsync();
|
||||
const VERSION = '2.0.1-alpha';
|
||||
const VERSION = '2.0.0';
|
||||
expect(version).to.be.equal(VERSION);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -25,9 +25,7 @@
|
||||
"config": {
|
||||
"abis": {
|
||||
"v1": "artifacts/1.0.0/@(DummyERC20Token|TokenTransferProxy_v1|Exchange_v1|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|WETH9).json",
|
||||
"v2Testnet": "artifacts/2.0.0-testnet/@(DummyERC721Token|DummyERC20Token|ERC20Token|ERC721Token|ERC20Proxy|ERC721Proxy|Exchange|Forwarder|AssetProxyOwner|IWallet|IValidator|OrderValidator|ZRXToken).json",
|
||||
"v2": "artifacts/2.0.0/@(DummyERC721Token|DummyERC20Token|ERC20Token|ERC721Token|ERC20Proxy|ERC721Proxy|Exchange|Forwarder|AssetProxyOwner|IWallet|IValidator|OrderValidator|ZRXToken).json",
|
||||
"development": "artifacts/development/@(DummyERC721Token|DummyERC20Token|ERC20Token|ERC721Token|ERC20Proxy|ERC721Proxy|Exchange|Forwarder|AssetProxyOwner|IWallet|IValidator|OrderValidator|ZRXToken).json"
|
||||
"v2": "artifacts/2.0.0/@(ERC20Token|DummyERC20Token|ERC721Token|DummyERC721Token|ERC20Proxy|ERC721Proxy|Exchange|Forwarder|AssetProxyOwner|ZRXToken|WETH9|IWallet|IValidator|OrderValidator).json"
|
||||
}
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
|
||||
10
packages/migrations/src/2.0.0/artifacts.ts
vendored
10
packages/migrations/src/2.0.0/artifacts.ts
vendored
@@ -1,17 +1,25 @@
|
||||
import { ContractArtifact } from 'ethereum-types';
|
||||
|
||||
import * as AssetProxyOwner from '../../artifacts/2.0.0/AssetProxyOwner.json';
|
||||
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 Forwarder from '../../artifacts/2.0.0/Forwarder.json';
|
||||
import * as OrderValidator from '../../artifacts/2.0.0/OrderValidator.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,
|
||||
AssetProxyOwner: (AssetProxyOwner 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,
|
||||
Exchange: (Exchange as any) as ContractArtifact,
|
||||
Forwarder: (Forwarder as any) as ContractArtifact,
|
||||
OrderValidator: (OrderValidator as any) as ContractArtifact,
|
||||
};
|
||||
|
||||
13
packages/migrations/src/2.0.0/constants.ts
vendored
13
packages/migrations/src/2.0.0/constants.ts
vendored
@@ -1,13 +0,0 @@
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
|
||||
export const constants = {
|
||||
ASSET_PROXY_OWNER_OWNERS: [
|
||||
'0x257619b7155d247e43c8b6d90c8c17278ae481f0',
|
||||
'0x5ee2a00f8f01d099451844af7f894f26a57fcbf2',
|
||||
'0x894d623e0e0e8ed12c4a73dada999e275684a37d',
|
||||
],
|
||||
ASSET_PROXY_OWNER_REQUIRED_CONFIRMATIONS: new BigNumber(2),
|
||||
ASSET_PROXY_OWNER_SECONDS_TIMELOCKED: new BigNumber(1209600),
|
||||
WETH_ADDRESS: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
||||
ZRX_ADDRESS: '0xe41d2489571d322189246dafa5ebde1f4699f498',
|
||||
};
|
||||
142
packages/migrations/src/2.0.0/migration.ts
vendored
142
packages/migrations/src/2.0.0/migration.ts
vendored
@@ -1,21 +1,25 @@
|
||||
import { assetDataUtils } from '@0xproject/order-utils';
|
||||
import { logUtils } from '@0xproject/utils';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import { Web3Wrapper } from '@0xproject/web3-wrapper';
|
||||
import { Provider, TxData } from 'ethereum-types';
|
||||
|
||||
import { ArtifactWriter } from '../utils/artifact_writer';
|
||||
import { erc20TokenInfo, erc721TokenInfo } from '../utils/token_info';
|
||||
|
||||
import { artifacts } from './artifacts';
|
||||
import { constants } from './constants';
|
||||
import { AssetProxyOwnerContract } from './contract_wrappers/asset_proxy_owner';
|
||||
import { DummyERC20TokenContract } from './contract_wrappers/dummy_erc20_token';
|
||||
import { DummyERC721TokenContract } from './contract_wrappers/dummy_erc721_token';
|
||||
import { ERC20ProxyContract } from './contract_wrappers/erc20_proxy';
|
||||
import { ERC721ProxyContract } from './contract_wrappers/erc721_proxy';
|
||||
import { ExchangeContract } from './contract_wrappers/exchange';
|
||||
import { ForwarderContract } from './contract_wrappers/forwarder';
|
||||
import { OrderValidatorContract } from './contract_wrappers/order_validator';
|
||||
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-mainnet' command.
|
||||
* 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.
|
||||
@@ -27,7 +31,7 @@ export const runV2MigrationsAsync = async (provider: Provider, artifactsDir: str
|
||||
const networkId = await web3Wrapper.getNetworkIdAsync();
|
||||
const artifactsWriter = new ArtifactWriter(artifactsDir, networkId);
|
||||
|
||||
// Deploy AssetProxies
|
||||
// Proxies
|
||||
const erc20proxy = await ERC20ProxyContract.deployFrom0xArtifactAsync(artifacts.ERC20Proxy, provider, txDefaults);
|
||||
artifactsWriter.saveArtifact(erc20proxy);
|
||||
const erc721proxy = await ERC721ProxyContract.deployFrom0xArtifactAsync(
|
||||
@@ -37,49 +41,104 @@ export const runV2MigrationsAsync = async (provider: Provider, artifactsDir: str
|
||||
);
|
||||
artifactsWriter.saveArtifact(erc721proxy);
|
||||
|
||||
// Deploy Exchange
|
||||
// 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 zrxAssetData = assetDataUtils.encodeERC20AssetData(zrxToken.address);
|
||||
const exchange = await ExchangeContract.deployFrom0xArtifactAsync(artifacts.Exchange, provider, txDefaults);
|
||||
artifactsWriter.saveArtifact(exchange);
|
||||
|
||||
let txHash;
|
||||
// Register AssetProxies in Exchange
|
||||
txHash = await exchange.registerAssetProxy.sendTransactionAsync(erc20proxy.address);
|
||||
logUtils.log(`transactionHash: ${txHash}`);
|
||||
logUtils.log('Registering ERC20Proxy');
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
||||
// 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];
|
||||
|
||||
txHash = await exchange.registerAssetProxy.sendTransactionAsync(erc721proxy.address);
|
||||
logUtils.log(`transactionHash: ${txHash}`);
|
||||
logUtils.log('Registering ERC721Proxy');
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
||||
|
||||
// Deploy AssetProxyOwner
|
||||
const assetProxies = [erc20proxy.address, erc721proxy.address];
|
||||
// AssetProxyOwner
|
||||
const assetProxyOwner = await AssetProxyOwnerContract.deployFrom0xArtifactAsync(
|
||||
artifacts.AssetProxyOwner,
|
||||
provider,
|
||||
txDefaults,
|
||||
constants.ASSET_PROXY_OWNER_OWNERS,
|
||||
assetProxies,
|
||||
constants.ASSET_PROXY_OWNER_REQUIRED_CONFIRMATIONS,
|
||||
constants.ASSET_PROXY_OWNER_SECONDS_TIMELOCKED,
|
||||
owners,
|
||||
[erc20proxy.address, erc721proxy.address],
|
||||
confirmationsRequired,
|
||||
secondsRequired,
|
||||
);
|
||||
artifactsWriter.saveArtifact(assetProxyOwner);
|
||||
|
||||
// Deploy Forwarder
|
||||
const zrxAssetData = assetDataUtils.encodeERC20AssetData(constants.ZRX_ADDRESS);
|
||||
const wethAssetData = assetDataUtils.encodeERC20AssetData(constants.WETH_ADDRESS);
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await erc20proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, {
|
||||
from: owner,
|
||||
}),
|
||||
);
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await erc20proxy.transferOwnership.sendTransactionAsync(assetProxyOwner.address, {
|
||||
from: owner,
|
||||
}),
|
||||
);
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await erc721proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, {
|
||||
from: owner,
|
||||
}),
|
||||
);
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await erc721proxy.transferOwnership.sendTransactionAsync(assetProxyOwner.address, {
|
||||
from: owner,
|
||||
}),
|
||||
);
|
||||
|
||||
// Register the Asset Proxies to the Exchange
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await exchange.registerAssetProxy.sendTransactionAsync(erc20proxy.address),
|
||||
);
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||
await exchange.registerAssetProxy.sendTransactionAsync(erc721proxy.address),
|
||||
);
|
||||
|
||||
// Dummy ERC20 tokens
|
||||
for (const token of erc20TokenInfo) {
|
||||
const totalSupply = new BigNumber(1000000000000000000000000000);
|
||||
// tslint:disable-next-line:no-unused-variable
|
||||
const dummyErc20Token = await DummyERC20TokenContract.deployFrom0xArtifactAsync(
|
||||
artifacts.DummyERC20Token,
|
||||
provider,
|
||||
txDefaults,
|
||||
token.name,
|
||||
token.symbol,
|
||||
token.decimals,
|
||||
totalSupply,
|
||||
);
|
||||
}
|
||||
|
||||
// ERC721
|
||||
// tslint:disable-next-line:no-unused-variable
|
||||
const cryptoKittieToken = await DummyERC721TokenContract.deployFrom0xArtifactAsync(
|
||||
artifacts.DummyERC721Token,
|
||||
provider,
|
||||
txDefaults,
|
||||
erc721TokenInfo[0].name,
|
||||
erc721TokenInfo[0].symbol,
|
||||
);
|
||||
|
||||
// Forwarder
|
||||
const forwarder = await ForwarderContract.deployFrom0xArtifactAsync(
|
||||
artifacts.Forwarder,
|
||||
provider,
|
||||
txDefaults,
|
||||
exchange.address,
|
||||
zrxAssetData,
|
||||
wethAssetData,
|
||||
assetDataUtils.encodeERC20AssetData(zrxToken.address),
|
||||
assetDataUtils.encodeERC20AssetData(etherToken.address),
|
||||
);
|
||||
artifactsWriter.saveArtifact(forwarder);
|
||||
|
||||
// Deploy OrderValidator
|
||||
// OrderValidator
|
||||
const orderValidator = await OrderValidatorContract.deployFrom0xArtifactAsync(
|
||||
artifacts.OrderValidator,
|
||||
provider,
|
||||
@@ -88,31 +147,4 @@ export const runV2MigrationsAsync = async (provider: Provider, artifactsDir: str
|
||||
zrxAssetData,
|
||||
);
|
||||
artifactsWriter.saveArtifact(orderValidator);
|
||||
|
||||
// Authorize Exchange contracts to call AssetProxies
|
||||
txHash = await erc20proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address);
|
||||
logUtils.log(`transactionHash: ${txHash}`);
|
||||
logUtils.log('Authorizing Exchange on ERC20Proxy');
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
||||
|
||||
txHash = await erc721proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address);
|
||||
logUtils.log(`transactionHash: ${txHash}`);
|
||||
logUtils.log('Authorizing Exchange on ERC721Proxy');
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
||||
|
||||
// Transfer ownership of AssetProxies and Exchange to AssetProxyOwner
|
||||
txHash = await erc20proxy.transferOwnership.sendTransactionAsync(assetProxyOwner.address);
|
||||
logUtils.log(`transactionHash: ${txHash}`);
|
||||
logUtils.log('Transferring ownership of ERC20Proxy');
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
||||
|
||||
txHash = await erc721proxy.transferOwnership.sendTransactionAsync(assetProxyOwner.address);
|
||||
logUtils.log(`transactionHash: ${txHash}`);
|
||||
logUtils.log('Transferring ownership of ERC721Proxy');
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
||||
|
||||
txHash = await exchange.transferOwnership.sendTransactionAsync(assetProxyOwner.address);
|
||||
logUtils.log(`transactionHash: ${txHash}`);
|
||||
logUtils.log('Transferring ownership of Exchange');
|
||||
await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user