mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 01:39:44 +01:00
Add custom zeroclient that supports etherscan (still not working)
The Etherscan Subprovider is not providing some methods we need, such as `eth_getCode`. I'll probably be enhancing it after lunch.
This commit is contained in:
parent
d9cadb9efb
commit
091938a2c5
@ -6,8 +6,7 @@ const combineStreams = require('pumpify')
|
|||||||
const extend = require('xtend')
|
const extend = require('xtend')
|
||||||
const EthStore = require('eth-store')
|
const EthStore = require('eth-store')
|
||||||
const PortStream = require('./lib/port-stream.js')
|
const PortStream = require('./lib/port-stream.js')
|
||||||
const MetaMaskProvider = require('web3-provider-engine/zero.js')
|
const MetaMaskProvider = require('./lib/zero.js')
|
||||||
const EtherscanProvider = require('web3-provider-engine/subproviders/etherscan')
|
|
||||||
const IdentityStore = require('./lib/idStore')
|
const IdentityStore = require('./lib/idStore')
|
||||||
const createTxNotification = require('./lib/tx-notification.js')
|
const createTxNotification = require('./lib/tx-notification.js')
|
||||||
const configManager = require('./lib/config-manager-singleton')
|
const configManager = require('./lib/config-manager-singleton')
|
||||||
@ -48,16 +47,9 @@ var providerOpts = {
|
|||||||
},
|
},
|
||||||
approveTransaction: addUnconfirmedTx,
|
approveTransaction: addUnconfirmedTx,
|
||||||
signTransaction: idStore.signTransaction.bind(idStore),
|
signTransaction: idStore.signTransaction.bind(idStore),
|
||||||
|
etherscan: providerConfig.type === 'etherscan',
|
||||||
}
|
}
|
||||||
var provider
|
var provider = MetaMaskProvider(providerOpts)
|
||||||
switch (providerConfig.type) {
|
|
||||||
case 'rpc':
|
|
||||||
provider = MetaMaskProvider(providerOpts)
|
|
||||||
break
|
|
||||||
case 'etherscan':
|
|
||||||
provider = EtherscanProvider(providerOpts)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
// log new blocks
|
// log new blocks
|
||||||
provider.on('block', function(block){
|
provider.on('block', function(block){
|
||||||
|
65
app/scripts/lib/zero.js
Normal file
65
app/scripts/lib/zero.js
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
const ProviderEngine = require('web3-provider-engine/index.js')
|
||||||
|
const DefaultFixture = require('web3-provider-engine/subproviders/default-fixture.js')
|
||||||
|
const NonceTrackerSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')
|
||||||
|
const CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')
|
||||||
|
const FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')
|
||||||
|
const HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')
|
||||||
|
const RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')
|
||||||
|
const EtherscanSubprovider = require('web3-provider-engine/subproviders/etherscan.js')
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = ZeroClientProvider
|
||||||
|
|
||||||
|
|
||||||
|
function ZeroClientProvider(opts){
|
||||||
|
opts = opts || {}
|
||||||
|
|
||||||
|
var engine = new ProviderEngine()
|
||||||
|
|
||||||
|
// static
|
||||||
|
var staticSubprovider = new DefaultFixture()
|
||||||
|
engine.addProvider(staticSubprovider)
|
||||||
|
|
||||||
|
// nonce tracker
|
||||||
|
engine.addProvider(new NonceTrackerSubprovider())
|
||||||
|
|
||||||
|
// cache layer
|
||||||
|
var cacheSubprovider = new CacheSubprovider()
|
||||||
|
engine.addProvider(cacheSubprovider)
|
||||||
|
|
||||||
|
// filters
|
||||||
|
var filterSubprovider = new FilterSubprovider()
|
||||||
|
engine.addProvider(filterSubprovider)
|
||||||
|
|
||||||
|
// id mgmt
|
||||||
|
var idmgmtSubprovider = new HookedWalletSubprovider({
|
||||||
|
getAccounts: opts.getAccounts,
|
||||||
|
approveTransaction: opts.approveTransaction,
|
||||||
|
signTransaction: opts.signTransaction,
|
||||||
|
})
|
||||||
|
engine.addProvider(idmgmtSubprovider)
|
||||||
|
|
||||||
|
// data source
|
||||||
|
var dataProvider
|
||||||
|
if (!opts.etherscan) {
|
||||||
|
dataProvider = new RpcSubprovider({
|
||||||
|
rpcUrl: opts.rpcUrl || 'https://testrpc.metamask.io/',
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
dataProvider = new EtherscanSubprovider()
|
||||||
|
}
|
||||||
|
engine.addProvider(dataProvider)
|
||||||
|
|
||||||
|
// // log new blocks
|
||||||
|
// engine.on('block', function(block){
|
||||||
|
// console.log('================================')
|
||||||
|
// console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))
|
||||||
|
// console.log('================================')
|
||||||
|
// })
|
||||||
|
|
||||||
|
// start polling
|
||||||
|
engine.start()
|
||||||
|
|
||||||
|
return engine
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user