glamsterdam-compat-lab 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/ROADMAP.md +1 -1
- package/datasets/public-seed/README.md +4 -0
- package/datasets/public-seed/comparisons/bytecode-ens-registry-mainnet-runtime--default-vs-research.json +136 -0
- package/datasets/public-seed/comparisons/bytecode-multicall3-mainnet-runtime--default-vs-research.json +139 -0
- package/datasets/public-seed/comparisons/bytecode-storage-heavy--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/bytecode-uniswap-v2-factory-mainnet-runtime--default-vs-research.json +168 -0
- package/datasets/public-seed/comparisons/bytecode-usdc-proxy-mainnet-runtime--default-vs-research.json +154 -0
- package/datasets/public-seed/comparisons/bytecode-weth9-mainnet-runtime--default-vs-research.json +136 -0
- package/datasets/public-seed/comparisons/traces-besu-debug-structlogs--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/traces-besu-mainnet-tracoor-debug-structlogs--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/traces-call-tracer-tree--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/traces-drpc-call-tracer-real--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/traces-erigon-action-trace--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/traces-foundry-json-trace--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/traces-geth-json-rpc-structlogs--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/traces-hardhat-debug-trace--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/traces-nethermind-debug-structlogs--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/traces-nethermind-mainnet-tracoor-debug-structlogs--default-vs-research.json +3 -3
- package/datasets/public-seed/comparisons/traces-storage-heavy-trace--default-vs-research.json +3 -3
- package/datasets/public-seed/findings.csv +139 -0
- package/datasets/public-seed/manifest.json +207 -2
- package/datasets/public-seed/reports/bytecode-ens-registry-mainnet-runtime--default.json +126 -0
- package/datasets/public-seed/reports/bytecode-ens-registry-mainnet-runtime--research.json +126 -0
- package/datasets/public-seed/reports/bytecode-multicall3-mainnet-runtime--default.json +97 -0
- package/datasets/public-seed/reports/bytecode-multicall3-mainnet-runtime--research.json +124 -0
- package/datasets/public-seed/reports/bytecode-storage-heavy--default.json +1 -1
- package/datasets/public-seed/reports/bytecode-storage-heavy--research.json +1 -1
- package/datasets/public-seed/reports/bytecode-uniswap-v2-factory-mainnet-runtime--default.json +172 -0
- package/datasets/public-seed/reports/bytecode-uniswap-v2-factory-mainnet-runtime--research.json +172 -0
- package/datasets/public-seed/reports/bytecode-usdc-proxy-mainnet-runtime--default.json +127 -0
- package/datasets/public-seed/reports/bytecode-usdc-proxy-mainnet-runtime--research.json +150 -0
- package/datasets/public-seed/reports/bytecode-weth9-mainnet-runtime--default.json +127 -0
- package/datasets/public-seed/reports/bytecode-weth9-mainnet-runtime--research.json +127 -0
- package/datasets/public-seed/reports/indexers-balance-diff-indexer--default.json +1 -1
- package/datasets/public-seed/reports/indexers-explorer-replay-indexer--default.json +1 -1
- package/datasets/public-seed/reports/indexers-subgraph--default.json +1 -1
- package/datasets/public-seed/reports/traces-besu-debug-structlogs--default.json +1 -1
- package/datasets/public-seed/reports/traces-besu-debug-structlogs--research.json +1 -1
- package/datasets/public-seed/reports/traces-besu-mainnet-tracoor-debug-structlogs--default.json +1 -1
- package/datasets/public-seed/reports/traces-besu-mainnet-tracoor-debug-structlogs--research.json +1 -1
- package/datasets/public-seed/reports/traces-call-tracer-tree--default.json +1 -1
- package/datasets/public-seed/reports/traces-call-tracer-tree--research.json +1 -1
- package/datasets/public-seed/reports/traces-drpc-call-tracer-real--default.json +1 -1
- package/datasets/public-seed/reports/traces-drpc-call-tracer-real--research.json +1 -1
- package/datasets/public-seed/reports/traces-erigon-action-trace--default.json +1 -1
- package/datasets/public-seed/reports/traces-erigon-action-trace--research.json +1 -1
- package/datasets/public-seed/reports/traces-foundry-json-trace--default.json +1 -1
- package/datasets/public-seed/reports/traces-foundry-json-trace--research.json +1 -1
- package/datasets/public-seed/reports/traces-geth-json-rpc-structlogs--default.json +1 -1
- package/datasets/public-seed/reports/traces-geth-json-rpc-structlogs--research.json +1 -1
- package/datasets/public-seed/reports/traces-hardhat-debug-trace--default.json +1 -1
- package/datasets/public-seed/reports/traces-hardhat-debug-trace--research.json +1 -1
- package/datasets/public-seed/reports/traces-nethermind-debug-structlogs--default.json +1 -1
- package/datasets/public-seed/reports/traces-nethermind-debug-structlogs--research.json +1 -1
- package/datasets/public-seed/reports/traces-nethermind-mainnet-tracoor-debug-structlogs--default.json +1 -1
- package/datasets/public-seed/reports/traces-nethermind-mainnet-tracoor-debug-structlogs--research.json +1 -1
- package/datasets/public-seed/reports/traces-storage-heavy-trace--default.json +1 -1
- package/datasets/public-seed/reports/traces-storage-heavy-trace--research.json +1 -1
- package/datasets/public-seed/reports/validator-operator-config--default.json +1 -1
- package/datasets/public-seed/reports/validator-operator-config-builder-gap--default.json +1 -1
- package/datasets/public-seed/reports/validator-operator-config-complete--default.json +1 -1
- package/datasets/public-seed/reports.csv +41 -0
- package/datasets/public-seed/summary.csv +42 -0
- package/datasets/public-seed/summary.json +176 -0
- package/dist/fixtures/provenance.d.ts +4 -0
- package/dist/fixtures/provenance.js +2 -0
- package/dist/fixtures/provenance.js.map +1 -1
- package/dist/reports/reportTypes.d.ts +1 -1
- package/dist/reports/reportTypes.js +1 -1
- package/docs/fixtures.md +2 -1
- package/docs/release.md +2 -2
- package/examples/baseline-comparison.md +1 -1
- package/fixtures/bytecode/ens-registry-mainnet-runtime.hex +1 -0
- package/fixtures/bytecode/multicall3-mainnet-runtime.hex +1 -0
- package/fixtures/bytecode/uniswap-v2-factory-mainnet-runtime.hex +1 -0
- package/fixtures/bytecode/usdc-proxy-mainnet-runtime.hex +1 -0
- package/fixtures/bytecode/weth9-mainnet-runtime.hex +1 -0
- package/fixtures/provenance.json +230 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -36,14 +36,14 @@ pnpm glamsterdam scan-bytecode fixtures/bytecode/storage-heavy.hex
|
|
|
36
36
|
Install the published CLI from npm:
|
|
37
37
|
|
|
38
38
|
```sh
|
|
39
|
-
npm install -g glamsterdam-compat-lab@0.3.
|
|
39
|
+
npm install -g glamsterdam-compat-lab@0.3.2
|
|
40
40
|
glamsterdam eips
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
The v0.3.
|
|
43
|
+
The v0.3.2 GitHub release tarball remains available as a reproducible release artifact:
|
|
44
44
|
|
|
45
45
|
```sh
|
|
46
|
-
npm install -g https://github.com/CruzMolina/glamsterdam-compat-lab/releases/download/v0.3.
|
|
46
|
+
npm install -g https://github.com/CruzMolina/glamsterdam-compat-lab/releases/download/v0.3.2/glamsterdam-compat-lab-0.3.2.tgz
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
See [docs/release.md](docs/release.md) for maintainer release checks and npm publishing notes.
|
|
@@ -72,7 +72,7 @@ Each scanner accepts `--registry <path>` and `--thresholds <path>` so EIP metada
|
|
|
72
72
|
|
|
73
73
|
## Public dataset seed
|
|
74
74
|
|
|
75
|
-
Fixture provenance lives in [fixtures/provenance.json](fixtures/provenance.json). The first deterministic dataset seed lives in [datasets/public-seed](datasets/public-seed) and includes generated JSON reports
|
|
75
|
+
Fixture provenance lives in [fixtures/provenance.json](fixtures/provenance.json). The first deterministic dataset seed lives in [datasets/public-seed](datasets/public-seed) and includes generated JSON reports, default-vs-research threshold comparisons for bytecode and trace fixtures, a `summary.json` file with aggregate counts, and CSV exports (`reports.csv`, `findings.csv`, `summary.csv`) for spreadsheet and warehouse import.
|
|
76
76
|
|
|
77
77
|
Regenerate it with:
|
|
78
78
|
|
|
@@ -131,7 +131,7 @@ Each scanner returns a `CompatibilityReport`:
|
|
|
131
131
|
|
|
132
132
|
```json
|
|
133
133
|
{
|
|
134
|
-
"toolVersion": "0.3.
|
|
134
|
+
"toolVersion": "0.3.2",
|
|
135
135
|
"fork": "glamsterdam",
|
|
136
136
|
"target": {
|
|
137
137
|
"kind": "bytecode",
|
|
@@ -219,7 +219,7 @@ Release publishing notes live in [docs/release.md](docs/release.md).
|
|
|
219
219
|
|
|
220
220
|
## Roadmap
|
|
221
221
|
|
|
222
|
-
See [ROADMAP.md](ROADMAP.md) for planned phases. Phase 0 is released as `v0.1.0`; `v0.2.0` starts Phase 1 with RPC transaction trace ingestion and broader trace fixture coverage; `v0.3.0` adds baseline comparison reports; `v0.3.1` expands public-safe fixture and dataset coverage.
|
|
222
|
+
See [ROADMAP.md](ROADMAP.md) for planned phases. Phase 0 is released as `v0.1.0`; `v0.2.0` starts Phase 1 with RPC transaction trace ingestion and broader trace fixture coverage; `v0.3.0` adds baseline comparison reports; `v0.3.1` expands public-safe fixture and dataset coverage; `v0.3.2` adds packaged CSV dataset exports.
|
|
223
223
|
|
|
224
224
|
## Disclaimer
|
|
225
225
|
|
package/ROADMAP.md
CHANGED
|
@@ -52,7 +52,7 @@ Goal: compare compatibility reports across profiles and, later, across current-c
|
|
|
52
52
|
|
|
53
53
|
## Phase 2: Public Dataset
|
|
54
54
|
|
|
55
|
-
Status: seeded after `v0.3.0`; expanded with public-safe trace, indexer, and validator fixture coverage in `v0.3.1`.
|
|
55
|
+
Status: seeded after `v0.3.0`; expanded with public-safe trace, indexer, and validator fixture coverage in `v0.3.1`; packaged CSV exports added in `v0.3.2`.
|
|
56
56
|
|
|
57
57
|
Goal: publish reproducible compatibility research.
|
|
58
58
|
|
|
@@ -7,6 +7,10 @@ The seed is intentionally small. It is meant to prove the dataset workflow, not
|
|
|
7
7
|
## Contents
|
|
8
8
|
|
|
9
9
|
- `manifest.json`: index of generated reports, comparisons, source fixtures, threshold profiles, and limitations.
|
|
10
|
+
- `summary.json`: aggregate counts by fixture kind, source type, report risk, threshold profile, and finding ID.
|
|
11
|
+
- `reports.csv`: flat index of generated reports for spreadsheet and warehouse import.
|
|
12
|
+
- `findings.csv`: one row per generated report finding, including severity, confidence, domains, and related EIPs.
|
|
13
|
+
- `summary.csv`: flattened aggregate totals and counts from `summary.json`.
|
|
10
14
|
- `reports/`: JSON compatibility reports generated from source fixtures.
|
|
11
15
|
- `comparisons/`: JSON comparison reports for default-vs-research threshold profiles on bytecode and trace fixtures.
|
|
12
16
|
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
{
|
|
2
|
+
"toolVersion": "0.3.2",
|
|
3
|
+
"fork": "glamsterdam",
|
|
4
|
+
"comparison": {
|
|
5
|
+
"baseline": {
|
|
6
|
+
"toolVersion": "0.3.2",
|
|
7
|
+
"fork": "glamsterdam",
|
|
8
|
+
"target": {
|
|
9
|
+
"kind": "bytecode",
|
|
10
|
+
"name": "fixtures/bytecode/ens-registry-mainnet-runtime.hex"
|
|
11
|
+
},
|
|
12
|
+
"summary": {
|
|
13
|
+
"risk": "medium",
|
|
14
|
+
"findingCount": 4,
|
|
15
|
+
"highCount": 0,
|
|
16
|
+
"mediumCount": 2,
|
|
17
|
+
"lowCount": 1,
|
|
18
|
+
"unknownCount": 1
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"candidate": {
|
|
22
|
+
"toolVersion": "0.3.2",
|
|
23
|
+
"fork": "glamsterdam",
|
|
24
|
+
"target": {
|
|
25
|
+
"kind": "bytecode",
|
|
26
|
+
"name": "fixtures/bytecode/ens-registry-mainnet-runtime.hex"
|
|
27
|
+
},
|
|
28
|
+
"summary": {
|
|
29
|
+
"risk": "medium",
|
|
30
|
+
"findingCount": 4,
|
|
31
|
+
"highCount": 0,
|
|
32
|
+
"mediumCount": 2,
|
|
33
|
+
"lowCount": 1,
|
|
34
|
+
"unknownCount": 1
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"summary": {
|
|
39
|
+
"riskChange": {
|
|
40
|
+
"from": "medium",
|
|
41
|
+
"to": "medium",
|
|
42
|
+
"direction": "unchanged"
|
|
43
|
+
},
|
|
44
|
+
"findingCount": {
|
|
45
|
+
"baseline": 4,
|
|
46
|
+
"candidate": 4,
|
|
47
|
+
"delta": 0
|
|
48
|
+
},
|
|
49
|
+
"addedCount": 0,
|
|
50
|
+
"removedCount": 0,
|
|
51
|
+
"changedCount": 0,
|
|
52
|
+
"unchangedCount": 4,
|
|
53
|
+
"severityIncreasedCount": 0,
|
|
54
|
+
"severityDecreasedCount": 0,
|
|
55
|
+
"severityChangedCount": 0,
|
|
56
|
+
"confidenceIncreasedCount": 0,
|
|
57
|
+
"confidenceDecreasedCount": 0,
|
|
58
|
+
"confidenceChangedCount": 0
|
|
59
|
+
},
|
|
60
|
+
"changes": {
|
|
61
|
+
"added": [],
|
|
62
|
+
"removed": [],
|
|
63
|
+
"changed": [],
|
|
64
|
+
"unchanged": [
|
|
65
|
+
{
|
|
66
|
+
"key": "bytecode.log-opcodes-present",
|
|
67
|
+
"id": "bytecode.log-opcodes-present",
|
|
68
|
+
"title": "Log opcodes are present",
|
|
69
|
+
"severity": "low",
|
|
70
|
+
"confidence": "medium",
|
|
71
|
+
"domain": [
|
|
72
|
+
"contracts",
|
|
73
|
+
"indexer",
|
|
74
|
+
"monitoring"
|
|
75
|
+
],
|
|
76
|
+
"relatedEips": [
|
|
77
|
+
"EIP-7708"
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"key": "bytecode.manual-review-required",
|
|
82
|
+
"id": "bytecode.manual-review-required",
|
|
83
|
+
"title": "Manual review is still required for runtime behavior",
|
|
84
|
+
"severity": "unknown",
|
|
85
|
+
"confidence": "low",
|
|
86
|
+
"domain": [
|
|
87
|
+
"contracts",
|
|
88
|
+
"execution"
|
|
89
|
+
],
|
|
90
|
+
"relatedEips": [
|
|
91
|
+
"GAS-REPRICING"
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"key": "bytecode.state-account-opcode-exposure",
|
|
96
|
+
"id": "bytecode.state-account-opcode-exposure",
|
|
97
|
+
"title": "State and account access opcodes are prominent in bytecode",
|
|
98
|
+
"severity": "medium",
|
|
99
|
+
"confidence": "medium",
|
|
100
|
+
"domain": [
|
|
101
|
+
"contracts",
|
|
102
|
+
"execution"
|
|
103
|
+
],
|
|
104
|
+
"relatedEips": [
|
|
105
|
+
"GAS-REPRICING",
|
|
106
|
+
"EIP-7904",
|
|
107
|
+
"EIP-8038",
|
|
108
|
+
"EIP-7976"
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"key": "bytecode.storage-heavy-pattern",
|
|
113
|
+
"id": "bytecode.storage-heavy-pattern",
|
|
114
|
+
"title": "Storage-related opcodes appear frequently",
|
|
115
|
+
"severity": "medium",
|
|
116
|
+
"confidence": "medium",
|
|
117
|
+
"domain": [
|
|
118
|
+
"contracts",
|
|
119
|
+
"execution"
|
|
120
|
+
],
|
|
121
|
+
"relatedEips": [
|
|
122
|
+
"GAS-REPRICING",
|
|
123
|
+
"EIP-8038"
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
"assumptions": [
|
|
129
|
+
"Reports were compared by finding id. Repeated finding ids are disambiguated with deterministic occurrence suffixes.",
|
|
130
|
+
"Severity and confidence changes are structural report changes, not protocol gas estimates."
|
|
131
|
+
],
|
|
132
|
+
"limitations": [
|
|
133
|
+
"The comparison does not infer exact gas deltas, final Glamsterdam parameters, or current-vs-Glamsterdam client behavior unless those values are already present in the input reports.",
|
|
134
|
+
"Added and removed findings can reflect threshold profile differences, fixture coverage changes, registry updates, or detector changes; review the source reports before treating a diff as a protocol risk change."
|
|
135
|
+
]
|
|
136
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
{
|
|
2
|
+
"toolVersion": "0.3.2",
|
|
3
|
+
"fork": "glamsterdam",
|
|
4
|
+
"comparison": {
|
|
5
|
+
"baseline": {
|
|
6
|
+
"toolVersion": "0.3.2",
|
|
7
|
+
"fork": "glamsterdam",
|
|
8
|
+
"target": {
|
|
9
|
+
"kind": "bytecode",
|
|
10
|
+
"name": "fixtures/bytecode/multicall3-mainnet-runtime.hex"
|
|
11
|
+
},
|
|
12
|
+
"summary": {
|
|
13
|
+
"risk": "low",
|
|
14
|
+
"findingCount": 3,
|
|
15
|
+
"highCount": 0,
|
|
16
|
+
"mediumCount": 0,
|
|
17
|
+
"lowCount": 2,
|
|
18
|
+
"unknownCount": 1
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"candidate": {
|
|
22
|
+
"toolVersion": "0.3.2",
|
|
23
|
+
"fork": "glamsterdam",
|
|
24
|
+
"target": {
|
|
25
|
+
"kind": "bytecode",
|
|
26
|
+
"name": "fixtures/bytecode/multicall3-mainnet-runtime.hex"
|
|
27
|
+
},
|
|
28
|
+
"summary": {
|
|
29
|
+
"risk": "low",
|
|
30
|
+
"findingCount": 4,
|
|
31
|
+
"highCount": 0,
|
|
32
|
+
"mediumCount": 0,
|
|
33
|
+
"lowCount": 3,
|
|
34
|
+
"unknownCount": 1
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"summary": {
|
|
39
|
+
"riskChange": {
|
|
40
|
+
"from": "low",
|
|
41
|
+
"to": "low",
|
|
42
|
+
"direction": "unchanged"
|
|
43
|
+
},
|
|
44
|
+
"findingCount": {
|
|
45
|
+
"baseline": 3,
|
|
46
|
+
"candidate": 4,
|
|
47
|
+
"delta": 1
|
|
48
|
+
},
|
|
49
|
+
"addedCount": 1,
|
|
50
|
+
"removedCount": 0,
|
|
51
|
+
"changedCount": 0,
|
|
52
|
+
"unchangedCount": 3,
|
|
53
|
+
"severityIncreasedCount": 0,
|
|
54
|
+
"severityDecreasedCount": 0,
|
|
55
|
+
"severityChangedCount": 0,
|
|
56
|
+
"confidenceIncreasedCount": 0,
|
|
57
|
+
"confidenceDecreasedCount": 0,
|
|
58
|
+
"confidenceChangedCount": 0
|
|
59
|
+
},
|
|
60
|
+
"changes": {
|
|
61
|
+
"added": [
|
|
62
|
+
{
|
|
63
|
+
"key": "bytecode.state-account-opcode-presence",
|
|
64
|
+
"id": "bytecode.state-account-opcode-presence",
|
|
65
|
+
"title": "State and account access opcodes are present",
|
|
66
|
+
"severity": "low",
|
|
67
|
+
"confidence": "medium",
|
|
68
|
+
"domain": [
|
|
69
|
+
"contracts",
|
|
70
|
+
"execution"
|
|
71
|
+
],
|
|
72
|
+
"relatedEips": [
|
|
73
|
+
"GAS-REPRICING",
|
|
74
|
+
"EIP-7904",
|
|
75
|
+
"EIP-8038",
|
|
76
|
+
"EIP-7976"
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"removed": [],
|
|
81
|
+
"changed": [],
|
|
82
|
+
"unchanged": [
|
|
83
|
+
{
|
|
84
|
+
"key": "bytecode.calldata-copy-exposure",
|
|
85
|
+
"id": "bytecode.calldata-copy-exposure",
|
|
86
|
+
"title": "Calldata copy opcode is present",
|
|
87
|
+
"severity": "low",
|
|
88
|
+
"confidence": "medium",
|
|
89
|
+
"domain": [
|
|
90
|
+
"contracts",
|
|
91
|
+
"execution"
|
|
92
|
+
],
|
|
93
|
+
"relatedEips": [
|
|
94
|
+
"GAS-REPRICING",
|
|
95
|
+
"EIP-7976",
|
|
96
|
+
"EIP-7904",
|
|
97
|
+
"EIP-8038"
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"key": "bytecode.log-opcodes-present",
|
|
102
|
+
"id": "bytecode.log-opcodes-present",
|
|
103
|
+
"title": "Log opcodes are present",
|
|
104
|
+
"severity": "low",
|
|
105
|
+
"confidence": "medium",
|
|
106
|
+
"domain": [
|
|
107
|
+
"contracts",
|
|
108
|
+
"indexer",
|
|
109
|
+
"monitoring"
|
|
110
|
+
],
|
|
111
|
+
"relatedEips": [
|
|
112
|
+
"EIP-7708"
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"key": "bytecode.manual-review-required",
|
|
117
|
+
"id": "bytecode.manual-review-required",
|
|
118
|
+
"title": "Manual review is still required for runtime behavior",
|
|
119
|
+
"severity": "unknown",
|
|
120
|
+
"confidence": "low",
|
|
121
|
+
"domain": [
|
|
122
|
+
"contracts",
|
|
123
|
+
"execution"
|
|
124
|
+
],
|
|
125
|
+
"relatedEips": [
|
|
126
|
+
"GAS-REPRICING"
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
"assumptions": [
|
|
132
|
+
"Reports were compared by finding id. Repeated finding ids are disambiguated with deterministic occurrence suffixes.",
|
|
133
|
+
"Severity and confidence changes are structural report changes, not protocol gas estimates."
|
|
134
|
+
],
|
|
135
|
+
"limitations": [
|
|
136
|
+
"The comparison does not infer exact gas deltas, final Glamsterdam parameters, or current-vs-Glamsterdam client behavior unless those values are already present in the input reports.",
|
|
137
|
+
"Added and removed findings can reflect threshold profile differences, fixture coverage changes, registry updates, or detector changes; review the source reports before treating a diff as a protocol risk change."
|
|
138
|
+
]
|
|
139
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"toolVersion": "0.3.
|
|
2
|
+
"toolVersion": "0.3.2",
|
|
3
3
|
"fork": "glamsterdam",
|
|
4
4
|
"comparison": {
|
|
5
5
|
"baseline": {
|
|
6
|
-
"toolVersion": "0.3.
|
|
6
|
+
"toolVersion": "0.3.2",
|
|
7
7
|
"fork": "glamsterdam",
|
|
8
8
|
"target": {
|
|
9
9
|
"kind": "bytecode",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"candidate": {
|
|
22
|
-
"toolVersion": "0.3.
|
|
22
|
+
"toolVersion": "0.3.2",
|
|
23
23
|
"fork": "glamsterdam",
|
|
24
24
|
"target": {
|
|
25
25
|
"kind": "bytecode",
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
{
|
|
2
|
+
"toolVersion": "0.3.2",
|
|
3
|
+
"fork": "glamsterdam",
|
|
4
|
+
"comparison": {
|
|
5
|
+
"baseline": {
|
|
6
|
+
"toolVersion": "0.3.2",
|
|
7
|
+
"fork": "glamsterdam",
|
|
8
|
+
"target": {
|
|
9
|
+
"kind": "bytecode",
|
|
10
|
+
"name": "fixtures/bytecode/uniswap-v2-factory-mainnet-runtime.hex"
|
|
11
|
+
},
|
|
12
|
+
"summary": {
|
|
13
|
+
"risk": "medium",
|
|
14
|
+
"findingCount": 6,
|
|
15
|
+
"highCount": 0,
|
|
16
|
+
"mediumCount": 3,
|
|
17
|
+
"lowCount": 2,
|
|
18
|
+
"unknownCount": 1
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"candidate": {
|
|
22
|
+
"toolVersion": "0.3.2",
|
|
23
|
+
"fork": "glamsterdam",
|
|
24
|
+
"target": {
|
|
25
|
+
"kind": "bytecode",
|
|
26
|
+
"name": "fixtures/bytecode/uniswap-v2-factory-mainnet-runtime.hex"
|
|
27
|
+
},
|
|
28
|
+
"summary": {
|
|
29
|
+
"risk": "medium",
|
|
30
|
+
"findingCount": 6,
|
|
31
|
+
"highCount": 0,
|
|
32
|
+
"mediumCount": 3,
|
|
33
|
+
"lowCount": 2,
|
|
34
|
+
"unknownCount": 1
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"summary": {
|
|
39
|
+
"riskChange": {
|
|
40
|
+
"from": "medium",
|
|
41
|
+
"to": "medium",
|
|
42
|
+
"direction": "unchanged"
|
|
43
|
+
},
|
|
44
|
+
"findingCount": {
|
|
45
|
+
"baseline": 6,
|
|
46
|
+
"candidate": 6,
|
|
47
|
+
"delta": 0
|
|
48
|
+
},
|
|
49
|
+
"addedCount": 0,
|
|
50
|
+
"removedCount": 0,
|
|
51
|
+
"changedCount": 0,
|
|
52
|
+
"unchangedCount": 6,
|
|
53
|
+
"severityIncreasedCount": 0,
|
|
54
|
+
"severityDecreasedCount": 0,
|
|
55
|
+
"severityChangedCount": 0,
|
|
56
|
+
"confidenceIncreasedCount": 0,
|
|
57
|
+
"confidenceDecreasedCount": 0,
|
|
58
|
+
"confidenceChangedCount": 0
|
|
59
|
+
},
|
|
60
|
+
"changes": {
|
|
61
|
+
"added": [],
|
|
62
|
+
"removed": [],
|
|
63
|
+
"changed": [],
|
|
64
|
+
"unchanged": [
|
|
65
|
+
{
|
|
66
|
+
"key": "bytecode.calldata-copy-exposure",
|
|
67
|
+
"id": "bytecode.calldata-copy-exposure",
|
|
68
|
+
"title": "Calldata copy opcode is present",
|
|
69
|
+
"severity": "low",
|
|
70
|
+
"confidence": "medium",
|
|
71
|
+
"domain": [
|
|
72
|
+
"contracts",
|
|
73
|
+
"execution"
|
|
74
|
+
],
|
|
75
|
+
"relatedEips": [
|
|
76
|
+
"GAS-REPRICING",
|
|
77
|
+
"EIP-7976",
|
|
78
|
+
"EIP-7904",
|
|
79
|
+
"EIP-8038"
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"key": "bytecode.contract-creation-opcodes",
|
|
84
|
+
"id": "bytecode.contract-creation-opcodes",
|
|
85
|
+
"title": "Contract creation opcodes are present",
|
|
86
|
+
"severity": "medium",
|
|
87
|
+
"confidence": "high",
|
|
88
|
+
"domain": [
|
|
89
|
+
"contracts",
|
|
90
|
+
"execution"
|
|
91
|
+
],
|
|
92
|
+
"relatedEips": [
|
|
93
|
+
"GAS-REPRICING",
|
|
94
|
+
"EIP-8037"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"key": "bytecode.log-opcodes-present",
|
|
99
|
+
"id": "bytecode.log-opcodes-present",
|
|
100
|
+
"title": "Log opcodes are present",
|
|
101
|
+
"severity": "low",
|
|
102
|
+
"confidence": "medium",
|
|
103
|
+
"domain": [
|
|
104
|
+
"contracts",
|
|
105
|
+
"indexer",
|
|
106
|
+
"monitoring"
|
|
107
|
+
],
|
|
108
|
+
"relatedEips": [
|
|
109
|
+
"EIP-7708"
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"key": "bytecode.manual-review-required",
|
|
114
|
+
"id": "bytecode.manual-review-required",
|
|
115
|
+
"title": "Manual review is still required for runtime behavior",
|
|
116
|
+
"severity": "unknown",
|
|
117
|
+
"confidence": "low",
|
|
118
|
+
"domain": [
|
|
119
|
+
"contracts",
|
|
120
|
+
"execution"
|
|
121
|
+
],
|
|
122
|
+
"relatedEips": [
|
|
123
|
+
"GAS-REPRICING"
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"key": "bytecode.state-account-opcode-exposure",
|
|
128
|
+
"id": "bytecode.state-account-opcode-exposure",
|
|
129
|
+
"title": "State and account access opcodes are prominent in bytecode",
|
|
130
|
+
"severity": "medium",
|
|
131
|
+
"confidence": "medium",
|
|
132
|
+
"domain": [
|
|
133
|
+
"contracts",
|
|
134
|
+
"execution"
|
|
135
|
+
],
|
|
136
|
+
"relatedEips": [
|
|
137
|
+
"GAS-REPRICING",
|
|
138
|
+
"EIP-7904",
|
|
139
|
+
"EIP-8038",
|
|
140
|
+
"EIP-7976"
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"key": "bytecode.storage-heavy-pattern",
|
|
145
|
+
"id": "bytecode.storage-heavy-pattern",
|
|
146
|
+
"title": "Storage-related opcodes appear frequently",
|
|
147
|
+
"severity": "medium",
|
|
148
|
+
"confidence": "medium",
|
|
149
|
+
"domain": [
|
|
150
|
+
"contracts",
|
|
151
|
+
"execution"
|
|
152
|
+
],
|
|
153
|
+
"relatedEips": [
|
|
154
|
+
"GAS-REPRICING",
|
|
155
|
+
"EIP-8038"
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
"assumptions": [
|
|
161
|
+
"Reports were compared by finding id. Repeated finding ids are disambiguated with deterministic occurrence suffixes.",
|
|
162
|
+
"Severity and confidence changes are structural report changes, not protocol gas estimates."
|
|
163
|
+
],
|
|
164
|
+
"limitations": [
|
|
165
|
+
"The comparison does not infer exact gas deltas, final Glamsterdam parameters, or current-vs-Glamsterdam client behavior unless those values are already present in the input reports.",
|
|
166
|
+
"Added and removed findings can reflect threshold profile differences, fixture coverage changes, registry updates, or detector changes; review the source reports before treating a diff as a protocol risk change."
|
|
167
|
+
]
|
|
168
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
{
|
|
2
|
+
"toolVersion": "0.3.2",
|
|
3
|
+
"fork": "glamsterdam",
|
|
4
|
+
"comparison": {
|
|
5
|
+
"baseline": {
|
|
6
|
+
"toolVersion": "0.3.2",
|
|
7
|
+
"fork": "glamsterdam",
|
|
8
|
+
"target": {
|
|
9
|
+
"kind": "bytecode",
|
|
10
|
+
"name": "fixtures/bytecode/usdc-proxy-mainnet-runtime.hex"
|
|
11
|
+
},
|
|
12
|
+
"summary": {
|
|
13
|
+
"risk": "medium",
|
|
14
|
+
"findingCount": 4,
|
|
15
|
+
"highCount": 0,
|
|
16
|
+
"mediumCount": 1,
|
|
17
|
+
"lowCount": 2,
|
|
18
|
+
"unknownCount": 1
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"candidate": {
|
|
22
|
+
"toolVersion": "0.3.2",
|
|
23
|
+
"fork": "glamsterdam",
|
|
24
|
+
"target": {
|
|
25
|
+
"kind": "bytecode",
|
|
26
|
+
"name": "fixtures/bytecode/usdc-proxy-mainnet-runtime.hex"
|
|
27
|
+
},
|
|
28
|
+
"summary": {
|
|
29
|
+
"risk": "medium",
|
|
30
|
+
"findingCount": 5,
|
|
31
|
+
"highCount": 0,
|
|
32
|
+
"mediumCount": 2,
|
|
33
|
+
"lowCount": 2,
|
|
34
|
+
"unknownCount": 1
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"summary": {
|
|
39
|
+
"riskChange": {
|
|
40
|
+
"from": "medium",
|
|
41
|
+
"to": "medium",
|
|
42
|
+
"direction": "unchanged"
|
|
43
|
+
},
|
|
44
|
+
"findingCount": {
|
|
45
|
+
"baseline": 4,
|
|
46
|
+
"candidate": 5,
|
|
47
|
+
"delta": 1
|
|
48
|
+
},
|
|
49
|
+
"addedCount": 1,
|
|
50
|
+
"removedCount": 0,
|
|
51
|
+
"changedCount": 0,
|
|
52
|
+
"unchangedCount": 4,
|
|
53
|
+
"severityIncreasedCount": 0,
|
|
54
|
+
"severityDecreasedCount": 0,
|
|
55
|
+
"severityChangedCount": 0,
|
|
56
|
+
"confidenceIncreasedCount": 0,
|
|
57
|
+
"confidenceDecreasedCount": 0,
|
|
58
|
+
"confidenceChangedCount": 0
|
|
59
|
+
},
|
|
60
|
+
"changes": {
|
|
61
|
+
"added": [
|
|
62
|
+
{
|
|
63
|
+
"key": "bytecode.storage-heavy-pattern",
|
|
64
|
+
"id": "bytecode.storage-heavy-pattern",
|
|
65
|
+
"title": "Storage-related opcodes appear frequently",
|
|
66
|
+
"severity": "medium",
|
|
67
|
+
"confidence": "medium",
|
|
68
|
+
"domain": [
|
|
69
|
+
"contracts",
|
|
70
|
+
"execution"
|
|
71
|
+
],
|
|
72
|
+
"relatedEips": [
|
|
73
|
+
"GAS-REPRICING",
|
|
74
|
+
"EIP-8038"
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
"removed": [],
|
|
79
|
+
"changed": [],
|
|
80
|
+
"unchanged": [
|
|
81
|
+
{
|
|
82
|
+
"key": "bytecode.calldata-copy-exposure",
|
|
83
|
+
"id": "bytecode.calldata-copy-exposure",
|
|
84
|
+
"title": "Calldata copy opcode is present",
|
|
85
|
+
"severity": "low",
|
|
86
|
+
"confidence": "medium",
|
|
87
|
+
"domain": [
|
|
88
|
+
"contracts",
|
|
89
|
+
"execution"
|
|
90
|
+
],
|
|
91
|
+
"relatedEips": [
|
|
92
|
+
"GAS-REPRICING",
|
|
93
|
+
"EIP-7976",
|
|
94
|
+
"EIP-7904",
|
|
95
|
+
"EIP-8038"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"key": "bytecode.log-opcodes-present",
|
|
100
|
+
"id": "bytecode.log-opcodes-present",
|
|
101
|
+
"title": "Log opcodes are present",
|
|
102
|
+
"severity": "low",
|
|
103
|
+
"confidence": "medium",
|
|
104
|
+
"domain": [
|
|
105
|
+
"contracts",
|
|
106
|
+
"indexer",
|
|
107
|
+
"monitoring"
|
|
108
|
+
],
|
|
109
|
+
"relatedEips": [
|
|
110
|
+
"EIP-7708"
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"key": "bytecode.manual-review-required",
|
|
115
|
+
"id": "bytecode.manual-review-required",
|
|
116
|
+
"title": "Manual review is still required for runtime behavior",
|
|
117
|
+
"severity": "unknown",
|
|
118
|
+
"confidence": "low",
|
|
119
|
+
"domain": [
|
|
120
|
+
"contracts",
|
|
121
|
+
"execution"
|
|
122
|
+
],
|
|
123
|
+
"relatedEips": [
|
|
124
|
+
"GAS-REPRICING"
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"key": "bytecode.state-account-opcode-exposure",
|
|
129
|
+
"id": "bytecode.state-account-opcode-exposure",
|
|
130
|
+
"title": "State and account access opcodes are prominent in bytecode",
|
|
131
|
+
"severity": "medium",
|
|
132
|
+
"confidence": "medium",
|
|
133
|
+
"domain": [
|
|
134
|
+
"contracts",
|
|
135
|
+
"execution"
|
|
136
|
+
],
|
|
137
|
+
"relatedEips": [
|
|
138
|
+
"GAS-REPRICING",
|
|
139
|
+
"EIP-7904",
|
|
140
|
+
"EIP-8038",
|
|
141
|
+
"EIP-7976"
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
"assumptions": [
|
|
147
|
+
"Reports were compared by finding id. Repeated finding ids are disambiguated with deterministic occurrence suffixes.",
|
|
148
|
+
"Severity and confidence changes are structural report changes, not protocol gas estimates."
|
|
149
|
+
],
|
|
150
|
+
"limitations": [
|
|
151
|
+
"The comparison does not infer exact gas deltas, final Glamsterdam parameters, or current-vs-Glamsterdam client behavior unless those values are already present in the input reports.",
|
|
152
|
+
"Added and removed findings can reflect threshold profile differences, fixture coverage changes, registry updates, or detector changes; review the source reports before treating a diff as a protocol risk change."
|
|
153
|
+
]
|
|
154
|
+
}
|