Skip to content

Patch txpool core/list for managing multi currencies#43

Merged
hbandura merged 2 commits intocelo3from
hbandura/p_list
Feb 16, 2024
Merged

Patch txpool core/list for managing multi currencies#43
hbandura merged 2 commits intocelo3from
hbandura/p_list

Conversation

@hbandura
Copy link

@hbandura hbandura commented Jan 19, 2024

Patches the txpool for multi currency. Validation, List (per user nonce heap), TxComparator(pricedHeap)

@hbandura hbandura marked this pull request as ready for review January 30, 2024 09:28
@hbandura hbandura requested review from carterqw2 and palango January 30, 2024 09:28
Copy link

@palango palango left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work, to me this feels like a better approach that the celo_list. Do you agree?

Some general notes:

  • A short PR description is always helpful, with some hints on what might be surprising or some key design choices.
  • Some tests are failing, I didn't check what causes them.
  • There's still todos in the code, especially around error handling and the L1 cost. I didn't look into those.
  • Are there other thing you intent on working in this PR?

One question around the design: There's lot's of new objects, and I'm not sure why you don't use functions instead. For example, the whitelistcheck struct is only created in NewWhitelistChecker, which is only used in LegacyPool.filter. Its IsWhitelisted method just passes down the request to FeeCurrencyValidator. For me this seems a bit meritless and I'd either use the validator directly or even the free IsWhitelisted function with the exchange rate stored in the txpool. What do you think?

@hbandura
Copy link
Author

hbandura commented Jan 30, 2024

Nice work, to me this feels like a better approach that the celo_list. Do you agree?

Yes, but the celo_list approach had not be done to look cleaner, but to avoid the most common issues I used to have when merging upstream. However it might make sense to compromise a bit here.

Some general notes:

  • A short PR description is always helpful, with some hints on what might be surprising or some key design choices.
    You are right, sorry about that.
  • Some tests are failing, I didn't check what causes them.

I'm fixing them on the go, I didn't want to wait to start the review, I doubt they will need a big change to be fixed (I can always be surprised)

  • There's still todos in the code, especially around error handling and the L1 cost. I didn't look into those.

Everything regarding L1Cost was intentional, I'm not sure if we are clear on how we want to manage that in the pool.
The logging I want to see how we are logging elsewhere first.

  • Are there other thing you intent on working in this PR?

No, unless there's something spotted in this review that I missed.

One question around the design: There's lot's of new objects, and I'm not sure why you don't use functions instead. For example, the whitelistcheck struct is only created in NewWhitelistChecker, which is only used in LegacyPool.filter. Its IsWhitelisted method just passes down the request to FeeCurrencyValidator. For me this seems a bit meritless and I'd either use the validator directly or even the free IsWhitelisted function with the exchange rate stored in the txpool. What do you think?

Many of this choices were made step by step and when you reach the final product you start cutting back, at least I already removed some as soon as I created the PR.
The specific you mentioned, whitelistchecker, was because I didn't want the list to have the stateDb, so I fixed that in a different object and passed that.
Still, I have been thinking in remove the whole state hierarchy call and use an exchangerate fixed in the pool for mostly everything except balances. I will attempt to make some of those changes and see how it looks.

@hbandura hbandura requested review from carterqw2 and palango February 2, 2024 16:33
@hbandura hbandura requested a review from carterqw2 February 6, 2024 20:34
@hbandura hbandura requested a review from carterqw2 February 7, 2024 17:30
CRU

Move comment line

Rename ToCurrencyValue to DenominateInCurrency

list modification for celo changes
list.Add and list.FilterBalance not working yet

Cherry-pick of 704201f (@palango fee currency management)

list.Add & some work on rates

Add tests for list totalcost & whitelist filter

Refactor FilterBalance for clarity & testiness

Add test for list FilterBalance (gaslimit pruning)

Add txcomparator

Use ratesComparator for pricedList

Add implementation of tx comparator

Implement GetRatesFromState

checking balance from txpool & lint fixes

Ignore l1cost for the moment

Add translate value impl

