Пример #1
0
 def __init__(self, log, clientparams):
     self.clientparams = clientparams
     self.log = log
     self.dbenv_handles = {}
     self.account_infos = {}  # account => (handle, dirname, filename)
     self.dbenv = self.get_dbenv_handle(clientparams.data_directory)
     # Logfile
     handler = logging.handlers.RotatingFileHandler(
         os.path.join(clientparams.data_directory,
                      clientparams.logfilename),
         maxBytes=1024 * 1024 * 8,
         backupCount=5)
     self.log.addHandler(handler)
     fmt = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
     handler.setFormatter(fmt)
     # Blockchain
     self.database = BSDDbBlockChainDatabase(self.log, self.dbenv,
                                             clientparams.runmode)
     self.database.open_or_create(GENESIS[clientparams.runmode])
     self.blockchain = BlockchainWithAltbranches(self.log, self.database)
     # Transaction Pool
     self.txpool = TransactionPool()
     # Processpool
     self.process_pool = multiprocessing.Pool(multiprocessing.cpu_count())
     # Node
     nodeparams = NodeParams(runmode=clientparams.runmode,
                             port=clientparams.port,
                             version=70000,
                             enabledservices=SERVICES_NODE_NETWORK,
                             nonce=clientparams.nonce,
                             sub_version_num=clientparams.sub_version_num)
     self.node = BitcoinNode(self.blockchain, self.txpool,
                             self.process_pool, nodeparams, self.log)
     # Address Pool
     self.addr_pool = AddrPool()
     # Bootstrapper, AddrPoolFiller
     if clientparams.get("findpeers", True):
         self.bootstrapper = Bootstrapper(clientparams.runmode, self.log)
         self.addrpool_filler = AddrPoolFiller(self.node, self.bootstrapper,
                                               self.addr_pool)
     for sockaddr in clientparams.seeds:
         self.addr_pool.addpeer(sockaddr)
     # Reconnector
     self.peer_reconnector = PeerReconnector(
         self.log,
         self.node,
         self.addr_pool,
         min_connections=clientparams.targetpeers)
     # Wallets
     self.account_set = AccountSet()