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

SIGSEGV upon startup in version 2.40.1 and 2.40.0 (x86 version) #7130

Closed
aldredb opened this issue Mar 18, 2023 · 6 comments
Closed

SIGSEGV upon startup in version 2.40.1 and 2.40.0 (x86 version) #7130

aldredb opened this issue Mar 18, 2023 · 6 comments

Comments

@aldredb
Copy link

aldredb commented Mar 18, 2023

System information

Erigon version: erigon version 2.40.1-stable

OS & Version: Ubuntu 22.04 (x86)

Commit hash: Binary downloaded from https://github.com/ledgerwatch/erigon/releases/download/v2.40.1/erigon_2.40.1_linux_amd64.tar.gz, https://github.com/ledgerwatch/erigon/releases/download/v2.40.0/erigon_2.40.0_linux_amd64.tar.gz and https://github.com/ledgerwatch/erigon/releases/download/v2.39.0/erigon_2.39.0_linux_amd64.tar.gz

Erigon Command (with flags/config):

erigon \
 --chain bor-mainnet \
 --torrent.download.rate 1gb \
 --datadir /data/erigon \
 --private.api.addr 127.0.0.1:9090 \
 --authrpc.addr 127.0.0.1 \
 --http.addr 0.0.0.0 \
 --http.port 8545 \
 --http.vhosts "*" \
 --http.corsdomain "*" \
 --metrics \
 --http.api "eth,debug,net,trace,web3,erigon" \
 --ws \
 --bor.heimdall http://127.0.0.1:1317 \
 --maxpeers 20

Chain/Network: Polygon

Expected behaviour

Starts OK

Actual behaviour

SIGSEGV error and crashes

Steps to reproduce the behaviour

Start erigon. data folder is empty and permission is fine. Tested on both Intel and AMD CPUs.

FYI:
ARM version - works OK

x86 2.31.0 version - works OK

Backtrace

usr/bin/erigon  --chain bor-mainnet  --torrent.download.rate 1gb  --datadir /data/erigon  --private.api.addr 127.0.0.1:9090--authrpc.addr 127.0.0.1  --http.addr 0.0.0.0  --http.port 8545  --http.vhosts "*"  --http.corsdomain "*"  --metrics  --http.api "eth,debug,net,trace,web3,erigon"  --ws  --bor.heimdall http://127.0.0.1:1317
WARN[03-18|01:10:02.372] no log dir set, console logging only
INFO[03-18|01:10:02.372] Starting metrics server                  addr=http://127.0.0.1:6060/debug/metrics/prometheus
WARN[03-18|01:10:02.377] no log dir set, console logging only
INFO[03-18|01:10:02.377] Build info                               git_branch= git_tag= git_commit=
INFO[03-18|01:10:02.377] Starting Erigon on Bor Mainnet...
INFO[03-18|01:10:02.378] Maximum peer count                       ETH=100 total=100
INFO[03-18|01:10:02.378] starting HTTP APIs                       APIs=eth,debug,net,trace,web3,erigon
INFO[03-18|01:10:02.378] torrent verbosity                        level=WRN
INFO[03-18|01:10:04.480] Set global gas cap                       cap=50000000
INFO[03-18|01:10:04.481] [Downloader] Runnning with               ipv6-enabled=true ipv4-enabled=true download.rate=1gb upload.rate=4mb
INFO[03-18|01:10:04.481] Opening Database                         label=chaindata path=/data/erigon/chaindata
INFO[03-18|01:10:04.484] Initialised chain configuration          config="{ChainID: 137, Homestead: 0, DAO: <nil>, DAO Support: true, Tangerine Whistle: 0, Spurious Dragon: 0, Byzantium: 0, Constantinople: 0, Petersburg: 0, Istanbul: 3395000, Muir Glacier: 3395000, Berlin: 14750000, London: 23850000,Arrow Glacier: <nil>, Gray Glacier: <nil>, Terminal Total Difficulty: <nil>, Merge Netsplit: <nil>, Shanghai: <nil>, Cancun: <nil>, Sharding: <nil>, Prague: <nil>, Engine: bor}" genesis=0xa9c28ce2141b56c474f1dc504bee9b01eb1bd7d1a507580d5519d4437a97de1b
INFO[03-18|01:10:04.484] Effective                                prune_flags= snapshot_flags="--snapshots=true" history.v3=false
fatal error: unexpected signal during runtime execution
fatal error: unexpected signal during runtime execution
fatal error: unexpected signal during runtime execution
fatal error: unexpected signal during runtime execution
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x2 addr=0x7f180a7fd072 pc=0x7417c74a6a7f]

