Skip to content

Commit

Permalink
EIP-1559 Fix Issue #4258 (#4277)
Browse files Browse the repository at this point in the history
* Add tx.type check to _handleTxPricing

* Add fix to CHAGELOG

* Add test for issue

* Fix typo
  • Loading branch information
spacesailor24 authored Sep 9, 2021
1 parent 1547b18 commit c70722b
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 1 deletion.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,12 @@ Released with 1.0.0-beta.37 code base.

## [Unreleased]

## [1.5.3]

### Fixed

- Unable to send legacy transaction if network supported EIP-1559 (#4277)

### Changed

- ethers from 5.1.4 to 5.4.4 (#4231)
Expand Down
5 changes: 4 additions & 1 deletion packages/web3-core-method/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -850,7 +850,10 @@ function _handleTxPricing(method, tx) {
getGasPrice()
]).then(responses => {
const [block, gasPrice] = responses;
if (block && block.baseFeePerGas) {
if (
(tx.type === '0x2' || tx.type === undefined) &&
(block && block.baseFeePerGas)
) {
// The network supports EIP-1559

// Taken from https://github.com/ethers-io/ethers.js/blob/ba6854bdd5a912fe873d5da494cb5c62c190adde/packages/abstract-provider/src.ts/index.ts#L230
Expand Down
73 changes: 73 additions & 0 deletions test/method.buildCall.js
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,79 @@ describe('lib/web3/method', function () {

});

it('should send legacy tx even though network supports EIP-1559', function (done) {
var provider = new FakeHttpProvider();
var eth = new Eth(provider);
var method = new Method({
name: 'sendTransaction',
call: 'eth_sendTransaction',
params: 1,
inputFormatter: [formatters.inputTransactionFormatter]
});
method.setRequestManager(eth._requestManager, eth);

// generate send function
var send = method.buildCall();

provider.injectValidation(function (payload) {
assert.equal(payload.method, 'eth_getBlockByNumber');
assert.deepEqual(payload.params, ['latest', false]);
});
provider.injectResult({
baseFeePerGas: "0x7",
difficulty: "0x6cd6be3a",
extraData: "0x796f75747562652e636f6d2f77617463683f763d6451773477395767586351",
gasLimit: "0x1c9c381",
gasUsed: "0x8dc073",
hash: "0x846880b1158f434884f3637802ed09bac77eafc35b5f03b881ac88ce38a54907",
logsBloom: "0x4020001000000000000000008000010000000000400200000001002140000008000000010000810020000840000204304000081000000b00400010000822200004200020020140000001000882000064000021303200020000400008800000000002202102000084010000090020a8000800002000000010000030300000000000000006001005000040080001010000010040018100004c0050004000000000420000000021000200000010020008100000004000080000000000000040000900080102004002000080210201081014004030200148101000002020108025000018020020102040000204240500010000002200048000401300080088000002",
miner: "0x86864f1edf10eaf105b1bdc6e9aa8232b4c6aa00",
mixHash: "0xa29afb1fa1aea9eeac72ff435a8fc420bbc1fa1be08223eb61f294ee32250bde",
nonce: "0x122af1a5ccd78f3b",
number: "0xa0d600",
parentHash: "0x28f49150e1fe6f245655925b290f59e707d1e5c646dadaa22937169433b30294",
receiptsRoot: "0xc97d4f9980d680053606318a5820261a1dccb556d1056b70f0d48fb384986be5",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: "0x2042",
stateRoot: "0x116981b10423133ade5bd44f03c54cc3c57f4467a1c3d4b0c6d8d33a76c361ad",
timestamp: "0x60dc24ec",
totalDifficulty: "0x78828f2d886cbb",
transactions: [],
transactionsRoot: "0x738f53f745d58169da93ebbd52cc49e0c979d6ca68a6513007b546b19ab78ba4",
uncles: []
});

// add results
provider.injectValidation(function (payload) {
assert.equal(payload.method, 'eth_gasPrice');
assert.deepEqual(payload.params, []);
});
provider.injectResult('0xffffdddd'); // gas price

provider.injectValidation(function (payload) {
assert.equal(payload.method, 'eth_sendTransaction');
assert.deepEqual(payload.params, [{
from: '0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae',
to: '0x11f4d0a3c12e86b4b5f39b213f7e19d048276dae',
data: '0xa123456',
type: '0x0',
gasPrice: '0xffffdddd',
}]);

done();

});
provider.injectResult('0x1234567453543456321456321'); // tx hash

send({
from: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe',
to: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe',
data: '0xa123456',
type: '0x0'
});

});

var succeedOnReceipt = function () {
var provider = new FakeIpcProvider();
var eth = new Eth(provider);
Expand Down

0 comments on commit c70722b

Please sign in to comment.