Skip to content

Commit

Permalink
Fix HW connection
Browse files Browse the repository at this point in the history
  • Loading branch information
vbaranov committed Mar 10, 2020
1 parent e30217c commit a672bf9
Show file tree
Hide file tree
Showing 8 changed files with 225 additions and 174 deletions.
94 changes: 7 additions & 87 deletions app/scripts/controllers/network/createPocketClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,43 +8,16 @@ const createBlockTrackerInspectorMiddleware = require('eth-json-rpc-middleware/b
const providerFromMiddleware = require('eth-json-rpc-middleware/providerFromMiddleware')
const createPocketMiddleware = require('json-rpc-pocket')
const BlockTracker = require('eth-block-tracker')
const { getNetworkID } = require('../../../../old-ui/app/util')
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 networkID = getNetworkID({ network })
const pocketMiddleware = createPocketMiddleware(devid, {
netID: networkIDs.netId,
network: networkIDs.ticker,
netID: networkID.netId,
network: networkID.ticker,
})
const pocketProvider = providerFromMiddleware(pocketMiddleware)
const blockTracker = new BlockTracker({ provider: pocketProvider })
Expand All @@ -61,64 +34,11 @@ function createPocketClient ({ network }) {
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})
const networkID = getNetworkID({network})

return createScaffoldMiddleware({
eth_chainId: networkIds.chainId,
net_version: networkIds.netId,
eth_chainId: networkID.chainId,
net_version: networkID.netId,
})
}
14 changes: 12 additions & 2 deletions app/scripts/controllers/network/enums.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,20 @@ const LOCALHOST = 'localhost'

const ETH_TICK = 'ETH'
const POA_TICK = 'POA'
const RSK_TICK = 'RBTC'
const CLASSIC_TICK = 'ETC'

const MAINNET_CHAINID = '0X01'
const MAINNET_CHAINID = '0x01'
const ROPSTEN_CHAINID = '0x03'
const RINKEBY_CHAINID = '0x04'
const KOVAN_CHAINID = '0x2a'
const GOERLI_TESTNET_CHAINID = '0X5'
const GOERLI_TESTNET_CHAINID = '0x5'
const POA_CHAINID = '0x63'
const DAI_CHAINID = '0x64'
const POA_SOKOL_CHAINID = '0x4D'
const RSK_CHAINID = '0x1E'
const RSK_TESTNET_CHAINID = '0x1F'
const CLASSIC_CHAINID = '0x3D'

