磨链(mochain)-3.12分享
磨链 (mochain): 区块链技术非盈利组织
“磨链”---取磨炼之意,旨在普及区块链技术,磨炼技术,更好投身区块链行业。有兴趣一块琢磨联系笔者微信(jackyjin09)
关于mochain社区文化:
注册域名: mochain.info,mochain.group,mochain.tech
Github 组织:https://github.com/mochain
Gitter 房间:https://gitter.im/mochain
知识星球:磨链 https://t.zsxq.com/M3BMVZN
简书专题:https://www.jianshu.com/c/7713057aaebd
相关分享
群内分享讨论
分享一 :量子计算对bitcoin的威胁
https://mp.weixin.qq.com/s/i2eksF49mQyoZlnLlblObg
分享二: 详解POW与如何应对量子计算机的威胁
https://mp.weixin.qq.com/s/C4z9YwqeB--E6TI_H6tPPA
分享三:以太坊基础介绍
https://zhuanlan.zhihu.com/p/24012669
分享四:智能合约-Solidity官方文档(1)-hiblock翻译小组
https://mp.weixin.qq.com/s/HBMc1QA3wC38RkQZTju6Jg
分享五:第二期:区块链每周资讯播报---王者荣耀版(陈明艳)
https://mp.weixin.qq.com/s/nCwKBXfqQ8EtvL1CA78oBQ
相关讨论
磨链计划相关
磨链计划相关
磨链计划9-区块基础
更新相关共识机制、分布式概念 https://www.gitbook.com/book/fisho2017/blockchain-basic-concept/details
:常见共识机制
POW:proof-of-work工作量证明,这个最简单的理解就是多劳多得,说的书面化,“通过工作以获得指定成果,成果证明付出的努力”,工作量证明最早出现的应用场景是哈希现金,Adam Back于1997年发明用于抵抗邮件的拒绝服务及垃圾邮件网管滥用。比特币中通过计算哈希函数(Hash Function)来作工作量证明,这里简要说明下哈希函数:也称为散列函数,给定一个输入x,它会算出相应的输出H(x),输入x可以是任意长度的字符串,输出结果即H(x)的长度是固定的,计算H(x)的过程是高效的(对于长度为n的字符串x,计算出H(x)的时间复杂度应为O(n)关于函数碰撞等具体问题将来另作一文说明)。比特币中计算方式是SHA256(Secure Hash Algorithm)输出为256位的哈希算法,比特币中区块结构如下:
比特币的区块由区块头及该区块所包含的交易列表组成。区块头的大小为80字节,由4字节的版本号、32字节的上一个区块的散列值、32字节的Merkle Root Hash、4字节的时间缀(当前时间)、4字节的当前难度值、4字节的随机数组成。区块包含的交易列表则附加在区块头后面,其中的第一笔交易是coinbase交易,这是一笔为了让矿工获得奖励及手续费的特殊交易(目前旷工奖励12.5比特币)。
拥有80字节固定长度的区块头,就是用于比特币工作量证明的输入字符串。因此,为了使区块头能体现区块所包含的所有交易,在区块的构造过程中,需要将该区块要包含的交易列表,通过Merkle Tree算法生成Merkle Root Hash,并以此作为交易列表的摘要存到区块头中。其中Merkle Tree的算法图解如下:
难度值(difficulty)是矿工们在挖矿时候的重要参考指标,它决定了矿工大约需要经过多少次哈希运算才能产生一个合法的区块。比特币的区块大约每10分钟生成一个,如果要在不同的全网算力条件下,新区块的产生保持都基本这个速率,难度值必须根据全网算力的变化进行调整。简单地说,难度值被设定在无论挖矿能力如何,新区块产生速率都保持在10分钟一个。
难度的调整是在每个完整节点中独立自动发生的。每2016个区块,所有节点都会按统一的公式自动调整难度,这个公式是由最新2016个区块的花费时长与期望时长(期望时长为20160分钟即两周,是按每10分钟一个区块的产生速率计算出的总时长)比较得出的,根据实际时长与期望时长的比值,进行相应调整(或变难或变易)。也就是说,如果区块产生的速率比10分钟快则增加难度,比10分钟慢则降低难度。这里有一个误区,不是每个区块产生的时间都是10分钟左右,有时候区块的产生要时间久很多或者很快生成,故这个10分钟是一个平均值。难度公式:新难度值 = 旧难度值 * ( 过去2016个区块花费时长 / 20160 分钟 ),而工作量证明的目标值(target)计算公式:
目标值 = 最大目标值 / 难度值(其中最大目标值为一个恒定值:0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF新难度值 = 旧难度值 * ( 过去2016个区块花费时长 / 20160 分钟 ))
整个工作量计算公式具体为:
POW工作量证明一直运行在比特币上,但越来越多职责POW,一,资源的浪费,大量计算节点通宵达旦的计算,对于资源是很大程度的浪费。二、比特币的收益促使联合挖矿,矿池的集中是对去中心化的一种威胁(51%算力威胁)。
POS机制:
POS:POS权益证明(proof of stake)。这个解释为股权证明,2012年sunny king首次提出了POS概念,POS不需要大量算力来维持网络安全,通过钱包相应权重来获取奖励。所谓POS股权证明,通俗解释依据你持有的数字货币的数量和持有时间,根据这个两个要素发放一个利息,这里的银行存款的概念很相似。这里需要引入一个币龄的概念,币龄根据你持有的币乘以持有时间来计算,一旦你发现了一个POS的区块,那么你的币龄就被清空。当你被清空了365币龄,你将获得0.05个币的利息,那么计算公式就是:数字货币量*持有时间/365=利息。Pos机制鼓励每个人去打开客户端钱包,根据上面对POS的解释,打开客户端钱包里才可能发现区块,那么就会获得利息,当然现在POS2.0的机制(下文会解释2.0)里,必须在线运行客户端钱包,才会按照你的数字货币持有量和运行客户端钱包时间分发利息,不停的有在线客户端钱包运行,这也就保障了整个系统网络的健壮和系统运行的保障了。昨天刚好有个朋友来问,在比特币系统中万一比特币挖完了,那么算力大大降低了,是不是就可能出现51%算力集中攻击。这个问题如果在POS机制中,就要求攻击者需要拥有51%的货币量,试想下,51%的货币量被控制,这个难度和这个环境的不可靠,应该也不会吸引到太多的人了。再对比下比特币,有些人认为比特币是不会膨胀的一个货币体系,因为他的数量的是确定的,但是有没有想过一个钱包丢失的问题,要深究的话,比特币是一个货币紧缩体系,总数一定,但是会有不确定丢失。
POS的机制,那和比特币的POW机制相比,POS认为是一定程序上缩短了达成共识的时间,而且节省了资源,不像POW需要大量的算力。但是POS也有自己不可避免的缺点,单纯来说POW中,算力是基础,根据算力来决定你的话语权,但是控制算力目前来看,规模越大,越无法控制甚至垄断,相对来说比较公平。POS类似股票,持有货币量决定话语权,在一个公司内部,前期奋斗,后期可能作为决策者有大量的股份那就有决定权,数字货币环境不是单纯的一个公司那么简单,数字货币要求一个公正的环境,那么POS机制下,后来者明显处于了劣势,你前期持有币,那么你就可以不断的通过利息机制获得新币,这个过程对于先前就掌握了币的人不需要付出太多的成本,可以永久吃利息,那么这会造成一个买卖币的问题,掌握了一定数量币,而且一直增加,那么就没有太大的卖币的需求,而且你的话语权因为你掌握的币不会变,后来者不管如何努力,话语权还是处于劣势。技术角度来说,之前的文章中有对软分叉和硬分叉做过简单介绍,那么在POS机制中,一旦发生了硬分叉,这个问题就相当复杂了,因为持有货币的人在两条链上都有相同数量的货币,新的分叉也能获得利益,那么这个分叉就很大程序会被默许,这样的分叉一旦出现就会不断出现,整个系统就处于崩溃,缺乏约束健壮性。大多数都是采用POS+POW机制,例如点点币,黑币。
POS2.0:这里再说下黑币,黑币的机制被称为POS2.0(上文有提过),这个概念是前5000个区块,使用纯POW机制,5001到10000使用POS和POW混合机制、10001之后采用纯POS机制。这种模式在前期完成开采和分配,然后再进入POS模式。
DPOS机制:
DPOS:股份授权证明机制,这种机制采用投票的方式,由Bitshares提出,先解释下这个投票过程:每一个持有数字货币的人来进行投票,投票选举一组代表,假设这一组的数据是101个,然后这101个代表理解成为101个特权节点,101个节点权利完全相等,类似议会制度,选举委员。当然不是选出后永远都是这些节点成为特权节点,一旦在生成区块的时候未能生成(这里会有网络原因,节点宕机,恶意行为等原因),节点被除名,再次选举新节点来替代。除名选举在系统中时刻进行。
这种方式仔细考虑下,时刻运行选择和除名操作,这样保证了网络上所有可信任节点,整个网络更加民主,不需要网络中所有节点或者大部分节点确认,被选举出来的节点实时保证在线有效,那么就保证了系统正常运行,更重要的是,区块一直由这些选举节点在确认生成大大提高了确认的效率,缩减整个交易确认时间,这个在很大程序上改善了比特币网络中POW效率的问题。对比之前的POW和POS机制,这种方式在单一区块中可容纳更多交易,使其可接近目前中心化系统的处理效率,每个节点投票选举,然后特权节点生成区块,每个节点有选举权,这样不依赖算力和持有币数量的的约束。有兴趣的可以看下DPOS的白皮书:https://wenku.baidu.com/view/74034196ba0d4a7303763a48.html
DPOS背后的理性逻辑:
使权益所有者能够通过投票决定记账人
最大化权益所有者的红利
最小化保证网络安全的消耗
最小化网络运行成本
最大化网络的性能
DPOS本质上是把整个网络中权益分给每一个节点,从而实现去中心化的概念,现实中的投票机制可能会有缺陷,但是通过不停的选举和淘汰,保证网络中节点的高效率,从而提高整个系统的高效性。
磨链计划
计划具体内容
1.白皮书、黄皮书解读以太坊、超级账本等相关白皮书黄皮书解读,分享自己理解,整理讨论输出
2.以太坊源码解读深入以太坊运行原理、对相关模块定位到源码解读。
3.以太坊项目实践包括环境搭建,开发环境搭建,及相关实践开发
4.以太坊课程设计,相关以太坊内容整理以太坊课程、包括智能合约基础、编写、开发,考虑整理以太坊具体内容编辑成书籍。
5.bitcoinbitcoin相关内容,目前比特币自问自答
6.超级账本超级账本相关内容。具体待细化
7.IPFS相关内容PFS filecoin相关内容
8.DAGDAG,字节雪球相关内容
9.区块链基础知识包括密码学、算法、共识机制、P2P网络等相关内容
10.区块链相关政策解读与商业应用跟踪区块链相关政策解读与商业应用跟踪内容,包括最新新闻信息分析分享
11.挖矿相关挖矿原理、挖矿相关内容
12.EOS相关EOS相关内容
13.区块链技术文档翻译区块链技术文档翻译,以太坊,solidity,truffle,超级账本等相关文档
+