Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update EIP-3155: Move to Review #8796

Closed
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion EIPS/eip-3155.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
---

Check failure on line 1 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

preamble is missing header(s): `description`

error[preamble-req]: preamble is missing header(s): `description` --> EIPS/eip-3155.md | | = help: see https://ethereum.github.io/eipw/preamble-req/

Check failure on line 1 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

preamble is missing header(s): `description`

error[preamble-req]: preamble is missing header(s): `description` --> EIPS/eip-3155.md | | = help: see https://ethereum.github.io/eipw/preamble-req/
eip: 3155
title: EVM trace specification
author: Martin Holst Swende (@holiman), Marius van der Wijden (@MariusVanDerWijden)
discussions-to: https://ethereum-magicians.org/t/eip-3155-create-evm-trace-specification/5007
status: Stagnant
status: Review
type: Standards Track
category: Interface
created: 2020-12-07
---

Check failure on line 11 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

body is missing section(s): `Abstract`

error[markdown-req-section]: body is missing section(s): `Abstract` --> EIPS/eip-3155.md | | = help: must be at the second level (`## Heading`) = help: see https://ethereum.github.io/eipw/markdown-req-section/

Check failure on line 11 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

body is missing section(s): `Abstract`

error[markdown-req-section]: body is missing section(s): `Abstract` --> EIPS/eip-3155.md | | = help: must be at the second level (`## Heading`) = help: see https://ethereum.github.io/eipw/markdown-req-section/

## Simple Summary

Check failure on line 13 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Simple Summary"]

EIPS/eip-3155.md:13 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Simple Summary"]

Check failure on line 13 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

body has extra section(s)

error[markdown-order-section]: body has extra section(s) --> EIPS/eip-3155.md | 13 | ## Simple Summary | ::: EIPS/eip-3155.md | 154 | ## Implementation | = help: see https://ethereum.github.io/eipw/markdown-order-section/

Check failure on line 13 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Simple Summary"]

EIPS/eip-3155.md:13 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Simple Summary"]

Check failure on line 13 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

body has extra section(s)

error[markdown-order-section]: body has extra section(s) --> EIPS/eip-3155.md | 13 | ## Simple Summary | ::: EIPS/eip-3155.md | 154 | ## Implementation | = help: see https://ethereum.github.io/eipw/markdown-order-section/
Introduce a new JSON standard for EVM traces during execution of state tests.

## Motivation

Check failure on line 16 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Motivation"]

EIPS/eip-3155.md:16 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Motivation"]

Check failure on line 16 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Motivation"]

EIPS/eip-3155.md:16 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Motivation"]
The Ethereum Virtual Machine executes all smart contract code on ethereum.
In order to debug smart contracts and state tests better, a common format was introduced to log every execution step of the EVM.
This format was implemented by go-ethereum, parity, nethermind and Besu.
Since the common format was not well defined, the implementations differed slightly making it hard to develop adequate tooling which reduces the usefulness of tracing significantly.

This EIP has multiple objectives:
- Move the specification to a more visible place to encourage new clients to implement it

Check failure on line 23 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Lists should be surrounded by blank lines [Context: "- Move the specification to a ..."]

EIPS/eip-3155.md:23 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- Move the specification to a ..."]

Check failure on line 23 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Lists should be surrounded by blank lines [Context: "- Move the specification to a ..."]

EIPS/eip-3155.md:23 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- Move the specification to a ..."]
- Strictly define corner cases that were not addressed in the previous version
- Allow for updates to the specification in case new fields are introduced during execution
- Provide sample output
Expand All @@ -31,7 +31,7 @@
This EIP will enable users to create better differential fuzzing infrastructure to compare the EVM implementations of all major Ethereum clients against each other.
This could help to find bugs that are currently present in the client implementations.

## Specification

Check failure on line 34 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Specification"]

EIPS/eip-3155.md:34 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Specification"]

Check failure on line 34 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Specification"]

EIPS/eip-3155.md:34 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Specification"]
Clients should be able to execute simple transactions as well as code and return traces. In the following, we will call this client CUT (client under test) and use go-ethereums `evm` binary for code examples.

### Datatypes
Expand Down Expand Up @@ -75,11 +75,11 @@
| `returnStack` | Array of Hex-Numbers | Array of values, Stack of the called function |

*Example:*
```

Check failure on line 78 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Fenced code blocks should be surrounded by blank lines [Context: "```"]

EIPS/eip-3155.md:78 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"]

Check failure on line 78 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Fenced code blocks should be surrounded by blank lines [Context: "```"]

EIPS/eip-3155.md:78 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"]
{"pc":0,"op":96,"gas":"0x2540be400","gasCost":"0x3","memory":"0x","memSize":0,"stack":[],"depth":1,"error":null,"opName":"PUSH1"}
```

The `stack`, `memory` and `memSize` are the values _before_ execution of the op.

Check failure on line 82 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Emphasis style should be consistent [Expected: asterisk; Actual: underscore]

EIPS/eip-3155.md:82:52 MD049/emphasis-style Emphasis style should be consistent [Expected: asterisk; Actual: underscore]

Check failure on line 82 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Emphasis style should be consistent [Expected: asterisk; Actual: underscore]

EIPS/eip-3155.md:82:52 MD049/emphasis-style Emphasis style should be consistent [Expected: asterisk; Actual: underscore]
All array attributes (`stack`, `returnStack`, `memory`) MUST be initialized to empty arrays ("stack":[],) NOT to null.
If the CUT will not output values for `memory` or `storage` then the `memory` and `storage` fields are omitted.
This can happen either because the CUT does not support tracing these fields or it has been configured not to trace it.
Expand All @@ -89,7 +89,7 @@

The CUT MUST NOT output a line for the `STOP` operation if an error occurred:
*Example:*
```

