首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从BIP39 (助记符)到BIP32 (公钥/私钥)

从BIP39 (助记符)到BIP32 (公钥/私钥)
EN

Stack Overflow用户
提问于 2019-01-14 07:01:37
回答 1查看 2.7K关注 0票数 6

我希望开发一些代码,从助记符创建比特币私钥和公钥。我目前对这个过程的理解是:

代码语言:javascript
复制
entropy > nmemonic > seed > public/private keys > public address

我在代码中使用了Trezor's nmemonic librarymoneywagon

代码语言:javascript
复制
import string
from random import SystemRandom, randrange
from binascii import hexlify, unhexlify
from moneywagon import generate_keypair
from mnemonic import mnemonic

def gen_rand():
    foo = SystemRandom()
    length = 32
    chars = string.hexdigits
    return ''.join(foo.choice(chars) for _ in range(length))

mnemo = mnemonic.Mnemonic('english')

entropy = gen_rand()
# entropy = '00000000000000000000000000000000'

words = mnemo.to_mnemonic(unhexlify(entropy))
seed = hexlify(mnemo.to_seed(words, passphrase='apassphrase'))
address = generate_keypair('btc', seed)

print(words)  
print(seed)
print(address['public']['address'])
print(address['private']['hex'])

如果你注释掉上面的熵线,然后运行代码,你会得到:

代码语言:javascript
复制
abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
b'05de15fb96dc0ab9f03c9d411bf84c586c72e7c30bddd413a304896f9f994ea65e7fcafd2c6b796141e310850e5f30b6abc2e6aec79a8ff81f4ba38fde81c403'
15GyM1xxxxxxxxxxxxxxxxxxxxxxTXrrvG
8ede10xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxcae501

我的问题是,在生成助记码和公钥/私钥的iancoleman.io/bip39bip32jp.github.io中,这些都没有反映出来。

我哪里错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-28 03:44:40

这两个站点生成与您相同的种子,给定您的助记符:

代码语言:javascript
复制
abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about

同样,https://bip32jp.github.io/english/给出了这个特定的助记符,给出了强制熵

代码语言:javascript
复制
entropy = '00000000000000000000000000000000'

(您必须选择Base16编码,因为您对unhexlify的调用会将此字符串解释为16进制)

第一个站点https://iancoleman.io/bip39/#english似乎启发式地确定了熵的字符串编码,并将其识别为二进制。这导致了另一个结果。

的值

代码语言:javascript
复制
address['public']['address']
address['private']['hex']

在这两个页面上与您的页面不同,因为这些页面使用的派生算法与moneywagon不同。Moneywagon使用BIP38,这是一种不受欢迎的算法。我认为这就是两个网站都不提供它的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54174024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档