2017-02-12 15 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オブジェクトをデコードします。私はこれを解決する方法を知らない。これは、 "応答"変数の割り当てが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

関連する問題