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

特定应用程序的区块链,简单来说,一个区块链就是一个专门的应用程序。为了实现某一特定的去中心化应用而专门实现一个区块链。

传统的用智能合约构建去中心化应用不行吗?

  1. 灵活性不足:智能合约本质上受到虚拟机本身的限制。例如,以太坊虚拟机不允许开发者实现代码的自动执行。
  2. 效率低:智能合约全部由同一虚拟机运行。当实现的应用多了,他们会争夺资源。智能合约需要由虚拟机解释,这与在状态机级别(智能合约是状态机的一部分)实现的本机应用程序相比会限制性能。(cosmos团队测试删除虚拟机后,性能提高了 10 倍左右)
  3. 主权限制:智能合约的利益相关者对其的主权非常有限,并最终被底层区块链的治理所取代。如果应用程序中存在错误,则对此无能为力。

如何构建特定应用程序的区块链?

在这里插入图片描述

在cosmos生态中构建区块链,基于tendermint共识引擎 (tendermint core、CometBFT) + Cosmos SDK来实现。

tendermint 共识引擎:封装了底层的网络层和共识层,并提供ABCI接口(应用区块链接口),使得转态机(具体的应用功能)与底层的共识引擎相连接。

Cosmos SDK:是用来构建区块链状态机(具体的应用功能)的框架。

借助 Cosmos SDK,开发人员只需定义状态机,tendermint 共识引擎将为他们处理网络上的复制。

共识引擎CometBFT

CometBFT是一个与应用程序无关的引擎,负责处理区块链的网络和共识层。实际上,这意味着 CometBFT 负责传播和排序交易字节。CometBFT 依靠同名拜占庭容错(BFT)算法来就交易顺序达成共识。

CometBFT共识算法与一组称为验证器的特殊节点一起工作。验证者负责将交易块添加到区块链中。在任何给定的区块中,都有一个验证者集合 V。算法会选择 V 中的验证者作为下一个区块的提议者。如果超过三分之二的 V 在该块上签署了 a prevote和 a precommit,并且该块包含的所有交易均有效,则该块被视为有效。验证器集可以通过状态机中写入的规则进行更改。

ABCI

CometBFT 通过一个名为ABCI 的接口将事务传递给应用程序,应用程序必须实现该接口。

在这里插入图片描述
CometBFT 仅处理交易字节。它不知道这些字节的含义。CometBFT 所做的就是确定性地对这些交易字节进行排序。CometBFT 通过 ABCI 将字节传递给应用程序,并期望返回代码来通知它事务中包含的消息是否已成功处理。

以下是 ABCI 最重要的信息:

  • CheckTx:当 CometBFT 收到交易时,会将其传递给应用程序以检查是否满足一些基本要求。CheckTx用于保护全节点内存池免受垃圾邮件交易的影响。。称为AnteHandler 的特殊处理程序用于执行一系列验证步骤,例如检查是否有足够的费用和验证签名。如果检查有效,则交易将被添加到内存池并转发到对等节点。请注意,交易尚未被处理(即没有发生状态修改),CheckTx因为它们尚未包含在块中。
  • DeliverTx:当CometBFT 收到有效区块DeliverTx时,区块中的每笔交易都会通过 via 传递给应用程序进行处理。正是在这个阶段,发生了状态转换。再次执行AnteHandler,以及事务中每条消息的实际Msg服务RPC。
  • BeginBlock/ EndBlock:这些消息在每个块的开头和结尾执行,无论该块是否包含交易。触发逻辑的自动执行很有用。不过,请谨慎行事,因为计算成本高昂的循环可能会减慢您的区块链,如果循环是无限的,甚至会冻结它。

Cosmos SDK

Cosmos SDK 的强大之处在于其模块化。Cosmos SDK 应用程序是通过聚合可互操作模块的集合来构建的。每个模块定义状态的子集并包含自己的消息/事务处理器,而 Cosmos SDK 负责将每条消息路由到其各自的模块。

