Cosmos 基础教程(一) -- 不可不知的开发术语

这篇具有很好参考价值的文章主要介绍了Cosmos 基础教程(一) -- 不可不知的开发术语。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CometBFT

DOC

您可以在本节中找到几个技术术语的概述,包括每个术语的解释和进一步资源的链接——在使用Cosmos SDK进行开发时,所有这些都是必不可少的。

在本节中,您将了解以下术语:

  • Cosmos and Interchain

  • LCD

  • RPC

  • Protobuf -协议缓冲区

  • gRPC, gRPC-web和gRPC- gateway

  • Amino

所有这些术语都与如何在Cosmos SDK区块链中进行节点交互有关。

一、Cosmos and Interchain

Cosmos指的是特定于应用程序的区块链网络,由链间(Interchain )栈构建,并通过区块链间通信协议(Inter-Blockchain Communication Protocol,IBC)相互连接。然而,Cosmos 将很快被称为 Interchain。术语“Cosmos”、“Cosmos 生态系统(Cosmos Ecosystem)”和“ Interchain ”可以理解为同义词。

二、Interchain 栈

Interchain 开发人员可用的各种工具可以统称为 Interchain 栈

Tools within the Interchain Stack, which contain “Cosmos” in their name will remain unchanged by current terminology changes, such as the Cosmos SDK and CosmWasm. Any chain built with the Cosmos SDK can typically be referred to as “a Cosmos chain” or “appchain”.

名称中包含“Cosmos”的Interchain Stack中的工具将不会因当前的术语变化而改变,例如 Cosmos SDKCosmWasm。任何使用Cosmos SDK构建的链都可以被称为“Cosmos链”或“应用链(appchain)”。

三、Cosmos Hub

Cosmos Hub是一个链,作为 Interchain 的经济中心和其他 Cosmos链的服务提供商。该中心使用Interchain Stack构建,是ATOM令牌链间安全(Interchain Security)以及Cosmos SDKTendermintIBC构建器的所在地。

四、Light client daemon (LCD)

与完整节点相比,轻客户端light client)只跟踪区块链上的某些信息片段。轻客户端不跟踪区块链的整个状态,也不包含链的每个交易/区块。

Tendermint的共识中,轻客户端协议允许客户端受益于完整节点受益的相同程度的安全,同时带宽需求被最小化。客户端可以接收区块链状态和事务的加密证明,而无需同步所有块甚至它们的头

查看Ethan Frey在Tendermint共识中的轻客户端(打开新窗口),了解更多关于轻客户端如何在Tendermint共识中使用的信息。

因此,轻客户端对于区块链间通信协议(IBC)如何跟踪时间戳、根哈希和下一个验证器集哈希等信息也至关重要。这节省了空间并提高了状态更新处理的效率。

light client daemon (LCD)Cosmos SDK公开的HTTP1.1服务器,其默认端口是1317。它为链公开了一个REST API,这意味着一个 representational state transfer应用程序编程接口——这个API允许与RESTful web服务进行交互。传统上,每个查询都为LCD重新实现,并在幕后路由到RPC。

为什么称为 light client daemon(LCD)
在SDK v0.40之前,要获得REST API,必须打开新窗口运行另一个后端服务(或 daemon,一个继承自Unix的术语),例如使用gaiacli rest-server --laddr 0.0.0.0:1317 --node localhost:26657。在Cosmos SDK v0.40中,REST被移动到节点服务(node service)中,使其成为Cosmos SDK的一部分,但术语“daemon”仍然存在,导致了light client daemon(LCD)的名称。

五、Remote procedure call (RPC)

远程过程调用(emote procedure call,RPC)是一种软件通信协议。这个术语经常出现在分布式计算中,因为RPC是一种实现进程间通信(IPC)的技术,它允许程序在不同的地址空间(不同的机器)中执行子例程过程。

RPC可以理解为客户端-服务器交互,其中“调用者”是客户端,更具体地说是请求程序,而“执行者”是服务器,更具体地说是提供服务的程序。交互是通过请求-响应消息传递系统(request-response message-passing)实现的。

简而言之,RPC是一种请求-响应协议,由客户机向远程服务器发送请求以执行子例程发起。

RPC允许调用不同的地址空间的函数。通常,被调用的函数在与调用它们的计算机不同的计算机上运行。然而,使用RPC,开发人员编码时就好像子例程是本地的一样;开发人员不必为远程交互编写详细的代码。因此,使用RPC意味着所有的调用过程基本上是相同的,不管它们是本地调用还是远程调用。

由于RPCs 实现了远程请求-响应协议,需要注意的是,如果出现网络问题,远程过程调用可能会失败。

六、RPC请求是如何工作的?

