中移链交易模块介绍

news2025/2/25 3:13:30

中移链交易模块是中移链区块链系统的核心模块之一。它的主要作用是处理用户发起的交易请求,并将其打包成区块添加到区块链上。交易模块接收来自不同合约执行的指令,比如创建账号、转账、部署和执行智能合约等指令,并确保所有交易都是有效且合法的。与其他模块相比,交易模块的工作量较大,每秒需要高效地处理上千个交易请求。

01

交易的组件构成

中移链的交易主要由以下几个组件构成:

图片

事务在中移链中是一个整体,事务有统一的事务管理机制(Transaction),事务要么全部执行成功,要么全部执行失败。交易模块中的事务是用于执行区块链上的状态转换操作的基本单位。链账户首先通过智能合约来发起交易,合约中必须包含一个或多个Action。在智能合约被链账户提交后,事务将会被创建。之后事务处理器将会对其中的事务进行校验并执行。默认情况下,同一笔交易中的Action将会在同一个事务中,如果其中一个Action校验失败,当前交易中的所有的Action将会被回滚。

以购买内存的交易为例:

{
    "expiration":"2023-06-21T12:00:00", #事务过期时间
    "ref_block_num":12345, #指示事务的参考区块编号,防止重放攻击
    "ref_block_prefix":67890, #指示事务的参考前缀,防止重放攻击
    "max_net_usage_words":0, #允许在事务中使用的最大网络资源单位,为0则无限制
    "max_cpu_usage_ms":0, #允许在事务中使用的最大CPU资源时间,为0则无限制
    "delay_sec":0, #事务的延迟执行时间(秒)
    "context_free_actions":[ #与上下文无关的操作
    ],
    "actions":[ #事务中的操作列表,这里包含了一个转账操作
        {
            "account":"eosio",
            "name":"buyrambytes",
            "authorization":[
                {
                    "actor":"accountadmin",
                    "permission":"active"
                }
            ],
            "data":{
                "payer":"accountadmin"
                "receiveruser":"receiveruser"
                "bytes":"1024"
            }
        }
    ],
    "transaction_extensions":[ #事务的扩展信息(一般为空)

    ]
}

在上述交易中:

actions里面包含了当前这笔交易的所有操作。

account表示要调用的目标合约账户,指定了要执行哪个账户的合约。

name指定了要执行的操作的名称。在这个例子中,调用了系统合约中购买内存的方法。

authorization授权信息列表,指定了可以执行该操作的授权用户和权限级别。在这个例子中,只有 "accountadmin" 的 "active" 权限被授权执行该操作。

data包含了具体的操作数据。在购买内存的合约中,payer为付款方,receiveruser为接收方,bytes表示购买1024bytes的内存。

当上述交易提交后,action中的转账操作将会创建一个新的事务,事务管理器会对转账中的authorization(签名授权)进行校验。如果发送方的权限错误或者权限不足,将会出现授权失败的错误,整个事务和数据都将会被回滚,提交的交易无法存入块的交易列表中(延迟事务失败后也会包含在块中,并且将对cpu资源进行收费)。在这过程中,事务会经历一个复杂的过程来完成确认并最终执行。下面一章讲介绍整个交易的生命周期。

02

交易的生命周期介绍

中移链的交易的整个生命周期,包括用户创建事务对象、签名交易、交易广播、验证、检查交易有效性和资源是否充足、添加交易到挂起事务池、区块生成和确认、交易执行和区块链状态更新、通知用户交易完成以及将事务添加到相关账户的事务历史记录等漫长的过程。注意,下图是一个简化的流程图,实际的处理中还包括很多复杂的细节和环节。

图片

交易的大体流程如下:

1.交易事务构造:交易事务包含了一系列操作,这些操作定义了在交易中进行的具体功能,如转账、调用智能合约、更新合约等。每个操作都需要指定操作的类型、执行所需的权限以及相关的参数。

