2014-07-15 10 views
2

나는 blockchain을 mysql DB로 import하기 위해 https://github.com/bitcoin-abe/bitcoin-abe을 사용하고있다. 5 일 후에 거의 완료된다. 그래서 데이터를보기 시작했고 어떤 주소도 보지 못했습니다. 나는 BTC 클라이언트가 그것들을 사용하지 않는다는 것을 안다. 그러나 그것들을 다른 테이블에 가지고 있으면 좋을 것이다. 나는 코드를 둘러보고이 발견되었다pubkey_hash에서 Bitcoin 주소를 얻는 방법은 무엇입니까?

def hash_to_address(version, hash): 
    vh = version + hash 
    return base58.b58encode(vh + double_sha256(vh)[:4]) 

에서 : https://github.com/bitcoin-abe/bitcoin-abe/blob/3004fe4bad6f64d4c032c735ee23bf9f052d825b/Abe/util.py

내가 주소의 예상 결과를 얻을하지 않는 기능을 통해 pubkey_hash를 실행합니다. 62E907B15CBF27D5425399EBF6F0FB50EBB88F18

내가 얻어야한다 : 예를 들어 다음과 같은 pubkey_hash 복용 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

을하지만 그 대신 내가 얻을 :

import util 
hash = '62E907B15CBF27D5425399EBF6F0FB50EBB88F18' 
print util.hash_to_address("00", hash) 

어떤 아이디어 또는 거기에 뭔가있다 : 6GEZdxx5UiTk3U3LaLfsWwRaFAvXEpPNS5R4mqsJDXVJcTNNngTyB5i9S76MLTq

을 내가 만든 스크립트입니다 그렇지 않으면 똑같이 할 수 있을까요?

Appleman1234는 올바른 방향으로 절 지적 :

import util 
hash = '62E907B15CBF27D5425399EBF6F0FB50EBB88F18' 
hash = '00' + hash 
print "Util: ", util.hash_to_address("", hash.decode('hex')) 

답변

2

예상 당신이 결과를 얻을하지 않는 이유는 인코딩 때문이다.

파이썬 3

import util 
import binascii 
hash = '62e907b15cbf27d5425399ebf6f0fb50ebb88f18' 
print util.hash_to_address(binascii.unhexlify("00"), binascii.unhexlify(hash)) 

디코드 및 unhexlify 기능 파이썬 2

import util 
hash = '62e907b15cbf27d5425399ebf6f0fb50ebb88f18' 
print util.hash_to_address("00".decode('hex'), hash.decode('hex')) 

올바른 코드에 대한 정확한 코드를 바이너리 스트링으로 바이트 ASCII 진수 표현으로 변환.

문제는 이진 문자열의 해시와 16 진수 ASCII 표현의 해시가 서로 다른 두 해시라는 점입니다. "형식 오류 : 홀수 길이 문자열"그러나 당신이 옳은 길을 저를 얻었다 : 그것은 다시 부활 할 듯했으나으로

+0

귀하의 코드가 100 % 작동하지 않았다 해시 = '62E907B15CBF27D5425399EBF6F0FB50EBB88F18' 해시 = + 해시 인쇄 '00' " Util : ", util.hash_to_address (" ", hash.decode ('hex')) – George

+0

여기서 작동합니까, 환경은 무엇입니까? Crypto.Hash.RIPEMD를 RIPEMD160으로 가져 오기 위해 util의 가져 오기 라인을 변경해야한다는 것을 알았습니다. – Appleman1234

+0

Ubuntu 12 with Python 2.x – George