runtime stack:
runtime.throw({0x25b9218?, 0x0?})
        /usr/local/go/src/runtime/panic.go:1047 +0x5d fp=0x7f180a7fb7d8 sp=0x7f180a7fb7a8 pc=0x45837d
runtime.sigpanic()
        /usr/local/go/src/runtime/signal_unix.go:819 +0x369 fp=0x7f180a7fb828 sp=0x7f180a7fb7d8 pc=0x46eda9

goroutine 230 [syscall]:
runtime.cgocall(0x1d37140, 0xc0012ddd98)
        /usr/local/go/src/runtime/cgocall.go:158 +0x5c fp=0xc0012ddd70 sp=0xc0012ddd38 pc=0x421e7c
net._C2func_getaddrinfo(0xc00077e030, 0x0, 0xc000776180, 0xc00076a008)
        _cgo_gotypes.go:94 +0x56 fp=0xc0012ddd98 sp=0xc0012ddd70 pc=0x5959d6
net.cgoLookupIPCNAME.func1({0xc00077e030, 0x7f184a59bd28?, 0x30?}, 0xc0012c24b7?, 0xc000776120?)
        /usr/local/go/src/net/cgo_unix.go:160 +0x9f fp=0xc0012dddf0 sp=0xc0012ddd98 pc=0x59771f
net.cgoLookupIPCNAME({0x23ee045, 0x2}, {0xc0012c24b7, 0x16})
        /usr/local/go/src/net/cgo_unix.go:160 +0x173 fp=0xc0012ddf38 sp=0xc0012dddf0 pc=0x596f73
net.cgoIPLookup(0xc0003da750?, {0x23ee045?, 0xc0012ddfd0?}, {0xc0012c24b7?, 0xc0012ceee0?})
        /usr/local/go/src/net/cgo_unix.go:217 +0x3b fp=0xc0012ddfa8 sp=0xc0012ddf38 pc=0x5977db
net.cgoLookupIP.func1()
        /usr/local/go/src/net/cgo_unix.go:227 +0x36 fp=0xc0012ddfe0 sp=0xc0012ddfa8 pc=0x597c16
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0012ddfe8 sp=0xc0012ddfe0 pc=0x48ca01
created by net.cgoLookupIP
        /usr/local/go/src/net/cgo_unix.go:227 +0x12a
...

See whole backtrace here: backtrace.txt

@AskAlexSharov
Copy link
Collaborator

Try add —downloader.verify

@aldredb
Copy link
Author

aldredb commented Mar 18, 2023

sudo erigon \
 --chain bor-mainnet \
 --torrent.download.rate 1gb \
 --datadir /data/erigon \
 --private.api.addr 127.0.0.1:9090 \
 --authrpc.addr 127.0.0.1 \
 --http.addr 0.0.0.0 \
 --http.port 8545 \
 --http.vhosts "*" \
 --http.corsdomain "*" \
 --metrics \
 --http.api "eth,debug,net,trace,web3,erigon" \
 --ws \
 --bor.heimdall http://127.0.0.1:1317 \
 --maxpeers 20 \
 —-downloader.verify

Same result:

