aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tmashuang@gmail.com>2018-01-08 19:16:20 +0800
committerThomas <tmashuang@gmail.com>2018-01-08 19:16:20 +0800
commit39b700bf87f213d2fb06dcde85f4e6173a6ce70c (patch)
treed12b46142c077acbf1fe2e1ff3aae6e948e6ff44
parent313b3c087a09bcc4462da15ff3caeac515967cf5 (diff)
downloadtangerine-wallet-browser-39b700bf87f213d2fb06dcde85f4e6173a6ce70c.tar
tangerine-wallet-browser-39b700bf87f213d2fb06dcde85f4e6173a6ce70c.tar.gz
tangerine-wallet-browser-39b700bf87f213d2fb06dcde85f4e6173a6ce70c.tar.bz2
tangerine-wallet-browser-39b700bf87f213d2fb06dcde85f4e6173a6ce70c.tar.lz
tangerine-wallet-browser-39b700bf87f213d2fb06dcde85f4e6173a6ce70c.tar.xz
tangerine-wallet-browser-39b700bf87f213d2fb06dcde85f4e6173a6ce70c.tar.zst
tangerine-wallet-browser-39b700bf87f213d2fb06dcde85f4e6173a6ce70c.zip
Account for 0x/empty string address and contract creation
-rw-r--r--CHANGELOG.md1
-rw-r--r--app/scripts/lib/tx-gas-utils.js11
-rw-r--r--test/unit/tx-gas-util-test.js32
3 files changed, 44 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dc96203be..568d1b7f8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
## Current Master
+- Remove recipient field if application initializes a tx with an empty string, or 0x, and tx data. Throw an error with the same condition, but without tx data.
- Throw an error if a application tries to submit a tx whose value is a decimal, and inform that it should be in wei.
- Fix bug that prevented updating custom token details.
- No longer mark long-pending transactions as failed, since we now have button to retry with higher gas.
diff --git a/app/scripts/lib/tx-gas-utils.js b/app/scripts/lib/tx-gas-utils.js
index ccf8bb1b1..5e49fdb22 100644
--- a/app/scripts/lib/tx-gas-utils.js
+++ b/app/scripts/lib/tx-gas-utils.js
@@ -81,6 +81,7 @@ module.exports = class txProvideUtil {
}
async validateTxParams (txParams) {
+ this.validateRecipient(txParams)
if ('value' in txParams) {
const value = txParams.value.toString()
if (value.includes('-')) {
@@ -92,4 +93,14 @@ module.exports = class txProvideUtil {
}
}
}
+ validateRecipient (txParams) {
+ if (txParams.to === '0x') {
+ if (txParams.data) {
+ delete txParams.to
+ } else {
+ throw new Error('Invalid recipient address')
+ }
+ }
+ return txParams
+ }
}
diff --git a/test/unit/tx-gas-util-test.js b/test/unit/tx-gas-util-test.js
new file mode 100644
index 000000000..ccef31359
--- /dev/null
+++ b/test/unit/tx-gas-util-test.js
@@ -0,0 +1,32 @@
+const assert = require('assert')
+const TxGasUtils = require('../../app/scripts/lib/tx-gas-utils')
+const { createStubedProvider } = require('../stub/provider')
+
+describe('Tx Gas Util', function () {
+ let txGasUtil, provider, providerResultStub
+ beforeEach(function () {
+ providerResultStub = {}
+ provider = createStubedProvider(providerResultStub)
+ txGasUtil = new TxGasUtils({
+ provider,
+ })
+ })
+
+ it('removes recipient for txParams with 0x when contract data is provided', function () {
+ const zeroRecipientandDataTxParams = {
+ from: '0x1678a085c290ebd122dc42cba69373b5953b831d',
+ to: '0x',
+ data: 'bytecode',
+ }
+ const sanitizedTxParams = txGasUtil.validateRecipient(zeroRecipientandDataTxParams)
+ assert.deepEqual(sanitizedTxParams, { from: '0x1678a085c290ebd122dc42cba69373b5953b831d', data: 'bytecode' }, 'no recipient with 0x')
+ })
+
+ it('should error when recipient is 0x', function () {
+ const zeroRecipientTxParams = {
+ from: '0x1678a085c290ebd122dc42cba69373b5953b831d',
+ to: '0x',
+ }
+ assert.throws(() => { txGasUtil.validateRecipient(zeroRecipientTxParams) }, Error, 'Invalid recipient address')
+ })
+})