Skip to content

Commit

Permalink
Merge pull request #309 from poanetwork/develop
Browse files Browse the repository at this point in the history
NW release 4.11.9
  • Loading branch information
vbaranov committed Aug 22, 2019
2 parents 188d6d8 + 1a72e1b commit f552346
Show file tree
Hide file tree
Showing 21 changed files with 7,369 additions and 2,865 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

## Current Master

## 4.11.9 Thu Aug 22 2019

- [#303](https://github.com/poanetwork/nifty-wallet/pull/303): (Feature) Add Pocket Network
- [#308](https://github.com/poanetwork/nifty-wallet/pull/308): (Fix) Fix gas price calculation

## 4.11.8 Wed Jul 03 2019

- [#305](https://github.com/poanetwork/nifty-wallet/pull/305): (Feature) gas price for RSK from the last block
Expand Down
2 changes: 1 addition & 1 deletion app/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "__MSG_appName__",
"short_name": "__MSG_appName__",
"version": "4.11.8",
"version": "4.11.9",
"manifest_version": 2,
"author": "POA Network",
"description": "__MSG_appDescription__",
Expand Down
18 changes: 18 additions & 0 deletions app/scripts/controllers/network/createLocalhostClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@ const mergeMiddleware = require('json-rpc-engine/src/mergeMiddleware')
const createFetchMiddleware = require('eth-json-rpc-middleware/fetch')
const createBlockRefRewriteMiddleware = require('eth-json-rpc-middleware/block-ref-rewrite')
const createBlockTrackerInspectorMiddleware = require('eth-json-rpc-middleware/block-tracker-inspector')
const createAsyncMiddleware = require('json-rpc-engine/src/createAsyncMiddleware')
const providerFromMiddleware = require('eth-json-rpc-middleware/providerFromMiddleware')
const BlockTracker = require('eth-block-tracker')

const inTest = process.env.IN_TEST === 'true'

module.exports = createLocalhostClient

function createLocalhostClient () {
Expand All @@ -13,9 +16,24 @@ function createLocalhostClient () {
const blockTracker = new BlockTracker({ provider: blockProvider, pollingInterval: 1000 })

const networkMiddleware = mergeMiddleware([
createEstimateGasMiddleware(),
createBlockRefRewriteMiddleware({ blockTracker }),
createBlockTrackerInspectorMiddleware({ blockTracker }),
fetchMiddleware,
])
return { networkMiddleware, blockTracker }
}

function delay (time) {
return new Promise(resolve => setTimeout(resolve, time))
}


function createEstimateGasMiddleware () {
return createAsyncMiddleware(async (req, _, next) => {
if (req.method === 'eth_estimateGas' && inTest) {
await delay(2000)
}
return next()
})
}
124 changes: 124 additions & 0 deletions app/scripts/controllers/network/createPocketClient.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
const mergeMiddleware = require('json-rpc-engine/src/mergeMiddleware')
const createScaffoldMiddleware = require('json-rpc-engine/src/createScaffoldMiddleware')
const createBlockReRefMiddleware = require('eth-json-rpc-middleware/block-ref')
const createRetryOnEmptyMiddleware = require('eth-json-rpc-middleware/retryOnEmpty')
const createBlockCacheMiddleware = require('eth-json-rpc-middleware/block-cache')
const createInflightMiddleware = require('eth-json-rpc-middleware/inflight-cache')
const createBlockTrackerInspectorMiddleware = require('eth-json-rpc-middleware/block-tracker-inspector')
const providerFromMiddleware = require('eth-json-rpc-middleware/providerFromMiddleware')
const createPocketMiddleware = require('json-rpc-pocket')
const BlockTracker = require('eth-block-tracker')
const devid = 'DEVVGQ8VfHgBBet8CyowHcN'
const {
ROPSTEN,
ROPSTEN_CODE,
ROPSTEN_CHAINID,
RINKEBY_CODE,
RINKEBY_CHAINID,
RINKEBY,
KOVAN,
KOVAN_CODE,
KOVAN_CHAINID,
MAINNET,
MAINNET_CODE,
MAINNET_CHAINID,
ETH_TICK,
POA_SOKOL,
POA_CODE,
POA_CHAINID,
POA_TICK,
POA,
DAI,
DAI_CODE,
DAI_CHAINID,
GOERLI_TESTNET,
GOERLI_TESTNET_CODE,
GOERLI_TESTNET_CHAINID,
POA_SOKOL_CODE,
POA_SOKOL_CHAINID,
} = require('./enums')

module.exports = createPocketClient

function createPocketClient ({ network }) {
const networkIDs = getNetworkIds({ network })
const pocketMiddleware = createPocketMiddleware(devid, {
netID: networkIDs.netId,
network: networkIDs.ticker,
})
const pocketProvider = providerFromMiddleware(pocketMiddleware)
const blockTracker = new BlockTracker({ provider: pocketProvider })

const networkMiddleware = mergeMiddleware([
createNetworkAndChainIdMiddleware({ network }),
createBlockCacheMiddleware({ blockTracker }),
createInflightMiddleware(),
createBlockReRefMiddleware({ blockTracker, provider: pocketProvider }),
createRetryOnEmptyMiddleware({ blockTracker, provider: pocketProvider }),
createBlockTrackerInspectorMiddleware({ blockTracker }),
pocketMiddleware,
])
return { networkMiddleware, blockTracker }
}

function getNetworkIds ({ network }) {
let chainId
let netId
let ticker
switch (network) {
case MAINNET:
netId = MAINNET_CODE.toString()
chainId = MAINNET_CHAINID
ticker = ETH_TICK
break
case ROPSTEN:
netId = ROPSTEN_CODE.toString()
chainId = ROPSTEN_CHAINID
ticker = ETH_TICK
break
case RINKEBY:
netId = RINKEBY_CODE.toString()
chainId = RINKEBY_CHAINID
ticker = ETH_TICK
break
case KOVAN:
netId = KOVAN_CODE.toString()
chainId = KOVAN_CHAINID
ticker = ETH_TICK
break
case GOERLI_TESTNET:
netId = GOERLI_TESTNET_CODE.toString()
chainId = GOERLI_TESTNET_CHAINID
ticker = ETH_TICK
break
case POA:
netId = POA_CODE.toString()
chainId = POA_CHAINID
ticker = POA_TICK
break
case DAI:
netId = DAI_CODE.toString()
chainId = DAI_CHAINID
ticker = POA_TICK
break
case POA_SOKOL:
netId = POA_SOKOL_CODE.toString()
chainId = POA_SOKOL_CHAINID
ticker = POA_TICK
break
default:
throw new Error(`createPocketClient - unknown network "${network}"`)
}
return {
chainId, netId, ticker,
}
}

function createNetworkAndChainIdMiddleware ({ network }) {
const networkIds = getNetworkIds({network})

return createScaffoldMiddleware({
eth_chainId: networkIds.chainId,
net_version: networkIds.netId,
})
}
22 changes: 22 additions & 0 deletions app/scripts/controllers/network/enums.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,18 @@ const RSK = 'rsk'
const RSK_TESTNET = 'rsk_testnet'
const LOCALHOST = 'localhost'

const ETH_TICK = 'ETH'
const POA_TICK = 'POA'

const MAINNET_CHAINID = '0X01'
const ROPSTEN_CHAINID = '0x03'
const RINKEBY_CHAINID = '0x04'
const KOVAN_CHAINID = '0x2a'
const GOERLI_TESTNET_CHAINID = '0X5'
const POA_CHAINID = '0x63'
const DAI_CHAINID = '0x64'
const POA_SOKOL_CHAINID = '0x4D'

const POA_CODE = 99
const DAI_CODE = 100
const POA_SOKOL_CODE = 77
Expand Down Expand Up @@ -54,6 +66,16 @@ const chainTypes = {

module.exports = {
POA,
POA_TICK,
ETH_TICK,
MAINNET_CHAINID,
ROPSTEN_CHAINID,
RINKEBY_CHAINID,
KOVAN_CHAINID,
GOERLI_TESTNET_CHAINID,
POA_CHAINID,
DAI_CHAINID,
POA_SOKOL_CHAINID,
DAI,
POA_SOKOL,
MAINNET,
Expand Down
Loading

0 comments on commit f552346

Please sign in to comment.