#python #pycrypto #cryptocurrency #xrp
Вопрос:
Я хочу реализовать кошелек Ripple Warp на Python. Я могу успешно сгенерировать адрес, но он не соответствует выводу веб-сайта.
Вот мой код:
from Crypto.Protocol.KDF import PBKDF2
from Crypto.Hash import HMAC, SHA256
import binascii
import scrypt
from xrpl.core import keypairs
def hmac_sha256(secret, salt):
m = HMAC.new(secret, None, SHA256)
m.update(salt)
return m.digest()
def sxor(s1,s2):
return ''.join(chr((a) ^ (b)) for a,b in zip(s1,s2))
def generate_keypair(passphrase, salt=""):
# s1 = scrypt(key=(passphrase||0x1), salt=(salt||0x1), N=2^18, r=8, p=1, dkLen=32)
s1 = scrypt.hash(passphrase.encode() b"x01", salt.encode() b"x01", 1 << 18, 8, 1, 32)
print("S1: ",s1)
# s2 = pbkdf2(key=(passphrase||0x2), salt=(salt||0x2), c=2^16, dkLen=32, prf=HMAC_SHA256)
s2 = PBKDF2(password=passphrase.encode() b"x02",salt=salt.encode() b"x02",
dkLen=32, count=1 << 16, prf=hmac_sha256)
print("S2: ", s2)
return binascii.hexlify(sxor(s1,s2).encode())
def getXRPAddress(passphrase, salt):
# Use Warp Wallet algorithm to generate seed
rawSeed = generate_keypair(passphrase,salt)
# Generate Address with xrpl-py
seed = keypairs.generate_seed(entropy=rawSeed.decode())
public, private = keypairs.derive_keypair(seed)
pk = keypairs.derive_classic_address(public)
return pk
pk = getXRPAddress("helloworld",salt="")
print("Public Key:")
print(pk)
# returns: r4P69jspBpGvTcKQJf1XLRojZGWWjvop9c
# should be: r4LuZGjbLfrgNG59wcvNSeWF5EH5NiaiQZ
- Примечание: это в значительной степени основано на этом скрипте, который необходимо было обновить до Python 3.
Вывод скрипта: r4P69jspBpGvTcKQJf1XLRojZGWWjvop9c
Вывод веб-сайта: r4LuZGjbLfrgNG59wcvNSeWF5EH5NiaiQZ
У меня что-то не так или что мне нужно настроить, чтобы соответствовать выводу веб-сайта?