比特币离你很近-比特币地址及生成

这几天比特币单币的价格已经在12万以上了,对自己来说充满了遗憾和兴奋。遗憾的是之前持有的币没能一直拿住,在对于目前价格非常低的点已经出清了。兴奋的点在做为一个很早就关注虚拟货币的受众,看到市场对于虚拟货币价格和地位的承认。必敬价格是对价值的最大认可。

本文将结合Python3代码解释下比特币的钱包地址是怎么回事。

在比特币交易中常见到的地址如下:

这个习惯称为钱包地址或公钥地址,这个地址只是用做记录做区块链中存储交易信息的,简单说就是仅做交易使用 。是没有办法把这个地址对应钱包中的币带走。要带走可以需要用到他的伴侣-地址私钥,比如下:

5JXfJMw1BvK2y99M16UsyCpXzAKUZ19YmP7xmMbWsEngBx8E1pp

有了类似这样的一个地址就可以把比特币转入到公钥里,存好这个私钥地址就可以在任何安装有比特币客户端的地方找到你的比特币。

之前给朋友介绍到这里,接下来问的最多的问题就是安全吗?或者说别人会不会拿到我这个私钥钱包地址。

告诉你,很安全!

说的这么安全,那么比特币地址是怎么生成的?此处将结合python代码一起简单说一下生成的流程。

1. 随机生成64位16进制数初始私钥 , 前文说到需要保存起来的那个地址就是在这个基础上进行产生的。

对应的代码:

hexPrivateKey = bitcoin.random_key()#getStartKey();

decPrivatekey=bitcoin.decode_privkey(hexPrivateKey,'hex');

长度64,每个位置16种可能,这就是比特币地址的总个数,而通过公私钥去逆向找钱包的话还需要考虑压缩和非压缩地址,碰撞总数量还要再乘2,这就是为什么需要约136年的原因。

生成的结果如:

2.在初始私钥基础上生成WIF非压缩私钥。本文中默认讲非压缩私钥的生成,对压缩私钥有兴趣的可以看代码及代码中注释。

bitcoin.encode_privkey(decKey,'wif')

有了64位的初始私钥为啥还要这个,因为好记便于携带且安全 。生成的地址如下:

5KYzbcgayqjWxqZ21gAAoT6kZEA9HsxS9cacLC71tsEwMbDXrGz

3.在初始私钥基础上进行椭圆加密

mulKey = bitcoin.multiply(bitcoin.G, decPrivatekey)

4.在椭圆加密基础上生成公钥地址:

publicKey = bitcoin.pubkey_to_address(mulKey);

生成的内容:

1FiTUm8x8PdodXFREdN35qW7EqKx2LCHCu

以下为笔者写的生成源码带注释,生成的公钥私钥有压缩和非压缩格式。

以上代码python3执行结果:

参考:

https://pypi.python.org/pypi/bitcoin

http://zhibimo.com/read/wang-miao/mastering-bitcoin/index.html《精通比特币》

本文来自企鹅号 - aohas媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

你的第一个智能合约「Hello World」,好像也不是很智能

在看过 我花了 99 个以太坊(Ethereum)来学智能合约开发(http://davidfnck.com/blockchain/ethereum-smart...

1132
来自专栏比原链

Bytom资产发行与部署合约教程

Gitee地址:https://gitee.com/BytomBlockchain/bytom

692
来自专栏区块链大本营

千万别惹牛人!小哥被盗22元后,整出了这篇以太坊钱包安全攻略,黑客看完得哭了...

对于区块链动辄几十万行的代码量,安全漏洞时不时就冒出来。敏锐的黑客们,虎视眈眈地盯着漏洞的闸门,一旦看见开闸,便以迅雷不及掩耳的速度展开偷袭。

922
来自专栏华仔的技术笔记

eos地址结构和公钥的关系

6543
来自专栏汇智网教程

原 EOS智能合约开发入门

3466
来自专栏区块链技术专栏

EOS Cleos 命令使用指南

cleos包含所有命令的文档。有关cleos已知的所有命令的列表,只需简单地运行它,不带任何参数:

1.8K10
来自专栏区块链入门

第二课 如何实现以太坊最简智能合约“Hello World”的运行

如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇。 就先学习任何编程语言一样,入门的第一个程序都是Hello World...

844
来自专栏祥云无界

imtoken钱包的使用教程

为了方便大家使用imtoken钱包,在这里将imtoken钱包使用教程详细的给大家展示出来。钱包使用很简单,但是需要大家多熟悉。还有文章中有红色字体提示的内容为...

2.9K31
来自专栏深入浅出区块链技术

如何搭建以太坊私有链

在开发以太坊时,很多时候需要搭建一条以太坊私有链,通过本文一起看看如何在Mac上进行搭建。

973
来自专栏圆方圆学院精选

【刘杰良】使用RPC接口新建EOS账户 - 实战

最近在研究 EOS 的 RPC API,但是由于官方API文档的不够详尽,新建账号(new account)这一个操作就折腾了一个多星期。皇天不负有心人,终于...

1175

扫码关注云+社区