如何去分析一个区块链项目,开发一款区块链货币要哪些东西

  

  IPFS科技诞生于2014年。2017年,在区块链科技的大力发展下得到广泛认可,被国人熟知。随着HTTP时代的过去,IPFS正在为更快、更安全、更开放的互联网铺平道路,在不同领域释放P2P技术的力量。作为互联网协议的新视野,学习和理解IPFS是每个人都应该关注的事情。当提到IPFS时,肯定会提到区块链。那么什么是区块链呢?区块链是如何发展起来的?在介绍IPFS之前,我们需要了解一下区块链。   

  

  区块链是什么?   

  

  在最早的时候,区块链只被认为是比特币的底层技术之一,是一种不可篡改的链式数据结构。经过几年的发展,区块链已经被越来越多的人所熟知,也从简单的数据结构变成了分布式账本一系列技术的总称。它集成了加密、共识机制、对等网络等技术。近年来,区块链的无账本应用开始逐渐兴起。人们开始把区块链描述成一个分布式数据库,认为它是一个价值传递网络,逐渐被赋予了更多的内涵。   

  

  从技术上来说,区块链是一个分布式数据库,目的是在互不信任的节点上维护数据库的一致性,并且不能被篡改。并且信用记录将被保存在区块链上,并且每个新块将包含前一个块的数字指纹、该块的信用和记录以及新块的时间戳。这样,区块链将继续增长,而且很难被篡改。一旦区块链中任何一个区块的信息被修改,后续区块的数字指纹将全部失效。   

  

  链式数据结构使得篡改区块链的历史变得困难,并且需要共识机制来保持互不信任的节点之间数据的一致性。共识机制(Consensus mechanism)是网络预设的规则,用来判断每个记录和每个区块的真实性,只有那些被判断为真实的区块才会被记录在区块链中;反之,未能通过共识机制的新块将被网络抛弃,块中记录的信息将不再被网络识别。目前常见的共识机制有PoW(工作量证明)、PoS(权益证明)、PBFT(实用拜占庭容错)等。   

  

  比特币、以太坊、比特币现金和大多数加密数字货币使用PoW工作负载证书。维护比特币账本的节点叫做矿工。矿工每记录一个新块,就会获得一定的比特币作为奖励。所以矿工会为了自己的利益,尽可能的争夺新的块记账权,获得全网的认可。工作负载证明要求新的块哈希值必须有一定数量的前导零。矿工不断地用新的随机数对事务信息进行散列,以计算块的散列值。一旦这个哈希值具有所需数量的前导零,这个块就是合法的,矿工会将其广播到整个网络进行确认。当其他矿工收到这个新块时,他们将检查这个块的合法性。如果合法,新区块将被写入矿工自己的账本。这种结构如图1-3所示。   

  

     

  

  与要求认证者进行一定量的计算不同,PoS权益证书要求认证者提供一定量加密货币的所有权。股权证明机制的运行模式是,当创建一个新区块时,矿工需要创建一个“币权”交易,交易会按照预设的比例向矿工发送一些币。公平性证明机制根据每个节点令牌的比例和时间,按照算法等比例降低节点的挖掘难度。这种共识机制可以加快达成共识的速度,而且由于矿工不再争夺计算能力,网络能耗也会大大降低。但也有专家指出,PoS权证明了一些网络的去中心化程度。   

  

  目前加密数字货币的主流算法是PoW和PoS,其他几种常见的共识机制是d PoS和PBFT,限于篇幅,此处不再赘述。   

  

  区块链发展   

  

  1976年是区块链密码学基金会成立的一年。这一年,Whitfield Diffie和Martin Hellman(见图1-4)首先提出了Diffie-Hellman算法,并证明了非对称加密是可行的。与对称算法不同,非对称算法有两个密钥——公钥和私钥。公钥和私钥是一对。如果使用公钥加密数据,则只能使用相应的私钥解密数据。如果数据是用私钥加密的,则只能用相应的公钥解密。这是后来比特币加密算法的核心之一。当我们使用比特币钱包生成私钥和地址时,通过椭圆曲线加密算法生成一对公钥和私钥。有了私钥,我们就可以签署一个转账,而公钥可以验证这个交易已经被这个比特币钱包的主人签署了,是合法的。通过散列公钥,我们可以计算出我们的钱包地址。   

  

     

  

  1980年,马丁赫尔曼的学生Merkle Ralf提出了Merkle树的数据结构和生成算法。默克尔的树最早建立了数字签名证书的公共目录,可以保证对等网络中传输的数据块是完整的,没有被篡改。如前所述,在比特币网络中,每个区块都包含交易信息的哈希值。这个哈希值是由Merkel树生成的,而不是直接按顺序连接事务,然后计算它们的哈希值。默克尔的树如下图所示。默克尔的树生成算法会对每个事务哈希一次,然后将计算出的哈希成对再次哈希,直到计算出默克尔的根。而这个默克尔根包含了所有的交易信息。这样可以大大节省钱包占用的空间。比如轻钱包,我们只需要下载钱包对应的交易。   

信息,需要验证的时候,只需找到一条从交易信息的叶节点到根节点的哈希路径即可,而不需要下载区块链的全部数据。在IPFS项目里,也借鉴了默克尔树的思想。数据分块存放在有向无环图中,如果数据被修改了,只需要修改对应默克尔有向无环图中的节点数据,而不需要向网络重新更新整个文件。值得一提的是,Merkle在提出默克尔树时,分布式技术尚未成型,更别提数字货币了,而他在当时就能察觉并提出这样的方法,实在是令人赞叹。

  

  

