带有python请求模块的比特币json rpc? [英] bitcoin json rpc with python requests module?

查看:54
本文介绍了带有python请求模块的比特币json rpc?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经尝试了几个小时,但我不知道我做错了什么.它仅用于规划/研究(非高性能)——使用来自 github 的一些代码——但我需要查看它的功能.

I've been trying for hours, and I just don't know what I'm doing wrongly. It's just for planning/research (not performant) -- playing around with some code from github -- but I need to see it functional.

RPC_USER = username
RPC_PASS = pasword
rpc_id =  ID HERE
jsonrpc = "2.0"
payload = {"jsonrpc": jsonrpc, "id": rpc_id, "method": method, "params": params}
authstr = base64.encodestring(bytes('%s:%s' % (RPC_USER, RPC_PASS), 'utf-8')).strip() 
request_headers = {"Authorization": "Basic %s" % authstr, 'content-type': 'application/json'}
try:
    response = requests.get(RPC_URL, headers = request_headers, data = json.dumps(payload)).json()
    print(response['result'])      
except Exception as e: print(str(e))
if response['id'] != rpc_id:
        raise ValueError("invalid response id!")

我收到如下错误:

这里是整个回溯:

Expecting value: line 1 column 1 (char 0) # 打印异常

Traceback (most recent call last): 
  File "miner_2017.py", line 411, in <module>
    solo_miner(bin2hex("------coinbase message here -----"), "-----bitcoin address here-----")
  File "miner_2017.py", line 401, in solo_miner
    mined_block, hps = block_mine(rpc_getblocktemplate(), coinbase_message, 0, address, timeout=60)
  File "miner_2017.py", line 63, in rpc_getblocktemplate
    try: return rpc("getblocktemplate", [{}])
  File "miner_2017.py", line 52, in rpc
    if response['id'] != rpc_id:
UnboundLocalError: local variable 'response' referenced before assignment  

在做了一些查找之后,从字节对象而不是字符串对象解码 json 对象似乎是一个问题.我不知道如何解决这个问题.由于 json 问题,响应"变量赋值似乎不成功.如何从请求中获取字符串形式的 json 对象?

Which after doing some looking seems to be a problem with decoding the json object from a bytes object rather than a string object. I don't know how to fix this. It seems the "response" variable assignment was unsuccessful due to the json problem. How can I get the json object in string form from the request?

有人能帮我吗?谢谢

推荐答案

#!/usr/bin/env python

import getpass
import json
import requests    

def instruct_wallet(method, params):
    url = "http://127.0.0.1:8332/"
    payload = json.dumps({"method": method, "params": params})
    headers = {'content-type': "application/json", 'cache-control': "no-cache"}
    try:
        response = requests.request("POST", url, data=payload, headers=headers, auth=(rpc_user, rpc_password))
        return json.loads(response.text)
    except requests.exceptions.RequestException as e:
        print e
    except:
        print 'No response from Wallet, check Bitcoin is running on this machine'

rpc_user='foo'
rpc_password='bar'
passphrase = getpass.getpass('Enter your wallet passphrase: ')
timeout = raw_input('Unlock for how many seconds: ')

answer = instruct_wallet('walletpassphrase', [passphrase, timeout])
if answer['error'] != None:
    print answer['error']
else:
    print answer['result']

我正在为山寨币使用类似的东西

I'm using something similar for Altcoins

这篇关于带有python请求模块的比特币json rpc?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