区块链技术入门

本文是作者在学习了解区块链技术的过程中对区块链技术相关的网络文章资源进行筛选整合之后形成的,将一些作者认为比较通俗易懂的文章片段放了进来,希望看了本文之后大家对区块链技术有所了解

参考:北京大学肖臻老师《区块链技术与应用》公开课

区块链的本质

区块链是什么?

区块链是什么?从狭义上来理解,区块链就是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,其本质就是一种特殊的链表;而从广义上来理解,区块链是一个大型的去中心化的分布式数据库系统,该系统是狭义上的区块链、互联网技术、分布式技术等技术的总称

分布式数据库-源自原文图片

首先,区块链最重要也最基础的作用就是存储信息,任何需要保存的数据都可以写入区块链,也可以读取出来,所以它是一个数据库。
在比特币体系中,区块链充当了一个大型记账本的角色,在这个系统中每个账户的每一笔消费记录都会被写入这个账本(区块链)当中,任何人都可以查看账本上的任何一笔消费记录。

其次,任何人都可以架设自己的服务器作为一个节点接入区块链中,并且在本地维护一个数据库的拷贝。同时,区块链中的所有节点之间是同步的,即每当一个节点对其本地的数据库的拷贝做出任何修改之后都会在整个系统中进行广播同步,最后所有节点都会同步对数据库做出的修改,保证区块链中各个节点的数据库一致性。所以这个数据库并不是依赖于某个单独的节点而存在的,所以它是分布式的。
在比特币体系中,每个加入的用户都拥有一个对账本单独的拷贝,账本上的所有消费记录对加入的所有用户均是可见的。

原文:区块链入门教程-阮一峰

最后,区块链技术最核心的思想就是去中心化,也可以称为去信任化,这个我们之后再谈

比特币中的区块链

比特币系统包括三层:比特币、比特币协议、比特币区块链,即比特币的分布式账本与去中心网络,以比特币为例,区块链这个说法包括四种可能性,所覆盖的范围逐步变大:

  1. 区块链指的是比特币的数据结构,即由数据块(block)连接形成的链(chain),这也被称为“分布式账本”。在比特币白皮书中,中本聪分别提及了区块和链,但后来它们才被组合成了区块链(blockchain)这个新词

  2. 区块链指的是比特币的分布式账本和去中心网络的组合。对应于比特币系统,它指的是整个第三层比特币区块链

  3. 区块链指的是比特币系统的第二层(比特币协议)和第三层(比特币区块链)的组合。它包括分布式账本、去中心网络和比特币协议

  4. 区块链指的是整个比特币系统,包括所有三层,既包括价值表示的比特币,也包括了背后支撑的整个系统。从这个范围看,是把区块链看成一个既包括技术部分,又包括经济部分的完整系统

大众在提及区块链时,常指的是第四种最大的范围,即“账本+网络+协议+货币”。在产业中,人们在提到区块链时,通常指的是第三种范围,即“账本+网络+协议”。而很多软件开发者在说起区块链时通常指的是第二种范围“账本+网络”,即分布式账本加去中心网络

原文:区块链是什么?

区块链厉害在哪里?为什么会被认为可能是未来的革命性技术?

看了上面的内容,大家可能还是不明白区块链技术有什么牛逼的,如果你存在这个疑问,那么说明你还是没有理解它的核心思想,下面是一个我从知乎上看到的解释,答者从经济学角度阐述了区块链技术的核心思想

就像人们很容易忽略看不见却倏忽不可或缺的氧气一样,人们也经常会忽略市场经济中一样至关重要的东西,这就是“信任”。

假如没有信任,任何交易都不可能成立。你到菜场买菜,如果你怀疑蔬菜中农药含量过高,你就不会跟那个菜贩子交易;你到小店买瓶水,假如店员质疑你给的是假钞,就不会把水卖给你。

传统小农经济是熟人经济,交易规模仅限于村镇范围内比较熟悉的人们之间,出了交通因素外,“信任”也是很大的因素。一旦超出熟人范围,信任成本急剧增大,将阻碍交易的发生,限制交易范围的扩大。此外,不同种族、民族、文化、宗教信仰等等,都会形成信任的鸿沟。

陌生人之间由于缺乏相互了解,缺乏必要的信任,交易难于发生。市场经济却是大量发生在陌生人之间。市场经济之所以发生、发展,在于诞生了新的机制,解决了陌生人间的信任问题。

到目前为止,解决信任问题的最重要的机制,就是“信任中介”机构和模式。你和陌生人间都信任的第三者是信任中介,政府是信任中介,银行是信任中介。你把辛苦生产出来的商品卖给一个陌生人,收到几张花花绿绿的纸钞,如果没有发钞银行的信用、政府权威的保证,你是不会接受的。

到了如今全球村时代、互联网时代,你把商品卖给甚至永远不会见面、千里之外的陌生人,没有信任中介的保证,交易更是不可能发生。支付宝承担起信任中介作用,所以淘宝等电商在短短十几年间快速繁荣起来。

信任中介在整个庞大的交易体系中,扮演着一种中心化的重要角色。这是一种中心化的机制或模式,已经存续了几千年,帮助人际间降低信任成本,从而促进交易的发生、交易频率的增加、交易范围的扩大。

然而,信任中介本身也是需要成本的,而且常常还很巨大。设想一下:每年交给政府的税收,占到一般人收入的30~40%;如今最赚钱的行业是哪个?金融服务业;拥有支付宝的蚂蚁金服年利润超过百亿,马云成了中国首富。所有这些现象反过来想,对于普通人来说,就意味着极为庞大的信任成本。(当然交易成本中不全是信任成本,但信任成本占了很大一块。)如果有什么办法,能取消或者大幅降低这种信任成本,那么普通大众的交易费用可减少,可享受的福利可大幅增加。

在互联网时代,区块链技术上场了。是的,区块链本质上是一种解决信任问题、降低信任成本的信息技术方案。区块链技术的应用,可以取缔传统的信任中介,颠覆传统上存在了几千年的中心化旧模式,在不需要中心化信任中介的情况下,解决陌生人间的信任问题,大幅降低信任成本。

这也是通常几乎所有关于区块链的介绍文章中,都会提到的“去中心化、去信任”的意思。但是“去信任(trustless)”的说法容易误导,会让普通人感到莫名其妙,因为任何时候的交易都必须基于信任。实际上,把“去中心化、去信任”,理解成“去除信任中介”,就会容易明白得多。

区块链技术所改变的,不是去除信任,而是将传统上交易中对中心化信任中介的信任,变成对区块链系统本身、对于记录在区块链上的数据的信任。基于区块链技术的交易模式中,不存在任何中心机构,不存在中心服务器。所有交易都发生在每个人的电脑或手机上安装的客户端应用程序中。

假如未来普遍使用区块链技术,今后你不用再跑去银行证明你的收入和资产,也不用跑去派出所证明你是否已婚,不用让单位人事证明你的雇佣关系,也不用再去敲没完没了的红色公章和看各种难看的脸色……所有这些都记录在不可篡改的区块链上,在你需要和授权的时候,似乎全世界都能成为你的证人。

区块链可以理解为一种公共记账的技术方案,其基本思想可以这样理解:通过建立一个互联网上的公共账本,由网络中所有参与的用户共同在账本上记账与核账,每个人(计算机)都有个一样的账本,所有的数据都是公开透明的,并不需要一个中心服务器作为信任中介,在技术层面就能保证信息的真实性、不可篡改性,也就是可信性。

数据的不可篡改性至关重要。因为系统会自动比较,会认为相同数量最多的账本是真的账本,少部分和别人数量不一样的账本是虚假的账本。在这种情况下,任何人篡改自己的账本是没有意义的,除非你能够篡改整个系统里面大部分节点。对于一个由成千上万个、分布在全球各个角落的客户端组成的区块链系统,除非某个人能控制世界上大多数的电脑,否则不太可能篡改这样大型的区块链。

在这种情况下,在区块链上记录的每一笔交易,都保持真实可靠,同时公开透明,能够被其他人查看(但交易者个人或机构可以是匿名的),所以就形成了一种不需要对陌生交易对手了解和信任,只需看到区块链上交易对手的货币、资产等本身是可信的,就可以放心地交易。

这里不需要任何信任中介,也就是所谓的“去信任”的真实含义。因为区块链具有可大规模扩展、数据公开透明、以及因为每个客户端数据一致,即使部分客户端被毁也不影响数据安全的可靠性等技术特点,特别是能有效解决陌生人间的信任问题,所以这个技术可推广到所有可以数字化的领域,比如数字货币、支付清算、数字票据、权益证明、征信、政务服务、医疗记录等。可以说,区块链技术如果发展起来,将来会跟每个人息息相关。

这是整理者的话:被认为是区块链技术2.0的以太坊 智能合约 技术其实就是在一定程度上扩大了比特币的应用场景,让区块链技术不再仅仅局限于数字货币交易,又或者说在基于数字货币交易的基础之上,扩展了区块链技术在实际生活中的应用场景

原文:区块链是什么,如何简单易懂地介绍区块链?作者:嗅槑

区块链技术原理简介

密码学原理(哈希)

散列函数/哈希(hash function)

是什么?

将任意长度的输入转换为固定长度的输出的函数叫做散列函数(或者叫做哈希运算)

有什么用?

运用这种函数我们可以对一个消息(message)求它的摘要(digest),即将这个消息当作散列函数的输入,而这个散列函数的输出即可以认为是这个消息的摘要,根据摘要我们可以判断消息是否发生了变化

有了上面的用途,散列函数自然也可以用于加密,例如加密散列函数(cryptographic hash function),比特币就是一种基于特定加密散列函数的数字加密货币(crypto-currency)

存在的问题?

由于输入域是无穷大的而输出域是有限的,所以必定会出现两个不同的输入经过转换之后得到相同的结果的情况,这叫做哈希碰撞(collision),我们对散列函数主要有以下两个要求:

  • 输入范围足够大,最理想的状态是无穷大
  • 输出时要均匀分布

以上两点其实都是为了尽可能地降低哈希碰撞发生的概率,一个合格的散列函数应该具备以下两个性质:

  • 抗碰撞性(collision resistance)

    所谓抗碰撞性就是针对这个散列函数除了暴力求解(brute-force)的方式之外没有一个高效的方法能够找到这个散列函数的两个不同输入,而这两个输入恰好经过转换会得到相同的输出

  • 隐匿性(hiding)

    所谓隐匿性就是针对这个散列函数的所有输出我们均不能通过一个有效的办法反推出它的输入,即这个转换过程是不可逆的

md5就是一个著名的加密散列函数,但是现在针对md5已经有了可以人为制造哈希冲突的方法,即它已经不具备抗碰撞性和隐匿性,故现在已经被逐步淘汰

加密货币使用的散列函数

加密货币使用的加密散列函数被要求具有第三个性质

  • puzzle friendly

    如果需要得到期望的散列值即H(x)的值,比如要求H(x) ∈ [a, b]或者H(x) = y,那么要得这样的x,具备该性质的散列函数我们只能通过遍历x的取值空间一个一个去尝试H(x)是否满足要求,即只能通过穷举的方法去找到x而没有捷径可走,这样的性质称为puzzle friendly

加密货币具有这个性质时才可以用来作为工作量证明(proof of work)

比特币加密采用的散列函数是SHA-256(Secury Hash Algorithm - 256)

签名

加密方式

要了解签名我们必须先了解加密方式中的非对称加密方式,首先加密方法可以分为两大类:

  • 单钥加密(private key cryptography),也称为对称加密(symmetric encryption)
  • 双钥加密(public key cryptography),也称为非对称加密(asymmetric encryption)

前者的加密和解密过程都用同一套密码,后者的加密和解密过程用的是两套密码。

在对称加密的情况下,密钥只有一把,所以密钥的保存变得很重要。一旦密钥泄漏,密码也就被破解。

在非对称加密的情况下,密钥有两把,一把是公开的公钥,还有一把是不公开的私钥。

非对称加密

非对称加密的原理如下:

  • 公钥和私钥是一一对应的关系,有一把公钥就必然有一把与之对应的、独一无二的私钥,反之亦成立。

  • 所有的(公钥, 私钥)对都是不同的。

  • 用公钥可以解开私钥加密的信息,反之亦成立。

  • 同时生成公钥和私钥应该相对比较容易,但是从公钥推算出私钥,应该是很困难或者是不可能的。

目前,通用的对称加密算法为DES(Data Encryption Standard),通用的非对称加密算法为RSA( Rivest-Shamir-Adleman),都产生于上个世纪70年代,除此之外还有非对称加密算法SHA-256

数字签名是什么?

在非对称加密体系中,公钥用来加密信息,私钥便用来生成数字签名。

假如A给B写了一封信,B如何确认是A写的呢?

现实世界中我们可以通过A在信封上的签名或者落款,加上笔迹来确认写信人是否是A,但是在网络中怎么搞?这时候就需要数字签名

A将信封的摘要使用自己的私钥进行加密生成数字签名,B拿到信封之后使用A的公钥对签名如果成功解密即可确认信是A发送的,并且进一步地将解密后的摘要和当前发送过来的信的摘要进行比对也可以确认信的内容是否被篡改过

但是还存在问题,因为任何人都可以生成自己的(公钥,私钥)对,所以为了防止有人散布伪造的公钥骗取信任,就需要一个可靠的第三方机构来生成经过认证的(公钥,私钥)对。目前,世界上最主要的数字服务认证商是位于美国加州的Verisign公司,它的主要业务就是分发RSA数字证书

参考:数字签名是什么?

区块链的基本数据结构

区块链中的链

区块链中的每个区块底层数据结构就是单链表中的一个节点,但是与我们所学习的普通链表有所不同,区块链技术中的链表使用哈希指针替换了内存地址指针或者引用,其基本结构如下图所示:

区块链中的链表结构

每个区块包含了两个部分:

  • 区块头
  • 区块体

区块头

区块头包含了当前区块的多个特征值,其中包括一个指向上一个区块头的哈希指针

  • 哈希指针(hash pointers)

哈希指针不同于普通指针,它不只存储了节点的地址信息,还存储了节点的其他数据信息,从图中我们可以看到哈希指针是区块体哈希值以及地址等信息拼接之后一起经过哈希运算得到的输出。如果某一个区块体中的数据被修改了,头部的区块体哈希值就会发生改变,那么下一个区块头部的哈希指针也会发生改变,依次传递下去,被修改区块之后的所有区块头部的哈希指针都会发生改变。

假设如果坏人想伪造账单,修改了一个区块,那么该区块的哈希就变了,为了让后面的区块还指向它(因为下一个区块包含上一个区块的哈希指针),这个人必须依次修改后面所有的区块,否则被改掉的区块就脱离区块链了。

而这一点被比特币区块链系统巧妙利用,采用算力竞争的共识机制(后面会提到)来大大增加篡改数据所需的工作量,使得短时间内修改多个区块几乎不可能发生,除非这个人掌握了全网51%以上的计算能力。

区块体

区块体主要存储的是交易记录,比如A给B转账了X刀,C通过挖矿获得了Y激励奖金等,区块体的存储方式采用的基础数据结构是二叉树,但是这个二叉树比较特殊,叫做默克尔树

默克尔树 Merkle Tree

结构如图所示:

默克尔树示意结构图-来自https://blog.csdn.net/wo541075754/article/details/54632929

基础结构为二叉树(binary tree),区别是:

  • 使用哈希指针代替了传统指针

  • 传统的二叉树节点存储的信息包括指针和数据,而默克尔树的中间节点中不包含数据,只有哈希指针信息,所有的数据(比特币中为交易记录)都放在了叶子节点中,这一点与B+树有些类似

那么使用默克尔树能够防止交易记录篡改是怎么体现出来的呢?和前面所说的链式结构一样,默克尔树其实也是一种链式结构,如果存储在默克尔树中的某个交易被篡改了,那么从交易所在的叶子节点到根节点的这条通路上的所有节点中的哈希指针都会发生变化,都需要被重新计算,而根节点的哈希指针会被存放在区块头中参与整个区块的哈希指针计算的,相应地,从被篡改的区块开始一直到最新区块中的哈希指针都需要被重新计算

区块链中的共识协议

个人认为共识协议对于区块链技术来说是非常重要的,因为共识协议是区块链技术能否达到真正去中心化的一个重要影响因素

是什么?

前文中讲过,区块链技术的核心思想是去中心化,也可以叫做去信任化(个人认为去信任化更合适),这个去信任化并不是真的不需要信任,而是弱化我们在交易过程中的不信任,以至于达到 不需要考虑 “是否是可信的” 这个问题 的境界,也就是要达成 “共识”

所谓共识,就是我们一致认为某个事物是正确的、可靠的、可信的,所以,我认为区块链中的 “共识协议” 就是为了保障用户对于区块链中的所有信息达到可信或可靠即无需信任成本(达成共识)的一系列必要约束条件(协议),也可以理解为系统为了防止出现“骗局”而采取的一系列安全措施

概念这种抽象的东西往往都是晦涩难懂的,而具体的事物是比较容易理解的。下面将通过列举一些区块链技术在应用过程中面临的降低用户共识性的问题来理解为什么制定一个好的共识协议是区块链技术能否达到真正去中心化的一个重要影响因素,也正是这些问题阻碍了区块链技术真正达到去中心化的目的

双花问题(double spending attack)

在数字世界中,如何使用区块链技术创建一个无须中介或者说去中心化的数字现金,一直是一个难题。由于数字文件可以完美复制,如果没有一个中心化数据库做记录,那如何避免一个人把一笔钱花两次?

这就是所谓的双重支付或双花问题(double spending)

女巫攻击(sybil attack)

前文说过,系统中所有的节点都有一份区块链的拷贝,那么怎么确定某个节点在自己的新区块上写入的数据就是正确的或者说是可信的呢?即采取什么样的方式来保证加入的新区块是可信的,不会被篡改或者让坏人“夹带私货”呢?

很自然我们会想到一种“民主”的方式,即让系统中的所有用户进行投票,如果超过一定比例的用户认为新区块是可信的,那就认为这个区块是可信的,即“少数服从多数的原则”,采用这种方式,如果坏人想让自己的区块的到承认,他必须让整个系统中超过一定比例的用户都给自己投票,这就相当于班级竞选班长时,你如果想当班长就需要说服班级里一半以上(或者大于其他对手的票数)的同学给你投票。在现实生活中这种方式是行得通的,因为当参与某个竞选的投票者数量足够多并且遍布世界各地时,候选者想要拉拢一半以上的选民给他投票几乎是不可能的

但是这种方式有没有问题呢?有问题

比特币中其实没有“用户”或者说“账户”这个实体概念,它是将“一对密钥”视为一个“账户”或者说一个“用户”的,这就意味着一个密钥对就是一个选民,在这种情况下就出现了问题:由于密钥对都是本地产生的,并且可以随便生成任意数量,不受监管,如果有人在本地生成的足够多的密钥对也就是自己创建了足够多的选民,当这个人拥有的密钥对多于系统中的一半时,他就可以操控投票结果,这就是女巫攻击

分叉攻击(fork attack)

区块链中有不止一个节点同时打包生成了多个新块链接到各自本机的区块链尾,然后向外广播,因为网络延时的问题,区块链中的各个节点接收到了不同的新块,使整个区块链发生了分叉的现象

以上问题在一个需要使用区块链技术的系统中必须得到解决,否则这个系统就是不可靠的,下面我们来看看在比特币中这些问题是怎样得到解决的

比特币中的共识协议(Consensus in BitCoin)

交易验证

在比特币系统中,对于每一个新增的交易记录都需要有一个指向本次交易中比特币来源的哈希指针,我们通过跟踪验证比特币的来源是否合法来判断这个新增交易是否合法,这样就避免了双花问题。

例如: A通过挖矿获得了2个比特币,这时区块链中就有一个交易记录r记录了A获得了2个比特币,A现在想要转给B 2个比特币,那么在这个转账记录中,必须指明A的2个比特币是从何而来的,即需要指向交易记录r,通过检查后发现A确实有2个比特币,这个交易是合法的,写入区块链,完成;过了一会,A又想给C转帐,那么他就必须提供给C转账的比特币的来源,此时由于已经有一个指向r的交易记录并且两者交易数量相等,这意味着A已经没有能够用来支付给的比特币了,此时拒绝A的转账,解决了双花问题

工作量证明(算力竞争)

比特币网络中的节点按照规则进行加密哈希计算,以竞争获得生成新区块的权利。节点在竞争获胜后就获得记账权,它生成的区块成为最新区块后,就获得与新区块对应的挖矿奖励

工作量证明也是区块链账本的安全机制。如果不重做“工作量证明”所需的大量计算则此链条不可修改,这一共识机制进一步加强了区块链上的数据的可靠性。

最长链原则

即暂时允许区块链出现分叉,由于两个节点同时计算得到新块的概率毕竟非常小,一段时间过后,因分叉出现的多个分支当中必然会出现长度大于其他分支的链路

除此之外,比特币中采用第6个区块确认的方式,即当从当前第N个节点开始往后出现第N+5个新区块的时候便确定第N个节点是可靠的,可靠的意思是该节点区块中的交易记录是不可篡改的了

有了以上协议作为保障,比特币才能大获成功

存在问题

数据量

在区块链中每个人都有一个数据库的拷贝,目前比特币系统中数据量大概为100GB,而这只包含了消费记录,试想如果区块链技术应用到了所有领域,到时候产生的海量数据不是一个当前的消费级计算机存储容量能够存储的,并且这还没考虑到消费者的消费水平,即便存在这样的计算机,用户也不一定消费得起,所以如果要支撑区块链技术的发展,在底层数据结构、数据存储技术这方面需要得到一定的突破

处理速度

目前比特币系统中大概每10分钟就会确定一个新的区块,一个区块大小为1MB,一笔交易最小占用空间为250B(最大不超过区块大小),那么每十分钟能够处理的最多交易记录数是 1 * 1024 * 1024 / 250 ≈ 4194 笔,这意味着系统处理交易的速度最快约为 4194 / 10 / 60 ≈ 7 笔/s(每笔交易都占用最小空间的情况下),很显然如果区块链技术普遍得到应用的话就目前这个处理速度在当今时代是远远不够的

可持续性

前文已经分析过,区块链这么一个庞然大物,维护它是需要耗费非常大的算力的,一般用户提供的算力不值一提甚至不会提供算力支持,那么就意味着必须存在一批投入大量算力在系统中的用户来帮系统记账,这些人就是矿工,所挖的矿就相当于给系统记账的酬劳。

目前来看,这笔酬劳是非常可观的收入(否则也不会都跑去挖矿直接给显卡市场干翻了)。但是我们都知道,比特币系统中发行的比特币总量是有限的,并且奖励数量随着时间递减,最终某一天会无法通过争夺记账权获得奖励(关于这部分内容的具体实现原理,如挖矿难度调节等,个人认为并不是区块链技术的范畴,可以查阅相关资料进行了解,本文不再赘述),每个矿工只能通过交易手续费获得收益,而这个交易手续费相比较矿工投入的费用是非常少并且不稳定的。那么到那个时候还会有矿工帮忙记账吗?如果没有那系统还能正常运行吗?

区块链的发展

到现在为止,不论是狭义上的数据结构还是广义上的去中心化思想,我们已经大概了解了区块链是个什么东西

通过讲解区块链技术的一个具体实现——比特币,我们对区块链这个抽象的概念有了一个具象化的认识,但是一个是不够的,这就类似面向对象思想中的抽象类和实现类,我们现在只是了解到了区块链这个抽象概念的一个具体实现方式,还有其他的各种各样的实现方式需要了解,这样才能有效把握区块链在不同的应用场景下的具体应用方式间的优势和劣势,正所谓知己知彼百战不殆

所以下面将对区块链的具体应用发展情况进行介绍,通过横向对比更加深入地认识和理解区块链,这些区块链的主要区别体现在共识机制或者说应用范围上的差异

公有链、联盟链和私有链

在区块链的发展过程中,根据应用范围的不同,区块链主键分为了三种链,即公有链、联盟链和私有链

公有链

公有链,顾名思义,从字面意思上理解,就是 公有,就是它对全世界所有人都是开放的,任何人都可以读取数据、发起交易并且交易都能够得到有效确认的共识区块链

在公有链上的各个节点均可自由加入或退出网络,并且参加网络上数据的读写,读写时以扁平拓扑结构互联互通,所以网络中不存在任何中心化的服务端节点

公有链具有以下特点:

  • 访问门槛低
    只要你有计算机就能够加入
  • 数据完全公开透明且无法篡改
    公有链是高度去中心化的分布式账本,每个人在任何节点的行为都是可以查看的,而且基于庞大的用户体系,想要篡改交易数据几乎是不可能实现的
  • 匿名性
    由于各节点之间无需彼此信任,所有的操作都可以匿名进行,很好的保护了使用者的隐私
  • 免受开发者的影响
    公有链的数据读写是不受任何人控制和篡改的,就连程序开发者也无权干涉用户。所以极大程度上保护了用户免于程序开发者的影响

