Cosmos是如何运作的,与比特币和以太坊有什么区别?

Cosmos互联链  2019-07-31  ATOM/阿童木(Cosmos)栏目  

  

  加密行业的发展从未真正停息过。

  这一切开始于2009年比特币的推出。比特币刚出现时,每个人都认为它是数字货币的圣杯。曾经我们认为不可能的事情现在实现了:第一个点对点(P2P)的支付网络“横空出世”。

  即使在今天,任何涉及到信任问题的事情都不太好懂,信任也成为了珍贵的资产。比特币通过创建有史以来第一个“无需信任”的系统来规避这一点。但这仅仅只是一个开始。

  从那时起,比特币已成为更广泛的加密创新浪潮的催化剂。这催生了一系列新的去中心化系统和金融原型:以太坊,闪电网络,EOS,Tezos,Maker等等,不胜枚举。

  但其中最突出的一个是:Cosmos

  

  当谈到区块链时,Cosmos就是“区块的新生儿”。了解Cosmos相关内容: https://cosmos.network

  虽然现在Cosmos刚上线不久,不过团队正在后台慢慢构建并不断优化,让它变得越来越完善。

  所以很多人都在关注Cosmos,但是却并不理解Cosmos究竟是什么。很多人匆匆地了解,但仍然有不少疑惑:

什么是Cosmos?它是如何运作的?它与比特币或以太坊相比如何?是什么让它与众不同?