非对称加密算法和默克尔树数字结构是后续数字货币和区块链的理论基础。而真正将密码学用于数字货币的尝试,则晚了许多。数字货币兴起于1990年的数字朋克(CyberPunk)运动,它是由一批热爱网络的极客们推动的。数字朋克们大多是密码学的专家,对于个人隐私十分向往,希望建立一套独立于现实中的国家、等级制度以外的空间。其中最典型的代表是David Chaum,他最早提出了盲签名技术,并将其应用到了Digit Cash项目(又名Ecash)中。盲签名是一种保护隐私的签名方式,它的签名者对其签署的消息不可见。比如,用户需要签署一个转账信息,而这一信息需要银行签名,用户为了保护隐私,不希望银行看到其具体的转账对象,就可以使用盲签名。David在他的论文中提出了用盲签名实现匿名货币的想法,具体方式是用户在本地计算机的Ecash程序中以数字格式存储现金,再交给银行进行盲签名。这套系统已经与当时的银行系统非常接近了,差一点获得了成功。但是Digit Cash 始终需要中心化的银行服务器支持。在后续,没有一家银行愿意再支持他的项目,最终项目失败了。数字朋克运动中诞生的系统及关键人物如表1-1所示。

  

  

在Digit Cash失败后的几年里,人们几乎放弃了数字现金的构想。仅有少数数字朋克继续着研究。一个名为Hashcash的想法是在1997年由当时同为数字朋克的博士后研究员 Adam Back独立发明的。Hashcash的想法很简单:它没有后门,也不需要中心第三方,它只使用哈希函数而不是数字签名。Hashcash基于一个简单的原理:哈希函数在某些实际用途中表现为随机函数,这意味着找到哈希到特定输出的输入的唯一方法是尝试各种输入,直到产生期望的输出为止。而且,为了找到这样一个符合条件的输入,唯一方法是再次逐个尝试对不同的输入进行哈希。所以,如果让你尝试找到一个输人,使得哈希值前10位是0,你将不得不尝试大量的输人,你每次尝试成功的机会是(1/2)10.这就是工作量证明的早期来源,也是矿工们每天在重复做的事情。他甚至在技术设计上做了一些修改,使其看起来更像一种货币。但显然,他的方案不能检验节点是否作弊,不能作为真正的数字现金。

  

还有两位有杰出贡献的数字朋克-Hal Finney和Nick Szabo,他们经过重新考虑将技术整合了起来。Nick Szabo不仅是一位计算机科学家,同时精通法律。Szabo受到David Chaum的启发后,希望利用密码协议和安全机制,提出了数字合约的构想。数字合约能在网络上不依靠第三方协助而是利用程序来验证并执行合同,它与传统合同相比更安全,并且减少了繁琐沟通的成本。这对后续的加密数字货币设计有着极大的影响。比特币网络可以提供非图灵完备的脚本语言实现部分智能合约功能;以太坊则进一步在EVM上运行Solidity语言,提供了图灵完备的智能合约环境,这也为后续分布式应用开发奠定了基础。

  

Nick做出的贡献还不只是发明了智能合约,在2008年,他发起了Bit Gold项目。在项目计划书中,Nick阐述的Bit Gold架构与现在的比特币完全相同,同样是工作量证明机制,同样是链式网络结构,同样的新区块包含旧区块的数字指纹,包含时间戳等诸多特性。然而,最终Bit Gold项目还是没有顺利完成。目前,Bit Gold可查寻的源头只有在Bitcoin Talk论坛中的帖子,后续的可查证资料就很少了。有一些比特币爱好者们一度认为Szabo就是中本聪本人,不仅因为Bit Gold与Bitcoin的也相似之处令大家充满想象,甚至是在词法和句法上,中本聪的比特币论文与Bit Gold 论文也有相似之处。而且Nick家不远的地方,有一位叫中本聪的日本人,大家猜测这是Nick为了掩人耳目而故意隐藏自己的身份。Nick本人对此表示否认,并觉得这是个很搞笑的八卦。当然这也成为数字货币里最大谜团,究竟中本聪是谁呢?

  

再之后,到了2009年,中本聪发表了比特币论文。他提出了一整套加密协议,而不仅仅是加密货币。比特币使用计算机程序控制货币的发行,发行总量2100万枚。比特币的账本记录在成千上万台计算机上,黑客无法入侵;每个账户都是加密地址,你不知道谁在花钱,但是每个比特币的流通都被记录,你知道它的来源和去向的地址。比特币是第一个达到上述全部思想的项目,整合了之前30多年的技术积累。

  

比特币在设计之时,考虑到网络的稳定性和抵御恶意攻击,它使用的是非图灵完备的脚本语言(主要不能使用循环语句)。2013年,Vitalik Buterin 认为,比特币需要一种图灵完备的脚本语言来支持多样的应用开发。这个思路没有被比特币社区支持,于是Buterin考虑用更通用的脚本语言开发一个新的平台,这就是后来的以太坊。以太坊在大致思路上与比特币相似,在账户状态、UTXO、地址形式上进行了一些优化。其最大的亮点在于,开发了Solidity智能合约编程语言和以太坊虚拟机(EVM)这一以太坊智能合约的运行环境,用于按照预期运行相同的代码。正因为EVM和Solidity,区块链的平台应用(DAPP)迅速兴起了。以太坊平台提出了许多新用途,包括那些不可能或不可行的用途,例如金融、物联网服务、供应链服务、电力采购和定价及博彩等。

  

时至今日,基于DAPP的各类应用还在迅速发展,新的市场和需求在进一步被发现。后续区块链会如何发展,我们拭目以待。部分截取公众号:IPFS及Filecoin原理与实践。

相关文章