Skip to content

Commit 6713fd5

Browse files
roberto-bayardokaralaberjl493456442holimanucwong
authored
Merge with latest upstream (#107)
* travis, build: update Go to 1.20.1 (ethereum#26653) travis, build: update Go to 1.20 * core: check genesis state presence by disk read (ethereum#26703) * core, eth/downloader: make body validation more strict (ethereum#26704) * eth/downloader: fix empty-body case in queue fetchresult (ethereum#26707) * eth/downloader: fix typo (ethereum#26716) * all: remove deprecated uses of math.rand (ethereum#26710) This PR is a (superior) alternative to ethereum#26708, it handles deprecation, primarily two specific cases. `rand.Seed` is typically used in two ways - `rand.Seed(time.Now().UnixNano())` -- we seed it, just to be sure to get some random, and not always get the same thing on every run. This is not needed, with global seeding, so those are just removed. - `rand.Seed(1)` this is typically done to ensure we have a stable test. If we rely on this, we need to fix up the tests to use a deterministic prng-source. A few occurrences like this has been replaced with a proper custom source. `rand.Read` has been replaced by `crypto/rand`.`Read` in this PR. * params: go-ethereum v1.11.1 stable * params: begin v1.11.2 release cycle * eth/catalyst: send INVALID instead of INVALID_BLOCK_HASH (ethereum#26696) This change will break one hive test, but pass another and it will be the better way going forward * ci: disable coverage reporting in appveyor and travis * eth/catalyst: request too large error (ethereum#26722) The method `GetPayloadBodiesByRangeV1` now returns "-38004: Too large request" error if the requested range is too large, according to spec Co-authored-by: Martin Holst Swende <[email protected]> * core/trie: remove trie tracer (ethereum#26665) This PR contains a small portion of the full pbss PR, namely Remove the tracer from trie (and comitter), and instead using an accessList. Related changes to the Nodeset. --------- Co-authored-by: Gary Rong <[email protected]> * rpc: fix unmarshaling of null result in CallContext (ethereum#26723) The change fixes unmarshaling of JSON null results into json.RawMessage. --------- Co-authored-by: Jason Yuan <[email protected]> Co-authored-by: Jason Yuan <[email protected]> * build: ship bootstrapper Go along with builder for PPA (ethereum#26731) * build: fix setting env var, temp early exit * build: fix gobootstrap path for the PPA * build: add some PPA debug logs, sigh * internal/build: revert raising the chunk size for PPA * build: yet another weird PPA fix * build: fix (finaly?) the PPA env vars for Go bootstrapping * build: fix Go 1.19.0 bootstrapper issues on 386 PPA * build: enable Lunar Lobster PPA builds * Revert "core/trie: remove trie tracer (ethereum#26665)" (ethereum#26732) This reverts commit 7c749c9. * cmd/geth: clarify dumpconfig options (ethereum#26729) Clarifies the documentation around dumpconfi Signed-off-by: Sungwoo Kim <[email protected]> * core, eth: merge snap-sync chain download progress logs (ethereum#26676) * core: fix accessor mismatch for genesis state (ethereum#26747) * core/rawdb: expose chain freezer constructor without internals (ethereum#26748) * all: use unified emptyRootHash and emptyCodeHash (ethereum#26718) The EmptyRootHash and EmptyCodeHash are defined everywhere in the codebase, this PR replaces all of them with unified one defined in core/types package, and also defines constants for TxRoot, WithdrawalsRoot and UncleRoot * eth/filters: fix a breaking change and return rpctransaction (ethereum#26757) * eth/filters: fix a breaking change and return rpctransaction * eth/filters: fix test cases --------- Co-authored-by: Catror <[email protected]> * common/math: allow HexOrDecimal to accept unquoted decimals too (ethereum#26758) * params: release Geth v1.11.2 * params: begin v.1.11.3 release cycle * log: improve documentation (ethereum#26753) Add usage examples * core/rawdb, node: use standalone flock dependency (ethereum#26633) * eth: use the last announced finalized block as the sync ancient limit (ethereum#26685) * cmd/devp2p: faster crawling + less verbose dns updates (ethereum#26697) This improves the speed of DHT crawling by using concurrent requests. It also removes logging of individual DNS updates. * eth/tracers: add native flatCallTracer (aka parity style tracer) (ethereum#26377) Adds support for a native call tracer with the Parity format, which outputs call frames in a flat array. This tracer accepts the following options: - `convertParityErrors: true` will convert error messages to match those of Parity - `includePrecompiles: true` will report all calls to precompiles. The default matches Parity's behavior where CALL and STATICCALLs to precompiles are excluded Incompatibilities with Parity include: - Parity removes the result object in case of failure. This behavior is maintained with the exception of reverts. Revert output usually contains useful information, i.e. Solidity revert reason. - The `gasUsed` field accounts for intrinsic gas (e.g. 21000 for simple transfers) and refunds unlike Parity - Block rewards are not reported Co-authored-by: Sina Mahmoodi <[email protected]> * core: improve withdrawal index assignment in GenerateChain (ethereum#26756) This fixes an issue where the withdrawal index was not calculated correctly for multiple withdrawals in a single block. Co-authored-by: Gary Rong <[email protected]> Co-authored-by: Felix Lange <[email protected]> * ethdb/pebble: fix range compaction (ethereum#26771) * ethdb/pebble: fix range compaction * ethdb/pebble: add comment * ethdb/pebble: fix max memorytable size (ethereum#26776) * ethclient: include withdrawals in ethclient block responses (ethereum#26778) * include withdrawals in ethclient responses * omit empty withdrawals array in json serialization * all: change chain head markers from block to header (ethereum#26777) * core/rawdb, ethdb/pebble: disable pebble on openbsd (ethereum#26801) * core: fix a merge fault (ethereum#26802) * README, go.mod, event, internal/version: bump min Go to 1.19 (ethereum#26803) * travi: remove strange leftover Go version * core, params: schedule Shanghai on goerli (ethereum#26795) * core: params: schedule Shanghai on goerli * core/forkid: fix comment * eth: remove admin.peers[i].eth.head and difficulty (ethereum#26804) * core/types: add EffectiveGasPrice in Receipt (ethereum#26713) This change adds a struct field EffectiveGasPrice in types.Receipt. The field is present in RPC responses, but not in the Go struct, and thus can't easily be accessed via ethclient. Co-authored-by: PulsarAI <[email protected]> * core, eth/catalyst: fix race conditions in tests (ethereum#26790) Fixes a race in TestNewPayloadOnInvalidTerminalBlock where setting the TTD raced with the miner. Solution: set the TTD on the blockchain config not the genesis config. Also fixes a race in CopyHeader which resulted in race reports all over the place. * metrics: improve accuracy of CPU gauges (ethereum#26793) This PR changes metrics collection to actually measure the time interval between collections, rather than assume 3 seconds. I did some ad hoc profiling, and on slower hardware (eg, my Raspberry Pi 4) I routinely saw intervals between 3.3 - 3.5 seconds, with some being as high as 4.5 seconds. This will generally cause the CPU gauge readings to be too high, and in some cases can cause impossibly large values for the CPU load metrics (eg. greater than 400 for a 4 core CPU). --------- Co-authored-by: Felix Lange <[email protected]> * ethclient: fix panic when requesting missing blocks (ethereum#26817) This fixes a regression introduced by ethereum#26723. Fixes ethereum#26816. * core, miner: revert block gas counter in case of invalid transaction (ethereum#26799) This change fixes a flaw where, in certain scenarios, the block sealer did not accurately reset the remaining gas after failing to include an invalid transaction. Fixes ethereum#26791 * internal/ethapi: add tests for transaction types JSON marshal/unmarshal (ethereum#26667) Checks that Transaction.MarshalJSON and newRPCTransaction JSON output can be parsed by Transaction.UnmarshalJSON --------- Co-authored-by: Martin Holst Swende <[email protected]> * cmd/evm: correct `alloc` for `t8n` testdata (ethereum#26822) Fixes a minor error in the testdata * eth/tracers/native: set created address to nil in case of failure (ethereum#26779) Fixes ethereum#26073 * accounts/usbwallet: mitigate ledger app chunking issue (ethereum#26773) This PR mitigates an issue with Ledger's on-device RLP deserialization, see LedgerHQ/app-ethereum#409 Ledger's RLP deserialization code does not validate the length of the RLP list received, and it may prematurely enter the signing flow when a APDU chunk boundary falls immediately before the EIP-155 chain_id when deserializing a transaction. Since the chain_id is uninitialized, it is 0 during this signing flow. This may cause the user to accidentally sign the transaction with chain_id = 0. That signature would be returned from the device 1 packet earlier than expected by the communication loop. The device blocks the second-to-last packet waiting for the signer flow, and then errors on the successive packet (which contains the chain_id, zeroed r, and zeroed s) Since the signature's early arrival causes successive errors during the communication process, geth does not parse the improper signature produced by the device, and therefore no improperly-signed transaction can be created. User funds are not at risk. We mitigate by selecting the highest chunk size that leaves at least 4 bytes in the final chunk. * beacon/engine: don't omit empty withdrawals in ExecutionPayloadBodies (ethereum#26698) This ensures the "withdrawals" field will always be present in responses to getPayloadBodiesByRangeV1 and getPayloadBodiesByHashV1. --------- Co-authored-by: Felix Lange <[email protected]> * build: update to go 1.20.2 (ethereum#26824) * params: go-ethereum v1.11.3 stable * params: begin v1.11.4 release cycle * core/rawdb: find smallest block stored in key-value store when chain gapped (ethereum#26719) This change prints out more information about the problem, in the case where geth detects a gap between leveldb and ancients, so we can determine more exactly where the gap is (what the first missing is). Also prints out more metadata. --------- Co-authored-by: Martin Holst Swende <[email protected]> * signer/core: accept all solidity primitive types for EIP-712 signing (ethereum#26770) Accept all primitive types in Solidity for EIP-712 from intN, uintN, intN[], uintN[] for N as 0 to 256 in multiples of 8 --------- Co-authored-by: Martin Holst Swende <[email protected]> * params: remove EF azure bootnodes (ethereum#26828) * core/vm: use golang native big.Int (ethereum#26834) reverts ethereum#26021, to use the upstream bigint instead. * core/vm: fix typo in comment (ethereum#26838) fixes eip 220 -> 2200 * core/forkid: fix issue in validation test (ethereum#26544) This changes the test to match the comment description. Using timestampedConfig in this test case is incorrect, the comment says 'local is at Gray Glacier' and isn't aware of more forks. * cmd/evm: update readmes for the tests (ethereum#26841) * core, core/types: plain Message struct (ethereum#25977) Here, the core.Message interface turns into a plain struct and types.Message gets removed. This is a breaking change to packages core and core/types. While we do not promise API stability for package core, we do for core/types. An exception can be made for types.Message, since it doesn't have any purpose apart from invoking the state transition in package core. types.Message was also marked deprecated by the same commit it got added in, 4dca5d4 (November 2016). The core.Message interface was added in December 2014, in commit db49417, for the purpose of 'testing' state transitions. It's the same change that made transaction struct fields private. Before that, the state transition used *types.Transaction directly. Over time, multiple implementations of the interface accrued across different packages, since constructing a Message is required whenever one wants to invoke the state transition. These implementations all looked very similar, a struct with private fields exposing the fields as accessor methods. By changing Message into a struct with public fields we can remove all these useless interface implementations. It will also hopefully simplify future changes to the type with less updates to apply across all of go-ethereum when a field is added to Message. --------- Co-authored-by: Felix Lange <[email protected]> * travis: only build PPAs nightly, not on every push, too heavy (ethereum#26846) * p2p: small comment typo (ethereum#26850) Update server.go * core: add Timestamp method in BlockGen (ethereum#26844) Since forks are now scheduled by block time, it can be necessary to check the timestamp of a block while generating transactions. * core/txpool: implement additional DoS defenses (ethereum#26648) This adds two new rules to the transaction pool: - A future transaction can not evict a pending transaction. - A transaction can not overspend available funds of a sender. --- Co-authored-by: dwn1998 <[email protected]> Co-authored-by: Martin Holst Swende <[email protected]> * params: go-ethereum v1.11.4 stable * params: begin v1.11.5 release cycle * tests: define `MuirGlacier` fork (ethereum#26856) add muir glacier to t8n * code/vm: fix comment typo (ethereum#26865) it should be constantinople rather than contantinople * core: minor code refactor (ethereum#26852) * core: refactor code * core: drop it from this anonymous goroutine func * core/txpool: use priceList.Put instead of heap.Push (ethereum#26863) Minor refactor to use the 'intended' accessor * eth: return error if 'safe' or 'finalized' tag used pre-merge (ethereum#26862) Co-authored-by: Martin Holst Swende <[email protected]> Co-authored-by: Felix Lange <[email protected]> * .travis.yml: reenable PPA build on tag push (ethereum#26873) * core/state, trie: port changes from PBSS (ethereum#26763) * p2p/discover: pass invalid discv5 packets to Unhandled channel (ethereum#26699) This makes it possible to run another protocol alongside discv5, by reading unhandled packets from the channel. * all: update links in documentation (ethereum#26882) Co-authored-by: Stephen Flynn <[email protected]> * Increase websocket frame size (from erigon rpc client) (ethereum#26883) This increases the maximum allowed message size to 32MB. Originally submitted at erigontech/erigon#2739 example block failure: https://etherscan.io/tx/0x1317d973a55cedf9b0f2df6ea48e8077dd176f5444a3423368a46d6e4db89982#internal * cmd/devp2p, cmd/geth: add version in --help output (ethereum#26895) Not sure why this was removed, it's pretty useful to see the version also in --help. * Update core/gaspool.go Co-authored-by: Inphi <[email protected]> --------- Signed-off-by: Sungwoo Kim <[email protected]> Co-authored-by: Péter Szilágyi <[email protected]> Co-authored-by: rjl493456442 <[email protected]> Co-authored-by: Martin Holst Swende <[email protected]> Co-authored-by: ucwong <[email protected]> Co-authored-by: Marius van der Wijden <[email protected]> Co-authored-by: Roman Krasiuk <[email protected]> Co-authored-by: Felix Lange <[email protected]> Co-authored-by: Jason Yuan <[email protected]> Co-authored-by: Jason Yuan <[email protected]> Co-authored-by: Sungwoo Kim <[email protected]> Co-authored-by: Yier <[email protected]> Co-authored-by: Catror <[email protected]> Co-authored-by: Nate Armstrong <[email protected]> Co-authored-by: Chris Ziogas <[email protected]> Co-authored-by: Sina Mahmoodi <[email protected]> Co-authored-by: Dan Cline <[email protected]> Co-authored-by: Peter (bitfly) <[email protected]> Co-authored-by: PulsarAI <[email protected]> Co-authored-by: turboboost55 <[email protected]> Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: Guruprasad Kamath <[email protected]> Co-authored-by: Sina Mahmoodi <[email protected]> Co-authored-by: James Prestwich <[email protected]> Co-authored-by: Daniel Fernandes <[email protected]> Co-authored-by: Rafael Matias <[email protected]> Co-authored-by: xiyang <[email protected]> Co-authored-by: panicalways <[email protected]> Co-authored-by: dwn1998 <[email protected]> Co-authored-by: s7v7nislands <[email protected]> Co-authored-by: lightclient <[email protected]> Co-authored-by: Stephen Flynn <[email protected]> Co-authored-by: Stephen Flynn <[email protected]> Co-authored-by: Jonathan Otto <[email protected]> Co-authored-by: Inphi <[email protected]>
1 parent 81828d7 commit 6713fd5

File tree

271 files changed

+9085
-2729
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

271 files changed

+9085
-2729
lines changed

.github/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,6 @@ and help.
3535

3636
## Configuration, dependencies, and tests
3737

38-
Please see the [Developers' Guide](https://geth.ethereum.org/docs/developers/devguide)
38+
Please see the [Developers' Guide](https://geth.ethereum.org/docs/developers/geth-developer/dev-guide)
3939
for more details on configuring your environment, managing project dependencies
4040
and testing procedures.

.travis.yml

Lines changed: 51 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,15 @@ jobs:
55
allow_failures:
66
- stage: build
77
os: osx
8-
go: 1.17.x
98
env:
109
- azure-osx
11-
- azure-ios
12-
- cocoapods-ios
1310

1411
include:
1512
# This builder only tests code linters on latest version of Go
1613
- stage: lint
1714
os: linux
1815
dist: bionic
19-
go: 1.19.x
16+
go: 1.20.x
2017
env:
2118
- lint
2219
git:
@@ -31,7 +28,7 @@ jobs:
3128
os: linux
3229
arch: amd64
3330
dist: bionic
34-
go: 1.19.x
31+
go: 1.20.x
3532
env:
3633
- docker
3734
services:
@@ -48,7 +45,7 @@ jobs:
4845
os: linux
4946
arch: arm64
5047
dist: bionic
51-
go: 1.19.x
48+
go: 1.20.x
5249
env:
5350
- docker
5451
services:
@@ -60,37 +57,13 @@ jobs:
6057
script:
6158
- go run build/ci.go docker -image -manifest amd64,arm64 -upload ethereum/client-go
6259

63-
# This builder does the Ubuntu PPA upload
64-
- stage: build
65-
if: type = push
66-
os: linux
67-
dist: bionic
68-
go: 1.19.x
69-
env:
70-
- ubuntu-ppa
71-
- GO111MODULE=on
72-
git:
73-
submodules: false # avoid cloning ethereum/tests
74-
addons:
75-
apt:
76-
packages:
77-
- devscripts
78-
- debhelper
79-
- dput
80-
- fakeroot
81-
- python-bzrlib
82-
- python-paramiko
83-
script:
84-
- echo '|1|7SiYPr9xl3uctzovOTj4gMwAC1M=|t6ReES75Bo/PxlOPJ6/GsGbTrM0= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0aKz5UTUndYgIGG7dQBV+HaeuEZJ2xPHo2DS2iSKvUL4xNMSAY4UguNW+pX56nAQmZKIZZ8MaEvSj6zMEDiq6HFfn5JcTlM80UwlnyKe8B8p7Nk06PPQLrnmQt5fh0HmEcZx+JU9TZsfCHPnX7MNz4ELfZE6cFsclClrKim3BHUIGq//t93DllB+h4O9LHjEUsQ1Sr63irDLSutkLJD6RXchjROXkNirlcNVHH/jwLWR5RcYilNX7S5bIkK8NlWPjsn/8Ua5O7I9/YoE97PpO6i73DTGLh5H9JN/SITwCKBkgSDWUt61uPK3Y11Gty7o2lWsBjhBUm2Y38CBsoGmBw==' >> ~/.ssh/known_hosts
85-
- go run build/ci.go debsrc -upload ethereum/ethereum -sftp-user geth-ci -signer "Go Ethereum Linux Builder <[email protected]>"
86-
8760
# This builder does the Linux Azure uploads
8861
- stage: build
8962
if: type = push
9063
os: linux
9164
dist: bionic
9265
sudo: required
93-
go: 1.19.x
66+
go: 1.20.x
9467
env:
9568
- azure-linux
9669
- GO111MODULE=on
@@ -120,43 +93,81 @@ jobs:
12093
- go run build/ci.go install -dlgo -arch arm64 -cc aarch64-linux-gnu-gcc
12194
- go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds
12295

96+
# This builder does the OSX Azure uploads
97+
- stage: build
98+
if: type = push
99+
os: osx
100+
go: 1.20.x
101+
env:
102+
- azure-osx
103+
- GO111MODULE=on
104+
git:
105+
submodules: false # avoid cloning ethereum/tests
106+
script:
107+
- go run build/ci.go install -dlgo
108+
- go run build/ci.go archive -type tar -signer OSX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds
109+
123110
# These builders run the tests
124111
- stage: build
125112
os: linux
126113
arch: amd64
127114
dist: bionic
128-
go: 1.19.x
115+
go: 1.20.x
129116
env:
130117
- GO111MODULE=on
131118
script:
132-
- go run build/ci.go test -coverage $TEST_PACKAGES
119+
- go run build/ci.go test $TEST_PACKAGES
133120

134121
- stage: build
135122
if: type = pull_request
136123
os: linux
137124
arch: arm64
138125
dist: bionic
139-
go: 1.18.x
126+
go: 1.19.x
127+
env:
128+
- GO111MODULE=on
129+
script:
130+
- go run build/ci.go test $TEST_PACKAGES
131+
132+
- stage: build
133+
os: linux
134+
dist: bionic
135+
go: 1.19.x
140136
env:
141137
- GO111MODULE=on
142138
script:
143-
- go run build/ci.go test -coverage $TEST_PACKAGES
139+
- go run build/ci.go test $TEST_PACKAGES
144140

141+
# This builder does the Ubuntu PPA nightly uploads
145142
- stage: build
143+
if: type = cron || (type = push && tag ~= /^v[0-9]/)
146144
os: linux
147145
dist: bionic
148-
go: 1.18.x
146+
go: 1.20.x
149147
env:
148+
- ubuntu-ppa
150149
- GO111MODULE=on
150+
git:
151+
submodules: false # avoid cloning ethereum/tests
152+
addons:
153+
apt:
154+
packages:
155+
- devscripts
156+
- debhelper
157+
- dput
158+
- fakeroot
159+
- python-bzrlib
160+
- python-paramiko
151161
script:
152-
- go run build/ci.go test -coverage $TEST_PACKAGES
162+
- echo '|1|7SiYPr9xl3uctzovOTj4gMwAC1M=|t6ReES75Bo/PxlOPJ6/GsGbTrM0= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0aKz5UTUndYgIGG7dQBV+HaeuEZJ2xPHo2DS2iSKvUL4xNMSAY4UguNW+pX56nAQmZKIZZ8MaEvSj6zMEDiq6HFfn5JcTlM80UwlnyKe8B8p7Nk06PPQLrnmQt5fh0HmEcZx+JU9TZsfCHPnX7MNz4ELfZE6cFsclClrKim3BHUIGq//t93DllB+h4O9LHjEUsQ1Sr63irDLSutkLJD6RXchjROXkNirlcNVHH/jwLWR5RcYilNX7S5bIkK8NlWPjsn/8Ua5O7I9/YoE97PpO6i73DTGLh5H9JN/SITwCKBkgSDWUt61uPK3Y11Gty7o2lWsBjhBUm2Y38CBsoGmBw==' >> ~/.ssh/known_hosts
163+
- go run build/ci.go debsrc -upload ethereum/ethereum -sftp-user geth-ci -signer "Go Ethereum Linux Builder <[email protected]>"
153164

154165
# This builder does the Azure archive purges to avoid accumulating junk
155166
- stage: build
156167
if: type = cron
157168
os: linux
158169
dist: bionic
159-
go: 1.19.x
170+
go: 1.20.x
160171
env:
161172
- azure-purge
162173
- GO111MODULE=on
@@ -170,9 +181,9 @@ jobs:
170181
if: type = cron
171182
os: linux
172183
dist: bionic
173-
go: 1.19.x
184+
go: 1.20.x
174185
env:
175186
- GO111MODULE=on
176187
script:
177-
- go run build/ci.go test -race -coverage $TEST_PACKAGES
188+
- go run build/ci.go test -race $TEST_PACKAGES
178189

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ARG VERSION=""
44
ARG BUILDNUM=""
55

66
# Build Geth in a stock Go builder container
7-
FROM golang:1.19-alpine as builder
7+
FROM golang:1.20-alpine as builder
88

99
RUN apk add --no-cache gcc musl-dev linux-headers git
1010

Dockerfile.alltools

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ARG VERSION=""
44
ARG BUILDNUM=""
55

66
# Build Geth in a stock Go builder container
7-
FROM golang:1.19-alpine as builder
7+
FROM golang:1.20-alpine as builder
88

99
RUN apk add --no-cache gcc musl-dev linux-headers git
1010

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ archives are published at https://geth.ethereum.org/downloads/.
1616

1717
For prerequisites and detailed build instructions please read the [Installation Instructions](https://geth.ethereum.org/docs/getting-started/installing-geth).
1818

19-
Building `geth` requires both a Go (version 1.18 or later) and a C compiler. You can install
19+
Building `geth` requires both a Go (version 1.19 or later) and a C compiler. You can install
2020
them using your favourite package manager. Once the dependencies are installed, run
2121

2222
```shell
@@ -36,18 +36,18 @@ directory.
3636

3737
| Command | Description |
3838
| :--------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
39-
| **`geth`** | Our main Ethereum CLI client. It is the entry point into the Ethereum network (main-, test- or private net), capable of running as a full node (default), archive node (retaining all historical state) or a light node (retrieving data live). It can be used by other processes as a gateway into the Ethereum network via JSON RPC endpoints exposed on top of HTTP, WebSocket and/or IPC transports. `geth --help` and the [CLI page](https://geth.ethereum.org/docs/interface/command-line-options) for command line options. |
39+
| **`geth`** | Our main Ethereum CLI client. It is the entry point into the Ethereum network (main-, test- or private net), capable of running as a full node (default), archive node (retaining all historical state) or a light node (retrieving data live). It can be used by other processes as a gateway into the Ethereum network via JSON RPC endpoints exposed on top of HTTP, WebSocket and/or IPC transports. `geth --help` and the [CLI page](https://geth.ethereum.org/docs/fundamentals/command-line-options) for command line options. |
4040
| `clef` | Stand-alone signing tool, which can be used as a backend signer for `geth`. |
4141
| `devp2p` | Utilities to interact with nodes on the networking layer, without running a full blockchain. |
42-
| `abigen` | Source code generator to convert Ethereum contract definitions into easy-to-use, compile-time type-safe Go packages. It operates on plain [Ethereum contract ABIs](https://docs.soliditylang.org/en/develop/abi-spec.html) with expanded functionality if the contract bytecode is also available. However, it also accepts Solidity source files, making development much more streamlined. Please see our [Native DApps](https://geth.ethereum.org/docs/dapp/native-bindings) page for details. |
42+
| `abigen` | Source code generator to convert Ethereum contract definitions into easy-to-use, compile-time type-safe Go packages. It operates on plain [Ethereum contract ABIs](https://docs.soliditylang.org/en/develop/abi-spec.html) with expanded functionality if the contract bytecode is also available. However, it also accepts Solidity source files, making development much more streamlined. Please see our [Native DApps](https://geth.ethereum.org/docs/developers/dapp-developer/native-bindings) page for details. |
4343
| `bootnode` | Stripped down version of our Ethereum client implementation that only takes part in the network node discovery protocol, but does not run any of the higher level application protocols. It can be used as a lightweight bootstrap node to aid in finding peers in private networks. |
4444
| `evm` | Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode. Its purpose is to allow isolated, fine-grained debugging of EVM opcodes (e.g. `evm --code 60ff60ff --debug run`). |
4545
| `rlpdump` | Developer utility tool to convert binary RLP ([Recursive Length Prefix](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp)) dumps (data encoding used by the Ethereum protocol both network as well as consensus wise) to user-friendlier hierarchical representation (e.g. `rlpdump --hex CE0183FFFFFFC4C304050583616263`). |
4646

4747
## Running `geth`
4848

4949
Going through all the possible command line flags is out of scope here (please consult our
50-
[CLI Wiki page](https://geth.ethereum.org/docs/interface/command-line-options)),
50+
[CLI Wiki page](https://geth.ethereum.org/docs/fundamentals/command-line-options)),
5151
but we've enumerated a few common parameter combos to get you up to speed quickly
5252
on how you can run your own `geth` instance.
5353

@@ -82,10 +82,10 @@ This command will:
8282
* Start `geth` in snap sync mode (default, can be changed with the `--syncmode` flag),
8383
causing it to download more data in exchange for avoiding processing the entire history
8484
of the Ethereum network, which is very CPU intensive.
85-
* Start the built-in interactive [JavaScript console](https://geth.ethereum.org/docs/interface/javascript-console),
85+
* Start the built-in interactive [JavaScript console](https://geth.ethereum.org/docs/interacting-with-geth/javascript-console),
8686
(via the trailing `console` subcommand) through which you can interact using [`web3` methods](https://github.com/ChainSafe/web3.js/blob/0.20.7/DOCUMENTATION.md)
8787
(note: the `web3` version bundled within `geth` is very old, and not up to date with official docs),
88-
as well as `geth`'s own [management APIs](https://geth.ethereum.org/docs/rpc/server).
88+
as well as `geth`'s own [management APIs](https://geth.ethereum.org/docs/interacting-with-geth/rpc).
8989
This tool is optional and if you leave it out you can always attach it to an already running
9090
`geth` instance with `geth attach`.
9191

@@ -175,7 +175,7 @@ accessible from the outside.
175175
As a developer, sooner rather than later you'll want to start interacting with `geth` and the
176176
Ethereum network via your own programs and not manually through the console. To aid
177177
this, `geth` has built-in support for a JSON-RPC based APIs ([standard APIs](https://ethereum.github.io/execution-apis/api-documentation/)
178-
and [`geth` specific APIs](https://geth.ethereum.org/docs/rpc/server)).
178+
and [`geth` specific APIs](https://geth.ethereum.org/docs/interacting-with-geth/rpc)).
179179
These can be exposed via HTTP, WebSockets and IPC (UNIX sockets on UNIX based
180180
platforms, and named pipes on Windows).
181181

0 commit comments

Comments
 (0)