如何通过Python与比特币rpc连接?

时间:2018-10-30 21:27:32

标签: python python-requests bitcoin json-rpc bitcoind

我在通过Python连接到本地比特币节点时遇到了一些麻烦。似乎该节点拒绝了通过Python进行的所有调用,但是使用bitcoin-cli时一切正常。

我的Python脚本:

import simplejson as json
import requests

with open("C:\\Users\\%USERNAME%\\AppData\\Roaming\\Bitcoin\\testnet3\\.cookie", "r") as creds:
    cookie = creds.read()

NODE_URL = "http://127.0.0.1:8332"
NODE_USER = cookie.split(":")[0]
NODE_PASSWORD = cookie.split(":")[1]

def rpc(method, params=[]):
    payload = json.dumps({
        "jsonrpc": "2.0",
        "id": "minebet",
        "method": method,
        "params": params
    })
    return requests.post(NODE_URL, auth=(NODE_USER, NODE_PASSWORD), data=payload).json()['result']

rpc('getnewaddress')

还有bitcoin.conf文件:

testnet=1
server=1
gen=0
prune=1024

我总是得到:

  

ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了连接

我还尝试在bitcoin.conf文件中使用常规的rpcuser和rpcpassword配置,以及较新的rpcauth方法,但它们均不起作用。

1 个答案:

答案 0 :(得分:0)

“拒绝连接”很可能意味着您试图连接的主机名和端口根本没有监听。在您的情况下,您要从“ testnet”数据目录中的.cookie文件中提取凭据,但要连接到默认的主网RPC端口8332。以“ testnet”模式启动bitcoind时,默认的RPC端口为18332,不是8332。