区块链基础及发展
IPFS技术诞生于2014年,于2017年在区块链技术的蓬勃发展下得到广泛认可,被国人所熟知。随着HTTP时代的消逝,IPFS正在为更快,更安全,更开放的互联网铺平道路,在不同领域释放着P2P技术的力量。作为一种新的互联网协议愿景,学习和理解IPFS是每个人都应该重视的事情。提到IPFS就一定会提到区块链,那么什么是区块链?区块链是怎么发展的?在介绍IPFS之前,我们需要先来了解一下区块链。
区块链是什么?
在最早期,区块链仅仅被认为是比特币的底层技术之一,是一种不可篡改的链式数据结构。经过几年的发展,区块链被越来越多的人熟知,它也从单纯的数据结构变成分布式账本的一系列技术的总称。它整合了加密、共识机制、点对点网络等技术。近些年,区块链的非账本类应用开始逐渐兴起,大家开始将区块链描述为分布式的数据库,认为它是价值传递网络,它逐渐被赋予了更多的内涵。
从技术方面来讲,区块链是一种分布式数据库,旨在维护各个互相不信任的节点中数据库的一致性,并且不可篡改。信用和记录会被保存到区块链上,每一个新的区块中存有上一个区块的数字指纹、该区块的信用和记录,以及生成新区块的时间戳。这样一来,区块链会持续增长,并且很难被篡改,一旦修改区块链上任意一个区块的信息,那么后续区块的数字指纹也就全部失效了。
链式数据结构使得区块链历史很难被篡改,而在各个互不信任的节点之间保持数据的一致性,则需要共识机制完成。共识机制是网络预先设定的规则,以此判断每一笔记录及每一个区块的真实性,只有那些判断为真的区块会被记录到区块链中;相反,不能通过共识机制的新区块会被网络抛弃,区块里记录的信息也就不再被网络认可。目前常见的共识机制包括PoW(工作量证明)、PoS(权益证明)、PBFT(实用拜占庭容错)等。
比特币、以太币、比特币现金及大部分加密数字货币使用的是PoW工作量证明。维护比特币账本的节点被称为矿工,矿工每次在记录一个新区块的时候,会得到一定的比特币作为奖励。因此,矿工们会为自己的利益尽可能多地去争夺新的区块记账权力,并获得全网的认可。工作量证明要求新的区块哈希值必须拥有一定数量的前导0。矿工们把交易信息不断地与一个新的随机数进行哈希运算,计算得到区块的哈希值。一旦这个哈希值拥有要求数目的前导0,这个区块就是合法的,矿工会把它向全网广播确认。而其他的矿工收到这一新的区块,会检查这一区块的合法性,如果合法,新的区块会写入该矿工自己的账本中。这一结构如图1-3所示。
与要求证明人执行一定量的计算工作不同,PoS权益证明要求证明人提供一定数量加密货币的所有权即可。权益证明机制的运作方式是,当创造一个新区块时,矿工需要创建一个“币权”交易,交易会按照预先设定的比例把一些币发送给矿工。权益证明机制根据每个节点拥有代币的比例和时间,依据算法等比例降低节点的挖矿难度。这种共识机制可以加快共识,也因矿工不再继续竞争算力,网络能耗会大大降低。但也有专家指出,PoS权益证明牺牲部分网络去中心化的程度。
目前,PoW和PoS是加密数字货币的主流算法,其他几个常见的共识机制有DPoS和PBFT,限于篇幅,这里不再进一步展开。
区块链发展
1976年是奠定区块链的密码学基础的一年,这一年Whitfield Diffie与Martin Hellman(见图1-4 )首次提出Diffie-Hellman算法,并且证明了非对称加密是可行的。与对称算法不同,非对称算法会拥有两个密钥-公开密钥和私有密钥。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。这是后来比特币加密算法的核心之一,我们使用比特币钱包生成私钥和地址时,通过椭圆曲线加密算法,生成一对公钥和私钥。有了私钥我们可以对一笔转账签名,而公钥则可以验证这一笔交易是由这个比特币钱包的所有者签名过的,是合法的。将公钥通过哈希运算,可以计算出我们的钱包地址。
1980年,Martin Hellman的学生 Merkle Ralf提出了Merkle Tree(默克尔树)数据结构和生成算法。默克尔树最早是要建立数字签名证书的公共目录,能够确保在点对点网络中传输的数据块是完整的,并且是没有被篡改的。我们前面提到,在比特币网络中,每一个区块都包含了交易信息的哈希值。这一哈希值并不是直接将交易顺序连接,然后计算它们的哈希,而是通过默克尔树生成的。默克尔树如下图所示。默克尔树生成算法会将每笔交易做一次哈希计算,然后两两将计算后的哈希值再做哈希,直到计算到默克尔根。而这个默克尔根就包含了全部的交易信息。这样,能大大节省钱包的空间占用。例如,在轻钱包中,我们只需下载与自己钱包对应的交易信息,需要验证的时候,只需找到一条从交易信息的叶节点到根节点的哈希路径即可,而不需要下载区块链的全部数据。在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原理与实践。
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。