const POA_CODE = 99
const DAI_CODE = 100
Expand Down Expand Up @@ -68,6 +73,8 @@ module.exports = {
POA,
POA_TICK,
ETH_TICK,
RSK_TICK,
CLASSIC_TICK,
MAINNET_CHAINID,
ROPSTEN_CHAINID,
RINKEBY_CHAINID,
Expand All @@ -76,6 +83,8 @@ module.exports = {
POA_CHAINID,
DAI_CHAINID,
POA_SOKOL_CHAINID,
RSK_CHAINID,
RSK_TESTNET_CHAINID,
DAI,
POA_SOKOL,
MAINNET,
Expand All @@ -96,6 +105,7 @@ module.exports = {
KOVAN_CODE,
GOERLI_TESTNET_CODE,
CLASSIC_CODE,
CLASSIC_CHAINID,
RSK_CODE,
RSK_TESTNET_CODE,
POA_DISPLAY_NAME,
Expand Down
3 changes: 2 additions & 1 deletion app/scripts/controllers/network/network.js
Original file line number Diff line number Diff line change
Expand Up @@ -201,9 +201,10 @@ module.exports = class NetworkController extends EventEmitter {
//

_switchNetwork (opts) {
const previousNetworkID = this.getNetworkState()
this.setNetworkState('loading')
this._configureProvider(opts)
this.emit('networkDidChange', opts.type)
this.emit('networkDidChange', opts.type, previousNetworkID)
}

_configureProvider (opts) {
Expand Down
22 changes: 18 additions & 4 deletions app/scripts/metamask-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ const ethUtil = require('ethereumjs-util')
const sigUtil = require('eth-sig-util')
const { importTypes } = require('../../old-ui/app/accounts/import/enums')
const { LEDGER, TREZOR } = require('../../old-ui/app/components/connect-hardware/enum')
const { ifPOA, ifRSK } = require('../../old-ui/app/util')
const { ifPOA, ifRSK, getNetworkID } = require('../../old-ui/app/util')

const {
CLASSIC_CODE,
Expand Down Expand Up @@ -155,14 +155,28 @@ module.exports = class MetamaskController extends EventEmitter {
})

// ensure accountTracker updates balances after network change
this.networkController.on('networkDidChange', () => {
this.networkController.on('networkDidChange', (newType, previousNetworkIDStr) => {
this.accountTracker._updateAccounts()
this.detectTokensController.restartTokenDetection()

const previousNetworkID = parseInt(previousNetworkIDStr, 10)
const nextNetwork = getNetworkID({network: newType})
const nextNetworkID = parseInt(nextNetwork && nextNetwork.netId, 10)

if (nextNetworkID !== previousNetworkID) {
const isPreviousETC = previousNetworkID === CLASSIC_CODE
const isPreviousRSK = ifRSK(previousNetworkID)
const isNextETC = nextNetworkID === CLASSIC_CODE
const isNextRSK = ifRSK(nextNetworkID)
if (isPreviousETC || isPreviousRSK || isNextETC || isNextRSK) {
this.forgetDevice(LEDGER, false)
this.forgetDevice(TREZOR, false)
}
}
})

// key mgmt
// const trezorKeyring = new TrezorKeyring({hdPath: `m/44'/137'/0'/0`})
const additionalKeyrings = [new TrezorKeyring({hdPath: `m/44'/137'/0'/0`}), LedgerBridgeKeyring]
const additionalKeyrings = [TrezorKeyring, LedgerBridgeKeyring]
this.keyringController = new KeyringController({
keyringTypes: additionalKeyrings,
initState: initState.KeyringController,
Expand Down
4 changes: 2 additions & 2 deletions old-ui/app/components/connect-hardware/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ const hdRSKTestnetLedgerPath = `m/44'/37310'/0'/0`
const hdRSKTestnetLedgerLivePath = `m/44'/37310'/0'/0`

const hdETCTrezorPath = `m/44'/61'/0'/0`
const hdETCLedgerPath = `m/44'/61'/0'/0/0`
const hdETCLedgerLivePath = `m/44'/61'`
const hdETCLedgerPath = `m/44'/60'/160720'/0'`
const hdETCLedgerLivePath = `m/44'/60'/160720'/0'`

const customHdPaths = {}
customHdPaths[RSK_CODE] = {
Expand Down
102 changes: 96 additions & 6 deletions old-ui/app/util.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,44 @@
const ethUtil = require('ethereumjs-util')
const ethNetProps = require('eth-net-props')
const {
POA_SOKOL_CODE,
POA_CODE,
DAI_CODE,
RSK_CODE,
RSK_TESTNET_CODE,
ROPSTEN,
ROPSTEN_CODE,
ROPSTEN_CHAINID,
RINKEBY_CODE,
RINKEBY_CHAINID,
RINKEBY,
KOVAN,
KOVAN_CODE,
KOVAN_CHAINID,
MAINNET,
LOCALHOST,
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,
RSK_CODE,
RSK_CHAINID,
RSK_TESTNET_CODE,
RSK_TESTNET_CHAINID,
LOCALHOST,
CLASSIC,
CLASSIC_CODE,
CLASSIC_CHAINID,
CLASSIC_TICK,
RSK,
RSK_TESTNET,
RSK_TICK,
} = require('../../app/scripts/controllers/network/enums')

var valueTable = {
Expand Down Expand Up @@ -72,6 +93,7 @@ module.exports = {
isValidChecksumAddress,
isInfuraProvider,
isKnownProvider,
getNetworkID,
}

function valuesFor (obj) {
Expand Down Expand Up @@ -462,3 +484,71 @@ function isKnownProvider (type) {
type === RSK ||
type === RSK_TESTNET
}

function getNetworkID ({ 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
case RSK:
netId = RSK_CODE.toString()
chainId = RSK_CHAINID
ticker = RSK_TICK
break
case RSK_TESTNET:
netId = RSK_TESTNET_CODE.toString()
chainId = RSK_TESTNET_CHAINID
ticker = RSK_TICK
break
case CLASSIC:
netId = CLASSIC_CODE.toString()
chainId = CLASSIC_CHAINID
ticker = CLASSIC_TICK
break
default:
console.error(`getNetworkID - unknown network "${network}"`)
}
return {
chainId, netId, ticker,
}
}
Loading

0 comments on commit a672bf9

Please sign in to comment.