Check failure on line 92 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Fenced code blocks should be surrounded by blank lines [Context: "```"]

EIPS/eip-3155.md:92 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"]

Check failure on line 92 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Fenced code blocks should be surrounded by blank lines [Context: "```"]

EIPS/eip-3155.md:92 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"]
{"pc":2,"op":0,"gas":"0x2540be3fd","gasCost":"0x0","memory":"0x","memSize":0,"stack":["0x40"],"depth":1,"error":null,"opName":"STOP"}
```

Expand All @@ -113,16 +113,16 @@
|---|---|---|
| `time` | Number | Time in nanoseconds needed to execute the transaction |
| `fork` | String | Name of the fork rules used for execution |
```

Check failure on line 116 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Fenced code blocks should be surrounded by blank lines [Context: "```"]

EIPS/eip-3155.md:116 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"]

Check failure on line 116 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Fenced code blocks should be surrounded by blank lines [Context: "```"]

EIPS/eip-3155.md:116 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"]
{"stateRoot":"0xd4c577737f5d20207d338c360c42d3af78de54812720e3339f7b27293ef195b7","output":"","gasUsed":"0x3","successful":"true","time":141485}
```

## Rationale

Check failure on line 120 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Rationale"]

EIPS/eip-3155.md:120 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Rationale"]

Check failure on line 120 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Rationale"]

EIPS/eip-3155.md:120 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Rationale"]
This EIP is largely based on the previous non-official documentation for EVM tracing.
It tries to cover as many corner cases as possible to enable true client compatibility.
The datatypes and if a field is optional is chosen to be as compatible with current implementations as possible.

## Backwards Compatibility

Check failure on line 125 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Backwards Compatibility"]

EIPS/eip-3155.md:125 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Backwards Compatibility"]

Check failure on line 125 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Backwards Compatibility"]

EIPS/eip-3155.md:125 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Backwards Compatibility"]
This EIP is fully backward compatible with ethereum as it only introduces a better tracing infrastructure that is optional for clients to implement.

### Clients
Expand Down Expand Up @@ -152,10 +152,10 @@


## Implementation
Implementation in [go-ethereum](https://github.com/ethereum/go-ethereum/tree/master/cmd/evm)

Check failure on line 155 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

error[markdown-rel-links]: non-relative link or image --> EIPS/eip-3155.md | 155 | Implementation in [go-ethereum](https://github.com/ethereum/go-ethereum/tree/master/cmd/evm) | = help: see https://ethereum.github.io/eipw/markdown-rel-links/

Check failure on line 155 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

error[markdown-rel-links]: non-relative link or image --> EIPS/eip-3155.md | 155 | Implementation in [go-ethereum](https://github.com/ethereum/go-ethereum/tree/master/cmd/evm) | = help: see https://ethereum.github.io/eipw/markdown-rel-links/
Implementation in [OpenEthereum](https://github.com/openethereum/openethereum/tree/main/bin/evmbin)

Check failure on line 156 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

error[markdown-rel-links]: non-relative link or image --> EIPS/eip-3155.md | 156 | Implementation in [OpenEthereum](https://github.com/openethereum/openethereum/tree/main/bin/evmbin) |

Check failure on line 156 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

error[markdown-rel-links]: non-relative link or image --> EIPS/eip-3155.md | 156 | Implementation in [OpenEthereum](https://github.com/openethereum/openethereum/tree/main/bin/evmbin) |
Implementation in [Besu](https://github.com/hyperledger/besu/tree/master/ethereum/evmtool)

Check failure on line 157 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

error[markdown-rel-links]: non-relative link or image --> EIPS/eip-3155.md | 157 | Implementation in [Besu](https://github.com/hyperledger/besu/tree/master/ethereum/evmtool) |

Check failure on line 157 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

error[markdown-rel-links]: non-relative link or image --> EIPS/eip-3155.md | 157 | Implementation in [Besu](https://github.com/hyperledger/besu/tree/master/ethereum/evmtool) |
Implementation in [Nethermind](https://github.com/NethermindEth/nethermind/tree/master/src/Nethermind/Nethermind.State.Test.Runner)

Check failure on line 158 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

error[markdown-rel-links]: non-relative link or image --> EIPS/eip-3155.md | 158 | Implementation in [Nethermind](https://github.com/NethermindEth/nethermind/tree/master/src/Nethermind/Nethermind.State.Test.Runner) |

Check failure on line 158 in EIPS/eip-3155.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

error[markdown-rel-links]: non-relative link or image --> EIPS/eip-3155.md | 158 | Implementation in [Nethermind](https://github.com/NethermindEth/nethermind/tree/master/src/Nethermind/Nethermind.State.Test.Runner) |


## Security Considerations
Expand Down
Loading