BTA | 康烁:基于linux的挖矿操作系统

简介:

2018年3月30-31日,由CSDN、火星财经主办,中关村区块链产业联盟、柏链教育、区块链大本营、TokenSky联合主办的2018 区块链技术及应用峰会(BTA)在北京盛大召开。本次大会聚焦区块链核心技术、发展趋势、行业应用、投资、数字资产存储与交易、创新前沿技术等主题,来自全球 80+ 区块链技术领导者、100+ 区块链投资商业大咖、1000+ 区块链技术开发者及行业人士共聚一堂,以一种更纯粹的办会模式开启了一场属于技术人的开年狂欢,携手业界共同助力区块链的技术与产业升级发展,敲响开年链圈技术人最强音。


伴随区块链的火热,越来越多的人加入到挖矿的浪潮中,对于普通小白该如何参与到数字货币的挖矿事业中?不同数字货币采用的挖矿算法和挖矿软件都是怎样的?个人如何选择矿机以及其他的挖矿形式?以下是柏链道捷CTO、清华大学区块链中心高级工程师康烁给我们带来《基于Linux 的挖矿操作系统》,希望对你有所启发。


640?wx_fmt=png&wxfrom=5&wx_lazy=1


康硕简介:

康烁,柏链道捷CTO,清华大学区块链中心高级工程师,2005年毕业于清华大学软件学院,2013年创立北京迪捷数原科技有限公司。超过17年的系统软件研发经验,其中包含操作系统,编译器,虚拟机,系统软件的安全等领域,所开发的SkyEye嵌入式虚拟机产品应用于国内航空航天领域的众多型号的研发测试流程中,开发的符号执行软件android_s2e被国内的华为以及军工单位用于软件测试,所开发的基于LLVM的安卓虚拟机入选了2015年 LLVM开发者大会的项目展示环节。当前研究领域主要是区块链的安全问题。


整理 | Guoxi


大家好,我是来自柏链道捷的康烁,我今天给大家分享的主题是基于linux的挖矿操作系统,着重给大家讲一些挖矿背后核心的理念,也就是它的共识算法。


什么是挖矿?


640?wx_fmt=png


我们首先给大家介绍一下什么是挖矿。


这里面肯定有以前已经参与过数字货币挖矿转账的朋友,他们对挖矿这个概念还是比较了解的,但是我还是想从最基本的概念去入手。挖矿是什么样的事情呢?其实在我们使用的纸币出现之前挖矿这件事就存在了,在纸币之前我们使用的是金子银子作为流通货币,它们通过挖矿被挖出来。随着纸币的出现,采用贵金属作为流通货币的方式逐渐地废弃了。然后到2009年比特币出现了,在当今区块链时代,我们使用的这些数字货币是怎么产生的呢,也是通过挖矿的形式。我们在挖数字货币时,使用的是大量的计算机,去解决一个数学谜题,算出谜题的矿工会获得十几个二十几个数字货币作为奖励。所以从本质上来讲,我们当前的数字货币挖矿和我们纸币之前,贵金属作为流通货币的挖矿,货币的发行方式是一模一样的,我们都把它叫做POW方式生产货币,POW英文翻译过来就是工作量证明。用工作量证明,你要干活,付出一定的劳动力,付出一定的成本,才能产生货币,所以说我觉得在本质上我们纸币之前的挖矿形式与产生数字货币的挖矿形式是一模一样的。


挖矿的意义


640?wx_fmt=png


挖矿的意义在于什么?对于矿工获得数字货币,获得经济上的补偿或叫经济上的一种收益。从数字货币系统设计者的角度来讲,挖矿主要解决两个问题。第一个是解决了货币发行问题,所有的数字货币基本是要通过挖矿的形式产生。第二挖矿是为了维持交易系统的正常运行。矿工挖出一个区块并得到数字货币奖励,普通用户才能转帐,转帐这些交易都是被矿工验证的。每笔交易中矿工会收一些交易费,这样的话通过挖矿解决了货币发行和维持交易系统这两件事情。这就是挖矿的意义。


挖矿的发展


640?wx_fmt=png