2.签名:交易事务需要被有效签名,以证明事务是由被授权的账户发起的,并确保事务的完整性。交易中的每个操作都需要被添加一个或多个签名,以确保其来源的合法性。

3.权限验证:在执行交易事务之前,中移链会对交易进行权限验证。这意味着交易必须由授权了相应权限的账户发起,并且交易需要满足授权账户的权限要求,如权重、密钥等。

4.广播交易:在执行事务中包含的所有操作之后,事务进入结束阶段。在此步骤中,将为每个操作生成相应的操作收据。事务收据汇总了事务的结果(已执行、未执行、失败、延迟、过期等),包括以微秒为单位的实际CPU使用量,以及使用的总NET和RAM并通过P2P网络进行广播,以使其他节点可以接收到该交易,并验证其有效性。

5.传播及验证:交易事务被广播到网络中的其他节点后,每个节点都会验证交易的合法性和有效性。在验证过程中,节点会检查交易的签名、权限、交易哈希以及相关的数据是否正确。

6.区块打包和确认:在验证通过后,交易事务会进入区块的候选事务池,待生成新的区块时,中移链大约每0.5秒产生一个新的区块,会从候选事务池中选择一些交易事务来组成该区块。一旦新的区块生成并被共识确认,其中包含的交易事务就会得到确认,并被永久记录在区块链上。

7. 状态更新:根据交易事务中的操作,区块链的状态会被更新,包括智能合约存储、数据变更等。这些状态的更新会影响区块链状态的完整性和一致性。

需要注意的是,在交易执行过程中,签名和权限的验证会在事务创建后进行校验,保证所有的状态都将被回滚,这样可以保证整个区块链的数据一致性。在整个生命周期中,可以通过一些全局的配置来设置链的交易设置,比如交易超时时间、交易最大延迟块数、交易处理器线程数等参数来灵活的控制交易的执行规则,满足不同环境的不同需求。

03

总结

交易模块是中移链的重要组成部分。中移链的交易模块具有以下几个属性:

  • 高效性:中移链的交易系统拥有独立线程,所有交易发起后都会挂起到线程池,线程池能够快速地处理大量的交易,并支持并行处理。

  • 稳定性:中移链的交易模块采用了高度可靠的算法和系统设计,通过使用DPoS共识算法来选择区块生产者和验证交易,减少了共识算法的计算成本和能源消耗,确保交易的一致性和正确性。

  • 可扩展性:中移链的交易模块采用了分布式架构和优化算法,所有节点采用P2P进行连接,可以轻松地扩展到更大的网络规模。

  • 安全性:中移链的交易模块采用了先进的加密技术和安全机制,通过数字签名和哈希函数来保护交易的完整性,哈希函数将交易数据转换为固定长度的哈希值,任何对数据的修改都会导致不同的哈希值。通过比较哈希值,可以验证交易数据是否被篡改,确保交易的安全性和保密性。

  • 可定制性:中移链的交易模块可以根据需要进行自定义配置和调整,通过系统合约可以配置交易系统的各种参数,以满足不同环境的需求。

04

参考资料

[1]BSN开放联盟链:

https://opb.bsnbase.com/main/index

[2]官方EOSIO账号和权限介绍:

https://developers.eos.io/welcome/latest/protocol-guides/accounts_and_permissions

[3]官方EOSIO交易介绍:

https://developers.eos.io/welcome/latest/protocol-guides/transactions_protocol

[4]官方EOSIO智能合约介绍:

https://developers.eos.io/welcome/latest/smart-contract-guides/index

[5]官方EOSIO资源模块介绍:

https://developers.eos.io/welcome/latest/resources/index

[6]官方EOSIO代码库交易回滚的费用回答:

https://developers.eos.io/welcome/latest/resources/index

[7]官方EOS论坛对交易参数防止重放攻击的回答:

https://developers.eos.io/welcome/latest/resources/index

[8]官方EOSIO白皮书对context-free-actions的解释:

https://developers.eos.io/welcome/latest/resources/index

电脑访问DDC网络门户

