Commit graph

270 commits

Author SHA1 Message Date
Arun Dhyani
01761849ba Merge remote-tracking branch 'sf/firehose-fh3.0' into fix/firehose 2024-01-17 09:31:17 +08:00
Matthieu Vachon
b5691516fb Removed dependency on github.com/streaminfast/firehose-ethereum generating the Protobuf struct in go-ethereum directly 2024-01-16 13:34:27 -05:00
Arun Dhyani
0ed6e530ac executedCode fixes 2024-01-16 16:10:04 +08:00
Matthieu Vachon
8545daf9f9 Fixed some small stuff while merging extended-tracer in 2024-01-15 14:03:07 -05:00
Matthieu Vachon
35c5b287f0 Merge branch 'extended-tracer' into firehose-fh3.0
# Conflicts:
#	go.sum
2024-01-15 13:25:36 -05:00
Matthieu Vachon
306a1fca64 Merge branch 'extended-tracer' into firehose-fh3.0
# Conflicts:
#	go.mod
#	go.sum
2024-01-15 12:40:19 -05:00
Sina Mahmoodi
c3319301cc add test case for frontier create out of storage 2024-01-15 13:37:39 +03:30
Sina Mahmoodi
580f02527e has call reverted to snapshot 2024-01-12 17:53:12 +03:30
Matthieu Vachon
2bb31d4ac1 Ported some missing legacy fixes to keep 1:1 with Firehose legacy tracer 2024-01-11 21:26:55 -05:00
Matthieu Vachon
6573cb21a5 Fixed KecakkPreimages to fit with legacy Firehose behavior that had a bug 2024-01-11 21:20:43 -05:00
Matthieu Vachon
4862eeba1d Updated to really use Firehose protocol 3.0 2024-01-10 21:28:08 -05:00
Matthieu Vachon
8677894b94 Removed special delegate value logic as it's not needed, the tracer does the correct thing 2024-01-10 20:52:27 -05:00
Matthieu Vachon
4c221a04d4 Fix for code storage out of gas error before homestead 2024-01-09 14:52:39 -05:00
Matthieu Vachon
3e44bf5895 Added more tracing to log computation 2024-01-08 11:58:46 -05:00
Matthieu Vachon
3181acac69 Added mistmatched transaction hash when log are not aligned 2023-12-12 21:26:52 -05:00
Sina Mahmoodi
a52c80dec5 Fix test case 2023-12-12 11:34:41 +03:30
Sina Mahmoodi
0d254e4983 fix test 2023-12-11 16:17:49 +03:30
Sina Mahmoodi
0484068df5 fix lint issues 2023-12-11 14:17:29 +03:30
Matthieu Vachon
a7f50134bd Account creations can happen before a transaction starts 2023-12-05 10:32:00 -05:00
Sina Mahmoodi
c5e407ba66 resolve merge conflicts 2023-12-05 18:13:41 +03:30
Sina Mahmoodi
f862531c25 rm chainConfig from OnGenesisBlock 2023-12-05 16:49:03 +03:30
Sina Mahmoodi
9e5c96fdff add chainConfig to block events 2023-12-05 16:31:16 +03:30
Martin Holst Swende
3dc071e036
eth/tracers/logger: make structlog/json-log stack hex again (#28628)
* common/hexutil: define hex wrappers for uint256.Int

* eth/tracers/logger: make structlog/json-log stack hex again

* common/hexutil: goimports
2023-12-05 09:37:48 +01:00
Delweng
5fb8ebc9ec
eth/tracers: tx-level state in debug_traceCall (#28460) 2023-12-01 16:38:52 +03:30
Matthieu Vachon
c36b44073f Ported back some fixes from Erigon extended native tracer 2023-11-30 10:53:31 -05:00
Matthieu Vachon
e51cbb0c95 Merge branch 'extended-tracer' into firehose-fh3.0
# Conflicts:
#	go.mod
#	go.sum
2023-11-29 13:50:08 -05:00
Sina Mahmoodi
bbc5db8405
eth/tracers/js: fix type inconsistencies (#28488)
This change fixes two type-inconsistencies in the JS tracer:

- In most places we return byte arrays as a `Uint8Array` to the tracer. However it seems we missed doing the conversion for `ctx` fields which are passed to the tracer during `result`. They are passed as simple arrays. I think Uint8Arrays are more suitable and we should change this inconsistency. Note: this will be a breaking-change. But I believe the effect is small. If we look at our tracers we see that these fields (`ctx.from`, `ctx.to`, etc.) are used in 2 ways. Passed to `toHex` which takes both array or buffer. Or the length was measured which is the same for both types.
- The `slice` taking in `int, int` params versus `memory.slice` taking `int64, int64` params. I suggest changing `slice` types to `int64`. This should have no effect almost in any case.
2023-11-28 15:00:35 +01:00
Sina Mahmoodi
8610f8f68c add hooks for beacon block root processing 2023-11-24 19:08:42 +03:30
Sina Mahmoodi
5bc3f62647 move makeTest to own file 2023-11-24 18:29:27 +03:30
Sina Mahmoodi
8a1f67c7c8 forgot prestate testcase 2023-11-24 18:21:12 +03:30
Sina Mahmoodi
9c00b1290b fix merge conflict 2023-11-24 16:09:47 +03:30
Sina Mahmoodi
cc6b68eb3b Fix prestate create issue, add test 2023-11-11 16:29:50 +03:00
Sina Mahmoodi
0d268b796c fix TxStart for traceCall 2023-11-08 19:28:42 +03:00
Sina Mahmoodi
dc1175e3e1
rm unnecessary line
Co-authored-by: Delweng <delweng@gmail.com>
2023-11-07 16:35:13 +03:00
Sina Mahmoodi
e4399a672a Use applyTransaction in tracer instead of applyMessage 2023-11-03 16:59:24 +01:00
Alvaro Sevilla
b1cec853be
eth/tracers: add position field for callTracer logs (#28389)
Currently, one can use the "withLogs" parameter to include logs in the
callTracer results, which allows the user to see at which trace level
was each log emitted.
This commit adds a position field to the logs which determine
the exact ordering of a call's logs and its subcalls. This would
be useful e.g. for explorers wishing to display the flow of execution.

Co-authored-by: jsvisa <delweng@gmail.com>
2023-11-03 10:28:27 +01:00
Sina Mahmoodi
6ee4fb8eac resolve merge conflicts 2023-09-13 16:17:36 +02:00
Matthieu Vachon
8af369e181 Merge branch 'extended-tracer' into feature/firehose-extended-tracer
# Conflicts:
#	core/state_transition.go
#	core/vm/contract.go
#	core/vm/evm.go
#	core/vm/instructions.go
#	core/vm/interpreter.go
#	core/vm/logger.go
2023-09-12 14:07:11 -04:00
Matthieu Vachon
ff3c15ff90
Full OnGasConsumed loop and added GasChangeReason (#16) 2023-09-12 17:19:15 +02:00
Matthieu Vachon
ca6c36384b Updated to latest firehose-ethereum/types 2023-09-11 12:31:32 -04:00
Matthieu Vachon
98dc951764 Fixed wrong gas change since new PR update around that 2023-09-11 10:54:30 -04:00
Matthieu Vachon
31f1a01ec5 Merge branch 'feature/gas-full-cycle-and-reason' into feature/firehose-extended-tracer
# Conflicts:
#	core/blockchain.go
#	core/state_transition.go
#	core/vm/contracts.go
#	core/vm/evm.go
#	core/vm/instructions.go
#	core/vm/interpreter.go
#	core/vm/logger.go
#	core/vm/operations_acl.go
#	eth/backend.go
#	eth/tracers/logger/access_list_tracer.go
#	eth/tracers/logger/logger.go
#	eth/tracers/logger/logger_json.go
2023-09-11 10:27:01 -04:00
Matthieu Vachon
daf3f63421 Merge remote-tracking branch 's1na/extended-tracer' into feature/gas-full-cycle-and-reason
# Conflicts:
#	eth/tracers/logger/access_list_tracer.go
#	eth/tracers/logger/logger.go
#	eth/tracers/logger/logger_json.go
2023-09-01 09:34:29 -04:00
Sina Mahmoodi
9c999c36ff Use noopTracer as base for loggers 2023-08-31 16:31:30 +02:00
Sina Mahmoodi
659043a1d9 pass tracer name via cli 2023-08-30 18:14:06 +02:00
Matthieu Vachon
5763314b0d Removed tracer support when doing genesis.Flush(...)
The genesis flush do set the logger, but we receive the genesis block allocs via `OnGenesisBlock` meaning it's not necessary to have the logger in the flush.
2023-08-29 16:12:59 -04:00
Matthieu Vachon
d0dbbaf6a5 Change OnGasConsumed(gas, cost uint64, reason) to OnGasChange(old, new uint64, reason)
This way, we avoid having a `cost` that is negative which does not make sense for a `uint64`. Having the `old, new` also yields correct value and the delta can then be negative and be holded in a `int64`.

# Conflicts:
#	core/vm/evm.go
2023-08-28 19:20:01 -04:00
Matthieu Vachon
01ccd7126e Change OnGasConsumed(gas, cost uint64, reason) to OnGasChange(old, new uint64, reason)
This way, we avoid having a `cost` that is negative which does not make sense for a `uint64`. Having the `old, new` also yields correct value and the delta can then be negative and be holded in a `int64`.
2023-08-28 15:30:10 -04:00
Matthieu Vachon
e0af166ffa Full OnGasConsumed loop and added GasChangeReason
With this change, the full gas loop of a transaction can be tracked going from initial balance (`gasLimit`) back down to 0.

I validated on my regression test suite that those conditions applied to all transactions I have:
- First `OnGasConsumed` is always going from 0 -> `trx.gasLimit`
- Last `OnGasConsumed` "new value" is always 0
- trx.gasLimit - last balance of last `OnGasConsumed` is equal to `trx.gasUsed`

The addition of `reason` make it possible for a logger to filter out unwanted signal, for example one could want to drop all OpCode related gas change and only cares about "transaction" level. The reason is also a good thing for visibility and for creating powerful debug tools for Ethereum transaction execution.

Also, I would like that we change the `OnGasConsumed` logic from `OnGasConsumed(actual, cost uint64, reason)` to `OnGasConsumed(old, new uint64, reason)`. With the new tracing I've done, we now have negative `cost` that needs to be passed around but the `cost` is `uint64` so it creates overflow. Everything works fine if you record the new/old value `gas-cost` as the final value goes back to a valid range. But it's weird for consumer that would log `cost` that it's `18127127187219...`. An alternative would be to accept a `int64` for the cost which is also valid, not full coverage theorically but I don't see why an operation would cost more than i64 max value. Maybe it make more sense than to have signature `OnGasConsumed(gas uint64, cost int64, reason)`, I'm fine with it also, I leave the decision to you.
2023-08-28 15:30:10 -04:00
Felix Lange
9b46986edc
all: use rlp.DecodeBytes instead of rlp.Decode where possible (#27994) 2023-08-24 11:47:42 +03:00