xiaoeryu 2019-06-28
不同的区块链智能合约和区块链技术现在风靡一时。越来越多的人出于某种原因试图进入这个神奇的世界。如果你是这项技术的新手并正在寻找基于区块链的开发平台的快速入门,那么本指南非常适合你。我们将重点关注和比较的平台是:
那么,为什么我们决定关注这5个平台?我们认为这几个平台提供了可用性和功能性的组合。是的,我们也知道其中一些项目并未完全上线,但我们仍然认为项目的潜力足以保证我们的名单上有它一个位置。我们将先介绍每个平台,然后在最后比较它们。
毫无疑问,以太坊是智能合约平台的老大。以太坊背后的主要人物是Vitalik Buterin。Buterin对比特币非常着迷,但他意识到区块链技术比仅仅作为支付协议的推动者有更多的用途。他意识到可以使用区块链技术来创建去中心化的应用程序。于是他被启发创造了以太坊。
像比特币一样,以太坊是一种加密货币,然而,也就是这个地方还有些相似性。因为虽然比特币是“第一代”区块链,但以太坊通过成为有史以来第一个第二代区块链打破了局面。以太坊通过在区块链上引入智能合约,彻底改变了加密世界。
智能合约首先由Nick Szabo概念化。这个想法很简单,在双方之间有一套自动执行指令,不需要由第三方监督或执行。这个想法似乎很简单,对吧?然而,智能合约使以太坊能够创建一个环境,来自世界各地的开发人员可以创建自己的去中心化应用程序,即Dapps。
Dapp的创造是以太坊最重要的特征之一。除了去中心化之外,还有Dapp必须具备的某些其他功能:
听起来很棒吧!那么,你究竟如何构建它们呢?你需要使用solidity对智能合约进行编码。
开发人员使用一种名为Solidity的编程语言,这种语言是一种有目的的简洁,松散类型的语言,其语法与ECMAScript(Javascript)非常相似。
除了创建智能合约外,你还必须拥有可以执行它的环境。但是,此执行环境必须具有一些属性。这些属性是:
1.确定性
如果程序每次都给予给定输入有相同的输出,则程序是确定性的。例如。如果3+1=4则3+1总是4(假设基数相同)。因此,当程序将相同的输出提供给不同计算机中的同一组输入时,该程序称为确定性。环境必须确保智能合约的执行始终是确定的。
2.可终止
在数学逻辑中,我们有一个称为halting problem(终止问题)的错误。基本上,它表明无法知道给定程序是否可以在一定时限内执行其功能。1936年,Alan Turing(阿兰·图灵)使用Cantor的对角线问题推断出,没有办法知道某个节目是否可以在一个时间限制内完成。
这显然是智能合约的问题,因为根据定义,合约必须能够在给定的时间限制内终止。因此环境必须能够停止智能合约的运作。
3.隔离
在区块链中,任何人和每个人都可以上传智能合约。然而,正因为如此,合约可能在知情和不知不觉中包含病毒和错误。
如果合约没有被隔离,这可能会妨碍整个系统。因此,将合约保持隔离在沙箱中以保护整个环境免受任何负面影响至关重要。
以太坊使用名为以太坊虚拟机(EVM)的虚拟机执行其智能合约。
人们必须了解的下一个核心以太坊概念是gas。
还记得智能合约环境的“终止”属性吗?好吧,以太坊智能合约通过利用gas来实现这一特性。在智能合约中编码的每一行都需要一定量的gas才能执行。因此,当开发人员提交智能合约以供执行时,他们还会指定最大gas限制。
想想gas限制是你在开车前装满汽车的燃料,燃料耗尽的那一刻,汽车停止工作。智能合约中的每一行都需要一定量的gas才能执行。一旦gas耗尽,智能合约就会停止执行。
之前我们已经详细介绍了这个主题,因此我们将简要介绍一下这个问题。以太坊最吸引人的功能之一是初始代币产品或ICO。世界各地的开发人员可以使用以太坊的虚拟机来支持他们的智能合约,并使用该平台相对轻松地在拥挤的销售中筹集大量资金。由于这个特点被大量的采用以太坊似乎已经走到了尽头。
目前的以太坊使用的是工作量证明来挖掘,即和比特币使用相同挖掘过程。基本上,矿工通过利用他们的处理能力来解决复杂的加密难题,从而竞争链中的下一个区块。
以太坊最终将利用Casper协议转向权益证明。POS比POW更环保,并且可扩展性更高。
毫无疑问,以太坊对加密世界产生了巨大影响,但是,其性能存在一些重大问题。截至目前,以太坊在可扩展性方面都失败了。他们每秒只能管理25笔交易,这对于想要主流采用的Dapps来说并不理想。最重要的是,以太坊对于开发人员来说可能是昂贵的。执行dapps的gas价格可以已经要飞上天了。
除此之外,还有一个问题会影响以太坊和其他加密货币。这个问题是互操作性。截至目前,如果Alice拥有比特币并且Bob拥有以太坊,那么两者之间没有简单直接的方式交互。这是一个非常大的问题,因为在未来,可能会有数千个并行运行的区块链,并且应该有一种方式让它们彼此无缝交互。
旨在解决这种互操作性问题的一个项目是Cosmos。
代币:ATOM
Cosmos旨在成为一个“区块链互联网”,它将一劳永逸地解决这些问题。Cosmos的架构由几个独立的区块链组成,称为“区域”,附加到称为“Hub”的中央区块链。
根据Cosmos的白皮书,“这些区域由Tendermint Core提供支持,它提供了一个高性能,一致,安全的PBFT共识引擎,其中严格的fork-accountability保证可以控制恶意行为者的行为。Tendermint Core的BFT一致性算法非常适合扩展公共股权证明区块链。“
该项目背后是首席执行官Jae Kwon和首席技术官Ethan Buchman以及Interchain Foundation团队。
Tendermint是PBFT的变体,即实际拜占庭容错。拜占庭容错(BFT)系统是一个成功应对拜占庭将军问题的系统。我们在这里详细介绍了拜占庭将军的问题。为了保持简短,为了使去中心化的点对点系统以无信任的方式运作,他们必须找到拜占庭将军问题的解决方案。
正如cosmos白皮书所述:
“Tendermint提供卓越的性能。在分布在5大洲的7个数据中心的64个节点的基准测试中,在商品云实例上,Tendermint共识可以每秒处理数千个交易,提交延迟大约为1到2秒。值得注意的是,即使在恶劣的压力测试条件下,每秒一千次交易的表现仍然保持不变。“
下图支持上述声明:
对于250字节的交易,Tendermint可以以每秒10,000个交易的速率处理。而且拥有更好,更简单的轻客户端安全性,使其成为移动和物联网用例的理想选择。相比之下,比特币轻客户端需要更多的工作并且有很多需求,这使得它对于某些用例来说是不切实际的。
= Tendermint Core通过应用程序区块链接口(ABCI)连接到区块链应用程序。
正如我们之前提到的,Cosmos的架构将遵循Hub和Zones方法。将有多个并行区块链连接到一个中央Hub区块链。想想太阳和太阳系。
Cosmos中心是一个分布式分类帐,个人用户或区域本身可以保存其令牌。这些区域可以使用IBC或Inter Blockchain Communication通过Hub进行相互交互。
见上图,这是两个区域如何通过IBC相互通信的简化版本。
Cosmos实现的互操作性有一些非常有趣的用例:
代币:ADA
作为以太坊联合创始人Charles Hoskinson的心血结晶,Cardano是一个智能合约平台,但Cardano通过分层架构提供可扩展性和安全性。Cardano的方法在空间本身是独一无二的,因为它建立在科学哲学和同行评审的学术研究之上。
Cardano是第三代区块链,专注于为区块链空间带来可扩展性和互操作性。有三个组织全职工作来开发和照顾Cardano:
这三个组织协同工作,以确保Cardano的发展进展顺利。
与其他智能合约平台相比,有一种非常有趣的情况使Cardano独一无二。大多数其他智能合约平台都是通过命令式编程语言编码的。Cardano使用Haskell开发源代码,这是一种函数式编程语言。对于其智能合约,Cardano使用Plutus,这也是一种函数式编程语言。
让我们以直截了当的方式解释两种语言之间的区别。
在命令式编程语言中,加法的工作方式如下:
int a = 5; int b = 3; int c; c = a+b;
如你所见,它需要很多步骤。现在,看看它将如何在函数式编程语言中工作?
假设我们想要使用函数f(x)来计算函数g(x),然后我们想用它来处理函数h(x)。我们可以简单地将所有这些组合在一起,如下所示:
h(g(f(x)))
这使得函数方法更容易在数学上推理。
函数编程语言有助于提高可伸缩性,它还有助于使程序更加精确。
Cardano使用名为Ouroboros的新的股权证明算法,该算法确定各个节点如何就网络达成共识。该协议由OHK首席科学家Aggelos Kiayias教授领导的团队设计。
Ouroboros是第一个在数学上被证明具有可证明的安全性的股权协议证明,并且是第一个通过同行评审,是通过同行评审的第一个证明,这是在领先的加密会议Crypto 2017时发生的。
Cardano计划执行交互操作的方式是实现侧链。
Sidechain作为一个概念已经在加密圈子中存在了相当长的一段时间。这个想法很简单;你有一条与主链一起运行的平行链条。侧链将通过双向挂钩连接到主链。
Cardano将根据Kiayias,Miller和Zindros(KMZ)的研究支持侧链,涉及“非交互式工作量证明”。
根据Hoskinson的说法,侧链的概念来自两件事:
代币:EOS
EOS的目标是成为一个去中心化的操作系统,可以支持工业规模的去中心化应用。EOS是Dan Larimer(BitShares和Steemit的创造者)和Block.One创建的。EOS长达一年最近成为ICO的焦点,这个ICO筹集了创纪录的40亿美元。
这听起来很神奇,但真正吸引公众想象的是以下两种说法:
EOS通过利用委托的股权证明(DPOS)共识机制实现其可扩展性,这是传统的股权证明的变体。理论上它每秒可以进行数百万次交易。
那么,DPOS与传统POS有何不同?在POS中,整个网络必须处理共识,在DPOS中,所有EOS持有者将选出21个块生产者,他们将负责处理共识和一般网络健康状况。任何人都可以参加区块生成者选举,他们将有机会创建与他们收到的所有其他创建人的总票数成比例的区块。
DPOS系统没有经历分叉,因为生产者不必竞争发现区块,而是必须合作。如果是分叉,则共识会自动切换到最长链。
可以想象,这些区块生产商的重要性绝对不容小觑。他们不仅会处理共识,还会关注整体网络健康状况。这就是为什么每一次投票都具有适当权重非常重要的原因。
这就是为什么Larimer引入了投票衰减(Voter Decay)的想法,这将减少旧选票随时间的权重。保持投票权的唯一方法是定期投票。
Voter Decay机制带来两大优势:
这有可能成为一个真正的革命性概念,并且可以永远改变去中心化投票(甚至是投票本身)。
EOS使用所有权模型,用户拥有并有权使用与其股权成比例的资源,而不必为每笔交易付费。因此,从本质上讲,如果你拥有EOS的N个代币,那么你有权获得N*k个交易。实质上,这消除了交易费用。
在发送EOS代币时,你可以获得某些计算资源。你会得到:
EOS代币以及支付代币也可用作获取所有这些资源的费用。
最后,我们来看看Hyperledger。
Hyperledger,与我们迄今为止谈论的所有平台截然不同。虽然以太坊和EOS都是合适的加密货币并拥有自己的区块链,但Hyperledger不是加密货币,也没有自己的区块链。Hyperledger是Linux Foundation的一个开源项目。在他们的网站上,Hyperledger将自己描述为“为推动跨行业区块链技术而开创的开源协作努力。这是由Linux基金会主办的全球合作,包括金融,银行,物联网,供应链,制造和技术领域的领导者。“
像以太坊,EOS等平台都是公共区块链,这意味着任何人都可以选择加入网络。但是,对于需要自己的区块链基础设施的大企业来说,这是非常不受欢迎的。
想想银行集团的区块链。
银行需要每天处理敏感数据。从他们的内部交易记录到KYC数据,有很多项目他们根本无法向公众透露。此外,只有经过网络中其他银行审查的银行才能进入网络。
此外,正如我们之前已经介绍过的那样,公共区块链很慢并且存在性能问题,这对于大型公司来说也是一个很大的禁忌。
Hyperledger允许这些公司创建他们自己的高性能许可区块链(也就是区块链,其中每个节点必须在进入前进行审查)。
也许Hyperledger系列中最有趣的项目是IBM的Fabric。区块链Fabric是开发基于区块链的解决方案的基础,具有模块化架构。
使用Fabric区块链的不同组件,如共识和会员服务可以变得即插即用。Fabric旨在提供一个框架,企业可以将自己的独立区块链网络组合在一起,可以快速扩展到每秒超过1,000个交易。
除了Fabric,你还有:
好吧,现在我们已经熟悉了这些平台,让我们比较所有这些平台:
==================================================================
分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:
- java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
- python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
- php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
- 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
- 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
- C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
- EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
- java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
- php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。