Кошелек XRP Warp на Python

#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

У меня что-то не так или что мне нужно настроить, чтобы соответствовать выводу веб-сайта?