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

2024-04-26 04:30:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图了解如何创建一对比特币私钥和公钥,并将其导入electrum钱包

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

如何将其导入electrum钱包?


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

如何将其导入electrum钱包?

我看不出我怎么能把我的酒吧钥匙输入electrum钱包? 你能帮我理解我的错误吗?或者如果我混淆了什么

谢谢


Tags: tokeyaddressprivatepublic钱包printhex
1条回答
网友
1楼 · 发布于 2024-04-26 04:30:47

在Electrum中有两种选择:

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

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

导入高清钱包

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

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

然后在Electrum中(从文件>;新建/还原):

Importing a HD wallet in Electrum

enter image description here

enter image description here

然后结束

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

Import Bitcoin Addresses dialog in Electrum

要导入地址,Electrum希望用户在Wallet Import Format中提供私钥,但也要以您希望恢复的地址类型(脚本类型:“p2pkh”、“p2wpkh”、…)作为前缀

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

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

然后

Importing a single address in Electrum

enter image description here

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

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

相关问题 更多 >