Remove 'areequaladdresses' since golang pointer comparisons work

Fix nil pointer

Change functions signature type

Change isCurrencyWhitelisted function to common

Fix comment

Add non-whitelisted test

Fix some tests failing
Changes list to use costCap in multicurrency fashion

Remove translator

Remove whitelist checker

Remove unnecessary struct

CRU

Move getbalance to celobackend

Add nonce replacement test to e2e tests

Remove feeCurrencyValidator

Move GetExchangeRates function to CeloBackend

Add log

Add current rates to legacypool

Add more test cases for nonce replacement bump

Code review updates

remove txComparator as type, alias as function

CRU
@hbandura hbandura dismissed carterqw2’s stale review February 16, 2024 16:10

Fixes already made

@hbandura hbandura merged commit 9cb1ed5 into celo3 Feb 16, 2024
@hbandura hbandura deleted the hbandura/p_list branch February 16, 2024 16:11
@palango palango mentioned this pull request Feb 19, 2024
hbandura added a commit that referenced this pull request Feb 20, 2024
Modifies the legacypool, list, and priceheap to allow for multi currency txs.
hbandura added a commit that referenced this pull request Feb 22, 2024
Modifies the legacypool, list, and priceheap to allow for multi currency txs.
palango pushed a commit that referenced this pull request Apr 30, 2024
Modifies the legacypool, list, and priceheap to allow for multi currency txs.
palango pushed a commit that referenced this pull request Apr 30, 2024
Modifies the legacypool, list, and priceheap to allow for multi currency txs.
palango pushed a commit that referenced this pull request Apr 30, 2024
Modifies the legacypool, list, and priceheap to allow for multi currency txs.
palango pushed a commit that referenced this pull request May 8, 2024
Modifies the legacypool, list, and priceheap to allow for multi currency txs.
Kourin1996 pushed a commit that referenced this pull request Aug 5, 2025
…m test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews
Kourin1996 pushed a commit that referenced this pull request Aug 6, 2025
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
Kourin1996 pushed a commit that referenced this pull request Aug 6, 2025
…m test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews
Kourin1996 pushed a commit that referenced this pull request Aug 7, 2025
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
Kourin1996 pushed a commit that referenced this pull request Aug 7, 2025
…m test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews
Kourin1996 pushed a commit that referenced this pull request Aug 7, 2025
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
Kourin1996 pushed a commit that referenced this pull request Aug 7, 2025
…m test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews
Kourin1996 pushed a commit that referenced this pull request Aug 7, 2025
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
Kourin1996 pushed a commit that referenced this pull request Aug 7, 2025
…m test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews
Kourin1996 pushed a commit that referenced this pull request Aug 7, 2025
…m test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews
Kourin1996 pushed a commit that referenced this pull request Aug 8, 2025
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
Kourin1996 pushed a commit that referenced this pull request Aug 8, 2025
…m test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews
Kourin1996 pushed a commit that referenced this pull request Aug 11, 2025
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
Kourin1996 pushed a commit that referenced this pull request Aug 11, 2025
…m test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews
Kourin1996 pushed a commit that referenced this pull request Aug 11, 2025
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
Kourin1996 pushed a commit that referenced this pull request Aug 11, 2025
…m test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews
karlb added a commit that referenced this pull request Nov 5, 2025
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
karlb added a commit that referenced this pull request Nov 5, 2025
This is a squash commit of all e2e testing related previous commits.

