繁体   English   中英

如何从私钥创建比特币钱包?

[英]How Create Bitcoin wallet from a private key works?

我试图了解如何创建一对比特币私钥和公钥并将它们导入电子钱包

1 尝试: https://github.com/Destiner/blocksmith

例如:

 import blocksmith
 
 kg = blocksmith.KeyGenerator()

 kg.seed_input("(/sgroxa)n;[&1ox7fioqg4*v8")
 #seed is the private key ?

 key = kg.generate_key()
 #returned key : 7e659f56d6f20a64258b65445c825e62edf6b89219d4b3eb3ebec6ecb8f62859
 #this key is a formated "(/sgroxa)n;[&1ox7fioqg4*v8" version  ?

 address = blocksmith.BitcoinWallet.generate_address(key)
 #returned address : 112qrCJdHgudHmsKKKwvj3AM3aN2eN9wpP

如何在电子钱包中导入这个?


2 次尝试: https://github.com/mcdallas/cryptotools

#python38 setup.py install

import os
os.environ['CRYPTOTOOLS_NETWORK'] = 'main'

from cryptotools.BTC import PrivateKey, Address

#private = PrivateKey.random()

mystring='supersecret'.encode('utf-8')
mystring2 = mystring.hex()
private = PrivateKey.from_hex(mystring2)
#private = PrivateKey.random()
print("PRIVATE NOR: "+str(mystring))
print("PRIVATE HEX: "+mystring2)
#private = PrivateKey.from_wif('yourwifhere')

#and then to get the hex representation use private.hex() of private.wif()


public = private.to_public()
print("PUBLIC NOR: "+str(public))
print("PUBLIC HEX: "+public.hex())
#public.hex(compressed=True)

addrp2pkh = public.to_address('P2PKH')
print("ADDR addrp2pkh: "+addrp2pkh)
#'16B2Ghyu5C1CofKfXF2Zi9JycqaAyaE8cd'
addrp2wpkh = public.to_address('P2WPKH')
print("ADDR addrp2wpkh: "+addrp2wpkh)

返回

PRIVATE NOR: b'supersecret'
PRIVATE HEX: 7375706572736563726574
PUBLIC NOR: PublicKey(8168986507460029097250523306678031295706525425592031410379320603875628502471, 68217540890844357698499484021605168903182743958311172870030299256854130530932)
PUBLIC HEX: 04120f7b85fbc8d10d7564fe6dcb99291661014e87d2579068448f8d0b54bf4dc796d1c2869226dfb3609808158d1c4cec9a3a1ebee12994a2779e1d2dac851a74
ADDR addrp2pkh: 15nTqJEGWZg9DTjj7KSjwwKf3xHhpSiQyQ
ADDR addrp2wpkh: bc1q3pv43a0tujsy9kp526su2fz93at70demcj4phw

如何在电子钱包中导入这个?

例如,我看不到我如何无法键入我的 pub 密钥以将其导入电子钱包? 你不能帮助理解我的错误还是我混淆了什么?

谢谢

在 Electrum 中有两个选择:

  1. 导入 HD 钱包(需要种子或助记符)

  2. 导入单个地址(需要该地址的密钥对)

导入高清钱包

使用第二个示例中的cryptotools库:

from cryptotools.BTC import Xprv
private = Xprv.from_seed("adfadaaaaaaaaaaaaaaaaaaaaaaaaafa")
# private = Xprv.from_mnemonic(...)
print(private.encode()) 
# 'xprv9s21ZrQH143K3RYhJCmDhwpJ4cpXxj7JfUSChYD9rwyZqkTtKb5Y1sc3SzcwgFZ6EiMC38EdQJUKSmc2oni98m3XA8dpnXaMRd8GEQxW6KA'

然后在 Electrum 中(从文件 > 新建/恢复):

在 Electrum 中导入高清钱包

在此处输入图像描述

在此处输入图像描述

并完成。

使用密钥对将单个地址导入 Electrum

在 Electrum 中导入比特币地址对话框

要导入地址,Electrum 希望用户以钱包导入格式提供私钥,但还要以您希望恢复的地址类型(脚本类型:“p2pkh”、“p2wpkh”...)为前缀。

from cryptotools.BTC import generate_keypair
private, public = generate_keypair()

wif = private.wif(compressed=True)
print(wif) 
# 'KwcQEum4qYHcfFyWYKsQoRccgnPhhAx1n4b6LfzZVcNA5Eqt8AXP'

然后

在 Electrum 中导入单个地址

在此处输入图像描述

将 KwcQEum4qYHcfFyWYKsQoRccgnPhhAx1n4b6LfzZVcNA5Eqt8AXP 粘贴到KwcQEum4qYHcfFyWYKsQoRccgnPhhAx1n4b6LfzZVcNA5Eqt8AXP导入对话框中,前面没有脚本类型,默认为“P2PKH”,并将导入旧地址(以1开头)。

如果您从头开始生成钱包,您可以自由选择您喜欢的任何脚本类型,“P2WPKH”是最新使用的类型( bc1地址),但是如果您实际上是在导入现有钱包,则需要确保此前缀对应于其中包含资金的脚本类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM