一. 区块链的基础知识

(一)区块链是什么

2008年自称为中本聪的一个人(或一个团体)发表了一篇名为《比特币:一种点对点式的电子现金系统》的论文,初次引入了比特币和区块链的概念,其中区块链是比特币的底层技术。

由于某些原因一些人可能会把区块链认定成一个去中心化的账本。实际上区块链是一个分布在区块链各个节点(即一台电脑)上、由各个节点协同运转的数据库存储系统。该系统可以存储信息、交易(TXtransaction)、智能合约的代码和代码地址。

最初设计区块链时没有引入余额的概念,如果要得出一个比特币地址的余额就需要在节点上下载所有的区块链数据。这就好比一个只有文字的棋谱,如果要得到最新的状态一样,就需要双方认可最初的状态与棋谱存储的每一步,才能得出唯一的最新状态。在区块链中,最初的状态由创世区块给出,由于区块链具有难以更改区块链中信息的特性,从而保证了状态的唯一性。当然在区块链的网络中玩游戏的不只是两个人了。

(二)为什么需要区块链

当今社会的交易方式可以基本分为现金交易和非现金交易,现金交易相比非现金交易而言,具有更强的匿名性,但也带来了一些不方便。非现金贸易,如互联网上的贸易,几乎都需要借助金融机构作为可信赖的第三方来处理电子支付信息。交易双方确认交易信息后由金融机构记账,交易信息全部保留在金融机构的数据库中。如果金融机构停止运营,这个系统就崩溃了。金融机构的内部腐败也可能导致交易信息的掺假,不可避免的黑客也能通过攻击金融机构的数据库获得或更改交易信息,因此有潜在的安全隐患。

中本聪提出比特币概念时做出了一个假设,假设所有人都不相互信任。通过建立一种基于密码学原理而不是信用构建的一种电子支付系统,从而实现不需要第三方参与,只需要交易双方达成一致就能直接支付的场景。将交易信息存储在每一个节点上,交易信息打包后不可更改,整个系统由所有节点运行。这样的网络支付系统保证了交易的安全,并且打破了基于信任的传统交易模式。

(三)区块链的特点