数字货币挖矿经历了这样几个阶段,第一个阶段,大概是在2009年,2010年。以比特币为例,我们可以用CPU来挖矿,当时使用笔记本就可以挖出比特币来,慢慢的人们开始转向高性能GPU,它有几百个核,上千个核。通过简化挖矿算法,使其很容易去分割,GPU有几千个核,所以它挖起矿来比CPU更加有优势,再后来发展到FPGA挖矿,FPGA相比于GPU有什么样的优势呢? GPU不是专门用来挖矿的,FPGA把所有单元都做成哈希算法硬件,用所有的硬件资源都去做运算,挖矿效率相对于GPU提高很多。最后发展到ASIC专业矿机。


对于挖矿的形式有这样几种变迁,一种是矿场一种是矿池,矿场我可以把专业矿机放在一起,选个电费非常便宜的地方,大家一起挖矿。矿池在物理上是分离的,矿工通过互联网加入到统一的网站,这样统一的网站可以去分割运算值的范围,加入矿池后,理论上挖矿速度是比单个矿机要快一点的。最后发展到云矿机,我们可能连矿机也不需要去购买,云计算的管理平台上会根据算力挖到的矿给你报酬。


数字货币的挖矿算法


640?wx_fmt=png


基于POW的数字货币挖矿算法。POW,就是我前面第一页给大家介绍的工作量证明,基本上大部分的数字货币,都是采用POW挖矿形式。2009年发布的bitcoin,2011年发布的namecoin全部使用SHA256运算。SHA256运算挖矿效率是最高的,后面采用一些挖矿算法,scrypt,Equihash都是内存密集型的计算,在计算中大量频繁地访问内存,因此做专业的矿机并不划算。后边这些币采用内存密集型挖矿算法,比如像ETH,ETC,以及2018年新发布的KodakCoin,可以用显卡去挖矿。对后边的这种我们叫做内存密集型的挖矿算法,我认为个人还是可以参与的,个人买比较高端的矿机显卡去挖矿还是能得到一定收益的。针对比特币使用的SHA256我认为个人没办法去参与,这需要买很高端的显卡,市面上算力只有几个G的普通显卡,和最高端计算机挖矿效率对比,差距可以达到上万倍,甚至上几百万倍。


挖矿取决于数字货币的共识算法

640?wx_fmt=png


挖矿算法取决于什么?取决于数字货币中的共识算法。最早我们把除比特币外的其他数字货币,都叫做山寨货币。山寨货币为什么会出现呢?很大程度上是因为它们有新的共识算法。共识算法我们现在主要是分两类,一类是我刚才给大家介绍的POW工作量证明,付出劳动力,付出成本来获得货币。然后现在比较流行的或者说现在大家比较推崇的算法,叫POS,中文叫做权益证明。POS你要证明你手里有多少个币,你就可以去投票获得新的币。共识算法的发展趋势有两点,一点去中心化,第二点对环境友好。去中心化,从现有的挖矿算法,我们都可以看得出来。


之前比较早的数字货币大部分都采用了SHA256,大多数的算力会集中在少数人手里。后面发行大部分数字货币,都使用的内存密集型的挖矿算法,都可以用显卡进行挖矿。我在这里把POW挖矿分成两类,一类是ASIC based POW,一类是GPU based POW。POS这种共识算法分成三种,Native POS,DPOS和CASPER这个未来将会被采用的POS算法。


640?wx_fmt=png


有这么多的共识算法,但共识算法它本身的设计理念是什么?未来的发展趋势又是怎样呢?


这里面我大概总结了这么几条:


第一条去中心化,这是最重要的,未来比特币很难更改挖矿算法,由于算力比较集中,矿工也很难撼动,大家做那么多矿机的投资可能都白费了。Vitalik Buterin从最早在2014年创建以太坊的时候,就一直在考虑用POS这种共识算法,去代替以太坊现在这种共识算法。


第二点很容易理解,难于生成容易验证,挖矿是很艰难的工作,验证却是非常容易的。


还有第三点就是经济学设计,经济学设计这一点也是以太坊的创始人Vitalik Buterin比较推崇的,这里面有很多人在讨论共识算法,但这不仅仅只是计算科学范畴内的事情,必须要有经济学方面的设计。


最大化攻击损失,为了防止有人攻击我的数字货币,必须让攻击者付出比较惨重的代价,这里我写了一个“杀人一千,自损八百”。


