对矿业的一点思考

2018-12-17  本文已影响76人  Buffalo_Lv

关于矿机

矿机是对PoW挖矿算法的ASIC化,通过专用的硬件芯片快速执行PoW算法(通常是哈希算法)。设计一个公链系统,通常要考虑多种共识算法之间的差异,并尽可能融合各个共识算法的优点。若采用PoW算法,矿机是必须要思考的问题之一,而所谓的「抗-ASIC的PoW算法」则可能是个伪命题。

由于软件是运行在硬件上的,软件与硬件之间的界限本来就是模糊的,凡软件能实现的算法,用硬件也能实现,区别只在于算法执行效率的提升是否显著。只要PoW算法的设计固定了,就一定能找到用硬件优化执行的方法,进而被ASIC化,从这个角度看,不同PoW算法之间的区别,只在于算法A被ASIC化之后,其执行效率是通用计算机的a倍,而算法B被ASIC化之后,其执行效率是通用计算机的b倍,而a与b的值却可能差别很大,比如a是10,而b是10000。

问题1:是否存在或能够找到一个PoW算法,其能够随着区块的产生,而动态生成程序,然后执行这个被生成的程序,输出工作结果,并且工作结果能够被验证者轻松验证?这个问题可能需要理论计算机科学家和数学家来回答。直觉上,该问题应该是无解的。

目前的PoW算法是哈希算法,所谓的“算力”,指的也是哈希算力,并不是通用算力。也就是说挖矿芯片只能用于哈希计算与取暖,其功能极其单一。虚拟货币价格下跌后,矿机可能就被断电闲置,而没有其他用途。于是开始有人思考:设计一种PoW算法,其内部包含通用算子(比如矩阵运算,其经常被科学计算用到),那么挖矿芯片除了用于执行PoW之外,也可以通过上层的调度程序分配执行科学计算任务,或者统计出人工智能计算需用到的高频算法模块,将其设计到PoW算法中,这样的挖矿芯片可以执行人工智能计算,实现多用途。

问题2:有效的PoW算法对计算结果的验证速度要远远超过计算速度,集成了通用算法的PoW算法,其计算结果,能否被快速验证?这是通用算法与专用算法的一个矛盾点,难以平衡。对于这个问题,直觉上并非不可解,比如能否在PoW算法中引入对交易数据的某种排序算法?因为排序算法是通用的,而且相对于排序操作的计算复杂度来说,对排序结果的验证是非常简单而快速的。

关于矿池

矿池是对挖矿算力的聚拢,人们可自由选择自己的矿机加入哪一个矿池。即使不存在矿机,采用通用计算机执行PoW挖矿,一样会形成矿池组织。人们可能会认为矿池的存在严重违反了去中心化的设计初衷和1个CPU对应1张投票的理想。然而很遗憾,矿池问题可能是无解的,因为矿池是矿机主人抱团取暖的结果,是人性,除非能够改造所有矿机主人的意识,在人之外求取算法解决方案可能是事半功倍。我曾尝试解决如何才能避免矿池的形成,最终是无功而返,思考路线如下:

方案1:「让每一次工作量计算与私钥紧密关联」,因为私钥通常是不可共享的,这样能够抑制矿池的出现。矿机不太可能将私钥发给矿池,矿池也不太可能把私钥分发给矿机,因为这样账户就不安全了。因此可以改造Bitcoin的区块头部,将Nonce字段的值改为币基地址,通过不断尝试生成新的密钥对,对公钥做两次哈希得到币基地址,才能够作为Nonce参与计算,Nonce值不再是一个无意义的随机数,最终的区块链奖励将会存入Nonce值所代表的地址账户中。

方案2:让矿机拥有者感觉到「加入矿池」和「独自计算」没有明显的收益差距,这样就不会形成矿池了。产生合法区块有两种基本思路(其他思路都是这两者的结合与变种):第一种是先选举出合法的出块节点,其产出的区块就是有效的;第二种是每个节点都出块,最终通过算法筛选出一个合法区块。PoW属于第二种,而利用可验证随机函数(VRF)的特性,随机选择出块节点执行PoW算法,矿机加入矿池或独立挖矿,被选中的概率是没有什么差别的,这样就可以抑制矿机加入矿池。

深入思考这两个方案,可以发现这些方案是徒劳的。针对方案1,人们可以签署法律合同,并同意加入某一个矿池,由矿池负责统一管理所有动态生成的Nonce值(币基地址)对应的密钥对。因为购买矿机的人基本不关心矿机怎么使用与维护,托管到专业的矿场中即可,矿机主人并不关心挖矿收益的分配细节,按时领取矿池发放的工资即可。而针对方案2,从长期和概率角度看,矿机独立挖矿和加入矿池的收益可能差别并不大。但是矿池提供了一种均稳收益获取方案,加盟者每天都可以领到矿池发放的工资,大部分机主更希望获取稳定收益,而不是等待一段随机不确定的时间,突然挖出一个区块获得收益,加入矿池后还可以免去区块链系统全节点运维的麻烦,无需投入学习技术知识的成本和精力,省心省力。这是人性,可能无解。

区块链系统表面上是由分布在世界各地的机器所构成,而这些机器代表的其实是人的意识,机器之间的共识算法,本质上是人与人之间的共识。而从技术设计的角度看,PoW其实是公平的,人人都可以购买矿机参与挖矿,若某些矿池利用大算力攻击区块链系统,机主可以选择立即撤回自己的算力加盟(关掉自己的矿机),这些矿池就会快速崩溃,PoW赋予了人们自由选择的机会,但是人们若自愿放弃自己的权力,将所有权力都留给矿池公司,这不能归结为PoW的设计问题。

上一篇下一篇

猜你喜欢

热点阅读