{"_id":"@bitski/provider-engine","_rev":"36-2175c594a1719bdfcde7383fef907b0c","name":"@bitski/provider-engine","dist-tags":{"beta":"0.7.0-beta.1","latest":"0.8.0"},"versions":{"0.0.1":{"name":"@bitski/provider-engine","version":"0.0.1","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"index.js","scripts":{"test":"node test/index.js","prepublish":"npm run build && npm run bundle","build":"babel index.js -d dist/es5 && babel subproviders -d dist/es5/subproviders && babel util -d dist/es5/util","bundle":"mkdir -p ./dist && npm run bundle-engine","bundle-engine":"browserify -s ProviderEngine -e index.js -t [ babelify --presets [ es2015 ] ] > dist/ProviderEngine.js"},"author":"","license":"MIT","dependencies":{"async":"^2.5.0","backoff":"^2.5.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","ws":"^5.1.1","xhr":"^2.2.0","xtend":"^4.0.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0"},"browser":{"request":false,"ws":false},"gitHead":"2e557d4731951c0fb8a366cca38ae382e35d8066","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-61l9mJEB5YX3KEYfzfMlOHyHtRs2gKWsYb0O2Nr34Yp+VCZm7AumS2LpByLqexlpDMopT6+ehkFhk347Ul+rgw==","shasum":"6b45b06eb1de5af7a6527ebe71be5da37aee454a","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.0.1.tgz","fileCount":69,"unpackedSize":478703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3yRwCRA9TVsSAnZWagAARQUQAI0sFoe2wjrLIed5hli7\nFkhZvtepDOqZ36+BCQLDodUARFuYFr98tH0Vi2GMk2g0s7RCGQs84lJmdI67\n00xoxw8855pIR/bLesEThOijh5YCUiT0XN7XTV5BaediVKICyfsJ3f2tITUg\nHCxDvnXaFXyBmsQcF8A1/jCZSVMPM9ZBeW8Rjw9xIJQBErhkqiriBKAvG97C\nccisczfljgnMZ/3pNYJ+cDtwBMaSel4sfklMpR8Xyiao7k0ZCe1LkoUZn0+t\ntRt+VqQvN989tjyy8zGrtCII6pqqFuctk8QABYkWXJvvFQodisVuu9TRKKT7\nySN92F1sqIqWeMOcpHFkoe7tnQTkLgl0jZJ0QSSA5fGeSuSyq47MjXA059J6\nfeXC4j2rqp48RLMLKQZqfmQ1KyQcvcfD7bsQCB8EQInFwSDAURMpfX+oSLRy\n8XArtY6PxtinoCsLYhjm6+GoQDx594LMPm8LrYQ/LZNFDrH98dA77P0YUzCT\nJf6HkyjG+4hlVC3CNEgFSarl8QEYTH17k6IFWl49zjF7ZkpHD1OfRdPLimIx\nEptQf4q7yqETZGOzTOlBSRd14yMUQid1FxR+1wz9PN2rqr05IffZVdxytBMY\n+SVHvLIyRX2To9JBaPc2AsunvWqOekTJm5gy7GctNput2sjyKMLscVwxdIMI\nLQ2S\r\n=JTQa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDMx25tu/WY+xSKsQcrdbZERwJpKHyWOWNw7oh5kKZyaAiAVIywmS9L4uz4IAneHygS8u80v/9BGhttuLMvwYSo0UA=="}]},"maintainers":[{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.0.1_1558127727998_0.6282327619945298"},"_hasShrinkwrap":false},"0.2.0-beta.1":{"name":"@bitski/provider-engine","version":"0.2.0-beta.1","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"buit/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && babel built -d dist/es5"},"author":"","license":"MIT","dependencies":{"async":"^2.5.0","backoff":"^2.5.0","bn.js":"^4.11.8","buffer":"^5.2.1","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","rlp":"^2.2.3","ws":"^5.1.1","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"aabd8595430fcfe020da2a29c3ca71b7cea39155","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-tXqfikLSE429yc0VH9rDPrGD8JhSXC/FOE0d6jPlMih6LX0ILL2WaP9OuY/xjtTRwZ/DrtLlcvq1fDqQPL5PgA==","shasum":"fe8b08123598b22f0037d5cc5d31b31df4f1332a","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.1.tgz","fileCount":231,"unpackedSize":788357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5EwLCRA9TVsSAnZWagAAPVMQAJbVY6troBmg10F0oMkV\nOYUbJXaZim/EkQUE6Ze8mqYQhcpos1uuu/0LscAPxA4J5e3BJQTUi0/DBkEa\nWTUooKeRsJYb0Lc6AU30t6ewj/tUGjGrD3oXvFfwGXbUe1SYFW834iB5u19X\ngvYBDBRR4eU0kbStTRzmHDu4EGWsotPUtG7/9kh0aoCW8Ga3lrFWyYjF/+vu\nlUFU75jcnkZxls22PVpZOi3BjVHEMxv082w+P3jO+ZmZldxVa/Mq5uZzAECv\nzbB3mCBxn1lcg6V3qqWmK4vaETl3zcRFl+Q2rlNwTDTlyRJnBjBphaqxtQEz\nl+k1gvfKAWvmEOQVFc20Dt8I73D5rQWlL4ouNk02vK4cHY6XkRTmT+ICprAH\n+kd6oX2dT30eDIeJZiWNQzdFvoKvZgKWiEWdrF1rNjQHy/ZcX1nlisbcQIqm\noxAml766cm0u9x31G3TpcgB7fLG6lJRcxFENhcm0HstLSv+XhazDQZWrLgXZ\n/NcdBIkP1vmdcKVY2+xZmSoroFAf/+lqwe7rKY8tbzv0OzjVJzgoQJSi9SYF\nfW2qiMqeZ16VttJeiIu0qDfsxmihkGHui7a7SHOtEP6HZp40B43TfCpTpdJ3\nJ/X1dtFRZuNzXtGSQuQ/fTgszrcgogyMc+47CInlm79cEbXBIDks4m98kB+e\nW/ts\r\n=RWMd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjpZXyVyn0kSfYRSZfP46YnuseJ0g6n6hQHn93I2QqCAIgXcX/00IozS7Yavw7+PGnSpf2LTTfCbyHKXm8Dq4pz3A="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.1_1558465546452_0.5238138205080576"},"_hasShrinkwrap":false},"0.2.0-beta.2":{"name":"@bitski/provider-engine","version":"0.2.0-beta.2","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/es6/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && babel dist/es6 -d dist/es5"},"author":"","license":"MIT","dependencies":{"async":"^2.5.0","backoff":"^2.5.0","bn.js":"^4.11.8","buffer":"^5.2.1","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","rlp":"^2.2.3","ws":"^5.1.1","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"93a3591aaa099e3dbc1c6f517730dc7dcf78e7b0","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-KMs84ufrCbf/QkeqEZlGUww96GEGWeMMayOy4HAaPQgG0fM9IOhV6/zJX8dlpkXO0hFMM5STtZOlv/mON3q6jQ==","shasum":"7187a1fdbee6b2d644726fcfa578a2c11445d19e","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.2.tgz","fileCount":168,"unpackedSize":684988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5FDKCRA9TVsSAnZWagAAK5oP/09EqAXDPxB0I/eCme4k\nnlwTxXLK2iIJMyDo+SMdCfryOOlff5M9UYala1h1pB980KormfDEfIWafOiK\n2nsN0M1m8/1PGFmKoy4IbhfGGGW9n0KXjqU44Mjm8fSvZjeIHRnJrveJUD0L\n2S1uAii1YSFVPth9l55CCsuUT9B4ccF0ep0rWcUzyyQT8jjeIkTYWAxcPXQ9\npInL/uNmi3E5vpK+0xvTImKUdXq32FHeHBoYPuWM7zD+cV8H3GWf6tCF8yk2\nLPNeF5cpbGlAsNNKbWA/bdVV2DGCA5uMHGOBD1azYX791E6YY0uFv2F54HYY\nhSIAa7j8FOl6toW4FhBHj/cTtPw4ntIW+CrtlJAMheRmSJoeleUAysJd5X3h\nUuQmXFoQKQuDpn6NELVjsEzAa4GM76V7RIj5BPL0uqmjlarul44sr6TolvHZ\n/pLxXBqNwHhTKovKyj9fLB0805nFTKEc3vA/xs5iAwV4Fi7ZLmmVhLYHORGS\nNi4QQqWBDwcvhWQWlQhl3kEax9NFNm9WCN62/JVItQ8PlMQYP4e9qYWXoQST\nWHJXgHMf+jGgiQ3L/0N7HXyTVKE3keP9g7DeQLFami5U3BHNWCXva7bepMRw\nw6hRo1YWab+N7V7xEATx+VLukGnx8ttzxT0TqzMf/quiXAxuK0Ns6XFdMOJ2\npM03\r\n=G+x6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDR8WDw+1jcqUfl6sun7eRzcNQR6BDOS6r0EfcbJQtu2wIgUNvTWv4F6skTm4j/loNepb77w1tJn85h0hvD7+bhCoI="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.2_1558466761732_0.17548766204869715"},"_hasShrinkwrap":false},"0.2.0-beta.3":{"name":"@bitski/provider-engine","version":"0.2.0-beta.3","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/es6/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && babel dist/es6 -d dist/es5"},"author":"","license":"MIT","dependencies":{"async":"^2.5.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"4938cfbc467d7a5eee03642dcfb2565428412595","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-PcY87DmI9iTybk+yAfBFyH5Abx2WBV5hWlXFicdiYDqpSBd2eWt7llAMfSOtdMkP6tkVYo8+9WEbJuHMasAsww==","shasum":"c6a0e915808d43e6fe9246dadcf0e905e3ed3117","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.3.tgz","fileCount":168,"unpackedSize":687050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5FiNCRA9TVsSAnZWagAAx6sP/iWndUKueT8SZjpAd6UW\nkEy/sEvFdUW8xmM3s4QvmWrRvcdDdcR5LYqxXC0/5T9IwYu5rzDHmEaq6RAy\nNy+0+9pZx5E0WiL58GOphiM7EmMYh/vzzuQ9TLZrFX2JowvyWMbkbdcbwkFj\n4V0JXeSw5n73IUrf1tb37+eef8C9QvHlM6UOuTePHAwYcIflqH6jZ8HiRyDE\nOsLrRKaya6qVOa71R6Z0MmD60HHsPIOIPU8X3ntoQkAE2hczV/w1RF/yMGDV\nU3ruHFktX4W0IiQnLYm0nfI3/lpQJqWrlwFp92FuyFooSQJDIjoa4TWdFZbY\njBeMx8XnDfb+hubN5M9sKM7XRYs1GWyob8XF3kDa7LDAM0KKiE/SU6eUpoeo\n4cVR2aWDSkW9nGvlyIRKF4TkqzFVAe4PCPMbfR+hOez+VTDrvJQSVcXB2h/v\nCLw0s+NYEHi0ea1FsfjVD59t+qOwodRhfsqPVAF88/3t57VSC1G50CFAWSKc\nn46CxlJcYE/va+h4HtQL3aPUzUUc7kWpd6nZDzT+ZB1yYjnCADlsjQ6uNClc\nIEQMYFzhaLf4yfKhf63NgUdgkBeLAHXTdqiEFBvzLSPusqowFJSvbJbCqVET\n0hAq//VFVFAd7+WIUhBiH+VO85X7ZgkZlfBG5kOHJ3dNNbu0+ZutBhSPUvyV\n1xAy\r\n=0z+d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrW6HfMKzBc2z3ra7F8zvQALGLf1iZSFh7FIGahvASaAIhAPAftosO4W4272JAEQ+CAgN0VWLWf1prDRnVhL8Sjtvw"}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.3_1558468748579_0.8139832436085093"},"_hasShrinkwrap":false},"0.2.0-beta.4":{"name":"@bitski/provider-engine","version":"0.2.0-beta.4","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/es6/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && babel dist/es6 -d dist/es5"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"5e69936eb8d0453d438da5cf69bb11136cf2fd27","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-nIDg+dA4iGEv7dUpHsU3hr50stFevDOtNh+I+hpZ4io2K3I1DpfMEPlUmo4MWqeCDKnvDGjEpgZgU4IJkBL30w==","shasum":"9ca41b7d74e47af81da19430cdc45d1409e36a92","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.4.tgz","fileCount":168,"unpackedSize":687534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5Fn7CRA9TVsSAnZWagAAfUYP/3SNYxQNsofeSJ1bDDbb\nRin4DxIojO01UVpKaax70bmecWzy6YyeYhO/sjWE3kYCFim1uJ31Y4lMndmm\n5PqMiXQxbVuI3e/TDsXfm3y5trlWSt5ifpVhThWVggx6WXsJuR9AAvGKxAmL\niDYlEtDj1b2P5R3gSJqBQaFAxg+PAPMa2GbgAMplCHLod2sKfnMGiDsP2yfE\nP3yBKD2MynMBUcaDaVKF8cq4yXnkxPw0p3AKuhaZqYR+PrBWUaYX47VWg6OT\nPK/HubJLjp2rXS0PXEkL/u43whFjEv5FytYSiYoK2kgUzHQf+CcvoNFiRU5o\neqJSw+8X/og5t742oYc348oSbDuoqXCIrebd9buqfURr+/H9ORiHUuD+K2oj\nOuX5q76jAJy4sCqrpDBHfrfxfMrp16k3s5mGIkGPB4PkoRxwskJtRg3Tf2Eg\ncgj2wVs2b9BX25phwRtsN7SVyK2GyQbza64PcdyZYBHN9Kup80+JrgsMlPbA\nqUmMG6I9TFb7djIniPvsC6KSNc9N1vp5g7VOa0n3wvsdFUbfqAyeUf0dQ7py\nb6DjCq5vUFGdVHzhinzs+ZLon+P8H4P1gIe6jaONAgZlb6mfY5YUnDdGBU/x\nQlQRNW96g8YI4D0Yp7nkDOXt8M9rj1slJczNZHvJy3I1AyHKFIZLhw8iw0KK\nKtVS\r\n=z+89\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH+C04T78Gpm0tYU9NJCcsWp0KQrIWZyi39ecP1Hwl2BAiEA9qeIJoZNoStp5HNoq0hFklirS7oUuMuJyhm5Q9ef5GM="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.4_1558469114979_0.6847270343617278"},"_hasShrinkwrap":false},"0.2.0-beta.5":{"name":"@bitski/provider-engine","version":"0.2.0-beta.5","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"7de65aaf023afe6fe0fb457049fe2bf571c174d0","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.5","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-hJBzr15aM79ciW+bZHYrAdE7ctpvwVtqPQKaWb9eHkkQ+J2cAYwvKIj127zKNutp06OdMKlK5xor5Sh1B2deAg==","shasum":"36f9849f7cdccdaf82e9cd60975ed6e747163d68","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.5.tgz","fileCount":113,"unpackedSize":189974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5GGUCRA9TVsSAnZWagAADN0QAKRH5aZtoBIJtSPIFqIm\nqznpFzA+MKhJvb8c2W52xvGfw/wScseuUkPLG/xCqNitCQBU1OLdn/1GVX06\nUsRoH0eO0lg9U7mGNxxyk9ypMDsdFdEjnygmL3AvVGD+8UbqpoFOCK7MLY+o\nKcDQkg/GqpIJwG5863pKNCpa6huRlnqcvGJ3kBD2Gdr5MwTy65IQq2fJksR+\nS85Vl+UjUtjzHc11hH8cVGmvpQdbkFvtRrWW/WpDB/AD2rOvqqLAUqUUvVQg\nsPDTG4OVtFWvOSKRyog5XM9TRnfLlcP1hH1xDh+61pEDUDI2wUGlX9AMj9LK\npdEzvvPizpUkZ5Sj2o5pyqTVXwnx6bIuAxGYto0kdV5wWLofKMPqtfZ9I8yb\nbj1m7Vw8jDCS5I3aLcuIgBJzIIYb6pFkliBqUzZp67fcWVeZSTqy1p3pd6sy\nF0AwvF+sbIngSe2HKOmOEAAQFTALE3CMKtrh/rrfGko6uDF696hjUEHSews2\n0H02GiPcOi0zzhK84NJlfT6UYN6cP4E7+cBap7AvyyUnWB6kG133wfYWcCkS\nc8wuOn9bU4TuiLnLD1Ow/lR2f2p6Fp7Vla/xX8zSkVMumVpim85JjQtAho9l\n98M01icAP1m1K9XVxO5Lwp2omKwBVr12PSwPeHCfecgnwCQPeZBsWcpNqPlm\niOlq\r\n=QHnW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEO2XJt1uZ0N1XBpkAEM5ujZzxs6ky4uahcb6wUX4NSZAiATdBzY0KgR64O3LwXD3b9IPkDIwyNAwNUghm+KFxwUZQ=="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.5_1558471060303_0.018547828789235332"},"_hasShrinkwrap":false},"0.2.0-beta.6":{"name":"@bitski/provider-engine","version":"0.2.0-beta.6","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"64a46c5601691cf4e1191bfff4f5df271aaae51d","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.6","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-xxNAwvAcaaC0psWzCv8BUGmWdRt2Frs8QDMEEgHwa2UKfq0m8IfV87rg+MIgnNV/G6X/CyV6fsXFGBzEach9oQ==","shasum":"f2e7621d83fab3ab2552b9a38550933db0af6966","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.6.tgz","fileCount":113,"unpackedSize":191083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5GclCRA9TVsSAnZWagAAtSAP/ihsLWpAOft3B4jYnRPa\nzO+OZkB9xQbB+fRPwSiKEk5lC1kRizw6tsUzJOLwOeEdEa/HJNd3kd3JvgLx\n2ok8SnFjH4+wooQAtwnZ3B905fMWju0bdiRoPmA1XW8sO6y56MGxAuGNRw9d\njAr3zJqPNFyicXcpUHsnNKZ9k1J5eorij4kU25an6rFa1ICbSvtIiXv3XQMf\nKAqW6MD9rRpPZkQpDHYiLpFvv5b+3k7ngHvWInIZ3s+Y7Cie4RLSvbofFAuX\nd/qYgnvwPsRwLOseJ2n3Os5DU41dafZp3maLJiPAXia43pCLGr9NODDSQkwk\nPshUyMJcbczf6vspG2evFvLwU+Zd0MQx1U/Hx8qUZCwTuG3j3/FAxST0Gpj6\neiX/t5iXlfo75CCZI6FgRcfaHBi+4nPpjmlH0TmZ3GTj5g8K1kXl658xIfLB\nzVqUgeA+yN4iLCEzFB2WC2vSkh38Emo/7Wvu5NUfZiBCnmtX42km8FzpOJPI\nfhaifl54clUwvsotB/R38T1Liu7uO25YPyjUhCGSzkdWNC3CiueavIq/wVfb\nj9l0HijH/p4pe3eczJrQ1cp7zokXLaYu15mTu9GVqODPnBiOk2oYVyrj7+PG\nscH1rBfo/dKohY4CUyYVz472GaeEmf3R/8ZTpvkHyH5SpxBx9gMRTYxQaG/D\n8dDs\r\n=jJXM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICku8Mdkx0b621GG3HlYawNLDPD8pjm6WrbRA5CrglfqAiEA3hb4DrIBAiZaoO14qVSxnOWCWIVmS+lHZY7R+V8Cfp8="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.6_1558472484371_0.09703857225142776"},"_hasShrinkwrap":false},"0.2.0-beta.7":{"name":"@bitski/provider-engine","version":"0.2.0-beta.7","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"4553ccc5bb3e66320d22d31b16879487847d561c","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.7","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-0cob6dMVu2dXvNFiwlD04Ts7VfF2QxkxDv0gh3eSFTBTkQROvXPaogLW+RC/6D0V3kVfd98p8Bpstvw+u5cFrw==","shasum":"960f65a87eede863eb472db2719482771c7b51b5","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.7.tgz","fileCount":113,"unpackedSize":191115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5GiyCRA9TVsSAnZWagAAbkQP/341cst2mpOl/2XJuf0K\n9l6KPphLI6rRKBj9Le9vO8+9iYbNjOho0Gz8XmEMYnX2WR3cT8aqrQ2GsOgR\nPjkF5PyY+47G9huvVKb86Klc1riH4ySJ02CMdYtOGWSvPl6k7MmXnjS4hXjK\naAPBvEMUj7CHolRwoqBgTp6rSgHJljwgvZzQWS1o23zHrBqZQGuV1uEUX9iu\ngfqapLh395yZHHZmANmb8j82HpVvqk1ceTdc7bSkKl+Rz8fQ7T2n5hrH3A6K\nnJniU8o/Gnh1IHMxui80lR6svr66PV0IIx1TNieBKPAvwtgy+wWxw2SPpzky\nQI5WKN6ukeOq3G0i1omrCdrxH7nOzBXYCyN+ABdiaqRVJS5JRBCZqEAniu3p\n+3YYRmn4U586+YjzC6tbP0ApjXforQGQOBS4YnO9C6L7xitipx1dstXPTQsj\n4Ix/5sgqfHnE33hV411F7u83OqJrUWxDKdha96Y55y3Xu6Q84RcUy5nsSJQu\nM4ApKhNV2rI6laAVSXSXYUQYzITaqX2W15zoFfNqqyZOYRcqNdD/FK3lbeEz\nlWPA/BNpDLbMav3qyxSb+f3bNops40qYKSDUrF7/vcRdgJjKdME9bWf2AQ4Q\ncf4i3rLC2AlV7DpC7iP3WsWFZmkHZ7TIQF1EdDj3XzpTJ6S3tkH5g9FvVz0p\nzulT\r\n=pEhs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHnPlycg+WffYiSE1957GTjsXSZ78KdK+q9ki/PwXyQcAiAPUXqq6OszUd9TlKpQw+sI+eqyTGTWU1ASlxFeVjq9GQ=="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.7_1558472881639_0.9355055163070742"},"_hasShrinkwrap":false},"0.2.0-beta.8":{"name":"@bitski/provider-engine","version":"0.2.0-beta.8","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"d9ee4863537bbdad87d1fc94dfddc2e42155e8f0","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.8","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-ra+9yBRptxPg715i4k3et15uPGL4MJWBPbDumudrjmEJVeRh5+Tu27f27quFhOclJW4psbfrhwR5DinN1E3MKw==","shasum":"8fb76a9b23c32da64ad6284a01975d0b8bece26b","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.8.tgz","fileCount":113,"unpackedSize":215297,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5G3tCRA9TVsSAnZWagAAY9AP+wRXOtdBp6mxK8IWEW3o\npJhKdyMhoUONiBHIXaMhKN1Sd1d7XSz3HKcT+jebuqLLothnHBL1xygHXd74\nrf43MDZyIlHeRBAfkUJfFAkCMdYE+1oycLcnQSrUJYUx9DB4xhr9tHsqgoqN\nTulq8cGQpG0gQPLNRn96+XAeZsw02oyw9CHbv/l0TAv+U2EcoxzmTjgzYuRf\nM/BwSG+nOMsFLM/LU7DnEpsuf6QLrmMvIWHeBB5DMe53sMPDP+U27HDR99Ds\nBDcXiWkBAwxSG3hyCF4mfdeFSAHQyDTscgWdZ3vn/2j9HQrAqBId5FguHYCa\nOws7133YPla3N78KoTxKedkL+VamDDMhjC/CTIRm7H4q2adg1mahNqGm1qJE\nyMlHRvqO0axpVueb/O2nityXJCwrnHPzqkrsZinrm9Lw+fqGn8sZSpjXAhaC\nzmbkfZzgT+tN9cLWtp00FwtaAlRQRXBkAfXdjoxQQFWyxveF/8CctfAZO9cv\nWDkkQxCr169dBJcAR/dra5fZGuCAyn+Ksn+E2xNEjGfcmd+HJX28BZ/2KvpQ\nIjIZAukURYcHgb5QwKch4+bTQTgXJ4LkQv08Y2Xw2WPH2ElLjuOUL0k5/FOR\nXZP7VpLZUFU6GiLWy8IX4GfeuKnK3vSNi2SJ74FTzw8utNa1XC4DBc7mWz2s\nZovq\r\n=O9dA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbwIh5VfW9S5u4WMIs3PJcykgOn2PaQNqlfwEuQzbc0gIgRCHVuq6ak1H8XxXZKtL/k0t7hQ7Jal6mY4I59jriNqo="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.8_1558474220799_0.906740571244715"},"_hasShrinkwrap":false},"0.2.0-beta.9":{"name":"@bitski/provider-engine","version":"0.2.0-beta.9","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"56cd7b90ace4a4d5902132a4d335d16d832ad17d","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.9","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-Zfsd8BiVedQjw87flHdJIKV4STZiQgspmA0Fr7DyHXTvkIoP9qYubijmXFbsAtXhDrLdd1+fefLZYEa/Q5hMug==","shasum":"8ee70c5b0eb823a4854f0ac0eba0b64767b8e485","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.9.tgz","fileCount":113,"unpackedSize":215552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5HGbCRA9TVsSAnZWagAAH80P/RT73d7lbLk8+0DFwiQU\nJ4C4MadKPfEVU7cunb/Z/lryKmtHTbbK7Png0kgLqVVAFIt71Os+HRvvUzea\nsxiyRHMjbPYVftxxZi+e7UubsOhX6CmS/zXYwVBLG0zuUy4e9pk+1dZ1sN+I\n5CazDKRsGkkumce+WqkzTrDXTY9RkItl0gyI7sFPhuXIW9+aFwi3Yhu5/eHq\n/3z2rnQ9jYl2JrV3qGLT5jjhbp5E7hB0xGjw3NEEfPENwYGX/KiOkm+xKwyD\nSVX1E+tVonhgMpsNQzoCC6JDaz3ocSSUf2QAdk29OoJb8I6wTJx3S7JEnEcn\n8Rxa8NJhHtDWM68sDSyOsn0upiJjLsEZbiJj0KUJq2lCuqV8JyTW1vf2MPQm\nEEvJSMDsix1iXeLLdGDsKQryBFQJDPrsNoVVGLmYazX1KYpUO8H8CtyXAwPS\nt8nRAwKJmKwoAGIT3ijsmNJBiil+PaU7PtMoUr1kIqjTkmi7o+dfEjSikY4n\nwVsX2FCtlRkBjSvttLZoYCfbtwfF7B4mcqf2BKk3ZYIkNhX4NW0skq5e+Bty\ntPodRaqDyAbXkVXB8n6XOOEwmm1c6IoVV4gVqtEBPTVo4OkQ0nJaPvjLgRVv\nflQDSa7fMJsCnR7ibUkmA+vy/MxSvsdlciOWHgJnIqJFVvpR9jJQa3NUCRY9\nbXil\r\n=7DRS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQDPeLdBGaw12BdiZ83BH1gI9OQtl3vVvPPxx1RjRNZ6SQIfKLtgKfT/V/Z0w2iOsaCqLEvCxiSE11j+UpJpBmGyqg=="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.9_1558475162696_0.28902575367099304"},"_hasShrinkwrap":false},"0.2.0-beta.10":{"name":"@bitski/provider-engine","version":"0.2.0-beta.10","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"f4889657253bcdb324319bc3321a5d9c231ba65f","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.10","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-xAn7+fkNd8gzH2vTBMr/6sEKUqVvBZsjqNvPQvYD89cM7hWoruLXw0bptvpqHCvOE3Vp7huM21ViNAcgXRGQ/g==","shasum":"16d05a93e9511f8e911bfc5223983bbb3bdbba51","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.10.tgz","fileCount":113,"unpackedSize":219655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5HZUCRA9TVsSAnZWagAA51YP/i7Hs0OoqNplyGLmc372\nHwVBRE76WalnWcUxeT8GBij05cj9up0lnHuOVouUItjDSG+iPJjW3TT50CWS\nlGwyDgQinB0gu0+yZQiZXuZtvRr/xg5m6LnSOhvCHDOkuoumzUpxRwtSPKMl\nMdPnWhV/kSZUtlbSGOzDRgpfxJrPmyyfv56VGbYzk2YOBZ6PXJqVJHdG+GO4\nsp0/BlLxNr6y2OFJV1tYndJBn5uKyMJa+A07MDrv8Rdfbrb+4II+RnthTy5S\nOhmFOEevpCISQjHrOQ9ACDwMtnD2pZEKFBCthz4YQC2kabbiYXHtDCX0J4R0\nbM4dsjeOdQWN+NwhlztoUNjdIK8KkuX1JC1HM/wBPgOjua6uVCf4edOLItCz\n2/nN0LnVnrKw6GLhJFd2S7A20QhZQ4FlfVoOKPXhr2UYQCGsEUWZkIZ8wKXn\nj2bksGjYhsiOAw75dKfJjTnouSRWRkJ1O5gOw5NUisbvTUuuda7H3DVrZMaJ\nSNEXwpzsOg0Bit1TtmWAmjiGigQG7oaqM51nC9O9FTkgbQqQ2KgFmlM2gcQw\nCLN6o1YKkKfFXhhlkDBU216UuokSwgzD1+Nwo+miKETq7+M/mw8jXl63XlhZ\n8CJYc5Jw3Ov6rqliSTJxfBDeQo4sjWfjS7c7BeZBJbRvvtlJwaQWLsmLMdFd\nvlV6\r\n=5I8e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHYvrt/NdfMPhcPml09qURgoeDWHxbFx9vBaBtUztWwDAiEArs2B/HXigrBEDySbmVxKGP3nJt44O0kjCqDqSK8A5tM="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.10_1558476372107_0.4716234307613858"},"_hasShrinkwrap":false},"0.2.0-beta.11":{"name":"@bitski/provider-engine","version":"0.2.0-beta.11","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","readmeFilename":"README.md","gitHead":"a17d8e21b44374b443fc5f8eadad4011294faf65","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0-beta.11","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-kdvcjwhNkk4/iv20nXGxwHw4E/y18qlDBa+guF6q5q4sZ3PyOgi++5y5sAPXIhMbl0DPBKHOy9Ca58Ja3YTX/Q==","shasum":"b146f959f396e1f439df2e189364da062e9ed257","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.11.tgz","fileCount":113,"unpackedSize":225464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5IVSCRA9TVsSAnZWagAAehoQAJRS3HLwEFwZK/iptMpQ\no5REz4/KfExxWMnGlqO7FwDZ8YHTUKb16hqYkkTE9ys1YRRn6DPdvzBM4RX6\nOFMfxHS1B3fUbi2bdyMsKscm3NBj4PI8yG5/UlwuU3XFYTBtoGE9OT6kSOBH\nhc3R2NwBqttP2/zLhYB/Iv6QIO32EJsO1I9Zo/RcykWk+bDDf7QEMJsdnAW2\nfKezlkRGeyWRTZaTa5KASLrn0eu9syv3KwNlE6CCKIBpdXD2QxyLnqT72yKs\n2sMK8UuTYYjzQA22RgSyKhPt0Fs7KQpU0iEsTTgRZljXJoSbkwrMcqVo03oa\ncdh9Oy/ycQEjGhfK4sIaZytwQa3BCS7A0FipmLWS2cNUV36B5XNGTMcdHPh9\nP1jewxHssyXjFMns8q7/yYFepppSsREHRUfppmK3H6L01Q+4KwnMz0wAfr/A\nzyQNInw5yHR1GZMEycA9fME4riPyHrPJ1xnrQgZZH5yEzuvB3Reh7rngcYGU\niftwxYNEypoynTP4zH/Adlua+de+HApfKkYJ3bzlq6hWEdkeH6fgD7e/tb0V\nv19qgnhtZDBPMOvDKXi7ER5yk48oT4Hit1jxaH9q/UjA/9O8qq4rQThyCMw8\nPYRXCJoegx0ir5zDIbi9NSvqGtDF4BUBb7JqtlMicKyT1igYaUXy3KlLDQ9J\nV+Du\r\n=gnzk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMDA+SjcBNrWEpAeM1YC4+oDk7Eekkp79eXPUx0OiWPgIgOJztwkFV/MX3qXqKwjvEWgFUkq38xWLCbZSklfxmlvs="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0-beta.11_1558480210060_0.5693918172818275"},"_hasShrinkwrap":false},"0.2.0":{"name":"@bitski/provider-engine","version":"0.2.0","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"gitHead":"1684600fb94873af63b1724fe9ce460746d7aee8","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.2.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-u0qhCJ03MxhXLvbW3CmCRQ1F4Y7ivRzKdrI5W3qllKzZwUYbASl/YqvFn2uiCPWuq2YT9NCekh1ck47lQC6fyg==","shasum":"ad1f901c1026e560d39ebe714b0fd12bb12ad951","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0.tgz","fileCount":113,"unpackedSize":225456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5IZeCRA9TVsSAnZWagAAGbkP/A8yFFdD9y6ri+EyQB45\nlZD8aiVxBxyiYv+ZA8W94HgmoxmOlGNZCrknUabt0mb/q1sQcD41/WMLBUUm\nHyI9PhdgeJzSTW/Vnkb8QtRpuaB4f0Nx0ZNRMX6qb3aHOu/sGSjiRnLjDKJy\nz1KigOJpeH6UsT/6f/9YSc79iuatpiJOGjQiaSlp07IwxI6e9M3j4DKwtYSC\n/haROgg8tfeUjqg8bClsFb+o70pKJQX8q5eAv1cdYkavSnMSYdzvghaXPiQ4\nbN+0dY3L2a+3EoLBQlHQNTh0dNLHOpRjVfAQ8j3QKqT0v3eCuZo2EuhZpISM\nqnGadj3bYtck73qMAA97jJDAn37sF+sn11kRoCF60qr8YSu8d5vCkqPlE2ZN\nyDGNj0a6gAs7Y3TrfHmQTDcq91z57bOGIxSOao+XWKphPyzM2q/I8f07pkSV\nX8YkOLSuUcV9Mar3Ae4jczX6Cuel1xhswoK1lcddnYu4LD2skTeT94GB8OUf\nR/X9HLN76GybhjaYCkCe44lFx7sjqzfNQGYsukm79D/HQOqpIrEAREWG9+cp\n0p6HXjWTM5as1NSP9icSaxHt0MVfYpoRCnk7KsjAjZpgZyHR7DpSn7BNbzIp\nn9UhENHbSAaoc7E93TA2/qyn62Eakjf58H4XPYKWZWQwPyHzoc57oftRc2mJ\nrR0l\r\n=fYMP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNgV/zjEJ0nm+qrrf4yiZZrHEh5LiBayjrxc3NVWUrWwIga4QBRsp0ESw6HZ0oSCrXsspDTaQiCE8tj9a4GexeDTw="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.2.0_1558480478120_0.06717809420432563"},"_hasShrinkwrap":false},"0.3.0":{"name":"@bitski/provider-engine","version":"0.3.0","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"gitHead":"c619b2641ded1e3257152d0026f4592843d090ba","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.3.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-Uv/tRi0gwp1bLwbiucqW3rN+5rCL5oy66odVlp0YbsonH6AEruvOQAEvSzdbJwUM59fVtI7a8JQPVLibQQ4uxw==","shasum":"0df226d1ee822d6a62e9dd6e6977363a4262b9c8","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.3.0.tgz","fileCount":113,"unpackedSize":226724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc6HyrCRA9TVsSAnZWagAADvsQAIrd2MagO95DFRVzP/b+\n8R5hOeETVMhulGcqiP+tfnMOvqr33MIYbCBdbFSOIl9U21xhV7jseWztYtve\n9hOkF6DUpGGzzr84d4eAmC34lAKQj7ZLSuCzR8L0mcbiVNrJh+WHDV9dAxr/\nSCm5jHavTcjWU9tBogDBFzOmikijU4VQgt9mrLC9JtlyRiXe9MQjmDAFZI8L\n81ATtwFejcYnaTdjjHxP1sUVBwu0Au2iDfdALHYPq4OjGYNmPzIY3uMCNbP1\nT1VHF61t18dOpzfHpdwyhwCvMvo2AUGsuGyn3KhMV0gL2+vXWhHzh94vRwpj\nbNjA6AiCvbjDKk5Bhs+mLmMtwQ+lRH4VZrFttBfMUIfPDRYsc7PEC93aTtT7\n/zZ5BWVHUnkdLzvsfprd6M6rXZhokDLXGjOu6Q6IcMAAUgn8phJKwxLRt7vY\n52Z2pYLa3Y5D1DiY9IWKEYSrnL5ETUnZadeOMpURXlo0ewB7D2HbvrzSewUd\nU+gBHtSRoIgRSeucdD+P7MuwNtBK5Xj804xtg3qU+EM7pJKoQ210586dTrnE\nihM+Z6SZztj7HPuvoe7/r2v2TIqOzYNiFuoqxHWWqyfYa7xPW5OdG2OEqh+4\nJlOhYfzDZs/H5+XHSlcBI3L7ZuxklQFRk6aLJ+dC+B1bEqosgXQuap3gUlCa\nfiVe\r\n=CQiO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQDeEAF8qeZ05QGdISzCEsgnayj24Uk9DYRlEgO/jPxY+QIfO5jvZcIjg69nv7hwrhmA3X84XG2hiZMZZKgLtO/NAg=="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.3.0_1558740139078_0.36762225722258224"},"_hasShrinkwrap":false},"0.4.0":{"name":"@bitski/provider-engine","version":"0.4.0","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"gitHead":"28cc8286601357a8e8e177059b5a20cf7fcb729a","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.4.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-rWePAJ4r03B+DDP4pM+alf8UCBrxFNPsef0bDd9jK3nCYkiwnGRI9bviXHG0fkqAsO4Ob4zAoOP7fKW28/3gJg==","shasum":"6f2e271c154e851e34630bc569e5ae2312bc0c46","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.4.0.tgz","fileCount":118,"unpackedSize":234669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc7w/rCRA9TVsSAnZWagAAtc4P/0hdTivmD7GIe4YIcItk\ny12sFTqCE0fzzqXgyF843tR1a6ZAvdtdUc4p5m03A/rEc2DbDwHZxQYnLNPE\nzrvarBTskQQLg0ThL/L/RrXF3wg6RoqOSknuL1m96FJAwSEeHObivQCnvFrE\n9XHFeWMjJdOa9CFT4i8FiPQ2fZKxWHEC0DZiJvZzAtV54xQZCXFPtdm3jsuf\nnF7jcIxqqk44UxHoQUH2Q+EEbIEkTSLL4SpnUVsAbP06KLQ9N7FbBZY/kkX/\npLA7QpIH6KRK5NGzln/09k0uQA51V+j0xCOaOECmUS435KggcRo58Fjsap84\nXDaloAm6ck4a720lwjIlSYkq9lffPMTRAbBU/EPks0PKrEGnNWg13SnCJYsM\nsOfpG+KRAvmEgDHzi8LyI43Zbm44R6vNmZH0EL8n8uK1GrjgqXl2yvTJOF/x\niU90ZIANdWmYn5HO6QrQLCSkuceaRQiaBEkODi2fXcNn0skJt926hpuU/lBC\nIcL/ba8C6o8pVO8Wmyi+V8tD6BFOQyhkOY9EdGOxCNatd5gd6RmOM9PrZSQF\nNxK5MO4pDXBgGYoW8+WlH6YWjTnxsJANqGD4K9Fold20kG02Jl0eqRD4paZs\ndKJLcyrLQR21jmfhskydtiN/ciJV8G2JXViKpPc8B/BuSeejbvWTYLzfK1wD\nNmmw\r\n=dM+y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGX5A9ilp84SUKqTNYtvSd9FjT1YfbBoiCl3cJ5FxuldAiEAgBSuI4jy8L4j3164OXP4ddXpmtqlhOJAzplVgBtcjM0="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.4.0_1559171050382_0.3782085550697909"},"_hasShrinkwrap":false},"0.4.1":{"name":"@bitski/provider-engine","version":"0.4.1","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"gitHead":"f1ab7d388d3fb0535a5d208a809369c0b5e56f64","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.4.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-/10Dc5WmnR4mt2tY6oHmr6UXGjg/HY2bKxLLPuwlTGrr8w3zIyxXcSkAENBDA/QVZBxrpajb2P/Lt9GhEdfr3A==","shasum":"462d018ae553b1adfced5bb0f2cf5541ca26c4af","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.4.1.tgz","fileCount":118,"unpackedSize":234801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc7xRFCRA9TVsSAnZWagAAqNYP/js/aTAQt8J4mHJ2C1Az\nMEIutVE2coe8rMeoJgunNBjC/HpvdVHMqL/490x3Deb97iQ7LsvULuCTQQAM\nmgphJCTQlwAGAIqzpDRh3hxWvcrgcaf2tKw1v6zTHOUSWMfwg1YaCvNVg4Sw\nI3O3GHsBPG3NCkNaqdXw2auN8YQrOO8t+nNb2G+kJBS3/Mq4F1i52CZ69PsY\nW7HzSG3ygPDzflKj151zT4gBjizZGxFzty5j9uo2R9ZrrdJ2l0TLdmwOYfaN\nEG0knnhz4zGjPTMbq7UEiLJPXAZscN8RMlHqH3HHOOd1PWn/E+RRFEN/lrJd\nbiiAiPRXinzITkctgb0/u8TggbTnBM4kKQk0UHfmuqWUK67INHXnSf8GnGEf\n0R1OUQm6EEbjNTaBsRoOdWPBw+Eueh13giriCn334qIPQBRUhZ5KA2BjXig3\nANNbELWKaEHFfdxevq/vJ6dby6+Xi/YRZzCaaxfXeWAV/4FrdjJOakX+xY1L\nTyQiBQEaXAEr7sox28Xa/kUjaFO52XtAb9IOCr8Ns1ojAfntOGGh83G9WMph\nhyzNsWxdnKlsiv7Pmbp7BEUBbJD6jvSsTQweBvKLPmgtF0E67uoi18FNJ2TW\nPLt4G2KbfPZrnd9q1pTj+a9sBdJNNE8mTKczvZoKZPwVCHA0O3WxuIGTbm2m\nD7T7\r\n=49Bm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF2D7YwU9GBoncYIFwz2TO/ITJ8T6nvWXr9rIN0uBr2mAiBrVXsnV1vzj+jSFVngdLORZawc1IcumgnEHWc8sP4vww=="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.4.1_1559172164628_0.790374483163921"},"_hasShrinkwrap":false},"0.4.2":{"name":"@bitski/provider-engine","version":"0.4.2","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"gitHead":"5f15b158b4c08f23d875ba42247ab088602397a4","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.4.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-zVk1CROUNq5GApugusI4zPJgIueEcqfJeQ8QSUZnM2dV8bNLJXpM4zkK3ar0xqGKC+Xs5h5Wqr7QxOs1Mr1YDA==","shasum":"04077cb4aabcd93c87b14805a86730f8c5c57c72","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.4.2.tgz","fileCount":118,"unpackedSize":237265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC+bCCRA9TVsSAnZWagAAAEgP/A3Bo74S6VdWtu1wsLHL\nditcJaTwfQk5rFNolyNpeJiVIKC8ZN5oLYyyvEZUYcMkArgIz9CLtS/bBep0\nop30HasLOUHK4JL39Xli2z33QNS2qEGnKZAgeSd5prq8wBrwrIA/RUFFNjF4\n9y1Z/5XZqvrJEpDDGDGfHHJpD7we4O1xtmyX/cILB0WB5ucLlk8y+OOwIzOy\nl5Ui6wa02gITaFHOXFTD7azjE5t4WoZXk+Dffv8f93UHE0R+OEoxamOqGAba\n83Tb011PQLL8x6r5sjmYdlM6nZHxNXQ+lIVEtT/toVH/kQCrElJz4e4ujnYU\nHzjbKbjuRmbPkrVMXo5jrvTFfDIki9mGjKkvMST4vORYUYkgba/qVmC4PNwd\n/AtP6V6e/Q8az/eYOR6pbiz7dLAMkOOYPMr8v8sXZCs82IC/rJeUJxp1CPTr\nRfS644WZOOrSURVx12qegTTVYsvCE+SMKVBa6X3JbryWlY+xXeuqrx8cEpB7\nTN9AabQv84pYqMgVRXmHKW3PJHmbwmIbwnZtmD+kL5JK7kWL+7Pds4XlxehO\nGb4ecbPkEerNiwsbWclkMkSpkJ94olA/Own0WHKDEvkTAoT+4y0I+e6fLQTU\nhl248bJUkk/b5Ayco6kst0s9NXMTpUsr5PUzLkw9xtZIotD6jb6v5Yqkdn+a\ngtYj\r\n=6+nm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDs/8vXj13fXrzf/Ebp6ihVezft5A+oS8aQwsA9ooyFzAiEAkngTOwcraKgQjdlJwGlkzvqB0QMBykP9R97TD9Ux0sc="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.4.2_1561061057816_0.2679888974006732"},"_hasShrinkwrap":false},"0.5.0":{"name":"@bitski/provider-engine","version":"0.5.0","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"gitHead":"2d732e625d9883099e2acac01a38296053adb91c","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.5.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-Sss2kFaPM92YScgp53YnJrS4Fjc+bEtD3Y5B7OzGzmHgzvg0VsRx3ffDuiJjdj8nJMKaCOOeIWnt9caWBMo/aw==","shasum":"ca24cdc00b42fe9142a9b6b7384946babb549147","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.5.0.tgz","fileCount":121,"unpackedSize":242521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDAwICRA9TVsSAnZWagAA/y8P/iyNc7oMME4FwjP3Jfak\nL84oC00/mTHMJUwc4YjGrisj98NsADYsbdpt3sTsuDT1QIWFtTYRJPhk+EzZ\nhAGivmiIHbaAEUdxNBAr3H/fcuRIpR+hxZG7k2BxBCSxkkzz74puLhwBhGLh\nUPagIDvzIGSz+N5FwmlWy11YI7ivnPdjZ3q7ron1M9cEFfYphqIfmgFWAs2D\nlzVbPsPjruLbIUbx4OmZz02xf9pXpcPoWQH9QTzVGVh9nxQu6RKU7RoZBsuT\nogaVTJXqv/v5f3Zs7WVT9gDvaLYMp56rCFd7ORH4s7HdnKgWGHxKQDcOosQh\n28lQ67YXr0TSet75057n2armlAQotYZDBNltXwhcOwXAV7vtTA2ZCNNywwvx\nxSEJ5jcmJTC7bmmlJGKhqXs1fv76iSl7Xw4vRVDiNNIhDfwI4EJ4JLY6EqRB\nOZQnHiSAR2HVd1mqc15fRNQFIv4JCGaD0YI3RhiNl+52iD2g343sT1SMbcqf\nja20dvzmsFhsE6pkf/HnoR7JHnYdgGV9TZr9T4B4TfWz6QCXtjCvMGE4kNV7\nB+sjZ6dgglWBtw3wQ6vaaJZFS3uztLwObe9cBAnJhghDQzKuVZ8N+npFdliE\nCP7EHTbzynayPXa2eiS71tFfj5MoEVSP+uKT3jdojILHWJqA2+RIUFZr/fMM\nCgOl\r\n=FpIz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChIJ820K+hiei1a8Nb3nZ9zTuxFhtxwM/VRKA/jWp2rQIhAIS+dIhhtpYIfILUV9IfExdP6zrTT8b+WpsOK4qJvaXd"}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.5.0_1561070599564_0.5263941267623913"},"_hasShrinkwrap":false},"0.6.0":{"name":"@bitski/provider-engine","version":"0.6.0","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"gitHead":"a6df9419fa1c35acc0fbf2d4b36e49baed44aa50","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.6.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-dCYdaBwew6eCckJdN6ITkmsMptnI26hGaJTWKOeppEVaFlCv3IgCGIC4QAhmbNlGXm5u8HErq3YTf7YDrw7GSg==","shasum":"4ac05436625d8bfd0aa43360b1ec0b523f30c76e","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.6.0.tgz","fileCount":121,"unpackedSize":242905,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDU+iCRA9TVsSAnZWagAAm1oP/R2dtg6ZQO7wGvOWNOWl\niHyBDJ8SPMwMk7XPFUVP5ciAIVX6xX/+4XnSMi4UcUskRdgW1oUfeugv74wA\nXC5RewE6YtzFOKmG0NL9H/a7+/E94lFX9hpTDeO4IJrqV3ig9tOdyy1N/lJY\ndCzT79DbAo/KDCf/7t5/WKHTFgsGmY6M6CC2yIofGwJBbE/7D/6aRLdZxd5C\nOBkdKw5BBA5cdSJRNJwUddGe72YZ/RfkMLMJdUIUYtgzlI2+0MtCzkbTJY6C\n8oa32YkF3Xy2jalnfNsOBmvcDVGYEZ9tSnuR3gH9jWI2L6S4i4toEQtflF/o\nSMED3qkOATLsH1ag/Tf1iO7ndwYCh42NA3RUy8vJvshH10ngMgsMQMA42Tsw\nUVtD7H+SQAMMnlqW4kTD9QEmuv/vBV16pFBH+ay/WU1IEw0nxAtFykEhRLqN\nq7/eAsxcl/+a2QzFizAqeGlM19eEcxXy3qCJzW+xVPkWhg3dzq2RCvxeDKdD\nZiw/yFMNRm+zT3zY0zY0Sl42xRi3GqAykrJmvQ3awi04HXmnb3LV44lOgFxm\nbuRt+FvA2f+5b7l4Sblbre0IFqx3mCTriQWyWk8LZseuZytLTsZ0/AjIjjpW\n5iFhqF/YUwfZyA7e1YnT4jJHv94Z9E8GzUXv0YIkdBjdtfCi17QLtC008Jow\n1KpM\r\n=8G0w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMgXVrlivu0hvVTAgWIkVB7lywdAMEYsB3ktUVy3PLGAIhALlgRiWiJnCPcHbZstdXMUvDMFnlegNmHIonWHL+ZNRx"}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.6.0_1561153440282_0.20645614628433528"},"_hasShrinkwrap":false},"0.6.1":{"name":"@bitski/provider-engine","version":"0.6.1","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"gitHead":"5a08b336ef5435a65efa6f3b7929274291527cc1","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.6.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"dist":{"integrity":"sha512-i4H9oKhhDEqQbtn8xHgtyD42W3uM/tAr/uizDHebdsSFfwlXxGSKuJv8gEhePE2m6vbUPCbuhEQ52eMp7NCdog==","shasum":"f1c8aea0b7e4bd422f11ea14e10687cef5027ba7","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.6.1.tgz","fileCount":133,"unpackedSize":257342,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdG+HoCRA9TVsSAnZWagAAOxEP/1qJd4PPahfSrKih2H9O\nfNpz+wvMD/c0Nwfg6cinrkK8ILNSWmrG0MV6PtEO/PUyRkNlxQ5GFoe/vfr3\nvhEvG4ItdZfwxltEibCIhq0sszPRexzpy1D5tqTxwznyCKGmHhn35LIf2VXR\nKo5zm1MIec7JG9snjSCp+sYxPyN0j0+gSqrFl8KWans2MWMC2svllukng2SW\nrpP6Xk0AdIzqGJwtYYPtqM7QkGZ5J+STziBB5n+PrVK1WzY+oJ4JbPKYUE5y\ngqUCIukb+LA9XtQNCInPkZwzKjbsXqeGo+Hzs39Or+ljd8Uzt0ckahk8aDSk\n0yaTyrVngkGS+nGBS0hQNEqZ4S/wel586rPISGia8OFGPOlKN40Dvlz11pIR\nNgj1XxeSWr7OPKVRKmGZgAZnBWTZCtms911ZjJBVJU1Cnd0CVDYAD77CWGtR\nSkKWaVLSD5o1N7Uec3Ktqu5CGVhzO9yNBHkxPqMl0dUZQIgEF93BOqR6grnY\n53Vex4osHIpf/eRBfID2OzPEA8IZ/ib1VoM1Ku/vxCFFJsEPOBdAbcXp5mB6\n7+VKu4qoXzGvEj4kkQYrVHq1SbX0WuCqU6OFqdd4Nu7Zdh1lAd8g/REYa0mF\nGuYnwTiD4fNRQcmGB/vqsd0qHpZjvyPjaFhMfQxN3eZjUI7cWlwiXKhID5Xc\nngW9\r\n=gDVz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYPPD7r9Np2n+1UF5YahWc5tdneOpSScmh6SUt91ScqgIhAIv3CI6KbUxOZMmEFS6aDFBSMLttTtUMRCKfZcoZYkmK"}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.6.1_1562108392017_0.7113289662698723"},"_hasShrinkwrap":false},"0.6.2":{"name":"@bitski/provider-engine","version":"0.6.2","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"gitHead":"2befd7d64612168f935092e53790242668443487","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.6.2","_nodeVersion":"8.10.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-7Y+tkVVD5pNKR9LnYGqGCCjQHH5YIyUCP3Bi50ttSXVAbPiVUMyuCBwu0QcTcr4apf9Ugtq9goyI1+y7xEo92g==","shasum":"d5708b4d12ab5aa0a400941917f74b22a93e1d29","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.6.2.tgz","fileCount":166,"unpackedSize":2057332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdRHsDCRA9TVsSAnZWagAA1XAP/1QURJ3ZS6h6eOBukUJl\nAwoXhPtDC7BIl6vQ/w8eMtHcN8fQaYJ/oJrI2W620ehD0srMN/Dm9NUhZnl7\nG3lW68jXJZwdI+lGlOJgOdHJwRqkiYcfn5gPdq7+6ASBOCV8ZQZp5Dh74ywF\nqrRHUlINVv5oVLC76HB1pGhYQn1cJc66kaIMdTBH0Ygc4XbgVbfo2LQcaj0Q\niQUr6GKYa7YyiPXs1MBZ+hZbt5MPz5rZU2x2aDLRnJiM321FGrrbHhju5uIn\n4e+BQRKjep0B5IM1caYC+P6yamV+cvSLCJNGzAvN4aiWGp/4zIqBcTmtkl1o\nULcmXksZaS3NvuBBmjZSMMr7CKrF/THE9s+6w2e+vAAIzlkXrMHM7J05yOLM\nNpxYPxrHdftKSc1zlL8fzCm79TRrCJI0JfaEjC7N1R16vy+zHp/eBiM25gXd\nOlPGIQt8KNioZ6ZefiNz8dYEyNMKjd3VZZzgdvY3HBGbNpCsJjLLHi9gXZ7C\nSue56OPc+C9+HwRKA3j7Ljm3Shz7hztBZUobzsCoKcyMVlo7tg7SooH1EVhi\nCsGDMha1Gmb1HKa7raKpJ9+nFMNMJI4VsYvgrAxo7DvcT4cPWqB1TgI0onEJ\ni0R5a9USMVxI4Uhbnp032s8yO/HwNPOqcaURW0auD+3KU1LUQxGC/tST7nxL\nhd+z\r\n=fNQm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAJf+B+3acd3qAGhKk/hwk0ISIqXd6t1uaU4OwEUxCHRAiEA06NKvuH+r1vC3uPKm6Ne8ecIRz0fECbUFHHC3dYc82k="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.6.2_1564769026314_0.18963730484117058"},"_hasShrinkwrap":false},"0.6.3":{"name":"@bitski/provider-engine","version":"0.6.3","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/index.js","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc"},"author":"","license":"MIT","dependencies":{"async":"3.0.1","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^4.4.1","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.1"},"devDependencies":{"@types/events":"^3.0.0","@types/node":"^12.0.2","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","babel-tape-runner":"^2.0.0","babelify":"^8.0.0","browserify":"^16.1.1","ethjs":"^0.3.6","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"browser":{"request":false,"ws":false},"gitHead":"2691c10b3b75911fe0844bab3c480c285204fd0e","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.6.3","_nodeVersion":"8.10.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ARz2Dn/w0gA4XDL31GPzbPFn/SFhhCFpTQCjKW0IJvV/MyhmHtE2n+TJ9iWVEjtn2rkWsCJDMlbDwDsdXAgL7Q==","shasum":"92f764ba11acf01243be518c65ba15d080d692bc","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.6.3.tgz","fileCount":166,"unpackedSize":2057331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdRIo5CRA9TVsSAnZWagAAMaoQAJX6zntqwXO+8GkLsiSd\nY4XIs6MdlGPKIKvbKU2/hZwWvbBsfC7/CvQa6jjigmzq0CQLy9c9khDxsqfo\nX4U6RXZmW//beTavE+y+nAyW3o1ugfBtN8V7M01fM+gZ9fIm9LPxaVxrAmwn\nvj38Pyq9mKRT/W2J+oVGxGIICcgARbtO+Nhn7vT5V/YkyeaLVE04mvru0krV\nJP70jMS3k80axHPAi3inQfLzfskIExVOvE391dUBj1WM3xcxfnkGh85Jh0RG\nvFwkM3o5trMOOvJ1k3jUI0GVG9ocm9OZwHbgRBwMU0eD5ANdzuGxa0D0VRol\nVIL60g+jN4p8uqAKTHtQtoTpAFh6426DZMoF5EiG2ESRC52nsqZauMEBMZ70\n5kVuVSaCtDRisA6ThwGESJ7hso62xZl4GSezy6wSDS1rY7qW2ygLwf4arepN\ndkt/AYvwfdI5MDdrvZHCrOUXM+SY6wk+v40iYOMAMJmkGTDaTdFebwcqQrOe\nvpEeRl21oj5/tJiRBpxJQLUPUo0CQtCXkje/YzsM4dyQquwjy+uB5sOcu2Vx\na+y/pclBJ0FOCLDI+eqj6OZJ3a9rq0b3PTONwwlVhunwT/8XdXwRQVSh5AWz\nrS5M12h1VUU17GCKeYoFlcECHIKR/7WPKXgFGCmo/2SeLxFF+oyrmOoUoH9R\nvKUD\r\n=6Dr6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDJWT16y1U+JvKtqGTs6fhyCltAA81RcxPd2vP6n30zrAiEAxpHCpBA9UUdMbHwPUUriEsvkCadqNRoJkt0vY+rk5wg="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.6.3_1564772920683_0.37341799301909817"},"_hasShrinkwrap":false},"0.7.0-beta.0":{"name":"@bitski/provider-engine","version":"0.7.0-beta.0","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/commonjs/index.js","module":"dist/modules/index.js","types":"dist/modules/index.d.ts","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && tsc -p tsconfig.module.json","lint":"eslint --ignore-path .gitignore --fix ."},"author":"","license":"MIT","dependencies":{"async":"3.2.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^3.0.6","eth-block-tracker":"^4.4.2","eth-json-rpc-filters":"^4.1.1","eth-json-rpc-middleware":"^4.1.5","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.2"},"devDependencies":{"@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@types/events":"^3.0.0","@types/node":"^12.0.2","@typescript-eslint/eslint-plugin":"^4.1.1","@typescript-eslint/parser":"^4.1.1","babelify":"^10.0.0","browserify":"^16.5.0","eslint":"^7.9.0","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"readme":"# Bitski ProviderEngine\n\nBitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).\n\n### Installation\n\n`npm install @bitski/provider-engine`\n\n### Differences from original package\n\n- Written in Typescript\n- Standard ES6 modules, designed for the browser first\n- Designed to be extended with a properly exported Subprovider interface\n- Base class implements new EthereumProvider standard\n- Compatible with latest versions of web3.js\n- Heavier dependencies removed to keep base package light (primarily all dependencies that rely on elliptic)\n- Many small bug fixes and improvements\n\n### To Do\n\n- Reimplement HookedWalletSubprovider as a separate package\n- Reimplement VmSubprovider as a separate package\n- Reimplement NonceTracker as a separate package\n- Improve test coverage\n\n---\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nimport {\n  default as ProviderEngine,\n  BlockCacheSubprovider,\n  FixtureSubprovider,\n  FilterSubprovider,\n  FetchSubprovider\n} from '@bitski/provider-engine';\n\nconst engine = new ProviderEngine();\nconst web3 = new Web3(engine);\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}));\n\n// cache layer\nengine.addProvider(new BlockCacheSubprovider());\n\n// filters\nengine.addProvider(new FilterSubprovider());\n\n// data source\nengine.addProvider(new FetchSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}));\n\n// log new blocks\nengine.on('block', (block) => {\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n});\n\n// network connectivity error\nengine.on('error', (err) => {\n  // report connectivity errors\n  console.error(err.stack);\n});\n\n// start polling for blocks\nengine.start();\n```\n\n\n### Writing your own Subprovider\n\nIt's easy to extend the functionality of this module by writing your own Subprovider instance.\n\nSee [src/subprovider.ts](/src/subprovider.ts) for the full interface.\n\n```typescript\nimport { Subprovider } from '@bitski/provider-engine';\n\nexport default class MySubprovider extends Subprovider {\n\n  // Only requirement is to implement handleRequest\n  public handleRequest(payload, next, end) {\n    // The payload includes the original JSON RPC request\n    if (payload.method === 'eth_helloWorld') {\n      // Call end() to handle the request in this subprovider\n      end('hello world!');\n    } else {\n      // Call next() to fall-through to the next request in the stack\n      next();\n    }\n  }\n\n}\n```\n\n### Acknowlegements\n\nA special thanks to the folks at Metamask who conceived and wrote the original library.\n","readmeFilename":"README.md","gitHead":"bfbf085570809e8002b9ce83f2e261592291573d","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.7.0-beta.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-y1Toz688Iqswxh7+X/a0bYcXpj2rFxOzuOAHnBlpqgSGNNturfzBXR4T/wE7ld45iXHEZb3+trf2FL7DkosAXA==","shasum":"d14526050425538cdb1be521ec4c860bcd81361c","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.7.0-beta.0.tgz","fileCount":214,"unpackedSize":282428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY5G4CRA9TVsSAnZWagAAepEP/RCHrC1AO2ryQ9lAZXbj\njh4Su/9kEClnAkc63wr4CeGHY3rVLHUaXfaLLbLen2wv6IINIdG50ukS+scC\nulJeme11gUmJ15lwVC3dqAcmXrUFjMnbj8eVlTc1kQETl0AHf6gAnJ0mjxBD\n2GXTr8E5RtPal+HxOTnnJddQ4+98fCB5K48b8tCJO3T1O7uute1lKXI51u+d\ntYhjPgU8FAYkfWwG75jvzYCAWhpdZUyg51wonbbGKSRjllO9xjfu/z6UrWug\nmU7C8stcHUDWhaCgmZVDuwdMahB8AYsomqU/E7WOpJ1bTR95h4xjGQWs9+Xq\nT54rbFZMvghBB2fjD8LVCgp/A3VqFzIr5aQDriQIA0V1akpIlXUySNgMRhM8\n/UqFFd3T7DFHzjO2GpheJt1+NBJA0J6xP8INwTSw7H2+N6J3xaT5nXNlIYl2\nOkxLyqPPWEMZF1+VdeToCPEglwYn5HALHz3HYP5bI37veKZZYSzsd9aaIG4O\nBPPoVUx12c6qhHeNt1jVlzVIDyskhOpRIFlC6FB7VPDfSwJDfsgDWtanzFtH\nzz8dIw0Xhw3SawZqfyQdX/SZ498+v49vwKtGggnUa+b3CMQqrBcEukUolgb7\njirLczZDO9u+9Obt8cEDe+0NIarqfw3k5qJQcHrlnyi87VM19ltX8mW1LLdO\n32az\r\n=/LVw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxL9WInK0b0h8SBm6iiTfGzT0ma+t2ZSOE1FTr8aU+JAIgIeQazECAONOeiAFtQMJwQPwu6v6BNfhSGh6xF4UBLmk="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"_npmUser":{"name":"jatescher","email":"jatescher@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.7.0-beta.0_1600360888069_0.9723614782882268"},"_hasShrinkwrap":false},"0.7.0-beta.1":{"name":"@bitski/provider-engine","version":"0.7.0-beta.1","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/commonjs/index.js","module":"dist/modules/index.js","types":"dist/modules/index.d.ts","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && tsc -p tsconfig.module.json","lint":"eslint --ignore-path .gitignore --fix ."},"author":"","license":"MIT","dependencies":{"async":"3.2.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^3.0.6","eth-block-tracker":"^4.4.2","eth-json-rpc-filters":"^4.1.1","eth-json-rpc-middleware":"^4.1.5","ethjs-util":"^0.1.6","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.2"},"devDependencies":{"@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@types/events":"^3.0.0","@types/node":"^12.0.2","@typescript-eslint/eslint-plugin":"^4.1.1","@typescript-eslint/parser":"^4.1.1","babelify":"^10.0.0","browserify":"^16.5.0","eslint":"^7.9.0","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"readme":"# Bitski ProviderEngine\n\nBitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).\n\n### Installation\n\n`npm install @bitski/provider-engine`\n\n### Differences from original package\n\n- Written in Typescript\n- Standard ES6 modules, designed for the browser first\n- Designed to be extended with a properly exported Subprovider interface\n- Base class implements new EthereumProvider standard\n- Compatible with latest versions of web3.js\n- Heavier dependencies removed to keep base package light (primarily all dependencies that rely on elliptic)\n- Many small bug fixes and improvements\n\n### To Do\n\n- Reimplement HookedWalletSubprovider as a separate package\n- Reimplement VmSubprovider as a separate package\n- Reimplement NonceTracker as a separate package\n- Improve test coverage\n\n---\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nimport {\n  default as ProviderEngine,\n  BlockCacheSubprovider,\n  FixtureSubprovider,\n  FilterSubprovider,\n  FetchSubprovider\n} from '@bitski/provider-engine';\n\nconst engine = new ProviderEngine();\nconst web3 = new Web3(engine);\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}));\n\n// cache layer\nengine.addProvider(new BlockCacheSubprovider());\n\n// filters\nengine.addProvider(new FilterSubprovider());\n\n// data source\nengine.addProvider(new FetchSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}));\n\n// log new blocks\nengine.on('block', (block) => {\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n});\n\n// network connectivity error\nengine.on('error', (err) => {\n  // report connectivity errors\n  console.error(err.stack);\n});\n\n// start polling for blocks\nengine.start();\n```\n\n\n### Writing your own Subprovider\n\nIt's easy to extend the functionality of this module by writing your own Subprovider instance.\n\nSee [src/subprovider.ts](/src/subprovider.ts) for the full interface.\n\n```typescript\nimport { Subprovider } from '@bitski/provider-engine';\n\nexport default class MySubprovider extends Subprovider {\n\n  // Only requirement is to implement handleRequest\n  public handleRequest(payload, next, end) {\n    // The payload includes the original JSON RPC request\n    if (payload.method === 'eth_helloWorld') {\n      // Call end() to handle the request in this subprovider\n      end('hello world!');\n    } else {\n      // Call next() to fall-through to the next request in the stack\n      next();\n    }\n  }\n\n}\n```\n\n### Acknowlegements\n\nA special thanks to the folks at Metamask who conceived and wrote the original library.\n","readmeFilename":"README.md","gitHead":"290406c9b2dd7c10357de849648d38521b182a41","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.7.0-beta.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-nBHjSXuKvAnS02uBZvbBvMaxzJhXZhoz4BAxSQh3YnrgCeOgVM1g7Qp3OGL10iR9Q0kWgaHnhsERII0yjMrfug==","shasum":"026b8aba897274ea85bf97b4c9b3205994d19efd","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.7.0-beta.1.tgz","fileCount":214,"unpackedSize":282435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY6q+CRA9TVsSAnZWagAAX2gP/3YW3cj04Gm9yynDnS4R\nOIHAixVDR7bBJ178eKSOtyauhYUTaYWpTbtuy18ApSyu319Kl4oYPSFcMlkG\nfjzOm0gpGHGYVg3q92dZ1qq+JlL+ENY67Xudg2wqLVV6zq72xx7E3M08UqMS\n3DnSiwjsJQw9kBbafBRFnK3T86bPhVbYvp4MaUwwdvew347OtU8lm1Pkvk9o\nNO06aTmZvbutHdaY5B06F1wZv/BT5PnaSuLo17EojtNAWl3I8OmBZL1EbRzK\n8VwqI+/0fFPaBf2YNJZEqnQMEqUvZghP2ONVYmqALUiwFjrrv6sLg0ym/Sk0\noSbRR+pHs/IEjiz52zbptWMwsqrl4titVPtm74RUM64VyxfPF7kfjWcunjHQ\nEYShyU1iSdttan8WL+7d2kSZibRmFRighncAQ8Aq036kvRkpFpy6t1AJyki2\nKeAcIpXM9wxjjVwv7IkuJM4LXbzGY2vvKDUwtJhygYzaONMLbIZr/YueCPw1\n0HhG4fFYCwBfpNDy/TIpGMEgcBqmyMVnYN4WEHge7dg0QTnd+FaWo2dW0AOv\nw+5uzNT+sEjS/QAcwl8+AIte9s5F+p/NvpgJDU5Esy+3lA/wUYKH/JIQLBzZ\nMofR03bpMSxrpxmm6ubbLewSFsO59kiWUeyrPVDEshQ5YUyx/qWqy65kk86V\nNM68\r\n=vI7K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBIWBP0vydE9P1B+rDrd9tGnUDM68BAdVZ7XZwGwwzsMAiBxTeVzjMdHAQWxLT4KBcj5FT0WUG8aY0TAkuYBfHzSIQ=="}]},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"_npmUser":{"name":"jatescher","email":"jatescher@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.7.0-beta.1_1600367294320_0.4316352346084633"},"_hasShrinkwrap":false},"0.7.0-beta.2":{"name":"@bitski/provider-engine","version":"0.7.0-beta.2","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/commonjs/index.js","module":"dist/modules/index.js","types":"dist/modules/index.d.ts","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && tsc -p tsconfig.module.json","lint":"eslint --ignore-path .gitignore --fix ."},"author":"","license":"MIT","dependencies":{"async":"3.2.0","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^3.0.6","eth-block-tracker":"^4.4.2","eth-json-rpc-filters":"^4.2.1","eth-json-rpc-middleware":"^6.0.0","ethjs-util":"^0.1.6","json-rpc-engine":"^5.4.0","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.2"},"devDependencies":{"@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@types/events":"^3.0.0","@types/node":"^12.0.2","@typescript-eslint/eslint-plugin":"^4.1.1","@typescript-eslint/parser":"^4.1.1","babelify":"^10.0.0","browserify":"^16.5.0","eslint":"^7.9.0","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"gitHead":"d9b3e48d88d47a91cb7119dd178d8aa94a9ffecb","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.7.0-beta.2","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-u9vWpLTKf6Eg8w+cnA0ilaTcDGWulkkqQMhfw9Lse2yU9m9sFhu+j/A42mFG7miSLv/mLP+LYT2Kx66u4rQ/sw==","shasum":"0841894234288061b7c57edd0cdc5ac9c1a2f837","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.7.0-beta.2.tgz","fileCount":214,"unpackedSize":282688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgegHvCRA9TVsSAnZWagAAgRsP/2vpuAT3sCuVAssc/bIQ\n7pyT9QACOARsPiLGeuX9a+nAx7b86wiaD494/O1NLTWQQnk3vl33oxjItV9Z\nCPGXkpBT1fOCxcDGt5XfsxBybjoQqLTmcTAD1LYSxvRFHWG5fJCoq1lSUWEy\ndixP6OJCBreI6IruzKE/jW4EnsYXYvIhl0vrKE3DZ1TpYq2UHb6n5Vguma/a\n5ky10CFhgvtrGV15xtpt37EA49YnRT82w2xZ2DGQMWoi1PYsTkOWtzvmmSnI\nh8X4iaRMCzjC5e6SH2Ad8cuTnhuQ46gr1SFbtQcbOfi4aJ51CyU5SH1es9a0\nVnB3Dyh5YHCiPdI2Fd4390ng3L8kkapadFLujo9z5GfoSXYNsrOPrzJMOF76\nnENfe6LbtXk5iOhpQjzNr5aXgPBIqoX6BJ1pmIMZYakx+hPz0tRU46iuN4Lf\nQUJODb0bWNNRxO+L3L866564wawgHTBNtPgy3bC208a3Cu8c6zmY0AJzswFx\nImvG/LXeLeRwvMNGQB2aJpl7IKjIf3acXtWYEnHJt0PPcX5RoLccSpT4jCkE\nfR8BfWZsJYhXe/34qA8JvdN+/TzCoPuEJBjdFqHJSdrFOtHoKnRtcHPE4wiM\nGJx4Ay/wTxO/CT0WWk+smATWtc64M0EA+wi6zDARFcWBxZT+fvhWFH+cVq9y\nU+OE\r\n=XZ+/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK1YmaffXOZJQ+a0hrK0IbQBzRcJCd5FgWJsaYL7JJzwIhAL++C6ajJJrI9T6J/HE3YlQpI4Iqvn9vfqfo7EVVYO04"}]},"_npmUser":{"name":"jatescher","email":"jatescher@gmail.com"},"directories":{},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.7.0-beta.2_1618608623480_0.6934483004862828"},"_hasShrinkwrap":false},"0.7.0-beta.3":{"name":"@bitski/provider-engine","version":"0.7.0-beta.3","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/commonjs/index.js","module":"dist/modules/index.js","types":"dist/modules/index.d.ts","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && tsc -p tsconfig.module.json","lint":"eslint --ignore-path .gitignore --fix ."},"author":"","license":"MIT","dependencies":{"async":"3.2.2","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^3.0.6","eth-block-tracker":"^4.4.2","eth-json-rpc-filters":"^4.2.1","eth-json-rpc-middleware":"^6.0.0","ethjs-util":"^0.1.6","json-rpc-engine":"^5.4.0","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.2"},"devDependencies":{"@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@types/events":"^3.0.0","@types/node":"^12.0.2","@typescript-eslint/eslint-plugin":"^4.1.1","@typescript-eslint/parser":"^4.1.1","babelify":"^10.0.0","browserify":"^16.5.0","eslint":"^7.9.0","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"gitHead":"a605babaf3dcd31bc2b203cb7f5d456169a8e9f8","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.7.0-beta.3","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-7Qlbk2zM4+4b2mhM1HNXSkX51Rueu5qHQRu7EdhRQzydVek9Fc7O/JodsecsOb3K9fQ5JUFuBBgX+WYC6mF38Q==","shasum":"26751d39838db49e9b8a2f812b64880ccd93b935","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.7.0-beta.3.tgz","fileCount":61,"unpackedSize":120456,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBVLB+KoZIfCopliEJ3yPrayR99bQLagpFI8JH7rNyzhAiBohKbl9AEka+SJxOi3eJwPls28dOFzIDYe57sezFXY8w=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiugW6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrxMw/9FCZqsUR5xtPlH0usTJpbq0O4L6ucHJh2IxsbsZu+kdAmMVYb\r\nesPYMWdSBPyPkOjwRxDboHFY0jdjET3CvX45HJvr/W8i3jZHj0UoyEZqq/2V\r\nYM9rIT+8UXbnoFsf6MU0GoWvFwYkcjoLeMMYyAjf2GtuK1JkPCRzSVrk00VV\r\nF6f4pAi5uoX9kzLt4Q/BqvU72Xm502Zs24ymVnsbMjXs3zyCWpfsk83R3v1k\r\nHkdqHqdyDWfT8Pd5V1kpSJHtnxT2tco+GSSqH8VFT01jMEM5KcsgcWOu5dU9\r\n32JBvFH/aCHcsrKtsT3z0ySDWmBlEf22yuCC2/q1Jz0wFO1lMGK4NRDJgpA2\r\nbXGdjCykWeaoIRO03WcsG+u4fj1LI97NJ3B6u1pZv8RRPxQcv4DvIdKg+J6Q\r\nvZiu1P3LV+5Yc987CbdHsjSokXvmofH4vxANiIx3TbWMxo0yEnOwio6pcCH5\r\nPr28KnD9MovoSEPuf3kKWiXspETVbe2hVZ0+VI9WwGyBR2gaQTTsGAoKdH/9\r\nV29NEx0QwtUojw1a7SaHhgdtfli5jrxN7qfJdWV1xZtialoCNulc8Ee8Z8Fg\r\nI0IK2hkYN1AIkG9tFmwM67GbqTTjpFSe2FSGZW6O/H/kOBld8sCDUYEKv0SZ\r\nLvp4PxrD8XBcuHvgLNIyLglDgVM8r6Lnzik=\r\n=84jW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"imthinhvu","email":"thinh.vu@hey.com"},"directories":{},"maintainers":[{"name":"tdreyno91","email":"me@tdreyno.com"},{"name":"imthinhvu","email":"thinh.vu@hey.com"},{"name":"pzuraq","email":"opensource@pzuraq.com"},{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.7.0-beta.3_1656358330135_0.3459679369336288"},"_hasShrinkwrap":false,"deprecated":"Broken package version; no longer supported. Please update to @bitski/provider-engine@0.7.0-beta.5"},"0.7.0-beta.4":{"name":"@bitski/provider-engine","version":"0.7.0-beta.4","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/commonjs/index.js","module":"dist/modules/index.js","types":"dist/modules/index.d.ts","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && tsc -p tsconfig.module.json","lint":"eslint --ignore-path .gitignore --fix ."},"author":"","license":"MIT","dependencies":{"async":"3.2.2","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^3.0.6","eth-block-tracker":"^4.4.2","eth-json-rpc-filters":"^4.2.1","eth-json-rpc-middleware":"^6.0.0","ethjs-util":"^0.1.6","json-rpc-engine":"^5.4.0","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.2"},"devDependencies":{"@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@types/events":"^3.0.0","@types/node":"^12.0.2","@typescript-eslint/eslint-plugin":"^4.1.1","@typescript-eslint/parser":"^4.1.1","babelify":"^10.0.0","browserify":"^16.5.0","eslint":"^7.9.0","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"gitHead":"75767cc9251efbba3a768efe132db01255dfc731","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.7.0-beta.4","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-gEf17KYWPYXULDOasmBkJDqNCR6mlj2GvZVNehGg7e332sEvbYIDDXWJL8irU5NkdvFyj0LUT5H1FRTgdLWVJQ==","shasum":"a45aed856e0c7c955c732dd8197b5fec2ac503c1","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.7.0-beta.4.tgz","fileCount":61,"unpackedSize":120456,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8w+woZ4yjGTzuHkgzB5VWOeKBkW3OW0LpS+qZO5c1HAIgM1YvXX3wfcexWKdnL/6C2UUDu1HZ86jDEFU+2KkCOaQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiu3LfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpcPg//W/nHd/zHVFhaTF255LPyf9fty3KOKeBZM2pNqhO6DAIN2Q/3\r\nZmSAXbVFkB56jQG9bDr1lS1OsBFfcOWke1AYtI4ow1D8v2cpEpFfgDqeE86l\r\nx4zxmkZeRECtqukRUCrMTbFACCap2Wj4kxLr5UJcpwRvGTMMc9GZN/8BKUQb\r\nTZ4XD/XQiVlhTabsBm8y23Udx9SX11LWJfCqgv8x+lVWYF8g04MGe/xX3rSh\r\nYjY4gcENQphfiuVKPwuXBvjte/8jFHehOR5bRXk0HjXKM2TgKfYIbG2q2eTg\r\nZOuhtiG+JAiKn08yIe+hRVSpljEkJCWmrZw6IdippdgT/1NP19h4ayGbFMYp\r\nT0mQu9e/EvxC6H1RBLc9QCtJsuUACompYt5FijiRvGgW1bNMZCFiLBf+3xQo\r\nY9MjL9/PoHY99hA3QRyS4WjrHaQIAWAZN+SyEfMUOgTYLZbdnDgay4gbi/r3\r\ngUHqh/Ghmn365jHkp6HRe0wLJVjZXqmDCtynF+fxF08gE3sFPAMtytQyifLF\r\n7vqqpX2adBPtmXmnCNaLudBDC4PUgq2lPOXODAyPxEMSXVAe2drpb/rO7vxL\r\n3yXFHBnK0oorsgfvkIBrrS7uFzfSHFmlSeIWaVhthh9hIzLfGoGrrd/WHJT/\r\nW2E8sVnkrdVxm1X/wVdhsSlLGj1u3eMFNuk=\r\n=v/cB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"imthinhvu","email":"thinh.vu@hey.com"},"directories":{},"maintainers":[{"name":"tdreyno91","email":"me@tdreyno.com"},{"name":"imthinhvu","email":"thinh.vu@hey.com"},{"name":"pzuraq","email":"opensource@pzuraq.com"},{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.7.0-beta.4_1656451807063_0.5603118572283148"},"_hasShrinkwrap":false,"deprecated":"Broken package version; no longer supported. Please update to @bitski/provider-engine@0.7.0-beta.5"},"0.7.0-beta.5":{"name":"@bitski/provider-engine","version":"0.7.0-beta.5","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/commonjs/index.js","module":"dist/modules/index.js","types":"dist/modules/index.d.ts","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && tsc -p tsconfig.module.json","lint":"eslint --ignore-path .gitignore --fix ."},"author":"","license":"MIT","dependencies":{"async":"^3.2.4","bn.js":"^4.11.8","clone":"^2.0.0","cross-fetch":"^3.0.6","eth-block-tracker":"^4.4.2","eth-json-rpc-filters":"^4.2.1","eth-json-rpc-middleware":"^6.0.0","ethjs-util":"^0.1.6","json-rpc-engine":"^5.4.0","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.2"},"devDependencies":{"@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@types/events":"^3.0.0","@types/node":"^12.0.2","@typescript-eslint/eslint-plugin":"^4.1.1","@typescript-eslint/parser":"^4.1.1","babelify":"^10.0.0","browserify":"^16.5.0","eslint":"^7.9.0","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"gitHead":"9bd2e68883db1869303b5a61f852682a138af594","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.7.0-beta.5","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-KqVHluYMtW+wEL/YD9WHPiSBbyq0MOKDQWhHewHVZaNvFySpIXKG/GOA+QQvWrUAEBJq5xN1sGpRKuclR7dlYw==","shasum":"14890725bffddafebe6b328187de507bc18ceb49","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.7.0-beta.5.tgz","fileCount":213,"unpackedSize":282156,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG8A2sfy2R3v7WXxZhWm7nQ463uTfYFYNEoxuqdCYbfHAiBpDkP9m4CMegunwughkkZDuipDCeifX9a2YGMUmgbajg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJivI9lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrl5Q//SPhjqkkd4IASBasS517bxoVcgugxn3EGbt8FRG7q2nMo7J9p\r\naxupE30alCQE4WntpPjE825Kn+XCoUzkkSNGFhN9RNwe79DaDVQRMoPwOnzz\r\nAlCjL9e9kSH56oigUWvEPMovoXQp0b3n84r65CCTpsjNP9zkguePbWCeHpFz\r\nvDLzF2qKtdP0bWn8c+dz50/+0Ck1k8djP76Gwmshv2hCEhs9aUr0K4OyITkK\r\nAwFenxf4ZjMfohmgIOIbpi+pHp82KQjgyptWMD5lcnDLJpwcG+i0Cqw5iJjl\r\nSmhtvavSLBJ76KtbY6NcANtSISH5iTLx/Et/SqGpT39m13UJvaknRo5Z8lPh\r\n6Hel3QEiPgS/huhhsuav+1MQ3Zqh4cuXyIzmtPNa72FqtNjHQF6Fo7PDghAP\r\nrhUi6getsjJOMou8oFYHsbmy4SyRRwc70pj1KcNLkHpVUIeWDzKaDf+ebOk0\r\n4ejSafOvtGPHu/0t0mvZyfFQgl7DIbYvasDSYFzHPYDGyE0XLw8SYreeOB1a\r\nwEmkBGc0IG3HUXQy3Le69S76pMCE3vuDTIKnyNF3IXycH6XllyGUrBg+tc0K\r\nI4TTd4lsuAg+BD9ECh+73gbKR47XDK2MPIU1D3+wPB5/eyq6GtyxqlaA2Lk1\r\nwC7Uk0iTg/y89MPvqLIJ1+RL7T9RwVU5AZM=\r\n=fFKQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"imthinhvu","email":"thinh.vu@hey.com"},"directories":{},"maintainers":[{"name":"tdreyno91","email":"me@tdreyno.com"},{"name":"imthinhvu","email":"thinh.vu@hey.com"},{"name":"pzuraq","email":"opensource@pzuraq.com"},{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.7.0-beta.5_1656524645277_0.7688256057702751"},"_hasShrinkwrap":false},"0.8.0":{"name":"@bitski/provider-engine","version":"0.8.0","description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"main":"dist/commonjs/index.js","module":"dist/modules/index.js","types":"dist/modules/index.d.ts","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","prepublish":"npm run build","build":"tsc && tsc -p tsconfig.module.json","lint":"eslint --ignore-path .gitignore --fix ."},"author":"","license":"MIT","dependencies":{"async":"^3.2.4","bn.js":"^4.11.8","clone":"^2.0.0","eth-block-tracker":"^4.4.2","eth-json-rpc-filters":"^4.2.1","eth-json-rpc-middleware":"^6.0.0","ethjs-util":"^0.1.6","json-rpc-engine":"^5.4.0","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","xtend":"^4.0.2"},"devDependencies":{"@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","@types/events":"^3.0.0","@types/node":"^12.0.2","@typescript-eslint/eslint-plugin":"^4.1.1","@typescript-eslint/parser":"^4.1.1","babelify":"^10.0.0","browserify":"^16.5.0","eslint":"^7.9.0","tape":"^4.4.0","ts-node":"^8.1.0","typescript":"^3.4.5"},"gitHead":"de51e3fac7f795880174ea45458f764cb9c3f984","bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","_id":"@bitski/provider-engine@0.8.0","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-t6s2KhUkmwN4sIwA2XC+EGcoXce96f5MTvke5q2cPzvA0G4CEpbT7F9t1DTWFpCPo6W9wIepoosqF0Om2tLnrg==","shasum":"4ec1802bb282212503fa9297905cf77acea2dcac","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.8.0.tgz","fileCount":213,"unpackedSize":281990,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID5tSbcse1kRPN09V1Ng87Eh52uTfCtM1TIojC7algEkAiEAvsDxC7mQ1yvO4DcdUGEBP7M3+WmBWkuji2aN2xoLj+M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDOCPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpR+g/+I8ldmvEVPloPe7VzJHBQE3cprt+6NmFZceYM08cZUxTPV7K5\r\naSJZ1dRyIhmU2+TSE4XqnE2snDEihPkHJwf8xJKYkH4kzU5jYBWawcNt/RLj\r\n/4R+Yjbe04bWgGF/Vy7Ht/TuO1IgOGL4Bg5YIRLl90XBj73BkSlAmGY4X0Kr\r\nk0GgUL7i21272Idlbe1Nyf85gX/oyWkfvGPHndGCEjCHHrxSuNk7TikFhTbv\r\ncR6ig0B7MLQpK97sRG5DeGvH9gO+CIpyoqBdftqPAyg2Tyqx62WNKY0e3b4y\r\n1RF77XwTPdtDHJ4nLIKelgCL+rSJfFakIhoYEBJkI9cE0vsnep1exnj0hqMp\r\nCDV894tb1S6SV8FzJ9IorgayWLvC0XF4nVuNmGdn1Q2LJSgRTulJeR0b2Kzz\r\nOkp3upbq6JFhQgaZyHbTp9KIv7507R3Pi6oQYH7cv+ex9O6FlKGLFGQM1fE2\r\nYOzAnb9czpg8F2oLZfQvBi1+fNs+OaxS0aNfbqukWxAgvGlsfxFFAYi//k6r\r\n0XFjKuwgrxmpuWwwId+yazg63vnPRoLU2zgV3jiCOzoDkB04yq7jN+b/2J4U\r\n0MaIVPwDXqbKCHhIL/kBzphsxaPxOfljU4LEnUd6gwgrJouA/blZdPH9fIWk\r\nKt8APaX1lWb6I5c9GIUnJSgHZ4ysC+9gR2k=\r\n=xgMF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"imthinhvu","email":"thinh.vu@hey.com"},"directories":{},"maintainers":[{"name":"tdreyno91","email":"me@tdreyno.com"},{"name":"imthinhvu","email":"thinh.vu@hey.com"},{"name":"pzuraq","email":"opensource@pzuraq.com"},{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provider-engine_0.8.0_1661788303000_0.7232481644789008"},"_hasShrinkwrap":false}},"time":{"created":"2019-05-17T21:15:27.949Z","0.0.1":"2019-05-17T21:15:28.113Z","modified":"2023-12-14T23:31:31.497Z","0.2.0-beta.1":"2019-05-21T19:05:46.640Z","0.2.0-beta.2":"2019-05-21T19:26:01.856Z","0.2.0-beta.3":"2019-05-21T19:59:08.758Z","0.2.0-beta.4":"2019-05-21T20:05:15.142Z","0.2.0-beta.5":"2019-05-21T20:37:40.412Z","0.2.0-beta.6":"2019-05-21T21:01:24.549Z","0.2.0-beta.7":"2019-05-21T21:08:01.811Z","0.2.0-beta.8":"2019-05-21T21:30:21.030Z","0.2.0-beta.9":"2019-05-21T21:46:02.832Z","0.2.0-beta.10":"2019-05-21T22:06:12.314Z","0.2.0-beta.11":"2019-05-21T23:10:10.171Z","0.2.0":"2019-05-21T23:14:38.237Z","0.3.0":"2019-05-24T23:22:19.217Z","0.4.0":"2019-05-29T23:04:10.520Z","0.4.1":"2019-05-29T23:22:44.797Z","0.4.2":"2019-06-20T20:04:17.956Z","0.5.0":"2019-06-20T22:43:19.733Z","0.6.0":"2019-06-21T21:44:00.456Z","0.6.1":"2019-07-02T22:59:52.181Z","0.6.2":"2019-08-02T18:03:46.487Z","0.6.3":"2019-08-02T19:08:40.992Z","0.7.0-beta.0":"2020-09-17T16:41:28.279Z","0.7.0-beta.1":"2020-09-17T18:28:14.478Z","0.7.0-beta.2":"2021-04-16T21:30:23.633Z","0.7.0-beta.3":"2022-06-27T19:32:10.374Z","0.7.0-beta.4":"2022-06-28T21:30:07.371Z","0.7.0-beta.5":"2022-06-29T17:44:05.500Z","0.8.0":"2022-08-29T15:51:43.173Z"},"maintainers":[{"email":"thinh.vu@hey.com","name":"imthinhvu"},{"email":"opensource@pzuraq.com","name":"pzuraq"},{"email":"jatescher@gmail.com","name":"jatescher"},{"email":"pat2man@gmail.com","name":"pat2man"}],"description":"Bitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).","homepage":"https://github.com/BitskiCo/provider-engine#readme","repository":{"type":"git","url":"git+https://github.com/BitskiCo/provider-engine.git"},"bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"license":"MIT","readme":"# Bitski ProviderEngine\n\nBitski's ProviderEngine is a refactored version of Metamask's original provider engine library. This is the base of the Bitski Javascript SDKs (both browser and node).\n\n### Installation\n\n`npm install @bitski/provider-engine`\n\n### Differences from original package\n\n- Written in Typescript\n- Standard ES6 modules, designed for the browser first\n- Designed to be extended with a properly exported Subprovider interface\n- Base class implements new EthereumProvider standard\n- Compatible with latest versions of web3.js\n- Heavier dependencies removed to keep base package light (primarily all dependencies that rely on elliptic)\n- Many small bug fixes and improvements\n\n### To Do\n\n- Reimplement HookedWalletSubprovider as a separate package\n- Reimplement VmSubprovider as a separate package\n- Reimplement NonceTracker as a separate package\n- Improve test coverage\n\n---\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `eth_call` may trigger `eth_getAccountBalance`, `eth_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nimport {\n  default as ProviderEngine,\n  BlockCacheSubprovider,\n  FixtureSubprovider,\n  FilterSubprovider,\n  FetchSubprovider\n} from '@bitski/provider-engine';\n\nconst engine = new ProviderEngine();\nconst web3 = new Web3(engine);\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_syncing: true,\n}));\n\n// cache layer\nengine.addProvider(new BlockCacheSubprovider());\n\n// filters\nengine.addProvider(new FilterSubprovider());\n\n// data source\nengine.addProvider(new FetchSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}));\n\n// log new blocks\nengine.on('block', (block) => {\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n});\n\n// network connectivity error\nengine.on('error', (err) => {\n  // report connectivity errors\n  console.error(err.stack);\n});\n\n// start polling for blocks\nengine.start();\n```\n\n\n### Writing your own Subprovider\n\nIt's easy to extend the functionality of this module by writing your own Subprovider instance.\n\nSee [src/subprovider.ts](/src/subprovider.ts) for the full interface.\n\n```typescript\nimport { Subprovider } from '@bitski/provider-engine';\n\nexport default class MySubprovider extends Subprovider {\n\n  // Only requirement is to implement handleRequest\n  public handleRequest(payload, next, end) {\n    // The payload includes the original JSON RPC request\n    if (payload.method === 'eth_helloWorld') {\n      // Call end() to handle the request in this subprovider\n      end('hello world!');\n    } else {\n      // Call next() to fall-through to the next request in the stack\n      next();\n    }\n  }\n\n}\n```\n\n### Acknowlegements\n\nA special thanks to the folks at Metamask who conceived and wrote the original library.\n","readmeFilename":"README.md"}