cosmos被看作是一种跨链互操作的解决方案,可以将区块链连接到一起。跨链互操作仅仅是Cosmos尝试解决的一个问题, Cosmos想要颠覆的不仅仅跨链,让我们一起从头深入了解Cosmos背后的细节。什么是区块链?
简而言之,区块链是一个无须信任就可以在网络的节点之间实现状态机对应状态复制的解决方案。应用有相应的状态,例如账户代币余额,和用于改变状态的交易。代表不同的事情来改变状态。从架构的角度来看,区块链可以划分为三个层次:
简化的区块链架构
网络层确保每个节点接收交易。共识层保证各个节点同意交易的顺序来改变它们本地的状态。对于应用层,它处理交易。给定一个交易和一个状态,应用程序将返回一个新的状态。例如,在比特币中,状态是每个帐户的余额,其实是UTXO表,但是为了简单起见,我们称它们为余额。通过更改余额来修改状态。在以太坊中,应用程序运行在一个虚拟机上。每个交易会改变虚拟机中指定智能合约的状态。
Tendermint的诞生
在Tendermint 之前,构建区块链应用是一项十分艰巨的任务。以至于大多数开发人员都倾向于fork比特币代码库,因此受到比特币协议限制。后来以太坊引极大地简化了去中心化应用程序的开发,它提供了一个区块链上的虚拟机,任何人都可以智能合约的形式部署自定义应用。但它并没有简化部署区块链本身的难度,因为Go-Ethereum仍然是一种非常孤立的技术栈,就像比特币一样fork十分困难。Tendermint就是为了解放程序员而生的。
Tendermint的目标是提供一个包含了网络层和共识层的通用引擎,便于在之上构建任意的应用程序。使用Tendermint,开发人员只需要维护应用层,从而节省了数百小时的开发工作。请注意,Tendermint也表示还指其使用的拜占庭容错一致性算法。想了解更多关于共识协议的内容,可以查看这个播客。
https://softwareengineeringdaily.com/2018/03/26/co...
Tendermint ABCI 架构
Tendermint 引擎通过一个基于socket协议的ABCI(Application Blockchain Interface)接口来连接应用。这个协议可以通过任何语言实现,这样开发者就可以选择他们擅长的语言进行开发。Tendermint引擎还具有以下特性:
Tendermint另一件很酷的事情是ABCI是模块化的以便于开发者将现有的区块链代码库移植到上面。例如,您可以使用EVM虚拟机代码库并将其插入到Tendermint之上。事实上,Tendermint团队实现的Ethermint就是基于此。Ethermint与Ethereum完全一样,但它得益于Tendermint所有优良特性,并与所有现有的Ethereum工具(Truffle, Metamask等)兼容。开发人员可以在不需要任何额外工作的情况下将智能合约移植到Ethermint。
跨链互联-IBC
现在有了Tendermint的帮助,开发人员使用它就可以轻松地开发高性能的区块链,而不必维护网络或共识层。这些区块链都有不同的应用程序层,但是它们共享相同的网络和共识堆栈。正因为如此,实现它们之间的联系变得很容易。
基于Tendermint的区块链之间的连接是通过一个名为IBC(Inter-Blockchain CommunicationProtocol)协议实现的。IBC利用了即时最终确定性的属性,允许异构的区块链间相互交换物品(例如Token)。接下来让我们仔细地了解IBC是如何工作的,以及如何创造出区块链互联网:Cosmos
异构区块链
首先,我们需要解释我们所指的异构区块链。从本质上来说,它关注两件事:
IBC允许异构链交换代币。这意味着部署不同应用和验证者们的区块链间具有互操作性。这是一个非常重要的特性,因为它为区块链提供了灵活性。例如,它允许公共和私有链彼此交换代币。
IBC是如何工作的?
IBC的原理相当简单。举一个例子,在A链上的账户想发送10个token(记作X)给B链上的账户。这些token被锁在链A上,然后证明这10个X是从链A转移到链B的。B链跟踪A链的验证人。如果有三分之二的链A验证人们的签名,它就是有效的,并在B链上创建了10个X。
请注意在B链上创造出的token实际上不是原生X,由于X只存在于A链上。它们实际变成了在B链的token,并且X在A链上都被冻结,无法使用。
当它们返回原始链的时候,使用相同的机制解锁token。如果你想更全面地了解IBC的协议,你可以查看此详述。值得一提的是,我们所描述的IBC协议仅用于token传输,即从一个链向另一个链发送token,但之后可能也会扩展到支持逻辑操作的传输。
Cosmos — 枢纽与分区
既然我们已经有了允许两个异构链彼此交换token的协议,那么我们如何创建一个区块链互联网呢?
一个想法是通过IBC直连将网络中的每个区块链连接起来。但这种方法存在两个问题:
为了解决这个问题,Cosmos提出了一个模块化的体系结构,其中包含两个类别的区块链: 枢纽和分区。分区是一般的异构的区块链,枢纽是专门用来连接分区的区块链。当一个分区使用枢纽来创建一个IBC 连接时,它可以自动访问与枢纽相连的所有其他分区(即发送和接收)。因此,每个分区只需要建立有限数量的连接,并使用有限的枢纽。枢纽还可以防止分区间的双花。这意味着当一个分区从枢纽中接收代币时,它只需要信任这个枢纽和枢纽的原始分区。
Cosmos — Cosmos 枢纽与分区
在Cosmos生态的第一个枢纽就是Cosmos枢纽。Cosmos枢纽是基于权益证明的共有链,它的原生代币叫做Atom。在此区块链上,交易费可以使用多种代币包括Atom和Photon来支付。枢纽的发布也标志着Cosmos互联网的开始。
桥接不基于Tendermint机制的链
在Cosmos架构里,我们已经展示了基于Tendermint的区块链如何跨链。但是Cosmos并不限制于连接基于Tendermint的区块链。事实上,任何一种区块链都可以连接到Cosmos。
我们需要区分实时最终性和概率最终性的区块链。
实时最终性区块链
使用实时最终性的共识算法的区块链可以通过采用IBC协议连接到Cosmos。例如,如果以太坊切换到Casper FFG(Friendly Finality Gadget),它可以通过Casper采用IBC直接与Cosmos生态建立连接。
概率最终性区块链
对于没有实时最终性的区块链(例如基于工作量证明的区块链),它会变得有点棘手。对于这些链,我们使用一种特殊的代理链,称为Peg-Zon。
Peg-Zone是跟踪另一个区块链状态的区块链。Peg-Zone本身有实时最终性,因此它和IBC是可兼容的。它的作用是为桥接的区块链建立最终性。例如:我们想桥接基于PoW的以太坊,这样我们就可以在以太坊和Cosmos之间来回发送代币。因为基于PoW的以太坊不具有实时最终性,我们需要创建Peg-Zone去桥接它。
首先 Peg-Zone需要决定原始链的最终性的阈值。例如,它可以考虑在添加100个区块之后原始链给的状态是最终的。然后,在以太坊上,合约已经签署。正是这个特有的合约,它被Peg-Zone所利用。当用户想从以太坊发送代币给Cosmos,它们实际上会发送代币到这个合约上。然后,合约会解冻资产,100个区块生成之后,这些资产的代表会在Peg-zone上发布。使用类似的机制将资产发送回Ethereum链。另一方面,Peg-Zone也允许我们将任何在Cosmos上的代币发送到Ethereum上(在Ethereum链上Cosmostokens被表示为ERC20)。Tendermint团队目前正在为Ethereum链开发一个名为Peggy的peg-zone实现。
Peg-Zone的问题是他们需要为他们桥接上的特定链进行定制。建立一个Ethereum Peg-Zone相对简单,因为Ethereum是基于账户的,并且有智能合约,但是构建一个比特币的Peg-Zone要更有挑战性。解释如何构建一个类似于bitcoin的Peg-Zone,这不是本文讨论的范围,但要知道这在理论上是可能的。如果您想了解更多关于Peg-Zone的知识,您可以看看这个规范。
https://github.com/cosmos/peggy/tree/master/spec
通过Peg-Zone连接到以太坊区块链。
Cosmos-SDK
到目前为止,我们已经提出了一套设计的工具:
但开发区块链是否已经足够方便了呢?开发人员只需要在区块链的应用层上工作,这要归功于Tendermint Core,它本身已经有了很大的改进。但我们可以做得更好。
开发区块链应用程序不是一项简单的任务。这就是为什么Cosmos-SDK存在的原因。Cosmos-SDK是在Tendermint之上构建安全区块链应用程序的通用框架。它基于两大原则:
基于Cosmos-SDK的区块链的简化架构
Cosmos-SDK还附带了很多不错的工具,例如CLI,REST服务器,还有一些有用的库例如HSM。
但使用sdk的代价是什么呢?目前,Cosmos-SDK主要是Golang编写的。这意味着你要开发你的应用必须使用go。未来,我们期望SDK可以用其他的语言实现。目前,如果你不想要go,你不得不从头构建一个ABCI程序。注意,如果您想使用Javascript,我们有一个很酷的替代框架,称为LotionJS。
总而言之,Cosmos- sdk就像所有的Cosmos工具一样,被设计成模块化的。今天,它允许开发人员在Tendermint共识引擎之上构建。但是,它可以与其他共识引擎一起使用。随着时间的推移,我们预计会出现多个SDK的合并,它们使用不同的体系结构模型构建,并与多个共识引擎兼容。所有都会在一个的生态系统中存在,它就是Cosmos。
可扩展性
既然我们可以容易地创建和连接区块链。那还需要什么?你可能已经从本章节的标题才猜出来了,那就是可扩展性。可扩展性是目前区块链面里的巨大难题之一。
Cosmos利用了两种类的可扩展性:
Cosmos可以提供垂直可扩展的功能。对于它本身,这将是一次主要的可扩展性提升。之后,水平可扩展性也将会被实现。
综上,有些人可能会想知道:既然我可以在EVM上部署去中心化程序,并使其实现扩展,那么为什么还要麻烦创建区块链呢?这是一个合理的问题,考虑到当今大多数去中心化应用程序是在像EVM上开发的。我们认为区块链的开发比智能合约要困难得多。但借助Cosmos-SDK,开发人员可以轻松地部署特定于应用程序的区块链。要了解更多关于针对应用定制的区块链,以及它们为什么有意义,你可以阅读这篇文章。
当然,如果您不想构建自己的区块链,您仍然可以通过在Ethermint上部署智能合约来使用它与Cosmos兼容。
Cosmos三个方面
我们已经介绍了了在Cosmos上构建区块链的内容。让我们试着重新从三个方面总结一下Cosmos:
更重要的是,Cosmos不是一种产品。它是建立在一套模块化、可编制和可互换的工具之上的生态系统。鼓励开发人员参与改进现有工具的工作,并创建新的工具来实现区块链技术的最初承诺。这些工具是创造未来去中心化互联网和全球金融体系所需的基础。
实践
既然我已经展示了Cosmos愿景并且阐述它的潜力,让我们用一些具体的例子来形象地描述它的应用场景。
资金筹集分区
我们想在Cosmos中建立一个ICO分区。这个分区将能够接受几乎任何现有的代币,同时保持透明度和分散对支持者的监管。此外,它将扩展,而不是并发地运行到其他去中心应用程序。简而言之,用户将能够从一个单一的、高性能的平台上参与所有的ICOs。
我们想要解放开发人员,因此选择构建在Cosmos-SDK之上。我们的ICO分区是一个公共的基于PoS共识的分区,这意味着它需要以下模块:
幸运的事,以上模块现在都可以使用了。我们不需要在重新编写他们。我们唯一需要做的就是为我们的特定应用程序创建一个ICO模块。这不会太难!
这就是Cosmos! 编写一个完全成熟的公共、可互操作、可扩展的区块链,只需编写一个简单的模块即可。现在我们仍然需要为区块链应用程序开发前端。
我们也可以开放源代码并记录ICO模块,这样其他开发人员就可以在他们的应用程序中导入它来支持它的功能。
去中心化交易所
去中心化的交易所是加密货币交易所的终极目标。通过这样的交易所,用户将永远控制自己的基金,不像现在的中央化交易所,用户委托他们与其他人进行交易。
在Cosomos中建立去中心化交易所是相当简单。该交易所的区块链部分将处理资金托管和结算。对于订单匹配,它仍将由集中的操作人员来处理,以满足用户的满意体验。
我们想让我们自己的去中心化交易所支持法币。法币的问题是因为它们被提交给严格的法规,所以它们不能在公链上发布。我们的去中心化交易所也将有两条链的基础设施。一条私有的PoA链来处理法币,另一条公开的PoS链用于加密交易,两者同时在Tendermint共识引擎上运行。这两条链通过IBC纽带互相连接。
现在我们需要做什么来建立这样一个复杂的基础设施?需要的真的不多。我们需要的staking、governance、account、bank和IBC模块都已经存在。我们需要编码的是:
有了这三个模块,我们就有了构建去中心化交易所的架构的基本区块链层的构建块。
本地货币
让我们假设7个美国的州想发布它们本地的货币。在每个州,一个区块链将在城市之间运营并且来管理州内的当地货币。在Cosmos建造这样一个区块链超级容易。帐户、银行和治理模块都已经存在。剩下的就是建立一个权威模块,使一个给定状态的城市能够在彼此之间运行私有链。
现在让我们说这7个州想要相互操作。其实简单!他们所需要做的就是在它们之间部署一个本地中心。我们现在有7个区块链,一个州一个,和一个连接它们的枢纽。每个状态层级区块链需要做的就是导入IBC模块并与中心建立连接。
在这一点上,7个本地货币可以在7个州内流通。但如果这些州现在想要与公共加密货币进行互操作呢?也没什么复杂的:本地中心只是需要建立一个与Cosmos中心连接的IBC纽带,仅此而已。一旦这种联系建立起来,公共加密货币就可以通过本地中心流通到7个州的区块链。这个设计有一个很大的优势:如果Cosmos由于某种原因而宕机,那么本地的中心仍将运行。7个州的区块链将无法将代币转移到通过Cosmos中心连接的区块链,但它们仍然能够通过它们的本地中心相互交易。这就是IBC的力量,它允许区块链在不丧失主权的情况下进行跨链操作。
在Tendermint 之前,构建区块链应用是一项十分艰巨的任务。以至于大多数开发人员都倾向于fork比特币代码库,因此受到比特币协议限制。
结论
这些只是一些例子。Cosomos应用的潜力实际上是无限的。Cosmos被设计成模块化、可定制和可扩展的。它的存在是为了让区块链的前途成为现实。无论您的区块链用例可能是什么,您都将找到在Cosmos上轻松构建它的工具。这不是一个需要几年时间就将会实现的愿望,它现在就是可行的。
转自 https://mp.weixin.qq.com/s/f4xZZpiGDHXn-N8T0Ldo8A