def test_serialize_deserialize(self): output = self.block.serialize() block_2 = Block.deserialize(output) self.assertEqual(block_2, self.block)
def main(): args = parse_arguments() xrd_dir_post_fix = '' copy_files = [] if args.network_type == 'testnet': config.dev.hard_fork_heights[0] = config.dev.testnet_hard_fork_heights[0] # Hard Fork Block Height For Testnet xrd_dir_post_fix = '-testnet' package_directory = os.path.dirname(os.path.abspath(__file__)) copy_files.append(os.path.join(package_directory, 'network/testnet/genesis.yml')) copy_files.append(os.path.join(package_directory, 'network/testnet/config.yml')) logger.debug("=====================================================================================") logger.info("xrd Path: %s", args.xrd_dir) config.user.xrd_dir = os.path.expanduser(os.path.normpath(args.xrd_dir) + xrd_dir_post_fix) config.create_path(config.user.xrd_dir, copy_files) config.user.load_yaml(config.user.config_path) if args.mining_thread_count is None: args.mining_thread_count = config.user.mining_thread_count logger.debug("=====================================================================================") config.create_path(config.user.wallet_dir) mining_address = None ntp.setDrift() logger.info('Initializing chain..') persistent_state = State() if args.mocknet: args.debug = True config.user.mining_enabled = True config.user.mining_thread_count = 1 config.user.mining_pause = 500 config.dev.pbdata.block.block_timing_in_seconds = 1 config.user.genesis_difficulty = 2 # Mocknet mining address # Q01050058bb3f8cb66fd90d0347478e5bdf3a475e82cfc5fe5dc276500ca21531e6edaf3d2d0f7e # Mocknet mining hexseed # 010500dd70f898c2cb4c11ce7fd85aa04554e41dcc46569871d189a3f48d84e2fbedbe176695e291e9b81e619b3625c624cde6 args.mining_address = 'Q01050058bb3f8cb66fd90d0347478e5bdf3a475e82cfc5fe5dc276500ca21531e6edaf3d2d0f7e' if args.debug: logger.warning("FAULT HANDLER ENABLED") faulthandler.enable() if config.user.mining_enabled: mining_address = get_mining_address(args.mining_address) if not mining_address: logger.warning('Invalid Mining Credit Wallet Address') logger.warning('%s', args.mining_address) return False chain_manager = ChainManager(state=persistent_state) if args.measurement > -1: chain_manager.get_measurement = MagicMock(return_value=args.measurement) chain_manager.load(Block.deserialize(GenesisBlock().serialize())) xrdnode = xrdNode(mining_address=mining_address) xrdnode.set_chain_manager(chain_manager) set_logger.set_logger(args, xrdnode.sync_state) ####### # NOTE: Keep assigned to a variable or might get collected admin_service, grpc_service, mining_service, debug_service = start_services(xrdnode) xrdnode.start_listening() xrdnode.start_pow(args.mining_thread_count) logger.info('xrd blockchain ledger %s', config.dev.version) if config.user.mining_enabled: logger.info('Mining/staking address %s using %s threads (0 = auto)', 'Q' + bin2hstr(mining_address), args.mining_thread_count) elif args.mining_address or args.mining_thread_count: logger.warning('Mining is not enabled but you sent some "mining related" param via CLI') reactor.run()