mirror of
				https://github.com/0glabs/0g-storage-node.git
				synced 2025-11-04 00:27:39 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import os
 | 
						|
import subprocess
 | 
						|
import tempfile
 | 
						|
 | 
						|
from test_framework.blockchain_node import BlockChainNodeType, BlockchainNode
 | 
						|
from utility.utils import (
 | 
						|
    blockchain_p2p_port,
 | 
						|
    blockchain_rpc_port,
 | 
						|
    blockchain_ws_port,
 | 
						|
    blockchain_rpc_port_tendermint,
 | 
						|
    pprof_port,
 | 
						|
)
 | 
						|
from utility.build_binary import build_zg
 | 
						|
 | 
						|
 | 
						|
def zg_node_init_genesis(binary: str, root_dir: str, num_nodes: int):
 | 
						|
    assert num_nodes > 0, "Invalid number of blockchain nodes: %s" % num_nodes
 | 
						|
 | 
						|
    if not os.path.exists(binary):
 | 
						|
        build_zg(os.path.dirname(binary))
 | 
						|
 | 
						|
    shell_script = os.path.join(
 | 
						|
        os.path.dirname(os.path.realpath(__file__)),  # test_framework folder
 | 
						|
        "..",
 | 
						|
        "config",
 | 
						|
        "0gchain-init-genesis.sh",
 | 
						|
    )
 | 
						|
 | 
						|
    zgchaind_dir = os.path.join(root_dir, "0gchaind")
 | 
						|
    os.mkdir(zgchaind_dir)
 | 
						|
 | 
						|
    log_file = tempfile.NamedTemporaryFile(
 | 
						|
        dir=zgchaind_dir, delete=False, prefix="init_genesis_", suffix=".log"
 | 
						|
    )
 | 
						|
    p2p_port_start = blockchain_p2p_port(0)
 | 
						|
 | 
						|
    ret = subprocess.run(
 | 
						|
        args=["bash", shell_script, zgchaind_dir, str(num_nodes), str(p2p_port_start)],
 | 
						|
        stdout=log_file,
 | 
						|
        stderr=log_file,
 | 
						|
    )
 | 
						|
 | 
						|
    log_file.close()
 | 
						|
 | 
						|
    assert ret.returncode == 0, (
 | 
						|
        "Failed to init 0gchain genesis, see more details in log file: %s"
 | 
						|
        % log_file.name
 | 
						|
    )
 | 
						|
 | 
						|
 | 
						|
class ZGNode(BlockchainNode):
 | 
						|
    def __init__(
 | 
						|
        self,
 | 
						|
        index,
 | 
						|
        root_dir,
 | 
						|
        binary,
 | 
						|
        updated_config,
 | 
						|
        contract_path,
 | 
						|
        log,
 | 
						|
        rpc_timeout=10,
 | 
						|
    ):
 | 
						|
        data_dir = os.path.join(root_dir, "0gchaind", "node" + str(index))
 | 
						|
        rpc_url = "http://127.0.0.1:%s" % blockchain_rpc_port(index)
 | 
						|
 | 
						|
        super().__init__(
 | 
						|
            index,
 | 
						|
            data_dir,
 | 
						|
            rpc_url,
 | 
						|
            binary,
 | 
						|
            {},
 | 
						|
            contract_path,
 | 
						|
            log,
 | 
						|
            BlockChainNodeType.ZG,
 | 
						|
            rpc_timeout,
 | 
						|
        )
 | 
						|
 | 
						|
        self.config_file = None
 | 
						|
        self.args = [
 | 
						|
            binary,
 | 
						|
            "start",
 | 
						|
            "--home",
 | 
						|
            data_dir,
 | 
						|
            # overwrite json rpc http port: 8545
 | 
						|
            "--json-rpc.address",
 | 
						|
            "127.0.0.1:%s" % blockchain_rpc_port(index),
 | 
						|
            # overwrite json rpc ws port: 8546
 | 
						|
            "--json-rpc.ws-address",
 | 
						|
            "127.0.0.1:%s" % blockchain_ws_port(index),
 | 
						|
            # overwrite p2p port: 26656
 | 
						|
            "--p2p.laddr",
 | 
						|
            "tcp://127.0.0.1:%s" % blockchain_p2p_port(index),
 | 
						|
            # overwrite rpc port: 26657
 | 
						|
            "--rpc.laddr",
 | 
						|
            "tcp://127.0.0.1:%s" % blockchain_rpc_port_tendermint(index),
 | 
						|
            # overwrite pprof port: 6060
 | 
						|
            "--rpc.pprof_laddr",
 | 
						|
            "127.0.0.1:%s" % pprof_port(index),
 | 
						|
            "--log_level",
 | 
						|
            "debug",
 | 
						|
        ]
 | 
						|
 | 
						|
        for k, v in updated_config.items():
 | 
						|
            if type(k) == str and k.startswith("--"):
 | 
						|
                self.args.append(k)
 | 
						|
                self.args.append(str(v))
 | 
						|
 | 
						|
    def setup_config(self):
 | 
						|
        """Already batch initialized by shell script in framework"""
 |