区块链技术(二)01 林威

快链邦学院

覆盖区块链各个领域的百余位导师,深入浅出、科学系统的区块链领域课程内容,助你充分利用碎片时间进行学习。

【主讲人】

林威

深圳高层次人才

哈工大博士及博士后

腾讯企鹅智家物联网顾问

在物联网、人工智能、区块链领域

有多年技术积累及研发经验

快链邦联合创始人

区块链优质资源

快速连接中

【链课堂|区块链技术——区块链、以太坊及ICO(1) - 林威】

点击边框调出视频工具条

【链课堂文字实录】

今天我们继续来聊区块链技术。

之前跟大家分享了很多关于比特币的知识,相信大家对区块链技术已经有了一些了解,那么我们今天再讲一下区块链的体系结构方面的内容。

除了比特币以外,另一个非常著名的区块链的项目就是以太坊。那么现在很多的区块链项目的发行都跟以太坊有关,大部分的数字货币都是基于以太坊发的这个token,所以我们今天也会讲非常著名的一个事情,就是ICO。

ICO现在有很大的争议,那么我们讨论一下到底什么是ICO?ICO是什么样的一个过程?为什么它会有这么大的争议?首先我们回顾一下区块链的发展历程。

在2008年的时候,中本聪发表论文,这篇论文的内容就是点对点的一个电子支付系统,在这里边最先提出了区块链这个概念。这篇论文也可以说是区块链这个概念的诞生。

在2011年的时候,莱特币出现了。随着比特币的这个发展,很多人觉得,数字货币这个东西是一个很有意思的东西,而且比特币这个代码又是开源的,所以有人就基于比特币的代码做了一个参数上的修改,发明了莱特币。后来有很多山寨币也是基于这种方式发展出来的。

在2013年的时候,V神就发起了以太坊项目。因为他觉得这个区块链上面只跑了一个货币,一个数字货币,这个相对来说太有限了,实际上基于区块链可以做很多很多不同的分布式的应用,所以V神发起了以太坊项目。而且以太坊项目,对现在整个的区块链,不管是币圈也好,还是链圈也好,都有很大的影响。

到2016年的时候,IBM开源了一个Open Blockchain项目,也就是后来非常著名的一个联盟链框架,就是叫Hyperledger Fabric超级账本项目。在这个过程中,应该说IBM这样一个巨头公司也开始对区块链技术开始关注。那么到目前为止,很多的巨头公司都开始介入了区块链这个领域。

我们今天首先讲一下区块链的整个的体系结构。

那么这个内容其实不仅是针对比特币也好,针对其它的一些区块链项目,其实都有这种类似的架构。

整个区块链的体系结构是一个分层结构。

最底层就是我们最知道的最熟悉的区块链就是数据层。那么这里边所有的数据、所有交易记录是以区块的形式来记录的。有一个链式结构,所有的交易带有时间戳,通过哈希函数对这个区块的数据进行计算等等。

那么数据层往上呢,就是网络层。比特币或者其他的区块链项目,都是一个分布式系统,在网络层一般采用P2P的网络广播的传输模式。网络层之上就是共识层,这个是主要是比特币的最先开创的一个原创性发明。

比特币采用这种像工作量证明这种机制,让所有网络的参与节点,不管是矿工也好还是其他的一些交易验证节点也好,都可以基于这样的一个共识去进行一个协同工作,去进行价值的传递。那么在这个工作量证明提出以后,还有很多人提出了一些新的记账权的分配方式,比方说基于这个权益的一个证明,就POS;还有是基于这种代表权益证明,DPOS。通过不同的方式来分配这个记账权,这个就是共识层。

那么因为比特币或者说其他的很多区块链项目,很多时候需要矿工对交易进行验证,所以它会设计一套激励机制来奖励矿工,也就是我们说的激励层。那么它奖励的方式主要是以代币的形式来实现,这里边就涉及到整个代币的一个发放机制以及代币的分配机制。

激励层上面就是合约层。我们需要在区块链上面去定义一套规则,定义怎么去操作这个代币,以及代币怎么从一个账户到另一个账户进行价值传递,那么这里边就涉及到了一些像脚本、像虚拟机、像智能合约的一些技术,基于这些技术可以去设计规则。

最上面就是应用层。应用层,就是我们在平时日常生活中可能会用到的,也是面向我们普通的C端用户的这些应用,这和我们现在传统互联网的应用差不多。

比特币是一个应用,就是一个简单的货币应用。那么除了货币以外呢,基于区块链还可以去设计实现各种各样的一些分布式应用,比方说金融领域、保险领域、公益领域,还有包括电商、游戏等等。

那么首先我们看一下最底层这个数据层。

