Merge branch 'TxManager' of https://github.com/MetaMask/metamask-plugin into TxManager

feature/default_network_editable
Frankie 8 years ago
commit f50e983500
  1. 1
      CHANGELOG.md
  2. 6
      app/scripts/metamask-controller.js
  3. 46
      app/scripts/transaction-manager.js

@ -4,6 +4,7 @@
- Remove certain non-essential permissions from certain builds.
- Add a check for when a tx is included in a block.
- Implement replay attack protections allowed by EIP 155.
## 2.14.1 2016-12-20

@ -186,8 +186,8 @@ module.exports = class MetamaskController {
// tx signing
approveTransaction: this.newUnsignedTransaction.bind(this),
signTransaction: (...args) => {
this.setupSigningListners(...args)
this.txManager.formatTxForSigining(...args)
this.setupSigningListeners(...args)
this.txManager.formatTxForSigning(...args)
this.sendUpdate()
},
@ -266,7 +266,7 @@ module.exports = class MetamaskController {
})
}
setupSigningListners (txParams) {
setupSigningListeners (txParams) {
var txId = txParams.metamaskId
// apply event listeners for signing and formating events
this.txManager.once(`${txId}:formatted`, this.keyringController.signTransaction.bind(this.keyringController))

@ -137,25 +137,33 @@ module.exports = class TransactionManager extends EventEmitter {
}
// formats txParams so the keyringController can sign it
formatTxForSigining (txParams, cb) {
var address = txParams.from
var metaTx = this.getTx(txParams.metamaskId)
var gasMultiplier = metaTx.gasMultiplier
var gasPrice = new BN(ethUtil.stripHexPrefix(txParams.gasPrice), 16)
gasPrice = gasPrice.mul(new BN(gasMultiplier * 100, 10)).div(new BN(100, 10))
txParams.gasPrice = ethUtil.intToHex(gasPrice.toNumber())
// normalize values
txParams.to = normalize(txParams.to)
txParams.from = normalize(txParams.from)
txParams.value = normalize(txParams.value)
txParams.data = normalize(txParams.data)
txParams.gasLimit = normalize(txParams.gasLimit || txParams.gas)
txParams.nonce = normalize(txParams.nonce)
const ethTx = new Transaction(txParams)
// listener is assigned in metamaskController
this.emit(`${txParams.metamaskId}:formatted`, ethTx, address, txParams.metamaskId, cb)
formatTxForSigning (txParams, cb) {
this.getNetwork((err, networkId) => {
if (err) {
return cb(err)
}
var address = txParams.from
var metaTx = this.getTx(txParams.metamaskId)
var gasMultiplier = metaTx.gasMultiplier
var gasPrice = new BN(ethUtil.stripHexPrefix(txParams.gasPrice), 16)
gasPrice = gasPrice.mul(new BN(gasMultiplier * 100, 10)).div(new BN(100, 10))
txParams.gasPrice = ethUtil.intToHex(gasPrice.toNumber())
// normalize values
txParams.to = normalize(txParams.to)
txParams.from = normalize(txParams.from)
txParams.value = normalize(txParams.value)
txParams.data = normalize(txParams.data)
txParams.gasLimit = normalize(txParams.gasLimit || txParams.gas)
txParams.nonce = normalize(txParams.nonce)
txParams.chainId = parseInt(networkId)
const ethTx = new Transaction(txParams)
// listener is assigned in metamaskController
this.emit(`${txParams.metamaskId}:formatted`, ethTx, address, txParams.metamaskId, cb)
})
}
// receives a signed tx object and updates the tx hash

Loading…
Cancel
Save