2017-02-12 25 views
0

Я пытался часами, и я просто не знаю, что я делаю неправильно. Это просто для планирования/исследования (не исполнительного) - игра с некоторым кодом из github, но мне нужно увидеть его функциональным.bitcoin json rpc с модулем запросов python?

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-объекта из объекта bytes, а не строкового объекта. Я не знаю, как это исправить. Кажется, назначение переменной «response» было неудачным из-за проблемы json. Как я могу получить объект json в форме строки из запроса?

Кто-нибудь поможет мне? Благодаря

+0

Пожалуйста, покажите полные отслеживающие ошибки, а не только часть последней строки. – jwodder

+0

Добавлена ​​остальная часть трассировки. – Engine

ответ

1
#!/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_pass)) 
     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'] 

Я использую что-то подобное для Altcoins

 Смежные вопросы

  • Нет связанных вопросов^_^