@@ -7,7 +7,7 @@ import Node from '../lib/node'
77import { Server as RPCServer } from 'jayson'
88import { Config } from '../lib/config'
99import Common from '@ethereumjs/common'
10- const RPCManager = require ( '../lib/rpc' )
10+ import { RPCManager } from '../lib/rpc'
1111const level = require ( 'level' )
1212const path = require ( 'path' )
1313const fs = require ( 'fs-extra' )
@@ -18,7 +18,7 @@ const args = require('yargs')
1818 network : {
1919 describe : `Network` ,
2020 choices : networks . map ( ( n ) => n [ 1 ] ) ,
21- default : networks [ 0 ] [ 1 ] ,
21+ default : 'mainnet' ,
2222 } ,
2323 'network-id' : {
2424 describe : `Network ID` ,
@@ -47,12 +47,12 @@ const args = require('yargs')
4747 rpc : {
4848 describe : 'Enable the JSON-RPC server' ,
4949 boolean : true ,
50- default : false ,
50+ default : Config . RPC_DEFAULT ,
5151 } ,
5252 rpcport : {
5353 describe : 'HTTP-RPC server listening port' ,
5454 number : true ,
55- default : 8545 ,
55+ default : Config . RPCPORT_DEFAULT ,
5656 } ,
5757 rpcaddr : {
5858 describe : 'HTTP-RPC server listening interface' ,
@@ -81,53 +81,72 @@ const args = require('yargs')
8181 . locale ( 'en_EN' ) . argv
8282const logger = getLogger ( { loglevel : args . loglevel } )
8383
84- async function runNode ( options : any ) {
84+ /**
85+ * Initializes and starts a Node and reacts on the
86+ * main node lifecycle events
87+ *
88+ * @param config
89+ */
90+ async function runNode ( config : Config ) {
91+ const syncDataDir = config . getSyncDataDirectory ( )
92+ fs . ensureDirSync ( syncDataDir )
93+ logger . info ( `Sync data directory: ${ syncDataDir } ` )
94+
8595 logger . info ( 'Initializing Ethereumjs client...' )
86- if ( options . config . lightserv ) {
96+ if ( config . lightserv ) {
8797 logger . info ( `Serving light peer requests` )
8898 }
89- const node = new Node ( options )
99+ const node = new Node ( {
100+ config,
101+ db : level ( syncDataDir ) ,
102+ } )
90103 node . on ( 'error' , ( err : any ) => logger . error ( err ) )
91104 node . on ( 'listening' , ( details : any ) => {
92105 logger . info ( `Listener up transport=${ details . transport } url=${ details . url } ` )
93106 } )
94107 node . on ( 'synchronized' , ( ) => {
95108 logger . info ( 'Synchronized' )
96109 } )
97- logger . info ( `Connecting to network: ${ options . config . common . chainName ( ) } ` )
110+ logger . info ( `Connecting to network: ${ config . common . chainName ( ) } ` )
98111 await node . open ( )
99112 logger . info ( 'Synchronizing blockchain...' )
100113 await node . start ( )
101114
102115 return node
103116}
104117
105- function runRpcServer ( node : any , options : any ) {
106- const { rpcport, rpcaddr } = options
107- const manager = new RPCManager ( node , options )
118+ function runRpcServer ( node : Node , config : Config ) {
119+ const { rpcport, rpcaddr } = config
120+ const manager = new RPCManager ( node , config )
108121 const server = new RPCServer ( manager . getMethods ( ) )
109122 logger . info ( `RPC HTTP endpoint opened: http://${ rpcaddr } :${ rpcport } ` )
110123 server . http ( ) . listen ( rpcport )
111124
112125 return server
113126}
114127
128+ /**
129+ * Main entry point to start a client
130+ */
115131async function run ( ) {
116132 // give network id precedence over network name
133+ let chain : string | number
117134 if ( args . networkId ) {
118- const network = networks . find ( ( n ) => n [ 0 ] === `${ args . networkId } ` )
119- if ( network ) {
120- args . network = network [ 1 ]
121- }
135+ chain = args . networkId
136+ } else {
137+ chain = args . network
122138 }
123139
124- const common = new Common ( { chain : args . network , hardfork : 'chainstart' } )
140+ const common = new Common ( { chain, hardfork : 'chainstart' } )
125141 const config = new Config ( {
126142 common,
127143 logger,
128144 syncmode : args . syncmode ,
129145 lightserv : args . lightserv ,
130146 transports : args . transports ,
147+ rpc : args . rpc ,
148+ rpcport : args . rpcport ,
149+ rpcaddr : args . rpcaddr ,
131150 minPeers : args . minPeers ,
132151 maxPeers : args . maxPeers ,
133152 } )
@@ -136,18 +155,8 @@ async function run() {
136155 // eslint-disable-next-line @typescript-eslint/no-unused-vars
137156 const chainParams = args . params ? await parseParams ( args . params ) : args . network
138157
139- const syncDataDir = config . getSyncDataDirectory ( )
140- fs . ensureDirSync ( syncDataDir )
141- logger . info ( `Sync data directory: ${ syncDataDir } ` )
142-
143- const options = {
144- config,
145- db : level ( syncDataDir ) ,
146- rpcport : args . rpcport ,
147- rpcaddr : args . rpcaddr ,
148- }
149- const node = await runNode ( options )
150- const server = args . rpc ? runRpcServer ( node , options ) : null
158+ const node = await runNode ( config )
159+ const server = config . rpc ? runRpcServer ( node , config ) : null
151160
152161 process . on ( 'SIGINT' , async ( ) => {
153162 logger . info ( 'Caught interrupt signal. Shutting down...' )
0 commit comments