Skip to content

Commit 033de2a

Browse files
README: remove private network section from readme (ethereum#31005)
1 parent 5065e6c commit 033de2a

File tree

1 file changed

+9
-116
lines changed

1 file changed

+9
-116
lines changed

README.md

Lines changed: 9 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ on how you can run your own `geth` instance.
5454

5555
Minimum:
5656

57-
* CPU with 2+ cores
58-
* 4GB RAM
57+
* CPU with 4+ cores
58+
* 8GB RAM
5959
* 1TB free storage space to sync the Mainnet
6060
* 8 MBit/sec download Internet service
6161

6262
Recommended:
6363

64-
* Fast CPU with 4+ cores
64+
* Fast CPU with 8+ cores
6565
* 16GB+ RAM
6666
* High-performance SSD with at least 1TB of free space
6767
* 25+ MBit/sec download Internet service
@@ -138,8 +138,6 @@ export your existing configuration:
138138
$ geth --your-favourite-flags dumpconfig
139139
```
140140

141-
*Note: This works only with `geth` v1.6.0 and above.*
142-
143141
#### Docker quick start
144142

145143
One of the quickest ways to get Ethereum up and running on your machine is by using
@@ -187,7 +185,6 @@ HTTP based JSON-RPC API options:
187185
* `--ws.api` API's offered over the WS-RPC interface (default: `eth,net,web3`)
188186
* `--ws.origins` Origins from which to accept WebSocket requests
189187
* `--ipcdisable` Disable the IPC-RPC server
190-
* `--ipcapi` API's offered over the IPC-RPC interface (default: `admin,debug,eth,miner,net,personal,txpool,web3`)
191188
* `--ipcpath` Filename for IPC socket/pipe within the datadir (explicit paths escape it)
192189

193190
You'll need to use your own programming environments' capabilities (libraries, tools, etc) to
@@ -206,118 +203,14 @@ APIs!**
206203
Maintaining your own private network is more involved as a lot of configurations taken for
207204
granted in the official networks need to be manually set up.
208205

209-
#### Defining the private genesis state
210-
211-
First, you'll need to create the genesis state of your networks, which all nodes need to be
212-
aware of and agree upon. This consists of a small JSON file (e.g. call it `genesis.json`):
213-
214-
```json
215-
{
216-
"config": {
217-
"chainId": <arbitrary positive integer>,
218-
"homesteadBlock": 0,
219-
"eip150Block": 0,
220-
"eip155Block": 0,
221-
"eip158Block": 0,
222-
"byzantiumBlock": 0,
223-
"constantinopleBlock": 0,
224-
"petersburgBlock": 0,
225-
"istanbulBlock": 0,
226-
"berlinBlock": 0,
227-
"londonBlock": 0
228-
},
229-
"alloc": {},
230-
"coinbase": "0x0000000000000000000000000000000000000000",
231-
"difficulty": "0x20000",
232-
"extraData": "",
233-
"gasLimit": "0x2fefd8",
234-
"nonce": "0x0000000000000042",
235-
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
236-
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
237-
"timestamp": "0x00"
238-
}
239-
```
240-
241-
The above fields should be fine for most purposes, although we'd recommend changing
242-
the `nonce` to some random value so you prevent unknown remote nodes from being able
243-
to connect to you. If you'd like to pre-fund some accounts for easier testing, create
244-
the accounts and populate the `alloc` field with their addresses.
245-
246-
```json
247-
"alloc": {
248-
"0x0000000000000000000000000000000000000001": {
249-
"balance": "111111111"
250-
},
251-
"0x0000000000000000000000000000000000000002": {
252-
"balance": "222222222"
253-
}
254-
}
255-
```
256-
257-
With the genesis state defined in the above JSON file, you'll need to initialize **every**
258-
`geth` node with it prior to starting it up to ensure all blockchain parameters are correctly
259-
set:
260-
261-
```shell
262-
$ geth init path/to/genesis.json
263-
```
264-
265-
#### Creating the rendezvous point
266-
267-
With all nodes that you want to run initialized to the desired genesis state, you'll need to
268-
start a bootstrap node that others can use to find each other in your network and/or over
269-
the internet. The clean way is to configure and run a dedicated bootnode:
270-
271-
```shell
272-
# Use the devp2p tool to create a node file.
273-
# The devp2p tool is also part of the 'alltools' distribution bundle.
274-
$ devp2p key generate node1.key
275-
# file node1.key is created.
276-
$ devp2p key to-enr -ip 10.2.3.4 -udp 30303 -tcp 30303 node1.key
277-
# Prints the ENR for use in --bootnode flag of other nodes.
278-
# Note this method requires knowing the IP/ports ahead of time.
279-
$ geth --nodekey=node1.key
280-
```
281-
282-
With the bootnode online, it will display an [`enode` URL](https://ethereum.org/en/developers/docs/networking-layer/network-addresses/#enode)
283-
that other nodes can use to connect to it and exchange peer information. Make sure to
284-
replace the displayed IP address information (most probably `[::]`) with your externally
285-
accessible IP to get the actual `enode` URL.
286-
287-
*Note: You could previously use the `bootnode` utility to start a stripped down version of geth. This is not possible anymore.*
288-
289-
#### Starting up your member nodes
290-
291-
With the bootnode operational and externally reachable (you can try
292-
`telnet <ip> <port>` to ensure it's indeed reachable), start every subsequent `geth`
293-
node pointed to the bootnode for peer discovery via the `--bootnodes` flag. It will
294-
probably also be desirable to keep the data directory of your private network separated, so
295-
do also specify a custom `--datadir` flag.
296-
297-
```shell
298-
$ geth --datadir=path/to/custom/data/folder --bootnodes=<bootnode-enode-url-from-above>
299-
```
206+
Unfortunately since [the Merge](https://ethereum.org/en/roadmap/merge/) it is no longer possible
207+
to easily set up a network of geth nodes without also setting up a corresponding beacon chain.
300208

301-
*Note: Since your network will be completely cut off from the main and test networks, you'll
302-
also need to configure a miner to process transactions and create new blocks for you.*
303-
304-
#### Running a private miner
305-
306-
307-
In a private network setting a single CPU miner instance is more than enough for
308-
practical purposes as it can produce a stable stream of blocks at the correct intervals
309-
without needing heavy resources (consider running on a single thread, no need for multiple
310-
ones either). To start a `geth` instance for mining, run it with all your usual flags, extended
311-
by:
312-
313-
```shell
314-
$ geth <usual-flags> --mine --miner.threads=1 --miner.etherbase=0x0000000000000000000000000000000000000000
315-
```
209+
There are three different solutions depending on your use case:
316210

317-
Which will start mining blocks and transactions on a single CPU thread, crediting all
318-
proceedings to the account specified by `--miner.etherbase`. You can further tune the mining
319-
by changing the default gas limit blocks converge to (`--miner.targetgaslimit`) and the price
320-
transactions are accepted at (`--miner.gasprice`).
211+
* If you are looking for a simple way to test smart contracts from go in your CI, you can use the [Simulated Backend](https://geth.ethereum.org/docs/developers/dapp-developer/native-bindings#blockchain-simulator).
212+
* If you want a convenient single node environment for testing, you can use our [Dev Mode](https://geth.ethereum.org/docs/developers/dapp-developer/dev-mode).
213+
* If you are looking for a multiple node test network, you can set one up quite easily with [Kurtosis](https://geth.ethereum.org/docs/fundamentals/kurtosis).
321214

322215
## Contribution
323216

0 commit comments

Comments
 (0)