У меня есть узел 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?
Что ж, как сказал @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')})
никсмак
Джон
geth --rpc --rpcaddr <ip> --rpcport <portnumber>
и изменить IP-адрес web3 следующим образом:web3.setProvider(new Web3.providers.HttpProvider('http://136.10.164.134:8545'));
вместо локального хоста. Но теперь у меня проблема с типом контента.Себи
Джон
Джон
Пайпер Мерриам
ethereum-rpc-client
. Он больше не поддерживается. Взгляните на web3.py , если вам нужна опция Python для подключения к RPC-серверу.Джон
конфиденциальностьisahumanright.eth