Json-Rpc

如何將乙太坊 RPC 客戶端連接到遠端伺服器?

  • June 21, 2018

我有乙太坊節點在這個 IP 範例上執行 JSON RPC 伺服器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')})

引用自:https://ethereum.stackexchange.com/questions/10226