WARN[03-18|06:44:50.452] no log dir set, console logging only
INFO[03-18|06:44:50.452] Starting metrics server                  addr=http://127.0.0.1:6060/debug/metrics/prometheus
WARN[03-18|06:44:50.459] no log dir set, console logging only
INFO[03-18|06:44:50.459] Build info                               git_branch= git_tag= git_commit=
INFO[03-18|06:44:50.459] Starting Erigon on Bor Mainnet...
INFO[03-18|06:44:50.459] Maximum peer count                       ETH=20 total=20
INFO[03-18|06:44:50.459] starting HTTP APIs                       APIs=eth,debug,net,trace,web3,erigon
INFO[03-18|06:44:50.459] torrent verbosity                        level=WRN
INFO[03-18|06:44:52.561] Set global gas cap                       cap=50000000
INFO[03-18|06:44:52.562] [Downloader] Runnning with               ipv6-enabled=true ipv4-enabled=true download.rate=1gb upload.rate=4mb
INFO[03-18|06:44:52.562] Opening Database                         label=chaindata path=/data/erigon/chaindata
INFO[03-18|06:44:52.564] Initialised chain configuration          config="{ChainID: 137, Homestead: 0, DAO: <nil>, DAO Support: true, Tangerine Whistle: 0, Spurious Dragon: 0, Byzantium: 0, Constantinople: 0, Petersburg: 0, Istanbul: 3395000, Muir Glacier: 3395000, Berlin: 14750000, London: 23850000,Arrow Glacier: <nil>, Gray Glacier: <nil>, Terminal Total Difficulty: <nil>, Merge Netsplit: <nil>, Shanghai: <nil>, Cancun: <nil>, Sharding: <nil>, Prague: <nil>, Engine: bor}" genesis=0xa9c28ce2141b56c474f1dc504bee9b01eb1bd7d1a507580d5519d4437a97de1b
INFO[03-18|06:44:52.564] Effective                                prune_flags= snapshot_flags="--snapshots=true" history.v3=false
INFO[03-18|06:44:52.566] Initialising Ethereum protocol           network=137
INFO[03-18|06:44:52.572] Starting private RPC server              on=127.0.0.1:9090
INFO[03-18|06:44:52.572] new subscription to logs established
INFO[03-18|06:44:52.572] rpc filters: subscribing to Erigon events
INFO[03-18|06:44:52.572] New txs subscriber joined
INFO[03-18|06:44:52.572] new subscription to newHeaders established
INFO[03-18|06:44:52.572] Reading JWT secret                       path=/data/erigon/jwt.hex
INFO[03-18|06:44:52.573] HTTP endpoint opened for Engine API      url=127.0.0.1:8551 ws=true ws.compression=true
INFO[03-18|06:44:52.573] HTTP endpoint opened                     url=[::]:8545 ws=true ws.compression=true grpc=false
INFO[03-18|06:44:52.578] Started P2P networking                   version=67 self=enode://5239473eac912ba02d0149febaf056ec7480729c5f5df792f6f1a66c91e6e3975983d7069dee614c65c148055ef181db652b8c16093a043fc90a8b683ea846e7@127.0.0.1:30303 name=erigon/v2.40.1/linux-amd64/go1.19.5
INFO[03-18|06:44:52.580] Started P2P networking                   version=68 self=enode://5239473eac912ba02d0149febaf056ec7480729c5f5df792f6f1a66c91e6e3975983d7069dee614c65c148055ef181db652b8c16093a043fc90a8b683ea846e7@127.0.0.1:30304 name=erigon/v2.40.1/linux-amd64/go1.19.5
INFO[03-18|06:44:52.583] [txpool] Started
INFO[03-18|06:44:52.583] [1/15 Snapshots] Fetching torrent files metadata
fatal error: unexpected signal during runtime execution
fatal error: unexpected signal during runtime execution
fatal error: unexpected signal during runtime execution
fatal error: unexpected signal during runtime execution
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x2 addr=0x7f84067fd072 pc=0x6e8343806a7f]

@0xStrobe
Copy link

Having exact same issues but running for Ethereum mainnet.

@AskAlexSharov
Copy link
Collaborator

@0xStrobe show 100 log lines

@0xStrobe
Copy link

0xStrobe commented Mar 22, 2023

Turns out it was already fixed if compiled binary from latest devel branch instead of using a precompiled release. :)

Haven't tried with polygon so not sure if it would work for OP too.

