aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorChi Kei Chan <chikeichan@gmail.com>2017-09-19 02:28:10 +0800
committerChi Kei Chan <chikeichan@gmail.com>2017-09-19 02:28:10 +0800
commit6c5865d564167c1097d6010e47d1e82a75087fd1 (patch)
tree9ced5adba4b6e5b77724f19a086a10981ba7e375 /test
parent54bbf8d8590014b92e7857f30bdc2d8f3779431a (diff)
parent693655e2da7cacf5a5326b50bddc37bcece9422e (diff)
downloadtangerine-wallet-browser-6c5865d564167c1097d6010e47d1e82a75087fd1.tar
tangerine-wallet-browser-6c5865d564167c1097d6010e47d1e82a75087fd1.tar.gz
tangerine-wallet-browser-6c5865d564167c1097d6010e47d1e82a75087fd1.tar.bz2
tangerine-wallet-browser-6c5865d564167c1097d6010e47d1e82a75087fd1.tar.lz
tangerine-wallet-browser-6c5865d564167c1097d6010e47d1e82a75087fd1.tar.xz
tangerine-wallet-browser-6c5865d564167c1097d6010e47d1e82a75087fd1.tar.zst
tangerine-wallet-browser-6c5865d564167c1097d6010e47d1e82a75087fd1.zip
Merge branch 'master' into nm
Diffstat (limited to 'test')
-rw-r--r--test/data/v17-long-history.json3053
-rw-r--r--test/integration/helpers.js7
-rw-r--r--test/integration/index.js19
-rw-r--r--test/integration/lib/first-time.js198
-rw-r--r--test/lib/mock-store.js4
-rw-r--r--test/lib/mock-tx-gen.js40
-rw-r--r--test/unit/actions/tx_test.js87
-rw-r--r--test/unit/nonce-tracker-test.js226
-rw-r--r--test/unit/tx-controller-test.js35
-rw-r--r--test/unit/tx-state-history-helper-test.js26
-rw-r--r--test/unit/tx-state-history-helper.js23
11 files changed, 3482 insertions, 236 deletions
diff --git a/test/data/v17-long-history.json b/test/data/v17-long-history.json
new file mode 100644
index 000000000..a33d425f8
--- /dev/null
+++ b/test/data/v17-long-history.json
@@ -0,0 +1,3053 @@
+{
+ "meta": {
+ "version": 17
+ },
+ "data": {
+ "config": {},
+ "NetworkController": {
+ "provider": {
+ "type": "ropsten",
+ "rpcTarget": "https://ropsten.infura.io/metamask"
+ },
+ "network": "3"
+ },
+ "NoticeController": {
+ "noticesList": [
+ {
+ "read": true,
+ "date": "Thu Feb 09 2017",
+ "title": "Terms of Use",
+ "body": "",
+ "id": 0
+ },
+ {
+ "read": true,
+ "date": "Mon May 08 2017",
+ "title": "Privacy Notice",
+ "body": "",
+ "id": 2
+ }
+ ]
+ },
+ "CurrencyController": {
+ "currentCurrency": "USD",
+ "conversionRate": 295.81988556,
+ "conversionDate": 1502734981
+ },
+ "KeyringController": {
+ "vault": "{\"data\":\"fFwVD3Msyq1o9NsDbjMlyJ1ZfoMcqfTgjR9cium0C5Vnpk9IM6f/RTVXfk0J4c4UkbgbKd++q8t1S+D22s7Ddz/BT/fe0GrbwPvAYQi1oJuOI9/Lf7I0JbESGv4PheijCIH4h/FiO+tIAuqM0Co3PULM4mOHdzXD8SWmzxbDGx+4wG84EQE9a1NEbqEjyqrX02h3NwZsjrSeuV5TibpGJB9vnKNpDu9wF0DVKLtLCG5n67uoTI/ve9Z7hIDa03vNi/71iE4avFb6ogE2SAkFDncEcU0xXVkBMapBXjrpe5sIq08Ddo0Hhi4fkd4yFW77sAH4TKzd6bWSn2AK8HL8Gpcrk4R6Cvv8EtyjUqsOJfE4AmYI6rWfFutLqEAp\",\"iv\":\"9fJ/OGDVwUnu3H0U71qOGA==\",\"salt\":\"5yGOu/+yrrb3DyP+cvMKIZqjhSjrEY+bnceHnz9n8gM=\"}",
+ "walletNicknames": {
+ "0x3ae39e89dc7e736cce53091057a45bf44b1a566c": "Account 1",
+ "0xa7a467edcb16a51976418ec6133f14f7939dc378": "Account 2",
+ "0x03ce38bd04b4ad7581a7070570381a530951ebbe": "Account 3"
+ }
+ },
+ "PreferencesController": {
+ "frequentRpcList": [],
+ "currentAccountTab": "history",
+ "tokens": [],
+ "selectedAddress": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c"
+ },
+ "seedWords": null,
+ "InfuraController": {
+ "infuraNetworkStatus": {
+ "mainnet": "degraded",
+ "ropsten": "ok",
+ "kovan": "ok",
+ "rinkeby": "ok"
+ }
+ },
+ "BlacklistController": {
+ "phishing": {
+ "version": 2,
+ "tolerance": 2,
+ "fuzzylist": [
+ "metamask.io",
+ "myetherwallet.com"
+ ],
+ "whitelist": [
+ "metamask.io",
+ "myetherwallet.com",
+ "ethereum.org",
+ "myetheroll.com",
+ "myetherapi.com",
+ "ledgerwallet.com",
+ "etherscan.io",
+ "etherid.org",
+ "ether.cards",
+ "etheroll.com",
+ "ethnews.com",
+ "ethex.market",
+ "ethereumdev.io",
+ "ethereumdev.kr",
+ "dether.io",
+ "ethermine.org",
+ "slaask.com",
+ "etherbtc.io",
+ "ethereal.capital",
+ "etherisc.com",
+ "m.famalk.net",
+ "etherecho.com",
+ "ethereum.os.tc",
+ "theethereum.wiki",
+ "metajack.im",
+ "etherhub.io",
+ "ethereum.network",
+ "ethereum.link",
+ "ethereum.com",
+ "prethereum.org",
+ "ethereumj.io",
+ "etheraus.com",
+ "ethereum.dev",
+ "1ethereum.ru",
+ "ethereum.nz",
+ "nethereum.com",
+ "metabank.com",
+ "metamas.com",
+ "metabase.com"
+ ],
+ "blacklist": [
+ "numerai.tech",
+ "decentraiand.org",
+ "blockcrein.info",
+ "blockchealn.info",
+ "bllookchain.info",
+ "blockcbhain.info",
+ "myetherwallet.com.ethpromonodes.com",
+ "mettamask.io",
+ "tokenswap.org",
+ "netherum.com",
+ "etherexx.org",
+ "etherume.io",
+ "ethereum.plus",
+ "ehtereum.org",
+ "etereurm.org",
+ "etheream.com",
+ "ethererum.org",
+ "ethereum.io",
+ "0xtoken.com",
+ "cryptoalliance.herokuapp.com",
+ "bitspark2.com",
+ "indorsetoken.com",
+ "bittreat.com",
+ "iconexus.tk",
+ "iconexus.ml",
+ "iconexus.ga",
+ "iconexus.cf",
+ "etherwallet.online",
+ "wallet-ethereum.net",
+ "bitsdigit.com",
+ "etherswap.org",
+ "eos.ac",
+ "uasfwallet.com",
+ "ziber.io",
+ "multiply-ethereum.info",
+ "bittrex.comze.com",
+ "karbon.vacau.com",
+ "etherdelta.gitlhub.io",
+ "etherdelta.glthub.io",
+ "digitaldevelopersfund.vacau.com",
+ "district-0x.io",
+ "coin-dash.com",
+ "coindash.ru",
+ "district0x.net",
+ "aragonproject.io",
+ "coin-wallet.info",
+ "coinswallet.info",
+ "contribute-status.im",
+ "ether-api.com",
+ "ether-wall.com",
+ "mycoinwallet.net",
+ "ethereumchamber.com",
+ "ethereumchamber.net",
+ "ethereumchest.com",
+ "myetherweb.com.de",
+ "myetherieumwallet.com",
+ "myetehrwallet.com",
+ "myeterwalet.com",
+ "myetherwaiiet.com",
+ "myetherwallet.info",
+ "myetherwallet.ch",
+ "myetherwallet.om",
+ "myethervallet.com",
+ "myetherwallet.com.cm",
+ "myetherwallet.com.co",
+ "myetherwallet.com.de",
+ "myetherwallet.com.gl",
+ "myetherwallet.com.im",
+ "myetherwallet.com.ua",
+ "secure-myetherwallet.com",
+ "update-myetherwallet.com",
+ "wwwmyetherwallet.com",
+ "myeatherwallet.com",
+ "myetharwallet.com",
+ "myelherwallel.com",
+ "myetherwaillet.com",
+ "myetherwaliet.com",
+ "myetherwallel.com",
+ "myetherwallet.cam",
+ "myetherwallet.cc",
+ "myetherwallet.co",
+ "myetherwallet.cm",
+ "myetherwallet.cz",
+ "myetherwallet.org",
+ "myetherwallet.tech",
+ "myetherwallet.top",
+ "myetherwallet.net",
+ "etherclassicwallet.com",
+ "omg-omise.co",
+ "omise-go.com",
+ "tenx-tech.com",
+ "tokensale-tenx.tech",
+ "ubiqcoin.org",
+ "metamask.com",
+ "ethtrade.io",
+ "myetcwallet.com",
+ "account-kigo.net",
+ "bitcoin-wallet.net",
+ "blocklichan.info",
+ "bloclkicihan.info",
+ "coindash.ml",
+ "eos-bonus.com",
+ "eos-io.info",
+ "ether-wallet.net",
+ "ethereum-wallet.info",
+ "ethereum-wallet.net",
+ "ethereumchest.net",
+ "reservations-kigo.net",
+ "reservations-lodgix.com",
+ "secure-liverez.com",
+ "secure-onerooftop.com",
+ "settings-liverez.com",
+ "software-liverez.com",
+ "software-lodgix.com",
+ "unhackableetherwallets.com",
+ "www-myetherwallet.com",
+ "etherwallet.co.za",
+ "etherwalletchain.com",
+ "etherwallets.net",
+ "etherwallets.nl",
+ "my-ethwallet.com",
+ "my.ether-wallet.co",
+ "myetherwallet.com.am",
+ "myetherwallet.com.ht",
+ "myetherwalletcom.com",
+ "xn--myetherwalle-xoc.com",
+ "xn--myetherwalle-44i.com",
+ "xn--myetherwalle-xhk.com",
+ "xn--myetherwallt-cfb.com",
+ "xn--myetherwallt-6tb.com",
+ "xn--myetherwallt-xub.com",
+ "xn--myetherwallt-ovb.com",
+ "xn--myetherwallt-fwb.com",
+ "xn--myetherwallt-5wb.com",
+ "xn--myetherwallt-jzi.com",
+ "xn--myetherwallt-2ck.com",
+ "xn--myetherwallt-lok.com",
+ "xn--myetherwallt-lsl.com",
+ "xn--myetherwallt-ce6f.com",
+ "xn--myetherwalet-mcc.com",
+ "xn--myetherwalet-xhf.com",
+ "xn--myetherwalet-lcc.com",
+ "xn--myetherwaet-15ba.com",
+ "xn--myetherwalet-whf.com",
+ "xn--myetherwaet-v2ea.com",
+ "xn--myetherwllet-59a.com",
+ "xn--myetherwllet-jbb.com",
+ "xn--myetherwllet-wbb.com",
+ "xn--myetherwllet-9bb.com",
+ "xn--myetherwllet-ncb.com",
+ "xn--myetherwllet-0cb.com",
+ "xn--myetherwllet-5nb.com",
+ "xn--myetherwllet-ktd.com",
+ "xn--myetherwllet-mre.com",
+ "xn--myetherwllet-76e.com",
+ "xn--myetherwllet-o0l.com",
+ "xn--myetherwllet-c45f.com",
+ "xn--myetherallet-ejn.com",
+ "xn--myethewallet-4nf.com",
+ "xn--myethewallet-iof.com",
+ "xn--myethewallet-mpf.com",
+ "xn--myethewallet-6bk.com",
+ "xn--myethewallet-i31f.com",
+ "xn--myethrwallet-feb.com",
+ "xn--myethrwallt-fbbf.com",
+ "xn--myethrwallet-seb.com",
+ "xn--myethrwallt-rbbf.com",
+ "xn--myethrwallet-5eb.com",
+ "xn--myethrwallt-3bbf.com",
+ "xn--myethrwallet-0tb.com",
+ "xn--myethrwallt-tpbf.com",
+ "xn--myethrwallet-rub.com",
+ "xn--myethrwallt-iqbf.com",
+ "xn--myethrwallet-ivb.com",
+ "xn--myethrwallt-6qbf.com",
+ "xn--myethrwallet-8vb.com",
+ "xn--myethrwallt-vrbf.com",
+ "xn--myethrwallet-zwb.com",
+ "xn--myethrwallt-ksbf.com",
+ "xn--myethrwallet-dzi.com",
+ "xn--myethrwallt-wbif.com",
+ "xn--myethrwallet-wck.com",
+ "xn--myethrwallt-skjf.com",
+ "xn--myethrwallet-fok.com",
+ "xn--myethrwallt-fvjf.com",
+ "xn--myethrwallet-fsl.com",
+ "xn--myethrwallt-fwkf.com",
+ "xn--myethrwallet-5d6f.com",
+ "xn--myethrwallt-319ef.com",
+ "xn--myeterwallet-ufk.com",
+ "xn--myeterwallet-nrl.com",
+ "xn--myeterwallet-von.com",
+ "xn--myeterwallet-jl6c.com",
+ "xn--myeherwallet-ooc.com",
+ "xn--myeherwalle-6hci.com",
+ "xn--myeherwallet-v4i.com",
+ "xn--myeherwalle-zgii.com",
+ "xn--myeherwallet-ohk.com",
+ "xn--myeherwalle-6oji.com",
+ "xn--mytherwallet-ceb.com",
+ "xn--mythrwallet-cbbc.com",
+ "xn--mythrwallt-c7acf.com",
+ "xn--mytherwallet-peb.com",
+ "xn--mythrwallet-obbc.com",
+ "xn--mythrwallt-n7acf.com",
+ "xn--mytherwallet-2eb.com",
+ "xn--mythrwallet-0bbc.com",
+ "xn--mythrwallt-y7acf.com",
+ "xn--mytherwallet-xtb.com",
+ "xn--mythrwallet-qpbc.com",
+ "xn--mythrwallt-jlbcf.com",
+ "xn--mytherwallet-oub.com",
+ "xn--mythrwallet-fqbc.com",
+ "xn--mythrwallt-5lbcf.com",
+ "xn--mythrwallet-3qbc.com",
+ "xn--mythrwallt-smbcf.com",
+ "xn--mytherwallet-5vb.com",
+ "xn--mythrwallet-srbc.com",
+ "xn--mythrwallt-fnbcf.com",
+ "xn--mytherwallet-wwb.com",
+ "xn--mythrwallet-hsbc.com",
+ "xn--mythrwallt-1nbcf.com",
+ "xn--mytherwallet-9yi.com",
+ "xn--mythrwallet-tbic.com",
+ "xn--mythrwallt-dnhcf.com",
+ "xn--mytherwallet-tck.com",
+ "xn--mythrwallet-pkjc.com",
+ "xn--mythrwallt-lsicf.com",
+ "xn--mytherwallet-cok.com",
+ "xn--mythrwallet-cvjc.com",
+ "xn--mythrwallt-c2icf.com",
+ "xn--mytherwallet-csl.com",
+ "xn--mythrwallet-cwkc.com",
+ "xn--mythrwallt-c0jcf.com",
+ "xn--mytherwallet-2d6f.com",
+ "xn--mythrwallet-019ec.com",
+ "xn--mythrwallt-yq3ecf.com",
+ "xn--metherwallet-qlb.com",
+ "xn--metherwallet-1uf.com",
+ "xn--metherwallet-iyi.com",
+ "xn--metherwallet-zhk.com",
+ "xn--metherwallet-3ml.com",
+ "xn--mytherwallet-fvb.com",
+ "xn--myetherwallt-7db.com",
+ "xn--myetherwallt-leb.com",
+ "xn--myetherwallt-yeb.com",
+ "xn--yetherwallet-vjf.com",
+ "xn--yetherwallet-dfk.com",
+ "xn--yetherwallet-1t1f.com",
+ "xn--yetherwallet-634f.com"
+ ]
+ }
+ },
+ "AddressBookController": {
+ "addressBook": []
+ },
+ "TransactionController": {
+ "transactions": [
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "history": [
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "3b9aca00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "3b9aca00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "3b9aca00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "3b9aca00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": 0
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": 0
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf86380843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a02e45f61129f0c97634e37a1823b858df7b0dfc867a44949aae7dd9bcea1c1b5aa03b1f002cda0872d40517d5b26caefa3e407ec8fd03bc7dc2d995b84726961264"
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf86380843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a02e45f61129f0c97634e37a1823b858df7b0dfc867a44949aae7dd9bcea1c1b5aa03b1f002cda0872d40517d5b26caefa3e407ec8fd03bc7dc2d995b84726961264"
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf86380843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a02e45f61129f0c97634e37a1823b858df7b0dfc867a44949aae7dd9bcea1c1b5aa03b1f002cda0872d40517d5b26caefa3e407ec8fd03bc7dc2d995b84726961264",
+ "hash": "0x38c254639139c94303a3141aee041b15301509e743f08569ffac6aca17518012"
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf86380843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a02e45f61129f0c97634e37a1823b858df7b0dfc867a44949aae7dd9bcea1c1b5aa03b1f002cda0872d40517d5b26caefa3e407ec8fd03bc7dc2d995b84726961264",
+ "hash": "0x38c254639139c94303a3141aee041b15301509e743f08569ffac6aca17518012"
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf86380843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a02e45f61129f0c97634e37a1823b858df7b0dfc867a44949aae7dd9bcea1c1b5aa03b1f002cda0872d40517d5b26caefa3e407ec8fd03bc7dc2d995b84726961264",
+ "hash": "0x38c254639139c94303a3141aee041b15301509e743f08569ffac6aca17518012"
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf86380843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a02e45f61129f0c97634e37a1823b858df7b0dfc867a44949aae7dd9bcea1c1b5aa03b1f002cda0872d40517d5b26caefa3e407ec8fd03bc7dc2d995b84726961264",
+ "hash": "0x38c254639139c94303a3141aee041b15301509e743f08569ffac6aca17518012"
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf86380843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a02e45f61129f0c97634e37a1823b858df7b0dfc867a44949aae7dd9bcea1c1b5aa03b1f002cda0872d40517d5b26caefa3e407ec8fd03bc7dc2d995b84726961264",
+ "hash": "0x38c254639139c94303a3141aee041b15301509e743f08569ffac6aca17518012",
+ "retryCount": 1
+ },
+ {
+ "id": 6616756286038869,
+ "time": 1502438908445,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf86380843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a02e45f61129f0c97634e37a1823b858df7b0dfc867a44949aae7dd9bcea1c1b5aa03b1f002cda0872d40517d5b26caefa3e407ec8fd03bc7dc2d995b84726961264",
+ "hash": "0x38c254639139c94303a3141aee041b15301509e743f08569ffac6aca17518012",
+ "retryCount": 1
+ }
+ ],
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16643c",
+ "baseCount": 0,
+ "baseCountHex": "0x0",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf86380843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a02e45f61129f0c97634e37a1823b858df7b0dfc867a44949aae7dd9bcea1c1b5aa03b1f002cda0872d40517d5b26caefa3e407ec8fd03bc7dc2d995b84726961264",
+ "hash": "0x38c254639139c94303a3141aee041b15301509e743f08569ffac6aca17518012",
+ "retryCount": 1
+ },
+ {
+ "id": 6616756286038870,
+ "time": 1502573153664,
+ "status": "rejected",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "28fa6ae00",
+ "gas": "0x7b0d"
+ },
+ "history": [
+ {
+ "id": 6616756286038870,
+ "time": 1502573153664,
+ "status": "rejected",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "28fa6ae00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038870,
+ "time": 1502573153664,
+ "status": "rejected",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "28fa6ae00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ }
+ ],
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "history": [
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "28fa6ae00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "28fa6ae00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "28fa6ae00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "28fa6ae00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": 1
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": 1
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf8640185028fa6ae00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a06261831b3d599a90dc24fac67bc648fd58cab2036e4e8dfbbb5c00c3fd9cf66ba00e2ea6ebc63ba715a94dc94e24120639c4ad60832d3285dd558929a61cc18cc0"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf8640185028fa6ae00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a06261831b3d599a90dc24fac67bc648fd58cab2036e4e8dfbbb5c00c3fd9cf66ba00e2ea6ebc63ba715a94dc94e24120639c4ad60832d3285dd558929a61cc18cc0"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf8640185028fa6ae00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a06261831b3d599a90dc24fac67bc648fd58cab2036e4e8dfbbb5c00c3fd9cf66ba00e2ea6ebc63ba715a94dc94e24120639c4ad60832d3285dd558929a61cc18cc0",
+ "hash": "0xeb1c57dec9df8410bcc65374c7f684fc8ebfcda6865a149e38bb000fa706a150"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf8640185028fa6ae00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a06261831b3d599a90dc24fac67bc648fd58cab2036e4e8dfbbb5c00c3fd9cf66ba00e2ea6ebc63ba715a94dc94e24120639c4ad60832d3285dd558929a61cc18cc0",
+ "hash": "0xeb1c57dec9df8410bcc65374c7f684fc8ebfcda6865a149e38bb000fa706a150"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf8640185028fa6ae00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a06261831b3d599a90dc24fac67bc648fd58cab2036e4e8dfbbb5c00c3fd9cf66ba00e2ea6ebc63ba715a94dc94e24120639c4ad60832d3285dd558929a61cc18cc0",
+ "hash": "0xeb1c57dec9df8410bcc65374c7f684fc8ebfcda6865a149e38bb000fa706a150"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf8640185028fa6ae00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a06261831b3d599a90dc24fac67bc648fd58cab2036e4e8dfbbb5c00c3fd9cf66ba00e2ea6ebc63ba715a94dc94e24120639c4ad60832d3285dd558929a61cc18cc0",
+ "hash": "0xeb1c57dec9df8410bcc65374c7f684fc8ebfcda6865a149e38bb000fa706a150"
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf8640185028fa6ae00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a06261831b3d599a90dc24fac67bc648fd58cab2036e4e8dfbbb5c00c3fd9cf66ba00e2ea6ebc63ba715a94dc94e24120639c4ad60832d3285dd558929a61cc18cc0",
+ "hash": "0xeb1c57dec9df8410bcc65374c7f684fc8ebfcda6865a149e38bb000fa706a150",
+ "retryCount": 1
+ },
+ {
+ "id": 6616756286038871,
+ "time": 1502573157128,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x28fa6ae00",
+ "gas": "0x7b0d",
+ "nonce": "0x01",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf8640185028fa6ae00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a06261831b3d599a90dc24fac67bc648fd58cab2036e4e8dfbbb5c00c3fd9cf66ba00e2ea6ebc63ba715a94dc94e24120639c4ad60832d3285dd558929a61cc18cc0",
+ "hash": "0xeb1c57dec9df8410bcc65374c7f684fc8ebfcda6865a149e38bb000fa706a150",
+ "retryCount": 1
+ }
+ ],
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x168739",
+ "baseCount": 1,
+ "baseCountHex": "0x1",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf8640185028fa6ae00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a06261831b3d599a90dc24fac67bc648fd58cab2036e4e8dfbbb5c00c3fd9cf66ba00e2ea6ebc63ba715a94dc94e24120639c4ad60832d3285dd558929a61cc18cc0",
+ "hash": "0xeb1c57dec9df8410bcc65374c7f684fc8ebfcda6865a149e38bb000fa706a150",
+ "retryCount": 1
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "history": [
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d",
+ "nonce": 2
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d",
+ "nonce": 2
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ }
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf864028504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa057380f9007a48d4bce31792859b1a25cb2b45ba615e7951d8e8a925360a0b301a042393e72d1a96a2605c0da95705c5f3f7c744f0affcac01e0a64721037f04adc"
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf864028504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa057380f9007a48d4bce31792859b1a25cb2b45ba615e7951d8e8a925360a0b301a042393e72d1a96a2605c0da95705c5f3f7c744f0affcac01e0a64721037f04adc"
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf864028504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa057380f9007a48d4bce31792859b1a25cb2b45ba615e7951d8e8a925360a0b301a042393e72d1a96a2605c0da95705c5f3f7c744f0affcac01e0a64721037f04adc",
+ "hash": "0xc28ceb1e2c4e5c61b805b181e3cc99dd7bade58935233fab76c63cedfd494270"
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf864028504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa057380f9007a48d4bce31792859b1a25cb2b45ba615e7951d8e8a925360a0b301a042393e72d1a96a2605c0da95705c5f3f7c744f0affcac01e0a64721037f04adc",
+ "hash": "0xc28ceb1e2c4e5c61b805b181e3cc99dd7bade58935233fab76c63cedfd494270"
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf864028504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa057380f9007a48d4bce31792859b1a25cb2b45ba615e7951d8e8a925360a0b301a042393e72d1a96a2605c0da95705c5f3f7c744f0affcac01e0a64721037f04adc",
+ "hash": "0xc28ceb1e2c4e5c61b805b181e3cc99dd7bade58935233fab76c63cedfd494270"
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf864028504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa057380f9007a48d4bce31792859b1a25cb2b45ba615e7951d8e8a925360a0b301a042393e72d1a96a2605c0da95705c5f3f7c744f0affcac01e0a64721037f04adc",
+ "hash": "0xc28ceb1e2c4e5c61b805b181e3cc99dd7bade58935233fab76c63cedfd494270"
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf864028504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa057380f9007a48d4bce31792859b1a25cb2b45ba615e7951d8e8a925360a0b301a042393e72d1a96a2605c0da95705c5f3f7c744f0affcac01e0a64721037f04adc",
+ "hash": "0xc28ceb1e2c4e5c61b805b181e3cc99dd7bade58935233fab76c63cedfd494270",
+ "retryCount": 1
+ },
+ {
+ "id": 6616756286038872,
+ "time": 1502734903652,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x02",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf864028504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa057380f9007a48d4bce31792859b1a25cb2b45ba615e7951d8e8a925360a0b301a042393e72d1a96a2605c0da95705c5f3f7c744f0affcac01e0a64721037f04adc",
+ "hash": "0xc28ceb1e2c4e5c61b805b181e3cc99dd7bade58935233fab76c63cedfd494270",
+ "retryCount": 1
+ }
+ ],
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b066",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 0
+ },
+ "rawTx": "0xf864028504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa057380f9007a48d4bce31792859b1a25cb2b45ba615e7951d8e8a925360a0b301a042393e72d1a96a2605c0da95705c5f3f7c744f0affcac01e0a64721037f04adc",
+ "hash": "0xc28ceb1e2c4e5c61b805b181e3cc99dd7bade58935233fab76c63cedfd494270",
+ "retryCount": 1
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "history": [
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ }
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ }
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ }
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ }
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ },
+ "rawTx": "0xf86303843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0e442afe9386066936f556d852a296d22b8392652aa2ddb26969d83d661759ee1a06dc55b164f666a37107e86d575d2701602fc100f0ef4875736d45995150d4897"
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ },
+ "rawTx": "0xf86303843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0e442afe9386066936f556d852a296d22b8392652aa2ddb26969d83d661759ee1a06dc55b164f666a37107e86d575d2701602fc100f0ef4875736d45995150d4897"
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ },
+ "rawTx": "0xf86303843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0e442afe9386066936f556d852a296d22b8392652aa2ddb26969d83d661759ee1a06dc55b164f666a37107e86d575d2701602fc100f0ef4875736d45995150d4897",
+ "hash": "0xfcc66b8002c64a5aaa076adea7f7e48d194de10e40eb64924c8de344805c8cb7"
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ },
+ "rawTx": "0xf86303843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0e442afe9386066936f556d852a296d22b8392652aa2ddb26969d83d661759ee1a06dc55b164f666a37107e86d575d2701602fc100f0ef4875736d45995150d4897",
+ "hash": "0xfcc66b8002c64a5aaa076adea7f7e48d194de10e40eb64924c8de344805c8cb7"
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ },
+ "rawTx": "0xf86303843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0e442afe9386066936f556d852a296d22b8392652aa2ddb26969d83d661759ee1a06dc55b164f666a37107e86d575d2701602fc100f0ef4875736d45995150d4897",
+ "hash": "0xfcc66b8002c64a5aaa076adea7f7e48d194de10e40eb64924c8de344805c8cb7"
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ },
+ "rawTx": "0xf86303843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0e442afe9386066936f556d852a296d22b8392652aa2ddb26969d83d661759ee1a06dc55b164f666a37107e86d575d2701602fc100f0ef4875736d45995150d4897",
+ "hash": "0xfcc66b8002c64a5aaa076adea7f7e48d194de10e40eb64924c8de344805c8cb7"
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ },
+ "rawTx": "0xf86303843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0e442afe9386066936f556d852a296d22b8392652aa2ddb26969d83d661759ee1a06dc55b164f666a37107e86d575d2701602fc100f0ef4875736d45995150d4897",
+ "hash": "0xfcc66b8002c64a5aaa076adea7f7e48d194de10e40eb64924c8de344805c8cb7",
+ "retryCount": 2
+ },
+ {
+ "id": 6616756286038873,
+ "time": 1502734910224,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x3b9aca00",
+ "gas": "0x7b0d",
+ "nonce": "0x03",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ },
+ "rawTx": "0xf86303843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0e442afe9386066936f556d852a296d22b8392652aa2ddb26969d83d661759ee1a06dc55b164f666a37107e86d575d2701602fc100f0ef4875736d45995150d4897",
+ "hash": "0xfcc66b8002c64a5aaa076adea7f7e48d194de10e40eb64924c8de344805c8cb7",
+ "retryCount": 2
+ }
+ ],
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 1
+ },
+ "rawTx": "0xf86303843b9aca00827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0e442afe9386066936f556d852a296d22b8392652aa2ddb26969d83d661759ee1a06dc55b164f666a37107e86d575d2701602fc100f0ef4875736d45995150d4897",
+ "hash": "0xfcc66b8002c64a5aaa076adea7f7e48d194de10e40eb64924c8de344805c8cb7",
+ "retryCount": 2
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "history": [
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d",
+ "nonce": 4
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ }
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d",
+ "nonce": 4
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ }
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ }
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ }
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864048504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a04be1c01535745fa7ec7aeb6e0b64d009981713808ca443b181fad802ce941352a03887e90375d9225b8dfd0d42324eed8eb4982fd14ea7b4069290237b29d1dcd3"
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864048504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a04be1c01535745fa7ec7aeb6e0b64d009981713808ca443b181fad802ce941352a03887e90375d9225b8dfd0d42324eed8eb4982fd14ea7b4069290237b29d1dcd3"
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864048504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a04be1c01535745fa7ec7aeb6e0b64d009981713808ca443b181fad802ce941352a03887e90375d9225b8dfd0d42324eed8eb4982fd14ea7b4069290237b29d1dcd3",
+ "hash": "0x9258ed7e451402612f572cbef52b63cd63cc2c59f443a207b7b4f8d317958635"
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864048504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a04be1c01535745fa7ec7aeb6e0b64d009981713808ca443b181fad802ce941352a03887e90375d9225b8dfd0d42324eed8eb4982fd14ea7b4069290237b29d1dcd3",
+ "hash": "0x9258ed7e451402612f572cbef52b63cd63cc2c59f443a207b7b4f8d317958635"
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864048504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a04be1c01535745fa7ec7aeb6e0b64d009981713808ca443b181fad802ce941352a03887e90375d9225b8dfd0d42324eed8eb4982fd14ea7b4069290237b29d1dcd3",
+ "hash": "0x9258ed7e451402612f572cbef52b63cd63cc2c59f443a207b7b4f8d317958635"
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864048504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a04be1c01535745fa7ec7aeb6e0b64d009981713808ca443b181fad802ce941352a03887e90375d9225b8dfd0d42324eed8eb4982fd14ea7b4069290237b29d1dcd3",
+ "hash": "0x9258ed7e451402612f572cbef52b63cd63cc2c59f443a207b7b4f8d317958635"
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864048504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a04be1c01535745fa7ec7aeb6e0b64d009981713808ca443b181fad802ce941352a03887e90375d9225b8dfd0d42324eed8eb4982fd14ea7b4069290237b29d1dcd3",
+ "hash": "0x9258ed7e451402612f572cbef52b63cd63cc2c59f443a207b7b4f8d317958635",
+ "retryCount": 4
+ },
+ {
+ "id": 6616756286038874,
+ "time": 1502734917414,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x04",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864048504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a04be1c01535745fa7ec7aeb6e0b64d009981713808ca443b181fad802ce941352a03887e90375d9225b8dfd0d42324eed8eb4982fd14ea7b4069290237b29d1dcd3",
+ "hash": "0x9258ed7e451402612f572cbef52b63cd63cc2c59f443a207b7b4f8d317958635",
+ "retryCount": 4
+ }
+ ],
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b067",
+ "baseCount": 2,
+ "baseCountHex": "0x2",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864048504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a04be1c01535745fa7ec7aeb6e0b64d009981713808ca443b181fad802ce941352a03887e90375d9225b8dfd0d42324eed8eb4982fd14ea7b4069290237b29d1dcd3",
+ "hash": "0x9258ed7e451402612f572cbef52b63cd63cc2c59f443a207b7b4f8d317958635",
+ "retryCount": 4
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "history": [
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d",
+ "nonce": 5
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ }
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d",
+ "nonce": 5
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ }
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ }
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ }
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864058504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a0dac4756e84c008714b3b8b43807157ed63737450780bc57590e930c8a360750ca00b43ac8ec5235f57ccca7e68ce8fbf77f43d6ffa5fbff296cba66cef47889cf5"
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864058504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a0dac4756e84c008714b3b8b43807157ed63737450780bc57590e930c8a360750ca00b43ac8ec5235f57ccca7e68ce8fbf77f43d6ffa5fbff296cba66cef47889cf5"
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864058504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a0dac4756e84c008714b3b8b43807157ed63737450780bc57590e930c8a360750ca00b43ac8ec5235f57ccca7e68ce8fbf77f43d6ffa5fbff296cba66cef47889cf5",
+ "hash": "0x67cdff49c1f8ed506c759fc8fd7ffe93d59fcb3bfd926b964cad47e2e504dc9e"
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864058504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a0dac4756e84c008714b3b8b43807157ed63737450780bc57590e930c8a360750ca00b43ac8ec5235f57ccca7e68ce8fbf77f43d6ffa5fbff296cba66cef47889cf5",
+ "hash": "0x67cdff49c1f8ed506c759fc8fd7ffe93d59fcb3bfd926b964cad47e2e504dc9e"
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864058504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a0dac4756e84c008714b3b8b43807157ed63737450780bc57590e930c8a360750ca00b43ac8ec5235f57ccca7e68ce8fbf77f43d6ffa5fbff296cba66cef47889cf5",
+ "hash": "0x67cdff49c1f8ed506c759fc8fd7ffe93d59fcb3bfd926b964cad47e2e504dc9e"
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864058504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a0dac4756e84c008714b3b8b43807157ed63737450780bc57590e930c8a360750ca00b43ac8ec5235f57ccca7e68ce8fbf77f43d6ffa5fbff296cba66cef47889cf5",
+ "hash": "0x67cdff49c1f8ed506c759fc8fd7ffe93d59fcb3bfd926b964cad47e2e504dc9e"
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864058504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a0dac4756e84c008714b3b8b43807157ed63737450780bc57590e930c8a360750ca00b43ac8ec5235f57ccca7e68ce8fbf77f43d6ffa5fbff296cba66cef47889cf5",
+ "hash": "0x67cdff49c1f8ed506c759fc8fd7ffe93d59fcb3bfd926b964cad47e2e504dc9e",
+ "retryCount": 3
+ },
+ {
+ "id": 6616756286038875,
+ "time": 1502734922745,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x05",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864058504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a0dac4756e84c008714b3b8b43807157ed63737450780bc57590e930c8a360750ca00b43ac8ec5235f57ccca7e68ce8fbf77f43d6ffa5fbff296cba66cef47889cf5",
+ "hash": "0x67cdff49c1f8ed506c759fc8fd7ffe93d59fcb3bfd926b964cad47e2e504dc9e",
+ "retryCount": 3
+ }
+ ],
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 2
+ },
+ "rawTx": "0xf864058504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c808029a0dac4756e84c008714b3b8b43807157ed63737450780bc57590e930c8a360750ca00b43ac8ec5235f57ccca7e68ce8fbf77f43d6ffa5fbff296cba66cef47889cf5",
+ "hash": "0x67cdff49c1f8ed506c759fc8fd7ffe93d59fcb3bfd926b964cad47e2e504dc9e",
+ "retryCount": 3
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "history": [
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "unapproved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d"
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209"
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d",
+ "nonce": 6
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ }
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "approved",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "4a817c800",
+ "gas": "0x7b0d",
+ "nonce": 6
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ }
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ }
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ }
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ },
+ "rawTx": "0xf864068504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0d983a744f58179522b4bb75f6320dbcf0a699506f2470139282a2ad02e92554fa030d818c35e997ba5d004df65a0c4ebcb49d098ec7dc190d7287a72f9c96f89e7"
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ },
+ "rawTx": "0xf864068504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0d983a744f58179522b4bb75f6320dbcf0a699506f2470139282a2ad02e92554fa030d818c35e997ba5d004df65a0c4ebcb49d098ec7dc190d7287a72f9c96f89e7"
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ },
+ "rawTx": "0xf864068504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0d983a744f58179522b4bb75f6320dbcf0a699506f2470139282a2ad02e92554fa030d818c35e997ba5d004df65a0c4ebcb49d098ec7dc190d7287a72f9c96f89e7",
+ "hash": "0x2c12c403aeb62a92bd5eabd3edcc38ab9e63bb0c93f706520bd2042894737ad1"
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "signed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ },
+ "rawTx": "0xf864068504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0d983a744f58179522b4bb75f6320dbcf0a699506f2470139282a2ad02e92554fa030d818c35e997ba5d004df65a0c4ebcb49d098ec7dc190d7287a72f9c96f89e7",
+ "hash": "0x2c12c403aeb62a92bd5eabd3edcc38ab9e63bb0c93f706520bd2042894737ad1"
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ },
+ "rawTx": "0xf864068504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0d983a744f58179522b4bb75f6320dbcf0a699506f2470139282a2ad02e92554fa030d818c35e997ba5d004df65a0c4ebcb49d098ec7dc190d7287a72f9c96f89e7",
+ "hash": "0x2c12c403aeb62a92bd5eabd3edcc38ab9e63bb0c93f706520bd2042894737ad1"
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "submitted",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ },
+ "rawTx": "0xf864068504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0d983a744f58179522b4bb75f6320dbcf0a699506f2470139282a2ad02e92554fa030d818c35e997ba5d004df65a0c4ebcb49d098ec7dc190d7287a72f9c96f89e7",
+ "hash": "0x2c12c403aeb62a92bd5eabd3edcc38ab9e63bb0c93f706520bd2042894737ad1"
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ },
+ "rawTx": "0xf864068504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0d983a744f58179522b4bb75f6320dbcf0a699506f2470139282a2ad02e92554fa030d818c35e997ba5d004df65a0c4ebcb49d098ec7dc190d7287a72f9c96f89e7",
+ "hash": "0x2c12c403aeb62a92bd5eabd3edcc38ab9e63bb0c93f706520bd2042894737ad1",
+ "retryCount": 5
+ },
+ {
+ "id": 6616756286038876,
+ "time": 1502734928623,
+ "status": "confirmed",
+ "metamaskNetworkId": "3",
+ "txParams": {
+ "from": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "to": "0x3ae39e89dc7e736cce53091057a45bf44b1a566c",
+ "value": "0x0",
+ "gasPrice": "0x4a817c800",
+ "gas": "0x7b0d",
+ "nonce": "0x06",
+ "chainId": 3
+ },
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ },
+ "rawTx": "0xf864068504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0d983a744f58179522b4bb75f6320dbcf0a699506f2470139282a2ad02e92554fa030d818c35e997ba5d004df65a0c4ebcb49d098ec7dc190d7287a72f9c96f89e7",
+ "hash": "0x2c12c403aeb62a92bd5eabd3edcc38ab9e63bb0c93f706520bd2042894737ad1",
+ "retryCount": 5
+ }
+ ],
+ "gasLimitSpecified": false,
+ "estimatedGas": "5209",
+ "nonceDetails": {
+ "blockNumber": "0x16b068",
+ "baseCount": 3,
+ "baseCountHex": "0x3",
+ "pendingCount": 3
+ },
+ "rawTx": "0xf864068504a817c800827b0d943ae39e89dc7e736cce53091057a45bf44b1a566c80802aa0d983a744f58179522b4bb75f6320dbcf0a699506f2470139282a2ad02e92554fa030d818c35e997ba5d004df65a0c4ebcb49d098ec7dc190d7287a72f9c96f89e7",
+ "hash": "0x2c12c403aeb62a92bd5eabd3edcc38ab9e63bb0c93f706520bd2042894737ad1",
+ "retryCount": 5
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/test/integration/helpers.js b/test/integration/helpers.js
deleted file mode 100644
index 10cd74e64..000000000
--- a/test/integration/helpers.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function wait(time) {
- return new Promise(function (resolve, reject) {
- setTimeout(function () {
- resolve()
- }, time * 3 || 1500)
- })
-}
diff --git a/test/integration/index.js b/test/integration/index.js
index e089fc39b..144303dbb 100644
--- a/test/integration/index.js
+++ b/test/integration/index.js
@@ -1,5 +1,6 @@
const fs = require('fs')
const path = require('path')
+const pump = require('pump')
const browserify = require('browserify')
const tests = fs.readdirSync(path.join(__dirname, 'lib'))
const bundlePath = path.join(__dirname, 'bundle.js')
@@ -9,11 +10,17 @@ const b = browserify()
const writeStream = fs.createWriteStream(bundlePath)
tests.forEach(function (fileName) {
- b.add(path.join(__dirname, 'lib', fileName))
+ const filePath = path.join(__dirname, 'lib', fileName)
+ console.log(`bundling test "${filePath}"`)
+ b.add(filePath)
})
-b.bundle()
-.pipe(writeStream)
-.on('error', (err) => {
- throw err
-})
+pump(
+ b.bundle(),
+ writeStream,
+ (err) => {
+ if (err) throw err
+ console.log(`Integration test build completed: "${bundlePath}"`)
+ process.exit(0)
+ }
+) \ No newline at end of file
diff --git a/test/integration/lib/first-time.js b/test/integration/lib/first-time.js
index 0e4b802da..38a94e551 100644
--- a/test/integration/lib/first-time.js
+++ b/test/integration/lib/first-time.js
@@ -2,125 +2,137 @@ const PASSWORD = 'password123'
QUnit.module('first time usage')
-QUnit.test('render init screen', function (assert) {
- var done = assert.async()
- let app
-
- wait().then(function() {
- app = $('iframe').contents().find('#app-content .mock-app-root')
-
- const recurseNotices = function () {
- let button = app.find('button')
- if (button.html() === 'Accept') {
- let termsPage = app.find('.markdown')[0]
- termsPage.scrollTop = termsPage.scrollHeight
- return wait().then(() => {
- button.click()
- return wait()
- }).then(() => {
- return recurseNotices()
- })
- } else {
- return wait()
- }
+QUnit.test('render init screen', (assert) => {
+ const done = assert.async()
+ runFirstTimeUsageTest(assert).then(done).catch((err) => {
+ assert.notOk(err, `Error was thrown: ${err.stack}`)
+ done()
+ })
+})
+
+// QUnit.testDone(({ module, name, total, passed, failed, skipped, todo, runtime }) => {
+// if (failed > 0) {
+// const app = $('iframe').contents()[0].documentElement
+// console.warn('Test failures - dumping DOM:')
+// console.log(app.innerHTML)
+// }
+// })
+
+async function runFirstTimeUsageTest(assert, done) {
+
+ await timeout()
+
+ const app = $('#app-content .mock-app-root')
+
+ // recurse notices
+ while (true) {
+ const button = app.find('button')
+ if (button.html() === 'Accept') {
+ // still notices to accept
+ const termsPage = app.find('.markdown')[0]
+ termsPage.scrollTop = termsPage.scrollHeight
+ await timeout()
+ button.click()
+ await timeout()
+ } else {
+ // exit loop
+ break
}
- return recurseNotices()
- }).then(function() {
- // Scroll through terms
- var title = app.find('h1').text()
- assert.equal(title, 'MetaMask', 'title screen')
+ }
- // enter password
- var pwBox = app.find('#password-box')[0]
- var confBox = app.find('#password-box-confirm')[0]
- pwBox.value = PASSWORD
- confBox.value = PASSWORD
+ await timeout()
- return wait()
- }).then(function() {
+ // Scroll through terms
+ const title = app.find('h1').text()
+ assert.equal(title, 'MetaMask', 'title screen')
- // create vault
- var createButton = app.find('button.primary')[0]
- createButton.click()
+ // enter password
+ const pwBox = app.find('#password-box')[0]
+ const confBox = app.find('#password-box-confirm')[0]
+ pwBox.value = PASSWORD
+ confBox.value = PASSWORD
- return wait(1500)
- }).then(function() {
+ await timeout()
- var created = app.find('h3')[0]
- assert.equal(created.textContent, 'Vault Created', 'Vault created screen')
+ // create vault
+ const createButton = app.find('button.primary')[0]
+ createButton.click()
- // Agree button
- var button = app.find('button')[0]
- assert.ok(button, 'button present')
- button.click()
+ await timeout(1500)
- return wait(1000)
- }).then(function() {
+ const created = app.find('h3')[0]
+ assert.equal(created.textContent, 'Vault Created', 'Vault created screen')
- var detail = app.find('.account-detail-section')[0]
- assert.ok(detail, 'Account detail section loaded.')
+ // Agree button
+ const button = app.find('button')[0]
+ assert.ok(button, 'button present')
+ button.click()
- var sandwich = app.find('.sandwich-expando')[0]
- sandwich.click()
+ await timeout(1000)
- return wait()
- }).then(function() {
+ const detail = app.find('.account-detail-section')[0]
+ assert.ok(detail, 'Account detail section loaded.')
- var sandwich = app.find('.menu-droppo')[0]
- var children = sandwich.children
- var lock = children[children.length - 2]
- assert.ok(lock, 'Lock menu item found')
- lock.click()
+ const sandwich = app.find('.sandwich-expando')[0]
+ sandwich.click()
- return wait(1000)
- }).then(function() {
+ await timeout()
- var pwBox = app.find('#password-box')[0]
- pwBox.value = PASSWORD
+ const menu = app.find('.menu-droppo')[0]
+ const children = menu.children
+ const lock = children[children.length - 2]
+ assert.ok(lock, 'Lock menu item found')
+ lock.click()
- var createButton = app.find('button.primary')[0]
- createButton.click()
+ await timeout(1000)
- return wait(1000)
- }).then(function() {
+ const pwBox2 = app.find('#password-box')[0]
+ pwBox2.value = PASSWORD
- var detail = app.find('.account-detail-section')[0]
- assert.ok(detail, 'Account detail section loaded again.')
+ const createButton2 = app.find('button.primary')[0]
+ createButton2.click()
- return wait()
- }).then(function (){
+ await timeout(1000)
- var qrButton = app.find('.fa.fa-ellipsis-h')[0] // open account settings dropdown
- qrButton.click()
+ const detail2 = app.find('.account-detail-section')[0]
+ assert.ok(detail2, 'Account detail section loaded again.')
- return wait(1000)
- }).then(function (){
+ await timeout()
- var qrButton = app.find('.dropdown-menu-item')[1] // qr code item
- qrButton.click()
+ // open account settings dropdown
+ const qrButton = app.find('.fa.fa-ellipsis-h')[0]
+ qrButton.click()
- return wait(1000)
- }).then(function (){
+ await timeout(1000)
- var qrHeader = app.find('.qr-header')[0]
- var qrContainer = app.find('#qr-container')[0]
- assert.equal(qrHeader.textContent, 'Account 1', 'Should show account label.')
- assert.ok(qrContainer, 'QR Container found')
+ // qr code item
+ const qrButton2 = app.find('.dropdown-menu-item')[1]
+ qrButton2.click()
- return wait()
- }).then(function (){
+ await timeout(1000)
- var networkMenu = app.find('.network-indicator')[0]
- networkMenu.click()
+ const qrHeader = app.find('.qr-header')[0]
+ const qrContainer = app.find('#qr-container')[0]
+ assert.equal(qrHeader.textContent, 'Account 1', 'Should show account label.')
+ assert.ok(qrContainer, 'QR Container found')
- return wait()
- }).then(function (){
+ await timeout()
- var networkMenu = app.find('.network-indicator')[0]
- var children = networkMenu.children
- children.length[3]
- assert.ok(children, 'All network options present')
+ const networkMenu = app.find('.network-indicator')[0]
+ networkMenu.click()
- done()
+ await timeout()
+
+ const networkMenu2 = app.find('.network-indicator')[0]
+ const children2 = networkMenu2.children
+ children2.length[3]
+ assert.ok(children2, 'All network options present')
+}
+
+function timeout(time) {
+ return new Promise(function (resolve, reject) {
+ setTimeout(function () {
+ resolve()
+ }, time * 3 || 1500)
})
-})
+} \ No newline at end of file
diff --git a/test/lib/mock-store.js b/test/lib/mock-store.js
index 0d50e2d9c..8af8f6d23 100644
--- a/test/lib/mock-store.js
+++ b/test/lib/mock-store.js
@@ -1,7 +1,7 @@
const createStore = require('redux').createStore
const applyMiddleware = require('redux').applyMiddleware
-const thunkMiddleware = require('redux-thunk')
-const createLogger = require('redux-logger')
+const thunkMiddleware = require('redux-thunk').default
+const createLogger = require('redux-logger').createLogger
const rootReducer = function () {}
module.exports = configureStore
diff --git a/test/lib/mock-tx-gen.js b/test/lib/mock-tx-gen.js
new file mode 100644
index 000000000..7aea09c59
--- /dev/null
+++ b/test/lib/mock-tx-gen.js
@@ -0,0 +1,40 @@
+const extend = require('xtend')
+const BN = require('ethereumjs-util').BN
+const template = {
+ 'status': 'submitted',
+ 'txParams': {
+ 'from': '0x7d3517b0d011698406d6e0aed8453f0be2697926',
+ 'gas': '0x30d40',
+ 'value': '0x0',
+ 'nonce': '0x3',
+ },
+}
+
+class TxGenerator {
+
+ constructor () {
+ this.txs = []
+ }
+
+ generate (tx = {}, opts = {}) {
+ let { count, fromNonce } = opts
+ let nonce = fromNonce || this.txs.length
+ let txs = []
+ for (let i = 0; i < count; i++) {
+ txs.push(extend(template, {
+ txParams: {
+ nonce: hexify(nonce++),
+ }
+ }, tx))
+ }
+ this.txs = this.txs.concat(txs)
+ return txs
+ }
+
+}
+
+function hexify (number) {
+ return '0x' + (new BN(number)).toString(16)
+}
+
+module.exports = TxGenerator
diff --git a/test/unit/actions/tx_test.js b/test/unit/actions/tx_test.js
index 67c72e9a5..ea6dfda6a 100644
--- a/test/unit/actions/tx_test.js
+++ b/test/unit/actions/tx_test.js
@@ -53,7 +53,7 @@ describe('tx confirmation screen', function () {
result = reducers(initialState, action)
done()
})
-
+
})
it('should transition to the account detail view', function () {
@@ -65,91 +65,6 @@ describe('tx confirmation screen', function () {
assert.equal(count, 0)
})
})
-
- describe('sendTx', function () {
- var result
-
- describe('when there is an error', function () {
- before(function (done) {
- actions._setBackgroundConnection({
- approveTransaction (txId, cb) { cb({message: 'An error!'}) },
- })
-
- actions.sendTx({id: firstTxId})(function (action) {
- result = reducers(initialState, action)
- done()
- })
- })
-
- it('should stay on the page', function () {
- assert.equal(result.appState.currentView.name, 'confTx')
- })
-
- it('should set errorMessage on the currentView', function () {
- assert(result.appState.currentView.errorMessage)
- })
- })
-
- describe('when there is success', function () {
- it('should complete tx and go home', function () {
- actions._setBackgroundConnection({
- approveTransaction (txId, cb) { cb() },
- })
-
- var dispatchExpect = sinon.mock()
- dispatchExpect.twice()
-
- actions.sendTx({id: firstTxId})(dispatchExpect)
- })
- })
- })
-
- describe('when there are two pending txs', function () {
- var firstTxId = 1457634084250832
- var result, initialState
- before(function (done) {
- initialState = {
- appState: {
- currentView: {
- name: 'confTx',
- },
- },
- metamask: {
- unapprovedTxs: {
- '1457634084250832': {
- id: firstTxId,
- status: 'unconfirmed',
- time: 1457634084250,
- },
- '1457634084250833': {
- id: 1457634084250833,
- status: 'unconfirmed',
- time: 1457634084255,
- },
- },
- },
- }
- freeze(initialState)
-
- // Mocking a background connection:
- actions._setBackgroundConnection({
- approveTransaction (firstTxId, cb) { cb() },
- })
-
- actions.sendTx({id: firstTxId})(function (action) {
- result = reducers(initialState, action)
- })
- done()
- })
-
- it('should stay on the confTx view', function () {
- assert.equal(result.appState.currentView.name, 'confTx')
- })
-
- it('should transition to the first tx', function () {
- assert.equal(result.appState.currentView.context, 0)
- })
- })
})
})
diff --git a/test/unit/nonce-tracker-test.js b/test/unit/nonce-tracker-test.js
index 36025a360..8970cf84d 100644
--- a/test/unit/nonce-tracker-test.js
+++ b/test/unit/nonce-tracker-test.js
@@ -1,41 +1,203 @@
const assert = require('assert')
const NonceTracker = require('../../app/scripts/lib/nonce-tracker')
+const MockTxGen = require('../lib/mock-tx-gen')
+let providerResultStub = {}
describe('Nonce Tracker', function () {
- let nonceTracker, provider, getPendingTransactions, pendingTxs
-
-
- beforeEach(function () {
- pendingTxs = [{
- 'status': 'submitted',
- 'txParams': {
- 'from': '0x7d3517b0d011698406d6e0aed8453f0be2697926',
- 'gas': '0x30d40',
- 'value': '0x0',
- 'nonce': '0x0',
- },
- }]
-
-
- getPendingTransactions = () => pendingTxs
- provider = {
- sendAsync: (_, cb) => { cb(undefined, {result: '0x0'}) },
- _blockTracker: {
- getCurrentBlock: () => '0x11b568',
- },
- }
- nonceTracker = new NonceTracker({
- provider,
- getPendingTransactions,
- })
- })
+ let nonceTracker, provider
+ let getPendingTransactions, pendingTxs
+ let getConfirmedTransactions, confirmedTxs
describe('#getNonceLock', function () {
- it('should work', async function () {
- this.timeout(15000)
- const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
- assert.equal(nonceLock.nextNonce, '1', 'nonce should be 1')
- await nonceLock.releaseLock()
+
+ describe('with 3 confirmed and 1 pending', function () {
+ beforeEach(function () {
+ const txGen = new MockTxGen()
+ confirmedTxs = txGen.generate({ status: 'confirmed' }, { count: 3 })
+ pendingTxs = txGen.generate({ status: 'submitted' }, { count: 1 })
+ nonceTracker = generateNonceTrackerWith(pendingTxs, confirmedTxs, '0x1')
+ })
+
+ it('should return 4', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '4', `nonce should be 4 got ${nonceLock.nextNonce}`)
+ await nonceLock.releaseLock()
+ })
+
+ it('should use localNonce if network returns a nonce lower then a confirmed tx in state', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '4', 'nonce should be 4')
+ await nonceLock.releaseLock()
+ })
+ })
+
+ describe('with no previous txs', function () {
+ beforeEach(function () {
+ nonceTracker = generateNonceTrackerWith([], [])
+ })
+
+ it('should return 0', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '0', `nonce should be 0 returned ${nonceLock.nextNonce}`)
+ await nonceLock.releaseLock()
+ })
+ })
+
+ describe('with multiple previous txs with same nonce', function () {
+ beforeEach(function () {
+ const txGen = new MockTxGen()
+ confirmedTxs = txGen.generate({ status: 'confirmed' }, { count: 1 })
+ pendingTxs = txGen.generate({
+ status: 'submitted',
+ txParams: { nonce: '0x01' },
+ }, { count: 5 })
+
+ nonceTracker = generateNonceTrackerWith(pendingTxs, confirmedTxs, '0x0')
+ })
+
+ it('should return nonce after those', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '2', `nonce should be 2 got ${nonceLock.nextNonce}`)
+ await nonceLock.releaseLock()
+ })
+ })
+
+ describe('when local confirmed count is higher than network nonce', function () {
+ beforeEach(function () {
+ const txGen = new MockTxGen()
+ confirmedTxs = txGen.generate({ status: 'confirmed' }, { count: 3 })
+ nonceTracker = generateNonceTrackerWith([], confirmedTxs, '0x1')
+ })
+
+ it('should return nonce after those', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '3', `nonce should be 3 got ${nonceLock.nextNonce}`)
+ await nonceLock.releaseLock()
+ })
+ })
+
+ describe('when local pending count is higher than other metrics', function () {
+ beforeEach(function () {
+ const txGen = new MockTxGen()
+ pendingTxs = txGen.generate({ status: 'submitted' }, { count: 2 })
+ nonceTracker = generateNonceTrackerWith(pendingTxs, [])
+ })
+
+ it('should return nonce after those', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '2', `nonce should be 2 got ${nonceLock.nextNonce}`)
+ await nonceLock.releaseLock()
+ })
+ })
+
+ describe('when provider nonce is higher than other metrics', function () {
+ beforeEach(function () {
+ const txGen = new MockTxGen()
+ pendingTxs = txGen.generate({ status: 'submitted' }, { count: 2 })
+ nonceTracker = generateNonceTrackerWith(pendingTxs, [], '0x05')
+ })
+
+ it('should return nonce after those', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '5', `nonce should be 5 got ${nonceLock.nextNonce}`)
+ await nonceLock.releaseLock()
+ })
+ })
+
+ describe('when there are some pending nonces below the remote one and some over.', function () {
+ beforeEach(function () {
+ const txGen = new MockTxGen()
+ pendingTxs = txGen.generate({ status: 'submitted' }, { count: 5 })
+ nonceTracker = generateNonceTrackerWith(pendingTxs, [], '0x03')
+ })
+
+ it('should return nonce after those', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '5', `nonce should be 5 got ${nonceLock.nextNonce}`)
+ await nonceLock.releaseLock()
+ })
+ })
+
+ describe('when there are pending nonces non sequentially over the network nonce.', function () {
+ beforeEach(function () {
+ const txGen = new MockTxGen()
+ txGen.generate({ status: 'submitted' }, { count: 5 })
+ // 5 over that number
+ pendingTxs = txGen.generate({ status: 'submitted' }, { count: 5 })
+ nonceTracker = generateNonceTrackerWith(pendingTxs, [], '0x00')
+ })
+
+ it('should return nonce after network nonce', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '0', `nonce should be 0 got ${nonceLock.nextNonce}`)
+ await nonceLock.releaseLock()
+ })
+ })
+
+ describe('When all three return different values', function () {
+ beforeEach(function () {
+ const txGen = new MockTxGen()
+ const confirmedTxs = txGen.generate({ status: 'confirmed' }, { count: 10 })
+ const pendingTxs = txGen.generate({
+ status: 'submitted',
+ nonce: 100,
+ }, { count: 1 })
+ // 0x32 is 50 in hex:
+ nonceTracker = generateNonceTrackerWith(pendingTxs, confirmedTxs, '0x32')
+ })
+
+ it('should return nonce after network nonce', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '50', `nonce should be 50 got ${nonceLock.nextNonce}`)
+ await nonceLock.releaseLock()
+ })
+ })
+
+ describe('Faq issue 67', function () {
+ beforeEach(function () {
+ const txGen = new MockTxGen()
+ const confirmedTxs = txGen.generate({ status: 'confirmed' }, { count: 64 })
+ const pendingTxs = txGen.generate({
+ status: 'submitted',
+ }, { count: 10 })
+ // 0x40 is 64 in hex:
+ nonceTracker = generateNonceTrackerWith(pendingTxs, [], '0x40')
+ })
+
+ it('should return nonce after network nonce', async function () {
+ this.timeout(15000)
+ const nonceLock = await nonceTracker.getNonceLock('0x7d3517b0d011698406d6e0aed8453f0be2697926')
+ assert.equal(nonceLock.nextNonce, '74', `nonce should be 74 got ${nonceLock.nextNonce}`)
+ await nonceLock.releaseLock()
+ })
})
})
})
+
+function generateNonceTrackerWith (pending, confirmed, providerStub = '0x0') {
+ const getPendingTransactions = () => pending
+ const getConfirmedTransactions = () => confirmed
+ providerResultStub.result = providerStub
+ const provider = {
+ sendAsync: (_, cb) => { cb(undefined, providerResultStub) },
+ _blockTracker: {
+ getCurrentBlock: () => '0x11b568',
+ },
+ }
+ return new NonceTracker({
+ provider,
+ getPendingTransactions,
+ getConfirmedTransactions,
+ })
+}
+
diff --git a/test/unit/tx-controller-test.js b/test/unit/tx-controller-test.js
index 57d7deccd..7bb193242 100644
--- a/test/unit/tx-controller-test.js
+++ b/test/unit/tx-controller-test.js
@@ -6,12 +6,15 @@ const clone = require('clone')
const sinon = require('sinon')
const TransactionController = require('../../app/scripts/controllers/transactions')
const TxProvideUtils = require('../../app/scripts/lib/tx-utils')
+const txStateHistoryHelper = require('../../app/scripts/lib/tx-state-history-helper')
+
const noop = () => true
const currentNetworkId = 42
const otherNetworkId = 36
const privKey = new Buffer('8718b9618a37d1fc78c436511fc6df3c8258d3250635bba617f33003270ec03e', 'hex')
const { createStubedProvider } = require('../stub/provider')
+
describe('Transaction Controller', function () {
let txController, engine, provider, providerResultStub
@@ -47,7 +50,7 @@ describe('Transaction Controller', function () {
metamaskNetworkId: currentNetworkId,
txParams,
}
- txController._saveTxList([txMeta])
+ txController.addTx(txMeta)
stub = sinon.stub(txController, 'addUnapprovedTransaction').returns(Promise.resolve(txMeta))
})
@@ -279,12 +282,15 @@ describe('Transaction Controller', function () {
it('replaces the tx with the same id', function () {
txController.addTx({ id: '1', status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }, noop)
txController.addTx({ id: '2', status: 'confirmed', metamaskNetworkId: currentNetworkId, txParams: {} }, noop)
- txController.updateTx({ id: '1', status: 'blah', hash: 'foo', metamaskNetworkId: currentNetworkId, txParams: {} })
- var result = txController.getTx('1')
- assert.equal(result.hash, 'foo')
+ const tx1 = txController.getTx('1')
+ tx1.status = 'blah'
+ tx1.hash = 'foo'
+ txController.updateTx(tx1)
+ const savedResult = txController.getTx('1')
+ assert.equal(savedResult.hash, 'foo')
})
- it('updates gas price', function () {
+ it('updates gas price and adds history items', function () {
const originalGasPrice = '0x01'
const desiredGasPrice = '0x02'
@@ -297,13 +303,22 @@ describe('Transaction Controller', function () {
},
}
- const updatedMeta = clone(txMeta)
-
txController.addTx(txMeta)
- updatedMeta.txParams.gasPrice = desiredGasPrice
- txController.updateTx(updatedMeta)
- var result = txController.getTx('1')
+ const updatedTx = txController.getTx('1')
+ // verify tx was initialized correctly
+ assert.equal(updatedTx.history.length, 1, 'one history item (initial)')
+ assert.equal(Array.isArray(updatedTx.history[0]), false, 'first history item is initial state')
+ assert.deepEqual(updatedTx.history[0], txStateHistoryHelper.snapshotFromTxMeta(updatedTx), 'first history item is initial state')
+ // modify value and updateTx
+ updatedTx.txParams.gasPrice = desiredGasPrice
+ txController.updateTx(updatedTx)
+ // check updated value
+ const result = txController.getTx('1')
assert.equal(result.txParams.gasPrice, desiredGasPrice, 'gas price updated')
+ // validate history was updated
+ assert.equal(result.history.length, 2, 'two history items (initial + diff)')
+ const expectedEntry = { op: 'replace', path: '/txParams/gasPrice', value: desiredGasPrice }
+ assert.deepEqual(result.history[1], [expectedEntry], 'two history items (initial + diff)')
})
})
diff --git a/test/unit/tx-state-history-helper-test.js b/test/unit/tx-state-history-helper-test.js
new file mode 100644
index 000000000..90cb10713
--- /dev/null
+++ b/test/unit/tx-state-history-helper-test.js
@@ -0,0 +1,26 @@
+const assert = require('assert')
+const clone = require('clone')
+const txStateHistoryHelper = require('../../app/scripts/lib/tx-state-history-helper')
+
+describe('deepCloneFromTxMeta', function () {
+ it('should clone deep', function () {
+ const input = {
+ foo: {
+ bar: {
+ bam: 'baz'
+ }
+ }
+ }
+ const output = txStateHistoryHelper.snapshotFromTxMeta(input)
+ assert('foo' in output, 'has a foo key')
+ assert('bar' in output.foo, 'has a bar key')
+ assert('bam' in output.foo.bar, 'has a bar key')
+ assert.equal(output.foo.bar.bam, 'baz', 'has a baz value')
+ })
+
+ it('should remove the history key', function () {
+ const input = { foo: 'bar', history: 'remembered' }
+ const output = txStateHistoryHelper.snapshotFromTxMeta(input)
+ assert(typeof output.history, 'undefined', 'should remove history')
+ })
+})
diff --git a/test/unit/tx-state-history-helper.js b/test/unit/tx-state-history-helper.js
new file mode 100644
index 000000000..5bb6c9bee
--- /dev/null
+++ b/test/unit/tx-state-history-helper.js
@@ -0,0 +1,23 @@
+const assert = require('assert')
+const txStateHistoryHelper = require('../../app/scripts/lib/tx-state-history-helper')
+const testVault = require('../data/v17-long-history.json')
+
+
+describe('tx-state-history-helper', function () {
+ it('migrates history to diffs and can recover original values', function () {
+ testVault.data.TransactionController.transactions.forEach((tx, index) => {
+ const newHistory = txStateHistoryHelper.migrateFromSnapshotsToDiffs(tx.history)
+ newHistory.forEach((newEntry, index) => {
+ if (index === 0) {
+ assert.equal(Array.isArray(newEntry), false, 'initial history item IS NOT a json patch obj')
+ } else {
+ assert.equal(Array.isArray(newEntry), true, 'non-initial history entry IS a json patch obj')
+ }
+ const oldEntry = tx.history[index]
+ const historySubset = newHistory.slice(0, index + 1)
+ const reconstructedValue = txStateHistoryHelper.replayHistory(historySubset)
+ assert.deepEqual(oldEntry, reconstructedValue, 'was able to reconstruct old entry from diffs')
+ })
+ })
+ })
+})