Как подключить Ethereum RPC-клиент к удаленному серверу?

У меня есть узел Ethereum, на котором работает сервер JSON RPC в этом примере IP 136.10.164.134. Затем я хочу использовать клиент для передачи некоторых данных. Я вижу эту библиотеку , чтобы сделать клиент.

Но я не могу подключиться к своему серверу. Я получил эту ошибку:

requests.exceptions.ConnectionError: HTTPConnectionPool(host='136.10.164.134', port=8545): 
Max retries exceeded with url: / (Caused by NewConnectionError
('<requests.packages.urllib3.connection.HTTPConnection object at 0x10ecfacd0>: 
Failed to establish a new connection: [Errno 61] Connection refused',))

Я просто поместил эти 3 строки, как указано в документации, например, в моем скрипте Python:

from eth_rpc_client import Client
client = Client(host="136.10.164.134", port="8545")
client.get_coinbase()

Я думаю, что не могу подключиться к своему серверу, потому что пароль не определен в моем сценарии. Как я могу отправить пароль сервера в клиенте ethereum rpc?

Редактировать

Итак, теперь я исправил проблему с подключением. Я перенастроил четность с помощью этой командной строки:

geth --rpc --rpcaddr <ip> --rpcport <portnumber>

И установите мой IP для объекта web3:

var Web3 = require('web3');
var web3 = new Web3();
web3.setProvider(new Web3.providers.HttpProvider('http://136.10.164.134:8545'));
web3.eth.syncing

Но теперь у меня другая проблема. У меня есть эта ошибка:

ValueError: No JSON object could be decoded

Я смотрю сеть с Чарльзом и вижу это:

415 Unsupported Media Type
Supplied content type is not allowed. Content-Type: application/json is required

Конечно, отправленный тип контента text/html; charset=utf-8.

Как я могу изменить тип контента с помощью этого клиента Ethererum rpc?

Мой аккаунт уже разблокирован. Но проблема заключалась в настройке четности. Я должен сделать эту команду: geth --rpc --rpcaddr <ip> --rpcport <portnumber>и изменить IP-адрес web3 следующим образом: web3.setProvider(new Web3.providers.HttpProvider('http://136.10.164.134:8545'));вместо локального хоста. Но теперь у меня проблема с типом контента.
Не могли бы вы опубликовать весь код js? Клиенты Ethereum возвращают только объекты JSON. Причина, по которой вы получаете сообщение об ошибке, заключается в том, что вы не обрабатываете ответ, который является объектом JSON, как объект JSON.
Я уже вставил весь свой код. У меня есть только эти 4 строки.
Может быть, у вас есть лучший клиент библиотеки python для ethereum json rpc?
@john ты не должен использовать ethereum-rpc-client. Он больше не поддерживается. Взгляните на web3.py , если вам нужна опция Python для подключения к RPC-серверу.
@Sebi Большое спасибо за ваше объяснение и вашу помощь. Это было действительно полезно. #PiperMerriam Спасибо за ссылку. Я взгляну.
@John, вы можете рассмотреть возможность публикации своего «Редактировать 2 рабочего решения» в качестве ответа и самостоятельно принять свой ответ через день или два. Это удалит ваш вопрос из очереди без ответа.

Ответы (1)

Рабочий раствор

Что ж, как сказал @PiperMerriam, я использовал эту библиотеку web3.py. Предыдущая библиотека, которую я использовал, больше не обновляется. Теперь я могу подключить python web3 к своему узлу удаленного сервера следующим образом:

# Import
from web3 import Web3, HTTPProvider

# Connection to the remote server
web3rpc = Web3(HTTPProvider(host="136.10.164.134", port="8545")) 

# Unlock your account
duration = 1000
web3rpc.personal.unlockAccount(web3rpc.eth.coinbase, 'your-passphrase', duration)

# Syncing check
web3rpc.eth.syncing

# Transaction from account A to account B
web3rpc.eth.sendTransaction({'to': 'your_token_account', 'from': web3rpc.eth.coinbase, 'value': web3rpc.toWei(1, "wei"), 'data': web3rpc.toHex('Test Transaction')})