Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancement: New BlockTracker and Json-Rpc-Engine based Provider #4279

Merged
merged 111 commits into from
Aug 15, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
088d793
network - create provider and block-tracker via json-rpc-engine
kumavis May 17, 2018
b6eff15
lint fix
kumavis May 17, 2018
3e04840
remove unused events-proxy, was replaced with module swappable-obj-proxy
kumavis May 17, 2018
623533a
recent-blocks - update for eth-block-tracker@4
kumavis May 17, 2018
32b3b8f
controllers - balance - update for eth-block-tracker@4
kumavis May 17, 2018
c2a685e
deps - remove web3-provider-engine
kumavis May 17, 2018
f9074a5
docs - remove references to web3-provider-engine
kumavis May 17, 2018
08dc238
deps - fix incorrect dep paths and versions
kumavis May 17, 2018
41c04ef
controllers - recent-blocks - fix pifyd setTimeout args
kumavis May 17, 2018
ae53fa0
deps - bump some bugfixes
kumavis May 17, 2018
eaa5a48
test - unit - network - get providerProxy via public method
kumavis May 17, 2018
3084dc4
recent-blocks - fix backfill blockNumber tracking
kumavis May 17, 2018
3a80f3d
Merge branch 'develop' of github.com:MetaMask/metamask-extension into…
kumavis May 22, 2018
ee280de
deps - eth-block-tracker@4.0.1
kumavis May 22, 2018
9e7a9e4
deps - eth-json-rpc-filters@2.0.0
kumavis May 22, 2018
145016b
Merge branch 'develop' of github.com:MetaMask/metamask-extension into…
kumavis May 22, 2018
60bc28b
test pending-tx-tracker - update tests to reflect new block tracker b…
frankiebee May 22, 2018
10aecf4
remove dependance on the even tx:confirmed
frankiebee May 22, 2018
c4b09da
transactions - update pending-tx-tracker to use the new block tracker
frankiebee May 22, 2018
61caee9
Merge branch 'network-remove-provider-engine' of https://github.com/M…
frankiebee May 22, 2018
53b9463
controllers - recent-blocks - doc update
kumavis May 23, 2018
eb24237
controllers - account-tracker - refactor + update for eth-block-track…
kumavis May 23, 2018
3d8f41e
Merge pull request #4347 from MetaMask/transactions-use-new-block-tra…
kumavis May 23, 2018
22e59af
controllers - recent-blocks - ensure full blocks
kumavis May 24, 2018
f41198f
sentry - setupRaven - ensure message is truthy
kumavis May 24, 2018
9032719
deps - bump eth-block-tracker for bugfix
kumavis May 24, 2018
dc96b1e
Merge branch 'network-remove-provider-engine' of github.com:MetaMask/…
kumavis May 24, 2018
ee800de
controllers - recent-blocks - wrap block-tracker event in try-catch
kumavis May 24, 2018
49ef93b
controllers - recent-blocks - guard against empty block
kumavis May 24, 2018
91accee
account-tracker - guard against empty block
kumavis May 24, 2018
66a62df
metamask-controller - fix account lookup hook
kumavis May 24, 2018
68aa1cc
deps - bump json-rpc modules for bugfixes
kumavis May 24, 2018
aab9691
provider - update wallet hooks for new wallet middleware
kumavis May 24, 2018
2b54d94
test - remove .only from unit tests
kumavis May 24, 2018
76cfb10
metamask-controller - wrap txController.addUnapprovedTx for wallet mi…
kumavis May 24, 2018
41e4d27
deps - bump eth-json-rpc-middleware for fetch bugfix
kumavis May 24, 2018
380964a
test - unit - metamask-controller - polyfill global.fetch
kumavis May 25, 2018
630e230
test - unit - move fetch polyfill to helper
kumavis May 25, 2018
afdefc5
test - unit - tx-controller-test - add history object to txMeta when …
kumavis May 25, 2018
0b45810
test - unit - run ganache-server in background
kumavis May 25, 2018
da5be08
test - unit - metamask-controller - fix many bugs in tests
kumavis May 25, 2018
deab195
test - unit - code style nitpick
kumavis May 25, 2018
a0fe5b9
test - unit - metamask-controller - remove log
kumavis May 25, 2018
61ef4f1
tx-gas-utils - query for block without tx bodies
kumavis May 25, 2018
9f8d5f0
controllers - transactions - pending-tx-tracker - _getBlock - poll un…
kumavis May 25, 2018
5be154e
controllers - transactions - merge @frankiebee's work with mine
kumavis May 28, 2018
1b3fedd
controllers - transaction - pending-tx-tracker - lint fix
kumavis May 28, 2018
686d5cf
test - unit - nonce-tracker - fix blockTracker stub
kumavis May 28, 2018
31f47a7
test - unit - pending-tx-tracker - update method name
kumavis May 28, 2018
e2a9b9e
Merge branch 'develop' of github.com:MetaMask/metamask-extension into…
kumavis May 29, 2018
fe42de4
metamask-controller - update preferences controller addresses after i…
kumavis May 29, 2018
c9f3404
metamask-controller - lint fix
kumavis May 29, 2018
7d449e9
newui - unlock - dont catch errors unrelated to tryUnlockMetamask
kumavis May 29, 2018
16d0db1
controllers - transactions - fix tx confirmation
kumavis May 29, 2018
58de567
controllers - transactions - fix tx status update on boot
kumavis May 29, 2018
32293a9
test - unit - tx-controller - fix blockTracker stub
kumavis May 29, 2018
9d77b0a
Merge branch 'develop' of github.com:MetaMask/metamask-extension into…
kumavis Jun 6, 2018
ffb8fa1
lint - remove unused require
kumavis Jun 6, 2018
2198276
Merge branch 'develop' of github.com:MetaMask/metamask-extension into…
kumavis Jun 6, 2018
66b703b
Merge branch 'develop' of github.com:MetaMask/metamask-extension into…
kumavis Jun 7, 2018
3ce8357
network - provider - infura - use block-reemit middleware
kumavis Jun 7, 2018
0fa9014
test - e2e - reduce browser-specific code
kumavis Jun 11, 2018
0db776c
lint - controllers - whitepace fix
kumavis Jun 11, 2018
02f5502
test - e2e - inject metamask config to point at localhost
kumavis Jun 11, 2018
ebb9447
test - e2e - factor out setup phase + rename METAMASK_CONFIG to METAM…
kumavis Jun 11, 2018
9075944
test - e2e - use fs-extra instead of fs
kumavis Jun 11, 2018
8a0961b
test - e2e - more factoring of test setup
kumavis Jun 11, 2018
2e3f421
test - e2e - properly export setupBrowserAndExtension
kumavis Jun 11, 2018
ab0e60e
test - e2e - fix incomplete setup phase
kumavis Jun 11, 2018
93a2e28
test - e2e - remove usage of extensionId from tests
kumavis Jun 11, 2018
4773a7f
test - e2e - extensionUri should point to home.html
kumavis Jun 12, 2018
9d1b4cc
test - e2e - beta - dont select localhost as it is already set
kumavis Jun 12, 2018
030fea7
test - e2e - beta - from import - fix missing startup phase
kumavis Jun 12, 2018
c86f935
nonce-tracker - wrap nonce calculations in try-catch and release lock…
kumavis Jun 12, 2018
6a2649a
network - import createBlockTrackerInspectorMiddleware and rearrange …
kumavis Jun 12, 2018
0553468
lint - fix lint for network
kumavis Jun 12, 2018
a89902c
Merge branch 'develop' of github.com:MetaMask/metamask-extension into…
kumavis Jul 2, 2018
3163090
deps - update package-lock
kumavis Jul 2, 2018
3111ae3
dep - automated package-lock fixes
kumavis Jul 2, 2018
0ada37e
test - e2e-beta - update some api calls
kumavis Jul 2, 2018
9f11042
test - e2e - move timings
kumavis Jul 2, 2018
86e95b2
Fix notice screen incorrectly disabling Accept button after multiple …
alextsg Jul 2, 2018
c30ee58
Merge pull request #4711 from alextsg/network-remove-provider-engine
kumavis Jul 3, 2018
9f29fa5
Merge branch 'develop' into network-remove-provider-engine
kumavis Jul 3, 2018
b75abfa
test - e2e - fix missing import
kumavis Jul 3, 2018
2b2cd87
test - e2e - contract test - add logs
kumavis Jul 3, 2018
77daed5
Merge branch 'develop' of github.com:MetaMask/metamask-extension into…
kumavis Jul 3, 2018
6146941
Merge branch 'develop' of github.com:MetaMask/metamask-extension into…
kumavis Jul 3, 2018
c723635
test - run ganache rpc without vm errors
kumavis Jul 3, 2018
21ae81d
deps - update lock
kumavis Jul 3, 2018
fa02a6c
test - unit - remove tests for obsolete methods
kumavis Jul 3, 2018
1388586
Merge branch 'develop' into network-remove-provider-engine
tmashuang Jul 26, 2018
fb5e357
Detect Tokens are weird
tmashuang Jul 30, 2018
3d9f283
Disallow netConnections other than localhosts
tmashuang Jul 30, 2018
2392e77
Set metamask controller network provider to localhost
tmashuang Jul 31, 2018
5b3927f
Lint
tmashuang Jul 31, 2018
024ebe0
Merge branch 'develop' into network-remove-provider-engine-tests
tmashuang Aug 1, 2018
c2d4b23
network - fix blockTracker reference to return the blockTrackerProxy …
frankiebee Aug 7, 2018
115d3c9
Merge branch 'network-remove-provider-engine' into network-remove-pro…
frankiebee Aug 7, 2018
cbade51
Merge branch 'develop' of https://github.com/MetaMask/metamask-extens…
frankiebee Aug 7, 2018
e8a8711
deps - update package-lock
frankiebee Aug 7, 2018
ff53a33
lint fixes
frankiebee Aug 7, 2018
2df46c1
Merge branch 'network-remove-provider-engine' of https://github.com/M…
frankiebee Aug 7, 2018
562764c
Use develop e2e beta tests
tmashuang Aug 7, 2018
66120c6
confirms a deplay contract tx in the popup
tmashuang Aug 9, 2018
de6f8b6
Delay
tmashuang Aug 9, 2018
7918240
Confirms new contract token in the popup
tmashuang Aug 13, 2018
96d789d
Merge branch 'develop' into network-remove-provider-engine
tmashuang Aug 14, 2018
9ffed5f
E2E - Dont error on browser errors
tmashuang Aug 14, 2018
974d623
Update eth-json-rpc-filters
tmashuang Aug 14, 2018
ce64556
Remove commented out code for detect-token-test
tmashuang Aug 14, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .babelrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"presets": [["env", { "debug": true }], "react", "stage-0"],
"presets": [["env"], "react", "stage-0"],
"plugins": ["transform-runtime", "transform-async-to-generator", "transform-class-properties"]
}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ package
# IDEs
.idea
.vscode
.sublime-project

