2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								package  utils 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								import  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"crypto/ecdsa" 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"fmt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"log" 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-09 12:00:51 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"math/big" 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"net/http" 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-09 23:00:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"os" 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-12 14:24:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"path/filepath" 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-12 15:20:53 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"runtime" 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-12 14:24:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"github.com/codegangsta/cli" 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-13 10:13:52 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/ethereum/ethash" 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-07 12:39:52 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/accounts" 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-18 14:44:58 +07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/common" 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/core" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/crypto" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/eth" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/ethdb" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/event" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/logger" 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-03 17:09:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/logger/glog" 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/p2p/nat" 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-09 23:00:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/rpc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/ethereum/go-ethereum/xeth" 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-10 16:44:48 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  init ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									cli . AppHelpTemplate  =  ` { { . Name } }  { { if  . Flags } } [ global  options ]  { { end } } command { { if  . Flags } }  [ command  options ] { { end } }  [ arguments ... ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								VERSION : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   { { . Version } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								COMMANDS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   { { range  . Commands } } { { . Name } } { { with  . ShortName } } ,  { { . } } { { end } } { {  "\t"  } } { { . Usage } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   { { end } } { { if  . Flags } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								GLOBAL  OPTIONS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   { { range  . Flags } } { { . } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   { { end } } { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									cli . CommandHelpTemplate  =  ` { { . Name } } { { if  . Subcommands } }  command { { end } } { { if  . Flags } }  [ command  options ] { { end } }  [ arguments ... ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ { if  . Description } } { { . Description } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ { end } } { { if  . Subcommands } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								SUBCOMMANDS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									{ { range  . Subcommands } } { { . Name } } { { with  . ShortName } } ,  { { . } } { { end } } { {  "\t"  } } { { . Usage } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									{ { end } } { { end } } { { if  . Flags } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								OPTIONS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									{ { range  . Flags } } { { . } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									{ { end } } { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-09 22:51:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// NewApp creates an app with sane defaults. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  NewApp ( version ,  usage  string )  * cli . App  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									app  :=  cli . NewApp ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-12 14:24:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									app . Name  =  filepath . Base ( os . Args [ 0 ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-09 22:51:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									app . Author  =  "" 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-26 01:03:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									//app.Authors = nil 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-09 22:51:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									app . Email  =  "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									app . Version  =  version 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									app . Usage  =  usage 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  app 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								// These are all the command line flags we support. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// If you add to this list, please remember to include the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// flag in the appropriate command definition. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// The flags are defined here so their names and help texts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// are the same for all commands. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								var  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// General settings 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-08 15:43:55 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									DataDirFlag  =  DirectoryFlag { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										Name :   "datadir" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Data directory to be used" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-08 15:43:55 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Value :  DirectoryString { common . DefaultDataDir ( ) } , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-18 14:44:58 +07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									ProtocolVersionFlag  =  cli . IntFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "protocolversion" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "ETH protocol version (integer)" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-18 14:44:58 +07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Value :  eth . ProtocolVersion , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									NetworkIdFlag  =  cli . IntFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "networkid" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Network Id (integer)" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-18 14:44:58 +07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Value :  eth . NetworkId , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-13 10:13:52 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BlockchainVersionFlag  =  cli . IntFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "blockchainversion" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Blockchain version (integer)" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-13 10:13:52 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Value :  core . BlockChainVersion , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-18 23:53:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									IdentityFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "identity" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Custom node name" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-18 23:53:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-08 13:22:31 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									NatspecEnabledFlag  =  cli . BoolFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "natspec" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Enable NatSpec confirmation notice" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-18 14:44:58 +07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// miner settings 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									MinerThreadsFlag  =  cli . IntFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "minerthreads" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Number of miner threads" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  runtime . NumCPU ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									MiningEnabledFlag  =  cli . BoolFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "mine" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Enable mining" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-20 16:56:17 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									AutoDAGFlag  =  cli . BoolFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "autodag" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Enable automatic DAG pregeneration" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-26 21:49:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									EtherbaseFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-27 12:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Name :   "etherbase" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Public address for block mining rewards. By default the address of your primary account is used" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-26 21:49:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Value :  "primary" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-09 12:00:51 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									GasPriceFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "gasprice" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Sets the minimal gasprice when mining transactions" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  new ( big . Int ) . Mul ( big . NewInt ( 10 ) ,  common . Szabo ) . String ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-18 14:44:58 +07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									UnlockedAccountFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "unlock" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Unlock the account given until this program exits (prompts for password). '--unlock primary' unlocks the primary account" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-23 13:00:06 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Value :  "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									PasswordFileFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "password" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Path to password file to use with options and subcommands needing a password" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-23 13:00:06 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Value :  "" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-18 14:44:58 +07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-18 14:44:58 +07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									// logging and debug settings 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									LogFileFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "logfile" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Send log output to a file" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-09 12:00:51 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									VerbosityFlag  =  cli . IntFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "verbosity" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Logging verbosity: 0-6 (0=silent, 1=error, 2=warn, 3=info, 4=core, 5=debug, 6=debug detail)" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										Value :  int ( logger . InfoLevel ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-21 09:20:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									LogJSONFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "logjson" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Send json structured log output to a file or '-' for standard output (default: no json output)" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  "" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									LogToStdErrFlag  =  cli . BoolFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "logtostderr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Logs are written to standard error instead of to files." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									LogVModuleFlag  =  cli . GenericFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "vmodule" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "The syntax of the argument is a comma-separated list of pattern=N, where pattern is a literal file name (minus the \".go\" suffix) or \"glob\" pattern and N is a log verbosity level." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Value :  glog . GetVModule ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-18 14:44:58 +07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									VMDebugFlag  =  cli . BoolFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "vmdebug" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Virtual Machine debug output" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BacktraceAtFlag  =  cli . GenericFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "backtrace_at" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "If set to a file and line number (e.g., \"block.go:271\") holding a logging statement, a stack trace will be logged" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Value :  glog . GetTraceLocation ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 19:14:49 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									PProfEanbledFlag  =  cli . BoolFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "pprof" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Enable the profiling server on localhost" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									PProfPortFlag  =  cli . IntFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "pprofport" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Port on which the profiler should listen" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  6060 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// RPC settings 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									RPCEnabledFlag  =  cli . BoolFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "rpc" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Enable the JSON-RPC server" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									RPCListenAddrFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "rpcaddr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Listening address for the JSON-RPC server" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  "127.0.0.1" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									RPCPortFlag  =  cli . IntFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "rpcport" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Port on which the JSON-RPC server should listen" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  8545 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-29 21:21:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									RPCCORSDomainFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "rpccorsdomain" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Domain on which to send Access-Control-Allow-Origin header" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									// Network Settings 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									MaxPeersFlag  =  cli . IntFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "maxpeers" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Maximum number of network peers (network disabled if set to 0)" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-08 16:01:31 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Value :  25 , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-04 17:35:49 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									MaxPendingPeersFlag  =  cli . IntFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "maxpendpeers" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Maximum number of pending connection attempts (defaults used if set to 0)" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									ListenPortFlag  =  cli . IntFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "port" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Network listening port" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  30303 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BootnodesFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "bootnodes" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-24 12:46:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Space-separated enode URLs for p2p discovery bootstrap" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										Value :  "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									NodeKeyFileFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "nodekey" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "P2P node key file" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									NodeKeyHexFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "nodekeyhex" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "P2P node key as hex (for testing)" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									NATFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "nat" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "NAT port mapping mechanism (any|none|upnp|pmp|extip:<IP>)" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										Value :  "any" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-26 19:07:24 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									NoDiscoverFlag  =  cli . BoolFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "nodiscover" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "Disables the peer discovery mechanism (manual peer addition)" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									WhisperEnabledFlag  =  cli . BoolFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "shh" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:41:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Usage :  "Enable whisper" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 23:11:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									// ATM the url is left to the user and deployment to 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-15 13:31:40 +07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									JSpathFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "jspath" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "JS library path to be used with console and js subcommands" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  "." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 23:11:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									SolcPathFlag  =  cli . StringFlag { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :   "solc" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Usage :  "solidity compiler to be used" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Value :  "solc" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 14:50:31 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// MakeNAT creates a port mapper from set command line flags. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  MakeNAT ( ctx  * cli . Context )  nat . Interface  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									natif ,  err  :=  nat . Parse ( ctx . GlobalString ( NATFlag . Name ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Fatalf ( "Option %s: %v" ,  NATFlag . Name ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  natif 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 14:50:31 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// MakeNodeKey creates a node key from set command line flags. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  MakeNodeKey ( ctx  * cli . Context )  ( key  * ecdsa . PrivateKey )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									hex ,  file  :=  ctx . GlobalString ( NodeKeyHexFlag . Name ) ,  ctx . GlobalString ( NodeKeyFileFlag . Name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									var  err  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									switch  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									case  file  !=  ""  &&  hex  !=  "" : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Fatalf ( "Options %q and %q are mutually exclusive" ,  NodeKeyFileFlag . Name ,  NodeKeyHexFlag . Name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									case  file  !=  "" : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  key ,  err  =  crypto . LoadECDSA ( file ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											Fatalf ( "Option %q: %v" ,  NodeKeyFileFlag . Name ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									case  hex  !=  "" : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  key ,  err  =  crypto . HexToECDSA ( hex ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											Fatalf ( "Option %q: %v" ,  NodeKeyHexFlag . Name ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 14:50:31 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// MakeEthConfig creates ethereum options from set command line flags. 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-13 18:30:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  MakeEthConfig ( clientID ,  version  string ,  ctx  * cli . Context )  * eth . Config  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-18 23:53:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									customName  :=  ctx . GlobalString ( IdentityFlag . Name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  len ( customName )  >  0  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										clientID  +=  "/"  +  customName 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-13 18:30:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  & eth . Config { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-14 16:12:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Name :                common . MakeName ( clientID ,  version ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										DataDir :             ctx . GlobalString ( DataDirFlag . Name ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										ProtocolVersion :     ctx . GlobalInt ( ProtocolVersionFlag . Name ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										BlockChainVersion :   ctx . GlobalInt ( BlockchainVersionFlag . Name ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										SkipBcVersionCheck :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										NetworkId :           ctx . GlobalInt ( NetworkIdFlag . Name ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										LogFile :             ctx . GlobalString ( LogFileFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-09 12:00:51 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Verbosity :           ctx . GlobalInt ( VerbosityFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-14 16:12:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										LogJSON :             ctx . GlobalString ( LogJSONFlag . Name ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Etherbase :           ctx . GlobalString ( EtherbaseFlag . Name ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										MinerThreads :        ctx . GlobalInt ( MinerThreadsFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 14:50:31 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										AccountManager :      MakeAccountManager ( ctx ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-14 16:12:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										VmDebug :             ctx . GlobalBool ( VMDebugFlag . Name ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										MaxPeers :            ctx . GlobalInt ( MaxPeersFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-04 17:35:49 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										MaxPendingPeers :     ctx . GlobalInt ( MaxPendingPeersFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-14 16:12:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Port :                ctx . GlobalString ( ListenPortFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 14:50:31 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										NAT :                 MakeNAT ( ctx ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-14 16:12:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										NatSpec :             ctx . GlobalBool ( NatspecEnabledFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-26 19:07:24 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Discovery :           ! ctx . GlobalBool ( NoDiscoverFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 14:50:31 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										NodeKey :             MakeNodeKey ( ctx ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Shh :                 ctx . GlobalBool ( WhisperEnabledFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-14 16:12:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Dial :                true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										BootNodes :           ctx . GlobalString ( BootnodesFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-09 12:00:51 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										GasPrice :            common . String2Big ( ctx . GlobalString ( GasPriceFlag . Name ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-20 02:04:52 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										SolcPath :            ctx . GlobalString ( SolcPathFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-20 16:56:17 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										AutoDAG :             ctx . GlobalBool ( AutoDAGFlag . Name )  ||  ctx . GlobalBool ( MiningEnabledFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-13 18:30:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 13:29:34 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// SetupLogger configures glog from the logging-related command line flags. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  SetupLogger ( ctx  * cli . Context )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									glog . SetV ( ctx . GlobalInt ( VerbosityFlag . Name ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									glog . CopyStandardLogTo ( "INFO" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									glog . SetToStderr ( true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									glog . SetLogDir ( ctx . GlobalString ( LogFileFlag . Name ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-13 10:13:52 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 14:50:31 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// MakeChain creates a chain manager from set command line flags. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  MakeChain ( ctx  * cli . Context )  ( chain  * core . ChainManager ,  blockDB ,  stateDB ,  extraDB  common . Database )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 13:29:34 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									dd  :=  ctx . GlobalString ( DataDirFlag . Name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									var  err  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  blockDB ,  err  =  ethdb . NewLDBDatabase ( filepath . Join ( dd ,  "blockchain" ) ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										Fatalf ( "Could not open database: %v" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 13:29:34 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  stateDB ,  err  =  ethdb . NewLDBDatabase ( filepath . Join ( dd ,  "state" ) ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 18:26:16 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Fatalf ( "Could not open database: %v" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 13:29:34 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  extraDB ,  err  =  ethdb . NewLDBDatabase ( filepath . Join ( dd ,  "extra" ) ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-13 10:13:52 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Fatalf ( "Could not open database: %v" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									eventMux  :=  new ( event . TypeMux ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 08:24:15 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									pow  :=  ethash . New ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 13:29:34 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									chain  =  core . NewChainManager ( blockDB ,  stateDB ,  pow ,  eventMux ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-03 15:56:25 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									proc  :=  core . NewBlockProcessor ( stateDB ,  extraDB ,  pow ,  chain ,  eventMux ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 13:29:34 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									chain . SetProcessor ( proc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  chain ,  blockDB ,  stateDB ,  extraDB 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 03:00:41 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-07 12:39:52 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-27 14:50:31 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// MakeChain creates an account manager from set command line flags. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  MakeAccountManager ( ctx  * cli . Context )  * accounts . Manager  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-07 12:39:52 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									dataDir  :=  ctx . GlobalString ( DataDirFlag . Name ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-12 18:33:04 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									ks  :=  crypto . NewKeyStorePassphrase ( filepath . Join ( dataDir ,  "keystore" ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-10 00:09:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  accounts . NewManager ( ks ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-07 12:39:52 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-09 23:00:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:47:17 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  StartRPC ( eth  * eth . Ethereum ,  ctx  * cli . Context )  error  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-29 21:26:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									config  :=  rpc . RpcConfig { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										ListenAddress :  ctx . GlobalString ( RPCListenAddrFlag . Name ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										ListenPort :     uint ( ctx . GlobalInt ( RPCPortFlag . Name ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										CorsDomain :     ctx . GlobalString ( RPCCORSDomainFlag . Name ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-09 23:00:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-29 21:26:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									xeth  :=  xeth . New ( eth ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-22 00:47:17 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  rpc . Start ( xeth ,  config ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-09 23:00:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-20 18:45:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  StartPProf ( ctx  * cli . Context )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									address  :=  fmt . Sprintf ( "localhost:%d" ,  ctx . GlobalInt ( PProfPortFlag . Name ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									go  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										log . Println ( http . ListenAndServe ( address ,  nil ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}