在比特币里面,区块链就是一个分布式的大账本,每个人都掌握这个账本的副本,这也可以理解成是一个分布式的数据库,可以永久地保存这些数据的交易记录。只要是互联网上还有一个节点存在的话,那么这个交易记录就一直会保存下去。而且这个分布式数据库它不受一个中央的组织,或者是中央的一个管理员控制,这个和我们传统的一般的互联网的一些应用不一样的,它是由所有人可以去共享,或者说对这个数据是可见的,这是区块链的最主要的一个特点。

那么区块链是由区块组成的。

我们之前讲比特币的时候,也简单的跟大家去讲了区块的一个组成结构。区块有区块,区块头里主要包含了之前一个区块的哈希值,也就是说每一个区块的区块头里边,它包含了之前这个区块的信息。另外区块头里边还有一部分叫Merkle Root。整个区块里边,它会计算每一个交易记录的哈希值,并且把这些哈希值通过一个树状结构,最后汇总到Merkle Root上。这种Merkle Root的这个根节点上,意思就是说这个区块的头部已经包含了整个区块里所有的交易记录的信息。为什么这样一种链式结构就意味着这个数据很难被篡改呢?如果说我们在这个交易记录里边篡改了一个数据之后,那么这个Merkle Root就是这个树的根节点的信息就对不上了;这个数据一变,跟后边的链条的哈希值又对不上了。也就是说意味着你改了任何一个区块的数据之后,都会导致整个的区块链的崩溃,所以这个数据是不可篡改的。

那么刚才说区块链最大特点是这个去中心化。

整个区块链是由矿工共同来维护,他们是这个网络里边的成员,通过解决一个复杂的跟区块有关的一个计算问题,来决定每个区块的由谁来记账,也就是说竞争每个区块的这个记账权。那么去中心化网络的优势就在于整个的一个区块,它不属于任何一个公司或是组织,它是由所有整个体系下边所有的矿工、消费者形成的一个利益共同体,来共同维护这样一个去中心化的网络。

同时,区块链数据也是开放性的。

也就是说任何人他都可以去这个网络里边去查看任何一个地址、他的这个交易记录。那么一般通过区块链浏览器,它可以去查每一个区块的这个信息。比方说输入这个区块的某一个区块的一个地址,或者它的某一个用户的一个地址,那么它可以查到这个地址上所有的交易记录。区块链浏览器公开披露了所有的数字货币的存量、增量以及换手率等等信息。网上现在有很多可以用的区块链浏览器,在这里边,如果我们把自己的比特币地址添进去的话,那么大家都可以看到自己的这个交易记录了。

那么在区块链体系结构里边,数据层往上,就是网络层。

网络层就是因为本身区块链是去中心化的,所以网络层自然选择的也是一个分布式的一个结构,就是采用P2P传输的这种方式。这跟我们传统的客户端和服务器这种传输方式是不一样的。P2P方式就是,它所有的节点在功能上都是平等的。比较典型的例子,就是我们之前用的有一个叫BT下载这样一个软件,这个软件就是一个典型的P2P传输的方式。那么整个区块链,其实沿用的也一个成熟的一个P2P的传输技术。但是在P2P网络里边,它不要求每个节点都要跟一定的网络里的所有其它节点通信,它可以只要跟它周围的一些节点进行通信就可以了,所以整个全网不需要很大的传输数据量。

在这个网络层上面呢,就是共识层。

这个也是整个区块链或者说比特币系统的一个精华所在。那么所谓共识呢,也就是协议的意思。在网络通信里边,协议是大家非常常见的一个概念。通过协议我们可以去规定网络节点之间,要以怎样的一种约定来进行交换信息。那么在区块链里边,共识就决定了不同的人,或者不同的组织及区块链这个体系如何去交换价值。那区块链的协议都是通过一套加密经济规则,来确保整个点对点网络的数据一致性,同时也是确保所有的价值是可以被验证、确权的。

整个的区块链的加密经济规则,它实际上采用了几种方式。首先是通过私钥加密我们每个交易,或者我们之前叫做未花费的交易输出,进行确权。

第二个就是使用公钥对交易进行验证。我们可以首先通过公钥,指定它要发送的一笔价值、要发送货币的地址,最后我们每一笔交易都要得到验证,都要记录。这个事情是由矿工来做的,那么给矿工是有经济激励。

说到激励就一定会谈到比特币,或者是其他区块链里边一个很重要的概念,就是代币。

那么比特币这些代币的存在的价值,其实是基于底层的这个区块链基础上的,它代表着你掌握的数字资产的多少。

有很多种不同的方法可以创建这个代币,首先一个就是说本身区块链,比如比特币、以太坊,它本身自己就带有一种代币。还有一种方式呢,是可以通过对原来的区块链进行分叉。比方说比特币之前经过分叉形成了一个新的区块链,叫比特币现金,这就出现了一个新的代币。

