Bana göre ilginç, ama verdiğin fonksiyonun çalışma mantığına göre mantıklı bir durum var.
Hata alıyoruz, çünkü;
9931101114120119
Mesela yukarıdaki sayı, compressed için anlamlı değil ve hata veriyor.
Yani böyle sıkıştırılmış bir key için hata oluşuyor. Neden sorma, bitcoin modülündeki ve fonksiyonu içindekiler için hiç zaman harcamak istemedim.
Yani her sayının sıkıştırılmış key ini vermiyor. Hexadecimal olarak 9931101114120119 çalışmıyo yani.
Başta düşündüğüm gibi, try except içine alıp, çıkaramazsa devam ediyor.
Böyle olabileceğini düşündüğüm için zaten iki fonksiyona bölmüştüm.
Fakat şu haliyle tek fonksiyon olarak hazırladığım kodu paylaşacağım. Çünkü except esnasında anahtar atlıyor olabilir dikkat etmedim denemedim.
Ama şu haliye çalışır durumda, en azından doğru yoldamıyız, istediğinizi karşılıyor mu bakmak adına paylaşıyorum.
from time import process_time
import bitcoin
filehandle1 = open('file1.txt', mode="r") # First file
filehandle2 = open('file2.txt', mode="r") # Second file
filehandle3 = open('file3.txt', mode="r") # Check for combine
filehandle4 = open('file4.txt', 'w') # Equal list file
print("Wait for counting records first file...")
filecount = len(filehandle1.readlines())
filehandle1.seek(0)
count =0
t1_start = process_time()
def convert_key(kod) :
valid_private_key = False
while not valid_private_key:
private_key = kod
decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
valid_private_key = 0 < decoded_private_key < bitcoin.N
wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
compressed_private_key = private_key + '01'
wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif')
public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
(public_key_x, public_key_y) = public_key
if (public_key_y % 2) == 0:
compressed_prefix = '02'
else:
compressed_prefix = '03'
hex_compressed_public_key = compressed_prefix + bitcoin.encode(public_key_x, 16)
return bitcoin.pubkey_to_address(public_key), bitcoin.pubkey_to_address(hex_compressed_public_key)
while True:
line1 = filehandle1.readline()
count = count+1
if not line1:
break
while True:
line2 = filehandle2.readline()
if not line2:
filehandle2.seek(0)
break
# Compressed Coin Check/ To check coin adress use coin_adress() here
try:
compare_key, compare_key_compressed = convert_key(line1.strip()+line2.strip())
except:
continue
while True:
line3 = filehandle3.readline()
if not line3:
filehandle3.seek(0)
break
if (line3 == compare_key) or (line3 == compare_key_compressed ) :
filehandle4.write(line3)
print("Processing: %"+"%0.4f"% ((count/filecount)*100))
t1_stop = process_time()
print("Elapsed time in seconds:", t1_stop-t1_start)
filehandle1.close()
filehandle2.close()
filehandle3.close()
filehandle4.close()
Mesela bana gönderdiğin dosyalarda bir tane yakaladı sadece;
1Hk9oEZj5mUYRCtq35QRVEj9oMfiMLsPjB
İnceleyin, üzerinde çalışalım.