Refactor networkId out of web3Wrapper
This commit is contained in:
parent
5401c69163
commit
b362e2c28e
@ -179,24 +179,31 @@ export class ZeroEx {
|
|||||||
const defaults = {
|
const defaults = {
|
||||||
gasPrice: config.gasPrice,
|
gasPrice: config.gasPrice,
|
||||||
};
|
};
|
||||||
this._web3Wrapper = new Web3Wrapper(provider, config.networkId, defaults);
|
this._web3Wrapper = new Web3Wrapper(provider, defaults);
|
||||||
this.proxy = new TokenTransferProxyWrapper(
|
this.proxy = new TokenTransferProxyWrapper(
|
||||||
this._web3Wrapper,
|
this._web3Wrapper,
|
||||||
|
config.networkId,
|
||||||
config.tokenTransferProxyContractAddress,
|
config.tokenTransferProxyContractAddress,
|
||||||
);
|
);
|
||||||
this.token = new TokenWrapper(
|
this.token = new TokenWrapper(
|
||||||
this._web3Wrapper,
|
this._web3Wrapper,
|
||||||
|
config.networkId,
|
||||||
this._abiDecoder,
|
this._abiDecoder,
|
||||||
this.proxy,
|
this.proxy,
|
||||||
);
|
);
|
||||||
this.exchange = new ExchangeWrapper(
|
this.exchange = new ExchangeWrapper(
|
||||||
this._web3Wrapper,
|
this._web3Wrapper,
|
||||||
|
config.networkId,
|
||||||
this._abiDecoder,
|
this._abiDecoder,
|
||||||
this.token,
|
this.token,
|
||||||
config.exchangeContractAddress,
|
config.exchangeContractAddress,
|
||||||
);
|
);
|
||||||
this.tokenRegistry = new TokenRegistryWrapper(this._web3Wrapper, config.tokenRegistryContractAddress);
|
this.tokenRegistry = new TokenRegistryWrapper(
|
||||||
this.etherToken = new EtherTokenWrapper(this._web3Wrapper, this.token, config.etherTokenContractAddress);
|
this._web3Wrapper, config.networkId, config.tokenRegistryContractAddress,
|
||||||
|
);
|
||||||
|
this.etherToken = new EtherTokenWrapper(
|
||||||
|
this._web3Wrapper, config.networkId, this.token, config.etherTokenContractAddress,
|
||||||
|
);
|
||||||
this.orderStateWatcher = new OrderStateWatcher(
|
this.orderStateWatcher = new OrderStateWatcher(
|
||||||
this._web3Wrapper, this._abiDecoder, this.token, this.exchange, config.orderWatcherConfig,
|
this._web3Wrapper, this._abiDecoder, this.token, this.exchange, config.orderWatcherConfig,
|
||||||
);
|
);
|
||||||
|
@ -32,6 +32,7 @@ const CONTRACT_NAME_TO_NOT_FOUND_ERROR: {[contractName: string]: ZeroExError} =
|
|||||||
|
|
||||||
export class ContractWrapper {
|
export class ContractWrapper {
|
||||||
protected _web3Wrapper: Web3Wrapper;
|
protected _web3Wrapper: Web3Wrapper;
|
||||||
|
private _networkId: number;
|
||||||
private _abiDecoder?: AbiDecoder;
|
private _abiDecoder?: AbiDecoder;
|
||||||
private _blockAndLogStreamer: BlockAndLogStreamer|undefined;
|
private _blockAndLogStreamer: BlockAndLogStreamer|undefined;
|
||||||
private _blockAndLogStreamInterval: NodeJS.Timer;
|
private _blockAndLogStreamInterval: NodeJS.Timer;
|
||||||
@ -39,8 +40,9 @@ export class ContractWrapper {
|
|||||||
private _filterCallbacks: {[filterToken: string]: EventCallback<ContractEventArgs>};
|
private _filterCallbacks: {[filterToken: string]: EventCallback<ContractEventArgs>};
|
||||||
private _onLogAddedSubscriptionToken: string|undefined;
|
private _onLogAddedSubscriptionToken: string|undefined;
|
||||||
private _onLogRemovedSubscriptionToken: string|undefined;
|
private _onLogRemovedSubscriptionToken: string|undefined;
|
||||||
constructor(web3Wrapper: Web3Wrapper, abiDecoder?: AbiDecoder) {
|
constructor(web3Wrapper: Web3Wrapper, networkId: number, abiDecoder?: AbiDecoder) {
|
||||||
this._web3Wrapper = web3Wrapper;
|
this._web3Wrapper = web3Wrapper;
|
||||||
|
this._networkId = networkId;
|
||||||
this._abiDecoder = abiDecoder;
|
this._abiDecoder = abiDecoder;
|
||||||
this._filters = {};
|
this._filters = {};
|
||||||
this._filterCallbacks = {};
|
this._filterCallbacks = {};
|
||||||
@ -104,11 +106,10 @@ export class ContractWrapper {
|
|||||||
): Promise<Web3.ContractInstance> {
|
): Promise<Web3.ContractInstance> {
|
||||||
let contractAddress: string;
|
let contractAddress: string;
|
||||||
if (_.isUndefined(addressIfExists)) {
|
if (_.isUndefined(addressIfExists)) {
|
||||||
const networkId = this._web3Wrapper.getNetworkId();
|
if (_.isUndefined(artifact.networks[this._networkId])) {
|
||||||
if (_.isUndefined(artifact.networks[networkId])) {
|
|
||||||
throw new Error(ZeroExError.ContractNotDeployedOnNetwork);
|
throw new Error(ZeroExError.ContractNotDeployedOnNetwork);
|
||||||
}
|
}
|
||||||
contractAddress = artifact.networks[networkId].address.toLowerCase();
|
contractAddress = artifact.networks[this._networkId].address.toLowerCase();
|
||||||
} else {
|
} else {
|
||||||
contractAddress = addressIfExists;
|
contractAddress = addressIfExists;
|
||||||
}
|
}
|
||||||
@ -123,8 +124,7 @@ export class ContractWrapper {
|
|||||||
}
|
}
|
||||||
protected _getContractAddress(artifact: Artifact, addressIfExists?: string): string {
|
protected _getContractAddress(artifact: Artifact, addressIfExists?: string): string {
|
||||||
if (_.isUndefined(addressIfExists)) {
|
if (_.isUndefined(addressIfExists)) {
|
||||||
const networkId = this._web3Wrapper.getNetworkId();
|
const contractAddress = artifact.networks[this._networkId].address;
|
||||||
const contractAddress = artifact.networks[networkId].address;
|
|
||||||
if (_.isUndefined(contractAddress)) {
|
if (_.isUndefined(contractAddress)) {
|
||||||
throw new Error(ZeroExError.ExchangeContractDoesNotExist);
|
throw new Error(ZeroExError.ExchangeContractDoesNotExist);
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,9 @@ export class EtherTokenWrapper extends ContractWrapper {
|
|||||||
private _etherTokenContractIfExists?: EtherTokenContract;
|
private _etherTokenContractIfExists?: EtherTokenContract;
|
||||||
private _tokenWrapper: TokenWrapper;
|
private _tokenWrapper: TokenWrapper;
|
||||||
private _contractAddressIfExists?: string;
|
private _contractAddressIfExists?: string;
|
||||||
constructor(web3Wrapper: Web3Wrapper, tokenWrapper: TokenWrapper, contractAddressIfExists?: string) {
|
constructor(web3Wrapper: Web3Wrapper, networkId: number, tokenWrapper: TokenWrapper,
|
||||||
super(web3Wrapper);
|
contractAddressIfExists?: string) {
|
||||||
|
super(web3Wrapper, networkId);
|
||||||
this._tokenWrapper = tokenWrapper;
|
this._tokenWrapper = tokenWrapper;
|
||||||
this._contractAddressIfExists = contractAddressIfExists;
|
this._contractAddressIfExists = contractAddressIfExists;
|
||||||
}
|
}
|
||||||
|
@ -84,9 +84,9 @@ export class ExchangeWrapper extends ContractWrapper {
|
|||||||
];
|
];
|
||||||
return [orderAddresses, orderValues];
|
return [orderAddresses, orderValues];
|
||||||
}
|
}
|
||||||
constructor(web3Wrapper: Web3Wrapper, abiDecoder: AbiDecoder,
|
constructor(web3Wrapper: Web3Wrapper, networkId: number, abiDecoder: AbiDecoder,
|
||||||
tokenWrapper: TokenWrapper, contractAddressIfExists?: string) {
|
tokenWrapper: TokenWrapper, contractAddressIfExists?: string) {
|
||||||
super(web3Wrapper, abiDecoder);
|
super(web3Wrapper, networkId, abiDecoder);
|
||||||
this._tokenWrapper = tokenWrapper;
|
this._tokenWrapper = tokenWrapper;
|
||||||
this._orderValidationUtils = new OrderValidationUtils(tokenWrapper, this);
|
this._orderValidationUtils = new OrderValidationUtils(tokenWrapper, this);
|
||||||
this._contractAddressIfExists = contractAddressIfExists;
|
this._contractAddressIfExists = contractAddressIfExists;
|
||||||
|
@ -27,8 +27,8 @@ export class TokenRegistryWrapper extends ContractWrapper {
|
|||||||
};
|
};
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
constructor(web3Wrapper: Web3Wrapper, contractAddressIfExists?: string) {
|
constructor(web3Wrapper: Web3Wrapper, networkId: number, contractAddressIfExists?: string) {
|
||||||
super(web3Wrapper);
|
super(web3Wrapper, networkId);
|
||||||
this._contractAddressIfExists = contractAddressIfExists;
|
this._contractAddressIfExists = contractAddressIfExists;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -13,8 +13,8 @@ import {TokenTransferProxyContract} from './generated/token_transfer_proxy';
|
|||||||
export class TokenTransferProxyWrapper extends ContractWrapper {
|
export class TokenTransferProxyWrapper extends ContractWrapper {
|
||||||
private _tokenTransferProxyContractIfExists?: TokenTransferProxyContract;
|
private _tokenTransferProxyContractIfExists?: TokenTransferProxyContract;
|
||||||
private _contractAddressIfExists?: string;
|
private _contractAddressIfExists?: string;
|
||||||
constructor(web3Wrapper: Web3Wrapper, contractAddressIfExists?: string) {
|
constructor(web3Wrapper: Web3Wrapper, networkId: number, contractAddressIfExists?: string) {
|
||||||
super(web3Wrapper);
|
super(web3Wrapper, networkId);
|
||||||
this._contractAddressIfExists = contractAddressIfExists;
|
this._contractAddressIfExists = contractAddressIfExists;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -34,9 +34,9 @@ export class TokenWrapper extends ContractWrapper {
|
|||||||
public UNLIMITED_ALLOWANCE_IN_BASE_UNITS = constants.UNLIMITED_ALLOWANCE_IN_BASE_UNITS;
|
public UNLIMITED_ALLOWANCE_IN_BASE_UNITS = constants.UNLIMITED_ALLOWANCE_IN_BASE_UNITS;
|
||||||
private _tokenContractsByAddress: {[address: string]: TokenContract};
|
private _tokenContractsByAddress: {[address: string]: TokenContract};
|
||||||
private _tokenTransferProxyWrapper: TokenTransferProxyWrapper;
|
private _tokenTransferProxyWrapper: TokenTransferProxyWrapper;
|
||||||
constructor(web3Wrapper: Web3Wrapper, abiDecoder: AbiDecoder,
|
constructor(web3Wrapper: Web3Wrapper, networkId: number, abiDecoder: AbiDecoder,
|
||||||
tokenTransferProxyWrapper: TokenTransferProxyWrapper) {
|
tokenTransferProxyWrapper: TokenTransferProxyWrapper) {
|
||||||
super(web3Wrapper, abiDecoder);
|
super(web3Wrapper, networkId, abiDecoder);
|
||||||
this._tokenContractsByAddress = {};
|
this._tokenContractsByAddress = {};
|
||||||
this._tokenTransferProxyWrapper = tokenTransferProxyWrapper;
|
this._tokenTransferProxyWrapper = tokenTransferProxyWrapper;
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ describe('EventWatcher', () => {
|
|||||||
before(async () => {
|
before(async () => {
|
||||||
web3 = web3Factory.create();
|
web3 = web3Factory.create();
|
||||||
const pollingIntervalMs = 10;
|
const pollingIntervalMs = 10;
|
||||||
web3Wrapper = new Web3Wrapper(web3.currentProvider, constants.TESTRPC_NETWORK_ID);
|
web3Wrapper = new Web3Wrapper(web3.currentProvider);
|
||||||
eventWatcher = new EventWatcher(web3Wrapper, pollingIntervalMs);
|
eventWatcher = new EventWatcher(web3Wrapper, pollingIntervalMs);
|
||||||
});
|
});
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
|
@ -46,7 +46,7 @@ describe('TokenWrapper', () => {
|
|||||||
before(async () => {
|
before(async () => {
|
||||||
web3 = web3Factory.create();
|
web3 = web3Factory.create();
|
||||||
zeroEx = new ZeroEx(web3.currentProvider, config);
|
zeroEx = new ZeroEx(web3.currentProvider, config);
|
||||||
web3Wrapper = new Web3Wrapper(web3.currentProvider, config.networkId);
|
web3Wrapper = new Web3Wrapper(web3.currentProvider);
|
||||||
userAddresses = await zeroEx.getAvailableAddressesAsync();
|
userAddresses = await zeroEx.getAvailableAddressesAsync();
|
||||||
tokens = await zeroEx.tokenRegistry.getTokensAsync();
|
tokens = await zeroEx.tokenRegistry.getTokensAsync();
|
||||||
tokenUtils = new TokenUtils(tokens);
|
tokenUtils = new TokenUtils(tokens);
|
||||||
|
@ -31,7 +31,7 @@ export class Deployer {
|
|||||||
const jsonrpcUrl = `http://localhost:${this.jsonrpcPort}`;
|
const jsonrpcUrl = `http://localhost:${this.jsonrpcPort}`;
|
||||||
const web3Provider = new Web3.providers.HttpProvider(jsonrpcUrl);
|
const web3Provider = new Web3.providers.HttpProvider(jsonrpcUrl);
|
||||||
this.defaults = opts.defaults;
|
this.defaults = opts.defaults;
|
||||||
this.web3Wrapper = new Web3Wrapper(web3Provider, this.networkId, this.defaults);
|
this.web3Wrapper = new Web3Wrapper(web3Provider, this.defaults);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Loads contract artifact and deploys contract with given arguments.
|
* Loads contract artifact and deploys contract with given arguments.
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import {promisify} from '@0xproject/utils';
|
import {promisify} from '@0xproject/utils';
|
||||||
|
import {Web3Wrapper} from '@0xproject/web3-wrapper';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as Web3 from 'web3';
|
import * as Web3 from 'web3';
|
||||||
|
|
||||||
@ -6,8 +7,8 @@ export const network = {
|
|||||||
async getNetworkIdIfExistsAsync(port: number): Promise<number> {
|
async getNetworkIdIfExistsAsync(port: number): Promise<number> {
|
||||||
const url = `http://localhost:${port}`;
|
const url = `http://localhost:${port}`;
|
||||||
const web3Provider = new Web3.providers.HttpProvider(url);
|
const web3Provider = new Web3.providers.HttpProvider(url);
|
||||||
const web3 = new Web3(web3Provider);
|
const web3Wrapper = new Web3Wrapper(web3Provider);
|
||||||
const networkId = _.parseInt(await promisify<string>(web3.version.getNetwork)());
|
const networkId = web3Wrapper.getNetworkIdAsync();
|
||||||
return networkId;
|
return networkId;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -17,10 +17,9 @@ interface RawLogEntry {
|
|||||||
|
|
||||||
export class Web3Wrapper {
|
export class Web3Wrapper {
|
||||||
private web3: Web3;
|
private web3: Web3;
|
||||||
private networkId: number;
|
|
||||||
private defaults: Partial<TxData>;
|
private defaults: Partial<TxData>;
|
||||||
private jsonRpcRequestId: number;
|
private jsonRpcRequestId: number;
|
||||||
constructor(provider: Web3.Provider, networkId: number, defaults?: Partial<TxData>) {
|
constructor(provider: Web3.Provider, defaults?: Partial<TxData>) {
|
||||||
if (_.isUndefined((provider as any).sendAsync)) {
|
if (_.isUndefined((provider as any).sendAsync)) {
|
||||||
// Web3@1.0 provider doesn't support synchronous http requests,
|
// Web3@1.0 provider doesn't support synchronous http requests,
|
||||||
// so it only has an async `send` method, instead of a `send` and `sendAsync` in web3@0.x.x`
|
// so it only has an async `send` method, instead of a `send` and `sendAsync` in web3@0.x.x`
|
||||||
@ -28,7 +27,6 @@ export class Web3Wrapper {
|
|||||||
(provider as any).sendAsync = (provider as any).send;
|
(provider as any).sendAsync = (provider as any).send;
|
||||||
}
|
}
|
||||||
this.web3 = new Web3();
|
this.web3 = new Web3();
|
||||||
this.networkId = networkId;
|
|
||||||
this.web3.setProvider(provider);
|
this.web3.setProvider(provider);
|
||||||
this.defaults = defaults || {};
|
this.defaults = defaults || {};
|
||||||
this.jsonRpcRequestId = 0;
|
this.jsonRpcRequestId = 0;
|
||||||
@ -37,7 +35,6 @@ export class Web3Wrapper {
|
|||||||
return this.defaults;
|
return this.defaults;
|
||||||
}
|
}
|
||||||
public setProvider(provider: Web3.Provider, networkId: number) {
|
public setProvider(provider: Web3.Provider, networkId: number) {
|
||||||
this.networkId = networkId;
|
|
||||||
this.web3.setProvider(provider);
|
this.web3.setProvider(provider);
|
||||||
}
|
}
|
||||||
public isAddress(address: string): boolean {
|
public isAddress(address: string): boolean {
|
||||||
@ -51,6 +48,11 @@ export class Web3Wrapper {
|
|||||||
const nodeVersion = await promisify<string>(this.web3.version.getNode)();
|
const nodeVersion = await promisify<string>(this.web3.version.getNode)();
|
||||||
return nodeVersion;
|
return nodeVersion;
|
||||||
}
|
}
|
||||||
|
public async getNetworkIdAsync(): Promise<number> {
|
||||||
|
const networkIdStr = await promisify<string>(this.web3.version.getNetwork)();
|
||||||
|
const networkId = _.parseInt(networkIdStr);
|
||||||
|
return networkId;
|
||||||
|
}
|
||||||
public async getTransactionReceiptAsync(txHash: string): Promise<TransactionReceipt> {
|
public async getTransactionReceiptAsync(txHash: string): Promise<TransactionReceipt> {
|
||||||
const transactionReceipt = await promisify<TransactionReceipt>(this.web3.eth.getTransactionReceipt)(txHash);
|
const transactionReceipt = await promisify<TransactionReceipt>(this.web3.eth.getTransactionReceipt)(txHash);
|
||||||
if (!_.isNull(transactionReceipt)) {
|
if (!_.isNull(transactionReceipt)) {
|
||||||
@ -61,9 +63,6 @@ export class Web3Wrapper {
|
|||||||
public getCurrentProvider(): Web3.Provider {
|
public getCurrentProvider(): Web3.Provider {
|
||||||
return this.web3.currentProvider;
|
return this.web3.currentProvider;
|
||||||
}
|
}
|
||||||
public getNetworkId(): number {
|
|
||||||
return this.networkId;
|
|
||||||
}
|
|
||||||
public toWei(ethAmount: BigNumber): BigNumber {
|
public toWei(ethAmount: BigNumber): BigNumber {
|
||||||
const balanceWei = this.web3.toWei(ethAmount, 'ether');
|
const balanceWei = this.web3.toWei(ethAmount, 'ether');
|
||||||
return balanceWei;
|
return balanceWei;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user