通常,当调用远程过程调用时,**过程参数(procedure parameters)**将通过网络传输到执行过程的执行环境。一旦完成,被调用的过程调用的结果将被转移到调用环境。然后在调用环境中恢复执行,就像在常规的本地过程调用中一样。

一个循序渐进的RPC请求可能如下所示:

  1. 客户端调用客户机存根——一段转换参数的代码,该代码在RPC期间在客户端和服务器之间传递。该调用是一个本地过程调用。

存根是代替较长程序的小程序例程。这使得机器的行为就像远程机器上的程序在本地操作一样。客户端有一个与远程过程接口的存根,而服务器有一个与原始请求过程接口的存根。
在RPC中,客户端存根替代了提供请求过程的程序。存根接受并将请求转发给远程过程。一旦远程过程完成请求,它将结果返回给存根,而存根又将结果传递给请求过程。
服务器还有一个与远程过程接口的存根。

  1. 客户端存根将过程参数打包到消息中。

Packing procedure parameters is called marshaling.

打包(Packing)过程参数称为封送处理(marshaling)。
具体来说,这是从一个或多个应用程序收集数据、将数据块放入消息缓冲区以及将数据组织成规定的数据格式的过程。
封送处理对于将用一种语言编写的程序的输出参数作为输入传递给用另一种语言编写的程序至关重要。

  1. 客户端存根然后发出一个系统调用来发送消息。
  2. 客户端的本地操作系统(OS)通过相应的传输层将消息从客户端(机器A)发送到服务器(机器B)。
  3. 服务器操作系统将传入的数据包传递给服务器存根。
  4. 服务器存根将消息及其所包含的过程参数解包(unpacks )——这称为解封送(unmarshaling)。
  5. 服务器存根调用服务器过程并执行该过程。
  6. 一旦过程完成,输出就返回到服务器存根。
  7. 服务器存根将返回值打包到消息中。
  8. 消息被发送到传输层,传输层将消息发送到客户端的传输层。
  9. 客户端存根对返回参数进行解封送,并将它们返回给原始调用客户端。

七、RPC and Cosmos

Cosmos中,命令行界面(CLI)以及其他使用 RPCs 访问链。一个节点公开几个端点——gRPCRESTTendermint 端点(Tendermint endpoint)。

Tendermint公开的Tendermint RPC端点是一个HTTP1.1服务器。默认端口号为 26657gRPC服务器的默认端口为9090,REST服务器的默认端口为1317。Tendermint RPC独立于Cosmos SDK,可以进行配置。它使用HTTP POST和JSON-RPC 2.0进行数据编码。

有关Tendermint RPC、gRPC和REST服务器的更多信息,建议仔细查看Cosmos SDK文档。

Cosmos暴露了Tendermint RPC 和 Cosmos LCD。例如,CosmJS使用RPC来实现JSON-RPC API。

八、Protobuf

Protobuf(Protocol Buffers, 即“协议缓冲区”)是谷歌开发的一种开源、跨平台的数据格式。它帮助序列化结构化数据,并帮助网络中的程序通信或存储数据。

如果你想学习 Protobuf,看看官方文档可以帮助你深入了解,并提供指南和教程。
也可以看看关于这个平台上Protobuf的部分。

在Cosmos中,Protobuf是开发人员用来描述消息格式的数据序列化方法。在Cosmos应用程序中有很多内部通信,而Protobuf是如何完成通信的核心。

随着Cosmos SDK v0.40, Protobuf开始取代Amino作为链状态和交易的数据编码格式,部分原因是Protobuf的编码/解码性能比Amino更好。此外,开发人员工具也更适合Protobuf。切换的另一个好处是促进了gRPC的使用,因为Protobuf自动定义和生成gRPC函数。因此,开发人员不再需要为RPC、LCD和CLI实现相同的查询。

九、gRPC

gRPC是一个开源、高性能的远程过程调用(RPC)框架。它由谷歌开发用于处理rpc,并于2016年发布。gRPC可以在任何环境中运行,并支持多种编程语言。

有关gRPC的更多信息和非常有用的入门信息,请参阅gRPC文档

gRPC使用HTTP2进行传输,使用协议缓冲区(Protobuf)对数据进行编码。gRPC有一个单一的规范,这使得所有的gRPC实现一致。

十、gRPC and Cosmos

在 Cosmos 中,gRPCs 是使用Protobuf提供服务的传输控制协议(TCP) ,也用于数据编码。默认端口号为9090

传输控制协议(TCP)是一种主要的互联网协议,它允许在客户端和服务器之间建立连接以发送数据。TCP使应用程序与internet协议(IP)之间的通信成为可能。

在Cosmos SDK中,Protobuf是主要的编码(encoding )库。

在Cosmos SDK中的编码
连线编码协议(wire encoding protocol)是定义数据如何从一点传输到另一点的协议。连线协议(Wire protocols)描述了在应用程序级别交换信息的方式。因此它是应用层协议中的通信协议,而不是传输协议。为了定义数据交换,连线协议需要以下特定属性:

  • Data types(数据类型) – 数据单位、消息格式等。
  • Communication endpoints (通信端点)
  • Capabilities (能力)——交付保证、沟通方向等等。
    有线协议可以是基于文本的协议,也可以是二进制协议。

在Cosmos SDK中,有两类二进制连线编码类型(binary wire encoding types):客户端编码和存储编码。客户端编码处理的是交易处理和交易签名,而存储编码处理的是状态机交易以及Merkle树中存储的内容。
Cosmos SDK使用两种二进制连线编码协议:
Amino: 一个对象编码规范。每个Cosmos SDK模块都使用氨基编解码器来序列化类型和接口。
协议缓冲区(Protocol Buffers,Protobuf):一种数据序列化方法,开发人员使用它来描述消息格式。
由于诸如性能缺陷和缺乏跨语言/客户端支持等原因,协议缓冲区比氨基越来越多地使用。

有关Cosmos SDK中编码的更多信息,请参考 Cosmos SDK documentation

十一、gRPC-web

gRPC支持不同的软件和硬件平台。gRPC-web是针对浏览器客户端的gRPC的JavaScript实现gRPC-web客户端通过一个特殊的代理连接到gRPC服务。

关于gRPC-web的更多信息,建议仔细查看gRPC存储库。
要深入研究如何使用gRPC-web进行开发,文档的快速入门和基础教程是非常有价值的资源。

与一般的gRPC一样,gRPC-web使用带有Protobuf的HTTP2进行数据编码。默认端口号为9091

Secret.js is a JavaScript SDK used to write applications interacting with the Secret Network, which uses gRPC-web.

十二、gRPC-gateway

gRPC-gateway是一种将gRPC端点公开为REST端点的工具。它帮助提供 RESTful 风格的APIs,读取gRPC服务定义并生成反向代理服务器,可以将RESTful JSON API转换为gRPC。对于Protobuf Query服务中定义的每个gRPC端点,Cosmos SDK提供了相应的REST端点。

gRPC- gateway的目标是“为您的gRPC服务提供HTTP+JSON接口”。有了它,开发人员可以从gRPC 的所有优势中受益,同时,仍然提供一个 RESTful API——例如,当你想开发一个 web 应用程序,但浏览器不支持 HTTP2 时,这是一个非常有用的工具。这有助于确保向后兼容性和多语言、多客户端支持。

如果您想探索gRPC-Gateway,建议仔细查看gRPC-Gateway文档。

在Cosmos SDK中,gRPC-Gateway提供了一个带有REST API的HTTP1.1服务器和一个base64编码的Protobuf用于数据编码;它将gRPC端点公开为REST端点。它在服务器上路由到gRPC并与LCD连接,因此它也在端口1317上。

例如,如果由于浏览器不支持HTTP2而不能在应用程序中使用gRPC,那么仍然可以使用Cosmos SDK。SDK通过gRPC-Gateway提供REST路由。

Terra.js , a JavaScript SDK for applications interacting with the Terra blockchain, uses gRPC-gateway.

十三、Amino

Amino是一个对象编码规范。在Cosmos SDK中,每个模块都使用Amino 编解码器(Amino codec)来帮助序列化类型和接口。Amino通过在具体类型(concrete type )前加上字节前缀来处理接口。

通常,Amino 编解码器类型和接口被注册在模块的域中。

具体类型是实现已注册接口的非接口类型。当类型存储在接口类型字段中或存储在带有接口元素的列表中时,需要注册类型。
作为最佳实践,初始化时请确保:

  • 注册接口。
  • 实现具体类型
  • 检查问题,如冲突的前缀字节。

每个模块公开一个函数RegisterLegacyAminoCodec。有了它,用户可以提供一个编解码器和注册所有类型。应用程序为必要的模块调用此方法。

使用Amino,当模块没有基于protobuf的类型定义时,原始线字节被编码并解码为具体的类型或接口。

要了解更多关于Go的Amino规范和实现,请参阅Tendermint Go Amino文档

Amino基本上是经过一些修改的JSON。例如,JSON规范没有定义大于2^53的数字,所以在Amino中编码大于uint64/int64的类型时使用字符串。

要了解更多关于Amino类型及其在JSON中的表示,请参阅Secret.js文档文章来源地址https://www.toymoban.com/news/detail-765024.html

