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

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

相关文章

来自专栏区块链大本营

@程序员,如何淋漓尽致地敲出Solidity安全代码?

区块链技术的发展要与安全挂钩,齐头并进,让迅速的发展约束在可靠的范围之内,才能真正让新科技稳步推广,深入人心。

671
来自专栏区块链大本营

嘿,程序员!手把手教你写出智能合约Hello, World

6849
来自专栏安恒信息

Flexcoin比特币被窃细节公布

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

2836
来自专栏极客编程

一个EOS区块链RPC API接口的PHP SDK包

作为我们Block Producer对社区利益的承诺的一部分,我们希望专注于构建有助于提高EOS平台采用率的工具/应用程序。与大多数大型应用程序一样,当你只有少...

1141
来自专栏区块链技术指北

以太坊生态中的工具与技术

这是「区块链技术指北」的第 32 篇文章。 如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块链技术指北」。同时我...

27910
来自专栏极客编程

EOS智能合约开发和测试框架EOSFactory

自2017年秋季以来,Tokenika一直致力于创建基于Python的EOS智能合约开发平台,以便轻松创建,测试和部署智能合约。随着EOS的不断发展,我们已经习...

701
来自专栏区块链大本营

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

1593
来自专栏mathor

第六届蓝桥杯决赛B组C/C++——关联账户

633
来自专栏区块链入门

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

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

682
来自专栏SAP最佳业务实践

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

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

3338

扫码关注云+社区