【问题标题】:Is it possible to export Xpub Key from Ledger Nano S Ethereum Wallet是否可以从 Ledger Nano S 以太坊钱包中导出 Xpub Key
【发布时间】:2018-08-27 17:39:19
【问题描述】:

我需要向我的客户提供付款 ETH 地址,以便将 ETH 存入他们的帐户。我想为此使用 HD ETH 钱包,我现在正在使用 Ledger Nano S。但是 Ledger 只显示了 1 个接收地址,所以我需要 ETH 钱包的 XPub 从中生成许多地址以分发给用户。

如果 Ledger 支持 HD,我如何导出 XPub?如果账本不支持,哪个钱包可以用于此目的。

任何建议。

【问题讨论】:

    标签: ethereum cryptocurrency hardware-wallet ledger-nano-s xpub


    【解决方案1】:

    您不能使用默认的比特币或以太坊应用程序直接从 ledger nano 导出 xpub。

    但是您可以使用从分类帐中提取的数据构建 xpub。

    您需要的是您感兴趣的 bip32 路径的公钥和链码,以及该路径的父级的公钥。

    在以太坊应用程序中,您将使用getaddress(目前此应用程序限制为 m/44/60'、m/44'/61' 和 m/44'/1' 及以下(我有一个问题here 希望能消除该限制)。在比特币应用程序中,您将使用getwalletpublickey。比特币应用程序中没有 bip32 路径限制。

    一旦你有了两个公钥和链码,你就可以构建 xpub。这是一块可以完成此任务的python。它使用未维护的 pybitcointools,所以用户要小心。

    #!/usr/bin/env python
    
    import sys
    import binascii
    from bitcoin import bin_hash160
    from bitcoin import bip32_serialize
    from bitcoin import compress
    
    def main(parent_pubkey, pubkey, chaincode, depth, index, network):
        if (network.lower() == "main"):
            network_bytes = b'\x04\x88\xb2\x1e'
        elif (network.lower() == "test"):
            network_bytes = b'\x04\x35\x87\xcf'
        else:
            sys.exit("network must be either main or test")
    
        compressed_pubkey_bytes = binascii.unhexlify(compress(pubkey))
        fingerprint_bytes =  bin_hash160(binascii.unhexlify(compress(parent_pubkey)))[:4]
        chaincode_bytes = binascii.unhexlify(chaincode)
    
        deserialized = (network_bytes, int(depth), fingerprint_bytes, int(index), chaincode_bytes, compressed_pubkey_bytes)
        xpub = bip32_serialize(deserialized)
        print(xpub)
    
    if __name__ == '__main__':
        if (len(sys.argv) < 7):
            sys.exit("USAGE: generate_xpub PARENT_PUBLICKEY PUBLICKEY CHAINCODE DEPTH INDEX (MAIN|TEST)")
        main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6])
    

    【讨论】:

    • 或者,您可以只使用来自任何节点的公钥和链码,并假装这是 m 处的新主公钥(将指纹设置为 0x00000000,深度为 0)。这应该为您提供一个有效的 xpub,您可以从中派生新地址,您只需要记住将路径转换回您稍后签名所需的实际 bip32 路径。
    猜你喜欢
    • 1970-01-01
    • 2022-10-22
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多