2017-11-15 6 views
1

Ich bin im Begriff, eine rohe Transaktion schaffen pybitcointools verwenden, aber wenn ich versuchte, die Transaktion in das Netz zu schieben pushtx(tx)pybitcointools pushtx Typeerror: erwartetes String oder Puffer

ich mit dem ff bekam. Fehler:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/usr/local/lib/python2.7/site-packages/bitcoin-1.1.42-py2.7.egg/bitcoin/bci.py", line 311, in pushtx 
return f(*args) 
File "/usr/local/lib/python2.7/site-packages/bitcoin-1.1.42-py2.7.egg/bitcoin/bci.py", line 261, in bci_pushtx 
    if not re.match('^[0-9a-fA-F]*$', tx): 
File "/usr/local/lib/python2.7/re.py", line 141, in match 
return _compile(pattern, flags).match(string) 
TypeError: expected string or buffer 

durch die Art und Weise mein privatekey in Base58 (51 Zeichen) Format

Hier ist der Code:

from bitcoin.main import * 
from bitcoin.transactions import * 
from bitcoin.bci import * 
>>> addr 
'1CXW5bqMNQZ3sftXCtiRf3HGTPJmpd2xvq' #I just edited the address for security purpose 

>>> unspent(addr) 
[{'output': '23e81960ba8bb95c33c2336c84c126e378e4d1123921f881da9287c25f624161:1', 'value': 300000}] 

>>> source = '32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe' 
>>> unspent(source) 
[{'output': '8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd:0', 'value': 677200}, {'output': 'bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786:0', 'value': 5000000}] 

>>> ins = unspent(addr) + unspent(target) 
>>> amount = 300000 + 5000000 + 677200 
>>> amount -= 10000 

>>> outs = [{'address': addr, 'value': value}] 

>>> tx = mktx(ins, outs) 
>>> tx = sign(tx, 0, priv) 
>>> tx = deserialize(tx) 

>>> tx['ins'][1]['script'] = '00483045022100dfcfafcea73d83e1c54d444a19fb30d17317f922c19e2ff92dcda65ad09cba24022001e7a805c5672c49b222c5f2f1e67bb01f87215fb69df184e7c16f66c1f87c290347304402204a657ab8358a2edb8fd5ed8a45f846989a43655d2e8f80566b385b8f5a70dab402207362f870ce40f942437d43b6b99343419b14fb18fa69bee801d696a39b3410b8034c695221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae' 
>>> tx['ins'][2]['script'] = '00483045022100dfcfafcea73d83e1c54d444a19fb30d17317f922c19e2ff92dcda65ad09cba24022001e7a805c5672c49b222c5f2f1e67bb01f87215fb69df184e7c16f66c1f87c290347304402204a657ab8358a2edb8fd5ed8a45f846989a43655d2e8f80566b385b8f5a70dab402207362f870ce40f942437d43b6b99343419b14fb18fa69bee801d696a39b3410b8034c695221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae' 
>>> serialize(tx) 
'01000000036141525fc24792da81f8213912d1e478e326c18...' 
>>> pushtx(tx) 
+1

Wie wäre es mit der Veröffentlichung des Codes, der den Fehler verursacht? Scheint, dass tx nicht der richtige Datentyp ist. – voiDnyx

+0

@voiDnyx Hallo ich habe die Codes hinzugefügt, bitte überprüfen. auch der private key, den ich benutzt habe, ist im 51characters base58 format. –

Antwort

0

Von den Blicken von ihm, müssen Sie tx-pushtx() passieren in serialisierter Form.

Der re.match('^[0-9a-fA-F]*$', tx) Test akzeptiert eine Hex-Zeichenfolge, genau was zurückgibt.

Dies ist umso wahrscheinlicher, wenn man bedenkt, dass mktx() und sign() das Ergebnis in serialisierter Form erzeugen.

Verwandte Themen