@@ -54,14 +54,14 @@ on how you can run your own `geth` instance.
54
54
55
55
Minimum:
56
56
57
- * CPU with 2 + cores
58
- * 4GB RAM
57
+ * CPU with 4 + cores
58
+ * 8GB RAM
59
59
* 1TB free storage space to sync the Mainnet
60
60
* 8 MBit/sec download Internet service
61
61
62
62
Recommended:
63
63
64
- * Fast CPU with 4 + cores
64
+ * Fast CPU with 8 + cores
65
65
* 16GB+ RAM
66
66
* High-performance SSD with at least 1TB of free space
67
67
* 25+ MBit/sec download Internet service
@@ -138,8 +138,6 @@ export your existing configuration:
138
138
$ geth --your-favourite-flags dumpconfig
139
139
```
140
140
141
- * Note: This works only with ` geth ` v1.6.0 and above.*
142
-
143
141
#### Docker quick start
144
142
145
143
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:
187
185
* ` --ws.api ` API's offered over the WS-RPC interface (default: ` eth,net,web3 ` )
188
186
* ` --ws.origins ` Origins from which to accept WebSocket requests
189
187
* ` --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 ` )
191
188
* ` --ipcpath ` Filename for IPC socket/pipe within the datadir (explicit paths escape it)
192
189
193
190
You'll need to use your own programming environments' capabilities (libraries, tools, etc) to
@@ -206,118 +203,14 @@ APIs!**
206
203
Maintaining your own private network is more involved as a lot of configurations taken for
207
204
granted in the official networks need to be manually set up.
208
205
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.
300
208
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:
316
210
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 ) .
321
214
322
215
## Contribution
323
216
0 commit comments