1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-25 11:28:51 +01:00
metamask-extension/app/scripts/controllers/transactions
Olusegun Akintayo 442edc5a91
Update EIP1559 params. (#13652)
* Draft methods to brak updateTransaction into smaller more targeted
methods.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* normalize and validate tx params.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Method to normalize tx and check if it's unapproved.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Move the methods to controllers/transactions/index.js

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Flesh out the methods to update transaction with custom notes.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Test update gas fees

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Update swap approval transaction

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* use lodash to remove undefined properties
update swap transaction tests

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Updates transaction user settings.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Lint fixes.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Add Update Transaction Metrics

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Update transaction gas fees actions.js

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Lint fixes.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Update EIP 1559 Params.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Lint Fixes.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Documentations.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Remove metrics from this PR

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Lint fixes: Removed unused variables

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Add more params to updateTransactionGasFees.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Update eip1559 method to editableParams.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* lint fixes.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Fix Mocha tests

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* add gasPrice to updateEditableParams

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Remove duplicated Params in notes.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* A few more tests to cover if
    transaction status is not unapproved
    transaction is passed more parameters than it requires.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Update EIP1559 params.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Remove metrics

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Add updateTransactionParams to actions.js updateXXX and return txData at the end of updateXXX method

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Lint fixes.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* change method name to update editable params.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* lint fixes.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Editable params should pass in the txParams and not the full tx object

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Fix jest tests

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* lint fixes.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Do not hideLoading since we're not showing it.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Proper JSDOCs comments.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Remove gas settings from updateEditableParams since we already have a
dedicated gas update method.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Fix duplicate codes from rebasing.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>

* Lint fixes.

Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>
2022-03-07 23:14:48 +04:00
..
lib Add support for Smart Transactions (#12676) 2022-02-18 17:48:38 +01:00
index.js Update EIP1559 params. (#13652) 2022-03-07 23:14:48 +04:00
index.test.js extract determineTransactionType from tx controller (#13737) 2022-03-07 12:54:36 -06:00
pending-tx-tracker.js
pending-tx-tracker.test.js
README.md
tx-gas-utils.js
tx-gas-utils.test.js
tx-state-manager.js Deleting transactions from currentNetworkTxnList based on unique address along with nonce and chainId (#13669) 2022-02-22 12:59:13 -05:00
tx-state-manager.test.js

Transaction Controller

Transaction Controller is an aggregate of sub-controllers and trackers exposed to the MetaMask controller.

  • txStateManager responsible for the state of a transaction and storing the transaction
  • pendingTxTracker watching blocks for transactions to be include and emitting confirmed events
  • txGasUtil gas calculations and safety buffering
  • nonceTracker calculating nonces

Flow diagram of processing a transaction

transaction-flow

txMeta's & txParams

A txMeta is the "meta" object it has all the random bits of info we need about a transaction on it. txParams are sacred every thing on txParams gets signed so it must be a valid key and be hex prefixed except for the network number. Extra stuff must go on the txMeta!

Here is a txMeta too look at:

txMeta = {
  "id": 2828415030114568, // unique id for this txMeta used for look ups
  "time": 1524094064821, // time of creation
  "status": "confirmed",
  "metamaskNetworkId": "1524091532133", //the network id for the transaction
  "loadingDefaults": false, // used to tell the ui when we are done calculating gas defaults
  "txParams": { // the txParams object
    "from": "0x8acce2391c0d510a6c5e5d8f819a678f79b7e675",
    "to": "0x8acce2391c0d510a6c5e5d8f819a678f79b7e675",
    "value": "0x0",
    "gasPrice": "0x3b9aca00",
    "gas": "0x7b0c",
    "nonce": "0x0"
  },
  "history": [
    { // debug information
      "id": 2828415030114568,
      "time": 1524094064821,
      "status": "unapproved",
      "metamaskNetworkId": "1524091532133",
      "loadingDefaults": true,
      "txParams": {
        "from": "0x8acce2391c0d510a6c5e5d8f819a678f79b7e675",
        "to": "0x8acce2391c0d510a6c5e5d8f819a678f79b7e675",
        "value": "0x0"
      }
    },
    [{
      "op": "add",
      "path": "/txParams/gasPrice",
      "value": "0x3b9aca00"
    }]
  ], // I've removed most of history for this
  "origin": "MetaMask", //debug
  "nonceDetails": {
    "params": {
      "highestLocallyConfirmed": 0,
      "highestSuggested": 0,
      "nextNetworkNonce": 0
    },
    "local": {
      "name": "local",
      "nonce": 0,
      "details": {
        "startPoint": 0,
        "highest": 0
      }
    },
    "network": {
      "name": "network",
      "nonce": 0,
      "details": {
        "baseCount": 0
      }
    }
  },
  "rawTx": "0xf86980843b9aca00827b0c948acce2391c0d510a6c5e5d8f819a678f79b7e67580808602c5b5de66eea05c01a320b96ac730cb210ca56d2cb71fa360e1fc2c21fa5cf333687d18eb323fa02ed05987a6e5fd0f2459fcff80710b76b83b296454ad9a37594a0ccb4643ea90", // used for rebroadcast
  "hash": "0xa45ba834b97c15e6ff4ed09badd04ecd5ce884b455eb60192cdc73bcc583972a",
  "submittedTime": 1524094077902 // time of the attempt to submit the raw tx to the network, used in the ui to show the retry button
}