Пример #1
0
 def do_genesis(self, node_config):
     '''
     Creates a key, then uses this key to author a genesis block.  The node
     corresponding to node_config must be initially available on the network
     in order to serve this genesis block.
     Args:
         node_config (NodeConfig):
     '''
     node_name = node_config.node_name
     if self.is_running(node_name) is False:
         # Create key for initial validator
         key_dir = self._base_config['KeyDirectory']
         cmd = get_executable_script('sawtooth')
         cmd += ['keygen', node_name]
         cmd += ['--key-dir', key_dir]
         if self._verbose is False:
             cmd += ['--quiet']
         proc = subprocess.Popen(cmd)
         proc.wait()
         # Create genesis block
         cmd = get_executable_script('sawtooth')
         cmd += ['admin', 'poet0-genesis']
         if self._verbose is True:
             cmd += ['-vv']
         cmd += ['--node', node_name]
         cmd += ['--keyfile', os.path.join(key_dir, '%s.wif' % node_name)]
         proc = subprocess.Popen(cmd)
         proc.wait()
Пример #2
0
 def create_genesis_block(self, node_args):
     '''
     Creates a key, then uses this key to author a genesis block.  The node
     corresponding to node_args must be initially available on the network
     in order to serve this genesis block.
     Args:
         node_args (NodeArguments):
     '''
     if self.is_running(node_args.node_name) is False:
         # Create key for initial validator
         cmd = get_executable_script('sawtooth')
         cmd += ['keygen', node_args.node_name]
         # ...sawtooth keygen does not assume validator's CURRENCYHOME
         key_dir = self._base_config['KeyDirectory']
         if node_args.currency_home is not None:
             key_dir = os.path.join(node_args.currency_home, 'keys')
         cmd += ['--key-dir', key_dir]
         if self._verbose is False:
             cmd += ['--quiet']
         proc = subprocess.Popen(cmd, env=self._build_env(node_args))
         proc.wait()
         # Create genesis block
         cmd = get_executable_script('sawtooth')
         cmd += ['admin', 'poet0-genesis']
         if self._verbose is True:
             cmd += ['-vv']
         cmd += ['--node', node_args.node_name]
         for x in node_args.config_files:
             cmd += ['--config', x]
         proc = subprocess.Popen(cmd, env=self._build_env(node_args))
         proc.wait()
Пример #3
0
 def create_genesis_block(self, node_args):
     '''
     Creates a key, then uses this key to author a genesis block.  The node
     corresponding to node_args must be initially available on the network
     in order to serve this genesis block.
     Args:
         node_args (NodeArguments):
     '''
     if self.is_running(node_args.node_name) is False:
         # Create key for initial validator
         cmd = get_executable_script('sawtooth')
         cmd += ['keygen', node_args.node_name]
         # ...sawtooth keygen does not assume validator's CURRENCYHOME
         key_dir = self._base_config['KeyDirectory']
         if node_args.currency_home is not None:
             key_dir = os.path.join(node_args.currency_home, 'keys')
         cmd += ['--key-dir', key_dir]
         if self._verbose is False:
             cmd += ['--quiet']
         proc = subprocess.Popen(cmd, env=self._build_env(node_args))
         proc.wait()
         # Create genesis block
         cmd = get_executable_script('sawtooth')
         cmd += ['admin', 'poet1-genesis']
         if self._verbose is True:
             cmd += ['-vv']
         cmd += ['--node', node_args.node_name]
         for x in node_args.config_files:
             cmd += ['--config', x]
         proc = subprocess.Popen(cmd, env=self._build_env(node_args))
         proc.wait()
Пример #4
0
 def _construct_start_command(self, node_args):
     host = self._host_name
     node_name = node_args.node_name
     http_port = node_args.http_port
     gossip_port = node_args.gossip_port
     cmd = get_executable_script('txnvalidator')
     if self._verbose is True:
         cmd += ['-vv']
     cmd += ['--node', node_name]
     cmd += ['--listen', "{}:{}/TCP http".format(host, http_port)]
     cmd += ['--listen', "{}:{}/UDP gossip".format(host, gossip_port)]
     for x in node_args.config_files:
         cmd += ['--config', x]
     if node_args.genesis:
         # Create and indicate special config file
         config_dir = self._base_config['ConfigDirectory']
         if node_args.currency_home is not None:
             config_dir = os.path.join(node_args.currency_home, 'etc')
         if not os.path.exists(config_dir):
             os.makedirs(config_dir)
         config_file = '{}_bootstrap.json'.format(node_name)
         with open(os.path.join(config_dir, config_file), 'w') as f:
             f.write(json.dumps(self._v0_cfg, indent=4))
         cmd += ['--config', config_file]
     return cmd