共识算法要考虑社会环境有利的因素,这里边我们必须要考虑能量损耗,因为现在大家都比较关注这个问题,挖数字货币比较耗电。财富分配,通过挖数字货币会造成一些财富分配不公的问题。


最后,共识算法要尽量的高性能,因为共识算法性能越高,达成共识就越快,每个节点打包交易就越快,从而我们的交易速度就比较快。但是对于共识算法的设计,需要非常谨慎的设计,因为之前也发生过这样的事故。


共识算法设计得不好,一开始我就把一半的货币甚至一半多的货币挖完了,仅仅用了两天时间。包括现在POS,POS这个共识算法已经提出了很长时间,包括我们以太坊的Vitalik Buterin,最早创立以太坊时就在思考怎么用POS共识算法,共识机制,但是到目前为止还没有使用POS。这期间POS也是经过了好多轮的迭代,也有好多人去讨论,大家可以看到共识算法是一个加密数字货币系统的核心,所以说如何设计一个好的共识算法这个是非常重要的。


共识算法需要解决的问题


640?wx_fmt=png


前面介绍共识算法的一些设计理念和发展趋势,共识算法在实现层面还有几个问题。谁来生成下一个区块?谁能最先把这个数学谜题解出来就可以生成下一区块。什么时候生成下一个区块?区块里面都包含哪些交易?实现的协议如何升级或者修改?算法出现问题,如何对共识算法进行升级?这个流程是什么样子?最后一点就是有争议的交易如何解决?这是我们共识算法在实现层面需要考虑的几个问题。


Native POS面临的问题


640?wx_fmt=png


接下来介绍Native POS面临的问题。POS大家说了很多,实质上,现有的数字货币大部分还是采用了POW,原因是什么?POS面临的问题是nothing_to_stake。我给大家举个例子,圆桌上坐了一百个人,桌子上有十份文件,这一百个人要选择一份文件进行签名,然后这一百个人签完之后我会检查这十份文件,十份文件哪份文件上的签名最多,我就把这份文件叫做获胜者,在获胜者文件签名的人得到报酬和奖励。


我们把Native POS模拟成这样的场景,如果对于我们这种比较老实的人,我每次签名的时候我看一下这些文件上哪份文件签名最多,跟着他后面去签那份文件,这样等一百人签完我很容易得到签名最多的文件。这样算是达成共识,能选择到签名最多的文件。


对于一个狡猾的人,他会怎么想?我在一个文件上签名也是签,签十个也是签,不管当前这十个文件,哪个文件上签名最多,狡猾的人会在十个文件都签一遍,都签上自己的名字,不管最后你选哪个获胜者文件,都会获得奖励。这样会对Native POS带来什么样的攻击?我第一个人对这个十个文件签名,第二个人也是这样,这一百个人都这样做,带来一个什么样的问题?每个文件上都有一百份签名。十个文件上都是一模一样的,都有一百个签名。


共识算法的改进


640?wx_fmt=png


Native POS遇到的攻击没什么可损失的,也可以叫无利益攻击。


签名没什么成本,我可以在任意的文件上都做签名。我们看一下CASPER这个未来将要采用的POS算法是怎么解决Native POS遇到的问题。Native POS在左上角有这样一个区块链,有两个分支,你可以选择在某个分支上进行投票,生成一个区块,得到回报。POS第一种情况,在这两个分支上都不投票,这两个分支一个是0.9,一个是0.1,即A分支获得0.9的收益,在B分支投票获得0.1。A和B都投票你可以获得0.9+0.1,两个都投票,获益最大。这会造成什么样的问题?总会有很多分支,大家对每个分支都投票,无法达到共识。这是Native POS的问题,POW怎么解决这个问题,右上角,如果A分支B分支都不投票就没有收益,A分支投票收益0.9,B分支投票收益0.1,AB都投票你收益更少。这个是因为POW投票相当于挖矿,挖矿解决一个数学谜题。


举个例子,POW你要在两个分支上都投票获得的收益0.5乘以0.9,0.5乘0.1。你还不如在A分支投票获得0.9的收益。第一种方案在左下角,这个方案和前三种情况还是一模一样的,不投票等于0,在分支A投票收益0.9,分支B投票收益0.1,如果你在AB两个分支都投票,我会发现你做了多重投票,扣掉你的保证金。CASPER参与投票的人要交五个单位的保证金。Vitalik Buterin一直很推崇这种让攻击者损失很大的手段。


