Json-Rpc
如何將乙太坊 RPC 客戶端連接到遠端伺服器?
我有乙太坊節點在這個 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')})