举例:

                                      +||  事务通过DeliverTx从整个节点的CometBFT|  引擎中继到节点的应用程序|  ||+---------------------v--------------------------+|                 APPLICATION                    ||                                                ||     Using baseapp's methods: Decode the Tx,    ||     extract and route the message(s)           ||                                                |+---------------------+--------------------------+|||+---------------------------+|||  Message routed to|  the correct module|  to be processed||
+----------------+  +---------------+  +----------------+  +------v----------+
|                |  |               |  |                |  |                 |
|  AUTH MODULE   |  |  BANK MODULE  |  | STAKING MODULE |  |   GOV MODULE    |
|                |  |               |  |                |  |                 |
|                |  |               |  |                |  | Handles message,|
|                |  |               |  |                |  | Updates state   |
|                |  |               |  |                |  |                 |
+----------------+  +---------------+  +----------------+  +------+----------+||||+--------------------------+|| Return result to CometBFT| (0=Ok, 1=Err)v

每个模块都可以看作一个小状态机。开发人员需要定义模块处理的状态子集,以及修改状态的自定义消息类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/612761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring Boot】SpringBoot maven 项目创建图文教程

创建一个Spring Boot项目并使用Maven进行构建是一项相对简单的任务。以下是使用IntelliJ IDEA创建Spring Boot Maven项目的详细教程: 步骤 1:安装 IntelliJ IDEA 确保你已经安装了最新版本的 IntelliJ IDEA。你可以从官方网站下载并安装。 步骤 2&am…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十一)

加入redis缓存 1. 缓存菜品1.1 问题说明1.2 实现思路1.3 代码开发1.4 功能测试 2. 缓存套餐2.1 Spring Cache2.1.1 介绍2.1.2 常用注解2.1.3 入门案例 2.2 具体实现思路2.3 代码开发 1. 缓存菜品 1.1 问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,…

MySQL一主一从读写分离

​ MySQL主从复制 一、主从复制概念 主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从服务器中,然后在从服务器上对这些日志重新执行也叫重做,从而使得从数据库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行赋值,从…

20240110-Python实现读取当前文件夹下所有视频名称和时长并生成一张表

代码 import os import cv2 import csv# 获取当前文件夹路径 folder_path os.getcwd() # 如果当前文件夹就是目标文件夹可以直接使用 ./,否则修改为目标文件夹的路径# 获取当前文件夹中所有视频文件的名称 video_files [f for f in os.listdir(folder_path) if …

腾讯云对象存储COS计算文件的大小

properties配置类 TencentCos.APPIDxxxxx TencentCos.SecretIdxxxxxxx TencentCos.SecretKeyxxxxxx TencentCos.testBucketxxxxxx TencentCos.CosPathhttps://xxxxxxxx.cos.ap-chengdu.myqcloud.com TencentCos.regionap-chengdu读取properties中的配置 import lombok.AllArg…

kubeSphere DevOps自定义容器环境JDK11

kubeSphere DevOps自定义容器环境JDK11 🍂前言🍂增加JDK11容器环境🍁检查是否成功 🍂不生效的原因排查🍁按步骤执行如下命令 🍂前言 kubeSphere 版本v3.1.1 遇到问题:kubeSphere默认支持容器只有JDK8,目前…

Ubuntu22.04,Nvidia4070配置llama2

大部分内容参考了这篇非常详细的博客,是我最近看到的为数不多的保姆级别的教学博客,建议大家去给博主点个赞【Ubuntu 20.04安装和深度学习环境搭建 4090显卡】_ubuntu20.04安装40系显卡驱动-CSDN博客 本篇主要是基于这篇博客结合自己配置的过程中一些注…

DC电源模块技术的未来发展趋势

BOSHIDA DC电源模块技术的未来发展趋势 随着科技的不断发展,DC电源模块技术也在不断演进。以下是DC电源模块技术未来发展的一些趋势: 1. 高效能:未来DC电源模块的效能将得到进一步提高。通过改进转换拓扑结构、优化控制算法和使用高效能元器…