那么还有一种方式呢,就是现在比较常见的一种方式,就是通过ICO的方式,在以太坊这个区块链上,通过一个智能合约来发行代币。以太坊这上面可以发行无数种代币,现在的数字货币交易所里边90%以上的代币可能都是通过这种方式来生成的。今天我们也会去分享就是关于ICO、关于智能合约这一块,特别讲一下ICO是怎么发代币的。

那么在区块链再上一层呢,就是合约层。

合约层就是制定了一套规则,这个规则决定了我们怎么去操纵刚才说到的发行代币、代币怎么在不同的账户之间进行转移的?那么比特币系统里边呢,就有一种脚本语言,它这种语言可以构建这种规则,或者也可以叫做合约,现在呢,一般都称作智能合约。通过这种脚本语言呢,我们可以去制定一套规则。规定什么条件下,一些数字货币可以从一个账户转移到另外一个账户。

智能合约其实还可以干很多其它的一些事情,比方说我们发起一次众筹的话,我们可以约定在某一个时间点之前,大家往一个众筹账户里边一定要筹集多少资金,如果筹集到了,那么我们会把这个资金转到某一个地址,大家可以通过区块链浏览器去监督这个过程;如果没到,再把这些货币原路返回给所有的募资者;捐赠者,那么这样一个过程其实就可以通过一个规则来定义,通过一个智能合约来定义。那合约层就可以做这个事情。

那么在合约层以上,就是对用户来说,都会去接触到的去中心化的应用,或者叫dApp。

那么这种去中心化应用dApp,它是建立在这个区块链上面的一个分布式的应用,而每一个应用它可能是由底层的一个或者几个不同的合约或规则组成的。通过一些比较友好的用户界面,让用户去参与到这个合约的交易上。那么比特币,它就是一个相当于是在比特币区块链基础上,定义了这么一个数字货币的转账交易的一个应用。当时比特币区块链上面只跑了这样一个应用,所以有人觉得比特币这个区块链只做一个应用太浪费了,而且它实现的应用的种类非常有限,能力也非常有限。于是出现了很多能够支持更完整,或者是功能更灵活的一些分布式应用的一些公链,比方说像以太坊。

那么分布式应用背后的主要思想是什么呢?就是说他要定一个分布式的应用,这个应用呢,由很多不同的规则来组成。这一套规则呢,位于公共的区块链底层的基础设施的基础上,它不是受某一个组织来规定的。我们现在的很多的互联网应用,都是某一家公司来制定这个规则,比方说我要按照什么样的规则去激励用户、去做运营,这些都是由某个公司来定的。但区块链这种分布式应用不一样,它的所有的规则应该是基于智能合约来决定的,它不受某一个公司的意志为转移。

除了刚才介绍了整个区块链的体系结构,那么我们接下来就讲区块链的另外一个除了比特币以外,仅次于比特币的一个最有影响力的区块链应用,就是以太坊。

以太坊最初诞生就是因为考虑到,比特币这个系统只能做货币转账实在是太局限了,其实有很多分布式的应用都可以基于区块链来实现的。所以不仅仅是货币,这个最大的改变,实际就是整个的脚本系统或者是合约层的改变。

那么我们首先看一下比特币的脚本系统是什么样的。

比特币是通过脚本系统在整个区块上进行交易的,所以脚本就是一个简单的指令列表。那比特币的脚本语言呢,可以使我们能够去编写每一个脚本事务的脚本,在运行过程中就完成了这样一个交易事务。那么比特币的脚本长什么样呢?

就是长这个模样,让人看起来像天书一样很难看懂。

首先,这是一个完整的交易纪录,在这个交易过程中,它首先描述了一个IN,就是描述了收入来源。我们交易是由输入和输出组成的,输入就表示付款方,输出表示收款方。它首先要描述这个输入来源,并且要验证,通过自己的签名和自己的公钥要来验证合法性。所以在这个输入部分他要贴上这个ScriptSig,就是他的这个签名和公钥,他要去验证自己拥有这样一个输入的来源。

那输入来源是什么呢?是他之前一笔交易记录的输出,它是把之前交易记录的输出作为这一笔交易记录输入,所以它要首先去解锁原来自己的之前的一笔输出,也就是UTXO,未花费的交易输出,然后才可以作为下一笔交易的付款方。

那么收款方呢,同样它要指定发送的币值。那个发送的币值单位呢,是Satoshi,就是中本聪的英文。这么一个BTC相当于是一亿中本聪,一亿聪,这是一个比特币里面最小的一个单位。

另外它要有一段脚本,这个脚本是ScriptPubkey,是锁定脚本。它通过这里边的一些指令,这些指令具体什么含义呢,我们就不细讲了。简单说就是,这些指令会在这个比特币的虚拟机里边,对签名还有包括他的公钥进行一些计算,从而来验证这个交易的合法性。如果说验证成功之后,这样一个交易就能够生效;如果验证失败了,这个交易就不会生效。

——END——

☆ 快链邦区块链成长社群 ☆

无法进群可扫描客服二维码进群

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180722A0J79500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券