私钥(2):百行Python代码演示一私钥生成多公链公钥原理。

《区块链财富指北》系列文章由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的安装

在Anaconda官网下载网址找到对应的操作系统安装版本:

注意选择Python 3.7版本的安装包。
通常你的电脑是Windows系统的话,选择左上角这个64位的安装包下载即可。
安装过程中,一路点击Next即可。

Python环境检查

打开Anaconda Prompt程序。
在windows环境下,可以在开始菜单找到:

在Prompt命令行中输入Python版本检查命令:
python --version

在D盘创建一个hello.py文件。在hello.py文件中输入一行简单代码:
print("你好,区块链!")

保存并关闭hello.py文件,在Anaconda Prompt命令行中输入:
python d:\hello.py
见到如下提示,代表环境检查成功。

0x03 密码学安全的私钥生成方式

使用Python的内置secrets模块来生成高加密强度的随机数。
该函数的相关说明可以参见Python官方文档。

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

输入两行命令(输入一行后,回车再输入下一行):
import secrets
hex(secrets.randbits(256))[2:]
第一行是引入secrets库,
第二行是生成一个256比特的随机数;
hex()是转换成十六进制字符串;
[2:]是去掉十六进制的“0x”前缀。

这样我们就得到了一个密码学安全的种子私钥。

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

在上一篇《私钥篇(1)》的讲述中,读者只是对私钥、公钥和地址有了一个比较笼统的印象。

下面我们从BTC、EOS、ETH、TRX主流公链逐一对照原理图看下生成公钥地址过程。
在原理图中,种子私钥采用了简单的有规律的64位十六进制数:
abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789

在实际中切勿使用规律数字充当种子私钥!

BTC比特币

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

私钥的压缩WIF(钱包导入格式)是一个历史遗留的不恰当用词,压缩WIF还多出一个"01"字节。
早期的比特币采用非压缩公钥格式,后来考虑到节约区块空间,采取了压缩公钥。
为了兼容早期非压缩格式,后期的比特币私钥采用添加"01"后缀的压缩WIF与早期私钥区分。

EOSIO生态系统

EOS没有BTC的历史遗留包袱,所以私钥没有加"01"后缀。
EOS支持secp256k1、secp256r1两种椭圆曲线算法。采用secp256r1算法生成的EOS公钥采用“PUB_R1_”为前缀。
EOS公钥其实严格来说是EOS地址,只是EOS多了一个“账号”概念,充当了地址作用。EOS交易转账并不是转到公钥哈希生成的地址(EOS公钥),而是转到由公钥管理EOS账号。这个其实是非常大的优化改进,带来了巨大的灵活性和想象空间。

ETH以太坊

可以对比看到,**ETH地址格式没有任何校验信息。**比特币和EOS都有4位校验码,校验码的作用主要是防止输入错误地址。ETH如此设计的设想是:ETH地址最终会隐藏在ENS (the Ethereum Name Service,以太坊域名服务)这样的抽象层之后,如果需要校验,也是在域名抽象层做校验。只是目前来看,ETH抽象层的开发进展十分缓慢。

TRX波场

波场和ETH的生成公钥方法是一模一样的。
只是在最后的地址格式上略有变化,把ETH的前缀"0x"换成"T"开头,后面加了4位校验码。

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

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

从网上把源码下载下来。
https://gitee.com/xiao1983/blockchaincode/blob/master/allkey.py
在命令行安装一下用到的几个加密库。
pip install base58 pysha3 ecdsa
直接运行python代码,系统会自动生成一个种子私钥:
python allkey.py

在命令后附加种子私钥参数:
python allkey.py 1e99423a4ed27608a15a2616a2b0e9e52ced330ac530edcc32c8ffc6a526aedd

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

privateKey2WIF()函数是私钥的转换格式。
btc、eos私钥通过此函数转换成对应的钱包格式私钥。

pri2pubcom()函数是私钥生成压缩格式公钥。btc、eos适用。
pri2pub()函数是私钥生成非压缩格式公钥。eth、trx适用。

后面还有**pub2addressbtc()、pub2addresseos()、pub2addresseth()、pub2addresstrx()**四个函数,
分别对应的是btc、eos、eth、trx从公钥转换成地址(eos的是公钥)。

在种子私钥来源上支持参数提供和python生成两种方式。

0x06 下篇内容预告

从下篇文章开始,我们将开始注册第一个BOS主网账号,安装和学习命令行工具的使用,向着区块链深海出发。
私钥(3):熟悉命令行工具,探秘区块链深层次世界。

在互联网浏览器的技术实现中有一种“事件冒泡”的机制,就是当目标点有事件发生后,总是从本级开始,依次向外,通知和触发处理事件的函数。有点类似水面涟漪的效果。
其实,在区块链世界也有类似的情景。一个区块链项目(比如Defi等智能合约)部署落地时,总是从熟悉命令行底层工具的先尝试;然后,才是各大钱包的用户从适配好的前端界面入口体验尝鲜;最后,就是那些还呆在中心化交易所的用户,等着上币炒作了。
世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉。命令行工具虽然没有交易所、钱包等好用,却是捕获第一手区块链价值源头、探秘区块链深层次世界的必备神器。

0x07 联系及投票支持

《区块链财富指北》系列文章github存档地址:http://nocycom.github.io。
NOCY.com团队致力于区块链基础知识传播,欢迎读者朋友留言共同交流。

由于发文时间仓促及区块链领域技术迭代频繁,在教程中可能有这样或那样的错漏之处,还请读者与我们一起查漏补缺、将系列教程优化的更好。

