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

这几天比特币单币的价格已经在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 条评论
登录 后参与评论

相关文章

来自专栏安恒信息

Flexcoin比特币被窃细节公布

号称世界第一家比特币银行的Flexcoin因为被偷走了896枚比特币而宣布关闭,但它没有像Mt.Gox那样掩盖原因,而是在网站首页公开了被窃的细节。 ...

2936
来自专栏蜉蝣禅修之道

以太坊DApp系列(二)---从入门到出家

以太坊自2013年V神提出后,被无数人赋予美好的愿景,甚至被称为区块链2.0,其代币发行量更是达到了全球第二,仅次于比特币,而其带来的智能合约概念颠覆了人们对区...

1.2K18
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–资产会计(162)-3资产浏览器

4.2 AW01N资产浏览器 资产浏览器允许您分析个别资产主记录的值的更改。它用不同的形式和汇总级别来表示固定资产的已计划和过帐的资产负债表值和折旧值。 资产浏...

3458
来自专栏Seebug漏洞平台

以太坊智能合约 Owner 相关 CVE 漏洞分析

最近学习了下以太坊的智能合约,而且也看到挺多厂家pr智能合约相关的漏洞,其中《ERC20智能合约整数溢出系列漏洞披露》文章中披露了6个CVE编号的漏洞,而这些漏...

1763
来自专栏区块链大本营

80%开发者都不知道的以太坊骚操作:「事件」和「日志」还可以这么玩!

1773
来自专栏区块链入门

第二十一课 如何通过Solidity的智能合约函数把长文章记录到以太坊区块链上?

辉哥的文章《第十六课 不用编程,如何把长文章记录到以太坊区块链上?》 是通过MetaMask的交易形式把数据写到链上。 本文提供另外一个方式,通过智能合约函数...

862
来自专栏破晓之歌

区块链技术核心概念与原理讲解 原

1195
来自专栏极客编程

JavaScript实现简单区块链

用JavaScript来实现一个简单的区块链。通过实现过程,你将理解区块链是什么:区块链就是一个分布式数据库,存储结构是一个不断增长的链表,链表中包含着许多有序...

1841
来自专栏ytkah

微信帐号被封零钱怎么办?微信针对封停帐号的零钱提取出了一个流程

  之前ytkah和大家讨论了微信解除限制的6个方法,但如果继续“作恶”的话,微信账号就会被封停,那零钱怎么办呢?微信针对封停帐号的零钱提取出了一个流程,以下是...

4106
来自专栏区块链入门

第三课 以太坊术语说明及开发者资源列表

也称钱包,提供账户管理、挖矿、转账、智能合约的部署和执行等等功能,以太坊节点利用以太坊客户端接入到以太坊网络。 现在以太坊客户端主要有:Wallent/ist ...

822

扫码关注云+社区