ddc.bsnbase.com

END

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

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

相关文章

css实现Chrome标签栏

如图这是一个特殊的带有圆角的导航栏&#xff0c;实现这种效果并不难 这是我实现的效果&#xff1a; 淡一点的就是鼠标悬停的样式 以下是代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><m…

python基于django或flask开发的健身俱乐部网站rix1z

本系统有三个角色&#xff1a;管理员、用户和教练&#xff0c;要求具备以下功能&#xff1a; &#xff08;1&#xff09;用户可以浏览主页了解健身课程、健身器材、会员卡信息、新闻公告等信息&#xff0c;并进行在线留言&#xff1b; &#xff08;2&#xff09;管理员通过后台…

Centos7安装nginx及网页如何放入nginx

Centos7安装nginx及网页如何放入nginx 安装所需的插件 安装gcc gcc是linux下的编译器在此不多做解释&#xff0c;感兴趣的小伙伴可以去查一下相关资料&#xff0c;它可以编译 C,C,Ada,Object C和Java等语言 查看版本 gcc -v如果出现下图就说明是你的Linux有centos 没有的话…

JWT 令牌撤销:中心化控制与分布式Kafka处理

【squids.cn】 全网zui低价RDS&#xff0c;免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 令牌对于安全数字访问至关重要&#xff0c;但如果您需要撤销它们怎么办&#xff1f;尽管我们尽了最大努力&#xff0c;但有时代币可能会被泄露。这可能是由于编码错误、…

vue+springboot,easyexcel的excel文件下载

文章目录 1.效果展示1.1 前端界面1.2 下载的excel 2.思路介绍3.前端代码展示4.后端代码展示5.核心代码解释 1.效果展示 excel文件单一sheet&#xff0c;多sheet导出 本文主要介绍如何使用easyexcel &#xff0c;配合前端导出Excel文件。同时提供Excel的两种导出形式&#xff1a…

《扩散模型 从原理到实战》Hugging Face (二)

第二章 Hugging Face简介 本章无有效内容 第三章 从零开始搭建扩散模型 有时候&#xff0c;只考虑事情最简单的情况反而更有助于理解其工作原理。本章尝试从零开始搭建廓庵模型&#xff0c;我们将从一个简单的扩散模型讲起&#xff0c;了解其不同部分的工作原理&#xff0c;…

Learn Prompt-ChatGPT 精选案例:学习各国语言

过去&#xff0c;我们学语言需要花费很多时间来学习各种材料&#xff0c;再联系老师修改口语、作文等&#xff0c;十分费时费力。有了 ChatGPT 之后&#xff0c;我们就相当于有一个免费的&#xff0c;实时反馈的语言学习助手&#xff0c;大大节省了我们的时间。下面我将以英文的…

如何搭建游戏平台?

搭建游戏平台是一个复杂的任务&#xff0c;涉及多个方面的工作。下面是一些关键步骤和注意事项&#xff0c;以帮助您搭建游戏平台&#xff1a; 平台开发&#xff1a;开发游戏平台的关键部分&#xff0c;包括网站或应用程序的开发、数据库设计、用户界面设计、游戏上传和管理工具…

ipad触控笔有必要买原装吗?开学推荐平价好用的电容笔

在日常生活中&#xff0c;电容笔的用途非常广泛&#xff0c;无论是配上电脑&#xff0c;还是配上iPad平板&#xff0c;亦或是配上手机&#xff0c;都是非常不错的办公利器。首先要明确自己什么使用需求&#xff0c;然后才能选择适合自己需要的电容笔。苹果的Pencil拥有独一无二…

VIOOVI干货分享:什么是SOP?它的六要素是什么?

什么是SOP&#xff0c;SOP就是标准化的作业程序。它以文档的形式&#xff0c;详细的描述操作人员在生产操作过程中的操作步骤和应当遵守的事项&#xff1b;是操作人员的操作说明书&#xff1b;也是检查员指导工作的依据。 SOP的六要素是&#xff1a; 物料名称和数量&#xff1…

