diff options
Merge pull request #506 from 0xProject/feature/subproviders/pk-wallet-subprovider
Private Key subprovider
Diffstat (limited to 'packages/testnet-faucets/src')
-rw-r--r-- | packages/testnet-faucets/src/ts/handler.ts | 9 | ||||
-rw-r--r-- | packages/testnet-faucets/src/ts/id_management.ts | 35 |
2 files changed, 5 insertions, 39 deletions
diff --git a/packages/testnet-faucets/src/ts/handler.ts b/packages/testnet-faucets/src/ts/handler.ts index f9ac484de..a6e786552 100644 --- a/packages/testnet-faucets/src/ts/handler.ts +++ b/packages/testnet-faucets/src/ts/handler.ts @@ -9,15 +9,13 @@ import * as Web3 from 'web3'; // we are not running in a browser env. // Filed issue: https://github.com/ethereum/web3.js/issues/844 (global as any).XMLHttpRequest = undefined; -import { NonceTrackerSubprovider } from '@0xproject/subproviders'; +import { NonceTrackerSubprovider, PrivateKeyWalletSubprovider } from '@0xproject/subproviders'; import ProviderEngine = require('web3-provider-engine'); -import HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet'); import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); import { configs } from './configs'; import { DispatchQueue } from './dispatch_queue'; import { dispenseAssetTasks } from './dispense_asset_tasks'; -import { idManagement } from './id_management'; import { rpcUrls } from './rpc_urls'; interface NetworkConfig { @@ -41,9 +39,12 @@ const FIVE_DAYS_IN_MS = 4.32e8; // TODO: make this configurable export class Handler { private _networkConfigByNetworkId: ItemByNetworkId<NetworkConfig> = {}; private static _createProviderEngine(rpcUrl: string) { + if (_.isUndefined(configs.DISPENSER_PRIVATE_KEY)) { + throw new Error('Dispenser Private key not found'); + } const engine = new ProviderEngine(); engine.addProvider(new NonceTrackerSubprovider()); - engine.addProvider(new HookedWalletSubprovider(idManagement)); + engine.addProvider(new PrivateKeyWalletSubprovider(configs.DISPENSER_PRIVATE_KEY)); engine.addProvider( new RpcSubprovider({ rpcUrl, diff --git a/packages/testnet-faucets/src/ts/id_management.ts b/packages/testnet-faucets/src/ts/id_management.ts deleted file mode 100644 index 7c598f91c..000000000 --- a/packages/testnet-faucets/src/ts/id_management.ts +++ /dev/null @@ -1,35 +0,0 @@ -import EthereumTx = require('ethereumjs-tx'); -import * as ethUtil from 'ethereumjs-util'; -import * as _ from 'lodash'; - -import { configs } from './configs'; - -type Callback = (err: Error | null, result: any) => void; - -export const idManagement = { - getAccounts(callback: Callback) { - callback(null, [configs.DISPENSER_ADDRESS]); - }, - approveTransaction(txData: object, callback: Callback) { - callback(null, true); - }, - signTransaction(txData: object, callback: Callback) { - const tx = new EthereumTx(txData); - const privateKeyBuffer = new Buffer(configs.DISPENSER_PRIVATE_KEY as string, 'hex'); - tx.sign(privateKeyBuffer); - const rawTx = `0x${tx.serialize().toString('hex')}`; - callback(null, rawTx); - }, - signMessage(message: object, callback: Callback) { - const dataIfExists = _.get(message, 'data'); - if (_.isUndefined(dataIfExists)) { - callback(new Error('NO_DATA_TO_SIGN'), null); - } - const privateKeyBuffer = new Buffer(configs.DISPENSER_PRIVATE_KEY as string, 'hex'); - const dataBuff = ethUtil.toBuffer(dataIfExists); - const msgHashBuff = ethUtil.hashPersonalMessage(dataBuff); - const sig = ethUtil.ecsign(msgHashBuff, privateKeyBuffer); - const rpcSig = ethUtil.toRpcSig(sig.v, sig.r, sig.s); - callback(null, rpcSig); - }, -}; |