示例#1
0
def cli(ctx, config_path, no_spinner: bool):
    config = parse_config(ctx, config_path, Config)
    print_config_and_exit(ctx, config)

    checker = AccountsChecker(config, no_spinner)
    result = checker.process()
    print_json(result)
示例#2
0
def cli(ctx, config_path, broadcast: bool):
    config = parse_config(ctx, config_path, Config)
    config.abi = file_validator(config.abi, config_path)
    print_config_and_exit(ctx, config)

    function_args = yaml.full_load(
        config.function_args) if config.function_args else []
    data = eth_abi.encode_function_input(yaml.full_load(config.abi),
                                         config.function_name, function_args)
    if config.nonce is None:
        config.nonce = get_nonce_or_exit(
            config.node, eth_account.private_to_address(config.private_key))
    signed_tx = eth_tx.sign_tx(
        nonce=config.nonce,
        gas_price=config.gas_price,
        gas=config.gas,
        private_key=config.private_key,
        chain_id=config.chain_id,
        data=data,
        value=config.value,
        to=config.contract,
    )

    if broadcast:
        res = eth_rpc.eth_send_raw_transaction(config.node, signed_tx.raw_tx)
        if res.is_ok():
            print_json({"tx_hash": res.ok})
        else:
            print_json({"error": res.error})
    else:
        decoded = eth_utils.to_human_readable_tx(
            eth_tx.decode_raw_tx(signed_tx.raw_tx))
        print_json({"signed": signed_tx.dict(), "decoded": decoded})
示例#3
0
def cli(ctx, config_path, curl):
    config = parse_config(ctx, config_path, Config)
    print_config_and_exit(ctx, config)
    if curl:
        data = {"jsonrpc": "2.0", "method": config.method, "params": config.params, "id": config.id}
        data_str = json.dumps(data)
        click.echo(f"curl -H 'Content-Type: application/json' -X POST --data '{data_str}' {config.node}")
        exit(0)

    res = eth_rpc.rpc_call(node=config.node, method=config.method, params=config.params)
    print_json(res.ok_or_error)
示例#4
0
def cli(ctx, config_path):
    config = parse_config(ctx, config_path, Config)
    print_config_and_exit(ctx, config)

    tasks = ParallelTasks()
    for node in config.nodes:
        tasks.add_task(node, _get_node_info, args=(node, ))
    tasks.execute()

    result = {}
    for node in config.nodes:
        result[node] = tasks.result[node]

    print_json(result)
示例#5
0
def cli(ctx, config_path):
    config = parse_config(ctx, config_path, Config)
    print_config_and_exit(ctx, config)

    if not eth_account.is_valid_private_key(config.from_, config.private_key):
        print_json({"error": "wrong private key"})
        exit(1)

    raw_tx = eth_tx.sign_tx(**config.dict(exclude={"from_"}))
    print_json(
        raw_tx.dict() | {
            "decoded":
            eth_utils.to_human_readable_tx(eth_tx.decode_raw_tx(raw_tx.raw_tx))
        })
示例#6
0
def cli(ctx, config_path, print_data):
    config = parse_config(ctx, config_path, Config)
    config.abi = file_validator(config.abi, config_path)
    print_config_and_exit(ctx, config)

    function_args = yaml.full_load(config.function_args) if config.function_args else []
    data = eth_abi.encode_function_input(yaml.full_load(config.abi), config.function_name, function_args)
    if print_data:
        click.echo(data)
        exit(0)

    res = eth_rpc.eth_call(config.node, config.address, data)
    if res.is_ok():
        click.echo(res.ok)
    else:
        click.echo(f"error: {res.error}")
示例#7
0
def cli(ctx, config_path, broadcast: bool):
    config = parse_config(ctx, config_path, Config)
    print_config_and_exit(ctx, config)

    txs = sign_txs(config)
    result: list[Any] = []
    if broadcast:
        for tx in txs:
            res = eth_rpc.eth_send_raw_transaction(config.random_node,
                                                   tx.raw_tx)
            result.append([tx.tx_hash, "ok" if res.is_ok() else res.error])
    else:
        for tx in txs:
            res = eth_tx.decode_raw_tx(tx.raw_tx)
            result.append({
                "raw": tx.raw_tx,
                "tx": eth_utils.to_human_readable_tx(res)
            })

    print_json(result)