From 0e3a7d1ad92f672e9ba40ea8a7c71e7e994077d2 Mon Sep 17 00:00:00 2001 From: Delweng Date: Thu, 31 Oct 2024 17:29:07 +0800 Subject: [PATCH] prestateTracer: add disableCode,disableStorage (#30699) Add the documentation for `disableCode,disableStorage` as per #30648. --------- Signed-off-by: jsvisa --- .../evm-tracing/built-in-tracers.md | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/docs/developers/evm-tracing/built-in-tracers.md b/docs/developers/evm-tracing/built-in-tracers.md index 8e78d1bc8d..35b8ce8aec 100644 --- a/docs/developers/evm-tracing/built-in-tracers.md +++ b/docs/developers/evm-tracing/built-in-tracers.md @@ -216,12 +216,14 @@ The prestate tracer has two modes: `prestate` and `diff`. The `prestate` mode re #### prestateTracer config {#prestate-tracer-config} - `diffMode`: `BOOL`. Setting this to true will enable diff mode (default = false). +- `disableCode`: `BOOL`. Setting this to true will disable contract code capture (default = false). +- `disableStorage`: `BOOL`. Setting this to true will disable contract storage capture (default = false). In `diff` mode the result object will contain a `pre` and a `post` object: 1. The result only includes accounts that were modified. Accounts without changes will be omitted in this mode. 2. In `pre` you will find the state of an account before the tx started, and in `post` its state after tx execution finished. -3. `pre` can include fields that were not modified, if some other fields for the same account were modified. +3. `pre` can include fields that were not modified, if some other fields for the same account were modified. 4. `post` will contain only the modified fields. e.g. if `nonce` of an account hasn't changed it will be omitted from `post`. 5. Deletion (i.e. account selfdestruct, or storage clearing) will be signified by inclusion in `pre` and omission in `post`. 6. Insertion (i.e. account creation or new slots) will be signified by omission in `pre` and inclusion in `post`. @@ -270,7 +272,7 @@ Return: } ``` -Return (same call with `{diffMode: True}`): +Return (same call with `tracerConfig: {diffMode: True}`): ```terminal { @@ -288,6 +290,43 @@ Return (same call with `{diffMode: True}`): } ``` +Example of `disableStorage` and `disableCode` mode: + +```js +debug.traceCall( + { + from: '0x35a9f94af726f07b5162df7e828cc9dc8439e7d0', + to: '0xc8ba32cab1757528daf49033e3673fae77dcf05d', + data: '0xd1a2eab2000000000000000000000000000000000000000000000000000000000024aea100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000204895cd480cc8412691a880028a25aec86786f1ed2aa5562bc400000000000000c6403c14f35be1da6f433eadbb6e9178a47fbc7c6c1d568d2f2b876e929089c8d8db646304fd001a187dc8a600000000000000000000000000000000' + }, + 'latest', + { tracer: 'prestateTracer', tracerConfig: { disableStorage: true, disableCode: true } } +); +``` + +Return: + +```terminal +{ + 0x0000000000000000000000000000000000000002: { + balance: "0x0" + }, + 0x008b3b2f992c0e14edaa6e2c662bec549caa8df1: { + balance: "0x2638035a26d133809" + }, + 0x35a9f94af726f07b5162df7e828cc9dc8439e7d0: { + balance: "0x7a48734599f7284", + nonce: 1133 + }, + 0xc8ba32cab1757528daf49033e3673fae77dcf05d: { + balance: "0x0", + nonce: 1 + } +} +``` + +It will return the same result as the first example, but without the storage slots and code. + ### noopTracer {#noop-tracer} This tracer is noop. It returns an empty object and is only meant for testing the setup.