# VIM
*.swp
Expand All @@ -34,6 +35,7 @@ test/bundle.js
test/test-bundle.js

test-artifacts
test-builds

#ignore css output and sourcemaps
ui/app/css/output/
Expand Down
5 changes: 4 additions & 1 deletion app/scripts/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const PortStream = require('./lib/port-stream.js')
const createStreamSink = require('./lib/createStreamSink')
const NotificationManager = require('./lib/notification-manager.js')
const MetamaskController = require('./metamask-controller')
const firstTimeState = require('./first-time-state')
const rawFirstTimeState = require('./first-time-state')
const setupRaven = require('./lib/setupRaven')
const reportFailedTxToSentry = require('./lib/reportFailedTxToSentry')
const setupMetamaskMeshMetrics = require('./lib/setupMetamaskMeshMetrics')
Expand All @@ -34,6 +34,9 @@ const {
ENVIRONMENT_TYPE_FULLSCREEN,
} = require('./lib/enums')

// METAMASK_TEST_CONFIG is used in e2e tests to set the default network to localhost
const firstTimeState = Object.assign({}, rawFirstTimeState, global.METAMASK_TEST_CONFIG)

const STORAGE_KEY = 'metamask-config'
const METAMASK_DEBUG = process.env.METAMASK_DEBUG