e2e: Add shell based test runner (#21)

* Run all test_* files
* Report failure count
* Handle geth start and stop
* Use initialized genesis block instead of deploying token

e2e: Add token duality e2e test (#3, #21)

e2e: Add smoketest to e2e tests (#261)

Adds an e2e smoketest that sends value transfer, contract interaction
and contract creation transactions for all of the valid transaction types.

It also verifies that deprecated transactions (celo legacy & cip42) are
not supported.

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e: Add tests with Ethers and Viem (#42)

To exercise the fee currency support and test JS lib compatibility.

Closes celo-org/optimism#61

e2e(runner): Allows tests to be run on Alfajores. (#212, #258)

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(fee_currency): Reenable test_fee_currency_fails_on_credit.sh (#400)

It has been disabled in d9518cc#diff-7e9dfb8659cce411851abf104e7bf34d826781fb4dc07fc9cb3a1a5b82fa5af1R48-R54, but since it works fine for me now, I don't see a reason to keep it disabled.

e2e(runner): Add mainner & baklava e2e test config for easier testing (#331, #340)
Run tests against baklava with `NETWORK=baklava ./run_all_tests.sh`
after giving the wallet enough balance (or setting your own).

e2e(js) update e2e test js dependencies (#380)

e2e: Bump braces from 3.0.2 to 3.0.3 in /e2e_test/js-tests (#392)

Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](micromatch/braces@3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-version: 3.0.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

e2e: Add sending overlapping nonce test and CIP-64 tx test in e2e viem test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews

e2e: Extract viem initialization code into viem_setup.mjs for reuse (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(js): Add mainnet & baklava config in e2e viem setup (#331, #340)

e2e: Add WebSocket support in e2e (#356)

e2e: set default TERM in e2e test for tput (#380)

e2e: Test fee currencies with failing debit/credit (#85)

This should normally not happen, but we have to make sure that such a
rare case won't crash geth nodes are cause stuck transactions that will
get re-executed on every block.

e2e(fee_currency): Refactor fee currency e2e tests (#212, #258)

Refactors debug fee currency deployment ensuring fee currency cleanup. The
geth-devmode predeployed "oracle3" is reused throughout the e2e tests
for all dynamically deployed fee-currencies. However the tested
fee-currencies are never removed from the FeeCurrencyDirectory.

This causes the node to try to query exchange-rates for the leftover
fee-currencies. This fails, because the oracle associated with the old
fee-currency has a different token address assigned and thus causes a
revert. This issue is not critical and only causes emission of a log
message and some unneccessary evm calls,
but it is better practice to clean up the fee-currency from the
directory anyways.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

[squash]: e2e(ci): update foundry version to v1.1.0 (#380)

e2e(fee_currency): Update error message assertion (#363)

e2e(fee_currency): Fix account balance check (#266)

e2e(fee_currency): Import viem_setup.mjs instead of setup viem in send_tx.mjs (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(runner|fee_currency): Fix failing e2e test (#371)

* Add Random in BlockContext to enable Merge and Shanghai fork in TryDebitFees

* Add --broadcast option in deploy_fee_currency to ensure fee currency is deployed in e2e

* Fix log assertion in e2e

* Add several e2e tests for admin blocking API

* Remove broadcast

e2e: Add gas estimation e2e test (#356)

e2e: Add e2e test for fee handler (#36)

Use Celo Sepolia for e2e test instead of alfajores

The changed error message is more precise and more stable across geth
versions.

Right now, the test "zero tip fee currency tx rejected" still fails for
Sepolia, but the same is true for Alfajores. It will work once the node
is updated.

Closes celo-org/celo-blockchain-planning#1158
karlb added a commit that referenced this pull request Dec 5, 2025
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
karlb added a commit that referenced this pull request Dec 5, 2025
This is a squash commit of all e2e testing related previous commits.

e2e: Add shell based test runner (#21)

* Run all test_* files
* Report failure count
* Handle geth start and stop
* Use initialized genesis block instead of deploying token

e2e: Add token duality e2e test (#3, #21)

e2e: Add smoketest to e2e tests (#261)

Adds an e2e smoketest that sends value transfer, contract interaction
and contract creation transactions for all of the valid transaction types.

It also verifies that deprecated transactions (celo legacy & cip42) are
not supported.

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e: Add tests with Ethers and Viem (#42)

To exercise the fee currency support and test JS lib compatibility.

Closes celo-org/optimism#61

e2e(runner): Allows tests to be run on Alfajores. (#212, #258)

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(fee_currency): Reenable test_fee_currency_fails_on_credit.sh (#400)

It has been disabled in d9518cc#diff-7e9dfb8659cce411851abf104e7bf34d826781fb4dc07fc9cb3a1a5b82fa5af1R48-R54, but since it works fine for me now, I don't see a reason to keep it disabled.

e2e(runner): Add mainner & baklava e2e test config for easier testing (#331, #340)
Run tests against baklava with `NETWORK=baklava ./run_all_tests.sh`
after giving the wallet enough balance (or setting your own).

e2e(js) update e2e test js dependencies (#380)

e2e: Bump braces from 3.0.2 to 3.0.3 in /e2e_test/js-tests (#392)

Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](micromatch/braces@3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-version: 3.0.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

e2e: Add sending overlapping nonce test and CIP-64 tx test in e2e viem test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews

e2e: Extract viem initialization code into viem_setup.mjs for reuse (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(js): Add mainnet & baklava config in e2e viem setup (#331, #340)

e2e: Add WebSocket support in e2e (#356)

e2e: set default TERM in e2e test for tput (#380)

e2e: Test fee currencies with failing debit/credit (#85)

This should normally not happen, but we have to make sure that such a
rare case won't crash geth nodes are cause stuck transactions that will
get re-executed on every block.

e2e(fee_currency): Refactor fee currency e2e tests (#212, #258)

Refactors debug fee currency deployment ensuring fee currency cleanup. The
geth-devmode predeployed "oracle3" is reused throughout the e2e tests
for all dynamically deployed fee-currencies. However the tested
fee-currencies are never removed from the FeeCurrencyDirectory.

This causes the node to try to query exchange-rates for the leftover
fee-currencies. This fails, because the oracle associated with the old
fee-currency has a different token address assigned and thus causes a
revert. This issue is not critical and only causes emission of a log
message and some unneccessary evm calls,
but it is better practice to clean up the fee-currency from the
directory anyways.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

[squash]: e2e(ci): update foundry version to v1.1.0 (#380)

e2e(fee_currency): Update error message assertion (#363)

e2e(fee_currency): Fix account balance check (#266)

e2e(fee_currency): Import viem_setup.mjs instead of setup viem in send_tx.mjs (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(runner|fee_currency): Fix failing e2e test (#371)

* Add Random in BlockContext to enable Merge and Shanghai fork in TryDebitFees

* Add --broadcast option in deploy_fee_currency to ensure fee currency is deployed in e2e

* Fix log assertion in e2e

* Add several e2e tests for admin blocking API

* Remove broadcast

e2e: Add gas estimation e2e test (#356)

e2e: Add e2e test for fee handler (#36)

Use Celo Sepolia for e2e test instead of alfajores

The changed error message is more precise and more stable across geth
versions.

Right now, the test "zero tip fee currency tx rejected" still fails for
Sepolia, but the same is true for Alfajores. It will work once the node
is updated.

Closes celo-org/celo-blockchain-planning#1158
karlb added a commit that referenced this pull request Jan 6, 2026
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
karlb added a commit that referenced this pull request Jan 6, 2026
This is a squash commit of all e2e testing related previous commits.

e2e: Add shell based test runner (#21)

* Run all test_* files
* Report failure count
* Handle geth start and stop
* Use initialized genesis block instead of deploying token

e2e: Add token duality e2e test (#3, #21)

e2e: Add smoketest to e2e tests (#261)

Adds an e2e smoketest that sends value transfer, contract interaction
and contract creation transactions for all of the valid transaction types.

It also verifies that deprecated transactions (celo legacy & cip42) are
not supported.

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e: Add tests with Ethers and Viem (#42)

To exercise the fee currency support and test JS lib compatibility.

Closes celo-org/optimism#61

e2e(runner): Allows tests to be run on Alfajores. (#212, #258)

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(fee_currency): Reenable test_fee_currency_fails_on_credit.sh (#400)

It has been disabled in d9518cc#diff-7e9dfb8659cce411851abf104e7bf34d826781fb4dc07fc9cb3a1a5b82fa5af1R48-R54, but since it works fine for me now, I don't see a reason to keep it disabled.

e2e(runner): Add mainner & baklava e2e test config for easier testing (#331, #340)
Run tests against baklava with `NETWORK=baklava ./run_all_tests.sh`
after giving the wallet enough balance (or setting your own).

e2e(js) update e2e test js dependencies (#380)

e2e: Bump braces from 3.0.2 to 3.0.3 in /e2e_test/js-tests (#392)

Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](micromatch/braces@3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-version: 3.0.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

e2e: Add sending overlapping nonce test and CIP-64 tx test in e2e viem test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews

e2e: Extract viem initialization code into viem_setup.mjs for reuse (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(js): Add mainnet & baklava config in e2e viem setup (#331, #340)

e2e: Add WebSocket support in e2e (#356)

e2e: set default TERM in e2e test for tput (#380)

e2e: Test fee currencies with failing debit/credit (#85)

This should normally not happen, but we have to make sure that such a
rare case won't crash geth nodes are cause stuck transactions that will
get re-executed on every block.

e2e(fee_currency): Refactor fee currency e2e tests (#212, #258)

Refactors debug fee currency deployment ensuring fee currency cleanup. The
geth-devmode predeployed "oracle3" is reused throughout the e2e tests
for all dynamically deployed fee-currencies. However the tested
fee-currencies are never removed from the FeeCurrencyDirectory.

This causes the node to try to query exchange-rates for the leftover
fee-currencies. This fails, because the oracle associated with the old
fee-currency has a different token address assigned and thus causes a
revert. This issue is not critical and only causes emission of a log
message and some unneccessary evm calls,
but it is better practice to clean up the fee-currency from the
directory anyways.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

[squash]: e2e(ci): update foundry version to v1.1.0 (#380)

e2e(fee_currency): Update error message assertion (#363)

e2e(fee_currency): Fix account balance check (#266)

e2e(fee_currency): Import viem_setup.mjs instead of setup viem in send_tx.mjs (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(runner|fee_currency): Fix failing e2e test (#371)

* Add Random in BlockContext to enable Merge and Shanghai fork in TryDebitFees

* Add --broadcast option in deploy_fee_currency to ensure fee currency is deployed in e2e

* Fix log assertion in e2e

* Add several e2e tests for admin blocking API

* Remove broadcast

e2e: Add gas estimation e2e test (#356)

e2e: Add e2e test for fee handler (#36)

Use Celo Sepolia for e2e test instead of alfajores

The changed error message is more precise and more stable across geth
versions.

Right now, the test "zero tip fee currency tx rejected" still fails for
Sepolia, but the same is true for Alfajores. It will work once the node
is updated.

Closes celo-org/celo-blockchain-planning#1158
piersy added a commit that referenced this pull request Jan 17, 2026
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.

 Conflicts:
	core/txpool/legacypool/legacypool.go
	core/txpool/legacypool/list.go
piersy pushed a commit that referenced this pull request Jan 17, 2026
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
piersy pushed a commit that referenced this pull request Jan 17, 2026
This is a squash commit of all e2e testing related previous commits.

e2e: Add shell based test runner (#21)

* Run all test_* files
* Report failure count
* Handle geth start and stop
* Use initialized genesis block instead of deploying token

e2e: Add token duality e2e test (#3, #21)

e2e: Add smoketest to e2e tests (#261)

Adds an e2e smoketest that sends value transfer, contract interaction
and contract creation transactions for all of the valid transaction types.

It also verifies that deprecated transactions (celo legacy & cip42) are
not supported.

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e: Add tests with Ethers and Viem (#42)

To exercise the fee currency support and test JS lib compatibility.

Closes celo-org/optimism#61

e2e(runner): Allows tests to be run on Alfajores. (#212, #258)

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(fee_currency): Reenable test_fee_currency_fails_on_credit.sh (#400)

It has been disabled in d9518cc#diff-7e9dfb8659cce411851abf104e7bf34d826781fb4dc07fc9cb3a1a5b82fa5af1R48-R54, but since it works fine for me now, I don't see a reason to keep it disabled.

e2e(runner): Add mainner & baklava e2e test config for easier testing (#331, #340)
Run tests against baklava with `NETWORK=baklava ./run_all_tests.sh`
after giving the wallet enough balance (or setting your own).

e2e(js) update e2e test js dependencies (#380)

e2e: Bump braces from 3.0.2 to 3.0.3 in /e2e_test/js-tests (#392)

Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](micromatch/braces@3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-version: 3.0.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

e2e: Add sending overlapping nonce test and CIP-64 tx test in e2e viem test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews

e2e: Extract viem initialization code into viem_setup.mjs for reuse (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(js): Add mainnet & baklava config in e2e viem setup (#331, #340)

e2e: Add WebSocket support in e2e (#356)

e2e: set default TERM in e2e test for tput (#380)

e2e: Test fee currencies with failing debit/credit (#85)

This should normally not happen, but we have to make sure that such a
rare case won't crash geth nodes are cause stuck transactions that will
get re-executed on every block.

e2e(fee_currency): Refactor fee currency e2e tests (#212, #258)

Refactors debug fee currency deployment ensuring fee currency cleanup. The
geth-devmode predeployed "oracle3" is reused throughout the e2e tests
for all dynamically deployed fee-currencies. However the tested
fee-currencies are never removed from the FeeCurrencyDirectory.

This causes the node to try to query exchange-rates for the leftover
fee-currencies. This fails, because the oracle associated with the old
fee-currency has a different token address assigned and thus causes a
revert. This issue is not critical and only causes emission of a log
message and some unneccessary evm calls,
but it is better practice to clean up the fee-currency from the
directory anyways.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

[squash]: e2e(ci): update foundry version to v1.1.0 (#380)

e2e(fee_currency): Update error message assertion (#363)

e2e(fee_currency): Fix account balance check (#266)

e2e(fee_currency): Import viem_setup.mjs instead of setup viem in send_tx.mjs (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(runner|fee_currency): Fix failing e2e test (#371)

* Add Random in BlockContext to enable Merge and Shanghai fork in TryDebitFees

* Add --broadcast option in deploy_fee_currency to ensure fee currency is deployed in e2e

* Fix log assertion in e2e

* Add several e2e tests for admin blocking API

* Remove broadcast

e2e: Add gas estimation e2e test (#356)

e2e: Add e2e test for fee handler (#36)

Use Celo Sepolia for e2e test instead of alfajores

The changed error message is more precise and more stable across geth
versions.

Right now, the test "zero tip fee currency tx rejected" still fails for
Sepolia, but the same is true for Alfajores. It will work once the node
is updated.

Closes celo-org/celo-blockchain-planning#1158
piersy added a commit that referenced this pull request Jan 17, 2026
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.

 Conflicts:
	core/txpool/legacypool/legacypool.go
	core/txpool/legacypool/list.go
piersy pushed a commit that referenced this pull request Jan 17, 2026
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
piersy pushed a commit that referenced this pull request Jan 17, 2026
This is a squash commit of all e2e testing related previous commits.

e2e: Add shell based test runner (#21)

* Run all test_* files
* Report failure count
* Handle geth start and stop
* Use initialized genesis block instead of deploying token

e2e: Add token duality e2e test (#3, #21)

e2e: Add smoketest to e2e tests (#261)

Adds an e2e smoketest that sends value transfer, contract interaction
and contract creation transactions for all of the valid transaction types.

It also verifies that deprecated transactions (celo legacy & cip42) are
not supported.

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e: Add tests with Ethers and Viem (#42)

To exercise the fee currency support and test JS lib compatibility.

Closes celo-org/optimism#61

e2e(runner): Allows tests to be run on Alfajores. (#212, #258)

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(fee_currency): Reenable test_fee_currency_fails_on_credit.sh (#400)

It has been disabled in d9518cc#diff-7e9dfb8659cce411851abf104e7bf34d826781fb4dc07fc9cb3a1a5b82fa5af1R48-R54, but since it works fine for me now, I don't see a reason to keep it disabled.

e2e(runner): Add mainner & baklava e2e test config for easier testing (#331, #340)
Run tests against baklava with `NETWORK=baklava ./run_all_tests.sh`
after giving the wallet enough balance (or setting your own).

e2e(js) update e2e test js dependencies (#380)

e2e: Bump braces from 3.0.2 to 3.0.3 in /e2e_test/js-tests (#392)

Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](micromatch/braces@3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-version: 3.0.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

e2e: Add sending overlapping nonce test and CIP-64 tx test in e2e viem test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews

e2e: Extract viem initialization code into viem_setup.mjs for reuse (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(js): Add mainnet & baklava config in e2e viem setup (#331, #340)

e2e: Add WebSocket support in e2e (#356)

e2e: set default TERM in e2e test for tput (#380)

e2e: Test fee currencies with failing debit/credit (#85)

This should normally not happen, but we have to make sure that such a
rare case won't crash geth nodes are cause stuck transactions that will
get re-executed on every block.

e2e(fee_currency): Refactor fee currency e2e tests (#212, #258)

Refactors debug fee currency deployment ensuring fee currency cleanup. The
geth-devmode predeployed "oracle3" is reused throughout the e2e tests
for all dynamically deployed fee-currencies. However the tested
fee-currencies are never removed from the FeeCurrencyDirectory.

This causes the node to try to query exchange-rates for the leftover
fee-currencies. This fails, because the oracle associated with the old
fee-currency has a different token address assigned and thus causes a
revert. This issue is not critical and only causes emission of a log
message and some unneccessary evm calls,
but it is better practice to clean up the fee-currency from the
directory anyways.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

[squash]: e2e(ci): update foundry version to v1.1.0 (#380)

e2e(fee_currency): Update error message assertion (#363)

e2e(fee_currency): Fix account balance check (#266)

e2e(fee_currency): Import viem_setup.mjs instead of setup viem in send_tx.mjs (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(runner|fee_currency): Fix failing e2e test (#371)

* Add Random in BlockContext to enable Merge and Shanghai fork in TryDebitFees

* Add --broadcast option in deploy_fee_currency to ensure fee currency is deployed in e2e

* Fix log assertion in e2e

* Add several e2e tests for admin blocking API

* Remove broadcast

e2e: Add gas estimation e2e test (#356)

e2e: Add e2e test for fee handler (#36)

Use Celo Sepolia for e2e test instead of alfajores

The changed error message is more precise and more stable across geth
versions.

Right now, the test "zero tip fee currency tx rejected" still fails for
Sepolia, but the same is true for Alfajores. It will work once the node
is updated.

Closes celo-org/celo-blockchain-planning#1158
piersy added a commit that referenced this pull request Jan 21, 2026
Modifies the legacypool, list, and priceheap to allow for multi currency txs.

Validate debitGasFees execution in tx pool

Txs must not fail during debitGasFees execution during the state
transition, so we must remove problematic txs during the tx pool
validation. We do this by executing debitGasFees inside the tx pool
validation and discarding the resulting state changes. This is not
overly efficient, but still better than the alternatives that have been
considered so far.
piersy pushed a commit that referenced this pull request Jan 21, 2026
This is a squash commit of all e2e testing related previous commits.

e2e: Add shell based test runner (#21)

* Run all test_* files
* Report failure count
* Handle geth start and stop
* Use initialized genesis block instead of deploying token

e2e: Add token duality e2e test (#3, #21)

e2e: Add smoketest to e2e tests (#261)

Adds an e2e smoketest that sends value transfer, contract interaction
and contract creation transactions for all of the valid transaction types.

It also verifies that deprecated transactions (celo legacy & cip42) are
not supported.

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e: Add tests with Ethers and Viem (#42)

To exercise the fee currency support and test JS lib compatibility.

Closes celo-org/optimism#61

e2e(runner): Allows tests to be run on Alfajores. (#212, #258)

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(fee_currency): Reenable test_fee_currency_fails_on_credit.sh (#400)

It has been disabled in d9518cc#diff-7e9dfb8659cce411851abf104e7bf34d826781fb4dc07fc9cb3a1a5b82fa5af1R48-R54, but since it works fine for me now, I don't see a reason to keep it disabled.

e2e(runner): Add mainner & baklava e2e test config for easier testing (#331, #340)
Run tests against baklava with `NETWORK=baklava ./run_all_tests.sh`
after giving the wallet enough balance (or setting your own).

e2e(js) update e2e test js dependencies (#380)

e2e: Bump braces from 3.0.2 to 3.0.3 in /e2e_test/js-tests (#392)

Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](micromatch/braces@3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-version: 3.0.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

e2e: Add sending overlapping nonce test and CIP-64 tx test in e2e viem test (#43, #55, #293)

Co-authored-by: Pastoh <hbandura@users.noreply.github.com>
Co-authored-by: kourin <yoshiki.takabayashi@clabs.co>

e2e(js): Loosen error check condition in e2e-test (#380)

Due to possible expansion of the responses error string in potential
proxy setups on a live RPC endpoint, the strict error check in the e2e
viem test caused the test to fail, although the error condition was
expected.

e2e(js): Add test of sending CIP-64 tx with unregistered fee currency in viem e2e test

e2e(js): Run e2e tests on alfajores (#212, #258, #268, #293)

Adds a test of transactions that exceed the max intrinsic gas for a fee
currency, this checks that the transaction fails and the fee currency is
blocked.

This entailed increasing gas limits
for a number of transactions that interact with fee currencies, since
the fee currencies on alfajores are different to our debug ones and also
tests needed to be updated to not rely on hardcoded fee currency rates.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

e2e(js): Get extra intrinsic gas for custom fee currency in e2e (#335)

* Get IntrinsicGas for custom fee currency in e2e

* Rename function name and add comments

* Add missing await

* Fix wrong method call

* Fix codes based reviews

e2e: Extract viem initialization code into viem_setup.mjs for reuse (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(js): Add mainnet & baklava config in e2e viem setup (#331, #340)

e2e: Add WebSocket support in e2e (#356)

e2e: set default TERM in e2e test for tput (#380)

e2e: Test fee currencies with failing debit/credit (#85)

This should normally not happen, but we have to make sure that such a
rare case won't crash geth nodes are cause stuck transactions that will
get re-executed on every block.

e2e(fee_currency): Refactor fee currency e2e tests (#212, #258)

Refactors debug fee currency deployment ensuring fee currency cleanup. The
geth-devmode predeployed "oracle3" is reused throughout the e2e tests
for all dynamically deployed fee-currencies. However the tested
fee-currencies are never removed from the FeeCurrencyDirectory.

This causes the node to try to query exchange-rates for the leftover
fee-currencies. This fails, because the oracle associated with the old
fee-currency has a different token address assigned and thus causes a
revert. This issue is not critical and only causes emission of a log
message and some unneccessary evm calls,
but it is better practice to clean up the fee-currency from the
directory anyways.

Co-authored-by: Maximilian Langenfeld <15726643+ezdac@users.noreply.github.com>

[squash]: e2e(ci): update foundry version to v1.1.0 (#380)

e2e(fee_currency): Update error message assertion (#363)

e2e(fee_currency): Fix account balance check (#266)

e2e(fee_currency): Import viem_setup.mjs instead of setup viem in send_tx.mjs (#261)

Co-authored-by: Karl Bartel <karl.bartel@clabs.co>

e2e(runner|fee_currency): Fix failing e2e test (#371)

* Add Random in BlockContext to enable Merge and Shanghai fork in TryDebitFees

* Add --broadcast option in deploy_fee_currency to ensure fee currency is deployed in e2e

* Fix log assertion in e2e

* Add several e2e tests for admin blocking API

* Remove broadcast

e2e: Add gas estimation e2e test (#356)

e2e: Add e2e test for fee handler (#36)

Use Celo Sepolia for e2e test instead of alfajores

The changed error message is more precise and more stable across geth
versions.

Right now, the test "zero tip fee currency tx rejected" still fails for
Sepolia, but the same is true for Alfajores. It will work once the node
is updated.

Closes celo-org/celo-blockchain-planning#1158
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants