前言 现在提到IPFS就一定会提到区块链,那么区块链和IPFS之间到底有什么关系呢?在介绍二者关系之前,我们需要先了解一下区块链。 区块链基础 那么区块链是什么呢?在最早期,区块链仅仅被认为是比特币的底层技术之一,是一种不可篡改的链式数据结构。经过几年的发展,区块链被越来越多的人熟知,它也从单纯的数据结构变成分布式账本的一系列技术的总称。它整合了加密、共识机制、点对点网络等技术。近几年,区块链的非账本类应用开始逐渐兴起,大家开始将区块链描述为分布式的数据库,认为它是价值传递网络,它逐渐被赋予了更多的内涵。 从技术方面来讲,区块链是一种分布式数据库,旨在维护各个相互不信任的节点中数据库的一致性,并且不可篡改。信用和记录会被保存到区块链上,每一个新的区块中存有上一个区块的数字指纹、该区块的信用和记录,以及生成新区块的时间戳。这样一来,区块链会持续增长,并且很难被篡改,一旦修改区块链上任意一个区块的信息,那么后续区块的数字指纹也就全部失效了。 链式数据结构使得区块链历史很难被篡改,而在各个互不信任的节点之间保持数据的一致性,则需要共识机制完成。共识机制是网络预先设定的规则,以此判断每一笔记录及每一个区块的真实性,只有那些判断为真的区块会被记录到区块链中,相反,不能通过共识机制的新区块会被网络抛弃,区块里记录的信息也就不再被网络认可。目前常见的共识机制包括PoW(工作量证明)、PoS(权益证明)、PBFT(实用拜占庭容错)等。 比特币、以太坊、比特币现金及大部分加密货币使用的是PoW工作量证明。维护比特币账本的结点被称为矿工,矿工每次记录一个新区快的时候,会得到一定的比特币作为奖励。因此,矿工们会为自己的利益尽可能多的去争夺新的区块记账权力,并获得全网的认可。工作量证明要求新的区块哈希值必须拥有一定数量的前导0。矿工们把交易信息不断的与一个新的随机数进行哈希运算,计算得到区块的哈希值。一旦这个哈希值拥有要求数目的前导0,这个区块就是合法的,矿工会把它向全网广播确认。而其他的矿工收到这一新的区块,会检查这一区块的合法性,如果合法,新的区块会写入该矿工自己的帐本中。 与要求证明人执行一定量的计算工作不同,PoS权益证明要求证明人提供一定数量加密货币的所有权即可。权益证明机制的运作方式是,当创造一个新的区块时,矿工需要创建一个“币权”交易,交易会按照预先设定的比例把一些币发送给矿工。权益证明机制根据每个节点拥有代币的比例和时间,依据算法等比例降低节点的挖矿难度。这种共识机制可以加快共识,也因矿工不再继续竞争算力,网络能耗会大大降低,但也有专家指出,PoS权益证明牺牲部分网络去中心化的程度。 目前,PoW和PoS时加密数字货币的主流算法,其他几个常见的共识机制有DPoS和PBFT。 区块链的发展 1976年时奠定区块链的密码基础的一年,这一年Whitfield Diffie与Martin Hellman 首次提出 Diffie-Hellman算法,并且证明了非对称加密时可行的。与对称算法不同,非对称算法会拥有两个密钥——公开密钥和私有密钥。公开密钥和私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。 如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。这是后来比特币的加密算法的核心之一,我们使用比特币钱包生成私钥和地址时,通过椭圆曲线加密算法,生成一对公钥和私钥。有了私钥,我们可以对一笔转账签名,而公钥则可以验证这一笔交易是由这个比特币钱包的所有者签名过的,是合法的。将公钥通过哈希运算,可以计算出我们的钱包地址。 1980 年,Martin Hellman 的学生 Merkle Ralf 提出了 Merkle Tree (默克 尔树)数据结构和生成算法。默克尔树最早是要建立数字签名证书的公共目录, 能够确保在点对点网络中传输的数据块是完整的,并且是没有被篡改的。我们前面提到,在比特币网络中,每一个区块都包含了交易信息的哈希值。这一哈 希值并不是直接将交易顺序连接,然后计算它们的哈希,而是通过默克尔树生成的。默克尔树如图1?5所示。默克尔树生成算法会将每笔交易做一次哈希计算,然后两两将计算后的哈希值再做哈希,直到计算到默克尔根。而这个默克尔根就包含了全部的交易信息。这样,能大大节省钱包的空间占用。例如,在轻钱包中,我们只需下载与自己钱包对应的交易信息,需要验证的时候,只需找到一条从交易信息的叶节点到根节点的哈希路径即可,而不需要下载区块链的全部数据。在IPFS项目里,也借鉴了默克尔树的思想。数据分块存放在有 向无环图中,如果数据被修改了,只需要修改对应默克尔有向无环图中的节点数据,而不需要向网络重新更新整个文件。值得一提的是,Merkle在提出默克 尔树时,分布式技术尚未成型,更别提数字货币了,而他在当时就能察觉并提出这样的方法,实在是令人赞叹。 而真正将密码学用于数字货币的尝试,则晚了许多。数字货币兴起于1990年 的数字朋克(CyberPunk)运动,它是由一批热爱网络的极客们推动的。数字朋克们大多是密码学的专家,对于个人隐私十分向往,希望建立一套独立于现实中的国家、等级制度以外的空间。其中最典型的代表是David Chaum,他最早提出了盲签名技术,并将其应用到了 Digit Cash项目(又名Ecash)中。盲签名是一种保护隐私的签名方式,它的签名者对其签署的消息不可见。比如,用户需要签署-个转账信息,而这-信息需要银行签名,用户为了保护隐私,不希望银行看到其具体的转账对象,就可以使用盲签名。David在他的论文中提岀了用盲签名实现匿名货币的想法,具体方式是用户在本地计算机的Ecash程序中以数字格式存储现金,再交给银行进行盲签名。这套系统已经与当时的银行系统非常接近了,差一点获得了成功。但是Digit Cash始终需要中心化的银行服务器支持。在后续,没有一家银行愿意再支持他的项目,最终项目失败了。数字朋克运动中诞生的系统及关键人物如表M所示。 在Digit Cash失败后的几年里,人们几乎放弃了数字现金的构想。仅有少数数字朋克继续着研究。一个名为Hashcash的想法是在1997年由当时同为数字朋克的博士后研究员Adam Back独立发明的。Hashcash的想法很简单:它没有后门,也不需要中心第三方,它只使用哈希函数而不是数字签名。Hashcash 基于一个简单的原理:哈希函数在某些实际用途中表现为随机函数,这意味着找到哈希到特定输岀的输入的唯一方法是尝试各种输入,直到产生期望的输出为止。而且,为了找到这样一个符合条件的输入,唯一方法是再次逐个尝试对不同的输入进行哈希。所以,如果让你尝试找到一个输入,使得哈希值前10位是0,你将不得不尝试大量的输入。这就是工作量证明的早期来源,也是矿工们每天在重复做的事情。他甚至在技术设计上做了一些修改,使其看起来更像一种货币。但显然,他的方案不能检验节点是否作弊,不能作为真正的数字现金。 还有两位有杰出贡献的数字朋克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为区块链带来了什么改变 区块链的诞生本是为了做到去中心化,在没有中心机构的情况下达成共识,共同维护一个账本。它的设计动机并不是为了高效、低能耗,抑或是拥有可扩展性(如果追求高效、低能耗和扩展性,中心化程序可能是更好的选择)。IPFS与区块链协同工作,能够补充区块链的两大缺陷: 1、区块链存储效率低,成本高。 2、跨链需要各个链之间协同配合,难以协调。 针对第1个问题,区块链网络要求全部的矿工维护同一个账本,需要每一个矿工留有一个账本的备份在本地。那么在区块链中存放的信息,为了保证其不可篡改,也需要在各个矿工手中留有一份备份,这样是非常不经济的。设想,现在全网有1万个矿工,即便我们希望在网络保存1MB信息,全网消耗的存储资源将是10GB。目前,也有折中的方案来缓解这一问题。 在搭建去中心化应用DAPP时,大家广泛采取的方式是,仅在区块链中存放哈希值,将需要存储的信息存放在中心化数据库中。而这样,存储又成为去中心化应用中的一个短板,是网络中脆弱的一环。IPFS则提出了另一个解决方法:可以使用 IPFS存储文件数据,并将唯一永久可用的IPFS地址放置到区块链事务中,而不必将数据本身放在区块链中。针对第2个问题,IPFS能协助各个不同的区块链网络传递信息和文件。比特币和以太坊区块结构不同,通过IPLD可以定义不同的分布式数据结构。这一功能目前还在开发中,目前的IPLD组件,已经实现了将以太坊智能合约代码通过IPFS存储,在以太坊交易中只需存储这个链接。 Filecoin :基于IPFS技术的区块链项目 Filecoin是IPFS的激励层。IPFS网络要想稳定运行需要用户贡他们的存储空间、网络带宽,如果没有恰当的奖励机制,那么巨大的资源开销很难维持网络持久运转。受到比特币网络的启发,将Filecoin作为IPFS的激励层就是一种解决方案了。 对于用户, Filecoin能提高存取速度和效率,能带来去中心化等应用;对于矿工,贡献网络资源可以获得一笔不错的收益;而对于业务伙伴,例如数据中心,也能贡献他们的空闲计算资源用于获得一定的报酬。Filecoin会用于支付存储、检索和 网络中的交易。与比特币类似,它的代币总量为2亿枚,其中70%会通过网络挖矿奖励贡献给矿工,15%为开发团队持有,10%给投资人,剩下5%为 Filecoin基金会持有。投资人和矿工获得的代币按照区块发放,而基金会和开 发团队的代币按照6年时间线性发放。由此可见,Filecoin与比特币挖矿机制完全不同。 为了避免攻击,比特币通过PoW工作量证明机制,要求矿工挖出下一个满足哈希值多个前导0的新区块。这个过程会需要大量的哈希运算。Filecom使用的复制证明(Proof of Replication, RoRep)。复制证明是矿工算力证明形成的主要方式,证明矿工在自己的物理存储设备上实际存储了数据,可以防止恶意矿工的各种攻击,网络中的验证节点会随机检査矿工是否在作弊。如果矿工不能提供正确的复制证明,那么它将被扣除一定的FIlecoin作为惩罚。相比于PoW机制带来的算力竞争,poRep显得环保很多。 END 精彩回顾: 说来话长:IPFS和http的区别 【胡安】Q&A问答 《印象·1475》:一个传统投资人的焦虑与选择 说来话长:什么是FIlecoin? 奇思妙「享」:微盟删库事件,一场SaaS产业的信任危机 奇思妙享:亿万富翁“双子星”兄弟的投资生涯 奇思妙享:姑娘们,比特币火了以后,你们的老公现在还是王思聪吗? 说来话长:什么是IPFS? IPFS星空生态1475 weixin:t01475 —- 编译者/作者:IPFS星空生态 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
说来话长:IPFS与区块链的关系
2020-03-10 IPFS星空生态 来源:区块链网络
LOADING...