主页 > 怎么下载imtoken苹果版 > Anaconda使用github代码_100行代码演示1私钥生成多公链公钥原理|《专区

Anaconda使用github代码_100行代码演示1私钥生成多公链公钥原理|《专区

怎么下载imtoken苹果版 2023-01-17 05:17:12

c961b9867ff6030e338000c8c37db65e.png

《区块链财富指南》系列文章由NOCY.COM策划,肖南飞撰稿。

技术选型基于BOScore公链,旨在以一种有趣易懂的方式传播和普及区块链技术,不构成任何投资建议! 0x01 先学习后学习

今天的文章涉及到Python编程,可能有点枯燥。

并且衷心希望读者不要只看表面文章以太坊私钥怎么用,不要停留在被动学习中,

而是进行主动学习,根据文章内容练习编码。

所以,在学习之前,有必要先说说为什么要主动学习。

75dc09ad4f58fcaeb87de7cbc7764b73.png

有一个“学习金字塔”理论,将人类的学习分为“被动学习”和“主动学习”两个层次。

从图中我们可以看出,在听演讲、看文章、学习视频等的时候,学习内容的留存率是很低的。

因为你在被别人灌输,在听别人说话。

只有开始自己思考,开始总结讨论交流,开始实践,开始对外输出,你才会真正理解和掌握知识。

纸上谈兵的成果总是肤浅的,我知道这件事必须要做。

相信在我们的工作和生活中,我们都有这样的经历。

a0788b1e545c8d3c11c9db2071fd317d.png

被动学习往往只是为了满足一个人的学习虚荣心,让你看起来很努力!

这就像爬山一样。

被动学习的人,总是要等别人修好了路,才能爬上山;

主动学习就是通过观察和模仿修路的方法来修路、爬山。

只有主动学习,才能真正有效地将别人的知识转化为自己的技能。

d2619ba761f3a975cd1fbd0bf1653f17.png

学习是一件“违背人性”的事情。

投入精力主动学习技术值得吗?

以太坊官网以太坊_以太坊与以太基金_以太坊私钥怎么用

随着时代的变迁,计算机技术已经成为一种常识而不是专业知识。

学习计算机技术不再只是在行业中谋生的工具,而成为了解现代社会运作原理的必备技能。

阮一峰老师在《技术教育的兴起》一文的末尾写了一段话,是这么说的:

未来形势远比我们想象的严峻,科技将替代越来越多的劳动力。 展望未来,绝大多数人,甚至90%以上的人,终其一生都在社会底层挣扎,赚取着小康或略高于温饱线的薪水。

只有技术才能让你站起来。 比特币就是一个例子,过去几年价格上涨了数百万倍。 我认识的很多科技人都是靠比特币发家致富的,这只是科技带来的财富浪潮中的一个突出例子。 如果你懂技术,你就能看到机会。 现在看来,只有技术才能提供这样一个从底层迅速崛起的机会。

我有一种悲观的预感。 改变你以后的生活只有两条路,一是学技术,二是买彩票。

对于刚接触编程的朋友,不用担心没有基础。

在区块链领域,没有人有专业背景。

种一棵树最好的时间是十年前,其次是现在。

0x02 寻宝工具:安装Python环境

工欲善其事,必先利其器。

在我们从代码层面探究“私钥”的奥秘之前,我们需要安装一个神器:Python。

本节知识是Python环境的安装,比较简单。

电脑环境已经有Python3.7环境的读者可以跳过以太坊私钥怎么用,直接看下一节。 Python 和 Anaconda 简介

Python是一种面向对象的解释型计算机语言,其特点是语法简洁优雅,易于学习。

e4b89bb842896fb6a3170e4c310aafbd.png

“人生苦短,我用Python。” Python 语言以其灵活性和易用性而著称。

这里以Python作为工具,对区块链的概念进行讲解和验证,

这并不意味着您必须从头开始学习 Python 语言。

与实践相关的知识点会贴出完整可运行的Python代码。

读者朋友只需复制粘贴相应的Python代码即可实际运行。

以太坊私钥怎么用_以太坊官网以太坊_以太坊与以太基金

1ca60c62d932754afce0a5bc6268bfee.png

Anaconda 是一个开源的 Python 包管理器。

Linux、macOS和Windows系统都有一键安装包,

安装好Anaconda后,你就可以拥有一个比较完整的Python环境和相关的类库。

Anaconda不仅适合初学者,也是数据分析的标准环境。

蟒蛇安装