我已经认识了Cosmos团队将近两年了。当我第一次听说他们在做什么时,老实说,就其概念而言,我和其他人一样毫无头绪。

  但当我深入研究时,我非常欣赏,这是真的。

  我被Cosmos迷住了,我们决定将TruSTOry应用构建为基于Cosmos区块链的应用。(注意:我将在以后的文章中更详细的提到为什么做这个决定)

  话虽如此,和Cosmos相关仍然存在很多迷惑。所以我将用整个文章来解释它。我想让读者高度了解它是什么,以及它试图在加密世界中服务的目的。

  准备好了吗?清除你原有的想法。边读边思考。这将是一段疯狂的旅程!

  什么是Cosmos?

  Cosmos定义自己为:

  “独立并行的区块链所组成的去中心化的网络,每个区块链都是基于拜占庭容错共识算法(如Tendermint共识)构建的”。

  哇,这个概念太抽象了!我们可以将其分解来看。

  “独立并行的区块链所组成的去中心化的网络”

  

  你现在可能已经熟悉区块链了,不过,还是让我们快速回顾一下:

  简单来说,区块链是一个在许多计算机上复制的数据库。数据库在每台计算机上保持相同的状态。换句话说,每台计算机都具有相同的确切数据。所有这些计算机一起构成了所谓的“区块链网络”。

  比特币和以太坊都是区块链。而Cosmos是连接许多这些区块链的网络,它们彼此互不干扰地运行。

  如果这还没有完全的理解,那么在进一步研究区块链之前,请务必阅读更多相关基础知识内容:

  https://hackernoon.com/wtf-is-the-blockchain-1da89ba19348

  “每个区块链都由BFT共识算法支持”

  

  BFT是“Byzantine-Fault-Tolerant”的缩写。尽管网络中的某些计算机存在故障或作恶(即Byzantine),但有BFT的区块链可以保证某些属性,如“安全”和“活跃”。安全性和活跃性确保区块链可以在网络中的每个节点上成功维持相同的状态。

  附注:如果您需要更深入地了解什么是安全性和活跃性,请查看相关的帖子:

  https://www.preETHikasireddy.com/posts/lets-take-a-crack-at-understanding-distributed-consensus/

  因此,“BFT共识运算”是一种运算法则用来定义这些计算机如何通信和协调以保证区块链是拜占庭容错。Cosmos网络中的每个区块链都是基于BFT共识建立的。

  比特币和以太坊在技术上来说并不是基于BFT共识构建的。因此,它们不符合Cosmos网络中可能存在的区块链的定义。(值得注意的是,虽然它们不是BFT,但像比特币和以太坊这样的区块链仍然可以成为Cosmos网络的一部分,只是需要一些额外的步骤和复杂性。如果感到困惑,请不要担心- 我们之后会提供更多的解释。)

  注:如果你仍然不确定BFT的含义,我在这篇文章中写了很多关于它的内容:

  https://www.preethikasireddy.com/posts/lets-take-a-crack-at-understanding-distributed-consensus/

  “Tendermint共识”

  

  Tendermint是由Cosmos背后的开发人员构建的BFT共识算法。Cosmos网络中的区块链可由Tendermint或任何其他拥有BFT特征的共识算法提供支持。我们将在本文后面详细了解Tendermint。

  简而言之,Cosmos网络是一个独立的拜占庭容错区块链的生态系统,它们彼此互不干涉的运行。这些区块链可以独立地操作或者进行互操作。

  所以现在你可能想知道,“为什么区块链需要彼此相互操作?”

  这是一个很好的问题!我们很快就会进入这个阶段。但首先,让我们了解区块链架构。

  关于区块链架构的简要背景

  在我们深入研究Cosmos生态系统中的区块链如何工作和互相操作之前,让我们后退一步,回顾一下区块链架构的基础知识。

  正如我们前面所讨论的,区块链是一个在许多计算机上复制并在每台计算机上维护相同数据的数据库。这种类型的分布式系统也称为“复制状态机”。

  复制状态机是一种确定性的状态机,它可以在许多计算机上复制,也可以作为单个状态机运行。

  听起来很熟悉吧?那是因为事实如此!重温上面的区块链定义,用“状态机”替换“数据库”,用“状态”替换“数据”,来理解一下我的意思。

  “确定性”仅仅意味着,在特定输入的情况下,机器将始终产生相同的输出。在区块链的背景中,这意味着如果您从一个特定的状态开始并重放一系列相同的交易,您将始终以相同的最终状态结束。

  复制状态机从某个状态开始。每个新的有效交易都会导致系统的状态转换到下一个(这与数据库中发生的情况类似:如果更新某个条目,则数据库现在处于一个具有更新数据条目的新状态)。

  复制状态机有三个概念层:

  1)应用层

  该层负责定义状态转换,并在交易发生后更新状态机的状态。

  2)网络层

  该层将在一台状态机上发生的交易传播到网络中的所有其他状态机上。

  3)共识层

  该层包括算法,该算法负责确保在交易发生之后存储在每个状态机上的状态是相同的(即,机器不能伪造从未存在的交易)。

  3a)抗女巫攻击层

  试图在去中心化的公共网络中运行的复制状态机还需要一层来“抗女巫攻击”。该层确保没有单个状态机可以破坏网络。缺少了它,状态机就可以通过创建许多假身份来操纵状态,造成的影响可大可小(即,抗女巫攻击)。抗女巫攻击相关内容:

  https://en.wikipedia.org/wiki/Sybil_attack

  总之,应用层负责定义状态和管理状态之间的转换。网络层和共识层负责保持每台机器上的状态一致(即,确保网络中每个数据库中的数据相同)。抗女巫攻击(显然)是负责避免女巫攻击的。

  现在,让我们看一下这些层在比特币和以太坊的背景中是如何应用的。

  比特币的层次

  1)应用层

  比特币的主要应用是P2P交易。比特币使用Script(https://en.bitcoin.it/wiki/Script,一种简单的基于堆栈和非图灵完备的语言)来定义和执行交易。当发件人通过交易将比特币发送给收件人时,收件人会得到一个用脚本进行编码的对于如何使用这些比特币的一个说明。脚本有一组操作码或指令,发件人使用这些操作码来编码一个必要的详细信息,其内容是关于收件人以后如何花费这些比特币

  2)网络层

  当发件人将比特币发送给收件人时,该交易必须发送到网络,以便矿工可以将其包含在一个区块中。比特币使用“gossip协议”来确保每个节点向其他节点通知它接收的任何新区块或交易。gossip协议是一种P2P协议,可确保消息在所有节点之间进行通信。比特币网络中的所有节点将立即将之前未曾见过的有效交易转发给它所连接的所有其他节点。交易能够在几秒钟内通过点对点网络传播到大部分节点。

  

  3)共识层

  交易传播到网络后,需要将其添加到区块链中。交易被核实并包含在一个区块中的过程被称为“中本聪共识”。如果你想深入了解它,本文可以帮助你入门:https://blockonomi.com/nakamoto-consensus/。

  3a)抗女巫攻击层

  中本聪共识依靠“工作量证明”来防止女巫攻击。基本上,挖掘新区块所需的计算工作使得比特币的共识协议具有固有的抗女巫攻击性。由于矿工需要大量的计算能力才能生产下一个区块,因此他们真的没有办法在不花费大量算力(和金钱)的情况下“伪造”多个身份。

  以太坊的层次

  1)应用层

  与比特币不同,以太坊旨在实现去中心化应用。以太坊具有高级语言(即Solidity),使开发人员能够编写出定义去中心化应用程序功能的智能合约。EVM(以太坊虚拟机)是以太坊应用层的核心。它使用EVM编译器将智能合约代码编译为字节代码,然后将其上载到底层区块链。然后EVM执行这些智能合约。以太坊网络中的所有节点都运行EVM。

  2)网络层

  与比特币类似,以太坊也使用gossip协议使节点能够与其他节点进行交流和交易。

  3)共识层

  为了达成共识,以太坊使用的“Ethash”:

  https://en.wikipedia.org/wiki/Ethash

  类似于中本聪共识,但有一些关键的区别。如果您需要有关以太坊共识算法如何工作的入门知识,请查看我之前的帖子:

  https://www.preethikasireddy.com/posts/how-does-ethereum-work-anyway/

  3a)抗女巫攻击层

  就像比特币一样,Ethash本身就具有抗女巫攻击,因为它依赖于工作量证明(截至目前)。

  使用比特币和以太坊构建应用程序

  我希望这能让你对区块链架构有所了解。当我们在比特币或以太坊的背景下讨论区块链时,我们指的是所有这些层次的组合。这是因为比特币和以太坊是作为一个单位来建造的。

  您无法将以太坊的智能合约与其基础Ethash共识层分开,因此单独讨论这两个主题毫无意义。比特币也是如此- 如果不使用中本聪共识和工作量证明,就无法进行比特币交易。

  另一方面,Cosmos采用了略微不同的方法:它将应用层与共识层和网络层分开。

  由于Cosmos的目标是建立区块链网络,这是可以理解的;每个区块链都是独立的,有自己的需求和要求(即自己的应用)。对于每个区块链应用程序,一种通用的方法在这种情况下不起作用。我们用几个例子来说明原因。

  比特币受限的一个例子

  

  假装我们正在尝试建立一个货币应用。像Bitcoin Scrypt这样的基于堆栈的简单脚本语言在这种情况下最有代表意义。比特币脚本语言不仅非常适合将价值从一个地址转移到另一个地址,而且它也很简单且非图灵完备。

  因此,它不会受到可能困扰图灵完备的编程语言的各种类型的安全漏洞的影响。这正是我们在处理金钱和储值时所需要的。但这种简单性是有局限的。

  试图做更精细的事情(例如,去中心化的预测市场)将是非常困难的。比特币脚本语言受限于它可以执行的代码的复杂性,而不是完全适用于用户的。更糟糕的是,比特币区块链交易处理缓慢(每秒约7次交易)。因此,直接在比特币区块链上构建需要高交易量的应用程序是没有意义的。

  以太坊受限制的一个例子

  

  相反,以太坊的EVM和智能合约语言(Solidity)旨在实现更灵活的应用程序。Solidity是图灵完备的,因此它理论上来说可以在执行任意算法复杂度的代码。

  实际操作中,事实证明这很难做到这一点,因为Solidity容易出错且容易受到安全攻击。这与您处理价值转移的应用程序所需的完全相反。在这种情况下,安全性至关重要。

  而且,智能合约很难升级;这使迭代开发非常困难。你一发送,就只能祈祷一切正常!和比特币一样,以太坊交易很慢(每秒约15次交易)- 因此构建需要频繁交易的应用程序是没有意义的。

  Cosmos是为满足这种需求而建造的,尽管它做了一些巨大的权衡。我们将深入探究接下来的意义。但首先,我们必须了解区块链的三层如何在Cosmos中运作。

  Cosmos背后的区块链架构

  首先,让我们从共识层开始。这样做可以让我们更好地理解使用Cosmos构建应用程序与使用比特币或以太坊制作应用程序是怎样的不同。

  Cosmos共识层

  Cosmos网络中的区块链使用Tendermint共识算法。Tendermint是一个开源项目,诞生于2014年,旨在解决比特币工作量证明共识算法的速度,可扩展性和环境问题。

  Tendermint是一个“与应用程序无关的共识引擎。”基本上,这意味着任何区块链应用程序都可以使用它来为其共识层提供支持。该算法是Byzantine Fault-Tolerant,并使用质押证明作为其抗女巫攻击机制。

  接下来让我们从各个细节分别来了解Cosmos。

  Tendermint共识如何运作

  回想一下,共识算法负责确保在交易发生后存储在每个状态机上的状态是相同的。因此,Tendermint共识算法定义了区块链网络中所有节点如何在下一个块上达成一致的规则。

  让我们来看看所涉及的各种因素以及规则如何发挥作用。

   验证人

  负责帮助达成共识的节点称为“验证人”。验证人是任何愿意参与帮助网络达成共识的网络节点。为此,验证人会收取手续费和区块奖励作为酬劳。Tendermint聚合来自这些验证人的投票以确定正确的下一个区块。

  通过Staking抵抗女巫攻击

  每个验证人都有自己的用来衡量票数投票权。投票权通常在区块链首次启动时(在创世时)或通过区块链的应用程序开发人员以某种逻辑来确定。确定投票权的典型方法是将通证验证人的通证作为质押锁定在系统中。这个质押被称为“bond”。

  共 识

  通过遵循协议规则,验证人轮流出块。每轮由三个步骤(提议,预投票和预提交)组成,以及两个特定步骤:提交和新高度。在较高的层次上,验证人用以下协议规则来达成哪个区块需要被加到下一个高度的共识:

  首先,我们有提议步骤。这是指定提议者提出一个区块。在一个有按顺序排列的验证人列表中,选出的提议者是与他们的投票权成正比的。

  然后我们进入投票前步骤,每个验证人传播其预投票。

  当超过2/3的投票权为一轮中的特定区域预投票时,这被称为“polka”。一旦达到polka,它就会继续进行下一步。

  在预提交步骤中,每个验证人广播其预提交投票。

  如果2/3的投票权对一轮中的特定区块预先提交,则该块将移至“提交”步骤。这是我们将块添加到区块链并将块高度增加到新高度的位置。每次将新区块添加到区块链时,区块链的“高度”都会增加1。

  否则,我们要么返回预投票或预提交步骤。

  请注意,在任何给定的区块高度提交块可能需要多个轮次。这有很多原因。我们来举几个例子:

  当指定的“提议者”提出下一个区块时,它们可能已经脱机。

  根据一些预先定义的标准,提议的区块无效。

  Tendermint依靠超时来确保区块链在不停顿的情况下取得进展。如果在超时之前未收到超过2/3的预投票,则新的验证人会代替该高度的区块。

  可以在此处找到协议的完整详细信息:

  https://github.com/tendermint/tendermint/wiki/Byzantine-Consensus-Algorithm

  总的来说,Tendermint从比特币的Nakamoto Consensus和以太坊的Ethash采取了不同的方法。让我们重点介绍一些最大的对比:

  确定性与概率性

  与中本聪共识和Ethash概率不同,Tendermint具有最终确定性。这意味着必须最终确定每个区块;如比特币那样,区块链只是在很大概率上具有最终确定性是不行的。

  回想一下,在中本聪共识中,区块是“未最终确定”的- 相反,如果我们知道它存在于“最长链”上,关于什么是最长链:

  https://blockonomi.com/nakamoto-consensus/

  我们很有可能最终确定区块。这就是为什么在我们知道比特币交易已经确认之前,我们通常要等待“6次确认”。关于什么是6次确认:

  https://en.bitcoin.it/wiki/Confirmation

  在Tendermint中,当验证人成功投票并提交区块后,区块会被立即确认。

  固定与变量

  中本聪共识和Ethash允许矿工随时选择参与或不参与采矿,并且不要求提前了解矿工。相反,Tendermint的共识要求有一组固定且已知的验证人,其中每个验证人由其公钥标识。

  领导者与无领导者

  中本聪共识和Ethash没有指定的领导者提出下一个区块(即任何矿工都可以开采下一个区块)。另一方面,Tendermint会选择负责提出下一个区块的领导者或提议者。

  显式超时与隐式超时

  与中本聪共识和Ethash不同,它不使用超时来确保矿工生产区块,Tendermint使用显式超时来确保区块链不会停止进展。

  100多个验证人与1000个验证人

  Tendermint共识算法遵循传统方法,该方法依赖于所有验证人彼此交流以达成共识。由于通信开销,它不能扩展到1000多个验证人,如比特币或以太坊,它们可以拥有无限数量的验证人。Tendermint运作中只有100个验证人。

  因此,使用Tendermint构建的区块链的一个缺点是,与比特币或以太坊不同,它需要提前知道验证人,并且不允许矿工随意出入。

  除此之外,它还要求系统保持一些时间概念,这在理论上已知是一个复杂的问题。虽然在实践中,Tendermint已经证明,如果使用每个节点的时间戳聚合,这可以做得相当好。

  在这方面,人们可以争辩说,Tendermint共识协议比比特币更“去中心化”,因为验证人更少,并且必须提前知道它们。

  但去中心化是在旁观者眼中。好吧,除了耍聪明,你明白我的意思是什么?

  嗯…,去中心化是达到目的的手段,而不是自己的目标。我不喜欢在没有首先理解去中心化的根本目的的情况下进行去中心化的交流。

  我认为有很多案例(事实上,大多数情况下),只要破坏系统的成本合理,并且有一种检测和惩罚系统中的不良行为的机制,Tendermint保守的方法就是拥有一套固定的,已知的验证人就足够了。

  如果我们重新审视我们的预测市场示例,我可以轻松地证明去中心化预测市场应用程序不需要像健全的货币或价值储存这样的应用程序需要的去中心化级别。拥有10个,20个或100个验证人就足够了。

  例如,在TruStory,我们使用Cosmos SDK构建我们的后端应用程序逻辑。

  关于TruStory:https://www.trustory.io

  因此,应用程序状态和逻辑存在于区块链中。另一方面,我们的前端是专有的。这使我们能够建立一个奖励良好行为和罚没不良行为的激励机制,它为用户提供了数据层的透明度,并允许用户分享网络的所有权和治理。他们可以在用户和基础设施层面对新功能进行投票,对不良角色进行投票,并根据自己的喜好策划网络。它还使开发人员能够在后端区块链逻辑之上检查和构建自己的工具和服务。

  因此,拥有运行和验证交易的10或100个验证人可以为我们提供足够的安全性,同时为用户和开发人员提供所需的透明度,所有权和责任。

  如果您可以接受Tendermint在拥有固定且已知的验证人集方面所做出的权衡,那么您将会欣赏它提供的一些整洁的特性,否则这些特性是不可能的:

  安全性和灵活性

  Tendermint的协议保证了安全性和活力,假设超过2/3的验证者的投票权不是拜占庭(即恶意的)。换句话说,如果少于1/3的网络投票权是拜占庭,则协议可以保证安全性和活跃性(即,验证者永远不会在相同高度来提交冲突的区块并且区块链继续取得进展)。

  高性能

  Tendermint共识可以具有低至一秒的区块时间并且每秒处理多达数千个交易,使其更适合具有高交易频率的应用程序。

  即时终结

  在区块链世界中,终结意味着一旦提交了一个区块,我们就会确定地知道区块链的状态直到该区块为止。

  正如我们之前提到的,中本聪共识是概率性的,所以它没有这种最终保证。从本质上讲,你只能保证规范比特币分支中包含一个交易,基于大多数矿工继续挖掘该分支的可能性。

  另一方面,Tendermint要求验证人员对每个区块进行投票和最终确定。所以基本上,只要超过2/3的验证人不是拜占庭,交易就具有“即时终结性”

  - 用户知道他们的交易在创建区块后立即完成。

  责任性

  Tendermint使用权益证明作为其抗女巫攻击;要求验证者持有通证(即,他们的“bond”)确保节点不会创建多个虚假账户。

  权益证明比工作量证明更节能(其中证明是:矿工为解决下一块哈希而花费的计算时间)。但它天然具有的“无利害关系攻击”问题,这使得验证者很容易作弊。解释“无利害关系攻击”:

  https://discourse.trustory.io/t/best-trustories-of-the-week-6/455/2u=preethi

  Tendermint通过罚没他们质押的通证来惩罚违反协议规则的验证人(例如,投票冲突的区块和广播不合理的投票),从而解决了无利害攻击问题。更具体地说,该协议具有“锁定规则”,用于在对特定区块进行投票时允许每个验证人执行的操作。例如,一旦验证人预提交了一个区块,它就会被“锁定”在该块上。此时,如果在后一轮中存在针对该不同区块的polka,验证人才能解锁并预提交新区块。如果违反了这些锁定规则,验证人员会受到质押通证被罚没的惩罚。

  更简单的轻客户端

  轻客户端是比全节点“更轻”的节点,因为它们不存储区块链的完整状态。相反,它们只存储区块头。大多数节点不需要存储区块链的完整状态,除非它们是挖矿节点或负责验证和生成新区块的节点。

  轻客户端不是下载和存储整个链,而是只将区块头从起源区块下载到当前头。区块头为轻客户端提供了足够的信息,以便在需要时轻松验证某些交易是否有效,但仍然存储的数据少于全节点。

  基于Tendermint的区块链很酷的一点是,轻客户端甚至不需要同步所有的区块头,只需要定期下载区块头就可以了。

  正如我们之前讨论的那样,这是因为Tendermint中的所有验证人都需要投票并最终确定每个区块,这与比特币和以太坊不同。由于每个区块都有最终结果,因此轻客户端只需要跟踪验证人集中的更改。只要它知道最新的验证人集,轻客户端就可以拉出它知道的最新区块头,并验证是否有大于三分之二来自该区块的验证人进行了预提交。

  Cosmos网络层

  正如我们上面所描述的那样,Tendermint的共识是通过验证者轮流投票来实现的。为此,节点必须能够相互通信并传递消息,以确保网络中的每个人都能看到相同的数据。

  因此,与比特币和以太坊一样,Tendermint使用gossip协议让网络中各节点加快确认区块链的最新状态。

  网络中的节点无需是验证人,来参与共识过程。例如,节点可以是轻客户端或不想作为验证人参与的全节点。这些被称为“非验证人节点”。

  验证人和非验证人节点负责向其同类发送数据(例如,提议,区块和投票),以确保所有节点都在监听系统中生成的消息和交易。

  Cosmos应用程序层

  到目前为止,我们已经了解到Tendermint Core包含网络层和共识层。网络层负责在网络中的所有计算机上传播交易,并且Tendermint共识算法确保每个状态机上的状态是相同的(即,区块链在所有节点上是一致的)。

  但是我们传播和验证的是什么交易?嗯,这就是应用层的用武之地。

  Cosmos应用程序层负责:

定义和提交需要添加到区块链的交易。随后在共识层提交交易后更新区块链状态。

  使用Cosmos SDK构建应用程序

  关于Cosmos SDK:

  https://github.com/cosmos/cosmos-sdk

  Cosmos SDK提供了构建应用程序层的框架。就像区块链接的Ruby-on-Rails一样。Ruby-on-Rails是一个框架,旨在通过为开发人员提供构建它们的预设结构,使编程Web应用程序更容易。同样,Cosmos SDK为开发人员提供了一个框架,可以在Tendermint Core之上构建安全的区块链应用程序。

  请记住,区块链只是一个状态机,在每个节点上复制相同的状态。Cosmos SDK允许您构建要在多个节点上复制的实际状态机。SDK为您提供定义应用程序状态,交易类型和状态转换函数所需的功能和工具。

  Cosmos应用程序如何工作(在高级别)

  Cosmos SDK提供了一个“多重储存”,用于定义和维护应用程序状态机的状态。多重储存是一种将应用程序状态划分为不同隔离专区的方法。这些储备中的每一个都由其自己的“模块”管理。

  Cosmos SDK的强大之处在于这种独特的模块化模式,其中每个模块定义并维护构成整个区块链应用程序的状态子集。这里有一些例子:

Bank模块:允许您在应用程序中进行通证和通证传输。Auth模块:允许您创建和管理帐户和签名。Staking和Slashing模块:允许您编码用于构建权益证明共识机制的规则。

  每个模块本质上都是一个小型状态机,可以相互组合以生成整个状态机。

  应用程序开发人员定义每个模块处理的状态子集以及修改状态的自定义逻辑。除了Cosmos SDK提供的模块之外,开发人员还可以访问其他第三方模块。

  这种用于构建区块链应用程序的即插即用模型非常强大,因为它为开发人员提供了仅使用所需模块的灵活性,无论是由SDK本身提供的模块还是外部模块。

  应用层如何与共识层接口

  在应用层上发生的交易通过名为应用程序区块链接口(ABCI)的接口传递给Tendermint共识和网络层。关于ABCI:

  https://github.com/tendermint/tendermint/tree/master/abci

  ABCI是一种套接字协议,将Tendermint Core(共识 网络)连接到应用程序。它可以用任何编程语言包装,这意味着使用Cosmos SDK构建的区块链应用程序在技术上可以用任何语言编程,而不仅仅是最底层的Tendermint共识和网络层编写的语言。

  注意:当前版本的Cosmos SDK主要支持Golang(将来会支持更多语言)。

  总之,Cosmos SDK允许开发人员在Tendermint Core之上构建去中心化的应用程序。理论上,该应用程序可以使用任何语言构建,并通过ABCI连接到Tendermint共识引擎。

  通过将网络和共识层(Tendermint Core)与应用层(Cosmos SDK,ABCI)分离,开发人员可以更灵活地构建各种类型的应用程序。因为Cosmos SDK允许这些应用程序以任何编程语言(例如Golang)编写,所以感觉更像是传统的应用程序开发。

  这与在以太坊上构建应用程序形成鲜明对比,以太坊要求开发人员学习新语言并处理Solidity的约束和缺陷。

  关于缺陷:https://hackernoon.com/solidity-pitfalls-and-how-to-avoid-them-24ba87735c7a

  此外,Golang拥有比Solidity更好的工具,这使得开发人员的体验提高了10倍。

  除此之外,以太坊应用程序都必须在一个网络上运行。这样做的好处是,基于以太坊的应用程序具有相同的标准,并自动产生巨大的协同效应。缺点是所有基于以太坊的应用程序共享相同的共识层,并且会被构建在其上的每个新应用程序的负担所困扰。此外,整个网络必须作为一个巨大的单元来治理,

  巨大的单元来治理相关:

  https://www.preethikasireddy.com/posts/the-synergies-gained-from-building-on-ethereums-decentralized-app-ecosystem/

  这使得难以进行对外扩展,由这是于网络应该如何治理的理念和意识形态不同。

  Cosmos区块链应用程序没有这些限制,而是作为自己的独立网络运行,具有自己的共识层和治理层。

  这意味着开发人员可以自由决定他们希望获得共识层的权限的程度。他们可以选择是否需要一组公开的验证人(这些验证人是根据他们所涉及的通证数量而选出)或者预先授权为验证人的一组私有验证人。这种自由地定制确定验证人集的规则意味着区块链对他们的链具有更多的主权。

  当然,这种优势有一个权衡:Cosmos网络中的每个区块链应用程序都必须引导自己的验证人,社区和经济。与以太坊不同,他们不能简单地借助Cosmos的全球验证者,强大的社区和现有经济。

  结 论

  在本文也就是第一篇文章中,我们讨论了Cosmos上单个区块链的架构与比特币和以太坊区块链的区别。该架构使区块链应用程序能够对其链拥有主权。

  在第2部分中,我们将深入了解Cosmos网络中的主权独立区块链如何相互运作,更重要的是,回答“为什么区块链需要彼此互操作?”的问题。

  第2部分: https://www.preethikasireddy.com/posts/how-does-cosmos-work-part2 ????

  TruStory的创始人兼首席执行官。我热衷于从根本上理解事物并尽可能清楚地分享。

  Preethi Kasireddy 2019年6月6日发布

  

版权信息
作者:Cosmos互联链
来源:Cosmos互联链

关于我们

联系我们

作者进驻

手机版

Copyright © 2013 比特巴 www.btb8.com
始建于2013年,提供比特币 区块链及数字货币新闻、技术教程、测评、项目周报、人物等资讯
本页面提供的是ATOM新闻资讯,Cosmos允许各个区块链互相扩展和交互,解决区块链价值孤岛的问题,建立价值网络的桥梁。