同时,因为公有链目前都采用类似算力竞争的共识机制,所以它存在着交易速度慢的问题,就如前文说过的比特币网络的交易处理速度最高大概为7笔/s

比特币和以太坊都是公有链的著名代表

私有链

私有链也称为专有链,它是一条非公开的链,通常情况需要授权才能加入,而且私有链中的各个节点的写入权限皆被严格控制,读取权限则可视需求有选择性地对外开放

通常私有链适用于企业内部以及特定机构的内部数据管理与审计等金融场景的应用,特别是在某些情况下,私有链上的一些规则可以被机构修改,比如还原交易流程等服务

私有链具有以下特点:

  • 交易速度
    私有链上的节点只有少量且具有很高的可信度,交易不需要所有网络节点都确认,所以其交易速度比任何其他的区块链都快
  • 隐私保障良好
    由于读写权限是由该组织决定的,参与者难以获得私有链上的数据,因此组织自身的隐私保障更好
  • 交易成本大幅降低
    私有链的交易只需要几个得到普遍认可的高算力节点确认即可,其交易成本与公有链和联盟链相比极低
  • 安全性高
    链上的成员都是经过审核授权的,所以恶意攻击的可能性相对较小

不过,私有链由于权限被少数节点控制,不能根本解决作弊问题,背离了去中心化的初衷;此外,私有链上的数据还是有可能被操控的,代码也有可能被修改

蚂蚁金服就是私有链的显著代表

联盟链

联盟链的各个节点通常有与之对应的实体组织结构,通过授权之后才能加入或退出网络。各机构组织成利益相关的联盟,共同维护区块链的健康运转

联盟链适合组织机构间的交易和结算,目前国内比较有影响力的联盟链有中国分布式总长基础协议联盟(ChinaLedger)、中国区块链研究联盟(CBRA)和微众银行等

联盟链的特点:

  • 从某种程度上来说,联盟链也是私有链,但是它的私有程度没有私有链那么高,并且它的权限设计要求更复杂,可信度更高

Hyperledger Fabric 是联盟链中的典型代表

三种不同形式的区块链对比

三种不同形式的区块链对比

常见区块链分类

常见区块链分类

原文:

1.0 比特币(加密数字货币)

前文已经介绍过,这里只给出一个对比特币的整体描述说明:

比特币并不是纸币或者金币银币那样独立的个体,它是一套电子现金系统,与支付宝有一定类似之处,比特币存在于网络上,可以不经过任何中心机构就完成全球转账。比特币也不是一个一个使用的,最小的单位是“聪”,一个比特币等于一亿聪。比特币的发行、支付、验证,完全是自成一系的,与法币并无联系。比特币是一种总量有限,无国界,无发行中心,无管理中心,遍布全球,自由流通的全新货币,更确切地说,比特币是一套在全世界运行的程序,是许多份遍布全球但又完全一致的账本,是一个价值传输网络,它对货币、金融、互联网乃至人类组织形式的影响,都是颠覆性的。

原文:比特币是什么

现在再来理解这些用到区块链技术上的夸张词句,如 “它对货币、金融、互联网乃至人类组织形式的影响,都是颠覆性的”,应该比较容易了吧

因为比特币采用了算力竞争的共识机制,无需对网络上的节点进行安全验证,所以它是一种 公有链

2.0 以太坊(智能合约)

智能合约是运行在区块链上的模块化、可重用的自动执行脚本,有了它我们就可以完成复杂的业务逻辑,例如同一个区块链上有多份合约,而每份合约可以约定不同的参与者(企业或者相关方)。也可以指定每份合约里每个子命令做一批特定的事,大家可以把它想象成关系数据库里的事务。

是什么?(代码即法律)

智能合约是一段可以以确定的方式自动执行的代码,为了让其变得更加可靠和安全,智能合约代码通常在区块链上存储和执行。智能合约还具有接收、存储和转账的功能,甚至还能创造其他的智能合约,它们遵循“如果-那么”这个规则

智能合约旨在消除决策中的人为因素,在传统的合约中,人为因素往往被证明是最容易出错和最不可靠的

最早能够体现智能合约思想的产物是自动售货机

优缺点

  • 优点

    全自动、结果确定性、无需中介、快捷、精确、安全、成本效率、透明

  • 缺点

    软件漏洞、协议变更、法规不明确、税收不明确