最右下角改进算法,和前两种是一样的,你不投票获得收益是零,在A分支收益0.9,在B分支投票会把你的保证金扣除,对AB两个分支都投票,会扣5个单位的保证金。右下角的事例里边,惩罚是相当严厉的,拿我们圆桌签字会议的那个例子举例,当前你有十份文件,如果不是在签字最多的文件上签名,我就要罚你钱,这是对POS算法的一种改进。不过,这种算法只有在经过非常严格的测试后,才能去做传统共识算法的替代。


挖矿操作系统CoinOS


640?wx_fmt=png


前面讲了共识算法,你有什么样的共识算法,就有对应的挖矿算法。最后一页介绍我们自己以前做的小项目,挖矿操作系统CoinOS,这是一个基于linux的U盘操作系统。这个挖矿系统可以自动地更新挖矿软件。使用时会自动计算当前应该挖哪些币以及对应的挖矿方式,主要还是针对我前面讲的使用GPU挖矿的数字货币。然后可以自动选择矿池加入,还可以把挖出来的数字货币进行自动交易,后面会进行量化交易策略。这是我之前做的项目。客户从我们这拿到U盘,就可以让它自己挖矿。


这些就是我今天介绍的所有内容,到最后做一个小小的总结。我所在的公司柏链道捷,我们前面有讲到。国内能够做区块链开发的人还是比较少,所以说我们柏链道捷公司主要是做这样的几件事情,第一做技术培训定制,我们的目的是找到资源,找到合作伙伴,另外做一些咨询服务,这是我们的CEO孟岩老师,希望以后能找到更多的合作伙伴,也欢迎大家扫二维码能够和我们进行合作。



640?wx_fmt=gif



原文发布时间为:2018年04月07日
本文作者:区块链大本营
本文来源:CSDN区块链大本营,如需转载请联系原作者。

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
目录
相关文章
|
14天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
29 0
|
16天前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
|
1月前
|
Linux 数据安全/隐私保护 虚拟化
Linux技术基础(1)——操作系统的安装
本文是龙蜥操作系统(Anolis OS) 8.4 的安装指南,用户可以从[龙蜥社区下载页面](https://openanolis.cn/download)获取ISO镜像。安装方法包括物理机的光驱和USB闪存方式,以及虚拟机中的VMware Workstation Pro设置。安装过程涉及选择语言、配置安装目标、选择软件集合和内核,设置Root密码及创建新用户。安装完成后,可通过文本模式或图形化界面验证系统版本,如Anolis OS 8.4,标志着安装成功。
|
1月前
|
存储 缓存 算法
Linux--系统结构与操作系统
Linux--系统结构与操作系统
|
1月前
|
Linux 网络安全 数据安全/隐私保护
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
160 0
|
1月前
|
安全 Linux 网络安全
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
89 0
|
14天前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
21 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】⭐Linux 显示当前系统的主机名和操作系统类型 uuname命令 使用教程
【Shell 命令集合 网络通讯 】⭐Linux 显示当前系统的主机名和操作系统类型 uuname命令 使用教程
29 0
|
1月前
|
算法 Linux 调度
根基已筑!Anolis OS 23.1 预览版本搭载 Linux 6.6 内核和工具链升级完成
Anolis OS 23.1 对软件包的选择和组合进行了重新规划与决策,满足更为广泛的应用场景需求。
|
1月前
|
安全 Linux 开发者
分析Linux桌面操作系统的迅速增长及其未来前景
最近技术圈新闻“层出不穷”,尤其是在最近,Linux桌面操作系统的市场份额迅速增长,Linux桌面操作系统的市场份额近期呈现火速增长的趋势,这一数据虽然看似不太引人注目,但实际上却具有重要的意义,达到了历史新高。了解Linux的开发者想必都知道,历经30年的努力,Linux系统的份额才在不久前达到了3%,而如今仅用了八个月的时间就新增了1%,显示出开源操作系统正迅速升温。尽管Windows和macOS仍然主导着桌面操作系统市场,但前者的份额波动较小,后者则略有下滑。虽然Linux的表现出色,但要想取得主导地位还有一段距离,有些开发者认为这是因为缺乏一个适用于所有Linux发行版的标准化桌面界面
25 1
分析Linux桌面操作系统的迅速增长及其未来前景