在【Anaconda官网下载地址】找到对应的操作系统安装版本(#Downloads):

88bc7bf5629ef2a01dda10baece462d0.png

注意选择Python 3.7版本的安装包。

通常,如果你的电脑是Windows系统,只需选择左上角的64位安装包即可下载。

安装过程中,一路点击Next。

Python环境检查

打开 Anaconda Prompt 程序。

在windows环境下,在开始菜单中可以找到:

da4d0154b12232f4a3e0f6f653104622.png

在Prompt命令行输入Python版本检查命令:

蟒蛇--版本

41ad96cfeb7064d38a192338b8d07cb8.png

在D盘创建一个hello.py文件。 在 hello.py 文件中输入一行简单的代码:

print("你好,区块链!")

保存并关闭hello.py文件,在Anaconda Prompt命令行中输入:

以太坊官网以太坊_以太坊私钥怎么用_以太坊与以太基金

python d:你好.py

如果看到如下提示,说明环境检查成功。

01f499fa8efc07a230ebaef42169805d.png

0x03 加密安全私钥生成方法

使用 Python 的内置 secrets 模块生成加密强度高的随机数。

该函数的相关描述可以在Python官方文档中找到。

139d7de2eddb565bc8b94fa485379cce.png

在命令行输入Python,回车进入Python语言环境:

ce56d4c93cda019820f5485a73214135.png

输入两行命令(输入一行后回车再输入下一行):

进口机密

十六进制(secrets.randbits(256))[2:]

第一行是介绍secrets库,

第二行是生成一个256位的随机数;

hex() 转换为十六进制字符串;

[2:]是去掉十六进制的“0x”前缀。

eb14a3d8beb111f85bf1651f2774af9e.png

这样,我们就得到了加密安全的种子私钥。

0x04 主流公链公钥地址生成原理

在上一篇《私钥(一)》中,读者只是对私钥、公钥和地址有了一个大概的印象。

下面我们从BTC、EOS、ETH、TRX主流公链的示意图一一看一下生成公钥地址的过程。

以太坊与以太基金_以太坊官网以太坊_以太坊私钥怎么用

示意图中,种子私钥采用简单正规的64位十六进制数:

abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789

在实践中,切勿使用常规数字作为种子私钥! 比特币

ee51517a9f98bbf6d328eea47ed1a61f.png

私钥可以用多种不同的格式表示,所有格式都对应同一个 256 位二进制种子私钥。

f5d374019135c22bbbfec38dd0d72260.png

私钥压缩WIF(钱包导入格式)是历史遗留下来的一个不恰当的名词,压缩WIF中多了一个“01”字节。

早期比特币采用非压缩公钥格式,后来考虑到节省区块空间采用压缩公钥。

为了兼容早期的未压缩格式,晚期比特币私钥与早期私钥的区别是使用加了“01”后缀的压缩WIF。

EOSIO 生态系统

0aa24c402f7b9674ffbbb6d599208c6b.png

EOS没有BTC的历史遗留,所以私钥没有“01”后缀。

EOS支持两种椭圆曲线算法,secp256k1和secp256r1。 secp256r1算法生成的EOS公钥以“PUB_R1_”为前缀。

严格来说,EOS公钥是一个EOS地址,但是EOS多了一个“账户”的概念,就是一个地址。 EOS交易转账不是转入公钥哈希(EOS公钥)生成的地址,而是转入公钥管理的EOS账户。 这其实是一个非常大的优化和改进,带来了极大的灵活性和想象空间。

以太坊

fd85bd02029f81f685aa8db9a94bbcc4.png

通过对比可以看出,ETH地址格式没有任何验证信息。 比特币和EOS都有一个4位数的校验码,校验码的作用主要是防止地址输入错误。

ETH 设计背后的想法是,ETH 地址最终将隐藏在一个抽象层之后,例如 ENS(以太坊名称服务,Ethereum Domain Name Service)。 如果需要验证,也会在域名的抽象层进行验证。

但目前,ETH抽象层的开发进展非常缓慢。

TRX波场

c98fcfaa7ad739a0a8463b44ba963a00.png

以太坊与以太基金_以太坊私钥怎么用_以太坊官网以太坊

TRON 和 ETH 的公钥生成方式是完全一样的。

只是最终地址格式略有变化,ETH的前缀“0x”被替换为“T”开头,后面是4位校验码。

0x05 一百行Python代码演示一私钥多公链原理。

下面我们用一段Python代码来实际体验一下用相同的随机数生成BTC、ETH、EOS、TRX等主流公链生态私钥公钥和地址的过程。

从网上下载源代码:。

安装几个在命令行上使用的加密库。

pip 安装 base58 pysha3 ecdsa

直接运行python代码,系统会自动生成种子私钥:

蟒蛇全键.py

c64dc2e76c20d1e1e19f6894234b4ddc.png

在命令后附加种子私钥参数:

python allkey.py 1e99423a4ed27608a15a2616a2b0e9e52ced330ac530edcc32c8ffc6a526aedd

0208bca1ccdcdf1b6257b623cd59a37a.png

限于篇幅,这里只截取源码中的部分关键函数进行说明:

708ae8bb32dcf9f5ab00961f72c71eed.png

privateKey2WIF()函数是私钥的转换格式。

通过该函数将btc和eos私钥转换为对应的钱包格式私钥。

d28dc52921ddd4db81d60c8bd01077c0.png

pri2pubcom() 函数从私钥生成压缩公钥。 适用于btc和eos。

pri2pub() 函数从私钥生成未压缩的公钥。 eth 和 trx 适用。

有四个函数,pub2addressbtc(), pub2addresseos(), pub2addresseth(), pub2addressstrx(),

相应地,btc、eos、eth、trx都是由公钥转换为地址(eos是公钥)。

6096a267ce9c167ecd10f78ce6968764.png

种子私钥的来源支持参数提供和python生成。