1.去中心化(Decentralized:所有的交易数据存储在所有区块链网络的节点上,区块链上的任何节点都可以获得区块链上的所有数据。

2.去信任(Trustless:基于密码学的原理保证了交易的安全,并且做到了系统运作的公开透明,系统中所有节点之间无需信任也可以进行交易,因为数据库和整个系统的运作是公开透明的。在系统的规则和时间范围内,节点之间无法欺骗彼此。

3.集体维护(Collectively Maintain:系统是由其中所有具有维护功能的节点共同维护的,系统中所有人共同参与维护工作,由共识机制来保证这项特性。

4.可靠数据库(Reliable Database:区块链上的节点可以从其他节点上下载最新的区块链数据,如果仅仅更改一个节点上的数据,由于不被其它的节点承认,那么该节点上的数据就不会被认可,从而该数据就会被舍弃。

(四)区块链的分类

1. 公有链:公有链是世界上任何人都可以访问读取和发送交易的区块链,同时任何人都可以参与共识的过程。公有链是真正意义上的完全去中心化的区块链。公有链又分为主网和测试网络。

2. 联盟链:共识过程受到预选节点控制的区块链。相较于其它两种区块链,联盟链是一种多中心化的区块链,共识机制有预选的多个节点制定,其他节点只能读取全部或部分数据。

3. 私有链:私有链的写入权仅被控制在某一个组织下,读取权限可能公开或者被限制。完全私有的区块链更接近中心化的数据库。该授权网络中节点的接入权完全被一个节点控制。私有链主要提供区块链安全高效、公开透明、可追溯、不可篡改的特性,同时具有较好的防范外部攻击的性能。

(五)区块链的主要技术路线

1. 加密工程:构建一个可验证的数据结构库和适合低资源设备且对区块链应用程序足够安全的签名和其他加密系统。

2. 区块链协议:建立经过现实世界测试的快速、安全的共识系统。使区块链能处理更大的交易量、获得更快的交易速度和更安全的交易。

3. 管理:通过智能合约以可审计和可核查的方式进行管理,帮助验证者规避监管和其他风险的系统。建立一套社会机构促进企业之间的分片网络,并管理公共网络和大型企业之间的互动。

4. 市场基础设施:为从加密货币到数字资产再到以区块链为基础的证券提供流动性。完善资产问题,并能够管理从发行到撤离整个资产的生命周期。决定去中心化机制是否能够成为核心的流动性提供者,或者理想的解决方案是否是可审计的。

5. 可信的计算:确保现实世界和区块链世界之间的安全边界。

(六)区块链的架构

从架构设计上来说,区块链可以简单的分为三个层次,协议层、扩展层和应用层。其中,协议层又可以分为存储层和网络层,它们相互独立但又不可分割。

1. 协议层:协议层指最底层的技术,这个层次通常是一个完整的区块链产品。类似于我们的电脑操作系统。这个层次是一切的基础,构建了网络环境、搭建了交易通道、制定了节点奖励规则。主要包括网络编程、分布式算法、加密签名、数据存储四个方面。

2. 扩展层:类似电脑的驱动程序,是为了让区块链产品更加实用。主要分为交易市场和针对某个方向的扩展实现,最典型的扩展层面的应用开发即为智能合约,从这个层面上看,区块链可以开发任何类型的产品。

3. 应用层:应用层类似于电脑中的各种软件程序,是普通人可以真正直接使用的产品。这类层面的应用几乎是空白。大家使用的各类轻钱包,应该算是应用层最简单、最典型的应用。

(七)区块链的常见的四大共识机制

区块链系统的核心是由系统中的节点竞争记账,这个竞争的过程称为共识机制。共识机制决定了谁有记账的权力,以及记账权力的选择过程和理由。常见的共识机制有以下4个:

1. 工作量证明机制(PoW):整个系统中的每个节点为整个系统提供计算能力,通过一个竞争机制,让最先找到满足条件的随机数的节点获得系统的奖励。

2. 股权证明机制(PoS):这种机制通过计算节点持有的币数占总币数的比例和时间来得出节点出块的概率。PoS机制去掉了穷举随机数的过程,同等算力下账户余额多的节点越容易发现下一个区块,加速了出快速度。

3. 委托股权证明机制(DPoS):DPoSPoS机制的进化方案。这种方案通过不同的策略不定时选择一些超级节点,由这些超级节点产生区块。

4. 拜占庭容错机制(BFT):容忍一定恶意节点的共识机制,由BFT派生出来的PBFTDBFT机制比较常用。

区块链的交易信息和运作机制

(一)以比特币为例

1. 比特币只能由创世区块分配和“挖矿”奖励产生。可以与法币进行交易。

2. 收款方,在自己的比特币钱包里创建一个地址同时生成一个密钥对。

3. 付款方,向指定地址付款并用自己的私钥加密向全网广播等待确认。

4. 其他节点通过公钥对交易进行验证,验证通过后矿工将交易打包。

5. 矿工通过牺牲算力破解一个密码学难题后将交易信息打包并向全网广播。矿工的工作被验证后区块被写入区块链并且矿工获得一定奖励。

(二)以以太坊的智能合约为例

智能合约是满足一定条件时自动执行的计算机代码。在区块链上,智能合约以交易的形式存在,智能合约的接收方设为空,需要调取代码时可以通过调取区块链上智能合约的地址执行智能合约。

如果要对智能合约进行升级,可以部署一个拥有调用转发功能的智能合约,将收到原本智能合约的地址调用转发到另一个包含逻辑功能的合约地址,当进行合约升级时,只需要部署一个新的合约并修改转发的目标地址指向新的合约就能完成智能合约的升级。

区块链的特性赋予了这些代码不可变,确定性,分布式和可自校验状态等特点。代码运行过程中状态的存储,是不可变的。每一个人,都可以开一个自己的节点,在所有区块链节点上运行,将会获得同样的结果。

(三)以eos为例

相较于以太坊,EOS能够处理企业级的应用,支持成百上千的用户同时使用,每日可以处理数以千万的活跃用户;可以供普通用户免费使用,用户无需在平台上使用服务或从中受益而支付费用;EOS并非完全的去中心化,EOS的共识机制选出21个超级节点,由超级节点出块和验证交易;交易确认时间较以太坊更短,EOS声称可以处理百万级tps的交易;可以冻结一些异常账号,并且可以通过一些手段找回丢失的密钥。

区块链的局限性

1. 吞吐量较小:比特币网络每秒只能处理一笔交易(1tps),理论上的最大值也只有7tpsVISA通常处理2000tps,比特币、以太坊与其他区块链网络能处理的交易与VISA都有一定距离。

2. 数据量过于庞大:比特币网络上的数据增长较快,由于区块链上数据的特殊性不能压缩,几十G的数据使得下载这些数据需要很长时间。

3. 安全:51%攻击已经被实现,一个黑客通过控制区块链全网51%的算力进行重放攻击,成功获得了巨大的利益。而且比特币采用的加密技术,椭圆曲线算法2015年已被破解,虽然已经提出了一些可能的升级方法。

4. 电力的浪费:挖矿带来了巨大的电力消耗,比特币挖矿带来的电力消耗已经可以抵上一个小国的耗电量。

5. 分叉:当黑客成功篡改了区块链上的交易信息后会,从主链上分出一条新链即产生分叉,这时区块链上的节点需要选择一条链继续进行交易,也可能两条链都被作为合法的区块链。

区块链的常用术语

1. 区块头:包含当前版本号、先前散列值、当前散列值、时间戳、随机数的区块部分、默克尔树的根哈希值。

2. 散列值(哈希值):将信息压缩成摘要后,通过哈希函数得到的固定长度的一串字符,用于验证信息。

3. 随机数(Nonce):参与得到符合条件的哈希值的随机数。

4. 时间戳:去除时区影响表示时间的一串字符。

5.交易信息:包含收款地址、转账地址与交易值。



分享到: