diff --git a/app/scripts/controllers/network/enums.js b/app/scripts/controllers/network/enums.js index 661fd6ac0bac..9a02ca416bf7 100644 --- a/app/scripts/controllers/network/enums.js +++ b/app/scripts/controllers/network/enums.js @@ -5,6 +5,7 @@ const MAINNET = 'mainnet' const ROPSTEN = 'ropsten' const RINKEBY = 'rinkeby' const KOVAN = 'kovan' +const GOERLI_TESTNET = 'goerli_testnet' const LOCALHOST = 'localhost' const POA_CODE = 99 @@ -14,6 +15,7 @@ const MAINNET_CODE = 1 const ROPSTEN_CODE = 3 const RINKEBY_CODE = 4 const KOVAN_CODE = 42 +const GOERLI_TESTNET_CODE = 5 const POA_DISPLAY_NAME = 'POA Network' const DAI_DISPLAY_NAME = 'xDai Chain' @@ -22,6 +24,7 @@ const MAINNET_DISPLAY_NAME = 'Main Ethereum Network' const ROPSTEN_DISPLAY_NAME = 'Ropsten' const RINKEBY_DISPLAY_NAME = 'Rinkeby' const KOVAN_DISPLAY_NAME = 'Kovan' +const GOERLI_TESTNET_DISPLAY_NAME = 'Görli Testnet' const DROPDOWN_POA_DISPLAY_NAME = POA_DISPLAY_NAME const DROPDOWN_DAI_DISPLAY_NAME = DAI_DISPLAY_NAME @@ -30,6 +33,7 @@ const DROPDOWN_MAINNET_DISPLAY_NAME = 'Main Network' const DROPDOWN_ROPSTEN_DISPLAY_NAME = 'Ropsten Test Net' const DROPDOWN_RINKEBY_DISPLAY_NAME = 'Rinkeby Test Net' const DROPDOWN_KOVAN_DISPLAY_NAME = 'Kovan Test Net' +const DROPDOWN_GOERLI_TESTNET_DISPLAY_NAME = 'Görli Test Net' module.exports = { POA, @@ -39,6 +43,7 @@ module.exports = { ROPSTEN, RINKEBY, KOVAN, + GOERLI_TESTNET, LOCALHOST, POA_CODE, DAI_CODE, @@ -47,6 +52,7 @@ module.exports = { ROPSTEN_CODE, RINKEBY_CODE, KOVAN_CODE, + GOERLI_TESTNET_CODE, POA_DISPLAY_NAME, DAI_DISPLAY_NAME, POA_SOKOL_DISPLAY_NAME, @@ -54,6 +60,7 @@ module.exports = { ROPSTEN_DISPLAY_NAME, RINKEBY_DISPLAY_NAME, KOVAN_DISPLAY_NAME, + GOERLI_TESTNET_DISPLAY_NAME, DROPDOWN_POA_DISPLAY_NAME, DROPDOWN_DAI_DISPLAY_NAME, DROPDOWN_POA_SOKOL_DISPLAY_NAME, @@ -61,4 +68,5 @@ module.exports = { DROPDOWN_ROPSTEN_DISPLAY_NAME, DROPDOWN_RINKEBY_DISPLAY_NAME, DROPDOWN_KOVAN_DISPLAY_NAME, + DROPDOWN_GOERLI_TESTNET_DISPLAY_NAME, } diff --git a/app/scripts/controllers/network/network.js b/app/scripts/controllers/network/network.js index 78a44adb6fb9..46580dec0d20 100644 --- a/app/scripts/controllers/network/network.js +++ b/app/scripts/controllers/network/network.js @@ -22,9 +22,11 @@ const { POA_SOKOL, POA, DAI, + GOERLI_TESTNET, POA_CODE, DAI_CODE, POA_SOKOL_CODE, + GOERLI_TESTNET_CODE, } = require('./enums') const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET] @@ -114,7 +116,8 @@ module.exports = class NetworkController extends EventEmitter { type === LOCALHOST || type === POA_SOKOL || type === POA || - type === DAI + type === DAI || + type === GOERLI_TESTNET , `NetworkController - Unknown rpc type "${type}"`) const providerConfig = { type } this.providerConfig = providerConfig @@ -156,6 +159,8 @@ module.exports = class NetworkController extends EventEmitter { this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(DAI_CODE)[0] }) } else if (type === POA_SOKOL) { this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(POA_SOKOL_CODE)[0] }) + } else if (type === GOERLI_TESTNET) { + this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(GOERLI_TESTNET_CODE)[0] }) } else if (type === LOCALHOST) { this._configureLocalhostProvider() // url-based rpc endpoints diff --git a/app/scripts/controllers/network/util.js b/app/scripts/controllers/network/util.js index 820b6fd8e9c4..b7592a483c99 100644 --- a/app/scripts/controllers/network/util.js +++ b/app/scripts/controllers/network/util.js @@ -6,6 +6,7 @@ const { ROPSTEN, RINKEBY, KOVAN, + GOERLI_TESTNET, POA_CODE, DAI_CODE, POA_SOKOL_CODE, @@ -13,6 +14,7 @@ const { ROPSTEN_CODE, RINKEBY_CODE, KOVAN_CODE, + GOERLI_TESTNET_CODE, POA_DISPLAY_NAME, DAI_DISPLAY_NAME, POA_SOKOL_DISPLAY_NAME, @@ -20,6 +22,7 @@ const { ROPSTEN_DISPLAY_NAME, RINKEBY_DISPLAY_NAME, KOVAN_DISPLAY_NAME, + GOERLI_TESTNET_DISPLAY_NAME, DROPDOWN_POA_DISPLAY_NAME, DROPDOWN_DAI_DISPLAY_NAME, DROPDOWN_POA_SOKOL_DISPLAY_NAME, @@ -27,6 +30,7 @@ const { DROPDOWN_ROPSTEN_DISPLAY_NAME, DROPDOWN_RINKEBY_DISPLAY_NAME, DROPDOWN_KOVAN_DISPLAY_NAME, + DROPDOWN_GOERLI_TESTNET_DISPLAY_NAME, } = require('./enums') const networks = {} @@ -101,6 +105,16 @@ const RINKEBY_OBJ = { networks[RINKEBY_CODE] = RINKEBY_OBJ networks[RINKEBY] = RINKEBY_OBJ +const GOERLI_TESTNET_OBJ = { + order: 7, + providerName: GOERLI_TESTNET, + networkID: GOERLI_TESTNET_CODE, + displayName: GOERLI_TESTNET_DISPLAY_NAME, + displayNameDropdown: DROPDOWN_GOERLI_TESTNET_DISPLAY_NAME, +} +networks[GOERLI_TESTNET_CODE] = GOERLI_TESTNET_OBJ +networks[GOERLI_TESTNET] = GOERLI_TESTNET_OBJ + const getNetworkDisplayName = key => networks[key].displayName module.exports = { diff --git a/app/scripts/lib/buy-eth-url.js b/app/scripts/lib/buy-eth-url.js index 1e83abcb7d72..f4567dcba187 100644 --- a/app/scripts/lib/buy-eth-url.js +++ b/app/scripts/lib/buy-eth-url.js @@ -11,7 +11,8 @@ const { POA_CODE, MAINNET_CODE, ROPSTEN_CODE, RINKEBY_CODE, - KOVAN_CODE } = require('../controllers/network/enums') + KOVAN_CODE, + GOERLI_TESTNET_CODE } = require('../controllers/network/enums') /** * Gives the caller a url at which the user can acquire coin, depending on the network they are in @@ -37,6 +38,7 @@ function getBuyEthUrl ({ network, amount, address, ind }) { case RINKEBY_CODE: case KOVAN_CODE: case POA_SOKOL_CODE: + case GOERLI_TESTNET_CODE: url = getFaucets(network)[ind] break } diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 0351f3b84f28..2a00e983fdf3 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -55,7 +55,8 @@ 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 { POA_CODE, +const { + POA_CODE, DAI_CODE, POA_SOKOL_CODE } = require('./controllers/network/enums') const accountsPerPage = 5 diff --git a/app/scripts/platforms/extension.js b/app/scripts/platforms/extension.js index 1952d6b99bb5..732f3edef291 100644 --- a/app/scripts/platforms/extension.js +++ b/app/scripts/platforms/extension.js @@ -1,9 +1,11 @@ const extension = require('extensionizer') const explorerLinks = require('eth-net-props').explorerLinks const { capitalizeFirstLetter } = require('../lib/util') -const { POA_CODE, +const { + POA_CODE, DAI_CODE, - POA_SOKOL_CODE } = require('../controllers/network/enums') + POA_SOKOL_CODE, + GOERLI_TESTNET_CODE } = require('../controllers/network/enums') class ExtensionPlatform { @@ -130,7 +132,8 @@ class ExtensionPlatform { let explorerName if (networkId === POA_CODE || networkId === DAI_CODE || - networkId === POA_SOKOL_CODE + networkId === POA_SOKOL_CODE || + networkId === GOERLI_TESTNET_CODE ) { explorerName = 'BlockScout' } else { diff --git a/old-ui/app/accounts/import/contract.js b/old-ui/app/accounts/import/contract.js index 4a15a45dee99..7b426d684b40 100644 --- a/old-ui/app/accounts/import/contract.js +++ b/old-ui/app/accounts/import/contract.js @@ -14,7 +14,8 @@ import { POA_CODE, MAINNET_CODE, ROPSTEN_CODE, RINKEBY_CODE, - KOVAN_CODE } from '../../../../app/scripts/controllers/network/enums' + KOVAN_CODE, + GOERLI_TESTNET_CODE } from '../../../../app/scripts/controllers/network/enums' class ContractImportView extends Component { constructor (props) { @@ -211,6 +212,8 @@ class ContractImportView extends Component { return 'ropsten' case RINKEBY_CODE: return 'rinkeby' + case GOERLI_TESTNET_CODE: + return 'goerli' default: return '' } diff --git a/old-ui/app/components/fiat-value.js b/old-ui/app/components/fiat-value.js index 3cd600ab81fd..23da6c8c05ce 100644 --- a/old-ui/app/components/fiat-value.js +++ b/old-ui/app/components/fiat-value.js @@ -1,14 +1,14 @@ import React, { Component } from 'react' import { formatBalance, countSignificantDecimals } from '../util' import PropTypes from 'prop-types' -import { DAI_CODE, POA_SOKOL_CODE } from '../../../app/scripts/controllers/network/enums' +import { DAI_CODE, POA_SOKOL_CODE, GOERLI_TESTNET_CODE } from '../../../app/scripts/controllers/network/enums' class FiatValue extends Component { render = () => { const props = this.props let { conversionRate } = props const { currentCurrency, network } = props - const isTestnet = parseInt(network) === POA_SOKOL_CODE + const isTestnet = parseInt(network) === POA_SOKOL_CODE || parseInt(network) === GOERLI_TESTNET_CODE const isDai = parseInt(network) === DAI_CODE if (isTestnet) { conversionRate = 0 diff --git a/old-ui/app/components/transaction-list-item.js b/old-ui/app/components/transaction-list-item.js index c40420d1ba0d..37aecc1e14f0 100644 --- a/old-ui/app/components/transaction-list-item.js +++ b/old-ui/app/components/transaction-list-item.js @@ -22,6 +22,7 @@ const { POA_CODE, ROPSTEN_CODE, RINKEBY_CODE, KOVAN_CODE, + GOERLI_TESTNET_CODE, } = require('../../../app/scripts/controllers/network/enums') const mapDispatchToProps = dispatch => { @@ -80,7 +81,8 @@ TransactionListItem.prototype.render = function () { numericNet === KOVAN_CODE || numericNet === POA_SOKOL_CODE || numericNet === POA_CODE || - numericNet === DAI_CODE + numericNet === DAI_CODE || + numericNet === GOERLI_TESTNET_CODE var isMsg = ('msgParams' in transaction) var isTx = ('txParams' in transaction) diff --git a/old-ui/app/conf-tx.js b/old-ui/app/conf-tx.js index 5824b6506e45..c4ca6552259f 100644 --- a/old-ui/app/conf-tx.js +++ b/old-ui/app/conf-tx.js @@ -13,7 +13,7 @@ import PendingMsg from './components/pending-msg' import PendingPersonalMsg from './components/pending-personal-msg' import PendingTypedMsg from './components/pending-typed-msg' const Loading = require('./components/loading') -const { DAI_CODE, POA_SOKOL_CODE } = require('../../app/scripts/controllers/network/enums') +const { DAI_CODE, POA_SOKOL_CODE, GOERLI_TESTNET_CODE } = require('../../app/scripts/controllers/network/enums') const { getMetaMaskAccounts } = require('../../ui/app/selectors') module.exports = connect(mapStateToProps)(ConfirmTxScreen) @@ -57,7 +57,7 @@ ConfirmTxScreen.prototype.render = function () { unapprovedMsgs, unapprovedPersonalMsgs, unapprovedTypedMessages, blockGasLimit } = props let { conversionRate } = props - const isTestnet = parseInt(network) === POA_SOKOL_CODE + const isTestnet = parseInt(network) === POA_SOKOL_CODE || parseInt(network) === GOERLI_TESTNET_CODE const isDai = parseInt(network) === DAI_CODE if (isTestnet) { conversionRate = 0 diff --git a/package-lock.json b/package-lock.json index 200a7f0f5282..be2c6f15069f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10731,9 +10731,9 @@ } }, "eth-net-props": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/eth-net-props/-/eth-net-props-1.0.11.tgz", - "integrity": "sha512-D5BJCoRAf0Q40X4tb0IN8goZTddYwtKqRBYklglS36iPd0qXu183NktYJ63e+1dLzeBG5vvkqN9LXW9CbLxhOQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/eth-net-props/-/eth-net-props-1.0.13.tgz", + "integrity": "sha512-jQ+6WD0vRAQyrYwdfGmfV3URE/U+7hNrwutWYFbJ5C4gONSmIOeoJS1lsRU+DjJ2N8TdwsY86Ov6+li3lmfWoQ==", "requires": { "chai": "^4.1.2" } diff --git a/package.json b/package.json index 2dead27551be..a4d6223aa66b 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "eth-keychain-controller": "github:vbaranov/KeyringController#simple-address", "eth-ledger-bridge-keyring": "github:vbaranov/eth-ledger-bridge-keyring#0.1.0-clear-accounts-flag", "eth-method-registry": "^1.0.0", - "eth-net-props": "^1.0.11", + "eth-net-props": "^1.0.13", "eth-phishing-detect": "^1.1.4", "eth-query": "^2.1.2", "eth-sig-util": "^2.0.2", diff --git a/test/e2e/elements.js b/test/e2e/elements.js index 424f90a5e5ac..36cff816828b 100644 --- a/test/e2e/elements.js +++ b/test/e2e/elements.js @@ -398,6 +398,7 @@ module.exports = { ROPSTEN: 'ropsten', KOVAN: 'kovan', RINKEBY: 'rinkeby', + GOERLI: 'goerli', LOCALHOST: 'localhost', CUSTOM: 'http://test.com', }, diff --git a/test/e2e/func.js b/test/e2e/func.js index 804123db88f9..0f4831341be7 100644 --- a/test/e2e/func.js +++ b/test/e2e/func.js @@ -132,14 +132,17 @@ class Functions { case NETWORKS.RINKEBY: counter = 6 break - case NETWORKS.LOCALHOST: + case NETWORKS.GOERLI: counter = 7 break - case NETWORKS.CUSTOM: + case NETWORKS.LOCALHOST: counter = 8 break + case NETWORKS.CUSTOM: + counter = 9 + break default: - counter = 7 + counter = 8 } await this.driver.executeScript("document.getElementsByClassName('dropdown-menu-item')[" + counter + '].click();') }