首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

玩转比特币之三:自己开户-由私钥生成公钥和地址

引 子

本人在此系列文章的第一篇:玩转比特币之一:私钥/公钥/地址中提到自己生成安全私钥的重要性和必要性,而且在第二篇文章玩转比特币之二:自己动手生成安全私钥中给出了具体的生成方法,给出了Python脚本和一些需要注意的要点。大家可以借鉴,不瞒各位,我就是采用这个方法来生成自己的私钥和地址。

另外,我在第一篇中提到私钥难以记忆,有没有好的办法,答案是肯定的,有办法可以生成安全又易记的私钥和地址。具体的方法敬请期待我的下一篇文章。

这里要特别提请注意的是我介绍的方法不同于通用钱包使用的方法。现在大多数钱包是Deterministic wallet(确定性钱包),实现BIP32协议,能通过一串助记词生成许多许多私钥和地址,因此你记住这12个单词或汉字就好了。但是,相信我,这启示是不够安全的,具体原因我下文再讲。

那么本文呢,来点轻松的,如何通过已有的私钥生成公钥和地址,其实,介绍的文章很多,算法是确定的,这里主要是为了系列文章的完整性,同时也是为了便于各位查阅,附带python脚本,可直接使用。

私钥、公钥、地址的生成流程

技术性的东西不细谈,文章很多,关键几点也说过了,私钥是32位的数,为了可读性和安全性加入了版本,校验和Base58编码;椭圆曲线算法求得公钥,哈希两次取得私钥。

有兴趣可以参阅一文读懂比特币私钥、公钥、钱包地址的来历和关系。下图也是出自与此文:

由私钥生成公钥

直接上python脚本,直观简单,基本上是一句话搞定

注1: s 为私钥的16进制表示,函数返回16进制表示的公钥

注2: ecdsa是常用的一个加密签名数据包,SECP256k1是比特币使用的椭圆曲线算法。

生成地址

哈希哈希,地址就生成了,还是直接上python脚本。

注1: s 为共钥的16进制表示,函数返回base58编码的地址

注2: hashlib是常用的一个散列数据包。这里采用ripmd160散列算法,做两次摘要。

一般而言,你不需要记忆和存储公钥,因为其可以直接由私钥计算而来,但你需要记下地址,因为你需要用它来向里转入比特币(囤币),那么这样的话,直接通过私钥生成地址好了。那就把前面的脚本放到一起就可以了

私钥和地址的保存和使用

当你生成了一批私钥和地址,你的银行账户就开好了,这是你自己开的,没有依赖任何人。这些私钥和地址(就是纸钱包),主要目的是给你囤币用的,就是中长期存款。当然,你一定还需要别的钱包,用来做小额的支付消费和交易等。

使用这些纸钱包的注意事项:

私钥绝对币可以示人,自己保存,保密

在需要入账时,告知转账人你的地址

当你需要给被人转账时,把你一个账户的比特币全部导入你的一个电子钱包,多数钱包都有直接读取私钥进行转账的功能,然后进行转账

当一个钱包被被使用过一次导出操作后,最好不要再使用。也就是说,私钥只使用一次

因此,你需要很多组私钥地址对来长期使用,这没什么,你有币,为了安全,这是值得的

附:完整脚本

前期文章:

玩转比特币之一:私钥/公钥/地址

玩转比特币之二:自己动手生成安全私钥

下一篇:生成你记得住的私钥

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180628G0ZQTF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券