mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Updating formatTxMetaForRpcResult to match latest spec (#11536)
This commit is contained in:
parent
e60e371105
commit
ceaf16417d
@ -53,6 +53,7 @@ describe('PendingNonceMiddleware', function () {
|
|||||||
getPendingTransactionByHash,
|
getPendingTransactionByHash,
|
||||||
});
|
});
|
||||||
const spec = {
|
const spec = {
|
||||||
|
accessList: null,
|
||||||
blockHash: null,
|
blockHash: null,
|
||||||
blockNumber: null,
|
blockNumber: null,
|
||||||
from: '0xf231d46dd78806e1dd93442cf33c7671f8538748',
|
from: '0xf231d46dd78806e1dd93442cf33c7671f8538748',
|
||||||
@ -62,6 +63,7 @@ describe('PendingNonceMiddleware', function () {
|
|||||||
'0x2cc5a25744486f7383edebbf32003e5a66e18135799593d6b5cdd2bb43674f09',
|
'0x2cc5a25744486f7383edebbf32003e5a66e18135799593d6b5cdd2bb43674f09',
|
||||||
input: '0x',
|
input: '0x',
|
||||||
nonce: '0x4',
|
nonce: '0x4',
|
||||||
|
type: '0x0',
|
||||||
to: '0xf231d46dd78806e1dd93442cf33c7671f8538748',
|
to: '0xf231d46dd78806e1dd93442cf33c7671f8538748',
|
||||||
transactionIndex: null,
|
transactionIndex: null,
|
||||||
value: '0x0',
|
value: '0x0',
|
||||||
|
@ -1,24 +1,48 @@
|
|||||||
import { NETWORK_TO_NAME_MAP } from '../../../../shared/constants/network';
|
import { NETWORK_TO_NAME_MAP } from '../../../../shared/constants/network';
|
||||||
|
import { TRANSACTION_ENVELOPE_TYPES } from '../../../../shared/constants/transaction';
|
||||||
|
|
||||||
export const getNetworkDisplayName = (key) => NETWORK_TO_NAME_MAP[key];
|
export const getNetworkDisplayName = (key) => NETWORK_TO_NAME_MAP[key];
|
||||||
|
|
||||||
export function formatTxMetaForRpcResult(txMeta) {
|
export function formatTxMetaForRpcResult(txMeta) {
|
||||||
return {
|
const { r, s, v, hash, txReceipt, txParams } = txMeta;
|
||||||
blockHash: txMeta.txReceipt ? txMeta.txReceipt.blockHash : null,
|
const {
|
||||||
blockNumber: txMeta.txReceipt ? txMeta.txReceipt.blockNumber : null,
|
to,
|
||||||
from: txMeta.txParams.from,
|
data,
|
||||||
gas: txMeta.txParams.gas,
|
nonce,
|
||||||
gasPrice: txMeta.txParams.gasPrice,
|
gas,
|
||||||
hash: txMeta.hash,
|
from,
|
||||||
input: txMeta.txParams.data || '0x',
|
value,
|
||||||
nonce: txMeta.txParams.nonce,
|
gasPrice,
|
||||||
to: txMeta.txParams.to,
|
accessList,
|
||||||
transactionIndex: txMeta.txReceipt
|
maxFeePerGas,
|
||||||
? txMeta.txReceipt.transactionIndex
|
maxPriorityFeePerGas,
|
||||||
: null,
|
} = txParams;
|
||||||
value: txMeta.txParams.value || '0x0',
|
|
||||||
v: txMeta.v,
|
const formattedTxMeta = {
|
||||||
r: txMeta.r,
|
v,
|
||||||
s: txMeta.s,
|
r,
|
||||||
|
s,
|
||||||
|
to,
|
||||||
|
gas,
|
||||||
|
from,
|
||||||
|
hash,
|
||||||
|
nonce,
|
||||||
|
input: data || '0x',
|
||||||
|
value: value || '0x0',
|
||||||
|
accessList: accessList || null,
|
||||||
|
blockHash: txReceipt?.blockHash || null,
|
||||||
|
blockNumber: txReceipt?.blockNumber || null,
|
||||||
|
transactionIndex: txReceipt?.transactionIndex || null,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (maxFeePerGas && maxPriorityFeePerGas) {
|
||||||
|
formattedTxMeta.maxFeePerGas = maxFeePerGas;
|
||||||
|
formattedTxMeta.maxPriorityFeePerGas = maxPriorityFeePerGas;
|
||||||
|
formattedTxMeta.type = TRANSACTION_ENVELOPE_TYPES.FEE_MARKET;
|
||||||
|
} else {
|
||||||
|
formattedTxMeta.gasPrice = gasPrice;
|
||||||
|
formattedTxMeta.type = TRANSACTION_ENVELOPE_TYPES.LEGACY;
|
||||||
|
}
|
||||||
|
|
||||||
|
return formattedTxMeta;
|
||||||
}
|
}
|
||||||
|
99
app/scripts/controllers/network/util.test.js
Normal file
99
app/scripts/controllers/network/util.test.js
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
import { strict as assert } from 'assert';
|
||||||
|
import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction';
|
||||||
|
import { formatTxMetaForRpcResult } from './util';
|
||||||
|
|
||||||
|
describe('network utils', function () {
|
||||||
|
describe('formatTxMetaForRpcResult', function () {
|
||||||
|
it('should correctly format the tx meta object (EIP-1559)', function () {
|
||||||
|
const txMeta = {
|
||||||
|
id: 1,
|
||||||
|
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||||
|
txParams: {
|
||||||
|
from: '0xc684832530fcbddae4b4230a47e991ddcec2831d',
|
||||||
|
to: '0x1678a085c290ebd122dc42cba69373b5953b831d',
|
||||||
|
maxFeePerGas: '0x77359400',
|
||||||
|
maxPriorityFeePerGas: '0x77359400',
|
||||||
|
gas: '0x7b0d',
|
||||||
|
nonce: '0x4b',
|
||||||
|
},
|
||||||
|
type: 'sentEther',
|
||||||
|
origin: 'other',
|
||||||
|
chainId: '0x3',
|
||||||
|
time: 1624408066355,
|
||||||
|
metamaskNetworkId: '3',
|
||||||
|
hash:
|
||||||
|
'0x4bcb6cd6b182209585f8ad140260ddb35c81a575dd40f508d9767e652a9f60e7',
|
||||||
|
r: '0x4c3111e42ed5eec3dcecba1e234700f387e8693c373c61c3e54a762a26f1570e',
|
||||||
|
s: '0x18bfc4eeb7ebcfacc3bd59ea100a6834ea3265e65945dbec69aa2a06564fafff',
|
||||||
|
v: '0x29',
|
||||||
|
};
|
||||||
|
const expectedResult = {
|
||||||
|
accessList: null,
|
||||||
|
blockHash: null,
|
||||||
|
blockNumber: null,
|
||||||
|
from: '0xc684832530fcbddae4b4230a47e991ddcec2831d',
|
||||||
|
gas: '0x7b0d',
|
||||||
|
hash:
|
||||||
|
'0x4bcb6cd6b182209585f8ad140260ddb35c81a575dd40f508d9767e652a9f60e7',
|
||||||
|
input: '0x',
|
||||||
|
maxFeePerGas: '0x77359400',
|
||||||
|
maxPriorityFeePerGas: '0x77359400',
|
||||||
|
nonce: '0x4b',
|
||||||
|
r: '0x4c3111e42ed5eec3dcecba1e234700f387e8693c373c61c3e54a762a26f1570e',
|
||||||
|
s: '0x18bfc4eeb7ebcfacc3bd59ea100a6834ea3265e65945dbec69aa2a06564fafff',
|
||||||
|
to: '0x1678a085c290ebd122dc42cba69373b5953b831d',
|
||||||
|
transactionIndex: null,
|
||||||
|
type: '0x2',
|
||||||
|
v: '0x29',
|
||||||
|
value: '0x0',
|
||||||
|
};
|
||||||
|
const result = formatTxMetaForRpcResult(txMeta);
|
||||||
|
assert.deepEqual(result, expectedResult);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should correctly format the tx meta object (non EIP-1559)', function () {
|
||||||
|
const txMeta = {
|
||||||
|
id: 1,
|
||||||
|
status: TRANSACTION_STATUSES.UNAPPROVED,
|
||||||
|
txParams: {
|
||||||
|
from: '0xc684832530fcbddae4b4230a47e991ddcec2831d',
|
||||||
|
to: '0x1678a085c290ebd122dc42cba69373b5953b831d',
|
||||||
|
gasPrice: '0x77359400',
|
||||||
|
gas: '0x7b0d',
|
||||||
|
nonce: '0x4b',
|
||||||
|
},
|
||||||
|
type: 'sentEther',
|
||||||
|
origin: 'other',
|
||||||
|
chainId: '0x3',
|
||||||
|
time: 1624408066355,
|
||||||
|
metamaskNetworkId: '3',
|
||||||
|
hash:
|
||||||
|
'0x4bcb6cd6b182209585f8ad140260ddb35c81a575dd40f508d9767e652a9f60e7',
|
||||||
|
r: '0x4c3111e42ed5eec3dcecba1e234700f387e8693c373c61c3e54a762a26f1570e',
|
||||||
|
s: '0x18bfc4eeb7ebcfacc3bd59ea100a6834ea3265e65945dbec69aa2a06564fafff',
|
||||||
|
v: '0x29',
|
||||||
|
};
|
||||||
|
const expectedResult = {
|
||||||
|
accessList: null,
|
||||||
|
blockHash: null,
|
||||||
|
blockNumber: null,
|
||||||
|
from: '0xc684832530fcbddae4b4230a47e991ddcec2831d',
|
||||||
|
gas: '0x7b0d',
|
||||||
|
hash:
|
||||||
|
'0x4bcb6cd6b182209585f8ad140260ddb35c81a575dd40f508d9767e652a9f60e7',
|
||||||
|
input: '0x',
|
||||||
|
gasPrice: '0x77359400',
|
||||||
|
nonce: '0x4b',
|
||||||
|
r: '0x4c3111e42ed5eec3dcecba1e234700f387e8693c373c61c3e54a762a26f1570e',
|
||||||
|
s: '0x18bfc4eeb7ebcfacc3bd59ea100a6834ea3265e65945dbec69aa2a06564fafff',
|
||||||
|
to: '0x1678a085c290ebd122dc42cba69373b5953b831d',
|
||||||
|
transactionIndex: null,
|
||||||
|
type: '0x0',
|
||||||
|
v: '0x29',
|
||||||
|
value: '0x0',
|
||||||
|
};
|
||||||
|
const result = formatTxMetaForRpcResult(txMeta);
|
||||||
|
assert.deepEqual(result, expectedResult);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user