linux 解决发现不到的 内存占用率

1、问题浮现 项目做久了&#xff0c;你往往会遇到一些稀奇古怪的问题。下面咱就来聊聊关于内存无故使用率变大的真相。事情是这样的&#xff0c;最近一个客户的服务器&#xff0c;内存使用率在90%左右&#xff0c;这很不正常&#xff0c;导致某云的云安全中心一直报警&#xff…

Jenkins结合Gitlab,实现镜像构建及推送

docker-compose jenkins的docker-compose目录为为/home/jenkins&#xff0c;这个后面写脚本的时候需要对应上 version: 3 services:docker_jenkins:restart: alwaysimage: jenkins/jenkins:ltscontainer_name: docker_jenkinsprivileged: true ports:- 8080:8080- 50000:5000…

面试官:ES6中新增的Set、Map两种数据结构怎么理解?

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 一、Set 增删改查 add() delete() has() clear() 遍历 二、Map 增删改查 size set() get() has() del…

深度学习——线性神经网络二

深度学习——线性神经网络二 文章目录 前言一、softmax回归1.1. 分类问题1.2. 网络架构1.3. 全连接层的参数开销1.4. softmax运算1.5. 小批量样本的向量化1.6. 损失函数1.6.1. 对数似然1.6.2. softmax及其导数1.6.3. 交叉熵损失 1.7. 信息论基础1.7.1 熵1.7.2. 信息量1.7.3. 重…

论文阅读-Group-based Fraud Detection Network on e-Commerce Platforms

目录 摘要 1 Introduction 2 BACKGROUND AND RELATED WORK 2.1 Preliminaries 2.2 Related Works 3 MODEL 3.1 Structural Feature Initialization 3.2 Fraudster Community Detection 3.3 Training Objective 4 EXPERIMENT 4.1 Experimental Setup 4.2 Prediction …

征战MINI学习路线

征战MINI学习路线 征战MINI与ACX720开发板的具体差异 1. 时钟电路 管脚约束一样&#xff0c;仅仅是位号名称不同&#xff0c;ACX720的晶振位号是U2&#xff0c;征战MINI的位号是X1&#xff0c;如下图所示&#xff1a; 2. 拨码开关电路 管脚约束一样&#xff0c;仅仅是位…

Spring高手之路5,Dubbo服务注册与发现(文末送书)

目录 一、介绍1、介绍 Dubbo 服务注册与发现的基本概念和重要性2、阐述 Dubbo 服务注册与发现的实现方式和应用场景 二、Dubbo 服务注册与发现的架构设计1、Dubbo 服务注册与发现的总体架构设计。2、Dubbo 服务提供方的注册与发现设计3、Dubbo 服务消费者端的注册与发现设计 三…

iTOP-2K1000开发板拷贝镜像到固态

在本章的刚开始&#xff0c;我们就提到了烧写系统到固态硬盘我们需要使用 U 盘启动作为桥梁&#xff0c;把系统镜像以及系统配置文件拷贝到固态硬盘里面。所以我们需要先准备一个可以成功系统的 U 盘来启动开发板。那此时 U 盘里面是不是就有系统呢&#xff1f;所以这一步我就要…

【python基础】变量

.变量-理解 编程本质就是通过一定的逻辑&#xff0c;去操纵数据&#xff0c;来达到我们的设想。 变量作为数据的载体&#xff0c;在程序中经常会被用到。与变量相联系的还有一个名词叫数据类型&#xff0c;如何理解数据类型-变量-数据三者之间的关系呢&#xff1f; 我们通过文…

进程同步与互斥

目录 进程同步与互斥&#xff08;1&#xff09; 第一节、进程间相互作用 一、相关进程和无关进程 二、与时间有关的错误 第二节、进程同步与互斥 一、进程的同步 二、进程的互斥 三、临界区 进程同步与互斥&#xff08;2&#xff09; 三、信号量与P、V操作的物理含义…