@DefiDebauchery
Copy link

DefiDebauchery commented Mar 27, 2023

Can confirm for v2.41, as well. The pre-compiled binary release failed with the same errors; running the binary compiled from source works fine.

Ubuntu 22.04
go 1.20.2

calmbeing pushed a commit to calmbeing/bsc-erigon that referenced this issue Apr 24, 2023
i think issue is
golang/go#30310 (comment)

i was able to reproduce on my machine using go releaser dry run, and
adding this build flag fixed it.

apparently its some glibc issue, what a surprise! :)

Co-authored-by: a <a@tuxpa.in>
gladcow pushed a commit to Ankr-network/erigon that referenced this issue May 4, 2023
i think issue is
golang/go#30310 (comment)

i was able to reproduce on my machine using go releaser dry run, and
adding this build flag fixed it.

apparently its some glibc issue, what a surprise! :)

Co-authored-by: a <a@tuxpa.in>
Qjawko pushed a commit to chainstack/erigon that referenced this issue May 15, 2023
Filter method with changed sequence of arguments

add Plato hardfork support

Fix chapel sync issues

change back docker tag #2

change back docker tag

remove entrypoint from Dockerfile

exitChan + logging

add starter to PATH

add docker tag

starter with errortrack flag

fix Dockerfile

luban fork support; light client features; upstream erigon main repo

add grpc-health-probe to Dockerfile

add planck block number to mainnet config

use replace mechanism

add nolint annotation

add planck contract upgrades and backoff time, fix --txpool.commit.every panic

change ledgerwatch => chainstack erigon-lib

use replace mechanism for better upstream support soon

use replace mechanism

add default value to deprecated txpool config

add nolint annotation

add planck contract upgrades and backoff time, fix --txpool.commit.every panic

add ics23 proof type, add tests, key validators etc

change ledgerwatch => chainstack erigon-lib

close memdb in ./cmd/evm

