2017-11-15 21 views
1

나는 내가 FF있어 pushtx(tx)pybitcointools pushtx 형식 오류 : 예상 문자열 또는 버퍼

를 사용하여 네트워크에 거래를 밀어하려고하지만 때, pybitcointools를 사용하여 원시 트랜잭션을 만드는 과정에서입니다. 오류 : 내의 PrivateKey가 base58 인 방법에 의해

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 

(51 자) 형식 여기

코드이다 : 그것의 모습에서

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

오류가 발생하는 코드를 게시하는 것은 어떻습니까? tx가 올바른 데이터 유형이 아닌 것 같습니다. – voiDnyx

+0

@voiDnyx 안녕하세요, 코드를 추가했습니다. 친절하게 확인하십시오. 또한 내가 사용한 개인 키는 51 자의 base58 형식입니다. –

답변

0

, 당신은 pushtx()tx를 전달해야 직렬화 된 형태로.

시험은 serialize()이 반환하는 16 진수 문자열을 허용합니다.

mktx()sign()이 직렬화 된 형식으로 결과를 생성 할 가능성이 높습니다.