Kafka 除了用作消息队列还能干吗?

Kafka 除了用作消息队列还能干吗? 本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除 Kafka 最初是为大规模处理日志而构建的。它可以保留消息直到过期,并让各个消费者按照自己的节奏提取消息。 与其之前的竞品不…

CPT203-Software Engineering 笔记

Week 1 -- Introduction failure reason professional software development*** maintain, security, efficiency, acceptability two kinds***: generic, customized software deterioration 软件退化 reduce changes/ side effects after changes software engineering …

VMware Visio OmniGraffle模板和图标

VMware Visio OmniGraffle模板和图标 包含可用于Visio、omnigraffle的图标和SVG矢量图。 简介 这组资源适用于 IT 管理员、系统架构师、网络工程师和其他需要可视化 VMware 基础架构的专业人士创建精确的 VMware 网络和数据中心部署图,通过使用这些模板和图标&am…

了解开源协议吗,简单介绍下开源协议

简单图解 开源协议的简单图解 列表图解

计算机毕业设计-----SSH校园精品课程网前后台

项目介绍 本项目是很不错的一个校园精品课程网源码,前台和后台源码都有,分为管理员与学生两种角色; 前台功能:网站首页,校园新闻,课程中心,资源下载,互动交流,个人中心…

chrony 时间同步

一.chrony简介 chrony 的优势: ① 更快的同步,从而最大程度减少了时间和频率误差,对于并非全天 24 小时运行的虚拟计算机而言非常有用。 相对于NTP来说,chrony性能更好 NTP是网络时间协议(Network Time Protocol),它…

VUE购物车商品的添加、删除和计算总金额功能

效果 代码 <template><div id"box"><!--全选功能--><input type"checkbox" change"handleChange" v-model"isAllChecked" /><!--绑定事件&#xff0c;不选用click&#xff0c;使用change每次check值改变会…

【人工智能】智能电网:未来能源的革命

未来能源的革命 智能电网革命的意义在于将电力行业从传统的集中式发电和集中式输配电模式转变为智能化、分布式、互动式的能源网络。 现在我们从以下方面详细认真的了解一下智能电网&#xff1a; 智能变电站&#xff0c;智能配电网&#xff0c;智能电能表&#xff0c;智能交互…

基于传统机器学习模型算法的项目开发详细步骤

1 场景分析 1.1 项目背景 描述开发项目模型的一系列情境和因素&#xff0c;包括问题、需求、机会、市场环境、竞争情况等 1.2. 解决问题 传统机器学习在解决实际问题中主要分为两类&#xff1a; 有监督学习&#xff1a;已知输入、输出之间的关系而进行的学习&#xff0c;从而…

MySQL 从零开始:04 增删改查

文章目录 1、准备工作2、insert 增加数据2.1 添加所有列的数据2.2 添加部分列2.3 一次插入多条数据 3、delete 删除记录4、update 更新记录5、select 查询记录5.1 查询所有行所有列5.2 查询指定行的所有列5.3 查询所有行的指定列5.4 查询指定行的指定列 在上一小节中介绍了 MyS…

太阳能4G无线灌溉控制器,助力智慧灌溉,节水增产—蜂窝物联网

传统灌溉费时费力&#xff0c;不仅缺乏灌溉程度的把控&#xff0c;而且带来一系列的水资源浪费和土地盐碱化问题。福建蜂窝物联网科技自主研发的太阳能4G无线灌溉控制器应用了物联网技术和移动互联网技术&#xff0c;能实现对灌溉设备的统一管理和远程控制&#xff0c;结合土壤…

FridaHook(二)——Native层函数

By ruanruan&#xff0c;2022.04.19 0x00 前言 下面是学习用Frida hook Native层的导出函数和未导出函数的记录。 demo下载链接&#xff1a;https://pan.baidu.com/s/1ZCIeJXzeTpQ8uJ9Ew5nnGQ 提取码&#xff1a;z94i 0x01 Hook导出函数 1、apk相关信息 关键代码&#xff…