虽然存在这么多问题,但是目前来说智能合约的发展还处于初期,而且目前的大部分问题都是可以解决的

参考:代码及法律?十分钟看懂智能合约与DEFI

3.0 联盟链和私有链

在互联网上的相关资料中,人们都觉得联盟链和私有链是区块链的3.0版本,但是这个观点我个人不太认同,因为联盟链和私有链的出现并不是区块链本身得到了进一步的发展,它只是狭义上的区块链技术在更多具体的业务中得到了应用,为一些业务的处理提供了新的技术方案,但是区块链的初衷 即 广义上的区块链核心思想——去中心化,在这两种链上并没有得到较好的体现

但是区块链技术的产生无疑也为一些应用场景下业务的处理提供了更好的解决方案,站在业务程序员的角度上来讲,学习并使用区块链技术还是非常必要的

联盟链的代表性作品有FISCO BCOS、Hyperledger Fabric等,除了传统的联盟链之外,还有现在的区块链云服务如腾讯的TBaas、百度Baas等(Baas 是 Blockchain as a service 的首字母缩写,意为 区块链即服务),我觉得其实就是这些“大厂”为了更加合理分配利用自己的云服务器资源,将其名下的云服务器作为节点形成了一个区块链并向外提供区块链的相关服务而开发出的一套基于区块链技术的云服务平台,其本质就是一种私有链,是为了提供一种适用于互联网公司业务处理而形成的区块链框架

Hyperledger Fabric

Hyperledger (超级账本)是区块链行业中最大的项目之一,它由一组开源工具和多个子项目组成。该项目是由 Linux 基金会主办的一个全球协作项目,其中包括一些不同领域的领导者们,这些领导者们的目标是建立一个强大的、业务驱动的区块链框架。

区块链网络主要有三种类型:公共区块链、联盟或联合区块链,以及私有区块链。Hyperledger 是一个区块链框架,旨在帮助公司建立私人或联盟许可的区块链网络,在该网络中,多个组织可以共享控制和操作网络内节点的权限。

与比特币不同,Hyperledger Fabric 是基于许可的区块链,就是采用了基于投票的共识机制

鉴于此,无需矿工来验证交易,也无需用作激励措施的相关货币。所有的参与者必须经过身份验证才能参与到该区块链进行交易。与以太坊一样,Hyperledger Fabric 支持智能合约,在 Hyperledger 中称为 Chaincodes链码,这些合约描述并执行系统的应用程序逻辑。

然而,与以太坊和比特币不同,Hyperledger Fabric 不需要昂贵的挖矿计算来提交交易,因此它有助于构建可以在更短的延迟内进行扩展的区块链。

Hyperledger Fabric 不同于以太坊或比特币这样的区块链,不仅在于它们类型不同,或者说是它与货币无关,而且它们在内部机制方面也不同。以下是典型的 Hyperledger 网络的关键要素:

  • 账本Ledgers:存储了一系列块,这些块保留了所有状态交易的所有不可变历史记录。
  • 节点Nodes:区块链的逻辑实体。它有三种类型:
  • 客户端Clients:是代表用户向网络提交事务的应用程序。
  • 对等体Peers:是提交交易并维护分类帐状态的实体。
  • 排序者Orderers 在客户端和对等体之间创建共享通信渠道,还将区块链交易打包成块发送给遵从的对等体节点。

除了这些要素,Hyperledger Fabric 还有以下关键设计功能:

  • 链码Chaincode:类似于其它诸如以太坊的网络中的智能合约。它是用一种更高级的语言编写的程序,在针对分类帐当前状态的数据库执行。
  • 通道Channels:用于在多个网络成员之间共享机密信息的专用通信子网。每笔交易都在一个只有经过身份验证和授权的各方可见的通道上执行。
  • 背书人Endorsers 验证交易,调用链码,并将背书的交易结果返回给调用应用程序。
  • 成员服务提供商Membership Services Providers(MSP)通过颁发和验证证书来提供身份验证和身份验证过程。MSP 确定信任哪些证书颁发机构(CA)去定义信任域的成员,并确定成员可能扮演的特定角色(成员、管理员等)。

原文:

posted @ 2021-08-20 17:44  lwh147  阅读(1027)  评论(0编辑  收藏  举报