Skip to content

Merge changes from rc7 into main#110

Merged
karlb merged 5 commits intomainfrom
karlb/rc7-into-main
Dec 8, 2025
Merged

Merge changes from rc7 into main#110
karlb merged 5 commits intomainfrom
karlb/rc7-into-main

Conversation

@karlb
Copy link
Copy Markdown
Contributor

@karlb karlb commented Dec 2, 2025

Continuation of #103

4c69265 is already reviewed (I accidentally merged the stacked PR)

@karlb karlb marked this pull request as ready for review December 2, 2025 10:47
Base automatically changed from karlb/rc4-into-main to main December 8, 2025 15:18
@palango
Copy link
Copy Markdown
Contributor

palango commented Dec 8, 2025

Something didn't work with the stacked PR, probably the squash of the prior PR caused some problems.

seolaoh and others added 5 commits December 8, 2025 16:46
* CIP-64: GASPRICE opcode must return effective gas price

* Add fixtures including CIP-64 tx with GASPRICE opcode

* Remove redundant fixture
The previous fix was not correct and only accidentally made the tests
pass. The GASPRICE opcodes fetches the effective gas price and passes in
the base fee in native tokens. We work around this by calculating the
correct effective gas price in advance and ignoring the passed in base
fee.
Revert the bad fix in fa7fd99. The
correct fix is in 76bad58.
* Better CIP-64 GASPRICE opcode test

The previous test case often passed even with wrong implementations
because it only noticed if a single `if` condition on the gas price
triggers. Instead, the actual gas price return value should be part of
the tested result to notice any deviations from the expected value.

This is achieved by emitting the result in an event/log so that it
becomes part of the receipt. Full bytecode explanation:

| Offset | Bytecode | Opcode       | Stack (after)   | Description                              |
|--------|----------|--------------|-----------------|------------------------------------------|
| 0x00   | `3a`     | `GASPRICE`   | `[gasPrice]`    | Pushes the tx's gas price onto the stack |
| 0x01   | `60 00`  | `PUSH1 0x00` | `[0, gasPrice]` | Pushes memory offset 0                   |
| 0x03   | `52`     | `MSTORE`     | `[]`            | Stores gasPrice at memory[0:32]          |
| 0x04   | `60 20`  | `PUSH1 0x20` | `[32]`          | Pushes 32 (0x20) - the size in bytes     |
| 0x06   | `60 00`  | `PUSH1 0x00` | `[0, 32]`       | Pushes memory offset 0                   |
| 0x08   | `a0`     | `LOG0`       | `[]`            | Emits anonymous log from memory[0:32]    |

As intended, the test behaves like this:
```
fail
cd86616 Fix CIP-64 gas price opcode (#106)
fail
9d02406 CIP-64: actual GASPRICE opcode fix (#107)
pass (the missing revert has no effect on the returned gas price)
7be19b3 Revert bad fix for GASPRICE opcode (#109)
pass
```
So if we had the test before doing the changes, we would have correctly
rejected the wrong fix.

* Fix typos

Co-authored-by: Paul Lange <palango@users.noreply.github.com>

---------

Co-authored-by: Paul Lange <palango@users.noreply.github.com>
@karlb karlb force-pushed the karlb/rc7-into-main branch from 4c69265 to 7beb54f Compare December 8, 2025 15:47
@karlb karlb merged commit 092bbff into main Dec 8, 2025
11 checks passed
@karlb karlb deleted the karlb/rc7-into-main branch December 8, 2025 16:03
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