首页 > 技术 > 云币网以太坊价位|交易所钱包开发 如何生成比特币地址.
太壹科技  

云币网以太坊价位|交易所钱包开发 如何生成比特币地址.

摘要:比特币是迄今为止区块链最为成功的项目,也是能够长期稳居虚拟货币市值排名第一的加密货币。比特币,作为一种点对点的电子现金系统,诞生的本意在于解决线上的支付问题,于

比特币是迄今为止区块链最为成功的项目,也是能够长期稳居虚拟货币市值排名第一的加密货币。比特币,作为一种点对点的电子现金系统,诞生的本意在于解决线上的支付问题,于2008年被一位名为中本聪的“神秘人物”带到这个世界,且发行数量仅仅2100万枚。

?

基于区块链技术BTC的每个交易都经过全网广播,人人可见,可以查到任何交易历史,无法伪造、篡改交易记录。随着挖矿获取比特币的难度增加,以及比特币为首的数字货币不断发展,催生了一大批数字货币交易所,早期很多用户包括交易所企业、项目方可能会将比特币等加密资产放在交易所平台账户中。但由于交易所聚集了机构以及大量散户的数字资产,且数额庞大,成为黑客攻击的诱因。

765f68e5548a338dd95e69062e24d4d0.jpg

?

以收发、存储比特币为基础功能的比特币钱包应运而成。比特币钱包实则是由私钥和公钥所组成的数据库。对于一个钱包而言,最核心的数据便是私钥。谁掌握了私钥就掌握了钱包里的数字资产。私钥能够生成公钥,公钥再生成比特币地址。比特币地址作用就是用来接收比特币。

?

如何生成比特币地址呢?

?

如果掌握了这个流程,就会对纷繁复杂的比特币分叉币地址只是私钥的不同显示方式轻而易举的掌握了,同时对于理解以太坊EOS地址也是有百益而无一害的。

?

我们在演示时使用私钥 0xccea9c5a20e2b78c2e0fbdd8ae2d2b67e6b1894ccb7a55fc1de08bd53994ea64 为例,生成了一个主网地址 14xfJr1DArtYR156XBs28FoYk6sQqirT2s 。

?

生成比特币地址,是一个私钥生成公钥、公钥生成 hash160,hash160 再进行 base58 运算得到地址的过程,具体可表示如下:

?

96127138b43a35ec1d9a931e8b2a7730.jpg

由私钥得到公钥,是由 ECDSA 实现的。ECDSA 即椭圆曲线数字签名算法的缩写。

?

椭圆曲线并非真正意义上的啥椭圆,而是图例所示:

?5eb81356a452f31815f7d5c786d64ec0.jpg

?

BTC所采用的椭圆曲线是 secp256k1: y2=x3+7

?

如何生成比特币地址,可以分为以下八个步骤

?

第一步,生成私钥

?

比特币有必要使用到 Secp256k1 这条特殊的椭圆曲线得到公私钥,

?

我们通过 OpenSSL 命令来生成私钥。

??

得到的结果是个 16 进制数据

?

0xccea9c5a20e2b78c2e0fbdd8ae2d2b67e6b1894ccb7a55fc1de08bd53994ea64

?

也有一种稍微简单的方式是 openssl rand 32 -hex

?

第二步,生成公钥

?

根据 priv.pem 得到 pub_key,代码如下

?57fdbce53e7b4b76f010bcd17fbdcd26.png

?

输出 DER 格式, 字符长度是 130

?

pub_key = 04d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f691757b28e31be71f09f24673eed52348e58d53bcfd26f4d96ec6bf1489eab429d

?

这个是没有压缩公钥,压缩公钥是 03d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69

?

一步到位生成私钥、公钥

4f3f660ffeca3fe0cf3b0dcb75ad5c50.png

?

第三步:对第二步的结果进行 hash160 运算

?

hash160 运算 指的是先进行 SHA256,再进行 RMD160。

b767e281356a1bd42865ac0aa1a25e92.png

?

hash160_val = 2b6f3b9e337cedbb7c40839523fb1100709c12f7?

?

第四步:对上一步的结果加上前缀符

?

一般主网地址的前缀符是 00,比特币地址前缀符有很多种,详细可以参考https://en.bitcoin.it/wiki/List_of_address_prefixes

?77c01c431b9172f4c16dd7583039b1be.png?

step_04 = 002b6f3b9e337cedbb7c40839523fb1100709c12f7

?

第五步: 对上个步骤的结果执行 2 次 SHA256, 取前 8 位作为校验和

?

620d1e300dd9fd597606732d1c768318.png

checksum = 86b2e90c

??

第六步:对第四步结果以及第五步结果进行合并

?19bfc11ffc76e9dafe76eb7cdfd0225e.png?

step_06 = 002b6f3b9e337cedbb7c40839523fb1100709c12f786b2e90c

??

第七步. Base58 编码

?

Base58 作为一种独特的编码方式,是从 Base64 变形而来,主要用于比特币的钱包地址。相比 Base64,Base58 去掉了数字 0,大写字母 O,大写字母 I,小写字母 l,+ 和 /,避免引起视觉混淆。

?

演示个 base58 算法如下

5151ad17f8d7560cc07e8e2a2ed7b31a.png

?

第八步. 对第六步结果进行 base58 编码

a29252d25a158439cd27c3a8809ab2e8.png

?

获取 14xfJr1DArtYR156XBs28FoYk6sQqirT2s,这是一个由演示的私钥一步步生成的标准的比特币地址。

?

在比特币网络系统中,私钥 => 公钥 => 钱包地址,但反向是不成立的。在区块链世界有一条金科定律,说的是,私钥即财富。因此,私钥的重要性不言而喻。

?

上述阐述了比特币地址的密码学原理。在现实生活中,多用比特币钱包客户端自动生成地址。当下,数字货币的种类呈指数级上升趋势,只能存储、管理比特币系数字资产的钱包已经不能满足时代所需,支持多币种的钱包系统深受大众喜爱,特别是企业钱包系统的市场,更需要多功能、操作便捷、安全性能高的钱包系统,比如优盾钱包。

?

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。