السلام عليكم ورحمة الله تعالى وبركاتهاخواني الكرام لقد بحثت كثيرا عن طريقة انشاء محفظة الدوجكوين باستخدام البايتون ولم أجد سوى على بعض الأكواد التي لاتعمل بشكل صحيح ..!!
👇 لذا قررت التعمق في الموضوع و الحمد لله وصلت الى نتيجة
ملاحظة : الكود عمل بشكل جيد على نظام التشغيل ويندوز ... ولم يجرب على أنظمة أخرى
(PrivateKey) كمثال مفتاح خاص
2d8036d81e2dd519574b40932072347c1be9924a6a9a73511b9c95b2559cbbc6 :
(Compressed Public Key)عند استخدام المفتاح العام المضغوط
DAAKHn1zLEh957XjyyY3Z1nevZ5mW4s5Xc : (Address)سيعطينا العنوان التالي
QQ95JVt3P1SPBqjRfxgzjwThYsPSA8KZvU4TBVo4SBW4zAkRSWJ8 :(WIF) الويف سيكون بهذا الشكل
(UNCompressed Public Key)عند استخدام المفتاح العام الغير المضغوط
DAi56XKUF1oj9ckFNWVwsjEKgjnTBLsVLZ : (Address)سيعطينا العنوان التالي
6JUf8bBf9cSgvCwvd1qV32TtnHQD3XCumjqMtKJgkKEqV1K43yz :(WIF) الويف سيكون
import base58
import ecdsa
import random
import hashlib
from binascii import unhexlify
import os
import time
def get_signing_key(raw_priv):
return ecdsa.SigningKey.from_string(raw_priv, curve=ecdsa.SECP256k1)
def sha256(x):
return hashlib.sha256(x).digest()
def hash_160(public_key):
md = hashlib.new('ripemd160')
md.update(sha256(public_key))
return md.digest()
def pubtoaddress(pubkey):
bthash = b'\x1e'+ hash_160(pubkey)
return base58.b58encode_check(bthash)
def generate():
secret = str(os.urandom(32)) \
+ str(random.randrange(2**256)) \
+ str(int(time.time() * 1000000))
return sha256(secret.encode())
def privtopub(bpriv,vcom='compressed'): # or 'uncompressed'
sign = get_signing_key(bpriv)
return sign.get_verifying_key().to_string(vcom)
def toWif(bpriv,vcom='compressed'):
vsign = b'\x9e'+(bpriv)
if vcom=='compressed':
final = vsign + b'\x01'
return base58.b58encode_check(final)
return base58.b58encode_check(vsign)
if __name__ == '__main__':
priv = generate()
print (priv.hex())
pubcomp = privtopub(priv)
addr = pubtoaddress(pubcomp)
bwif = toWif(priv)
print ("....Compressed ....")
print ("Address : ",addr.decode())
print ("wif : " ,bwif.decode())
print ("Public Key : \n",pubcomp.hex())
print ("\n....UnCompressed ....")
pubuncomp = privtopub(priv,'uncompressed')
bwif2 = toWif(priv,"uncomp")
addr2 = pubtoaddress(pubuncomp)
print ("Address : " ,addr2.decode())
print ("wif : " ,bwif2.decode())
print ("Public Key : \n",pubuncomp.hex())
ليست هناك تعليقات:
إرسال تعليق