Expand Down
2 changes: 1 addition & 1 deletion app/scripts/controllers/balance.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class BalanceController {
}
})
this.accountTracker.store.subscribe(update)
this.blockTracker.on('block', update)
this.blockTracker.on('latest', update)
}

/**
Expand Down
2 changes: 1 addition & 1 deletion app/scripts/controllers/currency.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const ObservableStore = require('obs-store')
const ObservableStore = require('obs-store')
const extend = require('xtend')
const log = require('loglevel')

Expand Down
25 changes: 25 additions & 0 deletions app/scripts/controllers/network/createInfuraClient.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
const mergeMiddleware = require('json-rpc-engine/src/mergeMiddleware')
const createBlockReEmitMiddleware = require('eth-json-rpc-middleware/block-reemit')
const createBlockCacheMiddleware = require('eth-json-rpc-middleware/block-cache')
const createInflightMiddleware = require('eth-json-rpc-middleware/inflight-cache')
const createBlockTrackerInspectorMiddleware = require('eth-json-rpc-middleware/block-tracker-inspector')
const providerFromMiddleware = require('eth-json-rpc-middleware/providerFromMiddleware')
const createInfuraMiddleware = require('eth-json-rpc-infura')
const BlockTracker = require('eth-block-tracker')

module.exports = createInfuraClient

function createInfuraClient ({ network }) {
const infuraMiddleware = createInfuraMiddleware({ network })
const blockProvider = providerFromMiddleware(infuraMiddleware)
const blockTracker = new BlockTracker({ provider: blockProvider })

const networkMiddleware = mergeMiddleware([
createBlockCacheMiddleware({ blockTracker }),
createInflightMiddleware(),
createBlockReEmitMiddleware({ blockTracker, provider: blockProvider }),
createBlockTrackerInspectorMiddleware({ blockTracker }),
infuraMiddleware,
])
return { networkMiddleware, blockTracker }
}
25 changes: 25 additions & 0 deletions app/scripts/controllers/network/createJsonRpcClient.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
const mergeMiddleware = require('json-rpc-engine/src/mergeMiddleware')
const createFetchMiddleware = require('eth-json-rpc-middleware/fetch')
const createBlockRefMiddleware = require('eth-json-rpc-middleware/block-ref')
const createBlockCacheMiddleware = require('eth-json-rpc-middleware/block-cache')
const createInflightMiddleware = require('eth-json-rpc-middleware/inflight-cache')
const createBlockTrackerInspectorMiddleware = require('eth-json-rpc-middleware/block-tracker-inspector')
const providerFromMiddleware = require('eth-json-rpc-middleware/providerFromMiddleware')
const BlockTracker = require('eth-block-tracker')

module.exports = createJsonRpcClient

function createJsonRpcClient ({ rpcUrl }) {
const fetchMiddleware = createFetchMiddleware({ rpcUrl })
const blockProvider = providerFromMiddleware(fetchMiddleware)
const blockTracker = new BlockTracker({ provider: blockProvider })

const networkMiddleware = mergeMiddleware([
createBlockRefMiddleware({ blockTracker }),
createBlockCacheMiddleware({ blockTracker }),
createInflightMiddleware(),
createBlockTrackerInspectorMiddleware({ blockTracker }),
fetchMiddleware,
])
return { networkMiddleware, blockTracker }
}
21 changes: 21 additions & 0 deletions app/scripts/controllers/network/createLocalhostClient.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const mergeMiddleware = require('json-rpc-engine/src/mergeMiddleware')
const createFetchMiddleware = require('eth-json-rpc-middleware/fetch')
const createBlockRefMiddleware = require('eth-json-rpc-middleware/block-ref')
const createBlockTrackerInspectorMiddleware = require('eth-json-rpc-middleware/block-tracker-inspector')
const providerFromMiddleware = require('eth-json-rpc-middleware/providerFromMiddleware')
const BlockTracker = require('eth-block-tracker')

module.exports = createLocalhostClient

function createLocalhostClient () {
const fetchMiddleware = createFetchMiddleware({ rpcUrl: 'http://localhost:8545/' })
const blockProvider = providerFromMiddleware(fetchMiddleware)
const blockTracker = new BlockTracker({ provider: blockProvider, pollingInterval: 1000 })

const networkMiddleware = mergeMiddleware([
createBlockRefMiddleware({ blockTracker }),
createBlockTrackerInspectorMiddleware({ blockTracker }),
fetchMiddleware,
])
return { networkMiddleware, blockTracker }
}
43 changes: 43 additions & 0 deletions app/scripts/controllers/network/createMetamaskMiddleware.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
const mergeMiddleware = require('json-rpc-engine/src/mergeMiddleware')
const createScaffoldMiddleware = require('json-rpc-engine/src/createScaffoldMiddleware')
const createAsyncMiddleware = require('json-rpc-engine/src/createAsyncMiddleware')
const createWalletSubprovider = require('eth-json-rpc-middleware/wallet')

module.exports = createMetamaskMiddleware

function createMetamaskMiddleware ({
version,
getAccounts,
processTransaction,
processEthSignMessage,
processTypedMessage,
processPersonalMessage,
getPendingNonce,
}) {
const metamaskMiddleware = mergeMiddleware([
createScaffoldMiddleware({
// staticSubprovider
eth_syncing: false,
web3_clientVersion: `MetaMask/v${version}`,
}),
createWalletSubprovider({
getAccounts,
processTransaction,
processEthSignMessage,
processTypedMessage,
processPersonalMessage,
}),
createPendingNonceMiddleware({ getPendingNonce }),
])
return metamaskMiddleware
}

function createPendingNonceMiddleware ({ getPendingNonce }) {
return createAsyncMiddleware(async (req, res, next) => {
if (req.method !== 'eth_getTransactionCount') return next()
const address = req.params[0]
const blockRef = req.params[1]
if (blockRef !== 'pending') return next()
req.result = await getPendingNonce(address)
})
}
122 changes: 64 additions & 58 deletions app/scripts/controllers/network/network.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
const assert = require('assert')
const EventEmitter = require('events')
const createMetamaskProvider = require('web3-provider-engine/zero.js')
const SubproviderFromProvider = require('web3-provider-engine/subproviders/provider.js')
const createInfuraProvider = require('eth-json-rpc-infura/src/createProvider')
const ObservableStore = require('obs-store')
const ComposedStore = require('obs-store/lib/composed')
const extend = require('xtend')
const EthQuery = require('eth-query')
const createEventEmitterProxy = require('../../lib/events-proxy.js')
const JsonRpcEngine = require('json-rpc-engine')
const providerFromEngine = require('eth-json-rpc-middleware/providerFromEngine')
const log = require('loglevel')
const urlUtil = require('url')
const createMetamaskMiddleware = require('./createMetamaskMiddleware')
const createInfuraClient = require('./createInfuraClient')
const createJsonRpcClient = require('./createJsonRpcClient')
const createLocalhostClient = require('./createLocalhostClient')
const { createSwappableProxy, createEventEmitterProxy } = require('swappable-obj-proxy')

const {
ROPSTEN,
RINKEBY,
KOVAN,
MAINNET,
LOCALHOST,
} = require('./enums')
const LOCALHOST_RPC_URL = 'http://localhost:8545'
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET]

const env = process.env.METAMASK_ENV
Expand All @@ -39,21 +40,27 @@ module.exports = class NetworkController extends EventEmitter {
this.providerStore = new ObservableStore(providerConfig)
this.networkStore = new ObservableStore('loading')
this.store = new ComposedStore({ provider: this.providerStore, network: this.networkStore })
// create event emitter proxy
this._proxy = createEventEmitterProxy()

this.on('networkDidChange', this.lookupNetwork)
// provider and block tracker
this._provider = null
this._blockTracker = null
// provider and block tracker proxies - because the network changes
this._providerProxy = null
this._blockTrackerProxy = null
}

initializeProvider (_providerParams) {
this._baseProviderParams = _providerParams
initializeProvider (providerParams) {
this._baseProviderParams = providerParams
const { type, rpcTarget } = this.providerStore.getState()
this._configureProvider({ type, rpcTarget })
this._proxy.on('block', this._logBlock.bind(this))
this._proxy.on('error', this.verifyNetwork.bind(this))
this.ethQuery = new EthQuery(this._proxy)
this.lookupNetwork()
return this._proxy
}

// return the proxies so the references will always be good
getProviderAndBlockTracker () {
const provider = this._providerProxy
const blockTracker = this._blockTrackerProxy
return { provider, blockTracker }
}

verifyNetwork () {
Expand All @@ -75,10 +82,11 @@ module.exports = class NetworkController extends EventEmitter {

lookupNetwork () {
// Prevent firing when provider is not defined.
if (!this.ethQuery || !this.ethQuery.sendAsync) {
return log.warn('NetworkController - lookupNetwork aborted due to missing ethQuery')
if (!this._provider) {
return log.warn('NetworkController - lookupNetwork aborted due to missing provider')
}
this.ethQuery.sendAsync({ method: 'net_version' }, (err, network) => {
const ethQuery = new EthQuery(this._provider)
ethQuery.sendAsync({ method: 'net_version' }, (err, network) => {
if (err) return this.setNetworkState('loading')
log.info('web3.getNetwork returned ' + network)
this.setNetworkState(network)
Expand Down Expand Up @@ -131,7 +139,7 @@ module.exports = class NetworkController extends EventEmitter {
this._configureInfuraProvider(opts)
// other type-based rpc endpoints
} else if (type === LOCALHOST) {
this._configureStandardProvider({ rpcUrl: LOCALHOST_RPC_URL })
this._configureLocalhostProvider()
// url-based rpc endpoints
} else if (type === 'rpc') {
this._configureStandardProvider({ rpcUrl: rpcTarget })
Expand All @@ -141,49 +149,47 @@ module.exports = class NetworkController extends EventEmitter {
}

_configureInfuraProvider ({ type }) {
log.info('_configureInfuraProvider', type)
const infuraProvider = createInfuraProvider({ network: type })
const infuraSubprovider = new SubproviderFromProvider(infuraProvider)
const providerParams = extend(this._baseProviderParams, {
engineParams: {
pollingInterval: 8000,
blockTrackerProvider: infuraProvider,
},
dataSubprovider: infuraSubprovider,
})
const provider = createMetamaskProvider(providerParams)
this._setProvider(provider)
log.info('NetworkController - configureInfuraProvider', type)
const networkClient = createInfuraClient({ network: type })
this._setNetworkClient(networkClient)
}

_configureLocalhostProvider () {
log.info('NetworkController - configureLocalhostProvider')
const networkClient = createLocalhostClient()
this._setNetworkClient(networkClient)
}

_configureStandardProvider ({ rpcUrl }) {
// urlUtil handles malformed urls
rpcUrl = urlUtil.parse(rpcUrl).format()
const providerParams = extend(this._baseProviderParams, {
rpcUrl,
engineParams: {
pollingInterval: 8000,
},
})
const provider = createMetamaskProvider(providerParams)
this._setProvider(provider)
}

_setProvider (provider) {
// collect old block tracker events
const oldProvider = this._provider
let blockTrackerHandlers
if (oldProvider) {
// capture old block handlers
blockTrackerHandlers = oldProvider._blockTracker.proxyEventHandlers
// tear down
oldProvider.removeAllListeners()
oldProvider.stop()
log.info('NetworkController - configureStandardProvider', rpcUrl)
const networkClient = createJsonRpcClient({ rpcUrl })
this._setNetworkClient(networkClient)
}

_setNetworkClient ({ networkMiddleware, blockTracker }) {
const metamaskMiddleware = createMetamaskMiddleware(this._baseProviderParams)
const engine = new JsonRpcEngine()
engine.push(metamaskMiddleware)
engine.push(networkMiddleware)
const provider = providerFromEngine(engine)
this._setProviderAndBlockTracker({ provider, blockTracker })
}

_setProviderAndBlockTracker ({ provider, blockTracker }) {
// update or intialize proxies
if (this._providerProxy) {
this._providerProxy.setTarget(provider)
} else {
this._providerProxy = createSwappableProxy(provider)
}
if (this._blockTrackerProxy) {
this._blockTrackerProxy.setTarget(blockTracker)
} else {
this._blockTrackerProxy = createEventEmitterProxy(blockTracker)
}
// override block tracler
provider._blockTracker = createEventEmitterProxy(provider._blockTracker, blockTrackerHandlers)
// set as new provider
// set new provider and blockTracker
this._provider = provider
this._proxy.setTarget(provider)
this._blockTracker = blockTracker
}

_logBlock (block) {
Expand Down
Loading