stop using olddb in simulated backend (ledgerwatch#7219)

e3: enable simulated backed (ledgerwatch#7218)

sqlite version up

e3: deadlock fix

Skip test in fork_graph_test.go (ledgerwatch#7216)

Fork-choice graph oriented implementation (ledgerwatch#7212)

e4: step 1 to run tests (ledgerwatch#7209)

e3: one more reconst deadlock fix (ledgerwatch#7207)

Break dependency of `ethcfg` package to `core`/`consensus`/etc...  move genesis struct to 'types' package (ledgerwatch#7206)

eip-4844: NewEVMBlockContext now expects excessDataGas (ledgerwatch#7203)

Small change in core.NewEVMBlockContext and now it expects
excessDataGas. This will be used in state transition to compute data fee
for eip-4844 data blobs. The logic that computes it will be added in the
next PRs.

e4: add tests flag

e4: add flag in tests

Add maxNumberOfFailedWithdrawalsToProcess to executeSystemWithdrawals (ledgerwatch#7197)

See gnosischain/specs#3

log BLS verification failure (ledgerwatch#7196)

e3: one more reconst deadlock fix

add netgo tag

hopefully fix ledgerwatch#7130 (ledgerwatch#7193)

i think issue is
golang/go#30310 (comment)

i was able to reproduce on my machine using go releaser dry run, and
adding this build flag fixed it.

apparently its some glibc issue, what a surprise! :)

Co-authored-by: a <a@tuxpa.in>

Remove propagation of lightclient updates (ledgerwatch#7192)

eip-4844: small additions and modified gaspool (ledgerwatch#7190)

This PR contains very small EIP-4844 additions. GasPool is modified and
now it is a struct with 2 fields "gas" and "dataGas" (blobs are priced
in dataGas). ExcessDataGas block header field added. ExcessDataGas
needed to compute the data gas price. EIP-4844 helper functions are
added as well.

removed --el.enabled (ledgerwatch#7187)

e3: recon deadlock fix (ledgerwatch#7186)

Added reverse beacon changeset for beacon state rewind (ledgerwatch#7185)

Added changesets for beacon chain to implement memory efficient fork
choice

kv_temporal lost commit

clean

prevent infinity unwind when no --unwind.every flag set

integration temporal db

add constant kv.Unlim=-1 (ledgerwatch#7183)

enable more linters ledgerwatch#954 (ledgerwatch#7179)

DomainRange

DomainRange

e3: DomainGetAsOf, DomainRange (ledgerwatch#7177)

fix(release): http-https redirect working (ledgerwatch#7176)

Fixed storage for download (ledgerwatch#7175)

e3: remove some iterator (ledgerwatch#7174)

readme dates

add eth_getFilterLogs to docs (ledgerwatch#7171)

add eth_getFilterLogs to docs

panic in trace_adhoc

clean

save

attempt to finx bindtest (ledgerwatch#7167)

manual integration tests run allow

CI v4

to fix txpool startup race (ledgerwatch#7165)

```

==================
WARNING: DATA RACE
Write at 0x00c0005dc570 by goroutine 273633:
  github.com/ledgerwatch/erigon/turbo/shards.(*Accumulator).Reset()
      github.com/ledgerwatch/erigon/turbo/shards/state_change_accumulator.go:32 +0x5ec
  github.com/ledgerwatch/erigon/turbo/stages.StageLoopStep()
      github.com/ledgerwatch/erigon/turbo/stages/stageloop.go:163 +0x3bd
  github.com/ledgerwatch/erigon/turbo/stages.StageLoop()
      github.com/ledgerwatch/erigon/turbo/stages/stageloop.go:94 +0x197
  github.com/ledgerwatch/erigon/eth.(*Ethereum).Start.func1()
      github.com/ledgerwatch/erigon/eth/backend.go:1058 +0x10b

Previous write at 0x00c0005dc570 by goroutine 273468:
  github.com/ledgerwatch/erigon/turbo/shards.(*Accumulator).Reset()
      github.com/ledgerwatch/erigon/turbo/shards/state_change_accumulator.go:32 +0x2ef
  github.com/ledgerwatch/erigon/turbo/shards.(*Accumulator).SendAndReset()
      github.com/ledgerwatch/erigon/turbo/shards/state_change_accumulator.go:41 +0x228
  github.com/ledgerwatch/erigon/eth.New.func8()
      github.com/ledgerwatch/erigon/eth/backend.go:620 +0x80e

```

fix e3 test

go 1.19 atomics (ledgerwatch#7164)

linter up

test simplify

Add eth_getProof support for historical blocks (ledgerwatch#7115)

This PR starts with a few small commits of code cleanup. Reviewed
separately they should hopefully obviously be functionally no-ops. I'm
happy to strip these out and submit them separately if desired.

The final commit is to add support for older blocks as a parameter to
eth_getProof. In order to compute proofs, the function leverages the
staged sync unwinding code to bring the hashed state table back to its
historic state, as well as to build a list of trie nodes which need to
be invalidated/re-computed in the trie computation. Because these
operations could be expensive for very old blocks, it limits the
distance proofs are allowed from the head. It also adds some additional
checks for correctness, as well as tests which verify the
implementation.

This was discussed a bit on Discord in the db-format topic.

---------

Co-authored-by: Jason Yellick <jason@enya.ai>

Go 1.18 drop (ledgerwatch#7159)

--txpool.commit.every panic handling (ledgerwatch#7163)

[Gnosis] Don't call ExecuteSystemWithdrawals before Shanghai (ledgerwatch#7160)

This is a patch to PR ledgerwatch#6940. Withdrawal contract should not be called
for pre-Shanghai block. The issue was found on
gnosis_withdrawals_devnet_2 (PR ledgerwatch#7150), causing
```
[WARN] [03-22|10:44:51.574] [7/15 Execution] Execution failed        block=51035 hash=0xa8fb9e58eb734b7ce4e2e6260ad20e07a16039325f9924cc18ea61fa2eb5ee90 err="execution reverted"
```

e3: close context

e3: domain range api simplify (ledgerwatch#7158)

e3: unionKV limit (ledgerwatch#7157)

e3: union limit (ledgerwatch#7156)

e3: remove settings table (ledgerwatch#7155)

e4: reset state

domain: to use history api

e4: to use serializev3 (ledgerwatch#7154)

add flag txpool.commit_every (ledgerwatch#7062)

Adds flag _--txpool.commit_every_ to control how often transactions
should be committed to the storage

[Related Issue](ledgerwatch#7002)

e3: exec to use half of CPU's by default

Total difficulty can be huge on Gnosis (ledgerwatch#7149)

This fixes the following issue observed on gnosis_withdrawals_devnet_2:
```
[DBUG] [03-21|09:24:15.060] Handling incoming message                stream=RecvMessage err="newBlock66: too large block TD: bitlen 144"
```

Update ethereum/tests to v12 (ledgerwatch#7148)

[Tests update 12: Shanghai
tests](https://github.com/ethereum/tests/releases/tag/v12)

Drop Default from GenesisBlock* functions (ledgerwatch#7147)

Small cosmetic changes and clean-ups

fixed fork consensus spec test (ledgerwatch#7143)

removed stream handler (ledgerwatch#7142)

added tests for ssz_static in consensus tests and fixed beacon blocks encoding (ledgerwatch#7141)

Update go deps (ledgerwatch#7138)

Updated CI to 1.19.0 (ledgerwatch#7139)

removed database functionality from lightclient (ledgerwatch#7135)

Banning peers sending bad gossip (ledgerwatch#7134)

feat(docker): add debug.Dockerfile with delve (ledgerwatch#7125)

- removes dbtools from debug container
- adds delve to debug container

refactored sentinel gossip and only connect to nimbus now (ledgerwatch#7127)

Added tool for processing for all mainnet beacon blocks (ledgerwatch#7095)

--rpc.returndata.limit

torrent: suppress some warning (ledgerwatch#7124)

grpc_middleware_up (ledgerwatch#7123)

fix(release): download page https redirect (ledgerwatch#7120)

Updated initial traefik config so the http -> https redirect on
download.erigon.sh will work.

E4 metrics upd (ledgerwatch#7122)

get localnode address up front on creation to save potential data race (ledgerwatch#7111)

the log line here was the culprit for the race. made sense to just
capture this on localnode creation instead and hold onto it for when the
server is started.

ran test with `-race` and `-count=5000` to double check and all looks
good

fix(release): run download page update separately (ledgerwatch#7112)

Checksum not working as the file isn't available in the assets when run
in the same job.

txpool: senders batch commit optimize (ledgerwatch#7118)

e3: don't loose nil-value in reconstitution  (ledgerwatch#7117)

e3: history no auto-increment (ledgerwatch#7097)

e3: less merge logs

don't show "block number" in txpool logs it confusing users

check for nil stream when running the null check in handler (ledgerwatch#7105)

up goprotobuf

check for nil before returning invalid json in rpc streaming calls (ledgerwatch#7104)

should handle nil having already been written in any rpc call before
writing it again causing invalid json to be returned.

torrent: don't cancel storage, because lib can't handle such error and can graceful-shutdown anyway (ledgerwatch#7102)

fix for reading yaml/toml config in cmd/integration (ledgerwatch#7101)

torrent lib version up to remove some warning log (ledgerwatch#7100)

move more parts to lru2 (ledgerwatch#7098)

Optimize memory buffer, simplify set32, use sha256-simd (ledgerwatch#7060)

Hi,

I'm syncing Gnosis on a Celeron N5100 to get familiar with the codebase.
In the process I managed to optimize some things from profiling.
Since I'm not yet on the project Discord, I decided to open this PR as a
suggestion. This pass all tests here and gave me a nice boost for that
platform, although I didn't have time to benchmark it yet.

* reuse VM Memory objects with sync.Pool. It starts with 4k as `evmone`
[code
suggested](https://github.com/ethereum/evmone/blob/0897edb00179ac3d27f27c82749119003df851e7/lib/evmone/execution_state.hpp#L49)
as a good value.
* set32 simplification: mostly cosmetic
* sha256-simd: Celeron has SHA instructions. We should probably do the
same for torrent later, but this already helped as it is very CPU bound
on such a low end processor. Maybe that helps ARM as well.

read metrics config from yaml file (ledgerwatch#7089)

Backfill eth getproof tests (ledgerwatch#7092)

This PR adds missing tests for eth_getProof and does some mild
refactoring with switching from strings to more strict types. It's
likely best/most easily reviewed commit by commit.

Note, the tests include quite a number of helper types and functions for
doing the proof validation. This is largely because unlike Geth,
Erigon's approach to trie computations only requires serializing the
trie nodes, not deserializing them. Consequently, it wasn't obvious how
to leverage the existing trie code for doing deserialization and proof
checks. I checked on Discord, but, there were no suggestions. Of course,
any feedback is welcome and I'd be happy to remove this code if it can
be avoided.

Additionally, I've opted to change the interface type for `GetProof` to
use a `common.Hash` for the storage keys instead of a `string`. I
_think_ this should be fairly safe, as until very recently it was
unimplemented. That being said, since it's an interface, it has the
potential to break other consumers, anyone who was generating mocks
against it etc. There's additionally a `GetStorageAt` that follows the
same parameter. I'd be happy to submit a PR modifying this one as well
if desired.

Also, as a small note, there is test code for checking storage proofs,
but, storage proofs aren't currently supported by the implementation. My
hope is to add storage proofs and historic proofs in a followup PR.

---------

Co-authored-by: Jason Yellick <jason@enya.ai>

Fix broken link in doc (ledgerwatch#7094)

The doc in
[dupsort.md](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/dupsort.md#erigon)
points to a non-existent `AbstractKV.md`

As best as I can tell, the `AbstractKV.md` was reworked and renamed in
commit

0bc61c0

then, this was later moved into erigon-lib. This commit simply repoints
the doc at this new location.

Co-authored-by: Jason Yellick <jason@enya.ai>

Delete retain_list_builder.go (ledgerwatch#7096)

I was walking the code to try to understand in a bit more detail how the
state root hash is constructed and stumbled across
`retain_list_builder.go` as a consumer of the retain list APIs. But, as
far as I can tell, this file doesn't seem to actually be used anywhere
(including tests), and, it's seen no development (other than import
fixes) since 2020 or so. All linting and tests still pass for me locally
without it, so, I believe it's safe to simply remove.

Co-authored-by: Jason Yellick <jason@enya.ai>

Added hard fork transition support to Erigon-CL. (ledgerwatch#7088)

e3: split "changed keys" iterator to simplify (ledgerwatch#7086)

check for free messages when calling trace_transaction (ledgerwatch#7073)

Gateway reported an issue with a trace returning an odd result, similar
to the recent problem we'd seen with gnosis. I found that
debug_traceTransaction worked fine so found where the differences were.
trace_transaction wasn't checking for service transactions so the trace
failed around fees when it shouldn't.

A number of code paths use callManyTransactions so they should all now
check for service messages where needed.

erigon-lib up

e3: reconst: run workers in errgroup (ledgerwatch#7071)

e3: simplify wal (ledgerwatch#7085)

go mod tidy

Downloader main loop wait on close (ledgerwatch#7082)

fix typo in eth_call error (ledgerwatch#7084)

Spotted this typo when poking at Cloudflare's public gateway and mapped
it back here 🙈

Added partial SSZ library (ledgerwatch#7083)

Implements SSZ encode/decoding and hashtreeroot for simple list-lacking
data structures. does not account offset case.

Added phase0 support to Erigon-CL. (ledgerwatch#7066)

Added phase 0 support.

save

nil ptr in delete ancient (ledgerwatch#7081)

e4: added some metrics to code (ledgerwatch#7078)

Remove ETC-specific DAOForkSupport=false functionality (ledgerwatch#7075)

Remove archaic eip150Hash functionality (ledgerwatch#7074)

save

sentry: handle "retry later" grpc stream (ledgerwatch#6852)

params: remove EF azure bootnodes (ledgerwatch#7061)

Same has been done in geth:
ethereum/go-ethereum#26828

cleanup

fix build

e3: aggressive pruning (ledgerwatch#7070)

up moq version, up some lru version (ledgerwatch#7069)

run E4 via integration binary (ledgerwatch#7063)

added subcommand `state_domains` of `bin/integration` to start
processing of existing chaindata with use of state domains and
commitment.
It creates two directory in `datadir`: `state` and `statedb` for files
and mdbx respectively.

This version runs blocks one after another and produces merged files.
Want to add some metrics to export later.

Added SSZ support for Phase0 state. (ledgerwatch#7065)

Partial EIP1186 eth_getProof implementation (ledgerwatch#6560)

This is a partial implementation of eth_getProof (see issue ledgerwatch#1349),
supporting only a request for the latest block and an empty list of
storage keys (i.e. Account proof only). I don't know if there's a better
way of implementing this, but this was what I could come up with.
Posting it here in case it's useful.

Example output:
```
> eth.getProof("0x67b1d87101671b127f5f8714789C7192f7ad340e", [], 'latest')
{
  accountProof: ["0xf90131a0252c9d4ed347b4cf3fdccaea3ccef0a507e6bd4dbe4dcd98609b7195347c4062a0ab8cdb808c8303bb61fb48e276217be9770fa83ecf3f90f2234d558885f5abf18080a01a697e814758281972fcd13bc9707dbcd2f195986b05463d7b78426508445a04a0b5d7a91be5ee273cce27e2ad9a160d2faadd5a6ba518d384019b68728a4f62f4a0c2c799b60a0cd6acd42c1015512872e86c186bcf196e85061e76842f3b7cf86080a0e73919d9f472eec11f6da95518503f5527a98b9428f7a02c4f55bf51854214e480a06301b39b2ea8a44df8b0356120db64b788e71f52e1d7a6309d0d2e5b86fee7cb8080a01b7779e149cadf24d4ffb77ca7e11314b8db7097e4d70b2a173493153ca2e5a0a066a7662811491b3d352e969506b420d269e8b51a224f574b3b38b3463f43f0098080", "0xf8518080808080a0a00135c9ec2655cb6a47ab7ad27d6fc150d9cba8b3d4a702e879179116a68a60808080808080a02fb46956347985b9870156b5747712899d213b1636ad4fe553c63e33521d567a80808080", "0xf873a02056274a27dd7524955417c11ecd917251cc7c4c8310f4c7e4bd3c304d3d9a79b850f84e808a021e19e0c9bab2400000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"],
  address: "0x67b1d87101671b127f5f8714789c7192f7ad340e",
  balance: "0x21e19e0c9bab2400000",
  codeHash: "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
  nonce: "0x0",
  storageHash: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  storageProof: []
}
> eth.getBlock('latest').stateRoot
"0x6a0673c691edfa4c4528323986bb43c579316f436ff6f8b4ac70854bbd95340b"
```

e3: use iterators composition in invIndex.Range (ledgerwatch#7056)

graphql: add Tx Receipts Logs to output (ledgerwatch#7059)

Added pending attestation object. (ledgerwatch#7058)

mdbx: RangeDupSort iterator  (ledgerwatch#7054)

--torrent.staticpeers  (ledgerwatch#7052)

Added Capella specs support to Erigon-CL (ledgerwatch#7051)

Passing consensus-specs tests for Capella. Processing of withdrawals and
ExecutionChanges. efficient non-validation implemented. Refactored:
ExecutionPayload/ExecutionPayloadHeader.

save

up grpc version (ledgerwatch#7043)

save

attempt to fix TestGolangBindings (ledgerwatch#7041)

etl: distinct empty values from nil (ledgerwatch#7039)

Reverts ledgerwatch#7038

Revert "etl: distinct empty values from nil" (ledgerwatch#7038)

Reverts ledgerwatch#6934

 e3: native map instead of btree where can (because e2 experience shows - it's faster) (ledgerwatch#7010)

etl: distinct empty values from nil (ledgerwatch#6934)
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

No branches or pull requests

4 participants