mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-22 17:33:23 +01:00
Make default providers more easiliy configurable for metamask devs
No longer do our `mainnet` and `testnet` buttons set specific RPC urls. Now they set `provider.type`, which gets interpreted with code. Currently the provider types of `mainnet` and `testnet` point to our new scalable backends, but these could be re-interpreted to use any other provider, be it etherscan, peer to peer, or otherwise. Makes it easier for us to upgrade our infrastructure without incorporating migration logic into the program.
This commit is contained in:
parent
ab273ba444
commit
d8bee4f599
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
## Current Master
|
## Current Master
|
||||||
|
|
||||||
|
- Initial usage of scalable blockchain backend.
|
||||||
|
- Made official providers more easily configurable for us internally.
|
||||||
|
|
||||||
## 1.8.0 2016-05-10
|
## 1.8.0 2016-05-10
|
||||||
|
|
||||||
- Add support for calls to `eth.sign`.
|
- Add support for calls to `eth.sign`.
|
||||||
|
@ -168,6 +168,7 @@ function setupControllerConnection(stream){
|
|||||||
var dnode = Dnode({
|
var dnode = Dnode({
|
||||||
getState: function(cb){ cb(null, getState()) },
|
getState: function(cb){ cb(null, getState()) },
|
||||||
setRpcTarget: setRpcTarget,
|
setRpcTarget: setRpcTarget,
|
||||||
|
setProviderType: setProviderType,
|
||||||
useEtherscanProvider: useEtherscanProvider,
|
useEtherscanProvider: useEtherscanProvider,
|
||||||
// forward directly to idStore
|
// forward directly to idStore
|
||||||
createNewVault: idStore.createNewVault.bind(idStore),
|
createNewVault: idStore.createNewVault.bind(idStore),
|
||||||
@ -255,6 +256,12 @@ function setRpcTarget(rpcTarget){
|
|||||||
idStore.getNetwork(3) // 3 retry attempts
|
idStore.getNetwork(3) // 3 retry attempts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setProviderType(type) {
|
||||||
|
configManager.setProviderType(type)
|
||||||
|
chrome.runtime.reload()
|
||||||
|
idStore.getNetwork(3)
|
||||||
|
}
|
||||||
|
|
||||||
function useEtherscanProvider() {
|
function useEtherscanProvider() {
|
||||||
configManager.useEtherscanProvider()
|
configManager.useEtherscanProvider()
|
||||||
chrome.runtime.reload()
|
chrome.runtime.reload()
|
||||||
|
@ -2,7 +2,8 @@ const Migrator = require('pojo-migrator')
|
|||||||
const extend = require('xtend')
|
const extend = require('xtend')
|
||||||
|
|
||||||
const STORAGE_KEY = 'metamask-config'
|
const STORAGE_KEY = 'metamask-config'
|
||||||
const DEFAULT_RPC = 'https://testrpc.metamask.io/'
|
const TESTNET_RPC = 'http://morden.infura.io'
|
||||||
|
const MAINNET_RPC = 'http://mainnet.infura.io/'
|
||||||
|
|
||||||
const migrations = require('./migrations')
|
const migrations = require('./migrations')
|
||||||
|
|
||||||
@ -59,8 +60,7 @@ ConfigManager.prototype.getConfig = function() {
|
|||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
provider: {
|
provider: {
|
||||||
type: 'rpc',
|
type: 'testnet',
|
||||||
rpcTarget: DEFAULT_RPC,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -75,6 +75,14 @@ ConfigManager.prototype.setRpcTarget = function(rpcUrl) {
|
|||||||
this.setConfig(config)
|
this.setConfig(config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigManager.prototype.setProviderType = function(type) {
|
||||||
|
var config = this.getConfig()
|
||||||
|
config.provider = {
|
||||||
|
type: type,
|
||||||
|
}
|
||||||
|
this.setConfig(config)
|
||||||
|
}
|
||||||
|
|
||||||
ConfigManager.prototype.useEtherscanProvider = function() {
|
ConfigManager.prototype.useEtherscanProvider = function() {
|
||||||
var config = this.getConfig()
|
var config = this.getConfig()
|
||||||
config.provider = {
|
config.provider = {
|
||||||
@ -130,9 +138,19 @@ ConfigManager.prototype.getShouldShowSeedWords = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ConfigManager.prototype.getCurrentRpcAddress = function() {
|
ConfigManager.prototype.getCurrentRpcAddress = function() {
|
||||||
var config = this.getConfig()
|
var provider = this.getProvider()
|
||||||
if (!config) return null
|
if (!provider) return null
|
||||||
return config.provider && config.provider.rpcTarget ? config.provider.rpcTarget : DEFAULT_RPC
|
switch (provider.type) {
|
||||||
|
|
||||||
|
case 'mainnet':
|
||||||
|
return MAINNET_RPC
|
||||||
|
|
||||||
|
case 'testnet':
|
||||||
|
return TESTNET_RPC
|
||||||
|
|
||||||
|
default:
|
||||||
|
return provider && provider.rpcTarget ? provider.rpcTarget : TESTNET_RPC
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigManager.prototype.clearWallet = function() {
|
ConfigManager.prototype.clearWallet = function() {
|
||||||
@ -246,7 +264,9 @@ function loadData() {
|
|||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
config: {
|
config: {
|
||||||
rpcTarget: DEFAULT_RPC,
|
provider: {
|
||||||
|
type: 'testnet',
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, oldData ? oldData : null, newData ? newData : null)
|
}, oldData ? oldData : null, newData ? newData : null)
|
||||||
|
@ -77,10 +77,12 @@ var actions = {
|
|||||||
// config screen
|
// config screen
|
||||||
SHOW_CONFIG_PAGE: 'SHOW_CONFIG_PAGE',
|
SHOW_CONFIG_PAGE: 'SHOW_CONFIG_PAGE',
|
||||||
SET_RPC_TARGET: 'SET_RPC_TARGET',
|
SET_RPC_TARGET: 'SET_RPC_TARGET',
|
||||||
|
SET_PROVIDER_TYPE: 'SET_PROVIDER_TYPE',
|
||||||
USE_ETHERSCAN_PROVIDER: 'USE_ETHERSCAN_PROVIDER',
|
USE_ETHERSCAN_PROVIDER: 'USE_ETHERSCAN_PROVIDER',
|
||||||
useEtherscanProvider: useEtherscanProvider,
|
useEtherscanProvider: useEtherscanProvider,
|
||||||
showConfigPage: showConfigPage,
|
showConfigPage: showConfigPage,
|
||||||
setRpcTarget: setRpcTarget,
|
setRpcTarget: setRpcTarget,
|
||||||
|
setProviderType: setProviderType,
|
||||||
// hacky - need a way to get a reference to account manager
|
// hacky - need a way to get a reference to account manager
|
||||||
_setAccountManager: _setAccountManager,
|
_setAccountManager: _setAccountManager,
|
||||||
// loading overlay
|
// loading overlay
|
||||||
@ -369,6 +371,14 @@ function setRpcTarget(newRpc) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setProviderType(type) {
|
||||||
|
_accountManager.setProviderType(type)
|
||||||
|
return {
|
||||||
|
type: this.SET_PROVIDER_TYPE,
|
||||||
|
value: type,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function useEtherscanProvider() {
|
function useEtherscanProvider() {
|
||||||
_accountManager.useEtherscanProvider()
|
_accountManager.useEtherscanProvider()
|
||||||
return {
|
return {
|
||||||
|
@ -84,7 +84,7 @@ ConfigScreen.prototype.render = function() {
|
|||||||
},
|
},
|
||||||
onClick(event) {
|
onClick(event) {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
state.dispatch(actions.setRpcTarget('https://rpc.metamask.io/'))
|
state.dispatch(actions.setProviderType('mainnet'))
|
||||||
}
|
}
|
||||||
}, 'Use Main Network')
|
}, 'Use Main Network')
|
||||||
]),
|
]),
|
||||||
@ -96,7 +96,7 @@ ConfigScreen.prototype.render = function() {
|
|||||||
},
|
},
|
||||||
onClick(event) {
|
onClick(event) {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
state.dispatch(actions.setRpcTarget('https://testrpc.metamask.io/'))
|
state.dispatch(actions.setProviderType('testnet'))
|
||||||
}
|
}
|
||||||
}, 'Use Morden Test Network')
|
}, 'Use Morden Test Network')
|
||||||
]),
|
]),
|
||||||
@ -120,9 +120,28 @@ ConfigScreen.prototype.render = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function currentProviderDisplay(metamaskState) {
|
function currentProviderDisplay(metamaskState) {
|
||||||
var rpc = metamaskState.provider.rpcTarget
|
var provider = metamaskState.provider
|
||||||
|
var title, value
|
||||||
|
|
||||||
|
switch (provider.type) {
|
||||||
|
|
||||||
|
case 'mainnet':
|
||||||
|
title = 'Current Network'
|
||||||
|
value = 'Main Ethereum Network'
|
||||||
|
break
|
||||||
|
|
||||||
|
case 'testnet':
|
||||||
|
title = 'Current Network'
|
||||||
|
value = 'Morden Test Network'
|
||||||
|
break
|
||||||
|
|
||||||
|
default:
|
||||||
|
title = 'Current RPC'
|
||||||
|
value = metamaskState.provider.rpcTarget
|
||||||
|
}
|
||||||
|
|
||||||
return h('div', [
|
return h('div', [
|
||||||
h('span', {style: { fontWeight: 'bold', paddingRight: '10px'}}, 'Current RPC'),
|
h('span', {style: { fontWeight: 'bold', paddingRight: '10px'}}, title),
|
||||||
h('span', rpc)
|
h('span', value)
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,17 @@ function reduceMetamask(state, action) {
|
|||||||
|
|
||||||
case actions.SET_RPC_TARGET:
|
case actions.SET_RPC_TARGET:
|
||||||
return extend(metamaskState, {
|
return extend(metamaskState, {
|
||||||
rpcTarget: action.value,
|
provider: {
|
||||||
|
type: 'rpc',
|
||||||
|
rpcTarget: action.value,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
case actions.SET_PROVIDER_TYPE:
|
||||||
|
return extend(metamaskState, {
|
||||||
|
provider: {
|
||||||
|
type: action.value,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
case actions.COMPLETED_TX:
|
case actions.COMPLETED_TX:
|
||||||
|
Loading…
Reference in New Issue
Block a user