Пример #5
0
    def _construct_start_command(self, node_args):
        host = self._host_name
        node_name = node_args.node_name
        http_port = node_args.http_port
        gossip_port = node_args.gossip_port
        pid_file = os.path.join(self._state_dir, "{}.pid".format(node_name))
        cmd = get_executable_script('txnvalidator')
        if self._verbose is True:
            cmd += ['-vv']
        cmd += ['--node', node_name]
        cmd += ['--listen', "{}:{}/TCP http".format(host, http_port)]
        cmd += ['--listen', "{}:{}/UDP gossip".format(host, gossip_port)]
        cmd += ['--daemon']
        cmd += ['--pidfile', pid_file]

        for x in node_args.config_files:
            cmd += ['--config', x]
        # Create and indicate special config file
        config_dir = self._base_config['ConfigDirectory']
        if node_args.currency_home is not None:
            config_dir = os.path.join(node_args.currency_home, 'etc')
        if not os.path.exists(config_dir):
            os.makedirs(config_dir)
        config_file = '{}_bootstrap.json'.format(node_name)
        cfg = self._non_genesis_cfg
        if node_args.genesis:
            cfg = self._genesis_cfg

        with open(os.path.join(config_dir, config_file), 'w') as f:
            f.write(json.dumps(cfg, indent=4))
        cmd += ['--config', config_file]
        return cmd
Пример #6
0
    def start(self, node_args):
        state = self._load_state()

        node_name = node_args.node_name
        node_num = int(node_name[len('validator-'):])

        base_component_port = 40000
        port = str(base_component_port + node_num)
        url = '0.0.0.0:' + port

        base_gossip_port = 8800
        gossip_port_num = str(base_gossip_port + node_num)
        gossip_port = 'tcp://0.0.0.0:' + gossip_port_num

        state['Nodes'][node_name]['pid'] = []

        commands = ['validator'] + state['Processors']
        if node_args.genesis:
            commands = ['sawtooth-0.8'] + commands

        for cmd in commands:
            # get_executable_script returns (path, executable)
            _, executable = get_executable_script(cmd)

            # validator takes ports as separate args, but this might change
            if cmd == 'validator':
                component = '--component-endpoint', url
                network = '--network-endpoint', gossip_port
                flags = component + network
            elif cmd == 'sawtooth-0.8':
                flags = 'admin', 'genesis'
            else:
                flags = (url, )

            handle = subprocess.Popen((executable, ) + flags)

            pid = handle.pid
            state['Nodes'][node_name]['pid'] += [pid]

        self._save_state(state)

        if node_args.genesis:
            time.sleep(5)
Пример #7
0
    def start(self, node_args):
        state = self._load_state()

        node_name = node_args.node_name
        node_num = int(node_name[len('validator-'):])

        base_component_port = 40000
        port = str(base_component_port + node_num)
        url = '0.0.0.0:' + port

        base_gossip_port = 8800
        gossip_port_num = str(base_gossip_port + node_num)
        gossip_port = 'tcp://0.0.0.0:' + gossip_port_num

        state['Nodes'][node_name]['pid'] = []

        commands = ['validator'] + state['Processors']
        if node_args.genesis:
            commands = ['sawtooth-0.8'] + commands

        for cmd in commands:
            # get_executable_script returns (path, executable)
            _, executable = get_executable_script(cmd)

            # validator takes ports as separate args, but this might change
            if cmd == 'validator':
                component = '--component-endpoint', url
                network = '--network-endpoint', gossip_port
                flags = component + network
            elif cmd == 'sawtooth-0.8':
                flags = 'admin', 'genesis'
            else:
                flags = (url,)

            handle = subprocess.Popen((executable,) + flags)

            pid = handle.pid
            state['Nodes'][node_name]['pid'] += [pid]

        self._save_state(state)

        if node_args.genesis:
            time.sleep(5)
Пример #8
0
 def _construct_start_command(self, node_config):
     host = self._host_name
     node_name = node_config.node_name
     http_port = node_config.http_port
     gossip_port = node_config.gossip_port
     cmd = get_executable_script('txnvalidator')
     if self._verbose is True:
         cmd += ['-vv']
     cmd += ['--node', node_name]
     cmd += ['--listen', "{}:{}/TCP http".format(host, http_port)]
     cmd += ['--listen', "{}:{}/UDP gossip".format(host, gossip_port)]
     if node_config.genesis:
         # Create and indicate special config file
         config_dir = self._base_config['ConfigDirectory']
         config_file = 'initial_node.json'
         os.makedirs(config_dir)
         with open(os.path.join(config_dir, config_file), 'w') as f:
             f.write(json.dumps(self._v0_cfg, indent=4))
         cmd += ['--conf-dir', config_dir, '--config', config_file]
     return cmd