原标题:这有一份区块链的终极指南,请接收!
1.什么是区块链?
1.1区块链的关键组成部分
1.2区块链系统的类型
1.3区块链的演变
2.区块链发展简介
2.1DApp开发的主要问题
2.2区块链上的DApp开发工具
2.3如何开发DApp
3.深入探索
区块链是一个分布式的且不断扩大的数据块或数据表,每个数据记录都被加密。每个区块包含所有或部分最近交易的信息,一个交易计算器,以及区块链版本号,和幻数——前一区块的加密哈希函数(添加一个新区块时,由计算机随机为新区块给出幻数,所有每个区块都是独一无二的)。
简单地说,区块链与Google文档非常相似。只有有权访问共享文档的人才可以修改文档,并且所有人可以立即看到更改后的文档。但是,区块链与Google文档相比,有两个主要的特点:
为了让您更好地了解区块链,我们将解释区块链的主要组成部分,区块链的类型以及区块链系统是如何诞生的。
所有区块链系统都包含以下部分:
每个区块链系统都有自己的节点应用程序,用户需要安装应用程序才能访问区块链。比特币钱包就是一个例子。
区块链生态系统有两种不同类型的节点应用程序:轻节点和全节点。轻节点对于适用于简单访问区块链并在系统内进行交易的用户,若需要更多服务则用全节点。两者之间的主要区别在于全节点需要下载完整的区块链,而轻节点只需下载验证数据真实性的区块头即可。区块链上的大部分节点都是轻节点。全节点虽然占用更多的存储空间并消耗更多的流量,却可以为用户提供更多的安全保障。
它是在节点应用程序内部发挥管理作用的数据结构。当用户安装节点应用程序时,内部的分类账数据结构可以查看该区块链上所有区块和交易的信息。
每个区块链生态系统只存在一个共享分类账,所以的节点应用程序都使用同一个共享分类账。例如,有很多客户端(节点应用程序)允许访问以太坊,并且这些客户端均可以同时运行,但您通过所有客户端访问的以太坊分类账都是相同的。
共识算法为区块链生态系统提供了基本规则,一部分节点应用程序也应用共识算法。共识算法可以确定区块链系统为所有节点获取共享分类账的方式。区块链生态系统根据需要和目的使用不同的共识算法。比特币需要几分钟才能达成对于分类账的共识(通过全节点验证分类账),但Ripple能保证在短短几秒内达成共识。
区块链生态系统主要有两种类型:公共和私有。
在联盟区块链中,用户参与前需要通过验证。例如,网络启动器需要对使用网络的新用户进行验证。所以只有“已验证”或“受邀”的用户才能访问系统。联盟链通常应用于企业的商业运营。目前,最流行在HyperledgerFabric平台上构建区块链联盟。在IBM网站上有基于HyperledgerFabric平台的联盟链构建案例。
公共区块链适合普通用户使用,私有区块链一般供公司内部使用。
2008年,SatoshiNakamoto首次推出比特币。但是,Nakamoto并不是第一个想到使用数字现金或者使用分布式统进行直接交易的人。可以说比特币是站在密码领域这个巨人的肩膀上的。StuartHaber和W.ScottStornetta于1991年描绘了一个与区块链基本相似的密码保护链块。
从2008年问世至今,区块链生态系统发生了许多变化。这些系统分别是区块链技术的几个“代”。区块链生态系统总共有四代,每一代都试图解决不同的问题,为区块链技术增加新的功能。接下来我们将更详细地介绍每一代区块链生态系统,以便让您了解四代区块链系统之间的不同以及新一代的系统到底带来了什么样的新功能。
第一代
Bitcoin,Litecoin,Monero,Dash等均为第一代区块链系统。
第一代区块链系统是第一批应用点对点分布式网络的系统。SatoshiNakamoto在比特币的白皮书中提到,这些系统可以在两方之间直接进行“电子现金”交易,无需通过第三方金融机构。第一代区块链作为完美的开源支付系统,无需第三方参与。
第二代
Ethereum,NEO,Qtum等均为第二代区块链系统。
系统可以为区块链添加了定制交易的智能合约技术,还扩大了区块链上的交易记录,融入了编程语言。以太坊为用户提供了创建“智能合约”的机会,使用Solidity语言添加几行代码来设置区块链系统内可定制交易的监管规则。
第三代
Bitshares,Lisk,ARK等均为第三代区块链系统。
第三代区块链主要解决可扩展性的问题。随着比特币和其他系统的用户量不断壮大,需要进行大量交易,系统出现了低效率的问题。
为了解决扩展问题,第三代区块链在共识算法中引入了权益证明方法,该方法比传统的权益证明或价值证明方法更高效,更简洁。简而言之,它的工作原理如下:系统上所有的节点都有相同的投票权,然后他们选举出少量的“证人”。证人是挖矿和监控网络的人。获得挖矿机会是证人参与监测和建立共识的动力。通过少数目击者建立共识比通过所有节点建立共识更快,更高效,从而解决了可扩展性问题。
第四代
IOTA,EOS等均为第四代区块链系统。
这些系统也解决了可扩展性这个问题,但解决方式与上一代不同。
EOS通过构建一个“类似操作系统”的网络来解决可扩展性问题,该网络被委托权益证明,来实现水平扩展和垂直扩展。IOTA引入了一个新的区块链系统来解决问题,新的区块链系统完全不同于已经存在的区块链系统。新的区块链系统应用Tangle网络,是一种无区块,可扩展,轻量的分散式分类账。因为系统的共识算法,并且Tangle网络的内在组成决定网络可以实现自我调节。
值得注意的是,第四代区块链仍然没有达成共识。有些人声称区块链共识已经出现,而另有一些人说像EOS和IOTA这样的项目并不是新一代的区块链技术,因为它们只是解决了与第三代区块链相同的问题。
闪电网络是一个“第二层”网络,将在区块链的基础上进行脱链交易。工作方式是这样的:两个愿意进行交易的用户将通过受保护的支付渠道直接进行交易(这是中本聪在比特币开发初期所设想的)。交易之后,这两个用户会将一些加密货币放入多重签名地址,并更改其他用户从该地址兑换的金额。每个参与方都可以随时关闭这个支付渠道,两个用户的最新余额将被写入公共账中。这项技术可为用户提供立即付款服务,减少交易费用。并且保护了用户隐私,因为并非所有的小额交易都被写入公共账中,只有最后一笔余额记录公共账。虽然闪电网络仍处于测试阶段,但这个项目非常具有前景。诞生的阿尔特币可能会“杀死”比特币,因为更便宜,更快速的交易就是它的主要优势。
我们已经了解了什么是区块链,接下来让我们来仔细研究一下区块链的发展。区块链技术最受欢迎的应用之一是Dapps(分散式应用程序)。这些基本都是适用于区块链上的应用程序。听上去似乎很酷!
DApp开发需要类似于网络应用程序开发所需的工具:计算,文件存储,外部数据,货币化和支付。到2017年底,大约已经筹备完成70%,货币化和支付工具已经开发完全并可以开始运营,但计算,文件存储和外部数据组件仍在开发中。
正如您在下文将要看到的那样,创建一个简单的DApp是可以实现的,并没有那么困难。我们将指导您完成这个过程,以便您可以获得区块链的实践经验。本指南将会一步一步地进行指导,即使您之前没有任何编程经验,您也能够理解每个步骤。当然,如果您曾经使用过Solidity或者尝试编写过一些智能合约,那对于创建DApp来说,肯定有很大帮助。
首先,我们来看看DApp开发需要的主要工具:
Geth:用于运行以太坊全节点的命令行接口。简而言之,这是一个连接以太坊区块链的应用程序。以太坊在此为所有操作系统提供安装说明。您将需要它,因为以太坊区块链是开发DApps的主要平台。
Solidity:在以太坊编写智能合约的编程语言。您可以在其网站上找到安装说明。您还需要安装Solidity编译器才能使用Solidity语言编写代码。
现在让我们来看看开发DApp需要进行的主要步骤。不会涉及太多关于编码的细节,我们的目标是概述DApp开发到底是什么样子的。如果您想按照所有步骤进行编码,通过阅读每个步骤中的超链接也可完成。
10.启动服务器。如果一切正确,您将看到一个网页,显示您在合约中编写的内容,现在您便可以运行您的DApp。
如果您已经按照教程中的所有步骤进行操作,那么您便可以创建了一个本地运行的DApp。希望本教程能够让您体验在区块链上开发应用程序。