{"_id":"@dexon-foundation/web3-provider-engine","_rev":"3-64f2d69d69a56748792749d2d98896e6","name":"@dexon-foundation/web3-provider-engine","dist-tags":{"latest":"14.1.1"},"versions":{"14.1.0":{"name":"@dexon-foundation/web3-provider-engine","version":"14.1.0","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/MetaMask/provider-engine.git"},"main":"index.js","scripts":{"test":"node test/index.js","prepublish":"npm run build && npm run bundle","build":"babel zero.js 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 && npm run bundle-zero","bundle-zero":"browserify -s ZeroClientProvider -e zero.js -t [ babelify --presets [ es2015 ] ] > dist/ZeroClientProvider.js","bundle-engine":"browserify -s ProviderEngine -e index.js -t [ babelify --presets [ es2015 ] ] > dist/ProviderEngine.js"},"author":"","license":"MIT","dependencies":{"@dexon-foundation/ethereumjs-vm":"^2.4.3","async":"^2.5.0","backoff":"^2.5.0","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^3.0.0","eth-json-rpc-infura":"^3.1.0","eth-sig-util":"^1.4.2","ethereumjs-block":"^1.2.2","ethereumjs-tx":"^1.2.0","ethereumjs-util":"^5.1.5","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","readable-stream":"^2.2.9","request":"^2.85.0","semaphore":"^1.0.3","xhr":"^2.2.0","ws":"^5.1.1","xtend":"^4.0.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","browserify":"^16.1.1","tape":"^4.4.0","ethjs":"^0.3.6"},"browser":{"request":false,"ws":false},"gitHead":"84782d7be8393a721ffc0f2d9fdd704a1ca49214","bugs":{"url":"https://github.com/MetaMask/provider-engine/issues"},"homepage":"https://github.com/MetaMask/provider-engine#readme","_id":"@dexon-foundation/web3-provider-engine@14.1.0","_npmVersion":"6.4.0","_nodeVersion":"8.11.3","_npmUser":{"name":"boczeratul","email":"boczeratul@gmail.com"},"dist":{"integrity":"sha512-C0eg3k+8+WVciKe3Rt8RD/vV2P61t19brNSiVRIdgSvZWZoE0sSm5eiW0LEXl3DFiOmrLFb2Zj3++mfJme5pVA==","shasum":"934c65724e5e87294a30a8f1a6e3e1ec99a2925e","tarball":"https://registry.npmjs.org/@dexon-foundation/web3-provider-engine/-/web3-provider-engine-14.1.0.tgz","fileCount":95,"unpackedSize":2143712,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEJ7KCRA9TVsSAnZWagAABwUQAKDFKfvUHV+SG3f0WLMD\nT4gAeqtOzbpS02ayhfJKRt31V8cm6YabAW2t3i3nBurn5KfQAyvmdIjgRChG\neoj+Ig0NfwUL8wRFRuQ3IDCGnX6nc+KwrC3PlDRSdhz9azmTVKxO5a8ZVlvW\nynwraXZgW9xVvD9WtrOlPuAFP9TDXfyALTf/gjv0TzPVyw06ZRV+7+VgqFuq\nDZkmKW9cdHPKvffKkLQMbhrvfCFkN4sveDdc7/CwmkoY4ywSI3HdQHuppyW8\njuoMOuk/3R7xe/TUx+UbWCZ1ruXAmc9Zs4gzZ2uuWn/MRldBibhTysdMWTBC\nxYBkUX0y/gLeVhYFNNO/2l0rmKkIpa7/aBGU8DtWAnpBVNDSi21ipzJpHxl5\n/2VQBZXND4Mn+pHL7PQmaEd9tkHpmpRfzNRirbgvnJAtxLFA6W/xJkSXoU4z\ngHfEFRyXGcle4qnl3xzqsBoGdae4japsl2wkHQCAVxPbd6F6v8EKcXkNsOpn\nNZvzTcu9ZAFXwa+qtlQUEPRbWYH1B7ab6CdGuwgth+X288cHkhoCTQ2yFT6B\n11xen/Li9u9V0ANCVbMbyUhBZcDhnRRrovvpav+yLTdTlT074Clp5LNt50UA\nGgfLN8aP0On0eTklebdhMsyAfzHsARf4I+YQpdS2oWl25aOd8ErqPm4qQO+K\nPaCo\r\n=Bh0t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE16R+1RssmjJGRv9/EyAUDmazNyrDptCPUS7AUvbNa4AiEArUzkIfnYhsptXPutXRkjIMh/dp45sjncg/sccAWqgZg="}]},"maintainers":[{"name":"cobinhood-dev","email":"dev@cobinhood.com"},{"name":"boczeratul","email":"boczeratul@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web3-provider-engine_14.1.0_1544593097267_0.9304215341462891"},"_hasShrinkwrap":false},"14.1.1":{"name":"@dexon-foundation/web3-provider-engine","version":"14.1.1","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/MetaMask/provider-engine.git"},"main":"index.js","scripts":{"test":"node test/index.js","prepublish":"npm run build && npm run bundle","build":"babel zero.js 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 && npm run bundle-zero","bundle-zero":"browserify -s ZeroClientProvider -e zero.js -t [ babelify --presets [ es2015 ] ] > dist/ZeroClientProvider.js","bundle-engine":"browserify -s ProviderEngine -e index.js -t [ babelify --presets [ es2015 ] ] > dist/ProviderEngine.js"},"author":"","license":"MIT","dependencies":{"@dexon-foundation/ethereumjs-vm":"^2.4.3","@dexon-foundation/eth-json-rpc-infura":"^3.1.0","async":"^2.5.0","backoff":"^2.5.0","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^3.0.0","eth-sig-util":"^1.4.2","ethereumjs-block":"^1.2.2","ethereumjs-tx":"^1.2.0","ethereumjs-util":"^5.1.5","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","readable-stream":"^2.2.9","request":"^2.85.0","semaphore":"^1.0.3","xhr":"^2.2.0","ws":"^5.1.1","xtend":"^4.0.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","browserify":"^16.1.1","tape":"^4.4.0","ethjs":"^0.3.6"},"browser":{"request":false,"ws":false},"gitHead":"dc1eaabf70810bfe0f05c42114edc113908d9ff5","bugs":{"url":"https://github.com/MetaMask/provider-engine/issues"},"homepage":"https://github.com/MetaMask/provider-engine#readme","_id":"@dexon-foundation/web3-provider-engine@14.1.1","_npmVersion":"6.4.0","_nodeVersion":"8.11.3","_npmUser":{"name":"boczeratul","email":"boczeratul@gmail.com"},"dist":{"integrity":"sha512-pWbxW79+Pf7msAR34QGE7ybitwnixsocdog6VVcF2diFEjzJWjBbZtxUF0O3o+25bO06ocJy3YExcxKkLnIdKQ==","shasum":"3c7614a6f569cccc1e01c32e9894ba65583645e1","tarball":"https://registry.npmjs.org/@dexon-foundation/web3-provider-engine/-/web3-provider-engine-14.1.1.tgz","fileCount":95,"unpackedSize":2147091,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcELFaCRA9TVsSAnZWagAAy7EP/3loH8LT0QUHQLEc//Pg\nNoCnralOBNucyUp19wYX5vFt7xQkiodnn0SEPBtTUy+epizToZ6TOLbIEgsT\nDUgis7MJ3aRMJ4HYX9AFBn443b9MDFF4Wdex0Cg2o56drIpojpm6w/CN0HTx\n6ja6ydiss0mvrQE1HEUGW2KvkikFeRW+kIyddNK40jl19HkgDgkb+POfr5/W\nHxKzi0XTM3c0cWJDCVuiE5uYiIE47vZ9jhpRt/WKo1xAVZB1rPdGoDYAnckY\nrVRyokh9LNUJaomNcVn3b7qDdh5/jrMs4aFxF+kCiMO6EAJ78iH+cKgx874N\nWYzkqLWGDi7JaGdrRAR6d/en3RvOzGND2yDsp6tSHRt58JZ2mueUxgvDMlvt\nWscbCHleh14hRXHePaHp8ykYqz6zEAkwq1SeDuWQbgNNrbMbQAuU8sYICH0N\n85JKvqH7Qc/OnjlzidyQh4nC9EyBPQ9aSmd3lBAI3lMmG8rcR9fFdyKXpP3O\n0OV2UYn3Z7lOyJ7TGPH5/usyeS8UdCBECWo3kmFQgGB2GcCfmwUMzL5DPiNm\nD34E11pizzVEOD+0K3w7QzwbhJoqwAkfktzxCZI9bf8KLTb00LcJSvEdTteR\nllzvBplHFxl3qiSja8Y5edOPZTyGo1MinKsmkiFlXgn/EV3STlnP08e9owpv\ncj29\r\n=WX8A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlVCY05b4mqsIvSGnOlW2/Fthddppt3PqIZKHut0fj+gIhANiWeyxx/hzKft4qhIYzsoa+mKxPlIj3d2aaWFNJsmUG"}]},"maintainers":[{"name":"boczeratul","email":"boczeratul@gmail.com"},{"name":"cobinhood-dev","email":"dev@cobinhood.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web3-provider-engine_14.1.1_1544597849264_0.4815624653931432"},"_hasShrinkwrap":false}},"time":{"created":"2018-12-12T05:38:17.107Z","14.1.0":"2018-12-12T05:38:17.544Z","modified":"2022-04-05T04:12:40.435Z","14.1.1":"2018-12-12T06:57:29.434Z"},"maintainers":[{"email":"chaoweichiu@gmail.com","name":"chaoweichiu"},{"email":"dev@cobinhood.com","name":"cobinhood-dev"},{"email":"boczeratul@gmail.com","name":"boczeratul"}],"description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","homepage":"https://github.com/MetaMask/provider-engine#readme","repository":{"type":"git","url":"git+https://github.com/MetaMask/provider-engine.git"},"bugs":{"url":"https://github.com/MetaMask/provider-engine/issues"},"license":"MIT","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"}