aboutsummaryrefslogtreecommitdiffstats
path: root/packages/testnet-faucets/src/ts/handler.ts
diff options
context:
space:
mode:
authorJacob Evans <jacob@dekz.net>2018-09-05 22:13:21 +0800
committerJacob Evans <jacob@dekz.net>2018-09-05 22:13:21 +0800
commitdb6ddc0c4ba582923b40e9cca807f70b950db019 (patch)
tree72eb96b565a7fac8e0d1749eb282e37efb56e491 /packages/testnet-faucets/src/ts/handler.ts
parent174b36059368631eeaec3ec7c0a3847350b55d73 (diff)
downloaddexon-0x-contracts-db6ddc0c4ba582923b40e9cca807f70b950db019.tar.gz
dexon-0x-contracts-db6ddc0c4ba582923b40e9cca807f70b950db019.tar.zst
dexon-0x-contracts-db6ddc0c4ba582923b40e9cca807f70b950db019.zip
[testnet-faucets] update to v2
Diffstat (limited to 'packages/testnet-faucets/src/ts/handler.ts')
-rw-r--r--packages/testnet-faucets/src/ts/handler.ts98
1 files changed, 59 insertions, 39 deletions
diff --git a/packages/testnet-faucets/src/ts/handler.ts b/packages/testnet-faucets/src/ts/handler.ts
index 3749bc70b..4c4e439df 100644
--- a/packages/testnet-faucets/src/ts/handler.ts
+++ b/packages/testnet-faucets/src/ts/handler.ts
@@ -1,27 +1,35 @@
-import { Order, ZeroEx } from '0x.js';
-import { BigNumber, logUtils } from '@0xproject/utils';
-import { Web3Wrapper } from '@0xproject/web3-wrapper';
-import { Provider } from 'ethereum-types';
-import * as express from 'express';
-import * as _ from 'lodash';
-
import {
- NonceTrackerSubprovider,
- PrivateKeyWalletSubprovider,
+ assetDataUtils,
+ BigNumber,
+ ContractWrappers,
+ generatePseudoRandomSalt,
+ Order,
+ orderHashUtils,
+ Provider,
RPCSubprovider,
+ signatureUtils,
+ SignedOrder,
+ SignerType,
Web3ProviderEngine,
-} from '@0xproject/subproviders';
+} from '0x.js';
+import { NonceTrackerSubprovider, PrivateKeyWalletSubprovider } from '@0xproject/subproviders';
+import { logUtils } from '@0xproject/utils';
+import { Web3Wrapper } from '@0xproject/web3-wrapper';
+import * as express from 'express';
+import * as _ from 'lodash';
import { configs } from './configs';
import { constants } from './constants';
import { DispatchQueue } from './dispatch_queue';
import { dispenseAssetTasks } from './dispense_asset_tasks';
import { rpcUrls } from './rpc_urls';
+import { TOKENS_BY_NETWORK } from './tokens';
interface NetworkConfig {
dispatchQueue: DispatchQueue;
web3Wrapper: Web3Wrapper;
- zeroEx: ZeroEx;
+ contractWrappers: ContractWrappers;
+ networkId: number;
}
interface ItemByNetworkId<T> {
@@ -35,6 +43,9 @@ enum RequestedAssetType {
}
const FIVE_DAYS_IN_MS = 4.32e8; // TODO: make this configurable
+const NULL_ADDRESS = '0x0000000000000000000000000000000000000000';
+const ZERO = new BigNumber(0);
+const ASSET_AMOUNT = new BigNumber(0.1);
export class Handler {
private readonly _networkConfigByNetworkId: ItemByNetworkId<NetworkConfig> = {};
@@ -50,18 +61,18 @@ export class Handler {
return engine;
}
constructor() {
- _.forIn(rpcUrls, (rpcUrl: string, networkId: string) => {
+ _.forIn(rpcUrls, (rpcUrl: string, networkIdString: string) => {
const providerObj = Handler._createProviderEngine(rpcUrl);
const web3Wrapper = new Web3Wrapper(providerObj);
- const zeroExConfig = {
- networkId: +networkId,
- };
- const zeroEx = new ZeroEx(providerObj, zeroExConfig);
+ // tslint:disable-next-line:custom-no-magic-numbers
+ const networkId = parseInt(networkIdString, 10);
+ const contractWrappers = new ContractWrappers(providerObj, { networkId });
const dispatchQueue = new DispatchQueue();
this._networkConfigByNetworkId[networkId] = {
dispatchQueue,
web3Wrapper,
- zeroEx,
+ contractWrappers,
+ networkId,
};
});
}
@@ -107,7 +118,8 @@ export class Handler {
dispenserTask = dispenseAssetTasks.dispenseTokenTask(
recipient,
requestedAssetType,
- networkConfig.zeroEx,
+ networkConfig.networkId,
+ networkConfig.contractWrappers.erc20Token,
);
break;
default:
@@ -131,39 +143,47 @@ export class Handler {
res.status(constants.BAD_REQUEST_STATUS).send('UNSUPPORTED_NETWORK_ID');
return;
}
- const zeroEx = networkConfig.zeroEx;
res.setHeader('Content-Type', 'application/json');
- const makerToken = await zeroEx.tokenRegistry.getTokenBySymbolIfExistsAsync(requestedAssetType);
+ const makerToken = TOKENS_BY_NETWORK[networkConfig.networkId][requestedAssetType];
if (_.isUndefined(makerToken)) {
throw new Error(`Unsupported asset type: ${requestedAssetType}`);
}
const takerTokenSymbol =
requestedAssetType === RequestedAssetType.WETH ? RequestedAssetType.ZRX : RequestedAssetType.WETH;
- const takerToken = await zeroEx.tokenRegistry.getTokenBySymbolIfExistsAsync(takerTokenSymbol);
+ const takerToken = TOKENS_BY_NETWORK[networkConfig.networkId][takerTokenSymbol];
if (_.isUndefined(takerToken)) {
throw new Error(`Unsupported asset type: ${requestedAssetType}`);
}
- const makerTokenAmount = ZeroEx.toBaseUnitAmount(new BigNumber(0.1), makerToken.decimals);
- const takerTokenAmount = ZeroEx.toBaseUnitAmount(new BigNumber(0.1), takerToken.decimals);
+ const makerAssetAmount = Web3Wrapper.toBaseUnitAmount(ASSET_AMOUNT, makerToken.decimals);
+ const takerAssetAmount = Web3Wrapper.toBaseUnitAmount(ASSET_AMOUNT, takerToken.decimals);
+ const makerAssetData = assetDataUtils.encodeERC20AssetData(makerToken.address);
+ const takerAssetData = assetDataUtils.encodeERC20AssetData(takerToken.address);
const order: Order = {
- maker: configs.DISPENSER_ADDRESS,
- taker: req.params.recipient,
- makerFee: new BigNumber(0),
- takerFee: new BigNumber(0),
- makerTokenAmount,
- takerTokenAmount,
- makerTokenAddress: makerToken.address,
- takerTokenAddress: takerToken.address,
- salt: ZeroEx.generatePseudoRandomSalt(),
- exchangeContractAddress: zeroEx.exchange.getContractAddress(),
- feeRecipient: ZeroEx.NULL_ADDRESS,
- expirationUnixTimestampSec: new BigNumber(Date.now() + FIVE_DAYS_IN_MS),
+ makerAddress: configs.DISPENSER_ADDRESS,
+ takerAddress: req.params.recipient as string,
+ makerFee: ZERO,
+ takerFee: ZERO,
+ makerAssetAmount,
+ takerAssetAmount,
+ makerAssetData,
+ takerAssetData,
+ salt: generatePseudoRandomSalt(),
+ exchangeAddress: networkConfig.contractWrappers.exchange.getContractAddress(),
+ feeRecipientAddress: NULL_ADDRESS,
+ senderAddress: NULL_ADDRESS,
+ // tslint:disable-next-line:custom-no-magic-numbers
+ expirationTimeSeconds: new BigNumber(Date.now() + FIVE_DAYS_IN_MS).div(1000),
};
- const orderHash = ZeroEx.getOrderHashHex(order);
- const signature = await zeroEx.signOrderHashAsync(orderHash, configs.DISPENSER_ADDRESS, false);
- const signedOrder = {
+ const orderHash = orderHashUtils.getOrderHashHex(order);
+ const signature = await signatureUtils.ecSignOrderHashAsync(
+ networkConfig.web3Wrapper.getProvider(),
+ orderHash,
+ configs.DISPENSER_ADDRESS,
+ SignerType.Default,
+ );
+ const signedOrder: SignedOrder = {
...order,
- ecSignature: signature,
+ signature,
};
const payload = JSON.stringify(signedOrder);
logUtils.log(`Dispensed signed order: ${payload}`);