到了这里,关于Cosmos 基础教程(一) -- 不可不知的开发术语的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • cosmos及特定应用程序的区块链

    特定应用程序的区块链,简单来说,一个区块链就是一个专门的应用程序。为了实现某一特定的去中心化应用而专门实现一个区块链。 灵活性不足:智能合约本质上受到虚拟机本身的限制。例如,以太坊虚拟机不允许开发者实现代码的自动执行。 效率低:智能合约全部由同一

    2024年02月03日
    浏览(54)
  • 如何在 Azure Cosmos DB 中使用缓存

    Cosmos DB 是微软在 Azure 云中发布的新 NoSQL 数据库。与关系数据库不同,Cosmos DB 是一种托管数据库服务,因此具有可扩展性,因此在高事务性 .NET 和 .NET Core 应用程序中很受欢迎。 但是,使用 Cosmos DB 时,您需要警惕访问数据库的性能瓶颈和成本开销,因为 Microsoft 会针对 Cos

    2024年02月04日
    浏览(28)
  • 探索宇宙奥秘:Cosmos - 构建区块链网络的新范式

    项目地址:https://gitcode.com/evgenyneu/Cosmos 在不断发展的区块链领域中,一个名为Cosmos的项目正在引起广泛的注意。Cosmos的目标是解决区块链的互操作性和可扩展性问题,打造一个去中心化的互联网新时代。 Cosmos是一个开源项目,它提供了一个由多个独立但相互连接的区块链(称

    2024年04月11日
    浏览(42)
  • Web3公链之Cosmos生态的项目Celestia

    官网:https://celestia.org/ 一直以来,区块链都是执行状态机复制的分布式网络,分成了数据、共识、执行这三层。在单体区块链中,数据、共识、执行这三层工作全都会由一个网络来完成,因此若复杂度越高、系统保持同步性的成本和复杂度也就越高。 以太坊Rollup 将执行层分

    2024年02月06日
    浏览(49)
  • 一文读懂Persistence One- 如何将Restaking带入Cosmos

      Persistence One正在将Restaking引入Cosmos。用户将能够通过pSTAKE、Stride、Quicksilver和Milkyway将Liquid Staked Tokens(如ATOM、TIA、DYDX等)存入Persistence One,对其进行Restaking,从而安全地连接更多区块链,首先从Persistence Core-1链开始,并赚取额外的质押奖励。 引入Restaking基础设施为Liquid

    2024年04月22日
    浏览(27)
  • 仰望Cosmos星空的明与暗:全面解析ATOM 2.0

    摘要 作为第三代区块链,Cosmos SDK和Tendermint BFT降低了开发和运行公链的门槛。 Cosmos SDK建立独立生态链成为理想的app-chain搭建方式,使用这些基础设施的项目将超越智能合约应用,成为拥有专用区块链和自己的社群的可扩展系统。 多链跨链耦合和架构去耦合兼并特点。 Cosm

    2024年02月09日
    浏览(83)
  • 一文带你了解火爆的区块链互联网Cosmos

    Cosmos诞生的背景 假如时间倒退4,5年前,如果有人跟你说他要做一个区块链的互联网,让市面上所有的公链互联互通。你一定觉得他疯了。因为那个时候公链就没有几个,大家谈来谈去还是比特币,以太坊等这些公链。这个时候搞公链的互联互通确实没有什么意义。 不过随着

    2024年02月04日
    浏览(44)
  • 区块链的未来:Cosmos项目如何实现多链互联?

    传统的单体式区块链面临着区块链三难问题,即在安全性、去中心化和可扩展性之间难以平衡。这是因为它们要求每个节点执行所有的功能(共识、数据可用性、结算和执行)。为了解决这个问题,一种解决方案是使用模块化链,将一个区块链的不同角色分配到不同的层级中

    2024年02月05日
    浏览(45)
  • dYdX 在 Cosmos 上部署自己的区块链、v4 将拥有一个完全去中心化的

    已建立的 DeFi 项目通常不会转而构建独立的区块链。 但这正是专注于衍生品的去中心化交易所 dYdX 已经发布了开发自己的区块链的计划。 dYdX 链将使用 Cosmos SDK 和 Tendermint Proof-of-Stake 共识协议构建。这些技术是 Cosmos 生态系统的一部分,COSmos,生态系统是特定应用区块链的互

    2023年04月09日
    浏览(48)
  • android不可不知调试技巧

    目录 1、条件断点 2、评估表达式(Evaluate Expression) 3、日志断点 4、方法断点 5、异常断点 6、Field WatchPoint 假设我们列表循环的某个元素时候才暂停,就用这种方式。具体方式在循环列表打断点,对着断点右键一下,然后会弹出有一行填写condition的,这里就填写条件即可,如

    2023年04月26日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包