如果觉得这系列教程有点意思,请投票支持我们的节点:BOS公链NOCYCOM节点,EOS公链NOCYCOM节点。您的投票是本教程持续更新的动力源泉,谢谢。

02《区块链财富指北》私钥篇(2):百行Python代码演示一私钥生成多公链公钥原理。相关推荐

  1. vue如何生成公钥私钥_百行Python代码演示1私钥生成多公链公钥原理。|区块链财富指北私钥篇(2)...

    <区块链财富指北>系列文章由NOCY.COM策划,肖南飞主笔撰写. 技术选型基于BOScore公链,旨在以有趣易懂的方式传播普及区块链技术,不构成任何投资建议! 学习之前说学习 今天这篇文 ...

  2. 10《区块链财富指北》DAPP篇(2):从钱包上调用合约发行通证(Token)。

    DAPP(2):从钱包上调用合约发行通证(Token). <区块链财富指北>系列文章由NOCY.COM策划,肖南飞主笔撰写. 技术选型基于BOScore公链,旨在以有趣易懂的方式传播普及区 ...

  3. 《区块链财富指北》序 | 扬帆博士(BOScore)自由港,乘风破浪区块链大航海时代!

    <区块链财富指北>序 | 扬帆博士(BOScore)自由港,乘风破浪区块链大航海时代! <区块链财富指北>系列文章由NOCY.COM策划,肖南飞主笔撰写. 技术选型基于BOSc ...

  4. 区块链技术指北社区(Chain One Community)规划

    如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块链技术指北」.同时我会把你拉入微信群「区块链技术指北」.BTW,李笑来老师也加入了我的知识星球,文末有加入 ...

  5. 新司机的黑裙战斗机 篇四:新司机的黑群晖指北—软件篇(下)

    原文网址:https://post.smzdm.com/p/awxl3d44/ 各位剁友好,我是身在长沙的一只小剁,因为ID的缘故长沙剁友赐雅号--姐夫 本文是我的首个系列<新司机的黑裙战斗机& ...

  6. 新司机的黑裙战斗机 篇二:入门—新司机的黑群晖指北——软件篇(上)

    原文网址:https://post.smzdm.com/p/alpkmoge/ 各位剁友好,我是身在长沙的一只小剁,因为ID的缘故长沙剁友赐雅号--姐夫 上一篇关于硬件配置和装机的晒单,引发了大量评论 ...

  7. Sky Hackthon比赛指北-基础篇

    无图预警,多字预警. 阅读时请保持清醒,有利于发现谬误. 关于Sky Hackthon Sky Hackthon 比赛是由 Nvidia 中国开发者社区举办的,面向国内高校学生的关于算法模型应用比赛, ...

  8. Sky Hackthon比赛指北-ASR篇

    写在前面 本系列具体介绍可以参见基础篇.这篇是系列第二篇,篇幅相较于基础篇会比较短,因为 Nemo 真的是一个很好用的库. 该篇主要分为三个部分: 背景介绍:简单介绍基础背景知识. 数据收集与处理:本 ...

  9. WarGame系列之Natas(Web安全)通关指北(初级篇0-10)详细版

    *OverTheWire社区是一个提供wargame的网站,可以帮助安全爱好者以趣味的方式进行学习.练习安全知识. 本系列文章旨在记录笔者通关思路,其中解题思路也会参考借鉴网上已有文章,在此感谢相关作 ...

最新文章

  1. 运动目标检测ViBe算法
  2. php中序列化与反序列化
  3. SQL Server 索引和表体系结构(聚集索引)
  4. MyBatis批量增删改的另外一种思路(推荐)
  5. python学习笔记:easygui的简单示例
  6. Matlab中varargin函数
  7. Python教程:多变量的灵活处理
  8. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170411
  9. Android 异步获取网络图片并处理图片Out Of Memory 内存溢出问题
  10. 最短路径和最小生成树的区别
  11. mysql 对索引limit_【业务学习】关于MySQL order by limit 走错索引的探讨
  12. ErrorPageRegistrar根据不同的错误类型显示网页
  13. 屏幕录像专家 - 视频压缩教程
  14. 怎样使用思维导图做计划?分享5个思维导图做计划的模板
  15. Windows 10怎样安装.msi文件?三分钟解决问题
  16. 解决office2003 32位卸载不干净 无法安装office2013 64位在问题
  17. javascript中的三角函数和反三角函数
  18. Kubernetes 之 二进制安装(二) 证书详解
  19. Word中题注按章节不同编号
  20. 2022开年最热投资赛道竟是虚拟人

热门文章

  1. 组合游戏(Nim游戏)——SG函数
  2. 【Kaggle竞赛树叶分类Baseline】上万片树叶分为一百七十六类
  3. windows10录屏怎么压缩?几个步骤轻松掌握
  4. Windows10 LTSC 2021 64位下载使用
  5. mercury重置密码后服务器无响应,melogin.cn打不开的解决办法 水星路由器重置完无法上网...
  6. 马云坦然不懂计算机,来自马云的绝望:三角函数让我彻底失去学数学的信心
  7. 实现简易版vue2(数据劫持,观察者,发布订阅)
  8. java sha1加密ascii码_MD5,SHA1,SHA256,SHA512等常用加密算法
  9. 新整理的开源Odoo13发布更新的部分功能模块信息
  10. iphone php环境,苹果(Mac OS X 10.5.6)下搭建php开发环境