主页 > 怎么下载imtoken苹果版 > Anaconda使用github代码_100行代码演示1私钥生成多公链公钥原理|《专区
Anaconda使用github代码_100行代码演示1私钥生成多公链公钥原理|《专区
《区块链财富指南》系列文章由NOCY.COM策划,肖南飞撰稿。
技术选型基于BOScore公链,旨在以一种有趣易懂的方式传播和普及区块链技术,不构成任何投资建议! 0x01 先学习后学习
今天的文章涉及到Python编程,可能有点枯燥。
并且衷心希望读者不要只看表面文章以太坊私钥怎么用,不要停留在被动学习中,
而是进行主动学习,根据文章内容练习编码。
所以,在学习之前,有必要先说说为什么要主动学习。
有一个“学习金字塔”理论,将人类的学习分为“被动学习”和“主动学习”两个层次。
从图中我们可以看出,在听演讲、看文章、学习视频等的时候,学习内容的留存率是很低的。
因为你在被别人灌输,在听别人说话。
只有开始自己思考,开始总结讨论交流,开始实践,开始对外输出,你才会真正理解和掌握知识。
纸上谈兵的成果总是肤浅的,我知道这件事必须要做。
相信在我们的工作和生活中,我们都有这样的经历。
被动学习往往只是为了满足一个人的学习虚荣心,让你看起来很努力!
这就像爬山一样。
被动学习的人,总是要等别人修好了路,才能爬上山;
主动学习就是通过观察和模仿修路的方法来修路、爬山。
只有主动学习,才能真正有效地将别人的知识转化为自己的技能。
学习是一件“违背人性”的事情。
投入精力主动学习技术值得吗?
随着时代的变迁,计算机技术已经成为一种常识而不是专业知识。
学习计算机技术不再只是在行业中谋生的工具,而成为了解现代社会运作原理的必备技能。
阮一峰老师在《技术教育的兴起》一文的末尾写了一段话,是这么说的:
未来形势远比我们想象的严峻,科技将替代越来越多的劳动力。 展望未来,绝大多数人,甚至90%以上的人,终其一生都在社会底层挣扎,赚取着小康或略高于温饱线的薪水。
只有技术才能让你站起来。 比特币就是一个例子,过去几年价格上涨了数百万倍。 我认识的很多科技人都是靠比特币发家致富的,这只是科技带来的财富浪潮中的一个突出例子。 如果你懂技术,你就能看到机会。 现在看来,只有技术才能提供这样一个从底层迅速崛起的机会。
我有一种悲观的预感。 改变你以后的生活只有两条路,一是学技术,二是买彩票。
对于刚接触编程的朋友,不用担心没有基础。
在区块链领域,没有人有专业背景。
种一棵树最好的时间是十年前,其次是现在。
0x02 寻宝工具:安装Python环境
工欲善其事,必先利其器。
在我们从代码层面探究“私钥”的奥秘之前,我们需要安装一个神器:Python。
本节知识是Python环境的安装,比较简单。
电脑环境已经有Python3.7环境的读者可以跳过以太坊私钥怎么用,直接看下一节。 Python 和 Anaconda 简介
Python是一种面向对象的解释型计算机语言,其特点是语法简洁优雅,易于学习。
“人生苦短,我用Python。” Python 语言以其灵活性和易用性而著称。
这里以Python作为工具,对区块链的概念进行讲解和验证,
这并不意味着您必须从头开始学习 Python 语言。
与实践相关的知识点会贴出完整可运行的Python代码。
读者朋友只需复制粘贴相应的Python代码即可实际运行。
Anaconda 是一个开源的 Python 包管理器。
Linux、macOS和Windows系统都有一键安装包,
安装好Anaconda后,你就可以拥有一个比较完整的Python环境和相关的类库。
Anaconda不仅适合初学者,也是数据分析的标准环境。
蟒蛇安装
在【Anaconda官网下载地址】找到对应的操作系统安装版本(#Downloads):
注意选择Python 3.7版本的安装包。
通常,如果你的电脑是Windows系统,只需选择左上角的64位安装包即可下载。
安装过程中,一路点击Next。
Python环境检查
打开 Anaconda Prompt 程序。
在windows环境下,在开始菜单中可以找到:
在Prompt命令行输入Python版本检查命令:
蟒蛇--版本
在D盘创建一个hello.py文件。 在 hello.py 文件中输入一行简单的代码:
print("你好,区块链!")
保存并关闭hello.py文件,在Anaconda Prompt命令行中输入:
python d:你好.py
如果看到如下提示,说明环境检查成功。
0x03 加密安全私钥生成方法
使用 Python 的内置 secrets 模块生成加密强度高的随机数。
该函数的相关描述可以在Python官方文档中找到。
在命令行输入Python,回车进入Python语言环境:
输入两行命令(输入一行后回车再输入下一行):
进口机密
十六进制(secrets.randbits(256))[2:]
第一行是介绍secrets库,
第二行是生成一个256位的随机数;
hex() 转换为十六进制字符串;
[2:]是去掉十六进制的“0x”前缀。
这样,我们就得到了加密安全的种子私钥。
0x04 主流公链公钥地址生成原理
在上一篇《私钥(一)》中,读者只是对私钥、公钥和地址有了一个大概的印象。
下面我们从BTC、EOS、ETH、TRX主流公链的示意图一一看一下生成公钥地址的过程。
示意图中,种子私钥采用简单正规的64位十六进制数:
abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789
在实践中,切勿使用常规数字作为种子私钥! 比特币
私钥可以用多种不同的格式表示,所有格式都对应同一个 256 位二进制种子私钥。
私钥压缩WIF(钱包导入格式)是历史遗留下来的一个不恰当的名词,压缩WIF中多了一个“01”字节。
早期比特币采用非压缩公钥格式,后来考虑到节省区块空间采用压缩公钥。
为了兼容早期的未压缩格式,晚期比特币私钥与早期私钥的区别是使用加了“01”后缀的压缩WIF。
EOSIO 生态系统
EOS没有BTC的历史遗留,所以私钥没有“01”后缀。
EOS支持两种椭圆曲线算法,secp256k1和secp256r1。 secp256r1算法生成的EOS公钥以“PUB_R1_”为前缀。
严格来说,EOS公钥是一个EOS地址,但是EOS多了一个“账户”的概念,就是一个地址。 EOS交易转账不是转入公钥哈希(EOS公钥)生成的地址,而是转入公钥管理的EOS账户。 这其实是一个非常大的优化和改进,带来了极大的灵活性和想象空间。
以太坊
通过对比可以看出,ETH地址格式没有任何验证信息。 比特币和EOS都有一个4位数的校验码,校验码的作用主要是防止地址输入错误。
ETH 设计背后的想法是,ETH 地址最终将隐藏在一个抽象层之后,例如 ENS(以太坊名称服务,Ethereum Domain Name Service)。 如果需要验证,也会在域名的抽象层进行验证。
但目前,ETH抽象层的开发进展非常缓慢。
TRX波场
TRON 和 ETH 的公钥生成方式是完全一样的。
只是最终地址格式略有变化,ETH的前缀“0x”被替换为“T”开头,后面是4位校验码。
0x05 一百行Python代码演示一私钥多公链原理。
下面我们用一段Python代码来实际体验一下用相同的随机数生成BTC、ETH、EOS、TRX等主流公链生态私钥公钥和地址的过程。
从网上下载源代码:。
安装几个在命令行上使用的加密库。
pip 安装 base58 pysha3 ecdsa
直接运行python代码,系统会自动生成种子私钥:
蟒蛇全键.py
在命令后附加种子私钥参数:
python allkey.py 1e99423a4ed27608a15a2616a2b0e9e52ced330ac530edcc32c8ffc6a526aedd
限于篇幅,这里只截取源码中的部分关键函数进行说明:
privateKey2WIF()函数是私钥的转换格式。
通过该函数将btc和eos私钥转换为对应的钱包格式私钥。
pri2pubcom() 函数从私钥生成压缩公钥。 适用于btc和eos。
pri2pub() 函数从私钥生成未压缩的公钥。 eth 和 trx 适用。
有四个函数,pub2addressbtc(), pub2addresseos(), pub2addresseth(), pub2addressstrx(),
相应地,btc、eos、eth、trx都是由公钥转换为地址(eos是公钥)。
种子私钥的来源支持参数提供和python生成。