Merge pull request #442 from poanetwork/develop

NW release 5.2.3
This commit is contained in:
Victor Baranov 2021-01-15 19:54:37 +03:00 committed by GitHub
commit 1fafa1b26b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 69 additions and 19 deletions

2
.gitignore vendored
View File

@ -45,3 +45,5 @@ notes.txt
.coveralls.yml
.nyc_output
.niftywalletrc

2
.niftywalletrc.dist Normal file
View File

@ -0,0 +1,2 @@
; Extra environment variables
ETH_MAINNET_RPC_ENDPOINT=00000000000

View File

@ -2,6 +2,10 @@
## Current Master
## 5.2.3 Fri Jan 15 2021
- [#441](https://github.com/poanetwork/nifty-wallet/pull/441) - Replace Infura Mainnet endpoint with custom one
## 5.2.2 Tue Dec 29 2020
- [#437](https://github.com/poanetwork/nifty-wallet/pull/437) - Support getting proxy implementation address by following EIP-1967

View File

@ -1,7 +1,7 @@
{
"name": "__MSG_appName__",
"short_name": "__MSG_appName__",
"version": "5.2.2",
"version": "5.2.3",
"manifest_version": 2,
"author": "POA Network",
"description": "__MSG_appDescription__",

View File

@ -242,6 +242,7 @@ function setupController (initState, initLangCode) {
//
const controller = new MetamaskController({
ethMainnetRpcEndpoint: process.env.ETH_MAINNET_RPC_ENDPOINT,
// User confirmation callbacks:
showUnconfirmedMessage: triggerUi,
unlockAccountMessage: triggerUi,

View File

@ -129,19 +129,11 @@ class CurrencyController {
try {
currentCurrency = this.getCurrentCurrency()
currentCoin = this.getCurrentCoin()
let conversionRate, conversionDate
if (currentCoin === 'poa' || currentCoin === 'etc' || currentCoin === 'rbtc') {
const apiLink = `https://min-api.cryptocompare.com/data/price?fsym=${currentCoin.toUpperCase()}&tsyms=${currentCurrency.toUpperCase()}`
const response = await fetch(apiLink)
const parsedResponse = await response.json()
conversionRate = Number(parsedResponse[currentCurrency.toUpperCase()])
conversionDate = parseInt((new Date()).getTime() / 1000)
} else {
const response = await fetch(`https://api.infura.io/v1/ticker/eth${currentCurrency.toLowerCase()}`)
const parsedResponse = await response.json()
conversionRate = Number(parsedResponse.bid)
conversionDate = Number(parsedResponse.timestamp)
}
const apiLink = `https://min-api.cryptocompare.com/data/price?fsym=${currentCoin.toUpperCase()}&tsyms=${currentCurrency.toUpperCase()}`
const response = await fetch(apiLink)
const parsedResponse = await response.json()
const conversionRate = Number(parsedResponse[currentCurrency.toUpperCase()])
const conversionDate = parseInt((new Date()).getTime() / 1000)
this.setConversionRate(conversionRate)
this.setConversionDate(conversionDate)
} catch (err) {

View File

@ -41,7 +41,7 @@ const {
RSK_CODE,
RSK_TESTNET_CODE,
} = require('./enums')
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET]
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN]
const POCKET_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET, POA, DAI, GOERLI_TESTNET, POA_SOKOL]
const env = process.env.METAMASK_ENV
@ -234,6 +234,8 @@ module.exports = class NetworkController extends EventEmitter {
} else if (isInfura) {
this._configureInfuraProvider(opts)
// other type-based rpc endpoints
} else if (type === MAINNET) {
this._configureStandardProvider({ rpcUrl: this._ethMainnetRpcEndpoint, chainId, ticker, nickname })
} else if (type === POA) {
this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(POA_CODE)[0], chainId, ticker, nickname })
} else if (type === DAI) {
@ -258,6 +260,21 @@ module.exports = class NetworkController extends EventEmitter {
}
}
/**
* Sets the Ethereum Mainnet RPC endpoint
*
* @param {string} endpoint - Ethereum Mainnet RPC endpoint
* @throws {Error} if the endpoint is not a valid string
* @return {void}
*/
setEthMainnetRPCEndpoint (endpoint) {
if (!endpoint || typeof endpoint !== 'string') {
throw new Error('Invalid ETH Mainnet RPC Endpoint')
}
this._ethMainnetRpcEndpoint = endpoint
}
_configureInfuraProvider ({ type }) {
log.info('NetworkController - configureInfuraProvider', type)
const networkClient = createInfuraClient({

View File

@ -108,6 +108,7 @@ module.exports = class MetamaskController extends EventEmitter {
// network store
this.networkController = new NetworkController(initState.NetworkController)
this.networkController.setEthMainnetRPCEndpoint(opts.ethMainnetRpcEndpoint)
// preferences controller
this.preferencesController = new PreferencesController({
@ -494,7 +495,7 @@ module.exports = class MetamaskController extends EventEmitter {
setPreference: nodeify(preferencesController.setPreference, preferencesController),
// BlacklistController
whitelistPhishingDomain: this.whitelistPhishingDomain.bind(this),
// whitelistPhishingDomain: this.whitelistPhishingDomain.bind(this),
// AddressController
setAddressBook: nodeify(addressBookController.setAddressBook, addressBookController),

View File

@ -30,6 +30,10 @@ function gulpParallel (...args) {
}
}
const conf = require('rc')('niftywallet', {
ETH_MAINNET_RPC_ENDPOINT: process.env.ETH_MAINNET_RPC_ENDPOINT,
})
const browserPlatforms = [
'firefox',
'chrome',
@ -425,6 +429,7 @@ function generateBundler (opts, performBundle) {
bundler.transform(envify({
METAMASK_DEBUG: opts.devMode,
NODE_ENV: opts.devMode ? 'development' : 'production',
ETH_MAINNET_RPC_ENDPOINT: conf.ETH_MAINNET_RPC_ENDPOINT,
}))
if (opts.watch) {

View File

@ -42,6 +42,8 @@ const {
customDPaths,
} = require('../../app/scripts/controllers/network/enums')
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN]
const valueTable = {
wei: '1000000000000000000',
kwei: '1000000000000000',
@ -491,14 +493,13 @@ function isValidChecksumAddress (network, address) {
}
function isInfuraProvider (type) {
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET]
return INFURA_PROVIDER_TYPES.includes(type)
}
function isKnownProvider (type) {
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET]
return INFURA_PROVIDER_TYPES.includes(type) ||
type === LOCALHOST ||
type === MAINNET ||
type === POA_SOKOL ||
type === POA ||
type === DAI ||

20
package-lock.json generated
View File

@ -42987,6 +42987,26 @@
}
}
},
"rc": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
},
"dependencies": {
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
"dev": true
}
}
},
"react": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz",

View File

@ -306,6 +306,7 @@
"qs": "^6.2.0",
"qunitjs": "^2.4.1",
"radgrad-jsdoc-template": "^1.1.3",
"rc": "^1.2.8",
"react-redux": "^7.2.0",
"react-test-renderer": "^16.12.0",
"react-testutils-additions": "^16.0.2",

View File

@ -25,6 +25,7 @@ describe('DetectTokensController', () => {
keyringMemStore = new ObservableStore({ isUnlocked: false})
network = new NetworkController()
network.setEthMainnetRPCEndpoint('foo')
preferences = new PreferencesController({ network })
controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })

View File

@ -69,6 +69,7 @@ describe('MetaMaskController', function () {
},
initState: cloneDeep(firstTimeState),
platform: { showTransactionNotification: () => {} },
ethMainnetRpcEndpoint: 'foo',
})
// disable diagnostics
metamaskController.diagnostics = null

View File

@ -20,6 +20,7 @@ describe('# Network Controller', function () {
.reply(200)
networkController = new NetworkController()
networkController.setEthMainnetRPCEndpoint('foo')
networkController.initializeProvider(networkControllerProviderConfig)
})

View File

@ -401,7 +401,7 @@ describe('normalizing values', function () {
assert(isInfuraProvider('kovan'))
assert(isInfuraProvider('ropsten'))
assert(isInfuraProvider('rinkeby'))
assert(isInfuraProvider('mainnet'))
assert(!isInfuraProvider('mainnet'))
assert(!isInfuraProvider('goerli_testnet'))
assert(!isInfuraProvider('sokol'))
assert(!isInfuraProvider('classic'))

View File

@ -53,6 +53,7 @@ describe('Actions', () => {
},
},
initState: clone(firstTimeState),
ethMainnetRpcEndpoint: 'foo',
})
await metamaskController.createNewVaultAndRestore(password, TEST_SEED)