前言
我印象中,大家对挖矿、比特币很熟悉,对区块链技术体感并不强,直到16年国家规划十三五计划时,中央人民政府网上发布了《国务院关于印发“十三五”国家信息化规划的通知》,该文件是“十三五”国家规划体系的重要组成部分。规划中首次提及区块链,并将其认定为重点加强的战略性前沿技术。
从此国内各种搞区块链的潮流,有正规军,也有各种“妖魔鬼怪”,只要是跟区块链沾边的都能够飞起来,不是有句话么,“站在风口,猪都能够飞起来”。
直到近期,因为新规划“碳中和 碳达峰”,国内各种挖矿的矿机、矿池被关闭,那国家是在打压区块链技术了么?我想不是的,由数字人民币就可以看到,国家支持新技术的善用,打击新技术的恶用。溯源,记账,发票等各项基于区块链的应用也给区块链带来很多善用的地方。
比特币
谈论区块链技术,不得不谈及比特币,建立在区块链技术之上的虚拟货币,其具有的去中心化性质,使得其在世界范围内被广泛使用。并且比特币的总量是一定的,我们必须通过“挖矿”的方式或者说“记账”的方式来获取一定量的比特币。而这些币可以在虚拟网络世界换来等价的实物,这也就是为什么大家热衷于挖矿。
比特币本质
上述挖矿的本质其实是区块链技术节点共识的一个过程,比特币采用了比较旧的POW(工作量证明机制)算法来达到共识,而这个算法的本质是谁先算出某一个值,就会获得对应激励,这个激励就是比特币,旷工挖矿的过程就是对一个大数或者简单书对一个定值hash进行寻找的过程,谁先计算出这个hash值,谁就先完成记账过程,获得激励。
区块链起源(分布式账本)
区块链技术起源于 2008 年化名为“中本聪”(Satoshi nakamoto)的学者在密码学邮件组发表的奠基性论文 《比特币:一种点对点电子现金系统》具有去中心化、透明性、开放性、自治性、匿名性和信息不可篡改等特点,被认为是继大型机、个人电脑、互联网、移动社交网络之后计算范式的第五次颠覆式创新, 是人类信用进化史上继血亲信用、贵金属信用、央行纸币信用之后的第四个里程碑。区块链技术为解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题提供了解决方案。
区块链技术
区块链技术涵盖 p2p 网络、加解密算法、共识机制、分布式存储。其实看到这里,不由得想到了 AJAX(基于现有技术的重新排列组合实现的新技术,你有同感么!!正是因为有这些技术的支持,才有了区块链的各种逆天的特性!
区块链的特性
去中心化:无需第三方介入,实现人与人点对点交易和互动(p2p)udp 协议,节点之间的建立,连接和广播内网穿透,如何能让两个处在内网的节点,相互发现自己的存在,并且建立通信。
信息不可篡改:数据信息一旦被写入区块中就不能更改撤销(散列安全算法)SHA 接收一段明文,然后以一种不可逆(高数据敏感性)的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说是对明文的一种”指纹”或是”摘要”所以对散列值的数字签名就可以视为对此明文的数字签名。
公开透明:极短时间内,区块信息会被复制到网络中的所有区块,实现全网数据同步,每个节点都能回溯交易双方过去的所有交易信息。
集体维护性:在整个互联网金融系统,无论是资金的供给者还是资金的借贷者都可以充当保护者的作用;共同维护整个区块链信息的可靠和安全性。节点共同维护。
可靠数据库:只有掌握整个**系统 51%**节点,才能对区块链信息进行篡改,这样显然不可能做到,因为整个系统参与者众多,掌握这么多节点成本极高,也无法实现,这样能确保数据的完整性、真实性和安全性。
区块链分类
本质来说,链的分类是为了适用不同大环境而催生的去中心化的创新,现有链的分类如下,其中,联盟链的实际应用比较多,具有代表性的就是以太坊,亿书等。A.公有链
公有链上的数据所有人都可以访问,同时所有人也都可以发出自己的** 交易并等待写入区块链**中。它具有完全去中心化、不受任何机构控制、账本完全公开透明等特点。公有链项目包括比特币、以太坊、瑞波、超级账本,还有大多数的竞争币以及智能合约平台等。
B.联盟链
联盟链指对特定的组织团队开放,是指参与区块链的节点是事先选择好的,节点之间可以实现资源与信息的共享。比如你在 10 所大学之间建立联盟链,进行学生的课程信息共享。那么这个链上的课程内容只能被这 10 所大学的学生看到,内容也只能由这 10 所大学的老师和学生发布。联盟链可以视为部分去中心化,其特点是交易速度非常快,数据也可以有一定的隐私。
C.私有链
私有链是指对单独的个人或实体开发的区块链,参与的节点只有自己,数据的访问和使用有严格的权限管理,是存在一定的中心化控制的区块链。
共识算法介绍
我记得之前在学校看相关论文时候,好像都在讨论共识算法的改进带来的区块生成的时间效率,空间成本上的提升和节约,以及相关共识算法下的安全攻防;常见的共识算法如下:
- 拜占庭将军问题:经典分布式共识 PBFT,参与的多个节点中进行投票,选出新的区块。
- Pow:利用节点算力来选择区块的生产者,节点通过找到满足要求的函数函数原像完成 Pow。其会造成巨大的资源浪费,矿机矿池的出现,也直接使去中心化失特点去了意义,还可能造成相关的攻击(女巫攻击,双花攻击,分布式拒绝服务攻击(DDOS)等)。
- Pos(DPos):根据节点拥有的财产的数量随机决定区块的生产者,拥有的财产越多的节点,成为区块生产者的概率越大,其实就有问题了!开发者完全可以在创世的时候给自己分配足够多的财产,这也就失去了去中心化的意义。解放了工作量证明,但是作为区块生产者和验证者进行恶意操作的成本较低,基于理性节点的自利假设,参与者恶意操作可能性较大,可以同时在链的不同分叉上挖矿,无需花费额外的成本,导致倾向于分叉,PoS 的安全性就降低了!造成粉碎攻击 ,长程攻击等。
- 单一委员会的混合共识机制:利用 PoW 或者 PoS 的形式先选择出一定数量的节点组成“委员会”,然后在委员会内部使用经典分布式共识完成区块的生产和确认。
- 混合共识(分片共识):采用多个并行的委员会同时处理。多委员会的混合共识机制:突破了比特币中区块大小和出块速度的限制,交易规模有了明显的提升,缺点就是混和共识一旦使用 PBFT 之类的委员会内共识算法需要确保诚实节点占 2/3 以上,才能保证确证的投票,不被敌手控制。
区块链应用常规架构
这里有一张我之前在读研时候,在网上学习后理解后,画的一张区块链应用的架构设计图。优秀的服务的平台往往具有多层架构,底层是数据层用于数据分布式存储,向上是网络层用于节点共识,再向上就可以理解为拓展层用于各种服务拓展提供api以及应用层提供各种具体服务。我画了一张大概的架构图,我想这张图听该能够代表现在各大区块链平台的总体架构设计方向。
写了一个防bitcoin的web应用
BWCoin(https://qcblog.hmbstudio.cn/items/)是利用nodeJS实现的原生区块链demo,是仿造的最古老的POW机制实现的共识,共识过程采用了计算定值hash值的方式实现,可以点击BWCoin访问,进行实际操作,其实也可以看到javascript进行计算密集型操作时候的不足,这里的优化可以使用webworker,wasm,调GPU加速等等
总结
凡是总有两面性,我听过太多的对于区块链技术的评价,其实好的也好,坏的也罢,重要的是作为技术开发者的我们,要科技向善,我们应该利用新的技术,往小的说,应该思考如何为我们的业务带来实质性增长,如何为业务带来新的切入点,往大了说,应该思考如何做出更有意义的事,更好的为社会创造价值,这才是正确的导向!