雷锋。com艾财经评论记者:你想知道区块链是什么吗?想知道区块链的基本原理吗?想知道区块链科技是如何发展的吗?本指南将一一为您解答。您还可以体验构建自己的分布式应用程序(DApp)。接下来,您只需按照我们为您准备的分步说明进行操作。本文来自howtotoken,区块链应用程序开发指南。雷锋。com AI财经评论编译如下:指南目录1。什么是区块链?
1.1区块链的关键组成部分1.2区块链体系的类型1.3区块链的演变2。区块链开发简介2.1 DApp开发的主要问题2.1区块链上的DApp开发工具2.3如何开发DApp3。深入探索。
1.什么是区块链?区块链是一个分布式的、不断扩展的数据块或数据表,每个数据记录都是加密的。每个块包含全部或部分最新交易信息、一个交易计算器、区块链版本号、幻数为——的前一个块的加密哈希函数(添加新块时,计算机随机赋予新块幻数,所有块都是唯一的)。
因为每个块都有前一个块的加密哈希值、时间戳和交易数据,所以区块链的信息可以很容易地被验证并且不能被删除。当数据被记录在一个块中时,前一个块的数据不能在后续的块中被修改,因为区块链是分布式的,新的块一般采用点对点的网络管理方式。
简单地说,区块链与谷歌文档非常相似。只有有权访问共享文档的人才能修改文档,每个人都可以立即看到更改后的文档。然而,与谷歌文档相比,区块链有两个主要特点:在区块链,发布的信息不能被删除或编辑。您可以添加新信息,但不能删除或更改任何已添加到系统中的信息。
区块链是分布式的,没有专门的权限来控制。它由系统中的每个用户拥有。谷歌文档存储在谷歌服务器上。原则上,谷歌是管理这些文件的权威。为了让您更好地了解区块链,我们将解释区块链的主要组成部分,区块链的类型以及区块链系统是如何诞生的。1.1区块链全区块链系统的关键组件包括以下部分:
应用程序节点每个区块链系统都有自己的节点应用程序,用户需要安装应用程序才能访问区块链。比特币钱包就是一个例子。
区块链生态系统中有两种不同类型的节点应用:轻节点和全节点。轻型节点适用于简单访问区块链并在系统中进行交易的用户。如果需要更多服务,则使用整个节点。两者的主要区别在于,整个节点需要下载完整的区块链,而轻节点只需要下载块头来验证数据的真实性。区块链中的大多数节点是光节点。
虽然整个节点占用更多的存储空间,消耗更多的流量,但是可以为用户提供更多的安全保障。
共享总账是一种数据结构,在节点应用中起管理作用。当用户安装节点应用程序时,内部分类账数据结构可以查看区块链上所有块和交易的信息。
每个区块链生态系统中只有一个共享分类帐,因此所有节点应用程序都使用同一个共享分类帐。比如允许很多客户端(节点应用)访问以太坊,可以全部同时运行,但是你通过所有客户端访问的以太坊账本是一样的。
共识算法共识算法为区块链生态系统提供了基本规则,一些节点应用也应用了共识算法。共识算法可以确定区块链系统如何获得所有节点的共享分类帐。区块链生态系统根据需要和目的使用不同的共识算法。比特币对账本达成共识需要几分钟时间(账本由所有节点验证),但Ripple可以保证在短短几秒内达成共识。
核实分类账的主要方法有时间证明、工作量证明和权益证明。在允许他们参与共识建立之前,可以使用不同的方法来验证节点。不同共识算法的建立成本和交易成本会有所不同。1.2区块链系统的类型区块链生态系统主要有两种类型:公有和私有。
在公共区块链中,用户只要安装相关的区块链节点应用程序,就可以访问系统并在其中进行交易。众所周知的比特币和以太坊是公共区块链。
在区块链联盟中,用户需要通过验证才能加入。例如,网络发起者需要认证使用网络的新用户。所以只有经过“认证”或“被邀请”的用户才能访问系统。联盟链通常应用于企业的商业运作。目前最流行的是在Hyperledger Fabric平台上搭建区块链联盟。IBM网站上有一个基于Hyperledger Fabric平台的联盟链构建案例。公共区块链适合普通用户,私有区块链一般供公司内部使用。
1.3区块链的演变2008年,中本聪首次引入比特币。然而,中本聪并不是第一个想到使用数字现金或使用分布式系统进行直接交易的人。可以说比特币站在了密码学领域巨人的肩膀上。Stuart Haber和W. Scott Stornetta在1991年描述了一种密码保护的链滑车,其基本上类似于区块链。
Hashcash工作量证明算法于1997年问世。目前这个算法是比特币挖矿系统的核心。早在1998年,戴伟就提出了名为“B-Money”的去中心化电子现金系统,通过工作量“创造”货币。中本聪在一篇关于比特币的文章中引用了B-Money。然而,中本聪是第一个将这些成果结合起来,将分布式点对点系统(现在称为区块链)带入生活的人,从而实现了数字货币交易。
从2008 年问世至今,区块链生态系统发生了许多变化。这些系统分别是区块链技术的几个“代”。区块链生态系统总共有四代,每一代都试图解决不同的问题,为区块链技术增加新的功能。接下来我们将更详细地介绍每一代区块链生态系统,以便让您了解四代区块链系统之间的不同以及新一代的系统到底带来了什么样的新功能。
第一代
Bitcoin, Litecoin, Monero, Dash 等均为第一代区块链系统。
第一代区块链系统是第一批应用点对点分布式网络的系统。Satoshi Nakamoto 在比特币的白皮书中提到,这些系统可以在两方之间直接进行“电子现金”交易,无需通过第三方金融机构。第一代区块链作为完美的开源支付系统,无需第三方参与。
第二代
Ethereum,NEO,Qtum 等均为第二代区块链系统。
系统可以为区块链添加了定制交易的智能合约技术,还扩大了区块链上的交易记录,融入了编程语言。以太坊为用户提供了创建“智能合约”的机会,使用Solidity 语言添加几行代码来设置区块链系统内可定制交易的监管规则。
第三代
Bitshares,Lisk,ARK 等均为第三代区块链系统。
第三代区块链主要解决可扩展性的问题。随着比特币和其他系统的用户量不断壮大,需要进行大量交易,系统出现了低效率的问题。
为了解决扩展问题,第三代区块链在共识算法中引入了权益证明方法,该方法比传统的权益证明或价值证明方法更高效,更简洁。简而言之,它的工作原理如下:系统上所有的节点都有相同的投票权,然后他们选举出少量的“证人”。证人是挖矿和监控网络的人。获得挖矿机会是证人参与监测和建立共识的动力。
通过少数目击者建立共识比通过所有节点建立共识更快,更高效,从而解决了可扩展性问题。
第四代
IOTA,EOS 等均为第四代区块链系统。
这些系统也解决了可扩展性这个问题,但解决方式与上一代不同。
EOS 通过构建一个“类似操作系统”的网络来解决可扩展性问题,该网络被委托权益证明,来实现水平扩展和垂直扩展。IOTA引入了一个新的区块链系统来解决问题,新的区块链系统完全不同于已经存在的区块链系统。新的区块链系统应用Tangle 网络,是一种无区块,可扩展,轻量的分散式分类账。因为系统的共识算法,并且Tangle网络的内在组成决定网络可以实现自我调节。
值得注意的是,第四代区块链仍然没有达成共识。有些人声称区块链共识已经出现,而另有一些人说像EOS 和IOTA 这样的项目并不是新一代的区块链技术,因为它们只是解决了与第三代区块链相同的问题。
您可以关注另一个项目:闪电网络(Lightning Network)。于2018 年3 月19 日发布测试版,闪电网络正在引入非连锁交易。基本上,目前所有基于区块链的项目都使用链上交易:用户之间的所有交易信息都被写入区块链网络的公共分类账中。将交易信息写入分类账中需要时间,并且只有通过全节点才能验证每笔交易。
这就是为什么交易处理时间相对较长(比特币至少需要10 分钟),而且交易费用高。
闪电网络是一个“第二层”网络,将在区块链的基础上进行脱链交易。工作方式是这样的:两个愿意进行交易的用户将通过受保护的支付渠道直接进行交易(这是中本聪在比特币开发初期所设想的)。交易之后,这两个用户会将一些加密货币放入多重签名地址,并更改其他用户从该地址兑换的金额。
每个参与方都可以随时关闭这个支付渠道,两个用户的最新余额将被写入公共账中。这项技术可为用户提供立即付款服务,减少交易费用。并且保护了用户隐私,因为并非所有的小额交易都被写入公共账中,只有最后一笔余额记录公共账。虽然闪电网络仍处于测试阶段,但这个项目非常具有前景。
诞生的阿尔特币可能会“杀死”比特币,因为更便宜,更快速的交易就是它的主要优势。
2. 区块链发展简介我们已经了解了什么是区块链,接下来让我们来仔细研究一下区块链的发展。 区块链技术最受欢迎的应用之一是Dapps (分散式应用程序)。这些基本都是适用于区块链上的应用程序。听上去似乎很酷!
你也许会想,在区块链系统饱受关注的情况下,为什么只有这么少的DApps 可用?答案很简单:并不是所有即将成功开发DApp 的公司都已经把所有组件准备好。
2.1 DApp 开发面临的主要问题DApp 开发需要类似于网络应用程序开发所需的工具:计算,文件存储,外部数据,货币化和支付。到2017 年底,大约已经筹备完成70,货币化和支付工具已经开发完全并可以开始运营,但计算,文件存储和外部数据组件仍在开发中。
在很多人使用的DApp 时,堆栈开发相关的问题才会变得很重要,需要良好的可扩展性来支撑。所以这些问题暂时不会阻止DApp 的创建,只是目前难以扩展它。这个行业发展非常迅速,今年早些时候堆栈可能会全面完成,我们便可以看到DApp 数量的爆炸式增长。如果你也想参与DApp 的未来,那你需要从开发简单的DApps 开始。我们希望这篇指南能为您提供帮助。
正如您在下文将要看到的那样,创建一个简单的DApp 是可以实现的,并没有那么困难。我们将指导您完成这个过程,以便您可以获得区块链的实践经验。本指南将会一步一步地进行指导,即使您之前没有任何编程经验,您也能够理解每个步骤。当然,如果您曾经使用过Solidity 或者尝试编写过一些智能合约,那对于创建DApp 来说,肯定有很大帮助。
2.2 在区块链上开发DApp 需要的工具首先,我们来看看DApp 开发需要的主要工具:
Geth:用于运行以太坊全节点的命令行接口。简而言之,这是一个连接以太坊区块链的应用程序。以太坊在此为所有操作系统提供安装说明。您将需要它,因为以太坊区块链是开发DApps 的主要平台。
Solidity:在以太坊编写智能合约的编程语言。您可以在其网站上找到安装说明。您还需要安装Solidity 编译器才能使用Solidity 语言编写代码。
Truffle: DApps 的开发环境。您将需要创建,运行和测试所有分散的应用程序。Truffle 的安装方法见此超链接。
Ganache:这是一个区块链模拟器。您可以使用它来测试您的DApp,而无需连接到真实的以太坊区块链上。此超链接可安装Ganache。
2.3 如何开发DApp现在让我们来看看开发DApp 需要进行的主要步骤。不会涉及太多关于编码的细节,我们的目标是概述DApp 开发到底是什么样子的。如果您想按照所有步骤进行编码,通过阅读每个步骤中的超链接也可完成。
1.安装Geth。如上所述,您将需要它连接到以太坊的区块链。
2.启动以太坊节点,并连接其他节点,开始下载区块链。当您安装了Geth 时,可以通过命令行完成区块链的下载。区块链下载大约需要10-15分钟,具体时间取决于您的互联网网速。在控制台的输出中,您可以看到区块号。下载完成后,输出中的区块号应接近此页面上的区块号。
3.如果你还没有安装Truffle,那么现在安装。
4.创建一个Truffle 项目,Truffle 将创建运行整个堆栈DApp 所需的文件和目录,还会创建一个示例应用程序。
5.下一步是使用Solidity 语言创建一个智能合约代码。这里有一个案例,关于如何创建一个简单的“投票”智能合约。
6.您需要用Solidity 语言将代码添加到Truffle 项目中。这里可以在这里找到。
7.继续开发您的智能合约。为此,您需要一个测试账户和一些以太币。更多关于设置账户和获取以太币的。
8.当你有一个帐户和以太币时,在区块链上运行您已经准备好的合约。这里有个关于在测试网络上开发合同的教程。这个过程需要几分钟时间,具体时间取决于您合约的复杂程度和您计算机的容量。
9.试着通过Truffle 您的合约。如果一切正常运行,说明您的合同是完全正常的,您可以继续下一步。
10.启动服务器。如果一切正确,您将看到一个网页,显示您在合约中编写的内容,现在您便可以运行您的DApp。
如果您已经按照教程中的所有步骤进行操作,那么您便可以创建了一个本地运行的DApp。希望本教程能够让您体验在区块链上开发应用程序。
雷锋网